From 3513477265d64a5d465f3b357e73e3509a542f42 Mon Sep 17 00:00:00 2001 From: David Rauh Date: Fri, 25 Sep 2026 16:22:32 +0200 Subject: [PATCH] refactor: enhance nametag action handling and improve lore management --- .../silenceNametag/NametagAnvilListener.java | 1 - .../silenceNametag/SilenceNametag.java | 41 +++++++++++++------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/NametagAnvilListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/NametagAnvilListener.java index bd265b6..de9b6f9 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/NametagAnvilListener.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/NametagAnvilListener.java @@ -13,7 +13,6 @@ public class NametagAnvilListener extends ApplianceListener { ItemStack resultItem = event.getResult(); if(resultItem == null) return; - AnvilView anvilView = event.getView(); ItemStack inputItem = anvilView.getItem(0); if(inputItem == null || inputItem.getType() != Material.NAME_TAG) return; diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/SilenceNametag.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/SilenceNametag.java index 99d4499..fdeed7a 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/SilenceNametag.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/silenceNametag/SilenceNametag.java @@ -27,14 +27,30 @@ public class SilenceNametag extends Appliance { new NamespacedKey(pluginName, "nametag-action"); ItemStack setNametagAction(ItemStack item, NametagActions action) { - Objects.requireNonNull(item, "item must not be null"); - item.editPersistentDataContainer(pdc -> { - pdc.set( - nametagActionKey, - PersistentDataType.INTEGER, - action.ordinal() - ); + Objects.requireNonNull(item, "Item must not be null."); + setPersistentDataOfNametag(item, action); + removeLoreOfNametag(item); + setLoreOfNametag(item, action); + return item; + } + + void setPersistentDataOfNametag(ItemStack item, NametagActions action){ + item.editPersistentDataContainer(pdc -> pdc.set( + nametagActionKey, + PersistentDataType.INTEGER, + action.ordinal() + )); + } + + void removeLoreOfNametag(ItemStack item){ + item.editMeta(meta -> { + List lore = meta.hasLore() ? new ArrayList<>(meta.lore()) : new ArrayList<>(); + lore.removeIf(line -> line.toString().contains("Dieser Name Tag")); + meta.lore(lore); }); + } + + void setLoreOfNametag(ItemStack item, NametagActions action){ item.editMeta(meta -> { List lore = meta.hasLore() ? new ArrayList<>(meta.lore()) : new ArrayList<>(); if(action == NametagActions.SILENCE) { @@ -45,23 +61,22 @@ public class SilenceNametag extends Appliance { meta.customName(null); meta.lore(lore); }); - return item; } @Nullable NametagActions getNametagAction(ItemStack item) { - Objects.requireNonNull(item, "item must not be null"); + Objects.requireNonNull(item, "Item must not be null."); return item.getPersistentDataContainer().get(nametagActionKey, PersistentDataType.INTEGER) == null ? null : NametagActions.values()[item.getPersistentDataContainer().get(nametagActionKey, PersistentDataType.INTEGER)]; } - public ItemStack createSilenceNametag(ItemStack oldResultItem, String renameText){ + public ItemStack createSilenceNametag(ItemStack ResultItem, String renameText){ if(renameText.equals(muteString)) { - return this.setNametagAction(oldResultItem, NametagActions.SILENCE); + return this.setNametagAction(ResultItem, NametagActions.SILENCE); } else if(renameText.equals(unmuteString)) { - return this.setNametagAction(oldResultItem, NametagActions.UNSILENCE); + return this.setNametagAction(ResultItem, NametagActions.UNSILENCE); } - return oldResultItem; + return ResultItem; } @Override