Skip to content

Commit a543d1b

Browse files
committed
Re-add silencing mobs feature under PU's roof
1 parent ec5e2ec commit a543d1b

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

modules/src/main/java/parallelmc/parallelutils/modules/bitsandbobs/BitsAndBobs.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public void onEnable() {
6161
manager.registerEvents(new ShardLotto(), plugin);
6262
manager.registerEvents(new ChickenFeatherDrops(), plugin);
6363
manager.registerEvents(new EntityTweaks(), plugin);
64+
manager.registerEvents(new SilenceMobs(), plugin);
6465

6566
if (config.getBoolean("speedy-minecarts", false)) {
6667
manager.registerEvents(new SpeedyMinecarts(), plugin);
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package parallelmc.parallelutils.modules.bitsandbobs.minimodules;
2+
3+
import net.kyori.adventure.text.Component;
4+
import net.kyori.adventure.text.TextComponent;
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.GameMode;
7+
import org.bukkit.Material;
8+
import org.bukkit.NamespacedKey;
9+
import org.bukkit.entity.LivingEntity;
10+
import org.bukkit.entity.Player;
11+
import org.bukkit.event.EventHandler;
12+
import org.bukkit.event.Listener;
13+
import org.bukkit.event.player.PlayerInteractEntityEvent;
14+
import org.bukkit.inventory.EquipmentSlot;
15+
import org.bukkit.plugin.Plugin;
16+
import org.bukkit.plugin.PluginManager;
17+
import parallelmc.parallelutils.Constants;
18+
import parallelmc.parallelutils.ParallelUtils;
19+
20+
import java.util.Objects;
21+
import java.util.logging.Level;
22+
23+
public class SilenceMobs implements Listener {
24+
25+
NamespacedKey silencedKey;
26+
27+
public SilenceMobs() {
28+
PluginManager manager = Bukkit.getPluginManager();
29+
Plugin plugin = manager.getPlugin(Constants.PLUGIN_NAME);
30+
if (plugin == null) {
31+
ParallelUtils.log(Level.SEVERE, "Unable to enable SilenceMobs. Plugin " + Constants.PLUGIN_NAME
32+
+ " does not exist!");
33+
return;
34+
}
35+
36+
silencedKey = new NamespacedKey(plugin, "silencedByNametag");
37+
}
38+
39+
@EventHandler
40+
public void useSilenceNametag(PlayerInteractEntityEvent event) {
41+
EquipmentSlot slot = event.getHand();
42+
Player player = event.getPlayer();
43+
if (!player.getEquipment().getItem(slot).getType().equals(Material.NAME_TAG)) {
44+
return;
45+
}
46+
if (!(event.getRightClicked() instanceof LivingEntity entity)) {
47+
return;
48+
}
49+
TextComponent nametagName = (TextComponent) player.getEquipment().getItem(slot).getItemMeta().displayName();
50+
// If name tag is "silence me", silence the mob. If the name tag contents are different and the entity was
51+
// previously silenced by a "silence me" name tag, un-silence the mob
52+
if (nametagName != null && nametagName.content().equalsIgnoreCase("silence me")) {
53+
entity.setSilent(true);
54+
entity.customName(Component.text("Silenced"));
55+
if (!player.getGameMode().equals(GameMode.CREATIVE)) {
56+
player.getEquipment().getItem(slot).subtract();
57+
}
58+
event.setCancelled(true);
59+
} else {
60+
if (Objects.equals(entity.customName(), Component.text("Silenced"))) {
61+
entity.setSilent(false);
62+
}
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)