From 062a7236d4b988a2fc79d8cfe9707f247d507cfa Mon Sep 17 00:00:00 2001 From: bensku Date: Thu, 5 Sep 2019 20:04:32 +0300 Subject: [PATCH] Try a different fix for #2353 (#2429) --- .../java/ch/njol/skript/aliases/ItemData.java | 15 +++++++++------ .../java/ch/njol/skript/aliases/ItemType.java | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/njol/skript/aliases/ItemData.java b/src/main/java/ch/njol/skript/aliases/ItemData.java index 5a735614dd8..433dbdc548a 100644 --- a/src/main/java/ch/njol/skript/aliases/ItemData.java +++ b/src/main/java/ch/njol/skript/aliases/ItemData.java @@ -233,12 +233,15 @@ public boolean isOfType(@Nullable ItemStack item) { if (type != item.getType()) return false; // Obvious mismatch - if (ItemUtils.getDamage(stack) != ItemUtils.getDamage(item)) - return false; // On 1.12 and below, damage is not in meta - if (stack.hasItemMeta() == item.hasItemMeta()) // Compare ItemMeta as in isSimilar() of ItemStack - return stack.hasItemMeta() ? itemFactory.equals(stack.getItemMeta(), item.getItemMeta()) : true; - else - return false; + if (itemFlags != 0) { // Either stack has tags (or durability) + if (ItemUtils.getDamage(stack) != ItemUtils.getDamage(item)) + return false; // On 1.12 and below, damage is not in meta + if (stack.hasItemMeta() == item.hasItemMeta()) // Compare ItemMeta as in isSimilar() of ItemStack + return stack.hasItemMeta() ? itemFactory.equals(stack.getItemMeta(), item.getItemMeta()) : true; + else + return false; + } + return true; } /** diff --git a/src/main/java/ch/njol/skript/aliases/ItemType.java b/src/main/java/ch/njol/skript/aliases/ItemType.java index 09787a15281..3d9bf00da9c 100644 --- a/src/main/java/ch/njol/skript/aliases/ItemType.java +++ b/src/main/java/ch/njol/skript/aliases/ItemType.java @@ -760,7 +760,7 @@ public final boolean removeFrom(final List... lists) { assert list instanceof RandomAccess; for (int i = 0; i < list.size(); i++) { final ItemStack is = list.get(i); - if (is != null && d.isOfType(is)) { + if (is != null && d.equals(new ItemData(is))) { if (all && amount == -1) { list.set(i, null); removed = 1;