权限体系

基本信息

属性 值
仓库内示例 src/main/resources/permissions.yml.example(27 行)
运行时路径 <MC 根目录>/dynmap/permissions.yml(需自行从 example 复制)
缺失时行为 回落到 OP 权限,仅 ops.json 中的玩家可执行大部分指令
接口 forge/permissions/PermissionProvider.java
实现 forge/permissions/FilePermissions.java、forge/permissions/OpPermissions.java
格式 YAML,扁平权限名(无 dynmap. 前缀)

功能

GTNH-Web-Map 自带一套独立的扁平文件权限系统,与 ServerUtilities 的权限系统并存。仓库 README.md “Permissions” 一节点明这一设计并给出警告:即使已在 ServerUtilities 配好等级权限,玩家仍可能看到本 mod 自己抛出的 “You don’t have permission to use this command!”。

启用时服务端日志会打印 [Dynmap] Using permissions.yml for access control(仓库 README.md 同节)。

permissions.yml.example 是扁平映射:顶层键为玩家名(或特殊键 defaultuser),值为权限字符串数组。defaultuser 下的权限对所有玩家生效。

permissions.yml.example:8-9 明确要求:权限名不带 dynmap. 前缀——dynmap.fullrender 在此文件中写作 fullrender。

权限名

defaultuser 默认授予的 11 项(permissions.yml.example:12-22):

权限 源码行
render permissions.yml.example:12
show.self permissions.yml.example:13
hide.self permissions.yml.example:14
sendtoweb permissions.yml.example:15
stats permissions.yml.example:16
marker.list permissions.yml.example:17
marker.listsets permissions.yml.example:18
marker.icons permissions.yml.example:19
webregister permissions.yml.example:20
webchat permissions.yml.example:21
marker.sign permissions.yml.example:22(默认注释掉)

文件尾部 permissions.yml.example:24-27 以注释形式给出高权限玩家的写法(fullrender / cancelrender / radiusrender)。

/dynmap 侧的权限名集合可直接读自 DynmapCore.commands(DynmapCore.java:1134-1158,24 项):render、hide、show、version、fullrender、cancelrender、radiusrender、updaterender、reload、stats、triggerstats、resetstats、sendtoweb、pause、purgequeue、purgemap、purgeworld、quiet、ids-for-ip、ips-for-id、add-id-for-ip、del-id-for-ip、webregister、help。

marker.* 权限在分派处直接读出,可作为权限名的第二来源:marker.list(MarkerAPIImpl.java:1401)、marker.add(MarkerAPIImpl.java:1434)、marker.delete(MarkerAPIImpl.java:1446)。

数值

数值名 值
defaultuser 默认权限数 10 生效(permissions.yml.example:12-21)+ 1 注释(marker.sign,:22)
/dynmap 权限名总数 24(DynmapCore.java:1134-1158)
permissions.yml.example 行数 27

交互

触发 行为
dynmap/permissions.yml 存在 使用文件权限,日志打印 [Dynmap] Using permissions.yml for access control
文件缺失 回落到 OP 权限,仅 ops.json 中的玩家可执行大部分指令
网页端玩家添加标记 需 marker.add(仓库 README.md 举例 defaultuser: [marker.add, marker.delete])

相关条目