From 382f883fd8d9a72c279f4dcb621d2a1ea27c50a4 Mon Sep 17 00:00:00 2001 From: sovdee <10354869+sovdeeth@users.noreply.github.com> Date: Sat, 1 Feb 2025 13:43:16 -0500 Subject: [PATCH] Fix cast exception when using invalid classes with CondIsTagged (#7527) --- .../skript/bukkit/tags/elements/CondIsTagged.java | 7 ++++++- src/test/skript/tests/syntaxes/conditions/CondIsTagged.sk | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) 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"