Skip to content

Commit da609cc

Browse files
authored
Merge pull request #25 from astorks/dev-1.3.0
Dev -> Master v1.3.0
2 parents bf1b8a4 + 2f8b85f commit da609cc

File tree

21 files changed

+304
-186
lines changed

21 files changed

+304
-186
lines changed

.github/workflows/build-dev.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ jobs:
5252
mkdir artifacts
5353
cp ./build/ScriptableMC-Engine-JS.jar ./artifacts/
5454
cp ./build/ScriptableMC-Engine-JS-Bundled.jar ./artifacts/
55-
cp ./build/ScriptableMC-Engine-PY.jar ./artifacts/
56-
cp ./build/ScriptableMC-Engine-PY-Bundled.jar ./artifacts/
5755
cp ./ScriptableMC-Tools-TS/lib/ScriptableMC-TypeScript-Lib.zip ./artifacts/
5856
cp ./ScriptableMC-Tools-TS/lib/ScriptableMC-JavaScript-Lib.zip ./artifacts/
5957
cp ./ScriptableMC-Tools-TS/lib-smc/Lib-SMC.zip ./artifacts/

.github/workflows/release.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,24 +50,12 @@ jobs:
5050
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5151
with:
5252
args: 'ScriptableMC-Engine-JS/build/libs/ScriptableMC-Engine-JS.jar'
53-
- name: Upload Python Engine Plugin Jar
54-
uses: skx/github-action-publish-binaries@master
55-
env:
56-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57-
with:
58-
args: 'ScriptableMC-Engine-PY/build/libs/ScriptableMC-Engine-PY.jar'
5953
- name: Upload Bundled JavaScript Engine Plugin Jar
6054
uses: skx/github-action-publish-binaries@master
6155
env:
6256
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6357
with:
6458
args: 'ScriptableMC-Engine-JS/Bundled/build/libs/ScriptableMC-Engine-JS-Bundled.jar'
65-
- name: Upload Bundled Python Engine Plugin Jar
66-
uses: skx/github-action-publish-binaries@master
67-
env:
68-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69-
with:
70-
args: 'ScriptableMC-Engine-PY/Bundled/build/libs/ScriptableMC-Engine-PY-Bundled.jar'
7159
- name: Upload TypeScript Libraries
7260
uses: skx/github-action-publish-binaries@master
7361
env:

.idea/jarRepositories.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
![License](https://img.shields.io/github/license/astorks/ScriptableMC-Engine?style=for-the-badge)
66

77
Run JavaScript/TypeScript plugins for Minecraft 1.15 using the GraalJS script engine.<br />
8-
Supported Minecraft Versions: Bukkit/Spigot/Paper 1.12, 1.13, 1.14, **1.15**<br />
8+
Supported Minecraft Versions: Bukkit/Spigot/Paper 1.13, 1.14, 1.15, **1.16**<br />
99
Untested but should work: 1.8+
1010

1111
**This plugin is in a preview state, there may be breaking changes, missing features, and possibly a few bugs.**<br >
@@ -69,5 +69,6 @@ https://github.com/MinusKube/SmartInvs - Inventory helper library<br />
6969
https://github.com/lucko/helper - MinecraftVersions helper library<br />
7070
https://github.com/jkcclemens/khttp - HTTP helper library<br />
7171
https://github.com/aikar/commands - Built-in commands and auto-completion<br />
72+
https://github.com/tr7zw/Item-NBT-API - NBT helper library<br />
7273
https://github.com/apache/commons-io - FileUtils helper library<br />
7374
https://github.com/graalvm/graaljs - JavaScript engine

ScriptableMC-Engine-Core/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@ idea {
1818

1919
dependencies {
2020
// GraalVM SDK & GraalJS Engine
21-
compileOnly("org.graalvm.sdk:graal-sdk:20.0.0")
22-
compileOnly("org.graalvm.truffle:truffle-api:20.0.0")
21+
compileOnly("org.graalvm.sdk:graal-sdk:20.1.0")
22+
compileOnly("org.graalvm.truffle:truffle-api:20.1.0")
2323

2424
implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
25-
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
25+
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
2626
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
2727
implementation("fr.minuskube.inv:smart-invs:1.2.7")
2828
compileOnly("me.clip:placeholderapi:2.10.4")
2929
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
3030
implementation("org.jetbrains.kotlin:kotlin-reflect")
3131
implementation("commons-io:commons-io:2.6")
32+
implementation("de.tr7zw:item-nbt-api:2.2.0")
3233

3334
testImplementation("junit", "junit", "4.12")
3435
}

ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/ScriptEngineGlobalCommands.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ class ScriptEngineGlobalCommands(private val basePlugin: ScriptEngineMain) : Bas
3030
sender.sendMessage("${ChatColor.GREEN}GraalJS Version: ${scriptEngine?.eval("Graal.versionJS")}")
3131
}
3232
else {
33-
sender.sendMessage("- ${ChatColor.GREEN}GraalJS Engine Version: v20.0.0")
33+
sender.sendMessage("- ${ChatColor.GREEN}GraalJS Engine Version: v20.1.0")
3434
}
3535
sender.sendMessage("-----------------------------------------------------")
3636
}
3737
else if(scriptEngineMain.scriptLanguage == "python") {
3838
sender.sendMessage("- ${ChatColor.DARK_BLUE}ScriptableMC Python Engine: ${scriptEngineMain.pluginVersion}")
39-
sender.sendMessage("- ${ChatColor.BLUE}GraalPython Version: v20.0.0")
39+
sender.sendMessage("- ${ChatColor.BLUE}GraalPython Version: v20.1.0")
4040
sender.sendMessage("-----------------------------------------------------")
4141

4242
}

ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginContext.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.smc.version.Version
44
import fr.minuskube.inv.InventoryManager
55
import me.clip.placeholderapi.PlaceholderAPI
66
import org.bukkit.Bukkit
7+
import org.bukkit.Material
78
import org.bukkit.OfflinePlayer
89
import org.bukkit.Server
910
import org.bukkit.command.CommandMap
@@ -28,6 +29,7 @@ abstract class ScriptablePluginContext: Listener {
2829
abstract val pluginInstance: Value
2930
abstract val inventoryManager: InventoryManager
3031
abstract val pluginVersion: Version
32+
open val pluginIcon: Material = Material.STONE
3133

3234
var isEnabled: Boolean = false
3335
internal set

ScriptableMC-Engine-Core/src/main/kotlin/com/pixlfox/scriptablemc/core/ScriptablePluginEngine.kt

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@ abstract class ScriptablePluginEngine {
104104
}
105105
}
106106

