Skip to content

玩法规则完整参考

玩法规则放在 plugins/SealItems/rules/<玩法>/。以下内容来自 SealItems 1.0.0 随 JAR 交付的完整中文注释示例。

通用使用方法

  1. 先复制对应 示例-*.yml,去掉文件名的 示例- 前缀。
  2. 修改顶层稳定 ID;已上线后不要改 ID,除非已经准备数据迁移。
  3. 在物品定义的 gameplay 节点引用该规则。
  4. 执行 /si admin system reload <玩法> config;不确定目标名称时使用 all
  5. 状态命令确认发布成功后,分别测试成功、材料不足、背包已满、断线和重启恢复。

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: []