Описание
# 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 / 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 `. 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 / 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
# Example
[github](https://github.com/I-Mortals/jspig-example)