Achievements
基本信息
| 属性 | 值 |
|---|---|
| 成就数 | 3 |
| 成就页数 | 1(页名 Wireless Crafting Term) |
| 源码类 | AchievementHandler(handlers/AchievementHandler.java) |
| 注册时机 | init 阶段(WirelessCraftingTerminal.java:78) |
3 个成就
| lang 键 | 标题 | 描述 | 展示物品 | 页内位置 |
|---|---|---|---|---|
achievement.wctAchievement |
Digital Crafting Over WiFi | Craft a Wireless Crafting Terminal | 无线终端 | 根节点((0, 0)) |
achievement.boosterAchievement |
Interdimensional Crafting Sack | Aquire an Infinity Booster Card | 增强卡 | (2, 0) |
achievement.magnetAchievement |
Digital Hoover | (lang 未提供 desc) | 磁力卡 | (2, 0) |
⚠️ 描述中的 “Aquire” 是源码拼写错误(应为 “Acquire”),见
en_US.lang的achievement.boosterAchievement.desc。这是游戏内实际显示的文本,不是本文档的转述错误。
成就页结构
private static final AchievementPage achPage = new AchievementPage(
"Wireless Crafting Term", // 页名
wctAch, // 根:无线终端
boosterAch, // 子:(2, 0)
magnetAch); // 子:(2, 0)
boosterAch 与 magnetAch 都以 (2, 0) 定位,且都以 wctAch 为父——即两个子成就在同一格并列。
注册逻辑
registerAchievements()(:44-50)有一处不完整的去重:
if (!AchievementList.achievementList.contains(wctAch)) {
wctAch.initIndependentStat().registerStat();
boosterAch.initIndependentStat().registerStat().setSpecial();
magnetAch.initIndependentStat().registerStat();
}
去重判断只检查 wctAch。若 wctAch 已注册而另两个未注册(例如其它模组已注册同名成就的边界情形),boosterAch / magnetAch 将被跳过且永远不注册。这是真实的条件覆盖缺陷。
boosterAch 额外调用 .setSpecial(),故它在成就书中显示为特殊成就样式(金边框)。
registerPage()(:52-55)用 AchievementPage.getAchievementPage("Wireless Crafting Term") == null 做页级去重——这一处判断是完整的。
触发方式
成就不由 Forge 成就系统自动触发,而是在事件处理器中手动触发:
| 成就 | 触发点 |
|---|---|
boosterAchievement |
CommonProxy.pickupEvent —— 玩家捡起增强卡时触发(:203-206),且要求 !WCT_EASYMODE_ENABLED |
magnetAchievement |
由磁力卡相关逻辑触发 |
wctAchievement |
合成无线终端时触发 |
注意增强卡成就的触发条件含 !Reference.WCT_EASYMODE_ENABLED——简单模式下即使捡到增强卡也不触发成就。
相关条目
- Wireless Crafting Terminal
- Infinity Booster Card - “Interdimensional Crafting Sack”
- Magnet Card - “Digital Hoover”
- WCT Config - 简单模式影响成就触发