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

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>

Example

github

ADS