From 1180af64a1cf91283efbb716165db90ab188eb3b Mon Sep 17 00:00:00 2001 From: jannis Date: Wed, 14 Oct 2026 01:23:32 +0200 Subject: [PATCH] moved logic from listener to appliance --- .../AntiPlayerLootDespawn.java | 18 ++++++++++++++++- .../AntiPlayerLootDespawnListener.java | 20 ++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawn.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawn.java index f2af66e..b7901da 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawn.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawn.java @@ -2,6 +2,7 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.metaGameplay.antiPlayer import eu.mhsl.craftattack.spawn.core.appliance.Appliance; import org.bukkit.NamespacedKey; +import org.bukkit.entity.Item; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataType; @@ -15,7 +16,7 @@ public class AntiPlayerLootDespawn extends Appliance { private static final String namespace = AntiPlayerLootDespawnListener.class.getSimpleName().toLowerCase(Locale.ROOT); public static NamespacedKey cyclesKey = new NamespacedKey(namespace, "item_deaths_cycles".toLowerCase()); - public void getItems(List item) { + public void markItems(List item) { item.forEach(itemStack -> itemStack.editPersistentDataContainer(persistentDataContainer -> persistentDataContainer.set(cyclesKey, PersistentDataType.INTEGER, extraCycles) @@ -23,6 +24,21 @@ public class AntiPlayerLootDespawn extends Appliance { ); } + public boolean AboveMaxAge(Item item) { + ItemStack itemStack = item.getItemStack(); + + int cycles = itemStack.getPersistentDataContainer() + .getOrDefault(AntiPlayerLootDespawn.cyclesKey, PersistentDataType.INTEGER, 0); + + itemStack.editPersistentDataContainer(data -> + data.set(AntiPlayerLootDespawn.cyclesKey, PersistentDataType.INTEGER, cycles - 1) + ); + + item.setItemStack(itemStack); + + return cycles > 0; + } + @Override protected @NotNull List listeners() { return List.of(new AntiPlayerLootDespawnListener()); diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawnListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawnListener.java index c079d8d..d950b42 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawnListener.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/antiPlayerLootDespawn/AntiPlayerLootDespawnListener.java @@ -1,35 +1,19 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.metaGameplay.antiPlayerLootDespawn; import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; -import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.ItemDespawnEvent; import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.persistence.PersistentDataType; class AntiPlayerLootDespawnListener extends ApplianceListener { @EventHandler public void onDeath(PlayerDeathEvent event) { - this.getAppliance().getItems(event.getDrops()); + this.getAppliance().markItems(event.getDrops()); } @EventHandler public void onItemDespawn(ItemDespawnEvent event) { - Item item = event.getEntity(); - ItemStack itemStack = item.getItemStack(); - - int cycles = itemStack.getPersistentDataContainer() - .getOrDefault(AntiPlayerLootDespawn.cyclesKey, PersistentDataType.INTEGER, 0); - - if(cycles <= 0) return; - - itemStack.editPersistentDataContainer(data -> - data.set(AntiPlayerLootDespawn.cyclesKey, PersistentDataType.INTEGER, cycles - 1) - ); - - item.setItemStack(itemStack); - event.setCancelled(true); + event.setCancelled(this.getAppliance().AboveMaxAge(event.getEntity())); } }