跳到主要内容

成长系统

EMC 自定义武器内置武器成长系统,武器通过战斗获得经验并升级,升级后 8 项属性自动成长。

核心机制

  1. 经验获取 — 击杀怪物和命中目标获得经验
  2. 升级判定 — 经验达到当前等级所需值时自动升级(可连续升级)
  3. 属性成长 — 每升一级,武器各属性按配置值增长
  4. 等级上限 — 每把武器有独立的最大等级(max-level

经验来源

击杀经验

击杀怪物获得经验,计算公式:

实际经验 = 默认经验 × 怪物倍率

config.yml 中配置:

growth:
kill-exp:
enabled: true
default: 10 # 默认击杀经验
mob-multiplier:
ENDER_DRAGON: 100.0 # 末影龙 = 10 × 100 = 1000 经验
WITHER: 80.0 # 凋灵 = 10 × 80 = 800 经验
WARDEN: 50.0 # 监守者 = 10 × 50 = 500 经验
ZOMBIE: 1.0 # 僵尸 = 10 × 1 = 10 经验
SKELETON: 1.2 # 骷髅 = 10 × 1.2 = 12 经验

命中经验

每次命中目标获得少量经验:

growth:
hit-exp:
enabled: true
default: 1 # 每次命中 1 经验

升级经验公式

每把武器可配置独立的经验公式,level 为当前等级变量:

growth:
exp-formula: "100 * level ^ 1.5"

各等级所需经验示例(公式 100 * level ^ 1.5):

等级升级所需经验累计经验
1100100
51,1183,482
103,16213,651
208,94455,194
3016,432129,437
5035,355368,781

属性成长

每升一级,武器属性增加 per-level 配置的值:

growth:
per-level:
base-damage: 0.5 # 每级 +0.5 伤害
crit-chance: 0.002 # 每级 +0.2% 暴击率
crit-multiplier: 0.01 # 每级 +0.01 暴击倍率
attack-range: 0.02 # 每级 +0.02 攻击范围
armor-penetration: 0.1 # 每级 +0.1 穿甲
knockback: 0.005 # 每级 +0.005 击退
lifesteal: 0.002 # 每级 +0.2% 吸血
attack-speed: 0.005 # 每级 +0.005 攻速

属性计算

实际属性 = 基础属性 + 每级成长 × 当前等级

示例(屠龙刀,基础伤害 12.0,每级 +0.5):

等级攻击力
Lv.012.0
Lv.1017.0
Lv.2524.5
Lv.5037.0

升级消息

升级时向持有者发送消息:

growth:
levelup-message: "&a你的武器 &e{weapon_name} &a升级到了 &6Lv.{level}&a!"
broadcast-levelup: false # 设为 true 则全服广播

数据存储

武器的等级和经验通过 NBT/PDC 存储在物品本身上:

  • emcweapon_id — 武器 ID
  • emcweapon_level — 当前等级
  • emcweapon_exp — 当前经验

这意味着:

  • 武器可以安全地放入箱子、交易、邮寄,数据不会丢失
  • 不依赖外部数据库
  • 跨版本兼容(1.14+ 使用 PersistentDataContainer,低版本使用 NBT)

查看武器成长状态

使用命令查看手持武器的成长信息:

/emcweapon info

输出示例:

────────────────────────────
屠龙刀 (ID: dragon_slayer)
攻击源: 斩击
攻击力: 17.0
等级: Lv.10/50
经验: 1523/3162
────────────────────────────

设计建议

  • 前期武器max-level: 20~30,低成长系数,易满级
  • 中期武器max-level: 30~50,中等成长,需要一定时间
  • 终极武器max-level: 50~100,高成长系数,长期培养目标
  • 经验公式:指数越高(如 ^ 2),后期升级越慢;推荐 ^ 1.3 ~ 1.6