Wild
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.Wild |
| 文件 | src/main/java/mytown/entities/Wild.java |
| 行数 | 35 |
| 单例 | Wild.instance(public static final) |
| 启用版本 | Minecraft 1.7.10 |
功能
荒野的全局行为定义 —— 即「不属于任何城镇 / 地块」时的默认权限。
类注释直白写着 Wilderness permissions。
它是一个进程级单例(不像 Town 那样每镇一份),
内部只持有一个 Flag.Container。
结构
| 成员 | 类型 |
|---|---|
instance |
public static final Wild |
flagsContainer |
public final Flag.Container |
hasPermission(Resident, FlagType<Boolean>)
判定居民在荒野中能否执行某 flag 对应的动作:
res == null→ 直接return true(无居民上下文即放行)。flagsContainer.getValue(flagType)为假 → 通过ChatManager向res.getPlayer()发送拒绝消息。- 返回 flag 值本身。
实现要点
⚠️ flagsContainer 的内容由 WildPermsConfig 在
serverStarting 时写入 —— 该配置只挑 FlagType.isWildPerm 为真的 flag。
⚠️ 拒绝消息经 ChatManager.send(...) 发送(MyEssentials-Core 提供),
自动本地化为对应语言条目,flagType.getDenialKey() 提供 key。
因此「哪些 flag 可在荒野拒绝」受 isWildPerm 标记约束。
⚠️ 单例在类加载时即构造(new Wild() 作为 static final 初始化),
早于配置加载。配置内容靠后续 create() 往 flagsContainer 里 addAll 填充。
相关条目
- WildPermsConfig - 写入
flagsContainer的配置 - FlagType -
isWildPerm标记 - Resident - 判定入参
- ProtectionManager - 城镇内判定(与荒野分开)