跳到正文

品质、词条与方案

这三个概念共同决定“装备生成时抽出什么”。

  • 品质:展示等级及主/副词条槽容量。
  • 词条:一个可抽取效果,含适用条件、tier 和属性数值。
  • 方案:某类物品使用哪些主/副词条池及默认槽位。

1. 品质

文件:qualities/*.yml

yaml
rare:
  rank: 20
  display-name: '<blue>稀有'
  display:
    item-name: '{quality} {name}'
    lore: ['<blue>稀有品质']
  slots:
    primary: { capacity: 2, initial: 1 }
    secondary: { capacity: 1, initial: 1 }

epic:
  rank: 30
  display-name: '<light_purple>史诗'
  display:
    item-name: '{quality} {name}'
    lore: ['<light_purple>史诗品质']
  slots:
    primary: { capacity: 3, initial: 2 }
    secondary: { capacity: 2, initial: 1 }

rank 用于稳定排序/迁移依据,不直接展示。display 可改变最终名称和 Lore。品质槽位会参与装备的最终槽位决策,物品自身显式覆盖以物品规则为准。

2. 词条

文件:affixes/*.yml

yaml
physical_power:
  display-name: '<red>力量'
  slot: primary
  weight: 100
  pools: [weapon_primary]
  applies-to:
    all-tags: [weapon]
    none-tags: [cosmetic]
  lore: ['<red>{name} <white>{values} <dark_gray>[T{tier}]']
  tiers:
    1:
      unlock-at: 1
      weight: 100
      attributes:
        sealattributes:physical_attack:
          add:
            algorithm: triangular
            pity-direction: higher
            min: 8
            mode: 12
            max: 18
            step: 1

顶层字段

  • display-name:展示名。
  • slotprimarysecondary
  • weight:词条在池中的基础权重。
  • pools:可加入的命名池。
  • applies-to:按物品标签过滤。
  • lore:展示模板。
  • tiers:tier 编号到解锁等级、权重和属性的映射。

标签过滤

yaml
applies-to:
  all-tags: [equipment, weapon]
  any-tags: [sword, axe]
  none-tags: [cosmetic]

物品必须包含全部 all-tags,至少命中一个 any-tags,且不能包含任何 none-tags。省略的组不参与限制。

3. 随机算法

固定值:

yaml
add: 15

均匀随机:

yaml
add:
  algorithm: uniform
  pity-direction: higher
  min: 10
  max: 20
  step: 1

三角随机,更容易靠近 mode

yaml
add:
  algorithm: triangular
  pity-direction: higher
  min: 8
  mode: 12
  max: 18
  step: 1

离散加权值:

yaml
add:
  algorithm: weighted
  pity-direction: higher
  values:
    - { value: 10, weight: 70 }
    - { value: 15, weight: 25 }
    - { value: 20, weight: 5 }

pity-direction: higher 表示更高值更好,lower 表示更低值更好,供重铸保底比较。固定数字不需要方向。

4. 词条 tier

yaml
tiers:
  1:
    unlock-at: 1
    weight: 100
    attributes: { ... }
  2:
    unlock-at: 30
    weight: 30
    attributes: { ... }

装备的 affix-level 必须达到 unlock-at 才能抽到该 tier。tier 自身 weight 决定多个可用 tier 的相对权重。

5. 词条方案

文件:affix-schemes/*.yml

yaml
standard_weapon:
  default-affix-level: 20
  pools:
    primary: weapon_primary
    secondary: weapon_secondary
  slots:
    primary: { capacity: 2, initial: 1 }
    secondary: { capacity: 2, initial: 1 }

方案把主词条槽接到 weapon_primary 池、副词条槽接到 weapon_secondary 池。只有 slot 类型、pool、标签和 tier 等条件都满足的词条才是候选。

6. 完整生成链

  1. /si give 请求物品。
  2. 选择固定品质或按权重抽品质。
  3. 合并方案、品质和物品层槽位规则。
  4. 按主/副池、标签和 affix level 构建候选。
  5. 按权重抽词条与 tier。
  6. 按算法抽属性值。
  7. 把结果写入该装备实例,之后不会因重载自动重抽。

7. 重载顺序

修改品质:/si reload qualities;修改词条:/si reload affixes;修改物品/方案引用时建议 /si reload all。配置交叉依赖会被重新验证。

常见错误包括:主词条放进副池、所有候选都被标签过滤、tier 未解锁、随机 min > max、step 不可达、保底方向缺失、属性 operation 不存在、初始槽数大于容量。

Minecraft 服务端插件使用与开发文档