Skip to content

Dev -> Master v1.3.0 #25

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Aug 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/build-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ jobs:
mkdir artifacts
cp ./build/ScriptableMC-Engine-JS.jar ./artifacts/
cp ./build/ScriptableMC-Engine-JS-Bundled.jar ./artifacts/
cp ./build/ScriptableMC-Engine-PY.jar ./artifacts/
cp ./build/ScriptableMC-Engine-PY-Bundled.jar ./artifacts/
cp ./ScriptableMC-Tools-TS/lib/ScriptableMC-TypeScript-Lib.zip ./artifacts/
cp ./ScriptableMC-Tools-TS/lib/ScriptableMC-JavaScript-Lib.zip ./artifacts/
cp ./ScriptableMC-Tools-TS/lib-smc/Lib-SMC.zip ./artifacts/
Expand Down
12 changes: 0 additions & 12 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,24 +50,12 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'ScriptableMC-Engine-JS/build/libs/ScriptableMC-Engine-JS.jar'
- name: Upload Python Engine Plugin Jar
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'ScriptableMC-Engine-PY/build/libs/ScriptableMC-Engine-PY.jar'
- name: Upload Bundled JavaScript Engine Plugin Jar
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'ScriptableMC-Engine-JS/Bundled/build/libs/ScriptableMC-Engine-JS-Bundled.jar'
- name: Upload Bundled Python Engine Plugin Jar
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'ScriptableMC-Engine-PY/Bundled/build/libs/ScriptableMC-Engine-PY-Bundled.jar'
- name: Upload TypeScript Libraries
uses: skx/github-action-publish-binaries@master
env:
Expand Down
5 changes: 5 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
![License](https://img.shields.io/github/license/astorks/ScriptableMC-Engine?style=for-the-badge)

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

**This plugin is in a preview state, there may be breaking changes, missing features, and possibly a few bugs.**<br >
Expand Down Expand Up @@ -69,5 +69,6 @@ https://github.com/MinusKube/SmartInvs - Inventory helper library<br />
https://github.com/lucko/helper - MinecraftVersions helper library<br />
https://github.com/jkcclemens/khttp - HTTP helper library<br />
https://github.com/aikar/commands - Built-in commands and auto-completion<br />
https://github.com/tr7zw/Item-NBT-API - NBT helper library<br />
https://github.com/apache/commons-io - FileUtils helper library<br />
https://github.com/graalvm/graaljs - JavaScript engine
7 changes: 4 additions & 3 deletions ScriptableMC-Engine-Core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,18 @@ idea {

dependencies {
// GraalVM SDK & GraalJS Engine
compileOnly("org.graalvm.sdk:graal-sdk:20.0.0")
compileOnly("org.graalvm.truffle:truffle-api:20.0.0")
compileOnly("org.graalvm.sdk:graal-sdk:20.1.0")
compileOnly("org.graalvm.truffle:truffle-api:20.1.0")

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

testImplementation("junit", "junit", "4.12")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ class ScriptEngineGlobalCommands(private val basePlugin: ScriptEngineMain) : Bas
sender.sendMessage("${ChatColor.GREEN}GraalJS Version: ${scriptEngine?.eval("Graal.versionJS")}")
}
else {
sender.sendMessage("- ${ChatColor.GREEN}GraalJS Engine Version: v20.0.0")
sender.sendMessage("- ${ChatColor.GREEN}GraalJS Engine Version: v20.1.0")
}
sender.sendMessage("-----------------------------------------------------")
}
else if(scriptEngineMain.scriptLanguage == "python") {
sender.sendMessage("- ${ChatColor.DARK_BLUE}ScriptableMC Python Engine: ${scriptEngineMain.pluginVersion}")
sender.sendMessage("- ${ChatColor.BLUE}GraalPython Version: v20.0.0")
sender.sendMessage("- ${ChatColor.BLUE}GraalPython Version: v20.1.0")
sender.sendMessage("-----------------------------------------------------")

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.smc.version.Version
import fr.minuskube.inv.InventoryManager
import me.clip.placeholderapi.PlaceholderAPI
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.OfflinePlayer
import org.bukkit.Server
import org.bukkit.command.CommandMap
Expand All @@ -28,6 +29,7 @@ abstract class ScriptablePluginContext: Listener {
abstract val pluginInstance: Value
abstract val inventoryManager: InventoryManager
abstract val pluginVersion: Version
open val pluginIcon: Material = Material.STONE

var isEnabled: Boolean = false
internal set
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down Expand Up @@ -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 {
Expand Down
15 changes: 8 additions & 7 deletions ScriptableMC-Engine-JS/Bundled/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ dependencies {
implementation(project(":ScriptableMC-Engine-JS"))

// GraalVM SDK & GraalJS Engine
implementation("org.graalvm.sdk:graal-sdk:20.0.0")
implementation("org.graalvm.js:js:20.0.0")
implementation("org.graalvm.js:js-scriptengine:20.0.0")
implementation("org.graalvm.truffle:truffle-api:20.0.0")
implementation("org.graalvm.tools:chromeinspector:20.0.0")
implementation("org.graalvm.tools:profiler:20.0.0")
implementation("org.graalvm.sdk:graal-sdk:20.1.0")
implementation("org.graalvm.js:js:20.1.0")
implementation("org.graalvm.js:js-scriptengine:20.1.0")
implementation("org.graalvm.truffle:truffle-api:20.1.0")
implementation("org.graalvm.tools:chromeinspector:20.1.0")
implementation("org.graalvm.tools:profiler:20.1.0")

implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
implementation("fr.minuskube.inv:smart-invs:1.2.7")
compileOnly("me.clip:placeholderapi:2.10.4")
Expand All @@ -56,5 +56,6 @@ tasks.jar {
tasks.shadowJar {
archiveFileName.set("ScriptableMC-Engine-JS-Bundled.jar")
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
mergeServiceFiles()
}
8 changes: 5 additions & 3 deletions ScriptableMC-Engine-JS/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,18 @@ dependencies {


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

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

testImplementation("junit", "junit", "4.12")
}
Expand All @@ -53,5 +54,6 @@ tasks.jar {
tasks.shadowJar {
archiveFileName.set("ScriptableMC-Engine-JS.jar")
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
mergeServiceFiles()
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package com.pixlfox.scriptablemc.core

import com.smc.version.Version
import fr.minuskube.inv.InventoryManager
import org.bukkit.Material
import org.bukkit.event.HandlerList
import org.graalvm.polyglot.Value


@Suppress("MemberVisibilityCanBePrivate", "unused")
class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, override val pluginName: String, override val pluginInstance: Value) : ScriptablePluginContext() {
class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, override val pluginName: String, override val pluginIcon: Material, override val pluginInstance: Value) : ScriptablePluginContext() {
override val inventoryManager: InventoryManager
get() = engine.inventoryManager

Expand Down Expand Up @@ -48,12 +49,12 @@ class JavaScriptPluginContext(override val engine: ScriptablePluginEngine, overr
}

companion object {
fun newInstance(pluginName: String, engine: ScriptablePluginEngine, pluginInstance: Value): ScriptablePluginContext {
fun newInstance(pluginName: String, pluginIcon: Material, engine: ScriptablePluginEngine, pluginInstance: Value): ScriptablePluginContext {
if(engine.debugEnabled) {
engine.bootstrapPlugin.logger.info("[$pluginName] Creating new JavaScript plugin context.")
}

return JavaScriptPluginContext(engine, pluginName, pluginInstance)
return JavaScriptPluginContext(engine, pluginName, pluginIcon, pluginInstance)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.pixlfox.scriptablemc.ScriptEngineMain
import com.smc.exceptions.ScriptNotFoundException
import com.pixlfox.scriptablemc.utils.UnzipUtility
import fr.minuskube.inv.InventoryManager
import org.bukkit.Material
import org.graalvm.polyglot.*
import java.io.File

Expand Down Expand Up @@ -92,38 +93,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()
Expand All @@ -137,7 +106,16 @@ class JavaScriptPluginEngine(override val bootstrapPlugin: ScriptEngineMain, ove
override fun loadPlugin(scriptableClass: Value): ScriptablePluginContext {
val pluginInstance = scriptableClass.newInstance()
val pluginName = pluginInstance.getMember("pluginName").asString()
val pluginContext = JavaScriptPluginContext.newInstance(pluginName, this, pluginInstance)
var pluginIcon = Material.STONE
if(pluginInstance.hasMember("pluginIcon")) {
try {
pluginIcon = pluginInstance.getMember("pluginIcon").`as`(Material::class.java)
}
catch(e: Exception) {
e.printStackTrace()
}
}
val pluginContext = JavaScriptPluginContext.newInstance(pluginName, pluginIcon, this, pluginInstance)
pluginInstance.putMember("context", pluginContext)
scriptablePlugins.add(pluginContext)
pluginContext.load()
Expand Down
2 changes: 1 addition & 1 deletion ScriptableMC-Engine-JS/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -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.3.0'
api-version: '1.13'
author: AStorks
main: com.pixlfox.scriptablemc.SMCJavaScriptEngineMain
Expand Down
7 changes: 4 additions & 3 deletions ScriptableMC-Engine-PY/Bundled/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ dependencies {
implementation(project(":ScriptableMC-Engine-PY"))

// GraalVM SDK & GraalPython Engine
implementation("org.graalvm.sdk:graal-sdk:20.0.0")
implementation("org.graalvm.truffle:truffle-api:20.0.0")
implementation("org.graalvm.sdk:graal-sdk:20.1.0")
implementation("org.graalvm.truffle:truffle-api:20.1.0")
implementation(files("libraries/graalpython.jar"))
implementation(files("libraries/sulong-api.jar"))
implementation(files("libraries/sulong.jar"))


implementation("com.github.jkcclemens:khttp:-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT")
implementation("fr.minuskube.inv:smart-invs:1.2.7")
compileOnly("me.clip:placeholderapi:2.10.4")
Expand All @@ -56,5 +56,6 @@ tasks.jar {
tasks.shadowJar {
archiveFileName.set("ScriptableMC-Engine-PY-Bundled.jar")
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
mergeServiceFiles()
}
8 changes: 5 additions & 3 deletions ScriptableMC-Engine-PY/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,19 @@ dependencies {
implementation(project(":ScriptableMC-Engine-Core"))

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


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

testImplementation("junit", "junit", "4.12")
}
Expand All @@ -53,5 +54,6 @@ tasks.jar {
tasks.shadowJar {
archiveFileName.set("ScriptableMC-Engine-PY.jar")
relocate("co.aikar.commands", "com.pixlfox.scriptablemc.acf")
relocate("de.tr7zw.changeme.nbtapi", "com.smc.nbtapi")
mergeServiceFiles()
}
Loading