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.javasrc/main/java/glowredman/amazingtrophies/AchievementHandler.java