-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSilenceMobs.java
More file actions
44 lines (40 loc) · 1.74 KB
/
SilenceMobs.java
File metadata and controls
44 lines (40 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package parallelmc.parallelutils.modules.bitsandbobs.minimodules;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot;
import java.util.Objects;
public class SilenceMobs implements Listener {
@EventHandler
public void useSilenceNametag(PlayerInteractEntityEvent event) {
EquipmentSlot slot = event.getHand();
Player player = event.getPlayer();
if (!player.getEquipment().getItem(slot).getType().equals(Material.NAME_TAG)) {
return;
}
if (!(event.getRightClicked() instanceof LivingEntity entity)) {
return;
}
TextComponent nametagName = (TextComponent) player.getEquipment().getItem(slot).getItemMeta().displayName();
// If name tag is "silence me", silence the mob. If the name tag contents are different and the entity was
// previously silenced by a "silence me" name tag, un-silence the mob
if (nametagName != null && nametagName.content().equalsIgnoreCase("silence me")) {
entity.setSilent(true);
entity.customName(Component.text("Silenced"));
if (!player.getGameMode().equals(GameMode.CREATIVE)) {
player.getEquipment().getItem(slot).subtract();
}
event.setCancelled(true);
} else {
if (Objects.equals(entity.customName(), Component.text("Silenced"))) {
entity.setSilent(false);
}
}
}
}