MyPermissions
[!INFO] Git Commit:
22fee45| Updated: 2026-09-28
GTNH 通用权限系统桥接框架:以 IPermissionBridge 抽象统一 $MyPermissions(内置 JSON 实现)、$Bukkit(Cauldron/MCPC)、$ForgeEssentials、$ServerTools 四种后端;通过 @Command 注解 + CommandManager 注册 /myperm 树(含 config reload、group add/delete/rename/list/perm add-remove-list、user group show/set/list/user perm add-remove-list 等命令),由 Ticker 在登录 / CommandEvent 时挂权限 hook。无方块 / 物品 / 实体 / 维度注册。
源码:/home/evlos/a/mirror/MyPermissions/
关系登记:见 data/relation.md(全局 Wiki 分类映射表)
主类与配置
- MyPermissions (主 mod 类) -
@Mod主类,组装权限系统与命令树 - Config - 全部配置项(permissionSystem / localization / fullAccessForOPS / defaultGroup)
- Constants - modid/版本/依赖/配置目录常量
- Ticker - 登录与
CommandEvent阶段的权限 hook
命令框架
- Commands (/myperm) - 命令树全部节点(根、
config、内置权限下的group/user) - Command 注解 - 注解字段:
name/permission/syntax/parentName/alias/console/completionKeys - CommandManager - 扫描注解、构造树、注册
CommandModel - CommandModel - 包装
CommandTree给 Minecraft 的ICommand - CommandTree / CommandTreeNode - 命令树数据模型(解析、help、tab complete、权限检查)
- ICommandRegistrar + 三实现 - Vanilla / ForgeEssentials / Bukkit 注册器
- CommandCompletion - 按 key 维护的 tab 补全候选项静态映射
- CommandResponse - 三态返回码:DONE / SEND_HELP_MESSAGE / SEND_SYNTAX
- ChatComponentHelpMenu - 命令树分页 help 渲染
- CommandException - CommandManager 内部错误(多根/缺根)
- PermissionCommandException - 带本地化 key 的命令权限异常
权限系统桥
- PermissionProxy - 配置项 → Bridge 实例化(依赖缺失抛
PermissionException) - IPermissionBridge - 单方法抽象
hasPermission(UUID, String) - MyPermissionsBridge (内置) - 内置 JSON 实现,持有
groups/users容器 - BukkitPermissionBridge - Bukkit/Cauldron/MCPC,按点分段做
node.*兜底 - ForgeEssentialsPermissionBridge - FE 的
PermissionManager.checkPermission - ServerToolsPermissionBridge - 反射
info.servertools.permission.PermissionManager.checkPerm - PermissionException - 依赖缺失时抛
内置权限数据模型
- Group - 组(含
permissions[]/meta{}/parents父链) - User - 用户(含
group/permissions[]/meta{}) - PermissionsContainer - 权限节点列表(精确 +
*通配 +-deny) - PermissionLevel - ALLOWED / DENIED / NONE 三态
- Meta -
key(int)自定义键值 - GroupConfig -
GroupConfig.json持久化 - UserConfig -
UserConfig.json持久化