配方与星级系统
强化配方定义了一类装备的强化规则:哪些装备能用、每个星级要什么材料、成功率多少、强化后加什么属性。每个配方对应 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_physical | 12 | 近战武器 | 物理伤害、攻击速度 |
weapon_projectile | 12 | 远程武器 | 投射伤害、射速 |
weapon_spell | 12 | 法术武器 | 法术伤害、施法速度 |
armor_guard | 12 | 防具 | 护甲、韧性 |
generic_visual | 6 | 任意装备 | 仅视觉效果,不加属性 |
offhand_focus | 10 | 副手物品 | 副手属性 |
材料阶梯
材料需求通常随星级递增。低星用基础材料,高星用稀有材料,数量也越来越多:
| 星级范围 | 典型材料 | 数量趋势 |
|---|---|---|
| ★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_item | 13 | 放入要强化的装备 |
preview_display | 15 | 实时显示强化成功后的预览效果 |
temper_display | 22 | 显示当前锻印等级和成功率加成 |
material_input_1~4 | 19, 20, 29, 30 | 放入当前星级阶段要求的材料 |
confirm | 40 | 确认强化按钮 |
提示
preview_display 槽位会实时计算并显示强化成功后的装备预览,包括属性变化和展示效果。玩家可以在点确认之前先看看结果会是什么样。