Emerald Standard
基本信息
| 属性 | 值 |
|---|---|
| 成就 ID | villagenames.achievement.maxrep |
| 字段 | VillageNames.maxrep(VillageNames.java:107) |
| 内部名 | maxrep |
| 注册处 | proxy/CommonProxy.java:63-64 |
| 成就页坐标 | pageX 3, pageY 0 |
| 图标 | Items.emerald |
| 依赖成就 | 无(initIndependentStat()) |
| 显示名 | §aEmerald Standard |
| 描述 | Obtain the maximum reputation in a village |
功能
获得村庄最高声望时解锁。
触发条件
在有效的 Village.dat 村庄中,玩家声望值 playerRep >= 10 时触发:
else if (playerRep >=10 && !player.func_147099_x().hasAchievementUnlocked(VillageNames.maxrep)) {
player.triggerAchievement(VillageNames.maxrep);
AchievementReward.allFiveAchievements(player);
}
(handler/EntityMonitorHandler.java:492-495)
声望由 ReputationHandler.getVNReputationForPlayer(...) 计算(handler/EntityMonitorHandler.java:479)。
源码注释把这一分支误标为
"// --- Maximum Rep Achievement --- //"(EntityMonitorHandler.java:490),实际是最低声望分支(-30,见 You’re A Monster);maxrep才是最高声望。以代码数值为准,此处源码注释有误。
检查频率
成就检查在 EntityMonitorHandler 中以 tick 形式进行,带有节流:tickRate 从 0 起每次 +2,上限 50(handler/EntityMonitorHandler.java:498-499)。即最快每 50 tick 检查一次。
注册细节
VillageNames.maxrep = new Achievement(Reference.MOD_ID.toLowerCase()+".achievement.maxrep", "maxrep",
3, 0, Items.emerald, (Achievement)null).initIndependentStat().registerStat();
(proxy/CommonProxy.java:63-64)
成就 ID 由 Reference.MOD_ID.toLowerCase() 拼接,即 villagenames(全小写,与注册用的 VillageNames 不同)——因为 1.7.10 的成就 ID 不允许大写字母。
相关条目
- You’re A Monster - 声望最低时的对应成就(阈值 -30)
- allFiveAchievements 奖励 - 集齐全部成就后的奖励