Skip to content

图纸配置

图纸文件放在插件数据目录的 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-itemfailed-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: []

可选材料的实际效果取决于配置的 actionentry 内容。

额外条件

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-itemmutex-group 只有同组材料之间产生互斥,default 不参与互斥。
  • extra-condition 需要通过 type 指定检查阶段。
  • 使用经济货币、物品库物品、PlaceholderAPI 占位符或其他外部功能时,还需要确保对应功能在服务器中可用。