跳到正文
烈焰甘蔗Wiki

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)

  1. event.player != null 时触发 tinkerer
  2. 工具为 instanceof Weapon → 触发 preparedFight
  3. 在 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),再把该食物放进煎锅槽即解锁。

相关条目

浏览全部模组