图纸配置
图纸文件放在插件数据目录的 forge/ 目录中。每个 YAML 文件描述一张可制作的图纸,包括展示信息、解锁方式、材料、货币、条件、制作时间、成功率、制作次数、成功结果、失败结果和可选材料。
图纸配置由 LyGalaxyForge 读取,并用于锻造界面展示和锻造流程判定。
配置结构
一张图纸通常包含以下配置区域:
| 配置区域 | 用途 |
|---|---|
| 基础信息 | 设置图纸 ID、界面、图标、名称和说明。 |
| 图纸获取方式 | 设置玩家解锁图纸的方式。 |
| 必选材料与货币 | 设置制作时必须消耗的物品和货币。 |
| 基础条件 | 在界面中展示制作所需条件。 |
| 制作参数 | 设置制作时间、成功率和最大制作次数。 |
| 成功结果 | 设置制作成功时执行的指令和生成的物品。 |
| 失败结果 | 设置制作失败时执行的指令和生成的物品。 |
| 可选材料 | 设置额外材料及其对本次制作的影响。 |
| 额外条件 | 在制作开始、成功或失败阶段执行条件检查。 |
基础信息
| 配置键 | 说明 |
|---|---|
id | 图纸 ID。用于区分图纸,必须保持唯一。 |
gui-id | 使用的锻造界面 ID。删除图纸时使用 default。 |
show-icon | 图纸在界面中的图标。未设置时默认为 PAPER:0。 |
show-name | 图纸显示名称。 |
show-lore | 图纸说明文本。 |
show-lore-sort | 展示成功产物时使用的 Lore 排版。设置后会覆盖全局排版。 |
how-to-get-it | 图纸解锁方式。 |
图纸获取方式
how-to-get-it 用于决定玩家如何获得或解锁图纸。
| 写法 | 说明 |
|---|---|
auto | 自动获得图纸。 |
使用物品('name=测试图纸') | 使用指定物品解锁图纸。 |
有权限('perm=权限') | 玩家拥有指定权限时自动解锁。 |
无权限('perm=权限') | 玩家没有指定权限时自动解锁。 |
条件判断('表达式') | 表达式成立时自动解锁。 |
示例:
yaml
how-to-get-it: "使用物品('name=测试图纸')"必选材料与货币
必选物品
need-item 用于设置制作时必须放入或消耗的物品材料。
物品通常使用物品库标识,例如:
yaml
need-item:
MM@材料1: '1'数量支持 PlaceholderAPI 占位符和四则运算,计算结果会向上取整。
货币材料
need-currency 用于设置制作时需要消耗的货币。
yaml
need-currency:
金币: '100'货币的具体来源由服务器已接入的经济系统决定。仅根据图纸配置无法确定服务器实际使用的货币插件。
基础条件
base-condition 下的每个子节点都是一条展示条件。条件通常用于在锻造界面中显示玩家是否满足制作要求。
yaml
base-condition:
等级限制:
condition: "条件判断('%player_level% >= 0')"
show: " &6需要玩家等级大于等于0 {status}"| 配置键 | 说明 |
|---|---|
condition | 条件表达式。 |
show | 在界面中显示的条件文本。 |
{status} 会替换为主配置中设置的满足或不满足状态符号。
制作参数
| 配置键 | 说明 |
|---|---|
forge-time | 制作时长,单位为秒。支持变量和公式。 |
chance | 制作成功率,范围为 0-1。支持变量和公式。 |
max-forge-count | 最大制作次数。设置为 0 时不限制次数。 |
制作过程中可以通过动作修改本次制作的成功率,也可以通过变量参与条件和公式计算。
成功与失败结果
| 配置键 | 说明 |
|---|---|
success-command | 制作成功时执行的指令列表。 |
success-item | 制作成功时生成的物品列表。 |
failed-command | 制作失败时执行的指令列表。 |
failed-item | 制作失败时生成的物品列表。 |
成功或失败结果可以分别配置指令和物品,不需要使用相同的结果结构。
结果物品
success-item 和 failed-item 中的每个结果物品可以包含以下字段:
| 字段 | 说明 |
|---|---|
item | 物品库物品标识,例如 MM@产物1。 |
amount | 生成数量。支持公式。 |
give | 是否将物品发放给玩家。 |
weight | 结果权重。用于多个结果之间的权重计算。 |
action | 生成结果物品时执行的动作。 |
entry | 应用到结果物品上的词条方法。 |
command | 生成结果物品时执行的指令。 |
示例结构:
yaml
success-item:
- item: MM@产物1
amount: '1'
give: true
weight: '1'
action: []
entry: []
command: []实际配置中的列表写法应与当前项目示例和已有配置保持一致。
可选材料
optional-item 用于配置制作时可以额外放入的材料。可选材料可以限制数量、设置互斥关系,并通过动作或词条影响本次制作和结果物品。
| 字段 | 说明 |
|---|---|
item | 可选材料匹配的物品。 |
max | 该材料最多允许放入的数量。 |
mutex-group | 互斥组。同组中的不同材料不能同时使用。设置为 default 时不参与互斥。 |
action | 使用该材料时执行的动作。 |
entry | 使用该材料后追加的词条方法。 |
示例结构:
yaml
optional-item:
材料A:
item: MM@材料A
max: 1
mutex-group: default
action: []
entry: []可选材料的实际效果取决于配置的 action 和 entry 内容。
额外条件
extra-condition 用于在锻造流程的指定阶段进行条件检查。
type | 触发阶段 |
|---|---|
start | 开始制作时检查。 |
success | 制作成功时检查。 |
failed | 制作失败时检查。 |
示例结构:
yaml
extra-condition:
- type: start
condition: "条件判断('%player_level% >= 10')"动作
动作通常写在结果物品、可选材料或其他流程配置的 action 节点中,用于影响本次锻造、修改结果或发送提示。
项目中已确认支持以下动作:
| 动作 | 说明 |
|---|---|
设置变量(...) | 设置本次锻造使用的变量。 |
设置成功率(...) | 设置本次制作的成功率。 |
增加成功率(...) | 增加本次制作的成功率。 |
减少成功率(...) | 减少本次制作的成功率。 |
设置NBT(...) | 为物品写入 NBT。 |
播放音效(...) | 播放指定的 Minecraft 音效。 |
全服消息(...) | 向全服发送消息。 |
发送消息(...) | 向触发本次流程的玩家发送消息。 |
执行指令(...) | 执行控制台、OP 或玩家指令。 |
扣除物品(...) | 按条件匹配并扣除物品。 |
给予物品(...) | 按物品库标识发放物品。 |
动作的具体参数需要按照插件已注册的动作语法填写。未在项目中确认的动作或参数不要直接添加到图纸配置中。
变量与表达式
图纸中的数量、时间、成功率和条件可以使用变量、PlaceholderAPI 占位符及表达式计算。
项目中已确认存在以下表达式能力:
| 能力 | 用途 |
|---|---|
| 变量读取 | 读取已设置的锻造变量。 |
| 变量设置 | 在流程中设置变量。 |
| PlaceholderAPI 解析 | 解析 PlaceholderAPI 占位符。 |
| 四则运算 | 计算数量、时间或成功率等数值。 |
if 条件判断 | 根据条件选择结果。 |
| 随机值 | 生成随机结果。 |
| 权重计算 | 根据权重选择结果。 |
| 数值取整 | 支持向上取整、向下取整、四舍五入和整数转换。 |
| 字符串处理 | 支持包含、开头匹配、结尾匹配、替换、分割、拼接、裁剪和长度计算等处理。 |
图纸配置中使用的函数名称和参数应以项目实际注册内容为准,不要根据其他插件的表达式语法直接套用。
配置注意事项
id应保持全局唯一,避免多个图纸使用相同 ID。chance使用0-1范围的小数表示成功率,例如1表示完整成功率。forge-time的单位是秒,不是游戏刻。max-forge-count设置为0时表示不限制制作次数。- 物品数量计算结果会向上取整。
show-lore-sort会覆盖全局成功产物 Lore 排版。optional-item的mutex-group只有同组材料之间产生互斥,default不参与互斥。extra-condition需要通过type指定检查阶段。- 使用经济货币、物品库物品、PlaceholderAPI 占位符或其他外部功能时,还需要确保对应功能在服务器中可用。