From 0916aeafacfabcc4df5852c91053ec8292adaae6 Mon Sep 17 00:00:00 2001 From: melontini <104443436+melontini@users.noreply.github.com> Date: Thu, 09 May 2024 19:41:02 +0000 Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/main' into 1.20.4-fabric --- src/main/java/me/melontini/commander/impl/expression/EvalUtils.java | 5 +++++ src/main/java/me/melontini/commander/impl/expression/functions/ClampFunction.java | 23 ----------------------- src/main/java/me/melontini/commander/impl/expression/functions/LerpFunction.java | 23 ----------------------- src/main/java/me/melontini/commander/impl/expression/functions/RangedRandomFunction.java | 22 ---------------------- src/main/java/me/melontini/commander/impl/expression/functions/StringFormatFunction.java | 20 ++++++++++++++++++++ src/main/java/me/melontini/commander/impl/expression/functions/math/ClampFunction.java | 23 +++++++++++++++++++++++ src/main/java/me/melontini/commander/impl/expression/functions/math/LerpFunction.java | 23 +++++++++++++++++++++++ src/main/java/me/melontini/commander/impl/expression/functions/math/RangedRandomFunction.java | 22 ++++++++++++++++++++++ 8 file(s) changed, 93 insertion(s)(+), 68 deletion(s)(-) diff --git a/src/main/java/me/melontini/commander/impl/expression/EvalUtils.java b/src/main/java/me/melontini/commander/impl/expression/EvalUtils.java --- a/src/main/java/me/melontini/commander/impl/expression/EvalUtils.java +++ b/src/main/java/me/melontini/commander/impl/expression/EvalUtils.java @@ -18,6 +18,9 @@ import me.melontini.commander.impl.expression.extensions.ReflectiveValueConverter; import me.melontini.commander.impl.expression.functions.*; import me.melontini.commander.impl.expression.functions.arrays.*; +import me.melontini.commander.impl.expression.functions.math.ClampFunction; +import me.melontini.commander.impl.expression.functions.math.LerpFunction; +import me.melontini.commander.impl.expression.functions.math.RangedRandomFunction; import me.melontini.commander.impl.mixin.evalex.EvaluationValueAccessor; import me.melontini.commander.impl.mixin.evalex.ExpressionAccessor; import me.melontini.commander.impl.mixin.evalex.ExpressionConfigurationAccessor; @@ -63,6 +66,8 @@ functions.put("arrayAnyMatch", new ArrayAnyMatch()); functions.put("arrayNoneMatch", new ArrayNoneMatch()); functions.put("arrayAllMatch", new ArrayAllMatch()); + + functions.put("strFormat", new StringFormatFunction()); functions.put("structContainsKey", new StructContainsKeyFunction()); functions.put("hasContext", new HasContextFunction()); diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/ClampFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/ClampFunction.java deleted file mode 100644 --- a/src/main/java/me/melontini/commander/impl/expression/functions/ClampFunction.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.melontini.commander.impl.expression.functions; - -import com.ezylang.evalex.EvaluationException; -import com.ezylang.evalex.Expression; -import com.ezylang.evalex.data.EvaluationValue; -import com.ezylang.evalex.functions.AbstractFunction; -import com.ezylang.evalex.functions.FunctionParameter; -import com.ezylang.evalex.parser.Token; - -import java.math.BigDecimal; - -@FunctionParameter(name = "value") -@FunctionParameter(name = "min") -@FunctionParameter(name = "max") -public class ClampFunction extends AbstractFunction { - @Override - public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { - BigDecimal value = par[0].getNumberValue(); - BigDecimal min = par[1].getNumberValue(); - BigDecimal max = par[2].getNumberValue(); - return EvaluationValue.numberValue(value.compareTo(min) < 0 ? min : value.min(max)); - } -} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/LerpFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/LerpFunction.java deleted file mode 100644 --- a/src/main/java/me/melontini/commander/impl/expression/functions/LerpFunction.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.melontini.commander.impl.expression.functions; - -import com.ezylang.evalex.EvaluationException; -import com.ezylang.evalex.Expression; -import com.ezylang.evalex.data.EvaluationValue; -import com.ezylang.evalex.functions.AbstractFunction; -import com.ezylang.evalex.functions.FunctionParameter; -import com.ezylang.evalex.parser.Token; - -import java.math.BigDecimal; - -@FunctionParameter(name = "delta") -@FunctionParameter(name = "start") -@FunctionParameter(name = "end") -public class LerpFunction extends AbstractFunction { - @Override - public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { - BigDecimal start = par[0].getNumberValue(); - BigDecimal delta = par[1].getNumberValue(); - BigDecimal end = par[2].getNumberValue(); - return EvaluationValue.numberValue(start.add(delta.multiply(end.subtract(start)))); - } -} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/RangedRandomFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/RangedRandomFunction.java deleted file mode 100644 --- a/src/main/java/me/melontini/commander/impl/expression/functions/RangedRandomFunction.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.melontini.commander.impl.expression.functions; - -import com.ezylang.evalex.EvaluationException; -import com.ezylang.evalex.Expression; -import com.ezylang.evalex.data.EvaluationValue; -import com.ezylang.evalex.functions.AbstractFunction; -import com.ezylang.evalex.functions.FunctionParameter; -import com.ezylang.evalex.parser.Token; -import me.melontini.dark_matter.api.base.util.MathUtil; - -import java.math.BigDecimal; - -@FunctionParameter(name = "min") -@FunctionParameter(name = "max") -public class RangedRandomFunction extends AbstractFunction { - @Override - public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { - BigDecimal min = par[0].getNumberValue(); - BigDecimal max = par[1].getNumberValue(); - return expression.convertValue(min.compareTo(max) >= 0 ? min : BigDecimal.valueOf(MathUtil.threadRandom().nextDouble()).multiply(max.subtract(min)).add(min)); - } -} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/StringFormatFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/StringFormatFunction.java new file mode 100644 --- /dev/null +++ b/src/main/java/me/melontini/commander/impl/expression/functions/StringFormatFunction.java @@ -0,0 +1,20 @@ +package me.melontini.commander.impl.expression.functions; + +import com.ezylang.evalex.EvaluationException; +import com.ezylang.evalex.Expression; +import com.ezylang.evalex.data.EvaluationValue; +import com.ezylang.evalex.functions.AbstractFunction; +import com.ezylang.evalex.functions.FunctionParameter; +import com.ezylang.evalex.parser.Token; + +import java.util.Arrays; + +@FunctionParameter(name = "pattern") +@FunctionParameter(name = "args", isVarArg = true) +public class StringFormatFunction extends AbstractFunction { + @Override + public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { + if (par.length == 1) return EvaluationValue.stringValue(String.format(par[0].getStringValue())); + return EvaluationValue.stringValue(String.format(par[0].getStringValue(), Arrays.stream(Arrays.copyOfRange(par, 1, par.length)).map(EvaluationValue::getValue).toArray())); + } +} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/math/ClampFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/math/ClampFunction.java new file mode 100644 --- /dev/null +++ b/src/main/java/me/melontini/commander/impl/expression/functions/math/ClampFunction.java @@ -0,0 +1,23 @@ +package me.melontini.commander.impl.expression.functions.math; + +import com.ezylang.evalex.EvaluationException; +import com.ezylang.evalex.Expression; +import com.ezylang.evalex.data.EvaluationValue; +import com.ezylang.evalex.functions.AbstractFunction; +import com.ezylang.evalex.functions.FunctionParameter; +import com.ezylang.evalex.parser.Token; + +import java.math.BigDecimal; + +@FunctionParameter(name = "value") +@FunctionParameter(name = "min") +@FunctionParameter(name = "max") +public class ClampFunction extends AbstractFunction { + @Override + public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { + BigDecimal value = par[0].getNumberValue(); + BigDecimal min = par[1].getNumberValue(); + BigDecimal max = par[2].getNumberValue(); + return EvaluationValue.numberValue(value.compareTo(min) < 0 ? min : value.min(max)); + } +} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/math/LerpFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/math/LerpFunction.java new file mode 100644 --- /dev/null +++ b/src/main/java/me/melontini/commander/impl/expression/functions/math/LerpFunction.java @@ -0,0 +1,23 @@ +package me.melontini.commander.impl.expression.functions.math; + +import com.ezylang.evalex.EvaluationException; +import com.ezylang.evalex.Expression; +import com.ezylang.evalex.data.EvaluationValue; +import com.ezylang.evalex.functions.AbstractFunction; +import com.ezylang.evalex.functions.FunctionParameter; +import com.ezylang.evalex.parser.Token; + +import java.math.BigDecimal; + +@FunctionParameter(name = "delta") +@FunctionParameter(name = "start") +@FunctionParameter(name = "end") +public class LerpFunction extends AbstractFunction { + @Override + public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { + BigDecimal start = par[0].getNumberValue(); + BigDecimal delta = par[1].getNumberValue(); + BigDecimal end = par[2].getNumberValue(); + return EvaluationValue.numberValue(start.add(delta.multiply(end.subtract(start)))); + } +} diff --git a/src/main/java/me/melontini/commander/impl/expression/functions/math/RangedRandomFunction.java b/src/main/java/me/melontini/commander/impl/expression/functions/math/RangedRandomFunction.java new file mode 100644 --- /dev/null +++ b/src/main/java/me/melontini/commander/impl/expression/functions/math/RangedRandomFunction.java @@ -0,0 +1,22 @@ +package me.melontini.commander.impl.expression.functions.math; + +import com.ezylang.evalex.EvaluationException; +import com.ezylang.evalex.Expression; +import com.ezylang.evalex.data.EvaluationValue; +import com.ezylang.evalex.functions.AbstractFunction; +import com.ezylang.evalex.functions.FunctionParameter; +import com.ezylang.evalex.parser.Token; +import me.melontini.dark_matter.api.base.util.MathUtil; + +import java.math.BigDecimal; + +@FunctionParameter(name = "min") +@FunctionParameter(name = "max") +public class RangedRandomFunction extends AbstractFunction { + @Override + public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException { + BigDecimal min = par[0].getNumberValue(); + BigDecimal max = par[1].getNumberValue(); + return expression.convertValue(min.compareTo(max) >= 0 ? min : BigDecimal.valueOf(MathUtil.threadRandom().nextDouble()).multiply(max.subtract(min)).add(min)); + } +} -- tangled.sh