Achievement Properties(成就条目数据类)

基本信息

属性 值
类名 glowredman.amazingtrophies.api.AchievementProperties
构造方式 Builder → build()
注册 通过 AmazingTrophiesAPI.registerAchievement(id, props),再显式调用 props.register() 推入 StatList/AchievementList/AchievementPage

字段

字段 类型 含义
page String 所在 AchievementPage 名;null = 默认 Minecraft 页面
x, y int 在成就屏幕上的坐标
parent String 前置成就的 statId——关联玩家必须先解锁该成就才能解锁此条
isSpecial boolean 是否为"特殊"成就(深紫背景 + 暗紫聊天)
icon ItemDefinition 玩家解锁时显示的图标 ItemStack
id String 由 registerAchievement 注入,唯一标识

Builder 用法

AchievementProperties props = new AchievementProperties.Builder(
    3, 1,                                      // x, y
    new ItemDefinition("minecraft:diamond"))   // icon
    .setPage("GTNH")                           // 放入名为 GTNH 的 AchievementPage(自动注册缺失页)
    .setParent("achievement.diamonds")          // 前置 statId
    .setSpecial()                              // 标为特殊
    .build();
AmazingTrophiesAPI.registerAchievement("custom.trophy.example", props);
props.register();                              // 关键:推入 StatList

register() 行为

  • 重复调用:registered 标志短路返回。
  • 无 parent → achievement.initIndependentStat()。
  • 有 parent:StatList.func_151177_a(parentID) 必须是已注册 Achievement,否则日志 error 并放弃。
  • isSpecial → achievement.setSpecial()。
  • 有 page → 先 registerStat() 再 page.getAchievements().add(achievement);找不到 AchievementPage.getAchievementPage(name) 则日志 error 跳过。
  • 无 page → 直接 registerStat(),落到默认页面。

equals

两个 AchievementProperties 相等当且仅当 id.equals(other.id)。

配置字段(来自 AchievementHandler.parseAchievement)

字段 类型 必填 含义
id 字符串 是 条目 ID,传给 registerAchievement(id, props)
x, y int 是 屏幕坐标
icon JSON 对象 是 {"registryName": "...", "meta": N, "nbt": "..."}
page 字符串 否 所在 AchievementPage;缺省 = 主成就页
parent 字符串 否 前置成就 statId
isSpecial 布尔 否,缺省 false 是否标记特殊
condition JSON 对象 否 触发条件;type 字段选 ConditionHandler,condition 子对象传给 parse

AchievementHandler.parseAchievement 会收集 setPage != null 的条目,等全部解析完毕再 AchievementPage.registerAchievementPage(new AchievementPage(name)) 注册缺失页。

相关条目

源码

  • src/main/java/glowredman/amazingtrophies/api/AchievementProperties.java
  • src/main/java/glowredman/amazingtrophies/AchievementHandler.java