|
33 | 33 | import java.util.Collections; |
34 | 34 | import java.util.HashMap; |
35 | 35 | import java.util.HashSet; |
| 36 | +import java.util.Iterator; |
36 | 37 | import java.util.List; |
37 | 38 | import java.util.Set; |
38 | 39 | import java.util.regex.Pattern; |
|
44 | 45 |
|
45 | 46 | import ch.njol.skript.Skript; |
46 | 47 | import ch.njol.skript.SkriptAPIException; |
| 48 | +import ch.njol.skript.SkriptConfig; |
47 | 49 | import ch.njol.skript.classes.ClassInfo; |
48 | 50 | import ch.njol.skript.classes.Converter; |
49 | 51 | import ch.njol.skript.classes.Converter.ConverterInfo; |
@@ -126,6 +128,9 @@ public final static void onRegistrationsStop() { |
126 | 128 | private final static void sortClassInfos() { |
127 | 129 | assert classInfos == null; |
128 | 130 |
|
| 131 | + if (!Skript.testing() && SkriptConfig.addonSafetyChecks.value()) |
| 132 | + removeNullElements(); |
| 133 | + |
129 | 134 | // merge before, after & sub/supertypes in after |
130 | 135 | for (final ClassInfo<?> ci : tempClassInfos) { |
131 | 136 | final Set<String> before = ci.before(); |
@@ -215,6 +220,16 @@ private final static void sortClassInfos() { |
215 | 220 |
|
216 | 221 | } |
217 | 222 |
|
| 223 | + @SuppressWarnings({"null", "unused"}) |
| 224 | + private final static void removeNullElements() { |
| 225 | + Iterator<ClassInfo<?>> it = tempClassInfos.iterator(); |
| 226 | + while (it.hasNext()) { |
| 227 | + ClassInfo<?> ci = it.next(); |
| 228 | + if (ci.getC() == null) |
| 229 | + it.remove(); |
| 230 | + } |
| 231 | + } |
| 232 | + |
218 | 233 | private final static void checkAllowClassInfoInteraction() { |
219 | 234 | if (Skript.isAcceptRegistrations()) |
220 | 235 | throw new IllegalStateException("Cannot use classinfos until registration is over"); |
|
0 commit comments