Skip to content
This repository was archived by the owner on Aug 8, 2025. It is now read-only.

Commit 818883a

Browse files
committed
fix script engine
1 parent c329e46 commit 818883a

File tree

5 files changed

+75
-21
lines changed

5 files changed

+75
-21
lines changed

pom.xml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@
7878
</build>
7979

8080
<repositories>
81+
<repository>
82+
<id>central</id>
83+
<url>https://repo1.maven.org/maven2/</url>
84+
</repository>
8185
<repository>
8286
<id>AlessioDP</id>
8387
<url>https://repo.alessiodp.com/releases/</url>
@@ -94,10 +98,6 @@
9498
<id>codemc-repo</id>
9599
<url>https://repo.codemc.org/repository/maven-public/</url>
96100
</repository>
97-
<repository>
98-
<id>central</id>
99-
<url>https://repo1.maven.org/maven2/</url>
100-
</repository>
101101
<repository>
102102
<id>placeholderapi</id>
103103
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
@@ -118,17 +118,19 @@
118118
<artifactId>libby-bukkit</artifactId>
119119
<version>1.3.1</version>
120120
</dependency>
121+
121122
<dependency>
122123
<groupId>org.graalvm.js</groupId>
123124
<artifactId>js-scriptengine</artifactId>
124-
<version>24.0.2</version>
125+
<version>24.1.2</version>
125126
<scope>provided</scope>
126127
</dependency>
127128
<dependency>
128129
<groupId>org.graalvm.js</groupId>
129130
<artifactId>js</artifactId>
130-
<version>23.0.5</version>
131+
<version>24.1.2</version>
131132
<scope>provided</scope>
133+
<type>pom</type>
132134
</dependency>
133135

134136
<dependency>

src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/ProjectAddonManager.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,18 @@ public void setup(Plugin inst) {
108108
continue;
109109
}
110110

111-
ProjectAddonLoader loader = new ProjectAddonLoader(folder, projectIds);
112-
ProjectAddon addon = loader.load();
113-
if (addon != null) {
114-
projectAddons.put(addon.getAddonId(), addon);
111+
try {
112+
ProjectAddonLoader loader = new ProjectAddonLoader(folder, projectIds);
113+
ProjectAddon addon = loader.load();
114+
if (addon != null) {
115+
projectAddons.put(addon.getAddonId(), addon);
116+
}
117+
} catch (Exception e) {
118+
if (folder.isFile()) {
119+
ExceptionHandler.handleError(folder.getName() + " 不是文件夹!无法加载此附属!");
120+
continue;
121+
}
122+
e.printStackTrace();
115123
}
116124
}
117125
}

src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/RykenSlimefunCustomizer.java

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,29 @@ public String getBugTrackerURL() {
8585
}
8686

