Skip to content

配方与星级系统

强化配方定义了一类装备的强化规则:哪些装备能用、每个星级要什么材料、成功率多少、强化后加什么属性。每个配方对应 recipes/ 目录下的一个 YAML 文件。

配方完整格式

yaml
# 配方唯一标识符
id: weapon_physical

# 显示名称(支持 MiniMessage 格式)
display_name: "<gold>物理武器强化"

# GUI 模板(引用 gui/ 目录下的模板文件名)
gui_template: strengthen_gui

# ===== 经济配置 =====
economy:
  # 货币列表(支持多货币)
  currencies:
    - provider: vault          # 经济提供者:vault | excellenteconomy
      currency_id: default     # 货币 ID(ExcellentEconomy 专用)
      base_cost: 100           # 基础费用
      cost_formula: "{base_cost} * {star} * 1.5"  # 费用公式
      display_name: "金币"     # 货币显示名称

# ===== 限制配置 =====
limits:
  # 最大星级
  max_star: 12
  # 最大锻印等级
  max_temper: 10
  # 每级锻印提供的成功率加成(百分比)
  temper_chance_bonus_per_level: 1.5
  # 成功率上限(百分比),再怎么加也不会超过这个值
  success_chance_cap: 95.0

# ===== 成功率配置 =====
# 覆盖全局 config.yml 中的 success_rates
success_rates:
  1: 100
  2: 95
  3: 85
  4: 75
  5: 65
  6: 55
  7: 45
  8: 35
  9: 25
  10: 18
  11: 12
  12: 6

# ===== 匹配规则 =====
# 决定哪些装备可以使用此配方
# 下面这些条件是"或"的关系——满足任意一个就算匹配
match:
  # 按物品来源类型匹配
  source_types:
    - minecraft
    - neigeitems

  # 按物品来源 ID 精确匹配
  source_ids:
    - "minecraft:iron_sword"
    - "minecraft:diamond_sword"
    - "neigeitems:flame_blade"

  # 按物品来源 ID 模式匹配(正则表达式)
  source_patterns:
    - "minecraft:.*_sword"
    - "neigeitems:.*_blade"

  # 按装备槽位组匹配
  slot_groups:
    - MAIN_HAND
    - OFF_HAND

  # 按 Lore 内容匹配(物品 Lore 中包含指定文本就算匹配)
  lore_contains:
    - "物理武器"
    - "近战"

  # 按属性存在匹配(物品包含任一指定属性就算匹配)
  stats_any:
    - physical_damage
    - attack_speed

# ===== 属性行定义 =====
# 强化提供的属性增长,每升一星累加
stat_lines:
  physical_damage:
    base: 5.0
    per_star: 3.0
    formula: "{base} + {per_star} * {star}"
  attack_speed:
    base: 0.1
    per_star: 0.05
    formula: "{base} + {per_star} * {star}"

# ===== 星级阶段定义 =====
stars:
  1:
    name: "★"
    stats:
      physical_damage: 5.0
      attack_speed: 0.1
    attributes:
      攻击力: 5.0
    materials:
      - item: "minecraft:iron_ingot"
        amount: 3
      - item: "neigeitems:strengthen_stone_1"
        amount: 1
    economy_override:
      currencies:
        - provider: vault
          base_cost: 50
          cost_formula: "50"
          display_name: "金币"
    structured_presentation:
      name_contributions:
        star_suffix:
          order: 99
          format: " <yellow>★"
      lore_sections:
        strengthen_info:
          order: 80
          lines:
            - "<gray>强化等级:<yellow>★"
            - "<gray>物理伤害:<white>+5.0"
    success_actions:
      - "playsound sound=block.anvil.land volume=1.0 pitch=1.2"
      - "sendmessage message=<green>强化成功!当前星级:★"
    failure_actions:
      - "playsound sound=block.anvil.destroy volume=1.0 pitch=0.5"
      - "sendmessage message=<red>强化失败..."

  2:
    name: "★★"
    stats:
      physical_damage: 11.0
      attack_speed: 0.2
    attributes:
      攻击力: 11.0
    materials:
      - item: "minecraft:iron_ingot"
        amount: 5
      - item: "neigeitems:strengthen_stone_1"
        amount: 2
    structured_presentation:
      name_contributions:
        star_suffix:
          order: 99
          format: " <yellow>★★"
      lore_sections:
        strengthen_info:
          order: 80
          lines:
            - "<gray>强化等级:<yellow>★★"
            - "<gray>物理伤害:<white>+11.0"
    success_actions:
      - "playsound sound=block.anvil.land volume=1.0 pitch=1.4"
      - "sendmessage message=<green>强化成功!当前星级:★★"
    failure_actions:
      - "playsound sound=block.anvil.destroy volume=1.0 pitch=0.5"
      - "sendmessage message=<red>强化失败..."

  # ... 更多星级阶段

