
# 描述
JsPig 通过 GraalVM 提供对 Bukkit API 的完全访问权限,允许开发者使用 JavaScript 的灵活性和简洁性,高效地创建和管理 Minecraft 插件。
# 开始使用
> 在开始之前,请使用 `GraalVM JDK 21` 作为您的开发环境和运行 Java 程序的环境。
1. 将插件放置在您的 `bukkit` 系列服务器的 `plugins` 文件夹中。
2. 启动服务器,插件将在 `plugins` 目录中自动生成一个与插件同名的文件夹。在控制台中输入命令 `JsPig declare` 以生成声明文件 `global.d.ts`。
3. 使用 `VSCode` 打开插件的数据文件夹,开始编写 `JavaScript` 插件。
## 高级功能
* 在插件的数据目录中创建一个新文件夹,命名时遵循通用的命名约定。在该文件夹中,创建一个 `package.json` 文件,并包含以下代码:
```
{
"main": "./block.js",
"modules": [
"registry",
"scripts-manager",
"console",
"timer"
]
}
```
* 然后,在该文件夹中创建一个名为 `block.js` 的文件以启用高级插件开发。
`block.js` 只是一个示例文件;您可以将其命名为任何名称。
### `modules` 中的可配置选项:
* `registry` 用于事件注册。
* `scripts-manager` 用于脚本管理。
* `console` 用于日志记录。
* `timer` 用于精确计时,添加对 `setTimeout`, `setInterval`, `clearTimeout` 和 `clearInterval` 的支持。
# 自定义命令
每个文件夹中的 `package.json` 都可以定义自定义命令。一个示例配置如下:
```
{
"command": {
"command": "list",
"description": "列出所有子命令",
"usage": "使用 /<主命令> list",
"permission": "JsPig.JsExtend.List",
"permissionMessage": "您没有使用此命令的权限。"
}
}
```
```
// JsExtend.list 对应于 "command": "list"。JsExtend. 是一个固定的前缀,且区分大小写。
registry.on("JsExtend.list", (sender, command, args) => {
})
```
**注意:一个 `package.json` 只能定义一个命令。**
为了允许玩家正确使用命令,例如上面的 `list` 命令,您需要一个权限管理插件,如 `LuckPerms-Bukkit`。
添加一个权限节点,例如 `JsPig.JsExtend.List`(不区分大小写),将权限节点的取值设置为 `true`,并在服务器上重新加载权限。玩家将能够使用该命令。
在游戏中,输入命令:`/jsextend list` 或 `/jse list`。
如果您的自定义命令有其他选项,请使用 `/jse <命令> <命令选项> <选项>`。 您可以通过 `args` 检索这些选项。
以下是使用自定义命令的完整 `package.json` 配置:
```
{
"main": "./block.js",
"modules": [
"registry"
],
"command": {
"command": "list",
"description": "列出所有子命令",
"usage": "使用 /<主命令> list",
"permission": "JsPig.JsExtend.List",
"permissionMessage": "您没有使用此命令的权限。"
}
}
```
# 插件命令
权限: JsPig.op
默认: op
- jspig reload
- jspig load
- jspig unload
- jspig list
- jspig declare
权限: JsPig.JsExtend
默认: default
- jse
# 示例
[github](https://github.com/I-Mortals/jspig-example)