Skip to content

Commit 64d3464

Browse files
committed
Fix syntax conflict with MundoSK custom events
1 parent 8d7c635 commit 64d3464

File tree

2 files changed

+16
-34
lines changed

2 files changed

+16
-34
lines changed

src/main/java/com/btk5h/skriptmirror/ParseOrderWorkarounds.java

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import ch.njol.skript.Skript;
44
import ch.njol.skript.effects.EffReturn;
5-
import ch.njol.skript.lang.ExpressionInfo;
6-
import ch.njol.skript.lang.SyntaxElement;
7-
import ch.njol.skript.lang.SyntaxElementInfo;
5+
import ch.njol.skript.lang.*;
6+
import ch.njol.util.Checker;
87
import com.btk5h.skriptmirror.skript.EffExpressionStatement;
98
import com.btk5h.skriptmirror.skript.custom.ExprMatchedPattern;
109
import com.btk5h.skriptmirror.skript.custom.condition.CustomCondition;
@@ -40,39 +39,23 @@ public class ParseOrderWorkarounds {
4039
};
4140

4241
public static void reorderSyntax() {
43-
Arrays.stream(PARSE_ORDER)
44-
.forEach(c -> {
45-
ensureLast(Skript.getStatements(), c);
46-
ensureLast(Skript.getConditions(), c);
47-
ensureLast(Skript.getEffects(), c);
48-
ensureLastExpression(c);
49-
});
42+
for (String c : PARSE_ORDER) {
43+
ensureLast(Skript.getStatements(), o -> o.c.getName().equals(c));
44+
ensureLast(Skript.getConditions(), o -> o.c.getName().equals(c));
45+
ensureLast(Skript.getEffects(), o -> o.c.toString().equals(c));
46+
ensureLast(SkriptReflection.getExpressions(), o -> o.c.getName().equals(c));
47+
ensureLast(Skript.getEvents(), o -> o.c.getName().equals(c));
48+
}
5049
}
5150

52-
private static <E extends SyntaxElement> void ensureLast(Collection<SyntaxElementInfo<? extends E>> elements,
53-
String element) {
54-
Optional<SyntaxElementInfo<? extends E>> optionalElementInfo = elements.stream()
55-
.filter(info -> info.c.getName().equals(element))
51+
private static <E> void ensureLast(Collection<E> elements, Checker<E> checker) {
52+
Optional<E> optionalE = elements.stream()
53+
.filter(checker::check)
5654
.findFirst();
5755

58-
optionalElementInfo.ifPresent(elementInfo -> {
59-
elements.remove(elementInfo);
60-
elements.add(elementInfo);
61-
});
62-
}
63-
64-
private static void ensureLastExpression(String element) {
65-
List<ExpressionInfo<?, ?>> elements = SkriptReflection.getExpressions();
66-
if (elements == null)
67-
return;
68-
69-
Optional<ExpressionInfo<?, ?>> optionalExpressionInfo = elements.stream()
70-
.filter(info -> info.c.getName().equals(element))
71-
.findFirst();
72-
73-
optionalExpressionInfo.ifPresent(elementInfo -> {
74-
elements.remove(elementInfo);
75-
elements.add(elementInfo);
56+
optionalE.ifPresent(value -> {
57+
elements.remove(value);
58+
elements.add(value);
7659
});
7760
}
7861

src/main/java/com/btk5h/skriptmirror/util/SkriptReflection.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,9 +380,8 @@ public static SkriptParser.ParseResult parse_i(SkriptParser skriptParser, String
380380
try {
381381
return (List<ExpressionInfo<?, ?>>) EXPRESSIONS.get(null);
382382
} catch (IllegalAccessException e) {
383-
e.printStackTrace();
383+
throw new RuntimeException(e);
384384
}
385-
return null;
386385
}
387386

388387
}

0 commit comments

Comments
 (0)