diff --git a/src/main/java/ch/njol/skript/expressions/ExprTernary.java b/src/main/java/ch/njol/skript/expressions/ExprTernary.java
index 3992f308623..dc4f5b518c6 100644
--- a/src/main/java/ch/njol/skript/expressions/ExprTernary.java
+++ b/src/main/java/ch/njol/skript/expressions/ExprTernary.java
@@ -122,8 +122,10 @@ public boolean isSingle() {
}
@Override
- public String toString(Event e, boolean debug) {
- return ifTrue.toString(e, debug) + " if " + condition + " otherwise " + ifFalse.toString(e, debug);
+ public String toString(Event event, boolean debug) {
+ return ifTrue.toString(event, debug)
+ + " if " + condition.toString(event, debug)
+ + " otherwise " + ifFalse.toString(event, debug);
}
}
diff --git a/src/main/java/ch/njol/skript/expressions/ExprWhether.java b/src/main/java/ch/njol/skript/expressions/ExprWhether.java
new file mode 100644
index 00000000000..4817551e181
--- /dev/null
+++ b/src/main/java/ch/njol/skript/expressions/ExprWhether.java
@@ -0,0 +1,78 @@
+/**
+ * This file is part of Skript.
+ *
+ * Skript is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Skript is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Skript. If not, see .
+ *
+ * Copyright Peter Güttinger, SkriptLang team and contributors
+ */
+package ch.njol.skript.expressions;
+
+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.Since;
+import ch.njol.skript.lang.Condition;
+import ch.njol.skript.lang.Expression;
+import ch.njol.skript.lang.ExpressionType;
+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.UnknownNullability;
+
+@Name("Whether")
+@Description("A shorthand for returning the result of a condition (true or false). This is functionally identical to using `true if else false`.")
+@Examples({
+ "set {fly} to whether player can fly",
+ "broadcast \"Flying: %whether player is flying%\""
+})
+@Since("INSERT VERSION")
+public class ExprWhether extends SimpleExpression {
+
+ static {
+ Skript.registerExpression(ExprWhether.class, Boolean.class, ExpressionType.PATTERN_MATCHES_EVERYTHING,
+ "whether <.+>");
+ }
+
+ private @UnknownNullability Condition condition;
+
+ @Override
+ public boolean init(Expression>[] expressions, int pattern, Kleenean delayed, ParseResult result) {
+ String input = result.regexes.get(0).group();
+ this.condition = Condition.parse(input, "Can't understand this condition: " + input);
+ return condition != null;
+ }
+
+ @Override
+ protected Boolean[] get(Event event) {
+ return new Boolean[] {condition.check(event)};
+ }
+
+ @Override
+ public Class extends Boolean> getReturnType() {
+ return Boolean.class;
+ }
+
+ @Override
+ public boolean isSingle() {
+ return true;
+ }
+
+ @Override
+ public String toString(Event event, boolean debug) {
+ return "whether " + condition.toString(event, debug);
+ }
+
+}
diff --git a/src/test/skript/tests/syntaxes/expressions/ExprWhether.sk b/src/test/skript/tests/syntaxes/expressions/ExprWhether.sk
new file mode 100644
index 00000000000..83001203599
--- /dev/null
+++ b/src/test/skript/tests/syntaxes/expressions/ExprWhether.sk
@@ -0,0 +1,14 @@
+test "whether":
+ set {_number} to 5
+ set {_okay} to whether {_number} is greater than 3
+ assert {_okay} is true with "Condition didn't evaluate correctly"
+ set {_okay} to whether {_number} is less than 6
+ assert {_okay} is true with "Condition didn't evaluate correctly"
+ set {_okay} to whether {_number} is 5
+ assert {_okay} is true with "Condition didn't evaluate correctly"
+ delete {_okay}
+ spawn a pig at spawn of "world":
+ set {_pig} to event-entity
+ assert (whether {_pig} is alive) is true with "Condition didn't evaluate correctly"
+ assert (whether health of {_pig} is greater than 0) is true with "Condition didn't evaluate correctly"
+ delete the last spawned pig