Skip to content

Commit 66da060

Browse files
Merge pull request #99 from ParallelMC/silence-mobs
Silence mobs
2 parents 5ea2fab + 071d82d commit 66da060

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

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: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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.GameMode;
6+
import org.bukkit.Material;
7+
import org.bukkit.entity.LivingEntity;
8+
import org.bukkit.entity.Player;
9+
import org.bukkit.event.EventHandler;
10+
import org.bukkit.event.Listener;
11+
import org.bukkit.event.player.PlayerInteractEntityEvent;
12+
import org.bukkit.inventory.EquipmentSlot;
13+
14+
import java.util.Objects;
15+
16+
public class SilenceMobs implements Listener {
17+
18+
@EventHandler
19+
public void useSilenceNametag(PlayerInteractEntityEvent event) {
20+
EquipmentSlot slot = event.getHand();
21+
Player player = event.getPlayer();
22+
if (!player.getEquipment().getItem(slot).getType().equals(Material.NAME_TAG)) {
23+
return;
24+
}
25+
if (!(event.getRightClicked() instanceof LivingEntity entity)) {
26+
return;
27+
}
28+
TextComponent nametagName = (TextComponent) player.getEquipment().getItem(slot).getItemMeta().displayName();
29+
// If name tag is "silence me", silence the mob. If the name tag contents are different and the entity was
30+
// previously silenced by a "silence me" name tag, un-silence the mob
31+
if (nametagName != null && nametagName.content().equalsIgnoreCase("silence me")) {
32+
entity.setSilent(true);
33+
entity.customName(Component.text("Silenced"));
34+
if (!player.getGameMode().equals(GameMode.CREATIVE)) {
35+
player.getEquipment().getItem(slot).subtract();
36+
}
37+
event.setCancelled(true);
38+
} else {
39+
if (Objects.equals(entity.customName(), Component.text("Silenced"))) {
40+
entity.setSilent(false);
41+
}
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)