Rank
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.Rank |
| 文件 | src/main/java/mytown/entities/Rank.java |
| 行数 | 246 |
| 启用版本 | Minecraft 1.7.10 |
功能
城镇内的权限等级。Rank 把「玩家在某个城镇里的身份」映射到
MyPermissions 权限节点,从而复用全服权限系统。
静态默认值
public static final Container defaultRanks = new Container();
initDefaultRanks()(Rank.java:31-53)生成 3 个内置等级,
并 clear() 后依次加入 defaultRanks:
| Rank | Type |
权限节点 |
|---|---|---|
Mayor |
Type.MAYOR |
mytown.cmd*、mytown.bypass.* |
Assistant |
Type.REGULAR |
mytown.cmd*、-mytown.cmd.mayor、mytown.bypass.plot、mytown.bypass.flag.* |
Resident |
Type.DEFAULT |
mytown.cmd.everyone.*、mytown.cmd.outsider.*、mytown.bypass.flag.*、-mytown.bypass.flag.restrictions |
⚠️ 前缀 - 是拒绝(negate)语义。
Assistant 被显式拒绝 mytown.cmd.mayor,
Resident 被显式拒绝 mytown.bypass.flag.restrictions。
把它们读成「允许」是语义反了。
⚠️ Mayor 拿 mytown.bypass.* 全通,Assistant 只拿
bypass.plot 与 bypass.flag.* —— 两者绕过范围不同。
内嵌类型
| 类型 | 说明 |
|---|---|
Serializer extends SerializerTemplate<Rank> |
Gson 适配 |
Container extends ArrayList<Rank> |
Rank 集合,实现 IChatFormat |
Rank 自身有 permissionsContainer 字段存放上述节点字符串。
实现要点
⚠️ 这 3 个默认值只是内置模板。运行时真正生效的是
Rank.defaultRanks,而它会被 RanksConfig 的
read() 先 clear() 再 addAll() 整体替换。
因此实际等级集合以 DefaultTownRanks.json 为准,源码这三行不能当作最终配置。
⚠️ Mayor 用的通配是 mytown.cmd*(无点分隔),
而 Resident 用的是 mytown.cmd.everyone.*(有点分隔)。
两种写法混用,匹配行为依赖 MyPermissions 实现,不能统一改写。
相关条目
- RanksConfig - 覆盖
defaultRanks - RankPermissionManager - 权限桥
- Town -
ranksContainer宿主 - MyPermissions - 权限后端(已收录)