107+
open fun getPluginInstance(name: String): Value? {
108+
return getPluginInstance(scriptablePlugins.firstOrNull { it.pluginName == name })
109+
}
110+
111+
open fun getPluginInstance(pluginContext: ScriptablePluginContext?): Value? {
112+
return pluginContext?.pluginInstance
113+
}
114+
107115
open fun eval(source: Source): Value {
108116
return graalContext.eval(source)
109117
}
@@ -173,7 +181,38 @@ abstract class ScriptablePluginEngine {
173181
)
174182
}
175183

176-
abstract fun loadMainScript(path: String)
184+
open fun loadMainScript(path: String) {
185+
try {
186+
val mainScriptFile = File(path)
187+
if(!mainScriptFile.parentFile.exists()) {
188+
mainScriptFile.parentFile.mkdirs()
189+
}
190+
191+
if(mainScriptFile.exists()) {
192+
val mainReturn = eval(
193+
Source.newBuilder(languageName, mainScriptFile)
194+
.name(mainScriptFile.name)
195+
.mimeType(config.scriptMimeType)
196+
.interactive(false)
197+
.build()
198+
)
199+
200+
// Load all plugin types returned as an array
201+
if(mainReturn.hasArrayElements()) {
202+
for (i in 0 until mainReturn.arraySize) {
203+
this.loadPlugin(mainReturn.getArrayElement(i))
204+
}
205+
}
206+
}
207+
else {
208+
throw ScriptNotFoundException(mainScriptFile)
209+
}
210+
}
211+
catch(ex: Exception) {
212+
startupErrors.add(ex)
213+
}
214+
}
215+
177216
abstract fun loadPlugin(scriptableClass: Value): ScriptablePluginContext
178217

