成就

基本信息

属性 值
实现类 pl.asie.computronics.util.achievements.ComputronicsAchievements
枚举 EnumAchievements(私有内部枚举,ComputronicsAchievements.java:38)
成就页 AchievementPage("Computronics"),注册于 AchievementPage.registerAchievementPage(ComputronicsAchievements.java:62-67)
事件注册 同时注册到 MinecraftForge.EVENT_BUS 与 FMLCommonHandler.bus()(ComputronicsAchievements.java:68-69)
触发方法 triggerAchievement(EntityPlayer, EnumAchievements)(ComputronicsAchievements.java:153-156)

共 6 个成就,全部带前置链。成就不是无条件注册的:3 个依赖录音带、2 个依赖 Railcraft、1 个依赖 GregTech。

成就列表

枚举 页面坐标 图标 前置 special independent 源行
Tape (0, 0) 录音带 meta 0 无 false true :74-81
Tape_Star (4, 0) 录音带 meta 8 Tape false false :82-91
Tape_IG (8, 2) 录音带 meta 9 Tape_Star true false :92-99 / :109-116
Tape_IG_Dropped (8, 10) IC2 废料 Tape_IG true false :100-108 / :117-125
Locomotive (0, 6) 数字机车中继器 — — — :265-271
Relay (2, 6) 数字中继传感器 Locomotive — — :273-280

independent 只对 Tape 为 true(:80),意味着它不依赖其它成就即可被计入统计;其余 5 个都串在链上。

注册条件

前 4 个成就整体包在 if (Computronics.itemTape != null) 内(ComputronicsAchievements.java:73)——录音带被 enable.tape 关掉时全部消失。

Tape_IG / Tape_IG_Dropped 有两条互斥分支,区别只在 IC2 废料的取用方式(ComputronicsAchievements.java:91-126):

分支 条件 Tape_IG_Dropped 图标来源
GT5 Mods.isLoaded(GregTech) && !hasVersion(GregTech, GT6) ItemList.IC2_Scrap.get(1)(GT5 API)
GT6 Mods.hasVersion(GregTech, GT6) IL.IC2_Scrap.get(1)(GT6 API)

两个分支注册的成就内容完全相同(同坐标、同 meta、同前置、同 special 标志),只是图标物品的解析 API 不同。ModRecipes 中大量 GT 配方回退到 computronics.railcraft.* / GT 5.09 API 也是同一历史背景。

Locomotive / Relay 由 RailcraftAchievements.initializeRCAchievements() 注册,整体包在 if (Mods.isLoaded(Mods.Railcraft)) 内(ComputronicsAchievements.java:128-130)。

触发条件

枚举 触发 源行
Tape / Tape_IG 玩家合成出对应 meta 的录音带 :176、:185、:92-99 附近
Tape_Star 同上,meta 8 :181
Tape_IG_Dropped 玩家丢弃该磁带(读 NBT computronics:dropplayer) :238-243
Locomotive 玩家进入 Railcraft 机车 :286
Relay 玩家安装数字中继传感器 :328

合成检测走 CraftingEvent 类的处理器;丢弃检测通过 NBT 里的 computronics:dropplayer 字段回溯玩家(:238)——这是把玩家 UUID 写进磁带 NBT 实现「谁丢的谁得成就」的做法。

相关条目