WhitelisterTool
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.tools.WhitelisterTool |
| 文件 | src/main/java/mytown/entities/tools/WhitelisterTool.java |
| 行数 | 134 |
| 继承 | extends myessentials.utils.Tool |
| 启用版本 | Minecraft 1.7.10 |
功能
白名单选取工具。类注释 A tool that selects a block to add it to whitelists for protection.
手持工具右键某方块,把该方块 + 指定 flag 加入
BlockWhitelist。
字段
| 字段 | 初值 | 说明 |
|---|---|---|
owner |
— | 由构造器传入 Resident owner |
flagType |
FlagType.ACCESS |
要豁免的 flag |
构造器 WhitelisterTool(Resident owner)。
关键实现
Town town = MyTownUtils.getTownAtPosition(bp.getDim(), bp.getX() >> 4, bp.getZ() >> 4);
if (!hasPermission(town, bp)) return;
if (flagType == null) { ... }
hasPermission(town, bp) 传的是方块坐标(含 y),
与 PlotSelectionTool 的 hasPermission(town) 不同 ——
白名单是方块级例外,粒度更细。
实现要点
⚠️ flagType 默认是 FlagType.ACCESS,不是任意 flag。
切换 flag 的入口是命令参数,运行中可被设为 null(源码显式判空并另行处理)。
⚠️ 只有带 WHITELISTABLE 标记的 flag 才有意义 ——
FlagType 中仅 3 个具备:ACCESS、PICKUP、ACTIVATE
(见 FlagType)。
Commands 的 flagCompletionWhitelist 补全也只提供这 3 个,
其他 flag 无法通过命令设为白名单 flag。
⚠️ 本工具是唯一一个三个命令层都能装载的工具:
| 命令类 | 装载处 |
|---|---|
| CommandsEveryone | 2 处(行 332、317) |
| CommandsAssistant | 1 处(行 332) |
| CommandsAdmin | 1 处(行 980) |
⚠️ 坐标换算同样用 >> 4 查城镇,但白名单本身记录方块坐标(含 y),
存进 BlockWhitelists 表。
相关条目
- 交互工具 - 三工具对照
- BlockWhitelist - 数据模型
- FlagType -
WHITELISTABLE的 3 个 flag - ProtectionManager - 判定时查询白名单