diff --git a/src/main/java/ch/njol/skript/conditions/CondAlphanumeric.java b/src/main/java/ch/njol/skript/conditions/CondAlphanumeric.java
index 01702442428..c6add583167 100644
--- a/src/main/java/ch/njol/skript/conditions/CondAlphanumeric.java
+++ b/src/main/java/ch/njol/skript/conditions/CondAlphanumeric.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Alphanumeric")
@Description({"Checks if the given string is alphanumeric."})
@@ -42,7 +43,13 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
public boolean check(Event e) {
return isNegated() ^ strings.check(e, StringUtils::isAlphanumeric);
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ strings = simplifyChild(strings, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return strings.toString(e, debug) + " is" + (isNegated() ? "n't" : "") + " alphanumeric";
diff --git a/src/main/java/ch/njol/skript/conditions/CondAnchorWorks.java b/src/main/java/ch/njol/skript/conditions/CondAnchorWorks.java
index 03768c63793..2a35ec56a8a 100644
--- a/src/main/java/ch/njol/skript/conditions/CondAnchorWorks.java
+++ b/src/main/java/ch/njol/skript/conditions/CondAnchorWorks.java
@@ -13,6 +13,7 @@
import org.bukkit.World;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Do Respawn Anchors Work")
@Description("Checks whether or not respawn anchors work in a world.")
@@ -42,6 +43,12 @@ public boolean check(Event event) {
return worlds.check(event, World::isRespawnAnchorWorks, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ worlds = simplifyChild(worlds, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "respawn anchors " + (isNegated() ? " do" : " don't") + " work in " + worlds.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondCanHold.java b/src/main/java/ch/njol/skript/conditions/CondCanHold.java
index bfbcd70af9e..5261aa8112b 100644
--- a/src/main/java/ch/njol/skript/conditions/CondCanHold.java
+++ b/src/main/java/ch/njol/skript/conditions/CondCanHold.java
@@ -19,6 +19,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -72,7 +73,14 @@ public boolean check(Event e) {
t -> t.getItem().addTo(buf));
}, isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ invis = simplifyChild(invis, step, source);
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return PropertyCondition.toString(this, PropertyType.CAN, e, debug, invis,
diff --git a/src/main/java/ch/njol/skript/conditions/CondCanSee.java b/src/main/java/ch/njol/skript/conditions/CondCanSee.java
index 0cc4b2359e1..ae1a6f4cb0d 100644
--- a/src/main/java/ch/njol/skript/conditions/CondCanSee.java
+++ b/src/main/java/ch/njol/skript/conditions/CondCanSee.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Can See")
@Description("Checks whether the given players can see the provided entities.")
@@ -61,6 +62,13 @@ public boolean check(Event event) {
), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ viewers = simplifyChild(viewers, step, source);
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return PropertyCondition.toString(this, PropertyType.CAN, event, debug, viewers,
diff --git a/src/main/java/ch/njol/skript/conditions/CondChance.java b/src/main/java/ch/njol/skript/conditions/CondChance.java
index 1b2326adafb..c9598996ee7 100644
--- a/src/main/java/ch/njol/skript/conditions/CondChance.java
+++ b/src/main/java/ch/njol/skript/conditions/CondChance.java
@@ -12,6 +12,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -49,7 +50,13 @@ public boolean check(final Event e) {
return false;
return Math.random() < (percent ? n.doubleValue() / 100 : n.doubleValue());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ chance = simplifyChild(chance, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "chance of " + chance.toString(e, debug) + (percent ? "%" : "");
diff --git a/src/main/java/ch/njol/skript/conditions/CondChatVisibility.java b/src/main/java/ch/njol/skript/conditions/CondChatVisibility.java
index ad3cbfacd98..77d4b5d4415 100644
--- a/src/main/java/ch/njol/skript/conditions/CondChatVisibility.java
+++ b/src/main/java/ch/njol/skript/conditions/CondChatVisibility.java
@@ -10,6 +10,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Can See Messages")
@Description("Checks whether a player can see specific message types in chat.")
@@ -68,6 +69,12 @@ public boolean check(Event event) {
};
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ player = simplifyChild(player, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return switch (pattern) {
diff --git a/src/main/java/ch/njol/skript/conditions/CondCompare.java b/src/main/java/ch/njol/skript/conditions/CondCompare.java
index cea7a493ba3..055a9e68d16 100644
--- a/src/main/java/ch/njol/skript/conditions/CondCompare.java
+++ b/src/main/java/ch/njol/skript/conditions/CondCompare.java
@@ -30,6 +30,7 @@
import ch.njol.skript.util.Patterns;
import ch.njol.skript.util.Utils;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import org.skriptlang.skript.lang.util.Cyclical;
import java.util.function.Predicate;
@@ -404,6 +405,14 @@ private boolean compareLists(Event event) {
return shouldMatch;
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ first = simplifyChild(first, step, source);
+ second = simplifyChild(second, step, source);
+ third = simplifyChild(third, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event event, final boolean debug) {
String s;
diff --git a/src/main/java/ch/njol/skript/conditions/CondContains.java b/src/main/java/ch/njol/skript/conditions/CondContains.java
index 366141ae0b3..b017252039c 100644
--- a/src/main/java/ch/njol/skript/conditions/CondContains.java
+++ b/src/main/java/ch/njol/skript/conditions/CondContains.java
@@ -21,6 +21,7 @@
import org.bukkit.inventory.ItemStack;
import org.skriptlang.skript.lang.converter.Converters;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.Arrays;
import java.util.Objects;
@@ -156,6 +157,13 @@ public boolean check(Event event) {
};
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ containers = simplifyChild(containers, step, source);
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return containers.toString(e, debug) + (isNegated() ? " doesn't contain " : " contains ") + items.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondDamageCause.java b/src/main/java/ch/njol/skript/conditions/CondDamageCause.java
index 53cda6b0c00..2a919a9ff76 100644
--- a/src/main/java/ch/njol/skript/conditions/CondDamageCause.java
+++ b/src/main/java/ch/njol/skript/conditions/CondDamageCause.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -63,7 +64,13 @@ public boolean check(final Event e) {
other -> cause == other,
isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ expected = simplifyChild(expected, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "damage was" + (isNegated() ? " not" : "") + " caused by " + expected.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondDate.java b/src/main/java/ch/njol/skript/conditions/CondDate.java
index 392c8423301..c7fb2fc827e 100644
--- a/src/main/java/ch/njol/skript/conditions/CondDate.java
+++ b/src/main/java/ch/njol/skript/conditions/CondDate.java
@@ -14,6 +14,7 @@
import ch.njol.skript.util.Date;
import ch.njol.skript.util.Timespan;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -58,7 +59,14 @@ public boolean check(final Event e) {
timespan -> now - date.getTime() >= timespan.getAs(Timespan.TimePeriod.MILLISECOND)
), isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ date = simplifyChild(date, step, source);
+ delta = simplifyChild(delta, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return date.toString(e, debug) + " was " + (isNegated() ? "less" : "more") + " than " + delta.toString(e, debug) + " ago";
diff --git a/src/main/java/ch/njol/skript/conditions/CondHasItemCooldown.java b/src/main/java/ch/njol/skript/conditions/CondHasItemCooldown.java
index dd67a64d6fc..aec7b71808c 100644
--- a/src/main/java/ch/njol/skript/conditions/CondHasItemCooldown.java
+++ b/src/main/java/ch/njol/skript/conditions/CondHasItemCooldown.java
@@ -15,6 +15,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Item Cooldown")
@Description("Check whether a cooldown is active on the specified material for a specific player.")
@@ -53,7 +54,14 @@ public boolean check(Event event) {
)
);
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ itemtypes = simplifyChild(itemtypes, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return PropertyCondition.toString(this, PropertyType.HAVE, event, debug, players,
diff --git a/src/main/java/ch/njol/skript/conditions/CondHasLineOfSight.java b/src/main/java/ch/njol/skript/conditions/CondHasLineOfSight.java
index b5e8dae5571..0f958f37681 100644
--- a/src/main/java/ch/njol/skript/conditions/CondHasLineOfSight.java
+++ b/src/main/java/ch/njol/skript/conditions/CondHasLineOfSight.java
@@ -14,6 +14,7 @@
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Line of Sight")
@Description("Checks whether living entities have an unobstructed line of sight to other entities or locations.")
@@ -56,6 +57,13 @@ public boolean check(Event event) {
}, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ viewers = simplifyChild(viewers, step, source);
+ targets = simplifyChild(targets, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return viewers.toString(event, debug) + " has" + (isNegated() ? " no" : "") + " line of sight to " + targets.toString(event,debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondHasMetadata.java b/src/main/java/ch/njol/skript/conditions/CondHasMetadata.java
index cfb60086fd5..8e4bd6f04cd 100644
--- a/src/main/java/ch/njol/skript/conditions/CondHasMetadata.java
+++ b/src/main/java/ch/njol/skript/conditions/CondHasMetadata.java
@@ -14,6 +14,7 @@
import org.bukkit.event.Event;
import org.bukkit.metadata.Metadatable;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Metadata")
@Description("Checks whether a metadata holder has a metadata tag.")
@@ -49,6 +50,13 @@ public boolean check(Event e) {
), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ holders = simplifyChild(holders, step, source);
+ values = simplifyChild(values, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return PropertyCondition.toString(this, PropertyType.HAVE, e, debug, holders,
diff --git a/src/main/java/ch/njol/skript/conditions/CondHasPotion.java b/src/main/java/ch/njol/skript/conditions/CondHasPotion.java
index b71b6298d27..dca912e5200 100644
--- a/src/main/java/ch/njol/skript/conditions/CondHasPotion.java
+++ b/src/main/java/ch/njol/skript/conditions/CondHasPotion.java
@@ -15,6 +15,7 @@
import org.bukkit.event.Event;
import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Potion")
@Description("Checks whether the given living entities have specific potion effects.")
@@ -52,6 +53,13 @@ public boolean check(Event e) {
), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ livingEntities = simplifyChild(livingEntities, step, source);
+ potionEffects = simplifyChild(potionEffects, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return PropertyCondition.toString(this, PropertyType.HAVE, e, debug, livingEntities,
diff --git a/src/main/java/ch/njol/skript/conditions/CondHasScoreboardTag.java b/src/main/java/ch/njol/skript/conditions/CondHasScoreboardTag.java
index db7ffd61df4..e119a191e33 100644
--- a/src/main/java/ch/njol/skript/conditions/CondHasScoreboardTag.java
+++ b/src/main/java/ch/njol/skript/conditions/CondHasScoreboardTag.java
@@ -1,13 +1,5 @@
package ch.njol.skript.conditions;
-import java.util.Arrays;
-import java.util.List;
-
-import org.bukkit.entity.Entity;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
-import ch.njol.skript.Skript;
import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.conditions.base.PropertyCondition.PropertyType;
import ch.njol.skript.doc.Description;
@@ -18,6 +10,13 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.bukkit.entity.Entity;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Arrays;
+import java.util.List;
@Name("Has Scoreboard Tag")
@Description("Checks whether the given entities has the given scoreboard tags.")
@@ -50,7 +49,14 @@ public boolean check(Event e) {
entity -> entity.getScoreboardTags().containsAll(tagsList),
isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ tags = simplifyChild(tags, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return PropertyCondition.toString(this, PropertyType.HAVE, e, debug, entities,
diff --git a/src/main/java/ch/njol/skript/conditions/CondIncendiary.java b/src/main/java/ch/njol/skript/conditions/CondIncendiary.java
index 5ee20c07cec..76bf5e7043b 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIncendiary.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIncendiary.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Incendiary")
@Description("Checks if an entity will create fire when it explodes. This condition is also usable in an explosion prime event.")
@@ -63,6 +64,12 @@ public boolean check(Event e) {
return entities.check(e, entity -> entity instanceof Explosive && ((Explosive) entity).isIncendiary(), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
if (isEvent)
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsBlockRedstonePowered.java b/src/main/java/ch/njol/skript/conditions/CondIsBlockRedstonePowered.java
index 86cba581c0e..01b48bfc37f 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsBlockRedstonePowered.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsBlockRedstonePowered.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Block Redstone Powered")
@Description("Checks if a block is indirectly or directly powered by redstone")
@@ -51,7 +52,13 @@ public boolean check(Event e) {
? blocks.check(e, Block::isBlockIndirectlyPowered, isNegated())
: blocks.check(e, Block::isBlockPowered, isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return PropertyCondition.toString(this, PropertyCondition.PropertyType.BE, e, debug, blocks, (isIndirectlyPowered ? "indirectly " : "") + "powered");
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsDivisibleBy.java b/src/main/java/ch/njol/skript/conditions/CondIsDivisibleBy.java
index 68ac4999fb3..1d55630d60f 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsDivisibleBy.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsDivisibleBy.java
@@ -11,6 +11,7 @@
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Evenly Divisible By")
@Description("Check if a number is evenly divisible by another number.")
@@ -50,6 +51,13 @@ public boolean check(Event event) {
return dividend.check(event, dividendNumber -> (dividendNumber.doubleValue() % divisor == 0), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ dividend = simplifyChild(dividend, step, source);
+ divisor = simplifyChild(divisor, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return dividend.toString(event, debug) + " is " + (isNegated() ? "not " : "")
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsEnchanted.java b/src/main/java/ch/njol/skript/conditions/CondIsEnchanted.java
index d0068b6c518..cb6e30847ff 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsEnchanted.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsEnchanted.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.EnchantmentType;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -29,7 +30,7 @@ public class CondIsEnchanted extends Condition {
static {
PropertyCondition.register(CondIsEnchanted.class, "enchanted [with %-enchantmenttype%]", "itemtypes");
}
-
+
@SuppressWarnings("NotNullFieldNotInitialized")
private Expression items;
@Nullable
@@ -53,6 +54,13 @@ public boolean check(final Event e) {
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ enchs = simplifyChild(enchs, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
final Expression es = enchs;
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsHandRaised.java b/src/main/java/ch/njol/skript/conditions/CondIsHandRaised.java
index cc9d617f08b..ba425ccaede 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsHandRaised.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsHandRaised.java
@@ -14,6 +14,7 @@
import org.bukkit.event.Event;
import org.bukkit.inventory.EquipmentSlot;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Hand Raised")
@Description({
@@ -70,6 +71,12 @@ public boolean check(Event event) {
);
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return entities.toString(event, debug) + "'s " + (hand == null ? "" : (hand == EquipmentSlot.HAND ? "main " : "off ")) + "hand" +
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsLoaded.java b/src/main/java/ch/njol/skript/conditions/CondIsLoaded.java
index 9a88b72a103..42fb14a08e4 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsLoaded.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsLoaded.java
@@ -18,6 +18,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.script.Script;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Loaded")
@Description({
@@ -100,6 +101,15 @@ public boolean check(Event e) {
};
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ locations = simplifyChild(locations, step, source);
+ x = simplifyChild(x, step, source);
+ z = simplifyChild(z, step, source);
+ objects = simplifyChild(objects, step, source);
+ return this;
+ }
+
@Override
@SuppressWarnings("null")
public String toString(@Nullable Event e, boolean d) {
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsOfType.java b/src/main/java/ch/njol/skript/conditions/CondIsOfType.java
index 47baed7a481..698276842fb 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsOfType.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsOfType.java
@@ -18,6 +18,7 @@
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.comparator.Relation;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.function.Predicate;
@@ -33,9 +34,7 @@ public class CondIsOfType extends Condition {
PropertyCondition.register(CondIsOfType.class, "of type[s] %itemtypes/entitydatas%", "itemstacks/entities");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> what;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> types;
@SuppressWarnings("null")
@@ -65,6 +64,13 @@ public boolean check(Event event) {
isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ what = simplifyChild(what, step, source);
+ types = simplifyChild(types, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return PropertyCondition.toString(this, PropertyType.BE, event, debug, what,
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsPathfinding.java b/src/main/java/ch/njol/skript/conditions/CondIsPathfinding.java
index 7c4fd18183c..f011a6a7508 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsPathfinding.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsPathfinding.java
@@ -21,6 +21,7 @@
import org.bukkit.entity.Mob;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Pathfinding")
@Description({
@@ -78,6 +79,13 @@ public boolean check(Event event) {
}, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ target = simplifyChild(target, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return PropertyCondition.toString(this, PropertyType.BE, event, debug, entities, "pathfinding" +
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsPluginEnabled.java b/src/main/java/ch/njol/skript/conditions/CondIsPluginEnabled.java
index e6d60df64d9..afc1e3d49dc 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsPluginEnabled.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsPluginEnabled.java
@@ -13,6 +13,7 @@
import org.bukkit.event.Event;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Plugin Enabled")
@Description({"Check if a plugin is enabled/disabled on the server.",
@@ -60,6 +61,12 @@ public boolean check(Event e) {
});
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ plugins = simplifyChild(plugins, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
String plugin = plugins.isSingle() ? "plugin " : "plugins ";
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsPreferredTool.java b/src/main/java/ch/njol/skript/conditions/CondIsPreferredTool.java
index 945f10c05cd..1d3821f1969 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsPreferredTool.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsPreferredTool.java
@@ -16,6 +16,7 @@
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Preferred Tool")
@Description(
@@ -73,6 +74,13 @@ public boolean check(Event event) {
}), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return items.toString(event, debug) + " is the preferred tool for " + blocks.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsRiding.java b/src/main/java/ch/njol/skript/conditions/CondIsRiding.java
index d62b58fcd73..294977a6429 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsRiding.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsRiding.java
@@ -1,9 +1,5 @@
package ch.njol.skript.conditions;
-import org.bukkit.entity.Entity;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.conditions.base.PropertyCondition.PropertyType;
import ch.njol.skript.doc.Description;
@@ -14,7 +10,12 @@
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
+import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
+import org.bukkit.entity.Entity;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -44,13 +45,23 @@ public boolean init(final Expression>[] exprs, final int matchedPattern, final
}
@Override
- public boolean check(final Event e) {
- return entities.check(e,
- entity -> types.check(e,
- data -> data.isInstance(entity.getVehicle())
+ public boolean check(Event event) {
+ EntityData>[] types = this.types.getArray(event);
+ return entities.check(event,
+ entity -> SimpleExpression.check(types,
+ data -> data.isInstance(entity.getVehicle()),
+ false,
+ this.types.getAnd()
), isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ types = simplifyChild(types, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return PropertyCondition.toString(this, PropertyType.BE, e, debug, entities,
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSet.java b/src/main/java/ch/njol/skript/conditions/CondIsSet.java
index f6afc2e5a6a..50815862d54 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsSet.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsSet.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.ExpressionList;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -75,6 +76,12 @@ public String getReceivedMessage(Event event) {
return VerboseAssert.getExpressionValue(expr,event);
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ expr = simplifyChild(expr, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return expr.toString(e, debug) + (isNegated() ? " isn't" : " is") + " set";
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsUsingFeature.java b/src/main/java/ch/njol/skript/conditions/CondIsUsingFeature.java
index 00661817dd4..2432c028a6b 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsUsingFeature.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsUsingFeature.java
@@ -14,6 +14,7 @@
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.experiment.ExperimentSet;
import org.skriptlang.skript.lang.script.Script;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Using Experimental Feature")
@Description("Checks whether a script is using an experimental feature by name.")
@@ -65,6 +66,13 @@ public boolean check(Event event) {
return isUsing ^ this.isNegated();
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ names = simplifyChild(names, step, source);
+ scripts = simplifyChild(scripts, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String whether = scripts.isSingle()
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsWearing.java b/src/main/java/ch/njol/skript/conditions/CondIsWearing.java
index 3b48d4eec2d..d32311c3e88 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsWearing.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsWearing.java
@@ -19,6 +19,7 @@
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.Arrays;
@@ -38,10 +39,8 @@ public class CondIsWearing extends Condition {
static {
PropertyCondition.register(CondIsWearing.class, "wearing %itemtypes%", "livingentities");
}
-
- @SuppressWarnings("NotNullFieldNotInitialized")
+
private Expression entities;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression types;
@SuppressWarnings({"unchecked", "null"})
@@ -91,6 +90,13 @@ public boolean check(Event event) {
}, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ types = simplifyChild(types, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return PropertyCondition.toString(this, PropertyType.BE, event, debug, entities,
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsWhitelisted.java b/src/main/java/ch/njol/skript/conditions/CondIsWhitelisted.java
index 6b45817e3a8..d18a6747d9e 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsWhitelisted.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsWhitelisted.java
@@ -14,6 +14,7 @@
import org.bukkit.OfflinePlayer;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Whitelisted")
@Description("Whether or not the server or a player is whitelisted, or the server is whitelist enforced.")
@@ -61,6 +62,12 @@ public boolean check(Event event) {
return players.check(event, OfflinePlayer::isWhitelisted, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String negation = isNegated() ? "not" : "";
diff --git a/src/main/java/ch/njol/skript/conditions/CondIsWithin.java b/src/main/java/ch/njol/skript/conditions/CondIsWithin.java
index 9631a598a33..6a6d851ae70 100644
--- a/src/main/java/ch/njol/skript/conditions/CondIsWithin.java
+++ b/src/main/java/ch/njol/skript/conditions/CondIsWithin.java
@@ -20,6 +20,7 @@
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Within")
@Description({
@@ -129,6 +130,15 @@ public boolean check(Event event) {
return false;
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ locsToCheck = simplifyChild(locsToCheck, step, source);
+ loc1 = simplifyChild(loc1, step, source);
+ loc2 = simplifyChild(loc2, step, source);
+ area = simplifyChild(area, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String str = locsToCheck.toString(event, debug) + " is within ";
diff --git a/src/main/java/ch/njol/skript/conditions/CondItemInHand.java b/src/main/java/ch/njol/skript/conditions/CondItemInHand.java
index 68bf091628b..a49ea666607 100644
--- a/src/main/java/ch/njol/skript/conditions/CondItemInHand.java
+++ b/src/main/java/ch/njol/skript/conditions/CondItemInHand.java
@@ -2,7 +2,6 @@
import ch.njol.skript.Skript;
import ch.njol.skript.aliases.ItemType;
-import org.skriptlang.skript.lang.comparator.Relation;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
@@ -10,12 +9,15 @@
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
-import org.skriptlang.skript.lang.comparator.Comparators;
+import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Event;
import org.bukkit.inventory.EntityEquipment;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.comparator.Comparators;
+import org.skriptlang.skript.lang.comparator.Relation;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Holding")
@Description("Checks whether a player is holding a specific item. Cannot be used with endermen, use 'entity is [not] an enderman holding <item type>' instead.")
@@ -38,10 +40,8 @@ public class CondItemInHand extends Condition {
"[%livingentities%] (is not|isn't) holding %itemtypes% in off[(-| )]hand"
);
}
-
- @SuppressWarnings("NotNullFieldNotInitialized")
+
private Expression entities;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression items;
private boolean offTool;
@@ -58,17 +58,28 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
@Override
public boolean check(Event e) {
+ ItemType[] items = this.items.getArray(e);
return entities.check(e,
- livingEntity -> items.check(e,
+ livingEntity -> SimpleExpression.check(items,
itemType -> {
EntityEquipment equipment = livingEntity.getEquipment();
if (equipment == null)
return false; // No equipment -> no item in hand
ItemType handItem = new ItemType(offTool ? equipment.getItemInOffHand() : equipment.getItemInMainHand());
return Comparators.compare(handItem, itemType).isImpliedBy(Relation.EQUAL);
- }), isNegated());
+ },
+ false,
+ this.items.getAnd()
+ ), isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return entities.toString(e, debug) + " " + (entities.isSingle() ? "is" : "are")
diff --git a/src/main/java/ch/njol/skript/conditions/CondMatches.java b/src/main/java/ch/njol/skript/conditions/CondMatches.java
index 6ce5facb581..766195ebdfc 100644
--- a/src/main/java/ch/njol/skript/conditions/CondMatches.java
+++ b/src/main/java/ch/njol/skript/conditions/CondMatches.java
@@ -1,12 +1,6 @@
package ch.njol.skript.conditions;
-import java.util.Arrays;
-import java.util.regex.Pattern;
-
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -16,6 +10,12 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Arrays;
+import java.util.regex.Pattern;
@Name("Matches")
@Description("Checks whether the defined strings match the input regexes (Regular expressions).")
@@ -75,7 +75,14 @@ public boolean check(Event e) {
public boolean matches(String str, Pattern pattern) {
return partial ? pattern.matcher(str).find() : str.matches(pattern.pattern());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ strings = simplifyChild(strings, step, source);
+ regex = simplifyChild(regex, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return strings.toString(e, debug) + " " + (isNegated() ? "doesn't match" : "matches") + " " + regex.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondMinecraftVersion.java b/src/main/java/ch/njol/skript/conditions/CondMinecraftVersion.java
index 682b6a144cd..e3079c9f1d0 100644
--- a/src/main/java/ch/njol/skript/conditions/CondMinecraftVersion.java
+++ b/src/main/java/ch/njol/skript/conditions/CondMinecraftVersion.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Version;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Running Minecraft")
@Description("Checks if current Minecraft version is given version or newer.")
@@ -40,7 +41,13 @@ public boolean check(Event e) {
String ver = version.getSingle(e);
return ver != null ? Skript.isRunningMinecraft(new Version(ver)) ^ isNegated() : false;
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ version = simplifyChild(version, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "is running minecraft " + version.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondPastFuture.java b/src/main/java/ch/njol/skript/conditions/CondPastFuture.java
index 2f8748f1a73..5d4251f7dd2 100644
--- a/src/main/java/ch/njol/skript/conditions/CondPastFuture.java
+++ b/src/main/java/ch/njol/skript/conditions/CondPastFuture.java
@@ -14,6 +14,7 @@
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("In The Past/Future")
@Description({
@@ -78,6 +79,12 @@ public boolean check(Event event) {
return dates.check(event, date -> date.compareTo(new Date()) < 0, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ dates = simplifyChild(dates, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return dates.toString(event, debug) + (dates.isSingle() ? " is" : " are") + " in the" + (isFuture ? " future" : " past");
diff --git a/src/main/java/ch/njol/skript/conditions/CondPermission.java b/src/main/java/ch/njol/skript/conditions/CondPermission.java
index c6494171c22..084e1458f49 100644
--- a/src/main/java/ch/njol/skript/conditions/CondPermission.java
+++ b/src/main/java/ch/njol/skript/conditions/CondPermission.java
@@ -1,9 +1,5 @@
package ch.njol.skript.conditions;
-import org.bukkit.command.CommandSender;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.conditions.base.PropertyCondition.PropertyType;
@@ -14,7 +10,12 @@
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
+import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
+import org.bukkit.command.CommandSender;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -49,8 +50,9 @@ public boolean init(final Expression>[] exprs, final int matchedPattern, final
@Override
public boolean check(final Event e) {
+ String[] perms = permissions.getArray(e);
return senders.check(e,
- s -> permissions.check(e,
+ s -> SimpleExpression.check(perms,
perm -> {
if (s.hasPermission(perm))
return true;
@@ -63,9 +65,17 @@ public boolean check(final Event e) {
}
}
return false;
- }), isNegated());
+ }, false, permissions.getAnd()
+ ), isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ senders = simplifyChild(senders, step, source);
+ permissions = simplifyChild(permissions, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return PropertyCondition.toString(this, PropertyType.HAVE, e, debug, senders,
diff --git a/src/main/java/ch/njol/skript/conditions/CondPlayedBefore.java b/src/main/java/ch/njol/skript/conditions/CondPlayedBefore.java
index ba2c1e611a9..a3f73b2c19c 100644
--- a/src/main/java/ch/njol/skript/conditions/CondPlayedBefore.java
+++ b/src/main/java/ch/njol/skript/conditions/CondPlayedBefore.java
@@ -12,6 +12,7 @@
import org.bukkit.OfflinePlayer;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Played Before")
@Description("Checks whether a player has played on this server before. You can also use " +
@@ -46,7 +47,13 @@ public boolean check(Event e) {
OfflinePlayer::hasPlayedBefore,
isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return players.toString(e, debug) + (isNegated() ? (players.isSingle() ? " hasn't" : " haven't") : (players.isSingle() ? " has" : " have"))
diff --git a/src/main/java/ch/njol/skript/conditions/CondPvP.java b/src/main/java/ch/njol/skript/conditions/CondPvP.java
index 250f38fd538..2391280fca8 100644
--- a/src/main/java/ch/njol/skript/conditions/CondPvP.java
+++ b/src/main/java/ch/njol/skript/conditions/CondPvP.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -44,7 +45,13 @@ public boolean init(final Expression>[] exprs, final int matchedPattern, final
public boolean check(final Event e) {
return worlds.check(e, w -> w.getPVP() == enabled, isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ worlds = simplifyChild(worlds, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "PvP is " + (enabled ? "enabled" : "disabled") + " in " + worlds.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondResourcePack.java b/src/main/java/ch/njol/skript/conditions/CondResourcePack.java
index 1d1c208766c..fe679e60092 100644
--- a/src/main/java/ch/njol/skript/conditions/CondResourcePack.java
+++ b/src/main/java/ch/njol/skript/conditions/CondResourcePack.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Resource Pack")
@Description("Checks state of the resource pack in a resource pack request response event.")
@@ -54,7 +55,13 @@ public boolean check(Event e) {
Status state = ((PlayerResourcePackStatusEvent) e).getStatus();
return states.check(e, state::equals, isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ states = simplifyChild(states, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "resource pack was " + (isNegated() ? "not " : "") + states.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/conditions/CondScriptLoaded.java b/src/main/java/ch/njol/skript/conditions/CondScriptLoaded.java
index 67bdb250e10..b5624ee0f56 100644
--- a/src/main/java/ch/njol/skript/conditions/CondScriptLoaded.java
+++ b/src/main/java/ch/njol/skript/conditions/CondScriptLoaded.java
@@ -2,19 +2,19 @@
import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
-import ch.njol.skript.SkriptCommand;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
-import ch.njol.skript.lang.parser.ParserInstance;
-import org.skriptlang.skript.lang.script.Script;
import ch.njol.skript.lang.SkriptParser.ParseResult;
+import ch.njol.skript.lang.parser.ParserInstance;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.script.Script;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.io.File;
@@ -68,6 +68,12 @@ public boolean check(Event event) {
}, isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ scripts = simplifyChild(scripts, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String scriptName = scripts == null ?
diff --git a/src/main/java/ch/njol/skript/conditions/CondStartsEndsWith.java b/src/main/java/ch/njol/skript/conditions/CondStartsEndsWith.java
index 205db7eca53..0978f55dfd9 100644
--- a/src/main/java/ch/njol/skript/conditions/CondStartsEndsWith.java
+++ b/src/main/java/ch/njol/skript/conditions/CondStartsEndsWith.java
@@ -12,6 +12,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Starts/Ends With")
@Description("Checks if a text starts or ends with another.")
@@ -80,7 +81,14 @@ public boolean check(Event e) {
},
isNegated());
}
-
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ strings = simplifyChild(strings, step, source);
+ affix = simplifyChild(affix, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
if (isNegated())
diff --git a/src/main/java/ch/njol/skript/conditions/CondTooltip.java b/src/main/java/ch/njol/skript/conditions/CondTooltip.java
index 7f84be363a4..77bfe458ebc 100644
--- a/src/main/java/ch/njol/skript/conditions/CondTooltip.java
+++ b/src/main/java/ch/njol/skript/conditions/CondTooltip.java
@@ -15,6 +15,7 @@
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Has Item Tooltips")
@Description({
@@ -61,6 +62,12 @@ public boolean check(Event event) {
return items.check(event, item -> item.getItemMeta().hasItemFlag(ItemFlag.HIDE_ADDITIONAL_TOOLTIP), isNegated());
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "the " + (entire ? "entire" : "additional") + " tooltip of " + items.toString(event, debug) + " is " + (isNegated() ? "hidden" : "shown");
diff --git a/src/main/java/ch/njol/skript/conditions/CondWithinRadius.java b/src/main/java/ch/njol/skript/conditions/CondWithinRadius.java
index d11a2add4bd..ae46e844c12 100644
--- a/src/main/java/ch/njol/skript/conditions/CondWithinRadius.java
+++ b/src/main/java/ch/njol/skript/conditions/CondWithinRadius.java
@@ -9,10 +9,12 @@
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
+import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
import org.bukkit.Location;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Is Within Radius")
@Description("Checks whether a location is within a certain radius of another location.")
@@ -48,11 +50,22 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
public boolean check(Event event) {
double radius = this.radius.getOptionalSingle(event).orElse(0).doubleValue();
double radiusSquared = radius * radius * Skript.EPSILON_MULT;
- return locations.check(event, location -> points.check(event, center -> {
- if (!location.getWorld().equals(center.getWorld()))
- return false;
- return location.distanceSquared(center) <= radiusSquared;
- }), isNegated());
+ Location[] points = this.points.getArray(event);
+ return locations.check(event,
+ location -> SimpleExpression.check(points, center -> {
+ if (!location.getWorld().equals(center.getWorld()))
+ return false;
+ return location.distanceSquared(center) <= radiusSquared;
+ }, false, this.points.getAnd()
+ ), isNegated());
+ }
+
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ locations = simplifyChild(locations, step, source);
+ radius = simplifyChild(radius, step, source);
+ points = simplifyChild(points, step, source);
+ return this;
}
@Override
diff --git a/src/main/java/ch/njol/skript/conditions/base/PropertyCondition.java b/src/main/java/ch/njol/skript/conditions/base/PropertyCondition.java
index 1711fcfb812..5160cf19a0e 100644
--- a/src/main/java/ch/njol/skript/conditions/base/PropertyCondition.java
+++ b/src/main/java/ch/njol/skript/conditions/base/PropertyCondition.java
@@ -7,11 +7,10 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-
-import java.util.function.Predicate;
-import org.jetbrains.annotations.ApiStatus;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import org.skriptlang.skript.registration.SyntaxInfo;
import org.skriptlang.skript.registration.SyntaxRegistry;
import org.skriptlang.skript.util.Priority;
@@ -215,6 +214,12 @@ protected final void setExpr(Expression extends T> expr) {
this.expr = expr;
}
+ @Override
+ public Condition simplify(Step step, @Nullable Simplifiable> source) {
+ expr = simplifyChild(expr, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return toString(this, getPropertyType(), event, debug, expr, getPropertyName());
diff --git a/src/main/java/ch/njol/skript/effects/Delay.java b/src/main/java/ch/njol/skript/effects/Delay.java
index 72e1a0dd786..0e393949e39 100644
--- a/src/main/java/ch/njol/skript/effects/Delay.java
+++ b/src/main/java/ch/njol/skript/effects/Delay.java
@@ -18,6 +18,7 @@
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.Collections;
import java.util.Set;
@@ -100,6 +101,12 @@ protected void execute(Event event) {
throw new UnsupportedOperationException();
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ duration = simplifyChild(duration, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "wait for " + duration.toString(event, debug) + (event == null ? "" : "...");
diff --git a/src/main/java/ch/njol/skript/effects/EffActionBar.java b/src/main/java/ch/njol/skript/effects/EffActionBar.java
index 07647482d3c..dd470ed5305 100644
--- a/src/main/java/ch/njol/skript/effects/EffActionBar.java
+++ b/src/main/java/ch/njol/skript/effects/EffActionBar.java
@@ -17,6 +17,7 @@
import ch.njol.util.Kleenean;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.BaseComponent;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Action Bar")
@Description("Sends an action bar message to the given player(s).")
@@ -51,6 +52,13 @@ protected void execute(Event event) {
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, components);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ message = simplifyChild(message, step, source);
+ recipients = simplifyChild(recipients, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "send action bar " + message.toString(event, debug) + " to " + recipients.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffApplyBoneMeal.java b/src/main/java/ch/njol/skript/effects/EffApplyBoneMeal.java
index 1a1712eedbf..d097f282945 100644
--- a/src/main/java/ch/njol/skript/effects/EffApplyBoneMeal.java
+++ b/src/main/java/ch/njol/skript/effects/EffApplyBoneMeal.java
@@ -1,20 +1,16 @@
package ch.njol.skript.effects;
import ch.njol.skript.Skript;
-import ch.njol.skript.doc.Description;
-import ch.njol.skript.doc.Examples;
-import ch.njol.skript.doc.Name;
-import ch.njol.skript.doc.RequiredPlugins;
-import ch.njol.skript.doc.Since;
+import ch.njol.skript.doc.*;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
-import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Apply Bone Meal")
@Description("Applies bone meal to a crop, sapling, or composter")
@@ -51,6 +47,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ amount = simplifyChild(amount, step, source);
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "apply " + (amount != null ? amount.toString(event, debug) + " " : "" + "bone meal to " + blocks.toString(event, debug));
diff --git a/src/main/java/ch/njol/skript/effects/EffBan.java b/src/main/java/ch/njol/skript/effects/EffBan.java
index 02fd79af8d2..aaf8f5a9790 100644
--- a/src/main/java/ch/njol/skript/effects/EffBan.java
+++ b/src/main/java/ch/njol/skript/effects/EffBan.java
@@ -17,6 +17,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.net.InetSocketAddress;
import java.util.Date;
@@ -120,6 +121,14 @@ protected void execute(final Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ reason = simplifyChild(reason, step, source);
+ expires = simplifyChild(expires, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
SyntaxStringBuilder builder = new SyntaxStringBuilder(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffBlockUpdate.java b/src/main/java/ch/njol/skript/effects/EffBlockUpdate.java
index 90b24a2fcb8..092018cc56f 100644
--- a/src/main/java/ch/njol/skript/effects/EffBlockUpdate.java
+++ b/src/main/java/ch/njol/skript/effects/EffBlockUpdate.java
@@ -14,6 +14,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Update Block")
@Description({
@@ -58,6 +59,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ blockData = simplifyChild(blockData, step, source);
+ return this;
+ }
+
@Override
public @NotNull String toString(@Nullable Event event, boolean debug) {
return "update " + this.blocks.toString(event, debug) + " as "
diff --git a/src/main/java/ch/njol/skript/effects/EffBreakNaturally.java b/src/main/java/ch/njol/skript/effects/EffBreakNaturally.java
index 2b1cce956dc..57383ea4df8 100644
--- a/src/main/java/ch/njol/skript/effects/EffBreakNaturally.java
+++ b/src/main/java/ch/njol/skript/effects/EffBreakNaturally.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Break Block")
@Description({"Breaks the block and spawns items as if a player had mined it",
@@ -58,7 +59,14 @@ protected void execute(final Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ tool = simplifyChild(tool, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "break " + blocks.toString(e, debug) + " naturally" + (tool != null ? " using " + tool.toString(e, debug) : "");
diff --git a/src/main/java/ch/njol/skript/effects/EffBroadcast.java b/src/main/java/ch/njol/skript/effects/EffBroadcast.java
index 7b41e1f41fd..3c635326a0a 100644
--- a/src/main/java/ch/njol/skript/effects/EffBroadcast.java
+++ b/src/main/java/ch/njol/skript/effects/EffBroadcast.java
@@ -1,12 +1,5 @@
package ch.njol.skript.effects;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -34,6 +27,10 @@
import org.bukkit.event.Event;
import org.bukkit.event.server.BroadcastMessageEvent;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.*;
+import java.util.regex.Pattern;
@Name("Broadcast")
@Description("Broadcasts a message to the server.")
@@ -106,6 +103,13 @@ public void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ messageExpr = simplifyChild(messageExpr, step, source);
+ worlds = simplifyChild(worlds, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "broadcast " + messageExpr.toString(event, debug) + (worlds == null ? "" : " to " + worlds.toString(event, debug));
diff --git a/src/main/java/ch/njol/skript/effects/EffCancelItemUse.java b/src/main/java/ch/njol/skript/effects/EffCancelItemUse.java
index dc3013686fc..f8a06b2e936 100644
--- a/src/main/java/ch/njol/skript/effects/EffCancelItemUse.java
+++ b/src/main/java/ch/njol/skript/effects/EffCancelItemUse.java
@@ -13,6 +13,7 @@
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Cancel Active Item")
@Description({
@@ -51,6 +52,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "cancel the usage of " + entities.toString(event, debug) + "'s active item";
diff --git a/src/main/java/ch/njol/skript/effects/EffChange.java b/src/main/java/ch/njol/skript/effects/EffChange.java
index 0a755e24f57..5bc26b9bb2b 100644
--- a/src/main/java/ch/njol/skript/effects/EffChange.java
+++ b/src/main/java/ch/njol/skript/effects/EffChange.java
@@ -1,14 +1,5 @@
package ch.njol.skript.effects;
-import java.util.Arrays;
-import java.util.logging.Level;
-
-import ch.njol.skript.expressions.ExprParse;
-import ch.njol.skript.lang.*;
-import org.skriptlang.skript.lang.script.ScriptWarning;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.SkriptConfig;
import ch.njol.skript.classes.Changer;
@@ -18,6 +9,8 @@
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
+import ch.njol.skript.expressions.ExprParse;
+import ch.njol.skript.lang.*;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.CountingLogHandler;
import ch.njol.skript.log.ErrorQuality;
@@ -27,6 +20,13 @@
import ch.njol.skript.util.Patterns;
import ch.njol.skript.util.Utils;
import ch.njol.util.Kleenean;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.script.ScriptWarning;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Arrays;
+import java.util.logging.Level;
/**
* @author Peter Güttinger
@@ -277,6 +277,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ changer = simplifyChild(changer, step, source);
+ // don't simplify changed, it shouldn't be evaluated
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
final Expression> changer = this.changer;
diff --git a/src/main/java/ch/njol/skript/effects/EffCharge.java b/src/main/java/ch/njol/skript/effects/EffCharge.java
index 45563cf9d8d..8f0c8915123 100644
--- a/src/main/java/ch/njol/skript/effects/EffCharge.java
+++ b/src/main/java/ch/njol/skript/effects/EffCharge.java
@@ -14,6 +14,7 @@
import org.bukkit.entity.WitherSkull;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Charge Entity")
@Description("Charges or uncharges a creeper or wither skull. A creeper is charged when it has been struck by lightning.")
@@ -53,6 +54,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + entities.toString(event, debug) + (charge ? " charged" : " not charged");
diff --git a/src/main/java/ch/njol/skript/effects/EffColorItems.java b/src/main/java/ch/njol/skript/effects/EffColorItems.java
index 6f2fc81dce1..9bcaba88ca6 100644
--- a/src/main/java/ch/njol/skript/effects/EffColorItems.java
+++ b/src/main/java/ch/njol/skript/effects/EffColorItems.java
@@ -21,6 +21,7 @@
import ch.njol.skript.util.ColorRGB;
import ch.njol.util.Kleenean;
import ch.njol.util.coll.CollectionUtils;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Color Items")
@Description("Colors items in a given color. " +
@@ -132,7 +133,14 @@ protected void execute(Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ color = simplifyChild(color, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "dye " + items.toString(e, debug) + " " + color.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffCommand.java b/src/main/java/ch/njol/skript/effects/EffCommand.java
index 22f16cbe01a..1f9d1bb2ed7 100644
--- a/src/main/java/ch/njol/skript/effects/EffCommand.java
+++ b/src/main/java/ch/njol/skript/effects/EffCommand.java
@@ -18,6 +18,7 @@
import ch.njol.skript.util.StringMode;
import ch.njol.skript.util.Utils;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Command")
@Description({
@@ -89,6 +90,13 @@ public void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ senders = simplifyChild(senders, step, source);
+ commands = simplifyChild(commands, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + (senders != null ? senders.toString(event, debug) : "the console") + " execute " + (bungeecord ? "bungeecord " : "") + "command " + commands.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffCommandBlockConditional.java b/src/main/java/ch/njol/skript/effects/EffCommandBlockConditional.java
index e4a7101d34a..8cc1b5356d9 100644
--- a/src/main/java/ch/njol/skript/effects/EffCommandBlockConditional.java
+++ b/src/main/java/ch/njol/skript/effects/EffCommandBlockConditional.java
@@ -13,6 +13,7 @@
import org.bukkit.block.data.type.CommandBlock;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Conditional / Unconditional")
@Description(
@@ -50,6 +51,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make command block " + blocks.toString(event, debug) + (conditional ? " " : " un") + "conditional";
diff --git a/src/main/java/ch/njol/skript/effects/EffConnect.java b/src/main/java/ch/njol/skript/effects/EffConnect.java
index f2c848eb4be..b21bdc5fc2e 100644
--- a/src/main/java/ch/njol/skript/effects/EffConnect.java
+++ b/src/main/java/ch/njol/skript/effects/EffConnect.java
@@ -14,6 +14,7 @@
import ch.njol.skript.util.Utils;
import ch.njol.util.Kleenean;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Connect")
@Description({
@@ -106,6 +107,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ server = simplifyChild(server, step, source);
+ port = simplifyChild(port, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (transfer) {
diff --git a/src/main/java/ch/njol/skript/effects/EffCustomName.java b/src/main/java/ch/njol/skript/effects/EffCustomName.java
index b83b2f9886d..94745afb519 100644
--- a/src/main/java/ch/njol/skript/effects/EffCustomName.java
+++ b/src/main/java/ch/njol/skript/effects/EffCustomName.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.Entity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Toggle Custom Name Visibility")
@Description("Toggles the custom name visibility of an entity.")
@@ -45,6 +46,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return showCustomName ? "show" : "hide" + " the custom name of " + entities.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffDetonate.java b/src/main/java/ch/njol/skript/effects/EffDetonate.java
index df374e4b598..e9a4e276144 100644
--- a/src/main/java/ch/njol/skript/effects/EffDetonate.java
+++ b/src/main/java/ch/njol/skript/effects/EffDetonate.java
@@ -17,6 +17,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Detonate Entities")
@Description("Immediately detonates an entity. Accepted entities are fireworks, TNT minecarts, primed TNT, wind charges and creepers.")
@@ -56,6 +57,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
public String toString(@Nullable Event event, boolean debug) {
return "detonate " + entities.toString(event, debug);
}
diff --git a/src/main/java/ch/njol/skript/effects/EffDrop.java b/src/main/java/ch/njol/skript/effects/EffDrop.java
index 29fb211b9ad..61dcc9b7c84 100644
--- a/src/main/java/ch/njol/skript/effects/EffDrop.java
+++ b/src/main/java/ch/njol/skript/effects/EffDrop.java
@@ -22,6 +22,7 @@
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Drop")
@Description("Drops one or more items.")
@@ -37,9 +38,7 @@ public class EffDrop extends Effect {
@Nullable
public static Entity lastSpawned = null;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> drops;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression locations;
private boolean useVelocity;
@@ -83,6 +82,13 @@ public void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ drops = simplifyChild(drops, step, source);
+ locations = simplifyChild(locations, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "drop " + drops.toString(e, debug) + " " + locations.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffEnchant.java b/src/main/java/ch/njol/skript/effects/EffEnchant.java
index 8f41e27c5d0..7fc5034138e 100644
--- a/src/main/java/ch/njol/skript/effects/EffEnchant.java
+++ b/src/main/java/ch/njol/skript/effects/EffEnchant.java
@@ -16,6 +16,7 @@
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.function.Function;
@@ -74,6 +75,13 @@ protected void execute(Event event) {
this.items.changeInPlace(event, changeFunction);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ enchantments = simplifyChild(enchantments, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return enchantments == null ? "disenchant " + items.toString(event, debug) : "enchant " + items.toString(event, debug) + " with " + enchantments;
diff --git a/src/main/java/ch/njol/skript/effects/EffEntityVisibility.java b/src/main/java/ch/njol/skript/effects/EffEntityVisibility.java
index 7352204d24c..aecaa598fe4 100644
--- a/src/main/java/ch/njol/skript/effects/EffEntityVisibility.java
+++ b/src/main/java/ch/njol/skript/effects/EffEntityVisibility.java
@@ -13,6 +13,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Entity Visibility")
@Description({
@@ -84,6 +85,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ hidden = simplifyChild(hidden, step, source);
+ viewers = simplifyChild(viewers, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (reveal ? "reveal " : "hide ") + "entities " +
diff --git a/src/main/java/ch/njol/skript/effects/EffEquip.java b/src/main/java/ch/njol/skript/effects/EffEquip.java
index 04baeed397a..edadffa9594 100644
--- a/src/main/java/ch/njol/skript/effects/EffEquip.java
+++ b/src/main/java/ch/njol/skript/effects/EffEquip.java
@@ -1,7 +1,6 @@
package ch.njol.skript.effects;
import ch.njol.skript.Skript;
-import ch.njol.skript.aliases.ItemData;
import ch.njol.skript.aliases.ItemType;
import ch.njol.skript.bukkitutil.PlayerUtils;
import ch.njol.skript.doc.Description;
@@ -14,23 +13,12 @@
import ch.njol.util.Kleenean;
import org.bukkit.Material;
import org.bukkit.Tag;
-import org.bukkit.entity.AbstractHorse;
-import org.bukkit.entity.ChestedHorse;
-import org.bukkit.entity.Horse;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Llama;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Steerable;
-import org.bukkit.entity.Wolf;
+import org.bukkit.entity.*;
import org.bukkit.event.Event;
-import org.bukkit.inventory.AbstractHorseInventory;
-import org.bukkit.inventory.EntityEquipment;
-import org.bukkit.inventory.EquipmentSlot;
-import org.bukkit.inventory.HorseInventory;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.LlamaInventory;
+import org.bukkit.inventory.*;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Equip")
@Description({
@@ -106,7 +94,6 @@ public class EffEquip extends Effect {
"unequip %livingentities%'[s] (armo[u]r|equipment)");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression entities;
private @UnknownNullability Expression itemTypes;
@@ -205,6 +192,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ itemTypes = simplifyChild(itemTypes, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (equip) {
diff --git a/src/main/java/ch/njol/skript/effects/EffExplodeCreeper.java b/src/main/java/ch/njol/skript/effects/EffExplodeCreeper.java
index c9937916d14..9a78502ccf1 100644
--- a/src/main/java/ch/njol/skript/effects/EffExplodeCreeper.java
+++ b/src/main/java/ch/njol/skript/effects/EffExplodeCreeper.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Explode Creeper")
@Description("Starts the explosion process of a creeper or instantly explodes it.")
@@ -84,6 +85,12 @@ protected void execute(final Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return (instant == true ? "instantly explode " : "start the explosion process of ") + entities.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffExplosion.java b/src/main/java/ch/njol/skript/effects/EffExplosion.java
index 93c413aa47d..3c7383f5828 100644
--- a/src/main/java/ch/njol/skript/effects/EffExplosion.java
+++ b/src/main/java/ch/njol/skript/effects/EffExplosion.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Direction;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -70,6 +71,13 @@ public void execute(final Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ force = simplifyChild(force, step, source);
+ locations = simplifyChild(locations, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
if (force != null)
diff --git a/src/main/java/ch/njol/skript/effects/EffFeed.java b/src/main/java/ch/njol/skript/effects/EffFeed.java
index 4ca51be1bbd..00c065320a2 100644
--- a/src/main/java/ch/njol/skript/effects/EffFeed.java
+++ b/src/main/java/ch/njol/skript/effects/EffFeed.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Feed")
@Description("Feeds the specified players.")
@@ -50,7 +51,14 @@ protected void execute(Event e) {
}
}
- @Override
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ beefs = simplifyChild(beefs, step, source);
+ return this;
+ }
+
+ @Override
public String toString(@Nullable Event e, boolean debug) {
return "feed " + players.toString(e, debug) + (beefs != null ? " by " + beefs.toString(e, debug) : "");
}
diff --git a/src/main/java/ch/njol/skript/effects/EffFireResistant.java b/src/main/java/ch/njol/skript/effects/EffFireResistant.java
index 26560eb1699..a91ed5f1fa5 100644
--- a/src/main/java/ch/njol/skript/effects/EffFireResistant.java
+++ b/src/main/java/ch/njol/skript/effects/EffFireResistant.java
@@ -14,6 +14,7 @@
import org.bukkit.event.Event;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Fire Resistant")
@Description("Makes items fire resistant.")
@@ -30,7 +31,6 @@ public class EffFireResistant extends Effect {
Skript.registerEffect(EffFireResistant.class, "make %itemtypes% [:not] (fire resistant|resistant to fire)");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression items;
private boolean not;
@@ -51,6 +51,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + items.toString(event, debug) + (not ? " not" : "") + " fire resistant";
diff --git a/src/main/java/ch/njol/skript/effects/EffFireworkLaunch.java b/src/main/java/ch/njol/skript/effects/EffFireworkLaunch.java
index 1f44850104a..56093edb1ed 100644
--- a/src/main/java/ch/njol/skript/effects/EffFireworkLaunch.java
+++ b/src/main/java/ch/njol/skript/effects/EffFireworkLaunch.java
@@ -18,6 +18,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Launch firework")
@Description("Launch firework effects at the given location(s).")
@@ -32,11 +33,8 @@ public class EffFireworkLaunch extends Effect {
@Nullable
public static Entity lastSpawned = null;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression effects;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression locations;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression lifetime;
@Override
@@ -65,7 +63,15 @@ protected void execute(Event event) {
lastSpawned = firework;
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ effects = simplifyChild(effects, step, source);
+ locations = simplifyChild(locations, step, source);
+ lifetime = simplifyChild(lifetime, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "Launch firework(s) " + effects.toString(event, debug) +
diff --git a/src/main/java/ch/njol/skript/effects/EffForceAttack.java b/src/main/java/ch/njol/skript/effects/EffForceAttack.java
index dc8f19cc02a..3c415753df0 100644
--- a/src/main/java/ch/njol/skript/effects/EffForceAttack.java
+++ b/src/main/java/ch/njol/skript/effects/EffForceAttack.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Force Attack")
@Description("Makes a living entity attack an entity with a melee attack.")
@@ -31,10 +32,8 @@ public class EffForceAttack extends Effect {
}
private static final boolean ATTACK_IS_SUPPORTED = Skript.methodExists(LivingEntity.class, "attack", Entity.class);
-
- @SuppressWarnings("null")
+
private Expression entities;
- @SuppressWarnings("null")
private Expression target;
@SuppressWarnings("unchecked")
@@ -58,7 +57,14 @@ protected void execute(Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ target = simplifyChild(target, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "make " + entities.toString(e, debug) + " attack " + target.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffForceEnchantmentGlint.java b/src/main/java/ch/njol/skript/effects/EffForceEnchantmentGlint.java
index 24f14e6ac7c..72632ec0e8b 100644
--- a/src/main/java/ch/njol/skript/effects/EffForceEnchantmentGlint.java
+++ b/src/main/java/ch/njol/skript/effects/EffForceEnchantmentGlint.java
@@ -11,6 +11,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Force Enchantment Glint")
@Description("Forces the items to glint or not, or removes its existing enchantment glint enforcement.")
@@ -62,6 +63,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ itemTypes = simplifyChild(itemTypes, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
// Pattern: Clear glint override
diff --git a/src/main/java/ch/njol/skript/effects/EffGlowingText.java b/src/main/java/ch/njol/skript/effects/EffGlowingText.java
index 8cd0b84da86..f61cee1e5e0 100644
--- a/src/main/java/ch/njol/skript/effects/EffGlowingText.java
+++ b/src/main/java/ch/njol/skript/effects/EffGlowingText.java
@@ -18,6 +18,7 @@
import org.bukkit.inventory.meta.BlockStateMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Sign Glow")
@Description("Makes a sign (either a block or item) have glowing text or normal text")
@@ -34,7 +35,6 @@ public class EffGlowingText extends Effect {
}
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> objects;
private boolean glowing;
@@ -72,6 +72,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ objects = simplifyChild(objects, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + objects.toString(event, debug) + " have " + (glowing ? "glowing text" : "normal text");
diff --git a/src/main/java/ch/njol/skript/effects/EffHandedness.java b/src/main/java/ch/njol/skript/effects/EffHandedness.java
index b93e6302e61..14e451b2a35 100644
--- a/src/main/java/ch/njol/skript/effects/EffHandedness.java
+++ b/src/main/java/ch/njol/skript/effects/EffHandedness.java
@@ -14,6 +14,7 @@
import org.bukkit.entity.Mob;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Handedness")
@Description("Make mobs left or right-handed. This does not affect players.")
@@ -51,6 +52,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ livingEntities = simplifyChild(livingEntities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + livingEntities.toString(event, debug) + " " + (leftHanded ? "left" : "right") + " handed";
diff --git a/src/main/java/ch/njol/skript/effects/EffHealth.java b/src/main/java/ch/njol/skript/effects/EffHealth.java
index 28d21dd87b9..6ad3612dd54 100644
--- a/src/main/java/ch/njol/skript/effects/EffHealth.java
+++ b/src/main/java/ch/njol/skript/effects/EffHealth.java
@@ -22,6 +22,7 @@
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Damage/Heal/Repair")
@Description({
@@ -122,6 +123,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ damageables = simplifyChild(damageables, step, source);
+ amount = simplifyChild(amount, step, source);
+ exprCause = simplifyChild(exprCause, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String prefix = "damage ";
diff --git a/src/main/java/ch/njol/skript/effects/EffHidePlayerFromServerList.java b/src/main/java/ch/njol/skript/effects/EffHidePlayerFromServerList.java
index f2307e42517..65436b45ada 100644
--- a/src/main/java/ch/njol/skript/effects/EffHidePlayerFromServerList.java
+++ b/src/main/java/ch/njol/skript/effects/EffHidePlayerFromServerList.java
@@ -1,15 +1,5 @@
package ch.njol.skript.effects;
-import java.util.Arrays;
-import java.util.Iterator;
-
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.server.ServerListPingEvent;
-import org.jetbrains.annotations.Nullable;
-
-import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
-import com.google.common.collect.Iterators;
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -19,6 +9,16 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
+import com.google.common.collect.Iterators;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.bukkit.event.server.ServerListPingEvent;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Arrays;
+import java.util.Iterator;
@Name("Hide Player from Server List")
@Description({"Hides a player from the hover list " +
@@ -65,6 +65,12 @@ protected void execute(Event e) {
Iterators.removeAll(it, Arrays.asList(players.getArray(e)));
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "hide " + players.toString(e, debug) + " from the server list";
diff --git a/src/main/java/ch/njol/skript/effects/EffIgnite.java b/src/main/java/ch/njol/skript/effects/EffIgnite.java
index 20392f897d3..3c14a45e491 100644
--- a/src/main/java/ch/njol/skript/effects/EffIgnite.java
+++ b/src/main/java/ch/njol/skript/effects/EffIgnite.java
@@ -17,6 +17,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Timespan;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Ignite/Extinguish")
@Description("Lights entities on fire or extinguishes them.")
@@ -78,6 +79,13 @@ public void run() {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ duration = simplifyChild(duration, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (ignite)
diff --git a/src/main/java/ch/njol/skript/effects/EffIncendiary.java b/src/main/java/ch/njol/skript/effects/EffIncendiary.java
index 181444137cf..dd807243871 100644
--- a/src/main/java/ch/njol/skript/effects/EffIncendiary.java
+++ b/src/main/java/ch/njol/skript/effects/EffIncendiary.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Incendiary")
@Description("Sets if an entity's explosion will leave behind fire. This effect is also usable in an explosion prime event.")
@@ -68,6 +69,12 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
if (isEvent)
diff --git a/src/main/java/ch/njol/skript/effects/EffInvisible.java b/src/main/java/ch/njol/skript/effects/EffInvisible.java
index af8d1206ef3..7a0fd600703 100644
--- a/src/main/java/ch/njol/skript/effects/EffInvisible.java
+++ b/src/main/java/ch/njol/skript/effects/EffInvisible.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Invisible")
@Description({
@@ -46,6 +47,12 @@ protected void execute(Event event) {
entity.setInvisible(invisible);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ livingEntities = simplifyChild(livingEntities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + livingEntities.toString(event, debug) + " " + (invisible ? "in" : "") + "visible";
diff --git a/src/main/java/ch/njol/skript/effects/EffInvulnerability.java b/src/main/java/ch/njol/skript/effects/EffInvulnerability.java
index 9585f88b97f..d6caf8cded6 100644
--- a/src/main/java/ch/njol/skript/effects/EffInvulnerability.java
+++ b/src/main/java/ch/njol/skript/effects/EffInvulnerability.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Invulnerable")
@Description("Makes an entity invulnerable/not invulnerable.")
@@ -44,7 +45,13 @@ protected void execute(Event event) {
entity.setInvulnerable(invulnerable);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "make " + entities.toString(event, debug) + (invulnerable ? " invulnerable" : " not invulnerable");
diff --git a/src/main/java/ch/njol/skript/effects/EffKick.java b/src/main/java/ch/njol/skript/effects/EffKick.java
index ef89ad297ea..d42d7b562f5 100644
--- a/src/main/java/ch/njol/skript/effects/EffKick.java
+++ b/src/main/java/ch/njol/skript/effects/EffKick.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -44,11 +45,6 @@ public boolean init(final Expression>[] exprs, final int matchedPattern, final
return true;
}
- @Override
- public String toString(final @Nullable Event e, final boolean debug) {
- return "kick " + players.toString(e, debug) + (reason != null ? " on account of " + reason.toString(e, debug) : "");
- }
-
@Override
protected void execute(final Event e) {
final String r = reason != null ? reason.getSingle(e) : "";
@@ -64,5 +60,17 @@ protected void execute(final Event e) {
}
}
}
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ reason = simplifyChild(reason, step, source);
+ return this;
+ }
+
+ @Override
+ public String toString(final @Nullable Event e, final boolean debug) {
+ return "kick " + players.toString(e, debug) + (reason != null ? " on account of " + reason.toString(e, debug) : "");
+ }
}
diff --git a/src/main/java/ch/njol/skript/effects/EffKill.java b/src/main/java/ch/njol/skript/effects/EffKill.java
index 882dc83c6e6..a5bd17acfbe 100644
--- a/src/main/java/ch/njol/skript/effects/EffKill.java
+++ b/src/main/java/ch/njol/skript/effects/EffKill.java
@@ -18,6 +18,7 @@
import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Kill")
@Description("Kills an entity.")
@@ -69,6 +70,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "kill " + entities.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffKnockback.java b/src/main/java/ch/njol/skript/effects/EffKnockback.java
index de43ed17322..c75a54289e8 100644
--- a/src/main/java/ch/njol/skript/effects/EffKnockback.java
+++ b/src/main/java/ch/njol/skript/effects/EffKnockback.java
@@ -15,6 +15,7 @@
import org.bukkit.event.Event;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Knockback")
@Description("Apply the same velocity as a knockback to living entities in a direction. Mechanics such as knockback resistance will be factored in.")
@@ -63,6 +64,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ direction = simplifyChild(direction, step, source);
+ strength = simplifyChild(strength, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "knockback " + entities.toString(event, debug) + " " + direction.toString(event, debug) + " with strength " + (strength != null ? strength.toString(event, debug) : "1");
diff --git a/src/main/java/ch/njol/skript/effects/EffLeash.java b/src/main/java/ch/njol/skript/effects/EffLeash.java
index 4e1b0159b08..e1b74894678 100644
--- a/src/main/java/ch/njol/skript/effects/EffLeash.java
+++ b/src/main/java/ch/njol/skript/effects/EffLeash.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Leash entities")
@Description({
@@ -68,6 +69,13 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ holder = simplifyChild(holder, step, source);
+ targets = simplifyChild(targets, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
if (leash)
diff --git a/src/main/java/ch/njol/skript/effects/EffLidState.java b/src/main/java/ch/njol/skript/effects/EffLidState.java
index 3bd13014836..d6f5a563dd4 100644
--- a/src/main/java/ch/njol/skript/effects/EffLidState.java
+++ b/src/main/java/ch/njol/skript/effects/EffLidState.java
@@ -13,6 +13,7 @@
import org.bukkit.block.Lidded;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Open/Close Lid")
@Description("Open or close the lid of the block(s).")
@@ -54,6 +55,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (setOpen ? "open" : "close") + " lid of " + blocks.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffLightning.java b/src/main/java/ch/njol/skript/effects/EffLightning.java
index a92d6681e5c..fc88c27a34e 100644
--- a/src/main/java/ch/njol/skript/effects/EffLightning.java
+++ b/src/main/java/ch/njol/skript/effects/EffLightning.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Direction;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -55,7 +56,13 @@ protected void execute(final Event e) {
lastSpawned = l.getWorld().strikeLightning(l);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ locations = simplifyChild(locations, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "strike lightning " + (effectOnly ? "effect " : "") + locations.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffLoadServerIcon.java b/src/main/java/ch/njol/skript/effects/EffLoadServerIcon.java
index 93242b6bb05..2256299a7c6 100644
--- a/src/main/java/ch/njol/skript/effects/EffLoadServerIcon.java
+++ b/src/main/java/ch/njol/skript/effects/EffLoadServerIcon.java
@@ -1,25 +1,21 @@
package ch.njol.skript.effects;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.bukkit.Bukkit;
-import org.bukkit.event.Event;
-import org.bukkit.util.CachedServerIcon;
-import org.jetbrains.annotations.Nullable;
-
-import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
-import ch.njol.skript.doc.Description;
-import ch.njol.skript.doc.Examples;
-import ch.njol.skript.doc.Name;
-import ch.njol.skript.doc.RequiredPlugins;
-import ch.njol.skript.doc.Since;
+import ch.njol.skript.doc.*;
+import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.skript.util.AsyncEffect;
import ch.njol.util.Kleenean;
+import org.bukkit.Bukkit;
+import org.bukkit.event.Event;
+import org.bukkit.util.CachedServerIcon;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
@Name("Load Server Icon")
@Description({"Loads server icons from the given files. You can get the loaded icon using the",
@@ -78,9 +74,15 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ path = simplifyChild(path, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "load server icon from file " + path.toString(e, debug);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/ch/njol/skript/effects/EffLog.java b/src/main/java/ch/njol/skript/effects/EffLog.java
index 0d4f0eb2908..e5c57d02d3a 100644
--- a/src/main/java/ch/njol/skript/effects/EffLog.java
+++ b/src/main/java/ch/njol/skript/effects/EffLog.java
@@ -1,18 +1,5 @@
package ch.njol.skript.effects;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.logging.Level;
-
-import org.skriptlang.skript.lang.script.Script;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.SkriptConfig;
import ch.njol.skript.doc.Description;
@@ -25,8 +12,16 @@
import ch.njol.skript.lang.Trigger;
import ch.njol.skript.log.SkriptLogger;
import ch.njol.skript.util.ExceptionUtils;
-import ch.njol.util.Closeable;
import ch.njol.util.Kleenean;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.script.Script;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.io.*;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.logging.Level;
@Name("Log")
@Description({"Writes text into a .log file. Skript will write these files to /plugins/Skript/logs.",
@@ -122,6 +117,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ messages = simplifyChild(messages, step, source);
+ files = simplifyChild(files, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "log " + messages.toString(event, debug)
diff --git a/src/main/java/ch/njol/skript/effects/EffLook.java b/src/main/java/ch/njol/skript/effects/EffLook.java
index 5b88d37a9a4..a6ffd78ba8c 100644
--- a/src/main/java/ch/njol/skript/effects/EffLook.java
+++ b/src/main/java/ch/njol/skript/effects/EffLook.java
@@ -18,6 +18,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
import io.papermc.paper.entity.LookAnchor;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Look At")
@Description("Forces the mob(s) or player(s) to look at an entity, vector or location. Vanilla max head pitches range from 10 to 50.")
@@ -99,6 +100,15 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ target = simplifyChild(target, step, source);
+ speed = simplifyChild(speed, step, source);
+ maxPitch = simplifyChild(maxPitch, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "force " + entities.toString(event, debug) + " to look at " + target.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffMakeFly.java b/src/main/java/ch/njol/skript/effects/EffMakeFly.java
index ba8812f1e45..4936123e9b8 100644
--- a/src/main/java/ch/njol/skript/effects/EffMakeFly.java
+++ b/src/main/java/ch/njol/skript/effects/EffMakeFly.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Fly")
@Description("Forces a player to start/stop flying.")
@@ -49,6 +50,12 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "make " + players.toString(e, debug) + (flying ? " start " : " stop ") + "flying";
diff --git a/src/main/java/ch/njol/skript/effects/EffMakeSay.java b/src/main/java/ch/njol/skript/effects/EffMakeSay.java
index a509558901f..f32a1740285 100644
--- a/src/main/java/ch/njol/skript/effects/EffMakeSay.java
+++ b/src/main/java/ch/njol/skript/effects/EffMakeSay.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Make Say")
@Description("Forces a player to send a message to the chat. If the message starts with a slash it will force the player to use command.")
@@ -48,8 +49,15 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ messages = simplifyChild(messages, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "make " + players.toString(e, debug) + " say " + messages.toString(e, debug);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/ch/njol/skript/effects/EffMessage.java b/src/main/java/ch/njol/skript/effects/EffMessage.java
index 476ecda14fc..6b907437b3c 100644
--- a/src/main/java/ch/njol/skript/effects/EffMessage.java
+++ b/src/main/java/ch/njol/skript/effects/EffMessage.java
@@ -1,33 +1,29 @@
package ch.njol.skript.effects;
-import java.util.List;
-import java.util.UUID;
-
-import ch.njol.skript.registrations.Classes;
-import ch.njol.skript.util.LiteralUtils;
-import ch.njol.skript.util.chat.MessageComponent;
-import ch.njol.util.coll.CollectionUtils;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
-import ch.njol.skript.doc.Description;
-import ch.njol.skript.doc.Examples;
-import ch.njol.skript.doc.Name;
-import ch.njol.skript.doc.RequiredPlugins;
-import ch.njol.skript.doc.Since;
+import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.ExprColoured;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionList;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.VariableString;
+import ch.njol.skript.registrations.Classes;
+import ch.njol.skript.util.LiteralUtils;
import ch.njol.skript.util.chat.BungeeConverter;
import ch.njol.skript.util.chat.ChatMessages;
+import ch.njol.skript.util.chat.MessageComponent;
import ch.njol.util.Kleenean;
+import ch.njol.util.coll.CollectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.List;
+import java.util.UUID;
@Name("Message")
@Description({"Sends a message to the given player. Only styles written",
@@ -57,16 +53,13 @@ public class EffMessage extends Effect {
Skript.registerEffect(EffMessage.class, "(message|send [message[s]]) %objects% [to %commandsenders%]");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression>[] messages;
/**
* Used for {@link EffMessage#toString(Event, boolean)}
*/
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> messageExpr;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression recipients;
@Nullable
@@ -143,6 +136,14 @@ private Expression>[] getMessages() {
return messages;
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ messageExpr = simplifyChild(messageExpr, step, source);
+ recipients = simplifyChild(recipients, step, source);
+ sender = simplifyChild(sender, step, source);
+ return this;
+ }
+
private String toString(Object object) {
return object instanceof String ? (String) object : Classes.toString(object);
}
diff --git a/src/main/java/ch/njol/skript/effects/EffOp.java b/src/main/java/ch/njol/skript/effects/EffOp.java
index 8b8ec5f9404..3624a02f33e 100644
--- a/src/main/java/ch/njol/skript/effects/EffOp.java
+++ b/src/main/java/ch/njol/skript/effects/EffOp.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -46,7 +47,13 @@ protected void execute(final Event e) {
p.setOp(op);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return (op ? "" : "de") + "op " + players.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffOpenBook.java b/src/main/java/ch/njol/skript/effects/EffOpenBook.java
index 209dab7da48..92e4ee15453 100644
--- a/src/main/java/ch/njol/skript/effects/EffOpenBook.java
+++ b/src/main/java/ch/njol/skript/effects/EffOpenBook.java
@@ -1,23 +1,18 @@
package ch.njol.skript.effects;
-import org.bukkit.Material;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.inventory.ItemStack;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
-import ch.njol.skript.aliases.Aliases;
import ch.njol.skript.aliases.ItemType;
-import ch.njol.skript.doc.Description;
-import ch.njol.skript.doc.Examples;
-import ch.njol.skript.doc.Name;
-import ch.njol.skript.doc.RequiredPlugins;
-import ch.njol.skript.doc.Since;
+import ch.njol.skript.doc.*;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Open Book")
@Description("Opens a written book to a player.")
@@ -57,7 +52,14 @@ protected void execute(final Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ book = simplifyChild(book, step, source);
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "open book " + book.toString(e, debug) + " to " + players.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffOpenInventory.java b/src/main/java/ch/njol/skript/effects/EffOpenInventory.java
index 29a8f59bc11..aaf30237338 100644
--- a/src/main/java/ch/njol/skript/effects/EffOpenInventory.java
+++ b/src/main/java/ch/njol/skript/effects/EffOpenInventory.java
@@ -1,16 +1,5 @@
package ch.njol.skript.effects;
-import java.util.Locale;
-
-import ch.njol.skript.lang.Literal;
-import ch.njol.skript.registrations.Classes;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.inventory.InventoryType;
-import org.bukkit.inventory.Inventory;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -18,8 +7,19 @@
import ch.njol.skript.doc.Since;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
+import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptParser.ParseResult;
+import ch.njol.skript.registrations.Classes;
import ch.njol.util.Kleenean;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.bukkit.event.inventory.InventoryType;
+import org.bukkit.inventory.Inventory;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Locale;
@Name("Open/Close Inventory")
@Description({"Opens an inventory to a player. The player can then access and modify the inventory as if it was a chest that he just opened.",
@@ -137,7 +137,14 @@ protected void execute(final Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ invi = simplifyChild(invi, step, source);
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return (open ? "open " + (invi != null ? invi.toString(e, debug) : "crafting table") + " to " : "close inventory view of ") + players.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffPathfind.java b/src/main/java/ch/njol/skript/effects/EffPathfind.java
index fed033debdf..6615fad3b31 100644
--- a/src/main/java/ch/njol/skript/effects/EffPathfind.java
+++ b/src/main/java/ch/njol/skript/effects/EffPathfind.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Pathfind")
@Description({"Make an entity pathfind towards a location or another entity. Not all entities can pathfind. " +
@@ -70,6 +71,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ target = simplifyChild(target, step, source);
+ speed = simplifyChild(speed, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (target == null)
diff --git a/src/main/java/ch/njol/skript/effects/EffPlaySound.java b/src/main/java/ch/njol/skript/effects/EffPlaySound.java
index f0efd49446a..30964880024 100644
--- a/src/main/java/ch/njol/skript/effects/EffPlaySound.java
+++ b/src/main/java/ch/njol/skript/effects/EffPlaySound.java
@@ -16,6 +16,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.ArrayList;
import java.util.List;
@@ -181,6 +182,19 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ //noinspection DuplicatedCode
+ sounds = simplifyChild(sounds, step, source);
+ seed = simplifyChild(seed, step, source);
+ category = simplifyChild(category, step, source);
+ volume = simplifyChild(volume, step, source);
+ pitch = simplifyChild(pitch, step, source);
+ emitters = simplifyChild(emitters, step, source);
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
StringBuilder builder = new StringBuilder()
diff --git a/src/main/java/ch/njol/skript/effects/EffPoison.java b/src/main/java/ch/njol/skript/effects/EffPoison.java
index af04ccd4f13..82d8664fb81 100644
--- a/src/main/java/ch/njol/skript/effects/EffPoison.java
+++ b/src/main/java/ch/njol/skript/effects/EffPoison.java
@@ -16,6 +16,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Timespan;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -52,11 +53,6 @@ public boolean init(final Expression>[] exprs, final int matchedPattern, final
return true;
}
- @Override
- public String toString(final @Nullable Event e, final boolean debug) {
- return "poison " + entites.toString(e, debug);
- }
-
@Override
protected void execute(final Event e) {
for (final LivingEntity le : entites.getArray(e)) {
@@ -77,5 +73,17 @@ protected void execute(final Event e) {
}
}
}
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entites = simplifyChild(entites, step, source);
+ duration = simplifyChild(duration, step, source);
+ return this;
+ }
+
+ @Override
+ public String toString(final @Nullable Event e, final boolean debug) {
+ return "poison " + entites.toString(e, debug);
+ }
}
diff --git a/src/main/java/ch/njol/skript/effects/EffPotion.java b/src/main/java/ch/njol/skript/effects/EffPotion.java
index ed347492860..fc64a2ed08d 100644
--- a/src/main/java/ch/njol/skript/effects/EffPotion.java
+++ b/src/main/java/ch/njol/skript/effects/EffPotion.java
@@ -17,6 +17,7 @@
import ch.njol.skript.util.PotionEffectUtils;
import ch.njol.skript.util.Timespan;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Potion Effects")
@Description("Apply or remove potion effects to/from entities.")
@@ -128,6 +129,17 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ //noinspection DuplicatedCode
+ effects = simplifyChild(effects, step, source);
+ potions = simplifyChild(potions, step, source);
+ entities = simplifyChild(entities, step, source);
+ duration = simplifyChild(duration, step, source);
+ tier = simplifyChild(tier, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (potionEffect) {
diff --git a/src/main/java/ch/njol/skript/effects/EffPush.java b/src/main/java/ch/njol/skript/effects/EffPush.java
index 6dedfd3f7ca..79453a50670 100644
--- a/src/main/java/ch/njol/skript/effects/EffPush.java
+++ b/src/main/java/ch/njol/skript/effects/EffPush.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Direction;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -66,7 +67,15 @@ protected void execute(final Event e) {
en.setVelocity(en.getVelocity().add(mod)); // REMIND add NoCheatPlus exception to players
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ direction = simplifyChild(direction, step, source);
+ speed = simplifyChild(speed, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "push " + entities.toString(e, debug) + " " + direction.toString(e, debug) + (speed != null ? " at speed " + speed.toString(e, debug) : "");
diff --git a/src/main/java/ch/njol/skript/effects/EffPvP.java b/src/main/java/ch/njol/skript/effects/EffPvP.java
index c97cd92e142..b8ff07e644c 100644
--- a/src/main/java/ch/njol/skript/effects/EffPvP.java
+++ b/src/main/java/ch/njol/skript/effects/EffPvP.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -46,7 +47,13 @@ protected void execute(final Event e) {
w.setPVP(enable);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ worlds = simplifyChild(worlds, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return (enable ? "enable" : "disable") + " PvP in " + worlds.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffReplace.java b/src/main/java/ch/njol/skript/effects/EffReplace.java
index 0141ad2fd8d..6d6055c2551 100644
--- a/src/main/java/ch/njol/skript/effects/EffReplace.java
+++ b/src/main/java/ch/njol/skript/effects/EffReplace.java
@@ -21,6 +21,7 @@
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.ArrayList;
import java.util.List;
@@ -170,6 +171,14 @@ private void replace(Event event, Object[] needles, Expression> haystackExpr)
return replaceFunction;
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ haystack = simplifyChild(haystack, step, source);
+ needles = simplifyChild(needles, step, source);
+ replacement = simplifyChild(replacement, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
SyntaxStringBuilder builder = new SyntaxStringBuilder(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffResetTitle.java b/src/main/java/ch/njol/skript/effects/EffResetTitle.java
index 541038b42fb..3c47b12ba34 100644
--- a/src/main/java/ch/njol/skript/effects/EffResetTitle.java
+++ b/src/main/java/ch/njol/skript/effects/EffResetTitle.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Title - Reset")
@Description("Resets the title of the player to the default values.")
@@ -41,7 +42,13 @@ protected void execute(Event e) {
for (Player recipient : recipients.getArray(e))
recipient.resetTitle();
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ recipients = simplifyChild(recipients, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "reset the title of " + recipients.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffRespawn.java b/src/main/java/ch/njol/skript/effects/EffRespawn.java
index b0460be02d1..4ff8373df8d 100644
--- a/src/main/java/ch/njol/skript/effects/EffRespawn.java
+++ b/src/main/java/ch/njol/skript/effects/EffRespawn.java
@@ -17,6 +17,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Force Respawn")
@Description("Forces player(s) to respawn if they are dead. If this is called without delay from death event, one tick is waited before respawn attempt.")
@@ -66,6 +67,12 @@ public void run() {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "force " + players.toString(e, debug) + " to respawn";
diff --git a/src/main/java/ch/njol/skript/effects/EffReturn.java b/src/main/java/ch/njol/skript/effects/EffReturn.java
index ab4dafbe16b..cdfa3a129ee 100644
--- a/src/main/java/ch/njol/skript/effects/EffReturn.java
+++ b/src/main/java/ch/njol/skript/effects/EffReturn.java
@@ -16,6 +16,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.List;
@@ -115,6 +116,12 @@ public ExecutionIntent executionIntent() {
return ExecutionIntent.stopSections(breakLevels);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ value = simplifyChild(value, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "return " + value.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffRing.java b/src/main/java/ch/njol/skript/effects/EffRing.java
index ba441f9b22c..b567c50e9ea 100644
--- a/src/main/java/ch/njol/skript/effects/EffRing.java
+++ b/src/main/java/ch/njol/skript/effects/EffRing.java
@@ -18,6 +18,7 @@
import org.bukkit.entity.Entity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Ring Bell")
@Description({
@@ -83,6 +84,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ entity = simplifyChild(entity, step, source);
+ direction = simplifyChild(direction, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (entity != null ? "make " + entity.toString(event, debug) + " " : "") +
diff --git a/src/main/java/ch/njol/skript/effects/EffRun.java b/src/main/java/ch/njol/skript/effects/EffRun.java
index 91e31119162..8739dd73c50 100644
--- a/src/main/java/ch/njol/skript/effects/EffRun.java
+++ b/src/main/java/ch/njol/skript/effects/EffRun.java
@@ -12,6 +12,7 @@
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import org.skriptlang.skript.util.Executable;
@Name("Run (Experimental)")
@@ -80,6 +81,13 @@ protected void execute(Event event) {
task.execute(event, arguments);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ executable = simplifyChild(executable, step, source);
+ arguments = simplifyChild(arguments, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (hasArguments)
diff --git a/src/main/java/ch/njol/skript/effects/EffScriptFile.java b/src/main/java/ch/njol/skript/effects/EffScriptFile.java
index d49d41d3112..060ad484b05 100644
--- a/src/main/java/ch/njol/skript/effects/EffScriptFile.java
+++ b/src/main/java/ch/njol/skript/effects/EffScriptFile.java
@@ -17,6 +17,7 @@
import ch.njol.util.Kleenean;
import ch.njol.util.OpenCloseable;
import org.bukkit.event.Event;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.io.File;
import java.io.FileFilter;
@@ -175,6 +176,13 @@ private void unloadScripts(File file) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ scriptExpression = simplifyChild(scriptExpression, step, source);
+ scriptNameExpression = simplifyChild(scriptNameExpression, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
String start = switch (mark) {
diff --git a/src/main/java/ch/njol/skript/effects/EffSendBlockChange.java b/src/main/java/ch/njol/skript/effects/EffSendBlockChange.java
index d9cdbb3a4cf..40166357381 100644
--- a/src/main/java/ch/njol/skript/effects/EffSendBlockChange.java
+++ b/src/main/java/ch/njol/skript/effects/EffSendBlockChange.java
@@ -18,6 +18,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Send Block Change")
@Description("Makes a player see a block as something it really isn't. BlockData support is only for MC 1.13+")
@@ -87,6 +88,14 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ blocks = simplifyChild(blocks, step, source);
+ as = simplifyChild(as, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return String.format(
diff --git a/src/main/java/ch/njol/skript/effects/EffSendResourcePack.java b/src/main/java/ch/njol/skript/effects/EffSendResourcePack.java
index 25da37b69db..10932a45097 100644
--- a/src/main/java/ch/njol/skript/effects/EffSendResourcePack.java
+++ b/src/main/java/ch/njol/skript/effects/EffSendResourcePack.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
import ch.njol.util.StringUtils;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Send Resource Pack")
@Description({"Request that the player's client download and switch resource packs. The client will download ",
@@ -87,6 +88,14 @@ protected void execute(Event e) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ url = simplifyChild(url, step, source);
+ hash = simplifyChild(hash, step, source);
+ recipients = simplifyChild(recipients, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "send the resource pack from " + url.toString(e, debug) +
diff --git a/src/main/java/ch/njol/skript/effects/EffSendTitle.java b/src/main/java/ch/njol/skript/effects/EffSendTitle.java
index 89b8e3c6bff..a5d4f2495a6 100644
--- a/src/main/java/ch/njol/skript/effects/EffSendTitle.java
+++ b/src/main/java/ch/njol/skript/effects/EffSendTitle.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.util.Timespan;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Title - Send")
@Description({
@@ -103,7 +104,19 @@ protected void execute(final Event e) {
p.sendTitle(title, subtitle);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ //noinspection DuplicatedCode
+ title = simplifyChild(title, step, source);
+ subtitle = simplifyChild(subtitle, step, source);
+ recipients = simplifyChild(recipients, step, source);
+ stay = simplifyChild(stay, step, source);
+ fadeIn = simplifyChild(fadeIn, step, source);
+ fadeOut = simplifyChild(fadeOut, step, source);
+ return this;
+ }
+
// TODO: util method to simplify this
@Override
public String toString(final @Nullable Event e, final boolean debug) {
diff --git a/src/main/java/ch/njol/skript/effects/EffShear.java b/src/main/java/ch/njol/skript/effects/EffShear.java
index 0afb3b8aa60..ceb3d32d8cd 100644
--- a/src/main/java/ch/njol/skript/effects/EffShear.java
+++ b/src/main/java/ch/njol/skript/effects/EffShear.java
@@ -18,6 +18,7 @@
import org.bukkit.entity.Snowman;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Shear")
@Description({
@@ -76,7 +77,13 @@ protected void execute(Event event) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entity = simplifyChild(entity, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (shear ? "" : "un") + "shear " + entity.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java
index ffe8a72ed85..f53e3330daa 100644
--- a/src/main/java/ch/njol/skript/effects/EffSilence.java
+++ b/src/main/java/ch/njol/skript/effects/EffSilence.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Silence Entity")
@Description("Controls whether or not an entity is silent.")
@@ -46,7 +47,13 @@ protected void execute(Event e) {
entity.setSilent(silence);
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return (silence ? "silence " : "unsilence ") + entities.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffSort.java b/src/main/java/ch/njol/skript/effects/EffSort.java
index 248c4013568..21933ee723e 100644
--- a/src/main/java/ch/njol/skript/effects/EffSort.java
+++ b/src/main/java/ch/njol/skript/effects/EffSort.java
@@ -21,6 +21,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.HashSet;
import java.util.Iterator;
@@ -138,6 +139,13 @@ public boolean hasIndices() {
return currentIndex;
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ // don't simplify unsortedObjects, it's a variable
+ mappingExpr = simplifyChild(mappingExpr, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "sort " + unsortedObjects.toString(event, debug)
diff --git a/src/main/java/ch/njol/skript/effects/EffStopSound.java b/src/main/java/ch/njol/skript/effects/EffStopSound.java
index b6e3e69b7b7..d46aa44eb46 100644
--- a/src/main/java/ch/njol/skript/effects/EffStopSound.java
+++ b/src/main/java/ch/njol/skript/effects/EffStopSound.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.regex.Pattern;
@@ -91,6 +92,14 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ sounds = simplifyChild(sounds, step, source);
+ category = simplifyChild(category, step, source);
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (allSounds ? "stop all sounds " : "stop sound " + sounds.toString(event, debug)) +
diff --git a/src/main/java/ch/njol/skript/effects/EffSwingHand.java b/src/main/java/ch/njol/skript/effects/EffSwingHand.java
index 8246eb783c6..5cb5afa9bdb 100644
--- a/src/main/java/ch/njol/skript/effects/EffSwingHand.java
+++ b/src/main/java/ch/njol/skript/effects/EffSwingHand.java
@@ -14,6 +14,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Swing Hand")
@Description("Makes an entity swing their hand. This does nothing if the entity does not have an animation for swinging their hand.")
@@ -58,7 +59,13 @@ protected void execute(Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "make " + entities.toString(e, debug) + " swing their " + (isMainHand ? "hand" : "off hand");
diff --git a/src/main/java/ch/njol/skript/effects/EffTame.java b/src/main/java/ch/njol/skript/effects/EffTame.java
index bcad5fa23af..b78598e53fd 100644
--- a/src/main/java/ch/njol/skript/effects/EffTame.java
+++ b/src/main/java/ch/njol/skript/effects/EffTame.java
@@ -13,6 +13,7 @@
import org.bukkit.entity.Tameable;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Tame / Untame")
@Description("Tame a tameable entity (horse, parrot, cat, etc.).")
@@ -46,6 +47,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (tame ? "tame " : "untame ") + entities.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffTeleport.java b/src/main/java/ch/njol/skript/effects/EffTeleport.java
index 1dc3fe781b4..2b6920f7d63 100644
--- a/src/main/java/ch/njol/skript/effects/EffTeleport.java
+++ b/src/main/java/ch/njol/skript/effects/EffTeleport.java
@@ -20,6 +20,7 @@
import org.bukkit.event.player.PlayerRespawnEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.Arrays;
import java.util.Objects;
@@ -171,6 +172,14 @@ protected void execute(Event event) {
assert false;
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ location = simplifyChild(location, step, source);
+ teleportFlags = simplifyChild(teleportFlags, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
SyntaxStringBuilder builder = new SyntaxStringBuilder(event, debug)
diff --git a/src/main/java/ch/njol/skript/effects/EffToggle.java b/src/main/java/ch/njol/skript/effects/EffToggle.java
index 91bcd7d4344..f31e7c0d777 100644
--- a/src/main/java/ch/njol/skript/effects/EffToggle.java
+++ b/src/main/java/ch/njol/skript/effects/EffToggle.java
@@ -1,17 +1,5 @@
package ch.njol.skript.effects;
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
-
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.data.BlockData;
-import org.bukkit.block.data.Openable;
-import org.bukkit.block.data.Powerable;
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -21,6 +9,13 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.bukkit.block.Block;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.Openable;
+import org.bukkit.block.data.Powerable;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -76,6 +71,12 @@ else if (data instanceof Powerable) // power = NOT power
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "toggle " + blocks.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffToggleCanPickUpItems.java b/src/main/java/ch/njol/skript/effects/EffToggleCanPickUpItems.java
index 41810ff4dfe..9dc56bb6e30 100644
--- a/src/main/java/ch/njol/skript/effects/EffToggleCanPickUpItems.java
+++ b/src/main/java/ch/njol/skript/effects/EffToggleCanPickUpItems.java
@@ -12,6 +12,7 @@
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Toggle Picking Up Items")
@Description("Determines whether living entities are able to pick up items or not")
@@ -49,6 +50,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ entities = simplifyChild(entities, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (allowPickUp) {
diff --git a/src/main/java/ch/njol/skript/effects/EffToggleFlight.java b/src/main/java/ch/njol/skript/effects/EffToggleFlight.java
index 35a5375a382..69db8b0281c 100644
--- a/src/main/java/ch/njol/skript/effects/EffToggleFlight.java
+++ b/src/main/java/ch/njol/skript/effects/EffToggleFlight.java
@@ -13,6 +13,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Toggle Flight")
@Description("Toggle the flight mode of a player.")
@@ -45,6 +46,12 @@ protected void execute(final Event e) {
player.setAllowFlight(allow);
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ players = simplifyChild(players, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "allow flight to " + players.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffTooltip.java b/src/main/java/ch/njol/skript/effects/EffTooltip.java
index f9fa46e7a94..46143c416e6 100644
--- a/src/main/java/ch/njol/skript/effects/EffTooltip.java
+++ b/src/main/java/ch/njol/skript/effects/EffTooltip.java
@@ -15,6 +15,7 @@
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Item Tooltips")
@Description({
@@ -39,7 +40,6 @@ public class EffTooltip extends Effect {
}
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression items;
private boolean hide, entire;
@@ -69,6 +69,12 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return (hide ? "hide" : "show") + " the " + (entire ? "entire" : "additional") + " tooltip of " + items.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffTransform.java b/src/main/java/ch/njol/skript/effects/EffTransform.java
index d4717dd254a..60b0e39ccaa 100644
--- a/src/main/java/ch/njol/skript/effects/EffTransform.java
+++ b/src/main/java/ch/njol/skript/effects/EffTransform.java
@@ -21,6 +21,7 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnknownNullability;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.HashMap;
import java.util.HashSet;
@@ -135,6 +136,13 @@ public boolean hasIndices() {
return currentIndex;
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ // don't evaluate the input values until the effect is executed
+ mappingExpr = simplifyChild(mappingExpr, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "transform " + unmappedObjects.toString(event, debug) + " using " + mappingExpr.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffTree.java b/src/main/java/ch/njol/skript/effects/EffTree.java
index a9369177231..456b3c3a058 100644
--- a/src/main/java/ch/njol/skript/effects/EffTree.java
+++ b/src/main/java/ch/njol/skript/effects/EffTree.java
@@ -15,6 +15,7 @@
import ch.njol.skript.util.Direction;
import ch.njol.skript.util.StructureType;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -55,7 +56,14 @@ public void execute(final Event e) {
type.grow(l.getBlock());
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ blocks = simplifyChild(blocks, step, source);
+ type = simplifyChild(type, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "grow tree of type " + type.toString(e, debug) + " " + blocks.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/effects/EffVehicle.java b/src/main/java/ch/njol/skript/effects/EffVehicle.java
index 39e9bd58e49..1e8c03710ea 100644
--- a/src/main/java/ch/njol/skript/effects/EffVehicle.java
+++ b/src/main/java/ch/njol/skript/effects/EffVehicle.java
@@ -15,6 +15,7 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
/**
* @author Peter Güttinger
@@ -88,7 +89,14 @@ protected void execute(final Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ vehicles = simplifyChild(vehicles, step, source);
+ passengers = simplifyChild(passengers, step, source);
+ return this;
+ }
+
@Override
public String toString(final @Nullable Event e, final boolean debug) {
final Expression> vehicles = this.vehicles;
diff --git a/src/main/java/ch/njol/skript/effects/EffVisualEffect.java b/src/main/java/ch/njol/skript/effects/EffVisualEffect.java
index e0a6652ae09..23f02860b40 100644
--- a/src/main/java/ch/njol/skript/effects/EffVisualEffect.java
+++ b/src/main/java/ch/njol/skript/effects/EffVisualEffect.java
@@ -18,6 +18,7 @@
import ch.njol.skript.util.Direction;
import ch.njol.skript.util.visual.VisualEffect;
import ch.njol.util.Kleenean;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Play Effect")
@Description({"Plays a visual effect at a given location or on a given entity.",
@@ -33,11 +34,8 @@ public class EffVisualEffect extends Effect {
"(play|show) %number% %visualeffects% (on|%directions%) %locations% [(to %-players%|in (radius|range) of %-number%)]");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression effects;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression direction;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression> where;
@Nullable
@@ -119,7 +117,19 @@ protected void execute(Event e) {
}
}
}
-
+
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ //noinspection DuplicatedCode
+ effects = simplifyChild(effects, step, source);
+ direction = simplifyChild(direction, step, source);
+ where = simplifyChild(where, step, source);
+ players = simplifyChild(players, step, source);
+ radius = simplifyChild(radius, step, source);
+ count = simplifyChild(count, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "play " + effects.toString(e, debug) + " " + direction.toString(e, debug) + " "
diff --git a/src/main/java/ch/njol/skript/effects/EffWorldLoad.java b/src/main/java/ch/njol/skript/effects/EffWorldLoad.java
index d1198a56e90..9abe05bdf5d 100644
--- a/src/main/java/ch/njol/skript/effects/EffWorldLoad.java
+++ b/src/main/java/ch/njol/skript/effects/EffWorldLoad.java
@@ -15,6 +15,7 @@
import org.bukkit.WorldCreator;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Load World")
@Description({
@@ -72,6 +73,13 @@ protected void execute(Event event) {
}
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ worlds = simplifyChild(worlds, step, source);
+ environment = simplifyChild(environment, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (load)
diff --git a/src/main/java/ch/njol/skript/effects/EffWorldSave.java b/src/main/java/ch/njol/skript/effects/EffWorldSave.java
index 760b4459d87..901ad422cbc 100644
--- a/src/main/java/ch/njol/skript/effects/EffWorldSave.java
+++ b/src/main/java/ch/njol/skript/effects/EffWorldSave.java
@@ -12,6 +12,7 @@
import org.bukkit.World;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Save World")
@Description({
@@ -44,6 +45,12 @@ protected void execute(Event event) {
world.save();
}
+ @Override
+ public Effect simplify(Step step, @Nullable Simplifiable> source) {
+ worlds = simplifyChild(worlds, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return "save the world(s) " + worlds.toString(event, debug);
diff --git a/src/main/java/ch/njol/skript/expressions/ExprAlphabetList.java b/src/main/java/ch/njol/skript/expressions/ExprAlphabetList.java
index fa02485b2b7..0aeeade5300 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprAlphabetList.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprAlphabetList.java
@@ -1,10 +1,5 @@
package ch.njol.skript.expressions;
-import java.util.Arrays;
-
-import org.bukkit.event.Event;
-import org.jetbrains.annotations.Nullable;
-
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
@@ -12,9 +7,15 @@
import ch.njol.skript.doc.Since;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionType;
+import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
+import org.bukkit.event.Event;
+import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
+
+import java.util.Arrays;
@Name("Alphabetical Sort")
@Description("Sorts given strings in alphabetical order.")
@@ -51,7 +52,17 @@ public Class extends String> getReturnType() {
@Override
public boolean isSingle() {
- return false;
+ return texts.isSingle();
+ }
+
+ @Override
+ public Expression simplify(Step step, @Nullable Simplifiable> source) {
+ texts = simplifyChild(texts, step, source);
+ if (texts.isSingle())
+ return texts;
+ if (texts instanceof Literal)
+ return getAsSimplifiedLiteral();
+ return this;
}
@Override
@@ -59,4 +70,4 @@ public String toString(@Nullable Event e, boolean debug) {
return "alphabetically sorted strings: " + texts.toString(e, debug);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/ch/njol/skript/expressions/ExprAmount.java b/src/main/java/ch/njol/skript/expressions/ExprAmount.java
index 375f01cdb36..e8052248c68 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprAmount.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprAmount.java
@@ -6,18 +6,15 @@
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
-import ch.njol.skript.lang.Expression;
-import ch.njol.skript.lang.ExpressionList;
-import ch.njol.skript.lang.ExpressionType;
-import ch.njol.skript.lang.Literal;
+import ch.njol.skript.lang.*;
import ch.njol.skript.lang.SkriptParser.ParseResult;
-import ch.njol.skript.lang.Variable;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.skript.lang.util.common.AnyAmount;
import ch.njol.util.Kleenean;
import ch.njol.util.coll.CollectionUtils;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.Map;
@@ -161,6 +158,18 @@ public Class extends Number> getReturnType() {
return any != null ? Number.class : Long.class;
}
+ @Override
+ public Expression simplify(Step step, @Nullable Simplifiable> source) {
+ exprs = (ExpressionList>) simplifyChild(exprs, step, source);
+ any = simplifyChild(any, step, source);
+
+ // todo: when can any be simplified safely?
+
+ if (exprs instanceof LiteralList>)
+ return getAsSimplifiedLiteral();
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
if (any != null)
diff --git a/src/main/java/ch/njol/skript/expressions/ExprAmountOfItems.java b/src/main/java/ch/njol/skript/expressions/ExprAmountOfItems.java
index c5d378e3a07..a07903f1126 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprAmountOfItems.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprAmountOfItems.java
@@ -15,6 +15,7 @@
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Amount of Items")
@Description("Counts how many of a particular item type are in a given inventory.")
@@ -26,9 +27,7 @@ public class ExprAmountOfItems extends SimpleExpression {
Skript.registerExpression(ExprAmountOfItems.class, Long.class, ExpressionType.PROPERTY, "[the] (amount|number) of %itemtypes% (in|of) %inventories%");
}
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression items;
- @SuppressWarnings("NotNullFieldNotInitialized")
private Expression inventories;
@Override
@@ -67,7 +66,14 @@ public Class extends Long> getReturnType() {
public boolean isSingle() {
return true;
}
-
+
+ @Override
+ public Expression simplify(Step step, @Nullable Simplifiable> source) {
+ items = simplifyChild(items, step, source);
+ inventories = simplifyChild(inventories, step, source);
+ return this;
+ }
+
@Override
public String toString(@Nullable Event e, boolean debug) {
return "the number of " + items.toString(e, debug) + " in " + inventories.toString(e, debug);
diff --git a/src/main/java/ch/njol/skript/expressions/ExprAngle.java b/src/main/java/ch/njol/skript/expressions/ExprAngle.java
index 208a0ee209e..e23d3c57842 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprAngle.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprAngle.java
@@ -7,11 +7,13 @@
import ch.njol.skript.doc.Since;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionType;
+import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
@Name("Angle")
@Description({
@@ -69,6 +71,14 @@ public Class extends Number> getReturnType() {
return Number.class;
}
+ @Override
+ public Expression simplify(Step step, @Nullable Simplifiable> source) {
+ angle = simplifyChild(angle, step, source);
+ if (angle instanceof Literal)
+ return getAsSimplifiedLiteral();
+ return this;
+ }
+
@Override
public String toString(@Nullable Event event, boolean debug) {
return angle.toString(event, debug) + " in " + (isRadians ? "degrees" : "radians");
diff --git a/src/main/java/ch/njol/skript/expressions/ExprBannerPatterns.java b/src/main/java/ch/njol/skript/expressions/ExprBannerPatterns.java
index 51ddc892828..bdb3669b794 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprBannerPatterns.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprBannerPatterns.java
@@ -24,7 +24,9 @@
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.simplification.Simplifiable;
import java.util.ArrayList;
import java.util.Arrays;
@@ -56,23 +58,21 @@ public class ExprBannerPatterns extends PropertyExpression