diff --git a/src/main/java/ch/njol/skript/classes/data/DefaultComparators.java b/src/main/java/ch/njol/skript/classes/data/DefaultComparators.java index 9dee9a86b63..cc6e277afd3 100644 --- a/src/main/java/ch/njol/skript/classes/data/DefaultComparators.java +++ b/src/main/java/ch/njol/skript/classes/data/DefaultComparators.java @@ -30,6 +30,8 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.skriptlang.skript.bukkit.potion.util.SkriptPotionEffect; import org.skriptlang.skript.lang.comparator.Comparator; import org.skriptlang.skript.lang.comparator.Comparators; import org.skriptlang.skript.lang.comparator.Relation; @@ -446,16 +448,20 @@ public boolean supportsOrdering() { }); // Object - ClassInfo - Comparators.registerComparator(Object.class, ClassInfo.class, new Comparator() { - @Override - public Relation compare(Object o, ClassInfo c) { - return Relation.get(c.getC().isInstance(o) || o instanceof ClassInfo && c.getC().isAssignableFrom(((ClassInfo) o).getC())); - } - - @Override - public boolean supportsOrdering() { - return false; + Comparators.registerComparator(Object.class, ClassInfo.class, (object, classInfo) -> { + if (classInfo.getC().isInstance(object)) { + return Relation.EQUAL; + } + Class objectClass; + if (object instanceof ClassInfo objectClassInfo) { + objectClass = objectClassInfo.getC(); + } else if (object instanceof SkriptPotionEffect) { // compatibility: treat SkriptPotionEffect the same as PotionEffect + objectClass = PotionEffect.class; + } else { + return Relation.NOT_EQUAL; } + //noinspection unchecked + return Relation.get(classInfo.getC().isAssignableFrom(objectClass)); }); // DamageCause - ItemType diff --git a/src/test/skript/tests/bukkit/potion module.sk b/src/test/skript/tests/bukkit/potion module.sk index 66b505a5d59..31073c05131 100644 --- a/src/test/skript/tests/bukkit/potion module.sk +++ b/src/test/skript/tests/bukkit/potion module.sk @@ -50,6 +50,8 @@ test "potion effect creation": assert amplifier of {_potion} is 5 with "amplifier is not 5" assert {_potion} is infinite with "potion is infinite" + assert {_potion} is a potion effect with "potion effect is not a potion effect" + # ExprPotionEffects test "potion effects of entities/items": # setup