diff --git a/src/main/java/org/skriptlang/skript/bukkit/tags/elements/CondIsTagged.java b/src/main/java/org/skriptlang/skript/bukkit/tags/elements/CondIsTagged.java index 3741bbb9d68..0f8d53b7439 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/tags/elements/CondIsTagged.java +++ b/src/main/java/org/skriptlang/skript/bukkit/tags/elements/CondIsTagged.java @@ -60,10 +60,15 @@ public boolean check(Event event) { return elements.check(event, element -> { boolean isAny = (element instanceof ItemType itemType && !itemType.isAll()); Keyed[] values = TagModule.getKeyed(element); - if (values == null) + if (values == null || values.length == 0) return false; + Class valueClass = values[0].getClass(); + for (Tag tag : tags) { + // cursed check to ensure the tag is the same type as the values + if (!tag.getValues().iterator().next().getClass().isAssignableFrom(valueClass)) + return false; if (isTagged(tag, values, !isAny)) { if (!and) return true; diff --git a/src/test/skript/tests/syntaxes/conditions/CondIsTagged.sk b/src/test/skript/tests/syntaxes/conditions/CondIsTagged.sk index 7b6ec7b5638..e6942be69cb 100644 --- a/src/test/skript/tests/syntaxes/conditions/CondIsTagged.sk +++ b/src/test/skript/tests/syntaxes/conditions/CondIsTagged.sk @@ -13,4 +13,7 @@ test "CondIsTagged": spawn a skeleton at spawn of world "world": assert entity is tagged as entity tag "minecraft:skeletons" with "skeleton is not a skeleton" + assert entity is not tagged as item tag "doors" with "failed to handle checking entity for item tag" delete entity + + assert stone sword is not tagged as entity tag "skeletons" with "failed to handle checking item for entity tag"