From fd06ebb9dc06b11ade3ab855f5a331ae89104ec7 Mon Sep 17 00:00:00 2001 From: Ashton Storks Date: Wed, 26 Feb 2020 10:51:04 -0700 Subject: [PATCH 1/9] Bumped version to v1.2.2 Added ScriptablePluginEngine.getPluginInstance() to resolve a scriptable plugin instance. --- .../core/ScriptablePluginEngine.kt | 41 ++++++++++++++++++- .../core/JavaScriptPluginEngine.kt | 32 --------------- .../src/main/resources/plugin.yml | 2 +- .../scriptablemc/core/PythonPluginEngine.kt | 36 ---------------- .../src/main/resources/plugin.yml | 2 +- build.gradle.kts | 2 +- 6 files changed, 43 insertions(+), 72 deletions(-) diff --git a/ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginEngine.kt b/ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginEngine.kt index 9c8ea70e..5396643d 100644 --- a/ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginEngine.kt +++ b/ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginEngine.kt @@ -104,6 +104,14 @@ abstract class ScriptablePluginEngine { } } + open fun getPluginInstance(name: String): Value? { + return getPluginInstance(scriptablePlugins.firstOrNull { it.pluginName == name }) + } + + open fun getPluginInstance(pluginContext: ScriptablePluginContext?): Value? { + return pluginContext?.pluginInstance + } + open fun eval(source: Source): Value { return graalContext.eval(source) } @@ -173,7 +181,38 @@ abstract class ScriptablePluginEngine { ) } - abstract fun loadMainScript(path: String) + open fun loadMainScript(path: String) { + try { + val mainScriptFile = File(path) + if(!mainScriptFile.parentFile.exists()) { + mainScriptFile.parentFile.mkdirs() + } + + if(mainScriptFile.exists()) { + val mainReturn = eval( + Source.newBuilder(languageName, mainScriptFile) + .name(mainScriptFile.name) + .mimeType(config.scriptMimeType) + .interactive(false) + .build() + ) + + // Load all plugin types returned as an array + if(mainReturn.hasArrayElements()) { + for (i in 0 until mainReturn.arraySize) { + this.loadPlugin(mainReturn.getArrayElement(i)) + } + } + } + else { + throw ScriptNotFoundException(mainScriptFile) + } + } + catch(ex: Exception) { + startupErrors.add(ex) + } + } + abstract fun loadPlugin(scriptableClass: Value): ScriptablePluginContext companion object { diff --git a/ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginEngine.kt b/ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginEngine.kt index 3baf2458..6586dfeb 100644 --- a/ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginEngine.kt +++ b/ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginEngine.kt @@ -92,38 +92,6 @@ class JavaScriptPluginEngine(override val bootstrapPlugin: ScriptEngineMain, ove globalBindings = graalContext.getBindings(languageName) } - override fun loadMainScript(path: String) { - try { - val mainScriptFile = File(path) - if(!mainScriptFile.parentFile.exists()) { - mainScriptFile.parentFile.mkdirs() - } - - if(mainScriptFile.exists()) { - val mainReturn = eval( - Source.newBuilder(languageName, mainScriptFile) - .name(mainScriptFile.name) - .mimeType(config.scriptMimeType) - .interactive(false) - .build() - ) - - // Load all plugin types returned as an array - if(mainReturn.hasArrayElements()) { - for (i in 0 until mainReturn.arraySize) { - this.loadPlugin(mainReturn.getArrayElement(i)) - } - } - } - else { - throw ScriptNotFoundException(mainScriptFile) - } - } - catch(ex: Exception) { - startupErrors.add(ex) - } - } - override fun start() { instance = this super.start() diff --git a/ScriptableMC-Engine-JS/src/main/resources/plugin.yml b/ScriptableMC-Engine-JS/src/main/resources/plugin.yml index 40b1e83a..93f4b655 100644 --- a/ScriptableMC-Engine-JS/src/main/resources/plugin.yml +++ b/ScriptableMC-Engine-JS/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ScriptableMC-Engine-JS description: 'Run JavaScript/TypeScript plugins for Bukkit/Spigot/Paper Minecraft 1.15' -version: '1.2.1' +version: '1.2.2' api-version: '1.13' author: AStorks main: com.pixlfox.scriptablemc.SMCJavaScriptEngineMain diff --git a/ScriptableMC-Engine-PY/src/main/kotlin/com/pixlfox/scriptablemc/core/PythonPluginEngine.kt b/ScriptableMC-Engine-PY/src/main/kotlin/com/pixlfox/scriptablemc/core/PythonPluginEngine.kt index 22f77fa2..d28554c4 100644 --- a/ScriptableMC-Engine-PY/src/main/kotlin/com/pixlfox/scriptablemc/core/PythonPluginEngine.kt +++ b/ScriptableMC-Engine-PY/src/main/kotlin/com/pixlfox/scriptablemc/core/PythonPluginEngine.kt @@ -2,7 +2,6 @@ package com.pixlfox.scriptablemc.core import com.pixlfox.scriptablemc.SMCPythonConfig import com.pixlfox.scriptablemc.ScriptEngineMain -import com.smc.exceptions.ScriptNotFoundException import com.pixlfox.scriptablemc.utils.UnzipUtility import fr.minuskube.inv.InventoryManager import org.graalvm.polyglot.* @@ -53,41 +52,6 @@ class PythonPluginEngine(override val bootstrapPlugin: ScriptEngineMain, overrid globalBindings = graalContext.getBindings(languageName) } - override fun loadMainScript(path: String) { - try { - val mainScriptFile = File(path) - if(!mainScriptFile.parentFile.exists()) { - mainScriptFile.parentFile.mkdirs() - } - - if(mainScriptFile.exists()) { - val mainReturn = eval( - Source.newBuilder(languageName, mainScriptFile) - .name(mainScriptFile.name) - .interactive(false) - .build() - ) - - // Load all plugin types returned as an array - if(mainReturn.hasArrayElements()) { - for (i in 0 until mainReturn.arraySize) { - this.loadPlugin(mainReturn.getArrayElement(i)) - } - - // Enable all plugins if not already enabled - if(!enabledAllPlugins) { - enableAllPlugins() - } - } - } - else { - throw ScriptNotFoundException(mainScriptFile) - } - } - catch(ex: Exception) { - startupErrors.add(ex) - } - } override fun start() { instance = this diff --git a/ScriptableMC-Engine-PY/src/main/resources/plugin.yml b/ScriptableMC-Engine-PY/src/main/resources/plugin.yml index 59101626..c0e699d5 100644 --- a/ScriptableMC-Engine-PY/src/main/resources/plugin.yml +++ b/ScriptableMC-Engine-PY/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ScriptableMC-Engine-PY description: 'Run Python plugins for Bukkit/Spigot/Paper Minecraft 1.15' -version: '1.2.1' +version: '1.2.2' api-version: '1.13' author: AStorks main: com.pixlfox.scriptablemc.SMCPythonEngineMain diff --git a/build.gradle.kts b/build.gradle.kts index e1c0ce13..7d85fc5d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { allprojects { group = "com.pixlfox.scriptablemc" - version = "1.2.1" + version = "1.2.2" repositories { mavenCentral() From 0ba0a4b5322f55ac9b989cf599e4468916380650 Mon Sep 17 00:00:00 2001 From: Ashton Storks Date: Thu, 27 Feb 2020 13:24:42 -0700 Subject: [PATCH 2/9] Added com.smc.nbtapi library to help with NBT data. Fixed additional List and Collection return types in typescript generation. Updated the typescript library generator. --- .idea/jarRepositories.xml | 5 + README.md | 1 + ScriptableMC-Engine-Core/build.gradle.kts | 1 + .../Bundled/build.gradle.kts | 1 + ScriptableMC-Engine-JS/build.gradle.kts | 2 + .../Bundled/build.gradle.kts | 1 + ScriptableMC-Engine-PY/build.gradle.kts | 2 + ScriptableMC-Tools-TS/build.gradle.kts | 1 + .../scriptablemc/TypescriptLibraryExporter.kt | 211 +++++++++++++----- ScriptableMC-Tools-TS/src/main/ts/JsPlugin.ts | 11 + build.gradle.kts | 4 + 11 files changed, 187 insertions(+), 53 deletions(-) diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index 2eebef07..f0221557 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -61,5 +61,10 @@