From 5788c27aaa62e692384467ab55b00e36bf466288 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 3 Dec 2019 01:01:18 -0500 Subject: [PATCH] hmmm --- build.gradle | 3 +- core/src/io/anuke/mindustry/mod/Scripts.java | 31 +++++++++-- .../mindustry/desktop/DesktopLauncher.java | 8 +-- .../anuke/mindustry/desktop/GraalScripts.java | 54 ------------------- gradle.properties | 2 +- 5 files changed, 31 insertions(+), 67 deletions(-) delete mode 100644 desktop/src/io/anuke/mindustry/desktop/GraalScripts.java diff --git a/build.gradle b/build.gradle index 5a8f887498..7bb0e486b0 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,6 @@ allprojects{ gdxVersion = '1.9.10' roboVMVersion = '2.3.8' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' - graalVersion = '19.3.0' arcHash = null loadVersionProps = { @@ -155,7 +154,6 @@ project(":desktop"){ compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop" compile "com.github.Anuken:steamworks4j:$steamworksVersion" - compile "org.graalvm.js:js:${graalVersion}" compile arcModule("backends:backend-sdl") compile 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1' @@ -259,6 +257,7 @@ project(":core"){ compile arcModule("arc-core") compile arcModule("extensions:freetype") compile arcModule("extensions:arcnet") + compile "org.mozilla:rhino:1.7.11" if(localArc() && debugged()) compile arcModule("extensions:recorder") compileOnly project(":annotations") diff --git a/core/src/io/anuke/mindustry/mod/Scripts.java b/core/src/io/anuke/mindustry/mod/Scripts.java index 007e0ae75a..d5be037ede 100644 --- a/core/src/io/anuke/mindustry/mod/Scripts.java +++ b/core/src/io/anuke/mindustry/mod/Scripts.java @@ -1,16 +1,41 @@ package io.anuke.mindustry.mod; +import io.anuke.arc.*; import io.anuke.arc.files.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.*; import io.anuke.mindustry.mod.Mods.*; +import org.mozilla.javascript.*; + +import java.io.*; public class Scripts{ + private static final Class[] denied = {FileHandle.class, InputStream.class, File.class, Scripts.class, Files.class, ClassAccess.class}; + private final Context context; + private final String wrapper; + private Context console; + private Scriptable scope; + + public Scripts(){ + Time.mark(); + + context = Context.enter(); + if(Vars.mobile){ + context.setOptimizationLevel(-1); + } + + scope = context.initStandardObjects(); + wrapper = Core.files.internal("scripts/wrapper.js").readString(); + + run(wrapper); + Log.info("Time to load script engine: {0}", Time.elapsed()); + } public void run(LoadedMod mod, FileHandle file){ - Log.info("Skipping {0} (no scripting implenmentation)", file); + run(wrapper.replace("$SCRIPT_NAME$", mod.name + "_" +file.nameWithoutExtension().replace("-", "_").replace(" ", "_")).replace("$CODE$", file.readString())); } - public String runConsole(String text){ - return "No scripting engine available."; + private void run(String script){ + Log.info(context.evaluateString(scope, script, "???", 0, null)); } } diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index fb4269f092..eb216b724e 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -19,10 +19,9 @@ import io.anuke.arc.util.io.*; import io.anuke.arc.util.serialization.*; import io.anuke.mindustry.*; import io.anuke.mindustry.core.GameState.*; -import io.anuke.mindustry.core.Version; +import io.anuke.mindustry.core.*; import io.anuke.mindustry.desktop.steam.*; import io.anuke.mindustry.game.EventType.*; -import io.anuke.mindustry.mod.*; import io.anuke.mindustry.mod.Mods.*; import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Net.*; @@ -265,11 +264,6 @@ public class DesktopLauncher extends ClientLauncher{ }); } - @Override - public Scripts createScripts(){ - return new GraalScripts(); - } - @Override public Array getWorkshopContent(Class type){ return !steam ? super.getWorkshopContent(type) : SVars.workshop.getWorkshopFiles(type); diff --git a/desktop/src/io/anuke/mindustry/desktop/GraalScripts.java b/desktop/src/io/anuke/mindustry/desktop/GraalScripts.java deleted file mode 100644 index 842cbbacb9..0000000000 --- a/desktop/src/io/anuke/mindustry/desktop/GraalScripts.java +++ /dev/null @@ -1,54 +0,0 @@ -package io.anuke.mindustry.desktop; - -import io.anuke.arc.*; -import io.anuke.arc.files.*; -import io.anuke.arc.util.*; -import io.anuke.mindustry.mod.*; -import io.anuke.mindustry.mod.Mods.*; -import org.graalvm.polyglot.*; - -import java.io.*; - -public class GraalScripts extends Scripts{ - private static final Class[] denied = {FileHandle.class, InputStream.class, File.class, Scripts.class, Files.class, ClassAccess.class}; - private final Context context; - private final String wrapper; - private final Context.Builder builder; - private Context console; - - public GraalScripts(){ - Time.mark(); - builder = Context.newBuilder("js").allowHostClassLookup(ClassAccess.allowedClassNames::contains); - - HostAccess.Builder hb = HostAccess.newBuilder(); - hb.allowPublicAccess(true); - for(Class c : denied){ - hb.denyAccess(c); - } - builder.allowHostAccess(hb.build()); - builder.allowExperimentalOptions(true); - - context = builder.build(); - wrapper = Core.files.internal("scripts/wrapper.js").readString(); - - run(Core.files.internal("scripts/global.js").readString()); - Log.info("Time to load script engine: {0}", Time.elapsed()); - } - - @Override - public void run(LoadedMod mod, FileHandle file){ - run(wrapper.replace("$SCRIPT_NAME$", mod.name + "_" +file.nameWithoutExtension().replace("-", "_").replace(" ", "_")).replace("$CODE$", file.readString())); - } - - @Override - public String runConsole(String text){ - if(console == null){ - console = builder.build(); - } - return console.eval("js", text).toString(); - } - - private void run(String script){ - context.eval("js", script); - } -} diff --git a/gradle.properties b/gradle.properties index 8b7352fd6a..be214e2f30 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=c7f3d8125c8d13c0a31c5f14fdabdb3d0efbd676 +archash=680d8dfc055a1336c06b32d7d4429661e6c6fddd