From 03ab985033c75ffad825db87ef66a1532006562e Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Thu, 15 Jul 2021 16:43:13 +0800 Subject: [PATCH] refactor: optimize slot check --- .../listeners/TalismanListener.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java index e66304ae2..ebd16f077 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java @@ -224,22 +224,29 @@ public class TalismanListener implements Listener { if (Talisman.trigger(e, SlimefunItems.TALISMAN_ANVIL)) { PlayerInventory inv = e.getPlayer().getInventory(); - int slot = inv.getHeldItemSlot(); + ItemStack brokenItem = e.getBrokenItem(); + + int slot = -1; // Did the tool in our hand break or was it an armor piece? - if (!e.getBrokenItem().equals(inv.getItemInMainHand())) { - if (e.getBrokenItem().equals(inv.getItemInOffHand())) { - slot = 40; - } else { - for (int s : armorSlots) { - if (e.getBrokenItem().equals(inv.getItem(s))) { - slot = s; - break; - } + if (brokenItem.equals(inv.getItemInMainHand())) { + slot = inv.getHeldItemSlot(); + } else if (brokenItem.equals(inv.getItemInOffHand())) { + slot = 40; + } else { + for (int s : armorSlots) { + if (e.getBrokenItem().equals(inv.getItem(s))) { + slot = s; + break; } } } + // No item found, just return. + if (slot < 0) { + return; + } + ItemStack item = e.getBrokenItem().clone(); ItemMeta meta = item.getItemMeta();