Skip to content

Commit 95f2c75

Browse files
authored
Enforce main thread when changing variables during structure loading (#7964)
1 parent 84772b6 commit 95f2c75

File tree

2 files changed

+27
-29
lines changed

2 files changed

+27
-29
lines changed

src/main/java/ch/njol/skript/structures/StructVariables.java

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,5 @@
11
package ch.njol.skript.structures;
22

3-
import java.util.ArrayDeque;
4-
import java.util.ArrayList;
5-
import java.util.Collection;
6-
import java.util.Deque;
7-
import java.util.HashMap;
8-
import java.util.List;
9-
import java.util.Locale;
10-
import java.util.Map;
11-
12-
import com.google.common.collect.Queues;
13-
import org.bukkit.event.Event;
14-
import org.jetbrains.annotations.Nullable;
15-
import org.jetbrains.annotations.Unmodifiable;
16-
import org.skriptlang.skript.lang.converter.Converters;
17-
import org.skriptlang.skript.lang.entry.EntryContainer;
18-
import org.skriptlang.skript.lang.script.Script;
19-
import org.skriptlang.skript.lang.script.ScriptData;
20-
import org.skriptlang.skript.lang.structure.Structure;
21-
22-
import com.google.common.collect.ImmutableList;
23-
243
import ch.njol.skript.Skript;
254
import ch.njol.skript.classes.ClassInfo;
265
import ch.njol.skript.config.EntryNode;
@@ -37,10 +16,23 @@
3716
import ch.njol.skript.log.ParseLogHandler;
3817
import ch.njol.skript.log.SkriptLogger;
3918
import ch.njol.skript.registrations.Classes;
19+
import ch.njol.skript.util.Task;
4020
import ch.njol.skript.variables.Variables;
4121
import ch.njol.util.NonNullPair;
4222
import ch.njol.util.StringUtils;
4323
import ch.njol.util.coll.CollectionUtils;
24+
import com.google.common.collect.ImmutableList;
25+
import com.google.common.collect.Queues;
26+
import org.bukkit.event.Event;
27+
import org.jetbrains.annotations.Nullable;
28+
import org.jetbrains.annotations.Unmodifiable;
29+
import org.skriptlang.skript.lang.converter.Converters;
30+
import org.skriptlang.skript.lang.entry.EntryContainer;
31+
import org.skriptlang.skript.lang.script.Script;
32+
import org.skriptlang.skript.lang.script.ScriptData;
33+
import org.skriptlang.skript.lang.structure.Structure;
34+
35+
import java.util.*;
4436

4537
@Name("Variables")
4638
@Description({
@@ -245,12 +237,15 @@ public boolean load() {
245237
} else if (data.isLoaded()) {
246238
return true;
247239
}
248-
for (NonNullPair<String, Object> pair : data.getVariables()) {
249-
String name = pair.getKey();
250-
if (Variables.getVariable(name, null, false) != null)
251-
continue;
252-
Variables.setVariable(name, pair.getValue(), null, false);
253-
}
240+
Task.callSync(() -> {
241+
for (NonNullPair<String, Object> pair : data.getVariables()) {
242+
String name = pair.getKey();
243+
if (Variables.getVariable(name, null, false) != null)
244+
continue;
245+
Variables.setVariable(name, pair.getValue(), null, false);
246+
}
247+
return null;
248+
});
254249
data.loaded = true;
255250
return true;
256251
}

src/main/java/ch/njol/skript/test/runner/StructParse.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
import ch.njol.skript.lang.Expression;
1313
import ch.njol.skript.lang.Literal;
1414
import ch.njol.skript.lang.SkriptParser.ParseResult;
15-
import ch.njol.skript.lang.parser.ParserInstance;
1615
import ch.njol.skript.lang.util.ContextlessEvent;
1716
import ch.njol.skript.log.LogEntry;
1817
import ch.njol.skript.log.RetainingLogHandler;
1918
import ch.njol.skript.log.SkriptLogger;
19+
import ch.njol.skript.util.Task;
2020
import com.google.common.collect.Iterables;
2121
import org.bukkit.event.Event;
2222
import org.jetbrains.annotations.Nullable;
@@ -78,7 +78,10 @@ public boolean init(Literal<?>[] args, int matchedPattern,
7878

7979
@Override
8080
public boolean postLoad() {
81-
resultsExpression.change(ContextlessEvent.get(), logs, ChangeMode.SET);
81+
Task.callSync(() -> {
82+
resultsExpression.change(ContextlessEvent.get(), logs, ChangeMode.SET);
83+
return null;
84+
});
8285
return true;
8386
}
8487

0 commit comments

Comments
 (0)