
JsPig
JsPig provides complete access to the Bukkit API via GraalVM, allowing developers to efficiently create and manage Minecraft plugins using JavaScript's flexibility and simplicity.
Description
JsPig provides complete access to the Bukkit API via GraalVM, allowing developers to efficiently create and manage Minecraft plugins using JavaScript's flexibility and simplicity.
Getting Started
Before you start, please use
GraalVM JDK 21as your development environment and the environment for running Java programs.
- Place the plugin in the
pluginsfolder of yourbukkit-series server. - Start the server, and the plugin will automatically generate a folder with the same name as the plugin in the
pluginsdirectory. Enter the commandJsPig declarein the console to generate the declaration fileglobal.d.ts. - Open the plugin's data folder with
VSCodeto start writingJavaScriptplugins.
Advanced Features
- Create a new folder in the plugin's data directory, naming it according to general naming conventions. Within this folder, create a
package.jsonfile and include the following code:
{
"main": "./block.js",
"modules": [
"registry",
"scripts-manager",
"console",
"timer"
]
}
- Then, create a file named
block.jsin the folder to enable advanced plugin development.
block.js is just an example file; you can name it anything.
Configurable Options in modules:
registryfor event registration.scripts-managerfor script management.consolefor logging.timerfor precise timing, adding support forsetTimeout,setInterval,clearTimeout, andclearInterval.
Custom Commands
Each package.json in a folder can define custom commands. An example configuration is as follows:
{
"command": {
"command": "list",
"description": "List all subcommands",
"usage": "Use /<main command> list",
"permission": "JsPig.JsExtend.List",
"permissionMessage": "You do not have permission to use this command."
}
}
// JsExtend.list corresponds to "command": "list". JsExtend. is a fixed prefix and is case-sensitive.
registry.on("JsExtend.list", (sender, command, args) => {
})
Note: A package.json can only define one command.
To allow players to use the command correctly, such as the list command above, you need a permission management plugin like LuckPerms-Bukkit.
Add a permission node like JsPig.JsExtend.List (case-insensitive), set the value of the permission node to true, and reload permissions on the server. Players will then be able to use the command.
In the game, enter the command: /jsextend list or /jse list.
If your custom command has additional options, use /jse <command> <command option> <option>. You can retrieve these options via args.
Below is the full package.json configuration for using a custom command:
{
"main": "./block.js",
"modules": [
"registry"
],
"command": {
"command": "list",
"description": "List all subcommands",
"usage": "Use /<main command> list",
"permission": "JsPig.JsExtend.List",
"permissionMessage": "You do not have permission to use this command."
}
}
plugin Commands
permission: JsPig.op
default: op
- jspig reload
- jspig load
- jspig unload
- jspig list
- jspig declare
permission: JsPig.JsExtend
default: default
- jse