外观
玩法规则完整参考
玩法规则放在 plugins/SealItems/rules/<玩法>/。以下内容来自 SealItems 1.0.0 随 JAR 交付的完整中文注释示例。
通用使用方法
- 先复制对应
示例-*.yml,去掉文件名的示例-前缀。 - 修改顶层稳定 ID;已上线后不要改 ID,除非已经准备数据迁移。
- 在物品定义的
gameplay节点引用该规则。 - 执行
/si admin system reload <玩法> config;不确定目标名称时使用all。 - 状态命令确认发布成功后,分别测试成功、材料不足、背包已满、断线和重启恢复。
WARNING
示例文件本身永远不加载。重载失败时插件继续使用上一份正常快照,因此“旧玩法还能用”不代表新配置成功。
品质
文件位置:rules/qualities/示例-品质.yml
yaml
# 文件名以“示例-”开头,不会加载;同一文件可写多个品质。
demo_common:
# 品质等级;数值越高代表品质越高,也可用于费用公式。
rank: 10
# 玩家看到的品质名。
display-name: '<white>普通'
# 品质在物品上的显示方式。
display:
# {quality} 是品质名,{name} 是物品名。
item-name: '{quality} {name}'
# 插入物品说明的品质行。
lore: ['<gray>普通品质']
# 该品质覆盖的词条数量。
slots:
# 主词条容量与初始数量。
primary: { capacity: 1, initial: 1 }
# 副词条容量与初始数量。
secondary: { capacity: 1, initial: 1 }
# 稀有品质示例。
demo_epic:
# 品质等级。
rank: 30
# 玩家看到的品质名。
display-name: '<light_purple>史诗'
# 物品显示方式。
display:
# 名称格式。
item-name: '{quality} {name}'
# 品质说明。
lore: ['<light_purple>史诗品质']
# 史诗品质的词条数量。
slots:
# 主词条容量与初始数量。
primary: { capacity: 1, initial: 1 }
# 副词条容量与初始数量。
secondary: { capacity: 1, initial: 1 }词条
文件位置:rules/affixes/示例-词条.yml
yaml
# 文件名以“示例-”开头,不会加载;词条和词条规则可写在同一文件。
demo_power:
# 玩家看到的词条名。
display-name: '<red>力量'
# primary 为主词条,secondary 为副词条。
slot: primary
# 同词条池中的抽取权重。
weight: 100
# 这条词条加入的词条池。
pools: [demo_weapon_primary]
# 允许出现该词条的物品标签。
applies-to:
# 必须同时具备这些标签;[] 表示不限制。
all-tags: [weapon]
# 至少具备一个标签;[] 表示不限制。
any-tags: []
# 具备任一标签便排除;[] 表示不排除。
none-tags: [cosmetic]
# 物品上的词条说明;{values} 会替换为实际数值。
lore: ['<red>{name} <white>{values} <dark_gray>[T{tier}]']
# 可抽取的词条阶级。
tiers:
# 第一阶词条。
1:
# 物品词条等级达到此值后可抽到。
unlock-at: 1
# 同词条不同阶级之间的权重。
weight: 100
# 该阶提供的属性。
attributes:
# 属性名由 config.yml 选择的属性插件提供。
physical_attack:
# 直接增加的数值。
add:
# triangular 更常靠近 mode;uniform 在范围内平均随机。
algorithm: triangular
# 洗练保底更偏向高值;删除本行则不偏向。
pity-direction: higher
# 最小值。
min: 8
# 最常出现的值。
mode: 12
# 最大值。
max: 18
# 数值变化间隔。
step: 1
# 副词条示例。
demo_speed:
# 玩家看到的词条名。
display-name: '<aqua>坚韧'
# 副词条。
slot: secondary
# 抽取权重。
weight: 80
# 加入副词条池。
pools: [demo_weapon_secondary]
# 物品说明格式。
lore: ['<aqua>{name} <white>{values}']
# 可抽取阶级。
tiers:
# 第一阶。
1:
# 解锁等级。
unlock-at: 1
# 阶级权重。
weight: 100
# 提供的属性。
attributes:
# 最大生命属性。
max_health:
# 最终百分比。
total-percent:
# 在最小值和最大值之间平均随机。
algorithm: uniform
# 洗练保底更偏向高值。
pity-direction: higher
# 最小值。
min: 0.03
# 最大值。
max: 0.08
# 数值变化间隔。
step: 0.01
# 第二个主词条示例。
demo_precision:
# 第二个主词条,用于重铸时提供替换候选。
display-name: '<gold>锋锐'
# 主词条。
slot: primary
# 抽取权重。
weight: 80
# 加入主词条池。
pools: [demo_weapon_primary]
# 只用于武器。
applies-to: { all-tags: [weapon], any-tags: [], none-tags: [] }
# 物品说明格式。
lore: ['<gold>{name} <white>{values}']
# 可抽取阶级。
tiers:
# 第一阶。
1:
# 一级即可抽到。
unlock-at: 1
# 阶级权重。
weight: 100
# 提供的属性。
attributes:
# 物理攻击属性。
physical_attack:
# 固定增加。
add:
# 范围内平均随机。
algorithm: uniform
# 洗练保底更偏向高值。
pity-direction: higher
# 最小、最大值与间隔。
min: 5
# 最大值。
max: 10
# 数值变化间隔。
step: 1
# 第三个主词条候选;装备仍只生成两条主词条。
demo_momentum:
# 玩家看到的词条名。
display-name: '<yellow>破势'
# 主词条。
slot: primary
# 抽取权重。
weight: 60
# 加入主词条池。
pools: [demo_weapon_primary]
# 只用于武器。
applies-to: { all-tags: [weapon], any-tags: [], none-tags: [] }
# 物品说明格式。
lore: ['<yellow>{name} <white>{values}']
# 可抽取阶级。
tiers:
# 第一阶。
1:
# 一级即可抽到。
unlock-at: 1
# 阶级权重。
weight: 100
# 提供的属性。
attributes:
# 物理攻击属性。
physical_attack:
# 最终百分比增加。
total-percent:
# 范围内平均随机。
algorithm: uniform
# 洗练保底更偏向高值。
pity-direction: higher
# 最小值为 4%。
min: 0.04
# 最大值为 8%。
max: 0.08
# 每次增加 1%。
step: 0.01
# 第二个副词条示例。
demo_vitality:
# 第二个副词条,用于重铸时提供替换候选。
display-name: '<green>生机'
# 副词条。
slot: secondary
# 抽取权重。
weight: 60
# 加入副词条池。
pools: [demo_weapon_secondary]
# 物品说明格式。
lore: ['<green>{name} <white>{values}']
# 可抽取阶级。
tiers:
# 第一阶。
1:
# 一级即可抽到。
unlock-at: 1
# 阶级权重。
weight: 100
# 提供的属性。
attributes:
# 最大生命属性。
max_health:
# 固定增加。
add:
# 范围内平均随机。
algorithm: uniform
# 洗练保底更偏向高值。
pity-direction: higher
# 最小、最大值与间隔。
min: 4
# 最大值。
max: 8
# 数值变化间隔。
step: 1
# 武器词条规则。
demo_weapon_affixes:
# 物品未写 affix-level 时使用的等级。
default-affix-level: 20
# 主、副词条使用的词条池。
pools:
# 主词条池。
primary: demo_weapon_primary
# 副词条池。
secondary: demo_weapon_secondary
# 默认词条数量;物品或品质可覆盖。
slots:
# 主词条容量与初始数量。
primary: { capacity: 2, initial: 2 }
# 副词条容量与初始数量。
secondary: { capacity: 1, initial: 1 }鉴定
文件位置:rules/identification/示例-鉴定.yml
yaml
# 文件名以“示例-”开头,不会加载;同一文件可写多种鉴定规则。
demo_identification:
# 每次鉴定的费用;所有玩法都使用相同的费用列表写法。
costs:
# SealItems 材料;鉴定只允许填写一种。
- type: seal-item
# 材料物品编号。
id: demo_identify_scroll
# 每次消耗数量,范围 1 到 64。
amount: 1词条改造
文件位置:rules/modification/示例-词条改造.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多套规则。
demo_modification:
# 重铸会重抽玩家选中的一条或多条词条。
reforge:
# 每次重铸的费用;所有玩法都使用相同的费用列表写法。
costs:
# selected_affixes 是选中的词条数;选 2 条时消耗 2 × 2 = 4 个。
- { type: seal-item, id: demo_reforge_stone, amount: 'selected_affixes * 2' }
# 可继续追加金币:{ type: vault, amount: '100 + quality_rank * 25' }。
# 连续未命中目标阶级时的保底;删除本段则无保底。
pity:
# 第几次保证命中。
guarantee-on-attempt: 5
# 保底可命中的词条阶级。
tiers: [1]
# 洗练默认重抽全部词条数值,玩家可锁一条或多条。
refine:
# 每次洗练的基础费用。
costs:
# affix_count 是总数,locked_affixes 是锁定数;共 3 条、锁 1 条时为 max(1, 3 - 1) = 2 个。
- { type: seal-item, id: demo_refine_stone, amount: 'max(1, affix_count - locked_affixes)' }
# 可继续追加点券:{ type: playerpoints, amount: 'max(1, affix_count - locked_affixes) * 10' }。
# 洗练保底;删除本段则无保底。
pity:
# 第几次保证达到目标数值。
guarantee-on-attempt: 5
# 洗练保底使用各词条中的 pity-direction,不填写 tiers。
# 锁定词条的数量与附加费用。
locks:
# 最多锁定数量;填 0 表示不允许锁定。
max: 2
# 锁定费用会叠加在洗练基础费用上。
costs:
# locked_affixes 是锁定数;锁 2 条就消耗 2 个。
- { type: seal-item, id: demo_locking_wax, amount: 'locked_affixes' }
# 可继续追加金币:{ type: vault, amount: 'locked_affixes * 50' }。孔位
文件位置:rules/sockets/示例-孔位.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多套孔位规则。
demo_weapon_sockets:
# 这套规则可出现的孔型。
types:
# 攻击孔编号。
attack:
# 玩家看到的孔型名。
display-name: '<red>攻击孔'
# 可放入的宝石分类。
accepts: [fire]
# 通用孔编号。
universal:
# 玩家看到的孔型名。
display-name: '<light_purple>通用孔'
# 可放入的宝石分类。
accepts: [fire, elemental]
# 物品生成孔位时的设置。
profile:
# 装备场景;宝石可按该值追加属性。
context: weapon
# 总孔位数量的抽取权重。
potential:
# 80% 为一个孔,20% 为两个孔。
weights: { 1: 80, 2: 20 }
# 生成时已解锁的孔位数。
initially-open: 1
# 各孔型的抽取权重。
socket-type-weights: { attack: 80, universal: 20 }
# 解锁新孔位的规则。
unlock:
# random 随机孔型,selected 由玩家选择。
result: random
# 可解锁的孔型。
allowed-types: [attack, universal]
# 解锁费用;所有玩法都使用相同的费用列表写法。
costs:
# SealItems 材料。
- { type: seal-item, id: demo_gem_dust, amount: 2 }
# 原版材料。
- { type: vanilla, material: AMETHYST_SHARD, amount: 4 }
# 需要金币时可继续追加 { type: vault, amount: 100 }。
# 解锁成功率与保底。
success:
# 本次成功率。
chance: '60%'
# 连续第几次必定成功;删除本行则无保底。
guarantee-on-attempt: 4
# 失败时消耗哪些投入。
failure:
# true 消耗材料。
consume-items: true
# 没有配置外部货币时保持 false。
consume-currency: false
# 解锁不投入宝石,保持 false。
consume-input-gem: false
# 解锁不覆盖旧宝石,保持 false。
destroy-existing-gem: false
# 镶嵌宝石的规则。
insert:
# 镶嵌费用。
costs:
# SealItems 材料。
- { type: seal-item, id: demo_gem_dust, amount: 1 }
# 镶嵌成功率。
success: { chance: '100%' }
# 失败处理。
failure: { consume-items: true, consume-input-gem: true, destroy-existing-gem: false }
# 改变孔型的规则。
convert:
# random 随机孔型,selected 由玩家选孔型。
result: random
# 可改成的孔型。
allowed-types: [attack, universal]
# random 时,true 不会再次得到当前孔型。
exclude-current: true
# 改孔费用。
costs:
# SealItems 材料。
- { type: seal-item, id: demo_gem_dust, amount: 3 }
# 改孔成功率。
success: { chance: '100%' }
# 失败处理。
failure: { consume-items: true, consume-currency: false, consume-input-gem: false, destroy-existing-gem: false }
# 拆卸宝石的规则。
remove:
# return-gem 返还宝石,destroy-gem 销毁宝石。
result: return-gem
# 拆卸费用。
costs:
# SealItems 材料。
- { type: seal-item, id: demo_gem_dust, amount: 1 }
# 拆卸成功率。
success: { chance: '100%' }
# 失败处理。
failure: { consume-items: true, consume-currency: false, consume-input-gem: false, destroy-existing-gem: false }共鸣
文件位置:rules/resonance/示例-共鸣.yml
yaml
# 文件名以“示例-”开头,不会加载;同一文件可写多种共鸣。
demo_flame_resonance:
# 玩家看到的共鸣名称。
display-name: '<red>烈焰回响'
# 生效宝石提供的共鸣点数。
points:
# 每颗指定分类宝石提供的点数。
categories: { fire: 1 }
# 每颗指定宝石额外提供的点数。
items: { demo_ruby: 2 }
# 达到点数后生效;只使用已达到的最高档。
thresholds:
# 三点档。
3:
# 直接增加 5 点物理攻击。
physical_attack: { add: 5 }
# 六点档。
6:
# 直接增加 10 点物理攻击。
physical_attack: { add: 10 }强化
文件位置:rules/enhancement/示例-强化.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多套强化规则。
demo_weapon_enhancement:
# 这套规则的最高强化等级。
max-level: 20
# 使用限制;删除本段表示不限制。
conditions:
# 必须同时拥有的权限。
permissions-all: []
# 拥有其中任一权限即可;[] 表示不检查。
permissions-any: []
# 允许使用的世界;[] 表示所有世界。
worlds-allow: []
# 禁止使用的世界。
worlds-deny: []
# 最低玩家经验等级。
minimum-experience-level: 0
# 物品至少达到该强化等级。
minimum-enhancement-level: 0
# 当前等级超过该值后不能再发起强化;目标上限为 +20,所以填 19。
maximum-enhancement-level: 19
# any 不限制突破状态;required 只允许突破,forbidden 禁止突破。
breakthrough: any
# 幸运粉尘、保护符和直升卷轴的区别写在各自的物品 gameplay.enhancement-material 中。
# 玩家可选择的强化方式。
schemes:
# 普通强化编号。
normal:
# 玩家在强化界面看到的名称。
display-name: '<gold>普通强化'
# 可按目标等级分段设置。
attempts:
# 这一段覆盖目标 +1 到 +14。
- target-levels: [1, 14]
# 本次强化费用;材料与货币会同时收取。
costs:
# 原版材料;SealItems 材料改用 type: seal-item 和 id。
- type: vanilla
# 原版材质名。
material: AMETHYST_SHARD
# target_level 是目标等级;目标 +10 时为 1 + floor(10 / 5) = 3 个。
amount: '1 + floor(target_level / 5)'
# 可继续追加金币:{ type: vault, amount: '100 + target_level * 50 + quality_rank * 20' }。
# 成功率与保底。
success:
# target_level 是目标等级;clamp 把结果限制在 20% 到 95%。
# 例如目标 +5:96 - 5 × 4 = 76%,最终为 76%。
base-percent: 'clamp(96 - target_level * 4, 20, 95)'
# 每次连续失败增加的百分点。
failure-bonus-percent: '5'
# 幸运和失败加成后的最高成功率。
cap-percent: '95'
# 连续第几次必定成功;删除本行则无硬保底。
hard-guarantee-at: 6
# 相同名称的强化方式共享失败进度。
progress-group: demo_normal
# 失败后的等级结果;权重合计为 100。
failure-outcomes:
# 保持等级的权重。
keep: '70'
# 降级的级数与权重。
downgrade: { 1: '30' }
# 目标 +15 到 +20;失败时可能降 2 级。
- target-levels: [15, 20]
# 本次强化费用;材料与货币会同时收取。
costs:
# 紫水晶碎片。
- type: vanilla
# 原版材质名。
material: AMETHYST_SHARD
# target_level 是目标等级;目标 +20 时为 1 + floor(20 / 5) = 5 个。
amount: '1 + floor(target_level / 5)'
# 成功率与保底。
success:
# target_level 是目标等级;clamp 把结果限制在 20% 到 95%。
# 例如目标 +20:96 - 20 × 4 = 16%,限制后为 20%。
base-percent: 'clamp(96 - target_level * 4, 20, 95)'
# 每次连续失败增加 5 个百分点。
failure-bonus-percent: '5'
# 最终成功率不超过 95%。
cap-percent: '95'
# 连续第 6 次必定成功。
hard-guarantee-at: 6
# +15 到 +20 共用高阶失败进度。
progress-group: demo_high
# 失败结果权重合计为 100。
failure-outcomes:
# 70 权重保持等级。
keep: '70'
# 20 权重降 1 级,10 权重降 2 级。
downgrade: { 1: '20', 2: '10' }
# 各等级段开放的强化方式。
stages:
# +1 到 +14 使用本阶段;+15 由下方 nodes 单独设置。
- target-levels: [1, 14]
# 界面显示的阶段名。
name: '<gold>装备强化'
# 可选择的强化方式。
schemes: [normal]
# +16 到 +19 使用本阶段;+20 由下方 nodes 单独设置。
- target-levels: [16, 19]
# 界面显示的阶段名。
name: '<light_purple>觉醒强化'
# 可选择的强化方式。
schemes: [normal]
# 特定目标等级的额外设置。
nodes:
# 目标 +15 的设置。
15:
# true 表示达到后不会再降到该等级以下。
checkpoint: true
# 该等级允许的强化方式。
schemes: [normal]
# 达到后激活的成长里程碑。
milestone: awakening
# 只覆盖这个目标等级的强化设置。
overrides:
# 覆盖 normal 方式。
normal:
# +15 使用独立失败进度;需要独立费用时可在这里增加 costs。
success: { progress-group: demo_level15 }
# 目标 +20 的设置。
20:
# +20 是新的保底等级。
checkpoint: true
# 普通强化与直升后都使用同一目标规则。
schemes: [normal]
# 达到后激活满级里程碑。
milestone: ascended
# +20 使用独立费用与失败进度。
overrides:
# 覆盖 normal 方式。
normal:
# 需要独立费用时可在这里增加 costs。
success: { progress-group: demo_level20 }
# 每级强化提供的属性。
growth:
# 按等级段设置每级成长。
segments:
# +1 到 +20 每级相同。
- levels: [1, 20]
# 每升一级增加的属性。
every-level:
# 每级增加 2 点物理攻击。
- { attribute: physical_attack, operation: add, value: '2' }
# 到达指定等级时的一次性奖励。
milestones:
# 觉醒奖励。
- id: awakening
# 玩家看到的里程碑名称。
display-name: '<light_purple>觉醒'
# 达到 +15 时生效。
level: 15
# 里程碑属性。
contributions:
# 最终增加 5% 物理攻击。
- { attribute: physical_attack, operation: total-percent, value: '0.05' }
# 满级奖励。
- id: ascended
# 玩家看到的里程碑名称。
display-name: '<gold>升华'
# 达到 +20 时生效。
level: 20
# 满级额外属性。
contributions:
# 最终再增加 10% 物理攻击。
- { attribute: physical_attack, operation: total-percent, value: '0.10' }
# 强化等级改变物品显示的方式。
appearance:
# 使用不高于当前等级的最高档。
thresholds:
# 0 级外观必须存在。
0:
# 该档外观编号。
id: normal
# 追加在物品名称后的文字。
name-suffix: ' <gold>+{level}'
# 强化说明标题。
lore-header: '<gold>强化 +{level}'
# 每条成长属性的显示格式。
contribution-line: '<gray>{attribute} <green>{value}'
# 里程碑显示格式。
milestone-line: '<light_purple>{milestone}'
# 保底进度显示格式。
progress-line: '<aqua>保底:{progress}'
# false 不强制显示附魔光效。
glint: false
# 资源包模型编号;不用资源包时删除。
custom-model-data: 10001
# 配套 Mod 显示的强化数字颜色。
badge-color: '#F4D35E'
# none 不显示槽位巡光。
slot-effect: none
# 槽位巡光颜色。
slot-effect-color: '#55C7C1'
# 槽位巡光速度,范围 0.1 到 4。
slot-effect-speed: 1.0
# 达到 +15 后使用满级外观。
15:
# 满级外观编号。
id: awakened
# 满级名称后缀。
name-suffix: ' <light_purple>✦ +{level}'
# 满级说明标题。
lore-header: '<light_purple>觉醒 +{level}'
# 满级成长属性格式。
contribution-line: '<gray>{attribute} <light_purple>{value}'
# 满级里程碑格式。
milestone-line: '<gold>{milestone}'
# 满级保底进度格式。
progress-line: '<aqua>保底:{progress}'
# true 强制显示附魔光效。
glint: true
# 满级资源包模型编号。
custom-model-data: 10015
# 满级强化数字颜色。
badge-color: '#FFE08A'
# 配套 Mod 内置的方形槽位巡光。
slot-effect: echo-trace
# 巡光颜色。
slot-effect-color: '#55C7C1'
# 巡光速度。
slot-effect-speed: 1.0
# 达到 +20 后使用升华外观。
20:
# 升华外观编号。
id: ascended
# 升华名称后缀。
name-suffix: ' <gold>✦ +{level}'
# 升华说明标题。
lore-header: '<gold>升华 +{level}'
# 升华成长属性格式。
contribution-line: '<gray>{attribute} <gold>{value}'
# 升华里程碑格式。
milestone-line: '<gold>{milestone}'
# 升华保底格式。
progress-line: '<aqua>保底:{progress}'
# true 显示附魔光效。
glint: true
# 升华模型编号。
custom-model-data: 10020
# 升华数字颜色。
badge-color: '#FFE08A'
# 配套 Mod 的金色槽位巡光。
slot-effect: gold-trace
# 巡光颜色。
slot-effect-color: '#FFE08A'
# 巡光速度。
slot-effect-speed: 1.2绑定
文件位置:rules/binding/示例-绑定.yml
yaml
# 文件名以“示例-”开头,不会加载;所有物品都可引用绑定规则。
demo_binding:
# identify 为鉴定后绑定,equip 为首次装备时绑定;可同时填写。
bind-on: [identify, equip]
# 主人主动解绑的高代价规则;删除本段则不允许玩家解绑。
unbind:
# 材料与货币会同时收取。
costs:
# SealItems 材料;品质 2 时为 1 + 2 = 3 个。
- { type: seal-item, id: demo_unbind_contract, amount: '1 + quality_rank' }
# 原版材料;镶嵌 2 颗宝石时为 1 + 2 = 3 个。
- { type: vanilla, material: NETHER_STAR, amount: '1 + gem_count' }
# 可继续追加金币:{ type: vault, amount: '10000 + quality_rank * 5000 + enhancement_level * 2500 + gem_count * 1000' }。合成
文件位置:rules/crafting/示例-合成.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多个合成配方。
demo_basic_recipe:
# 配方在合成界面的显示信息。
display:
# 玩家看到的名称。
name: '<gray>示例基础零件'
# 详情说明。
description: ['<gray>为长剑配方准备材料。']
# 界面分类编号。
category: general
# 同分类内越小越靠前。
order: 10
# 搜索关键词。
keywords: [示例, 零件]
# main-output 使用最终产物作为图标。
icon: main-output
# 是否需要先学习图纸。
knowledge:
# false 表示直接可制作。
required: false
# locked 显示锁定项,hidden 完全隐藏未学习配方。
unlearned-visibility: locked
# 单次制作数量上限。
batch:
# 每次最多制作 16 份。
max-per-action: 16
# 制作条件;all 全部满足,any 满足一项。
conditions:
# 至少达到一级经验。
all: [{ type: experience-level, minimum: 1 }]
# 不额外限制。
any: []
# 每份固定消耗的材料。
materials:
# accepts 中任意一种可满足这一项。
- amount: 2
# 支持原版材质、SealItems 物品或物品标签。
accepts:
- { type: vanilla, material: IRON_INGOT }
- { type: seal-item, id: demo_iron_scrap }
- { type: seal-tag, tag: demo }
# 制作后返还的容器;删除本段则不返还。
return: { type: vanilla, material: BUCKET, amount: 1 }
# 工具不作为材料消耗,只损失耐久。
tools:
# 铁镐工具。
- accepts: [{ type: vanilla, material: IRON_PICKAXE }]
# 每份损失的耐久。
damage: 1
# false 表示耐久不足时不允许制作。
allow-break: false
# 材料之外的费用。
costs:
# 经验值费用;经验等级改用 type: experience-levels。
- { type: experience-points, amount: 2 }
# 需要金币时可继续追加 { type: vault, amount: '10' }。
# 配方只有一个固定产物,没有成功率或附加概率产物。
output:
# vanilla 为原版物品。
type: vanilla
# 原版材质。
material: IRON_NUGGET
# 每份产出数量。
amount: 1
# 图纸解锁的长剑配方。
demo_blade_recipe:
# 长剑配方显示信息。
display:
# 玩家看到的名称。
name: '<gold>示例回响长剑'
# 详情说明。
description: ['<gray>学习示例图纸后制作。']
# 界面分类。
category: general
# 同分类排序。
order: 20
# 搜索关键词。
keywords: [示例, 长剑]
# 使用产物图标。
icon: main-output
# 图纸学习要求。
knowledge:
# true 表示必须先学习。
required: true
# 未学习时显示锁定项。
unlearned-visibility: locked
# 单次最多制作一把。
batch: { max-per-action: 1 }
# 制作条件。
conditions:
# 不再叠加其他配方前置;图纸只负责解锁本配方。
all: []
# 拥有任一权限即可;这里不额外限制。
any: []
# 固定消耗材料。
materials:
# 八个铁锭。
- amount: 8
# 接受原版铁锭。
accepts: [{ type: vanilla, material: IRON_INGOT }]
# 不需要工具时写空列表。
tools: []
# 本配方不额外收费;需要时增加 costs 列表。
# 经验值示例:costs: [{ type: experience-points, amount: 5 }];经验等级改用 experience-levels。
# 唯一固定产物。
output:
# 产出 SealItems 物品。
type: seal-item
# 物品编号。
id: demo_blade
# 每份产出一把。
amount: 1
# true 表示制作后直接绑定给玩家。
bind-to-recipient: true分解
文件位置:rules/decomposition/示例-分解.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多套分解规则。
demo_equipment_decomposition:
# 单次最多分解的物品数量。
maximum-batch: 64
# 使用这套规则需要的权限;删除本行表示不限制。
permission: sealitems.decompose.demo
# 允许分解的世界;[] 表示所有世界。
allowed-worlds: []
# 左侧物品确认后,右侧显示并发放这些产物。
rewards:
# 每件物品必定获得的产物。
fixed:
# SealItems 产物。
- type: seal-item
# 物品编号。
item: demo_iron_scrap
# 数量在 2 到 4 之间平均随机。
amount: { algorithm: uniform, minimum: 2, maximum: 4 }
# true 时产物数量受装备耐久比例影响。
durability-affected: true
# true 时产物绑定给操作者。
bind-to-recipient: false
# 原版产物。
- type: vanilla
# 原版材质。
material: DIAMOND
# 固定产出一个。
amount: 1
# 不受耐久影响。
durability-affected: false
# 需要金币产物时可再加:{ type: vault, amount: '10' };点券则把 type 改为 playerpoints。
# 需要返还经验值时可再加:{ type: experience, amount: 5 }。
# 概率产物;用于右侧预计产物分页显示。
random:
# 独立判断组。
- id: demo_bonus
# independent 每项独立判断 chance。
mode: independent
# 本组判断次数。
rolls: 1
# 本组可得产物。
entries:
# 25% 概率额外获得一个宝石粉尘。
- chance: '25'
# 命中后获得一个示例宝石粉尘。
reward: { type: seal-item, item: demo_gem_dust, amount: 1 }
# 权重抽取组。
- id: demo_weighted
# weighted 按 weight 选一项。
mode: weighted
# 抽取一次。
rolls: 1
# 备选产物。
entries:
# 80 权重获得一个铁粒。
- weight: 80
# 命中后获得一个铁粒。
reward: { type: vanilla, material: IRON_NUGGET, amount: 1 }
# 20 权重获得两个铁粒。
- weight: 20
# 命中后获得两个铁粒。
reward: { type: vanilla, material: IRON_NUGGET, amount: 2 }
# 每次确认收取的费用。
costs:
# SealItems 材料;amount 是每次固定数量,per-item 是每件追加数量;分解 3 件需 1 + 3 = 4 个。
- { type: seal-item, id: demo_gem_dust, amount: 1, per-item: 1 }
# 金币可写 { type: vault, amount: '10', per-item: '5' };点券改用 playerpoints。
# 经验值可写 { type: experience-points, amount: 0, per-item: 1 }。
# 特殊状态如何处理。
state:
# allow-warn 允许但二次确认,block 禁止未鉴定物品。
unidentified: allow-warn
# allow-warn 允许但二次确认,block 禁止有附魔物品。
enchanted: allow-warn
# return 返还宝石,block 禁止,convert 按下方规则转化。
gems: convert
# 耐久如何影响标记为 durability-affected 的产物。
durability:
# bands 按区间倍率;ignore 忽略,proportional 按剩余比例。
mode: bands
# 从上到下匹配剩余耐久比例。
bands:
# 剩余 50% 以上保持原数量。
- { minimum-remaining-percent: '50', multiplier: '1' }
# 剩余不足 50% 时按一半计算。
- { minimum-remaining-percent: '0', multiplier: '0.5' }
# 达到装备状态后追加产物。
bonuses:
# 强化奖励编号。
- id: demo_enhanced_bonus
# 至少拥有的词条数。
minimum-affix-count: 1
# 必须包含的词条标签;[] 表示不限制。
required-affix-tags: []
# 最低强化等级。
minimum-enhancement-level: 10
# 最高强化等级;删除本行表示不设上限。
maximum-enhancement-level: 15
# 达成后追加的产物。
rewards:
- { type: vanilla, material: DIAMOND, amount: 1 }
# gems 为 convert 时,各宝石转成的产物。
gem-conversions:
# 示例红宝石的转化。
- gem: demo_ruby
# 每颗宝石返还的产物。
rewards:
- { type: seal-item, item: demo_gem_dust, amount: 2 }掉落
文件位置:rules/loot/示例-掉落.yml
yaml
# 文件名以“示例-”开头,不会加载;一个文件可写多种生物规则。
demo_zombie_loot:
# 一份规则可同时用于多种原版生物。
entities: [ZOMBIE, HUSK]
# 生效世界;删除本行表示所有世界。
worlds: [world]
# 允许的生成原因;删除本行表示不限制。
spawn-reasons: [NATURAL, SPAWNER]
# killer 优先放入击杀者背包,ground 掉在地上。
delivery: killer
# actionbar 显示提示,none 不提示。
notification: actionbar
# 每项独立判断概率的直接掉落。
drops:
# 必定掉落一把未鉴定长剑,便于直接测试鉴定。
- item: demo_blade
# 该项掉落概率。
chance: '100%'
# 固定数量或 min/max 区间。
amount: 1
# 指定品质;删除本行则按物品配置生成。
quality: demo_common
# identified 或 unidentified;删除本行则按物品配置生成。
identification: unidentified
# false 表示掉落时不直接绑定;鉴定后按物品绑定规则处理。
bind-to-recipient: false
# 必定掉落胸甲,供套装图鉴与两件套测试。
- item: demo_chestplate
# 该项掉落概率。
chance: '100%'
# 固定掉落一件。
amount: 1
# false 表示不直接绑定。
bind-to-recipient: false
# 必定掉落图纸,供学习与合成测试。
- item: demo_blueprint
# 该项掉落概率。
chance: '100%'
# 固定掉落一张。
amount: 1
# false 表示不直接绑定。
bind-to-recipient: false
# 需要分组抽取的掉落。
groups:
# 从两项中按权重选择一项。
- mode: choose-one
# 每次击杀执行本组的概率。
trigger-chance: '100%'
# 触发后抽取次数。
rolls: 1
# 备选产物。
entries:
# 示例铁屑。
- item: demo_iron_scrap
# 相对权重。
weight: 30
# 固定数量。
amount: 1
# 宝石粉尘。
- item: demo_gem_dust
# 相对权重。
weight: 70
# 随机数量区间。
amount: { min: 1, max: 2 }套装
文件位置:rules/sets/示例-套装.yml
yaml
# 文件名以“示例-”开头,不会加载;套装成员在物品的 gameplay.set 中登记。
demo_adventurer:
# 图鉴分类编号。
category: general
# 同分类内越小越靠前。
order: 100
# 玩家看到的套装名称。
display-name: '<aqua>示例冒险者'
# 图鉴中的套装说明。
description: ['<gray>长剑与胸甲组成两件套。']
# 图鉴图标使用的 SealItems 物品编号。
icon-item: demo_blade
# distinct-members 每种成员计一次,equipped-slots 按有效槽位计数。
counting: distinct-members
# cumulative 累加全部节点,highest-only 只使用最高节点。
reward-mode: cumulative
# 达到件数后激活的奖励。
nodes:
# 一件套节点。
- id: first_step
# 装备一件成员时生效。
pieces: 1
# 玩家看到的节点名称。
display-name: '<green>初次武装'
# 节点说明。
description: ['<gray>装备任意一件套装成员。']
# 本节点的奖励。
rewards:
# 属性奖励。
attributes:
# 增加 5 点最大生命。
- { attribute: max_health, operation: add, value: '5' }
# 机制标记;没有时写 []。
mechanics: []
# 两件套节点。
- id: ready_to_go
# 同时装备两件成员时生效。
pieces: 2
# 玩家看到的节点名称。
display-name: '<gold>整装待发'
# 节点说明。
description: ['<gray>同时装备长剑与胸甲。']
# 本节点的奖励。
rewards:
# 属性奖励。
attributes:
# 最终增加 10% 物理攻击。
- { attribute: physical_attack, operation: total-percent, value: '0.10' }
# 机制扩展奖励;没有已安装的扩展时写 []。
mechanics: []