From d0d93810450f50d14d93b77d3bf7cef646592bda Mon Sep 17 00:00:00 2001 From: sovdee <10354869+sovdeeth@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:28:36 -0400 Subject: [PATCH] Deprecate ExprRawExpression pattern and add new ones, plus cleanup. --- .../skript/custom/ExprRawExpression.java | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java b/src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java index 5dd0117..456ef24 100644 --- a/src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java +++ b/src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java @@ -1,10 +1,10 @@ package com.btk5h.skriptmirror.skript.custom; import ch.njol.skript.Skript; -import ch.njol.skript.classes.Changer; +import ch.njol.skript.classes.Changer.ChangeMode; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.ExpressionType; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import com.btk5h.skriptmirror.WrappedEvent; @@ -15,16 +15,27 @@ public class ExprRawExpression extends SimpleExpression { static { Skript.registerExpression(ExprRawExpression.class, Expression.class, ExpressionType.COMBINED, + "[the] (raw|underlying) expression[s] of %objects%", + "%objects%'[s] (raw|underlying) expression[s]", "[the] raw [expression] %objects%"); } private Expression expr; @Override - protected Expression[] get(Event e) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + if (matchedPattern == 2) + Skript.warning("Using 'raw %objects%' is deprecated, please use 'the (raw|underlying) expression of %objects%' instead. " + + "If you meant to use Skript's 'raw %strings%' expression, try 'raw string within %objects%'."); + expr = SkriptUtil.defendExpression(exprs[0]); + return SkriptUtil.canInitSafely(expr); + } + + @Override + protected Expression[] get(Event event) { Expression expr = this.expr; - if (expr instanceof ExprExpression && e instanceof CustomSyntaxEvent) { - expr = ((ExprExpression) expr).getExpression(e); + if (expr instanceof ExprExpression exprExpr && event instanceof CustomSyntaxEvent) { + expr = exprExpr.getExpression(event); if (expr == null) return null; expr = expr.getSource(); @@ -33,22 +44,12 @@ protected Expression[] get(Event e) { } @Override - public boolean isSingle() { - return true; - } - - @Override - public Class getReturnType() { - return Expression.class; - } - - @Override - public Class[] acceptChange(Changer.ChangeMode changeMode) { + public Class[] acceptChange(ChangeMode changeMode) { return expr instanceof ExprExpression ? new Class[] {Object[].class} : null; } @Override - public void change(Event event, Object[] delta, Changer.ChangeMode changeMode) { + public void change(Event event, Object[] delta, ChangeMode changeMode) { if (!(expr instanceof ExprExpression && event instanceof CustomSyntaxEvent)) return; @@ -68,14 +69,19 @@ public void change(Event event, Object[] delta, Changer.ChangeMode changeMode) { } @Override - public String toString(Event event, boolean debug) { - return "raw " + expr.toString(event, debug); + public boolean isSingle() { + return true; } @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, - SkriptParser.ParseResult parseResult) { - expr = SkriptUtil.defendExpression(exprs[0]); - return SkriptUtil.canInitSafely(expr); + @SuppressWarnings("rawtypes") + public Class getReturnType() { + return Expression.class; + } + + @Override + public String toString(Event event, boolean debug) { + return "the underlying expression of " + expr.toString(event, debug); } + }