feat: refactor silence and unsilence logic into applyNametagAction method in SilenceNametag

This commit is contained in:
besiece committed 2026-09-25 17:56:08 +02:00
1 parent f1250f2879
commit 5ae2ac933a
2 files changed
+27 -20

No files matched your search

@@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.silenceNametag
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot;
@@ -27,18 +26,6 @@ public class NametagEntityListener extends ApplianceListener<SilenceNametag> {
PersistentDataType.INTEGER
)) return;
Entity mob = event.getRightClicked();
if (getAppliance().getNametagAction(item) == SilenceNametag.NametagActions.SILENCE) {
if(mob.isSilent()) return;
mob.setSilent(true);
} else if (getAppliance().getNametagAction(item) == SilenceNametag.NametagActions.UNSILENCE) {
if (!mob.isSilent()) return;
mob.setSilent(false);
}
if (item.getItemMeta().customName() == null) {
item.setAmount(item.getAmount() - 1);
}
getAppliance().applyNametagAction(item, event.getRightClicked());
}
}
@@ -3,6 +3,7 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.silenceNametag
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import net.kyori.adventure.text.Component;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
@@ -26,6 +27,9 @@ public class SilenceNametag extends Appliance {
NamespacedKey nametagActionKey =
new NamespacedKey(pluginName, "nametag-action");
private final Component silenceNametagLore = Component.text("Dieses Namensschild verstummt Mobs.");
private final Component unsilenceNametagLore = Component.text("Dieses Namensschild entstummt Mobs.");
ItemStack setNametagAction(ItemStack item, NametagActions action) {
Objects.requireNonNull(item, "Item must not be null.");
setPersistentDataOfNametag(item, action);
@@ -46,7 +50,9 @@ public class SilenceNametag extends Appliance {
void removeLoreOfNametag(ItemStack item){
item.editMeta(meta -> {
List<Component> lore = meta.hasLore() ? new ArrayList<>(meta.lore()) : new ArrayList<>();
lore.removeIf(line -> line.toString().contains("Dieser Name Tag"));
lore.removeIf(line ->
line.toString().contains(silenceNametagLore.toString())
|| line.toString().contains(unsilenceNametagLore.toString()));
meta.lore(lore);
});
}
@@ -55,18 +61,16 @@ public class SilenceNametag extends Appliance {
item.editMeta(meta -> {
List<Component> lore = meta.hasLore() ? new ArrayList<>(meta.lore()) : new ArrayList<>();
if(action == NametagActions.SILENCE) {
lore.add(Component.text("Dieser Name Tag verstummt Mobs."));
lore.add(silenceNametagLore);
} else if (action == NametagActions.UNSILENCE){
lore.add(Component.text("Dieser Name Tag entstummt Mobs."));
lore.add(unsilenceNametagLore);
}
meta.lore(lore);
});
}
void restoreDefaultNameOfNametag(ItemStack item){
item.editMeta(meta -> {
meta.customName(null);
});
item.editMeta(meta -> meta.customName(null));
}
@Nullable NametagActions getNametagAction(ItemStack item) {
@@ -85,6 +89,22 @@ public class SilenceNametag extends Appliance {
return ResultItem;
}
public void applyNametagAction(ItemStack item, Entity mob) {
if (getNametagAction(item) == SilenceNametag.NametagActions.SILENCE) {
if(mob.isSilent()) return;
mob.setSilent(true);
} else if (getNametagAction(item) == SilenceNametag.NametagActions.UNSILENCE) {
if (!mob.isSilent()) return;
mob.setSilent(false);
}
// Consume one unnamed nametag manually.
// Custom-named tags use vanilla nametag behavior, including item consumption.
if (item.getItemMeta().customName() == null) {
item.setAmount(item.getAmount() - 1);
}
}
@Override
protected @NotNull List<Listener> listeners() {
return List.of(new NametagAnvilListener(), new NametagEntityListener());