# PmmoJS 文档

PmmoJS 连接 Project MMO 与 KubeJS，适配 Forge 1.20.1。

通过 PmmoJS，你可以直接用 KubeJS 脚本操控 PMMO 的游戏机制 —— 技能、经验、需求、Perk、触发器 —— 完全不碰 Java 代码。

## 从哪开始

如果你是第一次接触 PmmoJS，建议按顺序阅读：

1. **[概览](./overview)** —— PmmoJS 提供了哪些功能，它们如何配合
2. **[PMMO 编写流程](./pmmo-workflow)** —— 把技能、默认数据、settings、NBT globals、Perk 和运行时 hook 串成完整流程
3. **[起步 Perk 注册](./startupevents/perks)** —— 创建带条件判断、生命周期回调和状态显示的自定义 Perk
4. **[PMMO 设置](./serverevents/settings)** —— 配置物品、方块、实体的使用需求、经验奖励和加成
5. **[运行时事件](./serverevents/normal)** —— 在实际游戏中挂接 PMMO 的触发器

## 快速查阅

- **[配置事件](./serverevents/config)** —— 技能、Perk、服务器参数、自动赋值、反作弊
- **[内部钩子](./serverevents/internal)** —— 拦截 PMMO 处理器级别逻辑（登录、跨维度、爆炸、酿造）
- **[重置默认设置](./serverevents/reset-recipes)** —— 通过 `config/pmmojs-common.toml` 从干净基线开始
- **[Tag 模型](./tag-model)** —— Perk、触发器和内部钩子中的 Tag 如何工作

## 脚本类型速览

| 脚本文件夹 | 应该放什么 |
|---|---|
| `startup_scripts/` | Perk 注册、谓词、直接 PMMO 数据注册、Forge 事件监听器 |
| `server_scripts/` | 运行时触发器、配置编辑、游戏钩子、ProbeJS 文档生成 |
| `client_scripts/` | 只读技能显示辅助、客户端 UI 逻辑 |

## 从干净基线开始

如果你想把 PMMO 的默认数据全部替换成自定义规则：

1. 在 `config/pmmojs-common.toml` 中启对应的清除开关
2. 通过 `server_scripts/` 注册你的自定义数据
3. 只有你在脚本中定义的数据会保留

详见 **[重置默认设置](./serverevents/reset-recipes)**。
