From 7f65a7051196acc33c8468bc20a6377e129950e9 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 6 Dec 2025 19:57:46 +0100 Subject: [PATCH] drop all items equipped and armor stand item when stand-in mannequin is killed --- .../me/youhavetrouble/standin/StandIn.java | 2 ++ .../standin/stand/MiscHandlerListener.java | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/main/java/me/youhavetrouble/standin/stand/MiscHandlerListener.java diff --git a/src/main/java/me/youhavetrouble/standin/StandIn.java b/src/main/java/me/youhavetrouble/standin/StandIn.java index b21b8fa..f215bef 100644 --- a/src/main/java/me/youhavetrouble/standin/StandIn.java +++ b/src/main/java/me/youhavetrouble/standin/StandIn.java @@ -3,6 +3,7 @@ package me.youhavetrouble.standin; import me.youhavetrouble.standin.entity.ArmorStandHandler; import me.youhavetrouble.standin.entity.EntityHandler; import me.youhavetrouble.standin.entity.MannequinHandler; +import me.youhavetrouble.standin.stand.MiscHandlerListener; import me.youhavetrouble.standin.stand.StandinInteractionListener; import org.bukkit.NamespacedKey; import org.bukkit.entity.Entity; @@ -46,6 +47,7 @@ public final class StandIn extends JavaPlugin { }); getServer().getPluginManager().registerEvents(new StandinInteractionListener(this), this); + getServer().getPluginManager().registerEvents(new MiscHandlerListener(), this); } /** diff --git a/src/main/java/me/youhavetrouble/standin/stand/MiscHandlerListener.java b/src/main/java/me/youhavetrouble/standin/stand/MiscHandlerListener.java new file mode 100644 index 0000000..be68138 --- /dev/null +++ b/src/main/java/me/youhavetrouble/standin/stand/MiscHandlerListener.java @@ -0,0 +1,28 @@ +package me.youhavetrouble.standin.stand; + +import me.youhavetrouble.standin.entity.EntityHandler; +import org.bukkit.Material; +import org.bukkit.entity.Mannequin; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class MiscHandlerListener implements Listener { + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onMannequinDeath(EntityDeathEvent event) { + if (!(event.getEntity() instanceof Mannequin mannequin)) return; + if (!EntityHandler.isStandinEntity(mannequin)) return; + // Clear any default drops and drop all items equipped on the mannequin + event.getDrops().clear(); + event.getDrops().addAll(List.of(mannequin.getEquipment().getArmorContents())); + event.getDrops().add(mannequin.getEquipment().getItemInMainHand()); + event.getDrops().add(mannequin.getEquipment().getItemInOffHand()); + event.getDrops().add(new ItemStack(Material.ARMOR_STAND)); + } + +}