179218
companion object {

ScriptableMC-Engine-JS/Bundled/build.gradle.kts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ dependencies {
2121
implementation(project(":ScriptableMC-Engine-JS"))
2222

2323
// GraalVM SDK & GraalJS Engine
24-
implementation("org.graalvm.sdk:graal-sdk:20.0.0")
25-
implementation("org.graalvm.js:js:20.0.0")
26-
implementation("org.graalvm.js:js-scriptengine:20.0.0")
27-
implementation("org.graalvm.truffle:truffle-api:20.0.0")
28-
implementation("org.graalvm.tools:chromeinspector:20.0.0")
29-
implementation("org.graalvm.tools:profiler:20.0.0")
24+
implementation("org.graalvm.sdk:graal-sdk:20.1.0")
25+
implementation("org.graalvm.js:js:20.1.0")
26+
implementation("org.graalvm.js:js-scriptengine:20.1.0")
27+
implementation("org.graalvm.truffle:truffle-api:20.1.0")
28+
implementation("org.graalvm.tools:chromeinspector:20.1.0")
29+
implementation("org.graalvm.tools:profiler:20.1.0")
3030

3131
implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
32-
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
32+
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
3333
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
3434
implementation("fr.minuskube.inv:smart-invs:1.2.7")
3535
compileOnly("me.clip:placeholderapi:2.10.4")
@@ -56,5 +56,6 @@ tasks.jar {
5656
tasks.shadowJar {
5757
archiveFileName.set("ScriptableMC-Engine-JS-Bundled.jar")
5858
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
59+
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
5960
mergeServiceFiles()
6061
}

ScriptableMC-Engine-JS/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,18 @@ dependencies {
2222

2323

2424
// GraalVM SDK & GraalJS Engine
25-
compileOnly("org.graalvm.sdk:graal-sdk:20.0.0")
26-
compileOnly("org.graalvm.truffle:truffle-api:20.0.0")
25+
compileOnly("org.graalvm.sdk:graal-sdk:20.1.0")
26+
compileOnly("org.graalvm.truffle:truffle-api:20.1.0")
2727

2828
implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
29-
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
29+
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
3030
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
3131
implementation("fr.minuskube.inv:smart-invs:1.2.7")
3232
compileOnly("me.clip:placeholderapi:2.10.4")
3333
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
3434
implementation("org.jetbrains.kotlin:kotlin-reflect")
3535
implementation("commons-io:commons-io:2.6")
36+
implementation("de.tr7zw:item-nbt-api:2.2.0")
3637

3738
testImplementation("junit", "junit", "4.12")
3839
}
@@ -53,5 +54,6 @@ tasks.jar {
5354
tasks.shadowJar {
5455
archiveFileName.set("ScriptableMC-Engine-JS.jar")
5556
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
57+
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
5658
mergeServiceFiles()
5759
}

ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginContext.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package com.pixlfox.scriptablemc.core
22

33
import com.smc.version.Version
44
import fr.minuskube.inv.InventoryManager
5+
import org.bukkit.Material
56
import org.bukkit.event.HandlerList
67
import org.graalvm.polyglot.Value
78

89

910
@Suppress("MemberVisibilityCanBePrivate", "unused")
10-
class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, override val pluginName: String, override val pluginInstance: Value) : ScriptablePluginContext() {
11+
class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, override val pluginName: String, override val pluginIcon: Material, override val pluginInstance: Value) : ScriptablePluginContext() {
1112
override val inventoryManager: InventoryManager
1213
get() = engine.inventoryManager
1314

@@ -48,12 +49,12 @@ class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, overr
4849
}
4950

5051
companion object {
51-
fun newInstance(pluginName: String, engine: ScriptablePluginEngine, pluginInstance: Value): ScriptablePluginContext {
52+
fun newInstance(pluginName: String, pluginIcon: Material, engine: ScriptablePluginEngine, pluginInstance: Value): ScriptablePluginContext {
5253
if(engine.debugEnabled) {
5354
engine.bootstrapPlugin.logger.info("[$pluginName] Creating new JavaScript plugin context.")
5455
}
5556

56-
return JavaScriptPluginContext(engine, pluginName, pluginInstance)
57+
return JavaScriptPluginContext(engine, pluginName, pluginIcon, pluginInstance)
5758
}
5859
}
5960
}

ScriptableMC-Engine-JS/src/main/kotlin/com/pixlfox/scriptablemc/core/JavaScriptPluginEngine.kt

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.pixlfox.scriptablemc.ScriptEngineMain
55
import com.smc.exceptions.ScriptNotFoundException
66
import com.pixlfox.scriptablemc.utils.UnzipUtility
77
import fr.minuskube.inv.InventoryManager
8+
import org.bukkit.Material
89
import org.graalvm.polyglot.*
910
import java.io.File
1011

@@ -92,38 +93,6 @@ class JavaScriptPluginEngine(override val bootstrapPlugin: ScriptEngineMain, ove
9293
globalBindings = graalContext.getBindings(languageName)
9394
}
9495

95-
override fun loadMainScript(path: String) {
96-
try {
97-
val mainScriptFile = File(path)
98-
if(!mainScriptFile.parentFile.exists()) {
99-
mainScriptFile.parentFile.mkdirs()
100-
}
101-
102-
if(mainScriptFile.exists()) {
103-
val mainReturn = eval(
104-
Source.newBuilder(languageName, mainScriptFile)
105-
.name(mainScriptFile.name)
106-
.mimeType(config.scriptMimeType)
107-
.interactive(false)
108-
.build()
109-
)
110-
111-
// Load all plugin types returned as an array
112-
if(mainReturn.hasArrayElements()) {
113-
for (i in 0 until mainReturn.arraySize) {
114-
this.loadPlugin(mainReturn.getArrayElement(i))
115-
}
116-
}
117-
}
118-
else {
119-
throw ScriptNotFoundException(mainScriptFile)
120-
}
121-
}
122-
catch(ex: Exception) {
123-
startupErrors.add(ex)
124-
}
125-
}
126-
12796
override fun start() {
12897
instance = this
12998
super.start()
@@ -137,7 +106,16 @@ class JavaScriptPluginEngine(override val bootstrapPlugin: ScriptEngineMain, ove
137106
override fun loadPlugin(scriptableClass: Value): ScriptablePluginContext {
138107
val pluginInstance = scriptableClass.newInstance()
139108
val pluginName = pluginInstance.getMember("pluginName").asString()
140-
val pluginContext = JavaScriptPluginContext.newInstance(pluginName, this, pluginInstance)
109+
var pluginIcon = Material.STONE
110+
if(pluginInstance.hasMember("pluginIcon")) {
111+
try {
112+
pluginIcon = pluginInstance.getMember("pluginIcon").`as`(Material::class.java)
113+
}
114+
catch(e: Exception) {
115+
e.printStackTrace()
116+
}
117+
}
118+
val pluginContext = JavaScriptPluginContext.newInstance(pluginName, pluginIcon, this, pluginInstance)
141119
pluginInstance.putMember("context", pluginContext)
142120
scriptablePlugins.add(pluginContext)
143121
pluginContext.load()

ScriptableMC-Engine-JS/src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: ScriptableMC-Engine-JS
22
description: 'Run JavaScript/TypeScript plugins for Bukkit/Spigot/Paper Minecraft 1.15'
3-
version: '1.2.1'
3+
version: '1.3.0'
44
api-version: '1.13'
55
author: AStorks
66
main: com.pixlfox.scriptablemc.SMCJavaScriptEngineMain

ScriptableMC-Engine-PY/Bundled/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ dependencies {
2121
implementation(project(":ScriptableMC-Engine-PY"))
2222

2323
// GraalVM SDK & GraalPython Engine
24-
implementation("org.graalvm.sdk:graal-sdk:20.0.0")
25-
implementation("org.graalvm.truffle:truffle-api:20.0.0")
24+
implementation("org.graalvm.sdk:graal-sdk:20.1.0")
25+
implementation("org.graalvm.truffle:truffle-api:20.1.0")
2626
implementation(files("libraries/graalpython.jar"))
2727
implementation(files("libraries/sulong-api.jar"))
2828
implementation(files("libraries/sulong.jar"))
2929

3030

3131
implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
32-
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
32+
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
3333
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
3434
implementation("fr.minuskube.inv:smart-invs:1.2.7")
3535
compileOnly("me.clip:placeholderapi:2.10.4")
@@ -56,5 +56,6 @@ tasks.jar {
5656
tasks.shadowJar {
5757
archiveFileName.set("ScriptableMC-Engine-PY-Bundled.jar")
5858
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
59+
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
5960
mergeServiceFiles()
6061
}

ScriptableMC-Engine-PY/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ dependencies {
2121
implementation(project(":ScriptableMC-Engine-Core"))
2222

2323
// GraalVM SDK & GraalPython Engine
24-
compileOnly("org.graalvm.sdk:graal-sdk:20.0.0")
25-
compileOnly("org.graalvm.truffle:truffle-api:20.0.0")
24+
compileOnly("org.graalvm.sdk:graal-sdk:20.1.0")
25+
compileOnly("org.graalvm.truffle:truffle-api:20.1.0")
2626

2727

2828
implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
29-
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
29+
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
3030
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
3131
implementation("fr.minuskube.inv:smart-invs:1.2.7")
3232
compileOnly("me.clip:placeholderapi:2.10.4")
3333
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
3434
implementation("org.jetbrains.kotlin:kotlin-reflect")
3535
implementation("commons-io:commons-io:2.6")
36+
implementation("de.tr7zw:item-nbt-api:2.2.0")
3637

3738
testImplementation("junit", "junit", "4.12")
3839
}
@@ -53,5 +54,6 @@ tasks.jar {
5354
tasks.shadowJar {
5455
archiveFileName.set("ScriptableMC-Engine-PY.jar")
5556
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
57+
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
5658
mergeServiceFiles()
5759
}

0 commit comments

Comments
 (0)