Skip to content

Commit 55466af

Browse files
committed
Merge remote-tracking branch 'origin/master-1.20-lts' into master-1.21
2 parents 49cd473 + 1c95c32 commit 55466af

File tree

4 files changed

+39
-12
lines changed

4 files changed

+39
-12
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
As always, don't forget to backup your world before updating!
2+
Requires CyclopsCore version 1.19.0 or higher.
3+
4+
Changes:
5+
* Cache scripts to improve performance
6+
Required for CyclopsMC/IntegratedDynamics#1439
7+
8+
Fixes:
9+
* Fix variable card writing failing when reselecting text, Closes #25
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
As always, don't forget to backup your world before updating!
2+
Requires CyclopsCore version 1.19.0 or higher.
3+
4+
Changes:
5+
* Cache scripts to improve performance
6+
Required for CyclopsMC/IntegratedDynamics#1439
7+
8+
Fixes:
9+
* Fix variable card writing failing when reselecting text, Closes #25
10+
11+

src/main/java/org/cyclops/integratedscripting/core/network/ScriptingNetwork.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.common.collect.Maps;
44
import com.google.common.collect.Sets;
55
import net.minecraft.network.chat.Component;
6+
import org.apache.commons.lang3.tuple.Pair;
67
import org.apache.commons.lang3.tuple.Triple;
78
import org.cyclops.integrateddynamics.api.evaluate.EvaluationException;
89
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
@@ -26,6 +27,7 @@
2627
public class ScriptingNetwork implements IScriptingNetwork {
2728

2829
private final Set<Integer> disks = Sets.newHashSet();
30+
private final Map<Pair<Integer, Path>, IScript> scriptCache = Maps.newHashMap();
2931
private final Map<Triple<Integer, Path, String>, ScriptVariable> variableCache = Maps.newHashMap();
3032

3133
@Override
@@ -46,12 +48,21 @@ public Set<Integer> getDisks() {
4648
@Nullable
4749
@Override
4850
public IScript getScript(int disk, Path path) throws EvaluationException {
49-
ILanguageHandler languageHandler = LanguageHandlers.REGISTRY.getProvider(path);
50-
if (languageHandler == null) {
51-
throw new EvaluationException(Component.translatable("script.integratedscripting.error.unsupported_language", path.toString()));
51+
Pair<Integer, Path> cacheKey = Pair.of(disk, path);
52+
IScript script = scriptCache.get(cacheKey);
53+
if (script == null) {
54+
ILanguageHandler languageHandler = LanguageHandlers.REGISTRY.getProvider(path);
55+
if (languageHandler == null) {
56+
throw new EvaluationException(Component.translatable("script.integratedscripting.error.unsupported_language", path.toString()));
57+
}
58+
IScriptFactory scriptFactory = languageHandler.getScriptFactory();
59+
script = scriptFactory.getScript(disk, path);
60+
if (script != null) {
61+
script.addInvalidationListener(() -> scriptCache.remove(cacheKey));
62+
scriptCache.put(cacheKey, script);
63+
}
5264
}
53-
IScriptFactory scriptFactory = languageHandler.getScriptFactory();
54-
return scriptFactory.getScript(disk, path);
65+
return script;
5566
}
5667

5768
@Override

src/main/java/org/cyclops/integratedscripting/inventory/container/ContainerTerminalScripting.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,7 @@
4545

4646
import javax.annotation.Nullable;
4747
import java.nio.file.Path;
48-
import java.util.List;
49-
import java.util.Map;
50-
import java.util.Objects;
51-
import java.util.Optional;
52-
import java.util.Set;
48+
import java.util.*;
5349
import java.util.regex.Pattern;
5450

5551
/**
@@ -375,8 +371,8 @@ public IScriptVariableFacade create(int id) {
375371
}
376372

377373
@Override
378-
public void setValue(int valueId, CompoundTag value) {
379-
super.setValue(valueId, value);
374+
public void onUpdate(int valueId, CompoundTag value) {
375+
super.onUpdate(valueId, value);
380376

381377
// Potentially trigger a variable write when a new member was selected
382378
if (valueId == selectionId) {

0 commit comments

Comments
 (0)