Skip to content

Commit ae3fd5b

Browse files
committed
Add optional safety checks for addons
1 parent 9df5233 commit ae3fd5b

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>ch.njol</groupId>
44
<artifactId>skript</artifactId>
5-
<version>2.2-dev13b</version>
5+
<version>2.2-dev13c</version>
66
<name>Skript</name>
77
<description>A plugin for the Minecraft server API Bukkit that allows to create scripts in natural language.</description>
88
<url>http://njol.ch/projects/skript/</url>

src/main/java/ch/njol/skript/SkriptConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ public EventPriority convert(final String s) {
163163
public final static Option<Boolean> keepConfigsLoaded = new Option<Boolean>("keep configs loaded", false)
164164
.optional(true);
165165

166+
public final static Option<Boolean> addonSafetyChecks = new Option<Boolean>("addon safety checks", false)
167+
.optional(true);
168+
166169
/**
167170
* This should only be used in special cases
168171
*/

src/main/java/ch/njol/skript/registrations/Classes.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.Collections;
3434
import java.util.HashMap;
3535
import java.util.HashSet;
36+
import java.util.Iterator;
3637
import java.util.List;
3738
import java.util.Set;
3839
import java.util.regex.Pattern;
@@ -44,6 +45,7 @@
4445

4546
import ch.njol.skript.Skript;
4647
import ch.njol.skript.SkriptAPIException;
48+
import ch.njol.skript.SkriptConfig;
4749
import ch.njol.skript.classes.ClassInfo;
4850
import ch.njol.skript.classes.Converter;
4951
import ch.njol.skript.classes.Converter.ConverterInfo;
@@ -126,6 +128,9 @@ public final static void onRegistrationsStop() {
126128
private final static void sortClassInfos() {
127129
assert classInfos == null;
128130

131+
if (!Skript.testing() && SkriptConfig.addonSafetyChecks.value())
132+
removeNullElements();
133+
129134
// merge before, after & sub/supertypes in after
130135
for (final ClassInfo<?> ci : tempClassInfos) {
131136
final Set<String> before = ci.before();
@@ -215,6 +220,16 @@ private final static void sortClassInfos() {
215220

216221
}
217222

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+
218233
private final static void checkAllowClassInfoInteraction() {
219234
if (Skript.isAcceptRegistrations())
220235
throw new IllegalStateException("Cannot use classinfos until registration is over");

0 commit comments

Comments
 (0)