TAchievements
TinkersConstruct 成就注册中心。⚠️ 已订正:原文 6 个图标 ID 全部错位、漏 2 个成就、多条解锁条件与源码不符。
基本信息
| 属性 | 值 |
|---|---|
| 注册类 | tconstruct.achievements.TAchievements |
| 总成就数 | 8(原文只列 6 个) |
| 开关 | PHConstruct.achievementsEnabled(关闭时全部不注册) |
| 成就页 | AchievementPage,页名本地化键 tconstruct.achievementPage.name |
已订正 1:原文称事件触发仅
ToolCraftedEvent。实际由 3 个 Forge 事件 + 2 个物品回调共同驱动,见下方「事件系统」。 已订正 2:原文 6 个成就的「图标 ID」全部错位一位。原文把 beginner 记为 4096、pattern 记为 4097……,而titleIcon的 4096 实际属于 tinkerer。 已订正 3:原文漏掉tconstruct.proTinkerer与tconstruct.dualConvenience两个成就。 证据:TAchievements.java:65-137(addDefaultAchievements全量 8 条)。
完整成就表
| # | 成就 ID | 图标 | 页面坐标 (x, y) | 前置 | 特殊 |
|---|---|---|---|---|---|
| 1 | tconstruct.beginner |
TinkerTools.manualBook |
0, 0 | 无 | initIndependentStat() |
| 2 | tconstruct.pattern |
TinkerTools.blankPattern |
2, 1 | beginner | — |
| 3 | tconstruct.tinkerer |
titleIcon 4096 |
2, 2 | pattern | — |
| 4 | tconstruct.preparedFight |
titleIcon 4097 |
1, 3 | tinkerer | — |
| 5 | tconstruct.proTinkerer |
titleIcon 4098 |
4, 3 | tinkerer | — |
| 6 | tconstruct.smelteryMaker |
TinkerSmeltery.smeltery |
-2, -1 | beginner | — |
| 7 | tconstruct.enemySlayer |
titleIcon 4099 |
0, 5 | preparedFight | — |
| 8 | tconstruct.dualConvenience |
titleIcon 4100 |
0, 7 | enemySlayer | setSpecial() |
图标 ID 订正明细(原文 → 正确): beginner 4096 →
manualBook物品(根本不是 titleIcon) pattern 4097 →blankPattern物品(根本不是 titleIcon) tinkerer 4098 → 4096 preparedFight 4099 → 4097 smelteryMaker 4101 →TinkerSmeltery.smeltery方块(4101 不存在) enemySlayer 4102 → 4099 4100、4101、4102 均未使用;真实存在的是 4096–4100 共 5 个 titleIcon meta。
解锁条件订正:
preparedFight原文写「制作武器或装甲」——错。实际条件是event.tool.getItem() instanceof Weapon,仅武器,不含装甲(AchievementEvents.java:28-30)。enemySlayer原文写「用工具击杀敌对生物」——不准确。实际要求凶手手持物品且该物品instanceof Weapon(AchievementEvents.java:44)。pattern原文写「制作第一个 Pattern(模具)」——错。并非任意 Pattern,而是blankPattern(CraftAchievementItem)被合成时触发。beginner原文写「获得第一本手册」——错。是右键使用手册(Manual.onItemRightClick)触发,不是拾取。
事件系统
ToolCraftedEvent(AchievementEvents.toolCreate)
event.player != null时触发tinkerer- 工具为
instanceof Weapon→ 触发preparedFight - 在
ToolForgeLogic中制作且durabilityTypeExtra() != 0(带额外修饰)→ 触发proTinkerer
证据:AchievementEvents.java:24-37。
LivingDeathEvent(AchievementEvents.entitySlain)
伤害来源实体是 EntityPlayer 且其手持物 instanceof Weapon → 触发 enemySlayer(AchievementEvents.java:40-48)。
物品回调
| 成就 | 触发点 | 条件 |
|---|---|---|
tconstruct.beginner |
Manual.onItemRightClick |
右键手册(Manual.java:36) |
tconstruct.pattern |
CraftAchievementItem.onCreated |
合成 blankPattern(TinkerTools.java:286-290 传入 "tconstruct.pattern") |
tconstruct.smelteryMaker |
SmelteryItemBlock |
放置/使用熔炉方块(SmelteryItemBlock.java:50) |
tconstruct.dualConvenience |
SlotFrypan.putStack |
放入带 frypanKill NBT 的食物(SlotFrypan.java:32) |
dualConvenience 的前置链:玩家用煎锅(FryingPan)击杀生物,使其掉落物被打上 frypanKill 标签(AchievementEvents.entityDrops,AchievementEvents.java:55-68),再把该食物放进煎锅槽即解锁。
相关条目
- Smeltery —
smelteryMaker成就指向熔炉 - SmelteryBlock — 成就图标方块
- ThrowingWeapons —
Weapon类武器与enemySlayer相关