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.
JsPig
<div style="text-align:center;"><img height="320" width="200" src="https://img.shields.io/badge/JsPig-package?style=flat-square&link=JsPig"/></div>
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 21` as your development environment and the environment for running Java programs.
1. Place the plugin in the `plugins` folder of your `bukkit`-series server. 2. Start the server, and the plugin will automatically generate a folder with the same name as the plugin in the `plugins` directory. Enter the command `JsPig declare` in the console to generate the declaration file `global.d.ts`. 3. Open the plugin's data folder with `VSCode` to start writing `JavaScript` plugins.
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.json` file and include the following code:
``` { "main": "./block.js", "modules": [ "registry", "scripts-manager", "console", "timer" ] } ```
* Then, create a file named `block.js` in the folder to enable advanced plugin development.
`block.js` is just an example file; you can name it anything.
Configurable Options in `modules`:
* `registry` for event registration. * `scripts-manager` for script management. * `console` for logging. * `timer` for precise timing, adding support for `setTimeout`, `setInterval`, `clearTimeout`, and `clearInterval`.
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 <js> - jspig unload <js> - jspig list - jspig declare
permission: JsPig.JsExtend
default: default
- jse <command>