8787
private void setupLibraries() {
88-
String graalVersion = "24.0.2";
88+
String graalVersion = "24.1.2";
8989
BukkitLibraryManager libraryManager = new BukkitLibraryManager(this);
9090

9191
for (String repo : getConfig().getStringList("repositories")) {
9292
libraryManager.addRepository(repo);
9393
}
9494

95+
libraryManager.addMavenCentral();
96+
9597
Library byteBuddy = Library.builder()
9698
.groupId("net{}bytebuddy")
9799
.artifactId("byte-buddy")
98100
.version("1.14.18")
99101
.build();
100102
Library graalJS = Library.builder()
101103
.groupId("org{}graalvm{}js")
102-
.artifactId("js")
103-
.version("23.0.5")
104+
.artifactId("js-language")
105+
.version(graalVersion)
106+
.build();
107+
Library shadowedIcu4j = Library.builder()
108+
.groupId("org{}graalvm{}shadowed")
109+
.artifactId("icu4j")
110+
.version(graalVersion)
104111
.build();
105112
Library graalJSEngine = Library.builder()
106113
.groupId("org{}graalvm{}js")
@@ -112,6 +119,21 @@ private void setupLibraries() {
112119
.artifactId("truffle-api")
113120
.version(graalVersion)
114121
.build();
122+
Library truffleCompiler = Library.builder()
123+
.groupId("org{}graalvm{}truffle")
124+
.artifactId("truffle-compiler")
125+
.version(graalVersion)
126+
.build();
127+
Library truffleEnterprise = Library.builder()
128+
.groupId("org{}graalvm{}truffle")
129+
.artifactId("truffle-enterprise")
130+
.version(graalVersion)
131+
.build();
132+
Library truffleRuntime = Library.builder()
133+
.groupId("org{}graalvm{}truffle")
134+
.artifactId("truffle-runtime")
135+
.version(graalVersion)
136+
.build();
115137
Library polyglot = Library.builder()
116138
.groupId("org.graalvm.polyglot")
117139
.artifactId("polyglot")
@@ -132,10 +154,20 @@ private void setupLibraries() {
132154
.artifactId("word")
133155
.version(graalVersion)
134156
.build();
135-
Library icu4j = Library.builder()
136-
.groupId("com{}ibm{}icu")
137-
.artifactId("icu4j")
138-
.version("75.1")
157+
Library graalSdkNativeBridge = Library.builder()
158+
.groupId("org{}graalvm{}sdk")
159+
.artifactId("nativebridge")
160+
.version(graalVersion)
161+
.build();
162+
Library graalJniUtils = Library.builder()
163+
.groupId("org{}graalvm{}sdk")
164+
.artifactId("jniutils")
165+
.version(graalVersion)
166+
.build();
167+
Library graalRegex = Library.builder()
168+
.groupId("org{}graalvm{}regex")
169+
.artifactId("regex")
170+
.version(graalVersion)
139171
.build();
140172

141173
libraryManager.loadLibrary(byteBuddy);
@@ -146,7 +178,13 @@ private void setupLibraries() {
146178
libraryManager.loadLibrary(graalSdkCollections);
147179
libraryManager.loadLibrary(graalSdkNativeImage);
148180
libraryManager.loadLibrary(graalSdkWord);
149-
libraryManager.loadLibrary(icu4j);
181+
libraryManager.loadLibrary(shadowedIcu4j);
182+
libraryManager.loadLibrary(graalSdkNativeBridge);
183+
libraryManager.loadLibrary(graalJniUtils);
184+
libraryManager.loadLibrary(graalRegex);
185+
libraryManager.loadLibrary(truffleCompiler);
186+
libraryManager.loadLibrary(truffleEnterprise);
187+
libraryManager.loadLibrary(truffleRuntime);
150188
}
151189

152190
public static boolean allowUpdate(String prjId) {

src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/bulit_in/JavaScriptEval.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javax.script.ScriptException;
2323
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
2424
import org.graalvm.polyglot.Context;
25+
import org.graalvm.polyglot.Engine;
2526
import org.graalvm.polyglot.PolyglotAccess;
2627
import org.graalvm.polyglot.io.IOAccess;
2728
import org.jetbrains.annotations.NotNull;
@@ -142,19 +143,21 @@ public Object evalFunction(String funName, Object... args) {
142143

143144
private void reSetup() {
144145
jsEngine = GraalJSScriptEngine.create(
145-
null,
146+
Engine.newBuilder("js")
147+
.allowExperimentalOptions(true)
148+
.build(),
146149
Context.newBuilder("js")
150+
.hostClassLoader(RykenSlimefunCustomizer.class.getClassLoader())
147151
.allowAllAccess(true)
148152
.allowHostAccess(UNIVERSAL_HOST_ACCESS)
149153
.allowNativeAccess(false)
150154
.allowExperimentalOptions(true)
151155
.allowPolyglotAccess(PolyglotAccess.ALL)
152156
.allowCreateProcess(true)
153157
.allowValueSharing(true)
154-
.allowHostClassLoading(true)
155158
.allowIO(IOAccess.ALL)
156159
.allowHostClassLookup(s -> true)
157-
.hostClassLoader(ClassLoader.getSystemClassLoader()));
160+
.allowHostClassLoading(true));
158161

159162
advancedSetup();
160163
}

src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/script/ScriptEval.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ protected final void setup() {
181181
t);
182182
return task.get();
183183
});
184+
/*
184185
addThing("runAsync", (Function<Function<Object[], ?>, BukkitTask>) r -> {
185186
AtomicReference<BukkitTask> task = new AtomicReference<>();
186187
Bukkit.getScheduler().runTaskAsynchronously(RykenSlimefunCustomizer.INSTANCE, t -> {
@@ -215,6 +216,8 @@ protected final void setup() {
215216
return task.get();
216217
});
217218
219+
*/
220+
218221
addThing("getAddonConfig", (Supplier<YamlConfiguration>) () -> {
219222
if (addon.getConfig() == null) {
220223
throw new RuntimeException("The addon does not have a config file!");

0 commit comments

Comments
 (0)