服务端配置

config/TaskNHConfig.java,Forge Configuration,在 preInit 阶段加载。客户端配置是另一个文件,见 客户端图钉配置。

加载方式

TaskNHConfig.load(FMLPreInitializationEvent) 由 CommonProxy.preInit() 调用(客户端也会走,因为 ClientProxy.preInit 只调 super.preInit):

new Configuration(event.getSuggestedConfigurationFile());
config.load();
if (config.hasChanged()) config.save();

文件为标准 <mcDataDir>/config/tasknh.cfg。类的 Javadoc 写明是 “Server-side config for item tracking and reminders.”,但因为客户端代理也执行 preInit,客户端同样会生成这个配置文件。

全部 3 个选项

配置键 分类 类型 默认值 范围 对应静态字段 说明
item_tracking.enabled item_tracking boolean true — itemTrackingEnabled 任务的追踪物品出现在队员物品栏时自动完成任务
item_tracking.announce item_tracking boolean true — announceAutoComplete 任务自动完成时向队伍聊天广播
reminders.cooldown reminders int 60 0–3600 remindCooldownSeconds 同一玩家对同一任务重复提醒的冷却秒数,0 关闭冷却

两个 CATEGORY 常量分别是 "item_tracking" 与 "reminders"。注意 reminders.cooldown 是唯一带范围限制的项(config.getInt(name, cat, 60, 0, 3600, comment))。

各选项的作用点

  • item_tracking.enabled —— ItemTrackHandler.onServerTick 开头 if (!itemTrackingEnabled) return;,关掉后整个自动完成停摆,详见 物品完成追踪
  • item_tracking.announce —— 同时控制两处播报:清单项自动勾选的 tasknh.chat.auto_check,以及任务自动完成的 tasknh.chat.auto_complete。关闭后仍正常完成,只是不发消息
  • reminders.cooldown —— RemindTaskPacket.executeServer 里判冷却。冷却键是 "taskId:targetPlayerId",值存在 CommonProxy.remindCooldowns 这个纯内存 LinkedHashMap,源码注释「Resets on server restart」,即重启即清空;冷却未过时给发送者回 tasknh.chat.remind.cooldown

提醒冷却的边界

关卡检查是 now - lastRemind < remindCooldownSeconds * 1000L。冷却为 0 时 0L 不大于任何非负差值,所以 0 确实等于「不限制」。

另外还有一条与配置无关的失败分支:目标玩家不在线时不会写入冷却键,直接回 tasknh.chat.remind.offline——所以可以对同一个离线玩家反复点提醒,都不会触发冷却。