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