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.

88

Quick challenge

How far can you run before the mobs catch you?

JsPig

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>

Example

github

ADS