Achievement Condition
基本信息
| 属性 | 值 |
|---|---|
| handler ID | achievement |
| 所属类 | glowredman.amazingtrophies.condition.AchievementConditionHandler |
| 事件订阅 | Forge MinecraftForge.EVENT_BUS(net.minecraftforge.event.entity.player.AchievementEvent) |
| 触发对象 | EntityPlayerMP |
| 优先级 | LOWEST |
配置
| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
id |
字符串 | 否(缺省回退为当前条目 ID) | 监听哪个原版/自定义成就触发;键是 achievement 的 statId,值是当前条目 id |
该 handler 内部维护一个
Multimap<String, String>,键为成就 statId,值为条目 ID——同一个 achievement 可同时触发多个奖杯/成就条目。
触发流程
- 玩家触发
AchievementEvent。 - handler 检查该玩家尚未解锁该成就(
StatFile.hasAchievementUnlocked),已解锁则直接返回。 - 遍历该成就 statId 对应的所有条目 ID,逐个调用 listener(成就侧 →
player.triggerAchievement;奖杯侧 →AmazingTrophiesAPI::awardTrophy)。
JSON 示例
{
"id": "first_trophy",
"x": 0,
"y": 0,
"icon": { "registryName": "minecraft:dirt" },
"condition": {
"type": "achievement",
"id": "achievement.openInventory"
}
}
相关条目
源码
src/main/java/glowredman/amazingtrophies/condition/AchievementConditionHandler.java