# ===== 结构化展示 =====
# 全局展示模板(如果某个星级阶段没有定义自己的 structured_presentation,就用这个)
structured_presentation:
  name_contributions:
    star_suffix:
      order: 99
      format: " <yellow>{star}"
  lore_sections:
    strengthen_info:
      order: 80
      lines:
        - "<gray>强化等级:<yellow>{star}"
        - "<gray>锻印等级:{temper_color}{temper}/{max_temper}"

星级阶段的 skill 效果

星级阶段可以通过 effects 列表声明技能 ID。强化完成后,系统会把当前星级及以下所有阶段声明的技能 ID 累积合并,写入装备的 PDC。

yaml
stars:
  5:
    name: "★★★★★"
    stats:
      physical_damage: 50.0
    effects:
      - type: skill
        skills:
          - "flame_burst"
          - "power_strike"

技能 ID 是累积的——如果 ★3 声明了 "fireball",★5 声明了 "flame_burst",那么 ★5 的装备会同时拥有两个技能。降星时技能也会相应减少。

可用变量

配方中的文本字段、动作和展示模板都可以用这些变量:

变量说明示例值
{star}当前星级(强化后的)3
{temper}当前锻印等级5
{max_temper}最大锻印等级10
{temper_color}锻印等级对应的颜色标签(越高越绿)<green>
{sign}属性值的正负号+
{value}属性值15.0
{player}玩家名称Steve
{show_item}物品展示组件,用在聊天消息里可以悬浮显示物品详情

默认配方概览

配方 ID最大星级匹配什么装备主要属性
weapon_physical12近战武器物理伤害、攻击速度
weapon_projectile12远程武器投射伤害、射速
weapon_spell12法术武器法术伤害、施法速度
armor_guard12防具护甲、韧性
generic_visual6任意装备仅视觉效果,不加属性
offhand_focus10副手物品副手属性

材料阶梯

材料需求通常随星级递增。低星用基础材料,高星用稀有材料,数量也越来越多:

星级范围典型材料数量趋势
★1 ~ ★3基础强化石1 ~ 3 个
★4 ~ ★6中级强化石2 ~ 4 个
★7 ~ ★9高级强化石3 ~ 5 个
★10 ~ ★12传说强化石4 ~ 6 个

具体每个星级要什么材料、要多少,在 stars.<等级>.materials 里定义。上面只是默认配方的大致规律,你可以按自己的需求调整。

GUI 布局

强化界面是一个 5 行(45 格)的箱子界面:

行 1: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
行 2: [  ] [  ] [  ] [  ] [TG] [  ] [PV] [  ] [  ]
行 3: [  ] [  ] [M1] [M2] [  ] [  ] [  ] [  ] [  ]
行 4: [  ] [  ] [M3] [M4] [TP] [  ] [  ] [CF] [  ]
行 5: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]

TG = target_item       目标装备槽(槽位 13)
PV = preview_display   预览展示槽(槽位 15)
TP = temper_display    锻印信息展示(槽位 22)
M1 = material_input_1  材料输入槽 1(槽位 19)
M2 = material_input_2  材料输入槽 2(槽位 20)
M3 = material_input_3  材料输入槽 3(槽位 29)
M4 = material_input_4  材料输入槽 4(槽位 30)
CF = confirm           确认按钮(槽位 40)
槽位编号说明
target_item13放入要强化的装备
preview_display15实时显示强化成功后的预览效果
temper_display22显示当前锻印等级和成功率加成
material_input_1~419, 20, 29, 30放入当前星级阶段要求的材料
confirm40确认强化按钮

提示

preview_display 槽位会实时计算并显示强化成功后的装备预览,包括属性变化和展示效果。玩家可以在点确认之前先看看结果会是什么样。

Released under the GPL-3.0 License