diff --git a/src/main/java/ch/njol/skript/Skript.java b/src/main/java/ch/njol/skript/Skript.java index f771f4c1dc4..b30c9f4bf66 100644 --- a/src/main/java/ch/njol/skript/Skript.java +++ b/src/main/java/ch/njol/skript/Skript.java @@ -153,7 +153,7 @@ public final class Skript extends JavaPlugin implements Listener { // ================ PLUGIN ================ - public static String MIRRE = "V6"; + public static String MIRRE = "V7"; @Nullable private static Skript instance = null; diff --git a/src/main/java/ch/njol/skript/conditions/CondCompare.java b/src/main/java/ch/njol/skript/conditions/CondCompare.java index 2dc4cc9d861..850ef9dbbe7 100644 --- a/src/main/java/ch/njol/skript/conditions/CondCompare.java +++ b/src/main/java/ch/njol/skript/conditions/CondCompare.java @@ -21,6 +21,7 @@ package ch.njol.skript.conditions; +import org.bukkit.entity.Entity; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @@ -31,9 +32,12 @@ import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; import ch.njol.skript.doc.Since; +import ch.njol.skript.entity.EntityData; import ch.njol.skript.lang.Condition; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.ExpressionList; +import ch.njol.skript.lang.ParseContext; +import ch.njol.skript.lang.SkriptParser; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.log.ErrorQuality; import ch.njol.skript.log.RetainingLogHandler; @@ -108,6 +112,10 @@ public class CondCompare extends Condition { @SuppressWarnings("null") @Override public boolean init(final Expression[] vars, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) { + + if(!parser.regexes.isEmpty()) + System.out.println(parser.regexes.get(0)); + System.out.println(parser.expr); first = vars[0]; second = vars[1]; if (vars.length == 3) @@ -123,7 +131,7 @@ public boolean init(final Expression[] vars, final int matchedPattern, final if (third instanceof ExpressionList) ((ExpressionList) third).invertAnd(); } - final boolean b = init(); + final boolean b = init(parser.expr); final Expression third = this.third; if (!b) { if (third == null && first.getReturnType() == Object.class && second.getReturnType() == Object.class) { @@ -157,8 +165,8 @@ public final static String f(final Expression e) { return Classes.getSuperClassInfo(e.getReturnType()).getName().withIndefiniteArticle(); } - @SuppressWarnings("unchecked") - private boolean init() { + @SuppressWarnings({"unchecked", "null"}) + private boolean init(String expr) { final RetainingLogHandler log = SkriptLogger.startRetainingLog(); Expression third = this.third; try { @@ -190,11 +198,21 @@ private boolean init() { } finally { log.stop(); } - final Class f = first.getReturnType(), s = third == null ? second.getReturnType() : Utils.getSuperType(second.getReturnType(), third.getReturnType()); if (f == Object.class || s == Object.class) return true; - comp = Comparators.getComparator(f, s); + //Mirre + if(Entity.class.isAssignableFrom(s)){ + String[] split = expr.split(" "); + if(EntityData.parseWithoutIndefiniteArticle(split[split.length - 1]) != null){ + comp = Comparators.getComparator(f, EntityData.class); + second = SkriptParser.parseLiteral(split[split.length - 1], EntityData.class, ParseContext.DEFAULT); + } + } + //Mirre + + else + comp = Comparators.getComparator(f, s); return comp != null; } diff --git a/src/main/java/ch/njol/skript/expressions/ExprChatRecipients.java b/src/main/java/ch/njol/skript/expressions/ExprChatRecipients.java index 763abd474af..d8969cdd070 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprChatRecipients.java +++ b/src/main/java/ch/njol/skript/expressions/ExprChatRecipients.java @@ -64,7 +64,7 @@ public Class getReturnType() { @Override public Class[] acceptChange(final ChangeMode mode) { if (mode == ChangeMode.ADD || mode == ChangeMode.SET || mode == ChangeMode.DELETE || mode == ChangeMode.REMOVE) - return CollectionUtils.array(Player.class); + return CollectionUtils.array(Player.class, Player[].class); return null; } diff --git a/src/main/java/ch/njol/skript/lang/SkriptParser.java b/src/main/java/ch/njol/skript/lang/SkriptParser.java index a1fa61557d2..687a80e633d 100644 --- a/src/main/java/ch/njol/skript/lang/SkriptParser.java +++ b/src/main/java/ch/njol/skript/lang/SkriptParser.java @@ -32,16 +32,19 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import org.bukkit.inventory.ItemStack; import org.eclipse.jdt.annotation.Nullable; import ch.njol.skript.ScriptLoader; import ch.njol.skript.Skript; import ch.njol.skript.SkriptAPIException; +import ch.njol.skript.aliases.ItemType; import ch.njol.skript.classes.ClassInfo; import ch.njol.skript.command.Argument; import ch.njol.skript.command.Commands; import ch.njol.skript.command.ScriptCommand; import ch.njol.skript.command.ScriptCommandEvent; +import ch.njol.skript.entity.EntityData; import ch.njol.skript.expressions.ExprParse; import ch.njol.skript.lang.function.ExprFunctionCall; import ch.njol.skript.lang.function.Function; @@ -56,6 +59,7 @@ import ch.njol.skript.log.RetainingLogHandler; import ch.njol.skript.log.SkriptLogger; import ch.njol.skript.registrations.Classes; +import ch.njol.skript.util.Time; import ch.njol.skript.util.Utils; import ch.njol.util.Kleenean; import ch.njol.util.NonNullPair; @@ -392,9 +396,24 @@ public final Expression parseExpression(final Class c : new Class[] {Number.class, Time.class, ItemType.class, ItemStack.class}) { + final Expression e = p.parseExpression(c); + if (e != null) { + log.printLog(); + return (Expression) e; + } + log.clear(); + } + } + } + //Mirre final Expression r = parseSingleExpr(false, null, types); if (r != null) { log.printLog();