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 不允许大写字母。

相关条目