From c37f52bbb16ae03dccb3911053c582d2d48da497 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Sun, 23 Apr 2023 10:47:44 -0500 Subject: [PATCH] feat: destroy loose items cover gamemode switch --- .../hmccosmetics/listener/PlayerGameListener.java | 14 ++++++++++++++ .../hmccosmetics/util/InventoryUtils.java | 1 + 2 files changed, 15 insertions(+) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index cf2959bd..4227c9a2 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -335,6 +335,20 @@ public class PlayerGameListener implements Listener { } } + @EventHandler + public void onPlayerGamemodeSwitch(PlayerGameModeChangeEvent event) { + CosmeticUser user = CosmeticUsers.getUser(event.getPlayer()); + if (user == null) return; + + if (Settings.isDestroyLooseCosmetics()) { + ItemStack[] equippedArmor = event.getPlayer().getInventory().getArmorContents(); + if (equippedArmor.length == 0) return; + for (ItemStack armor : equippedArmor) { + if (InventoryUtils.isCosmeticItem(armor)) armor.setAmount(0); + } + } + } + private void registerInventoryClickListener() { ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.WINDOW_CLICK) { @Override diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/InventoryUtils.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/InventoryUtils.java index 0e483e17..09ce4ad0 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/InventoryUtils.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/InventoryUtils.java @@ -143,6 +143,7 @@ public class InventoryUtils { } public static boolean isCosmeticItem(ItemStack itemStack) { + if (itemStack == null) return false; itemStack = itemStack.clone(); if (!itemStack.hasItemMeta()) return false; return itemStack.getItemMeta().getPersistentDataContainer().has(getCosmeticKey(), PersistentDataType.STRING);