[MD]
# CustomCraft
一个适用于Nukkit-MOT的自定义合成配方和熔炉配方插件
## 功能特性
- 支持无序合成(类似染料合成)
- 支持有序合成(类似工具合成,需要按照特定形状摆放)
- 支持设置合成次数限制
- 支持额外输出物品
- 支持 NBT 物品作为合成材料或产物
- 提供便捷的游戏内命令添加物品配置
## 安装方法
1. 下载 CustomCraft 插件的 jar 文件
2. 将 jar 文件放入你的 Nukkit-MOT 服务器的 `plugins` 文件夹中
3. 重启服务器
4. 插件会自动在 `plugins/CustomCraft` 目录下生成配置文件
## 配置文件说明
### craft.json - 合成配方配置
配置文件位置:`plugins/CustomCraft/craft.json`
#### 配置项说明
| 字段 | 类型 | 说明 |
|---------------|-------|--------------------------------------|
| type | 整数 | 配方类型:`0` = 无序合成,`1` = 有序合成 |
| maxCraftCount | 整数 | 最大合成次数:`-1` = 无限次,其他数字为具体次数(此功能仍未完成) |
| input | 数组/对象 | 输入材料(格式见下方) |
| output | 字符串 | 输出物品(格式:`物品ID:特殊值:数量`) |
| shape | 数组 | 仅有序合成需要,定义合成台的摆放形状 |
| extraOutput | 数组 | 可选,额外输出的物品列表 |
#### 物品格式说明
插件支持三种物品格式:
**1. 普通物品格式**
- 格式:`物品ID:特殊值:数量`
- 示例:`58:0:1` 表示 1 个工作台(ID:58,特殊值:0)
- 示例:`3:0` 表示泥土(ID:3,特殊值:0),数量默认为 1
- 示例:`35:14:5` 表示 5 个红色羊毛(ID:35,特殊值:14)
**2. NBT 物品格式(带特殊属性)**
用于使用带有附魔、自定义名称、Lore 等 NBT 数据的物品:
- 引用格式:`物品名称@nbt`
- 使用步骤:
1. 在游戏中手持物品,执行 `/craft add <名称>` 保存到配置
2. 在配方中使用 `名称@nbt` 引用
- 示例:
- 配置中引用:`"input": ["神剑@nbt"]`
- 作为输出:`"output": "神剑@nbt"`
**说明**:NBT 物品的实际数据存储在 `nbtItems.json` 文件中,格式为 `物品ID:特殊值:数量:NBT数据`(自动生成,无需手动编辑)
如果物品发生了改变(如附魔、自定义名称、Lore 等),需要重新执行 `/craft add <名称>` 保存到配置文件中,否则插件将无法识别为同一物品。
如果不知道普通物品的ID或特殊值,也可在游戏中手持物品执行 `/craft add <名称>` 保存到配置文件中,当作NBT物品使用。
**3. 命名空间物品格式(自定义物品)**
用于新版本的命名空间 ID 物品:
- 格式:`命名空间ID:数量`
- 示例:`minecraft:diamond_sword:1`、`minecraft:netherite_ingot:1`
**在配方中混合使用示例:**
```json
{
"type": 1,
"maxCraftCount": -1,
"input": {
"A": "神剑@nbt",
"B": "minecraft:diamond:0:1",
"C": "minecraft:netherite_ingot:1"
},
"shape": [
"ABA",
"BCB",
"ABA"
],
"output": "超级神剑@nbt"
}
```
#### 配置示例
**无序合成示例**(将泥土合成为工作台):
```json
{
"recipes": [
{
"type": 0,
"maxCraftCount": -1,
"input": [
"3:0"
],
"output": "58:0:1"
}
]
}
```
**有序合成示例**(9 个泥土按 3x3 摆放合成工作台,并额外获得 1 个泥土):
```json
{
"recipes": [
{
"type": 1,
"maxCraftCount": -1,
"input": {
"A": "3:0"
},
"shape": [
"AAA",
"AAA",
"AAA"
],
"output": "58:0:1",
"extraOutput": [
"3:0:1"
]
}
]
}
```
**有序合成形状说明**:
shape 数组定义了物品在合成台中的摆放形状,每个字符代表一个格子:
- `"AAA"` = 第一行三个格子都放 A 材料
- `"A A"` = 第二行左右两边放 A 材料,中间空着
- `" A "` = 第三行只有中间放 A 材料
你可以定义多种材料:
```json
{
"type": 1,
"input": {
"A": "5:0",
"B": "280:0"
},
"shape": [
"AAA",
" B ",
" B "
],
"output": "269:0:1"
}
```
上面的例子表示用木板和木棍合成木镐。
### nbtItems.json - NBT 物品配置
如果你需要使用带有特殊属性(如附魔、自定义名称等)的物品作为材料或产物,可以使用游戏内命令添加到此配置文件。
配置文件位置:`plugins/CustomCraft/nbtItems.json`
#### NBT 物品配置格式
此文件由插件自动维护,通常不需要手动编辑。格式如下:
```json
{
"物品名称": "物品ID:特殊值:数量:NBT数据"
}
```
**字段说明:**
- `物品名称`:自定义的物品标识符,用于在配方中引用
- `物品ID`:Minecraft 物品 ID(数字)或命名空间 ID(如 `minecraft:diamond_sword`)
- `特殊值`:物品的特殊值/损害值(如钻石剑的耐久)
- `数量`:物品数量
- `NBT数据`:物品的 NBT 标签数据(Base64 编码),如果没有 NBT 数据则为 `not`
#### 示例配置
```json
{
"神剑": "276:0:1:CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAA==",
"普通钻石": "264:0:1:not",
"自定义物品": "minecraft:diamond_sword:1:nbt"
}
```
**使用方法:**
1. 通过命令添加(推荐):
```
/craft add 神剑
```
系统会自动保存手中物品的所有 NBT 数据
2. 在配方中引用:
```json
{
"type": 0,
"input": ["神剑@nbt", "diamond:0:8"],
"output": "超级神剑@nbt"
}
```
**注意事项:**
- NBT 数据包含了物品的所有特殊属性(附魔、自定义名称、Lore、隐藏标志等)
- 带 NBT 的物品必须完全匹配才能用于合成(包括附魔等级、名称等)
- 建议使用命令添加 NBT 物品,避免手动编辑出错
## 使用教程
### 1. 添加简单配方
直接编辑 `craft.json` 文件,按照上面的格式添加配方,然后使用 `/reload` 重载插件。
### 2. 使用 NBT 物品创建高级配方
NBT 物品可以保存物品的所有特殊属性,包括:
- 附魔(锋利、耐久等)
- 自定义名称和描述(Lore)
- 隐藏的标志
- 其他 NBT 数据
**操作步骤:**
1. **准备你的特殊物品**
- 在游戏中制作或获取一个带有特殊属性的物品
- 例如:一把附魔了锋利 V 的钻石剑,重命名为"神剑"
2. **保存物品到配置**
- 手持该物品
- 执行命令:`/craft add <名称>`
- 例如:`/craft add 神剑`
- 系统会提示保存成功
3. **在配方中引用 NBT 物品**
- 格式:`物品名称@nbt`
- 作为输入材料:`"input": ["神剑@nbt"]`
- 作为输出物品:`"output": "神剑@nbt"`
**完整示例 - 用普通材料合成特殊物品:**
```json
{
"type": 1,
"maxCraftCount": 1,
"input": {
"A": "diamond:0",
"B": "emerald:0"
},
"shape": [
"AAA",
"ABA",
"AAA"
],
"output": "神剑@nbt"
}
```
**完整示例 - 升级特殊物品:**
```json
{
"type": 0,
"maxCraftCount": -1,
"input": ["神剑@nbt", "nether_star:0:1"],
"output": "超级神剑@nbt"
}
```
**重要提示:**
- 使用 NBT 物品作为材料时,玩家的物品必须完全匹配(附魔等级、名称等)
- 建议为每个特殊物品起一个容易识别的名称
- 可以在 `nbtItems.json` 中查看已保存的所有 NBT 物品
### 3. 测试配方
1. 保存配置文件
2. 在游戏中使用 `/reload` 命令重载插件
3. 打开合成台测试你的配方
## 命令说明
| 命令 | 说明 | 权限 |
|------|------|------|
| `/craft add <名称>` | 将手中的物品添加到 nbtItems 配置中 | customcraft.craft |
**权限说明**:
- `customcraft.craft` - 默认只有管理员(OP)拥有此权限
## 常见问题
**Q: 修改配置后不生效?**
A: 修改配置文件后需要重启服务器。
**Q: 如何使用带附魔的物品作为材料?**
A: 使用 `/craft add <名称>` 保存带附魔的物品,然后在配方中用 `名称@nbt` 引用。注意:玩家的物品必须与保存的物品完全一致才能合成。
**Q: NBT 物品格式 `@nbt` 后缀是必须的吗?**
A: 是的,引用 nbtItems.json 中的物品时必须加上 `@nbt` 后缀,例如 `神剑@nbt`。这样插件才能识别这是一个 NBT 物品。
**Q: 普通物品格式和命名空间格式有什么区别?**
A:
- 普通格式:`物品ID:特殊值:数量`(如 `276:0:1`,适用于常规物品)
- 命名空间格式:`minecraft:物品名称`(如 `minecraft:diamond_sword`,适用于自定义物品和部分高版本物品)
**Q: extraOutput 有什么用?**
A: 它可以让玩家在合成主要物品的同时,额外获得其他物品,适合制作"副产品"或"返还材料"的配方。
**Q: maxCraftCount 设置为 1 后,是否全服玩家只能合成一次?**
A: 不是,maxCraftCount配置是针对单个玩家的合成次数限制,设置为 1 表示每个玩家只能合成该配方 1 次。
**Q: 如何查看已保存的 NBT 物品列表?**
A: 打开 `plugins/CustomCraft/nbtItems.json` 文件,所有通过命令保存的物品都会列在这里。
## 反馈与支持
如果你在使用过程中遇到问题或有建议,欢迎通过以下方式反馈:
- 提交 Issue:[CustomCraft GitHub Issues](https://github.com/MemoriesOfTime/CustomCraft/issues)
[/MD]