成就列表

基本信息

Draconic Evolution 实际注册 38 个成就,归属一个独立成就页。语言文件中存在 39 个成就键,其中 1 个(sundial)对应的注册代码已被注释,属孤立键。

属性 值 来源
成就页本地化键 draconicevolution.achievementPage.name(英文值 Draconic Evolution) Achievements.java:443
成就 id 前缀 achievement.draconicevolution.* zh_CN.lang / en_US.lang
成就数量(实际注册) 38 Achievements.java addModAchievements() 中 38 次生效的 addAchievement(...) 调用
注册方式 AchievementPage.registerAchievementPage(achievementsPage) Achievements.java:445

统计口径

三个独立来源相互印证:

来源 计数 说明
addModAchievements() 中未注释的 addAchievement(...) 调用 38 实际生效
addModAchievements() 中被注释的 addAchievement(...) 调用 1 sundial,见下方「已知缺陷」
zh_CN.lang 中 achievement.draconicevolution.* 键 39 含 1 个孤立键
en_US.lang 中同前缀键 39 含 1 个孤立键

代码与语言文件的差值为 1,差异项是 sundial——它有本地化键但没有生效的注册。

实现机制

common/achievements/Achievements.java 使用 HashMap 维护两张表(Achievements.java:25-26):

字段 类型 用途
achievementsList HashMap<String, Achievement> id → 成就对象
achievementItems HashMap<String, AchievementCondition> 物品未本地化名 → 触发条件

注册辅助方法 addAchievement(String name, Achievement achievement, ItemStack stack, String triggerCondition)(Achievements.java:28-32)有一处静默失败:

if (stack == null || stack.getItem() == null) return;

若传入的 ItemStack 为 null,该成就会被无声跳过——不报错、不打印。已核查 Achievements.java 引用的全部 ModBlocks.* / ModItems.* 字段(见下),没有任何一个引用配置受控的 ModBlocks.earthBlock,因此在 Disable Earth block 打开时不会少成就。

触发表中的 ModBlocks / ModItems 引用共 8 个方块字段、31 个物品字段,均为无条件注册项(ModBlocks.resurrectionStone、ModItems.wyvernFluxCapacitor、ModItems.draconicFluxCapacitor 实为 ItemStack 别名)。

成就列表

成就 id 中文名
dust 开始做大事!
ingot 比钻石更好!
core 从这儿开始
core2 不够好!
core3 钱与权
heart 龙之心
soul 收割者 ! ! ! ! !
dislocator 末影人一穷二白
dislocator2 末影规则!
chest 没有足够的存储空间!
dChest 像鹰一样翱翔天蓝色!
ecore 它继续走啊,走啊,走啊
particles 噢,火花!
weather 谁需要大自然母亲
dissenchanter 只是我想要的!
flux 1.21 jiggawatts!
flux2 无可披靡的宇宙力量啊!细碎的生活空间!
dpick 我即是权威!
dshovel 移动山脉
daxe 科学地砍树!
dhoe 把它踢上去!
dsword 像蜜蜂一样刺!
dbow 你在和力量共舞!
dhelm 像鱼一样遨游海洋!
dleggs 像一只蝴蝶翩翩起舞
dboots 越来越高!
dstaff 与你的力量结合起来!
wpick 没有什么像钻石
wshovel 专业挖掘机!
wsword 更好的武器装备
wbow 狙击手已准备!
whelm 自由呼吸!
wchest 高抗性
wleggs 风一样奔跑
wboots 羽落术
awakenedblock 这全是仪式!
resurrection 满是激情!
manual 智慧已经满了!

id 大小写:龙之胸甲的成就 id 在代码与两份语言文件中一致写作 dChest(大写 C),是全部 38 个 id 中唯一含大写字母的一个。表中按原文照录。

已知缺陷:日晷成就是死代码

Achievements.java:423-424 的整段注册被注释掉:

// if (ConfigHandler.disableSunDial == 0)addAchievement("draconicevolution.sundial", new
// Achievement("draconicevolution.sundial", "draconicevolution.sundial", 4+x, -4, ModBlocks.sunDial,
// getAchievement("draconicevolution.core3")).setSpecial(), "craft");

这行代码还引用了 ConfigHandler.disableSunDial——而该字段本身就是一个已被注释的配置项(见 配置项总览 的「已知缺陷」第 2 节)。也就是说:即使取消这行注释,代码也无法编译。

后果:

  • sundial 成就永远不会触发。
  • zh_CN.lang / en_US.lang 中的 achievement.draconicevolution.sundial 键成为孤立键(有文本、无注册)。
  • 该成就原本以 core3(混沌核心)为前置,是唯一一条带前置链的成就。

数值

数值名 值 来源
实际注册成就数 38 Achievements.java:423-424 的 sundial 被注释
语言文件中的成就键数 39 zh_CN.lang / en_US.lang,其中 1 个为孤立键
独立成就页数量 1 Achievements.java:441-445
成就页本地化键 draconicevolution.achievementPage.name Achievements.java:443

交互

触发 行为
拾取特定物品 EntityItemPickupEvent 订阅触发(Achievements.java:449-450)
制作特定物品 按 achievementItems 中的触发条件匹配
打开成就页 在成就界面找到「Draconic Evolution」页
Disable Earth block 打开 不影响成就数量(无成就引用 earthBlock)

相关条目