PlayerTracker
基本信息
| 属性 | 值 |
|---|---|
| 类名 | myessentials.PlayerTracker |
| 类型 | class,public static final PlayerTracker instance |
| 事件 | PlayerEvent.PlayerLoggedInEvent |
| 启用版本 | Minecraft 1.7.10 |
功能
维护模式(maintenance mode)的执行者:玩家登录时若处于维护模式且不是 OP, 直接踢出服务器。
实现要点
- 单例
instance在字段初始化时创建(非enum)。 - 判定条件有 4 层,逐层短路:
Config.instance.maintenanceMode.get()为真;ev.player instanceof EntityPlayerMP(只处理服务端);!(ev.player instanceof FakePlayer)—— 排除net.minecraftforge.common.util.FakePlayer, 即机器 / 管道等模拟玩家不会被踢;!PlayerUtils.isOp(ev.player)——OP 不被踢。
- 踢出用
((EntityPlayerMP) ev.player).playerNetServerHandler.kickPlayerFromServer(...), 消息取自Config.instance.maintenanceModeMessage.get()。 - 源码带
@SuppressWarnings("UnnecessaryReturnStatement"), 对应方法末尾那个无条件return;(在 if 块外的显式返回)。 - 被主类同时注册到 FML 总线与 Forge 总线(两次)。
相关条目
- Config -
maintenanceMode/maintenanceModeMessage的定义处 - PlayerUtils -
isOp的定义处 - MyEssentialsCore - 注册方