插件概述
NukkitBdsApi 是一款专为 Nukkit-MOT 服务器设计的强大插件,它为服务器提供了基于 JavaScript 的 Addon 脚本系统和资源包分发功能。该插件采用与 Minecraft Bedrock Edition Script API 相似的接口设计,运行在安全的 GraalVM 沙箱环境中。核心特性
1. JavaScript Addon 系统
- 支持使用 JavaScript 编写自定义游戏逻辑
- 提供丰富的 API 接口,包括世界操作、玩家管理、事件监听等功能
- 每个 Addon 独立运行,互不影响
2. 资源包分发
- 支持向客户端分发自定义资源包
- 可配置是否强制客户端接受资源包
- 兼容 .zip 和 .mcpack 格式
安装配置
安装步骤
- 将 nukkitbdsapi-1.0.0.jar 文件放入服务器的 plugins/ 目录
- 启动服务器,插件会自动生成配置文件和目录结构
目录结构
plugins/NukkitBdsApi/├── config.yml # 主配置文件
├── addons/ # Addon 脚本存放目录
└── resource-packs/ # 资源包存放目录
配置选项
YAML:
# 资源包配置
resource-pack:
enabled: true # 启用资源包分发
force: true # 强制客户端接受资源包
directory: resource-packs
file-name: "" # 指定资源包文件名
# Addon 运行时配置
addon-runtime:
enabled: true # 启用 Addon 系统
addons-directory: addons
开发入门
创建第一个 Addon
1. 目录结构
在 addons/ 目录下创建子文件夹,例如 hello-world/:addons/hello-world/
├── manifest.json # 配置文件
└── main.js # 主脚本文件 # 主脚本文件
2. 配置文件 (manifest.json)
JSON:
{
"header": {
"name": "Hello World",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version": [1, 0, 0]
},
"modules": [
{
"type": "script",
"uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"version": [1, 0, 0],
"entry": "main.js"
}
]
}
3. 脚本示例 (main.js)
JavaScript:
console.info("Hello World addon loaded!");
world.afterEvents.playerJoin.subscribe((event) => {
world.sendMessage(event.playerName, "Welcome to the server!");
});
API 功能
1. 事件系统
支持丰富的事件监听:- 玩家事件:玩家加入、退出、聊天、死亡、移动等
- 物品事件:使用物品、消耗物品、丢弃物品等
- 实体事件:实体生成、死亡、受伤等
- 方块事件:破坏方块、放置方块、方块更新等
2. 世界操作
- 方块操作:获取、设置、填充方块
- 玩家管理:获取玩家、传送、踢出玩家
- 实体管理:生成实体、获取附近实体
- 世界环境:设置时间、天气、游戏规则
3. 用户界面
- 简单表单:按钮列表形式
- 模态表单:确认/取消对话框
- 自定义表单:输入框、开关、滑块、下拉菜单等
4. 高级功能
- 记分板系统:创建目标、设置分数、显示排行榜
- 音效播放:在指定位置播放声音
- 药水效果:为玩家添加各种状态效果
- 结构管理:保存和放置建筑结构
- 动态属性:存储和读取自定义数据
应用场景
1. 自定义游戏模式
通过 JavaScript 脚本实现独特的游戏玩法和规则。2. 服务器管理
自动化管理任务,如欢迎系统、权限控制、经济系统等。3. 资源包管理
统一管理和分发自定义纹理、材质包等资源。4. 插件开发
作为插件开发框架,快速构建复杂的功能模块。注意事项
- 脚本运行在沙箱环境中,只能访问自身目录内的文件
- 每个 Addon 拥有独立的执行上下文
- manifest.json 中的 UUID 必须保持唯一性
- 调度器的时间单位为游戏刻度(20刻度 = 1秒)
- 部分高级功能需要特定的 Nukkit-MOT 版本支持
本项目Github:https://github.com/CatGirlMaoDie/Nukkit-Addon-API
QQ群:1087780842
由于资源过大无法上传到Minebbs,所以请于Github构建或者QQ群内下载。