Skip to content

Commit 87b667c

Browse files
committed
patches from @ediloren for GraalVM 21.2.0 + SpigotMC 1.17.1
from walterhiggins#459
1 parent eaf4e68 commit 87b667c

File tree

5 files changed

+26
-10
lines changed

5 files changed

+26
-10
lines changed

build.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363

6464
<target name="compile-plugins" depends="init" description="compile canary plugin source">
6565
<javac includeantruntime="false"
66-
source="1.6"
67-
target="1.6"
66+
source="1.9"
67+
target="1.9"
6868
destdir="${build}"
6969
debug="true">
7070
<src path="${src.canary}"/>

src/docs/java/jscript.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ public static void main(String[] args) throws Exception
88
{
99
ScriptEngineManager factory = new ScriptEngineManager();
1010
ScriptEngine engine = factory.getEngineByName("JavaScript");
11+
12+
// https://docs.oracle.com/en/graalvm/enterprise/21/docs/reference-manual/js/ScriptEngine/
13+
Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
14+
bindings.put("polyglot.js.allowAllAccess", true);
15+
bindings.put("polyglot.js.nashorn-compat", true);
16+
1117
java.io.File file = new java.io.File(args[0]);
1218
engine.put("engine",engine);
1319
engine.put("args",args);

src/main/java/bukkit/org/scriptcraftjs/bukkit/ScriptCraftPlugin.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import org.bukkit.command.CommandSender;
55
import org.bukkit.plugin.java.JavaPlugin;
66

7+
import javax.script.Bindings;
78
import javax.script.Invocable;
9+
import javax.script.ScriptContext;
810
import javax.script.ScriptEngine;
911
import javax.script.ScriptEngineManager;
1012
import java.io.InputStreamReader;
@@ -32,6 +34,11 @@ public class ScriptCraftPlugin extends JavaPlugin
3234
if (this.engine == null) {
3335
this.getLogger().severe(NO_JAVASCRIPT_MESSAGE);
3436
} else {
37+
// https://docs.oracle.com/en/graalvm/enterprise/21/docs/reference-manual/js/ScriptEngine/
38+
Bindings bindings = this.engine.getBindings(ScriptContext.ENGINE_SCOPE);
39+
bindings.put("polyglot.js.allowAllAccess", true);
40+
bindings.put("polyglot.js.nashorn-compat", true);
41+
3542
Invocable inv = (Invocable) this.engine;
3643
this.engine.eval(new InputStreamReader(this.getResource("boot.js")));
3744
inv.invokeFunction("__scboot", this, engine);

src/main/js/lib/task-bukkit.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@
22
/*global __plugin, module, server*/
33
function bukkitSetTimeout(callback, delayInMillis) {
44
var delay = Math.ceil(delayInMillis / 50);
5-
var task = server.scheduler[
6-
'runTaskLater(org.bukkit.plugin.Plugin, java.lang.Runnable ,long)'
7-
](__plugin, callback, delay);
5+
// https://github.com/walterhiggins/ScriptCraft/issues/396
6+
var Run = Java.type('java.lang.Runnable');
7+
var MyRun = Java.extend(Run, { run: callback });
8+
var task = server.scheduler.runTaskLater(__plugin, new MyRun(), delay);
89
return task;
910
}
1011
function bukkitClearTimeout(task) {
1112
task.cancel();
1213
}
1314
function bukkitSetInterval(callback, intervalInMillis) {
1415
var delay = Math.ceil(intervalInMillis / 50);
15-
var task = server.scheduler[
16-
'runTaskTimer(org.bukkit.plugin.Plugin, java.lang.Runnable ,long, long)'
17-
](__plugin, callback, delay, delay);
16+
// https://github.com/walterhiggins/ScriptCraft/issues/396
17+
var Run = Java.type('java.lang.Runnable');
18+
var MyRun = Java.extend(Run, { run: callback });
19+
var task = server.scheduler.runTaskTimer(__plugin, new MyRun(), delay, delay);
1820
return task;
1921
}
2022
function bukkitClearInterval(bukkitTask) {

src/main/js/modules/drone/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,8 @@ function makeTypeIdAndDataSetter() {
346346
};
347347
} else {
348348
try {
349-
var CraftEvil = Java.type(server.class.package.name + '.util.CraftEvil');
349+
// https://github.com/walterhiggins/ScriptCraft/issues/447
350+
var CraftEvil = Java.type(server.class.package.name + '.legacy.CraftEvil');
350351
console.log('Drone using CraftEvil.setTypeIdAndData method');
351352
return function(block, typeId, data, applyPhysics) {
352353
CraftEvil.setTypeIdAndData(block, typeId, data, applyPhysics);
@@ -386,7 +387,7 @@ function putBlock(x, y, z, blockId, metadata, world, update) {
386387
}
387388
}
388389
if (__plugin.bukkit) {
389-
setTypeIdAndData(block, blockId, metadata, update);
390+
setTypeIdAndData(block, blockId, metadata, !!update);
390391
}
391392
return block;
392393
}

0 commit comments

Comments
 (0)