PlayerTracker

基本信息

属性 值
类名 myessentials.PlayerTracker
类型 class,public static final PlayerTracker instance
事件 PlayerEvent.PlayerLoggedInEvent
启用版本 Minecraft 1.7.10

功能

维护模式(maintenance mode)的执行者:玩家登录时若处于维护模式且不是 OP, 直接踢出服务器。

实现要点

  • 单例 instance 在字段初始化时创建(非 enum)。
  • 判定条件有 4 层,逐层短路:
    1. Config.instance.maintenanceMode.get() 为真;
    2. ev.player instanceof EntityPlayerMP(只处理服务端);
    3. !(ev.player instanceof FakePlayer)—— 排除 net.minecraftforge.common.util.FakePlayer, 即机器 / 管道等模拟玩家不会被踢;
    4. !PlayerUtils.isOp(ev.player)——OP 不被踢。
  • 踢出用 ((EntityPlayerMP) ev.player).playerNetServerHandler.kickPlayerFromServer(...), 消息取自 Config.instance.maintenanceModeMessage.get()。
  • 源码带 @SuppressWarnings("UnnecessaryReturnStatement"), 对应方法末尾那个无条件 return;(在 if 块外的显式返回)。
  • 被主类同时注册到 FML 总线与 Forge 总线(两次)。

相关条目