Ticker (事件总线订阅)
基本信息
| 属性 |
值 |
| 类 |
mypermissions.core.handlers.Ticker |
| 单例 |
Ticker.instance |
| 总线 |
FMLCommonHandler.bus() + MinecraftForge.EVENT_BUS(都在 preInit 注册) |
功能
只对内置权限系统(MyPermissionsBridge)生效,做两件事:
- 玩家登录时把 UUID 添加到容器(不存在则用默认组新建,存在则校准
lastPlayerName),必要时 saveUsers()。
- 命令执行 hook:
CommandEvent 触发后用对应 Bridge 查权限,不通过则 setCanceled(true) 并把 commands.generic.permission 异常附上。
事件
PlayerEvent.PlayerLoggedInEvent (HIGHEST)
| 行为 |
备注 |
若 manager instanceof MyPermissionsBridge |
否则整段跳过 |
manager.users.get(uuid) == null |
manager.users.add(uuid)(绑定默认组) + updateLastPlayerName(uuid) + saveUsers() |
| 已存在 |
若 updateLastPlayerName 返回 true 才 saveUsers() |
CommandEvent (HIGHEST)
| 条件 |
行为 |
manager 不是 MyPermissionsBridge 或 sender 不是 EntityPlayer |
跳过 |
CommandManager.getPermForCommand(commandName) |
拿到权限节点;为 null 则用兜底 cmd.<commandName> |
user.hasPermission(perm) |
不通过 → ev.setCanceled(true) + ev.exception = new CommandException("commands.generic.permission") |
相关条目