BlockWhitelist
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.BlockWhitelist |
| 文件 | src/main/java/mytown/entities/BlockWhitelist.java |
| 行数 | 113 |
| 启用版本 | Minecraft 1.7.10 |
功能
保护白名单例外 —— 允许在「本该被保护」的位置对某个特定 flag 执行操作。
典型用途:让居民能右键自己家城镇里的某个箱子(ACCESS),
但不能破坏它。
每个实例绑定 1 个坐标 + 1 个 FlagType:
public BlockWhitelist(int dim, int x, int y, int z, FlagType flagType)
字段与访问器
| 成员 | 说明 |
|---|---|
getDim() / getX() / getY() / getZ() |
四个坐标分量(含 y,比 TownBlock 更细) |
getFlagType() / setFlagType |
绑定的 flag 类型 |
getDbID() / setDbID(int) |
数据库主键 |
isDeleted() / delete() |
软删除标记 |
⚠️ 白名单坐标是方块级(有 y),而城镇占用是区块级(无 y)。
两个粒度在本 mod 内并存,混用会出错。
BlockWhitelist.Container
extends ArrayList<BlockWhitelist>(未实现 IChatFormat,与
Flag.Container 等不同),提供两个坐标 + flagType 维度的重载:
| 方法 | 说明 |
|---|---|
contains(int dim, int x, int y, int z, FlagType flagType) |
是否在白名单中 |
remove(int dim, int x, int y, int z, FlagType flagType) |
移除 |
实现要点
delete()采用软删除(置isDeleted),而非从容器移除 —— 以便持久化删除动作。- 只有
WHITELISTABLE的 flag 才有意义:FlagType中仅ACCESS、PICKUP、ACTIVATE三项带该标记(见 FlagType)。 给其它 flag 加白名单不会被拒绝,因为 Commands 的flagCompletionWhitelist补全根本不提供这些选项。 - 持久化到
BlockWhitelists表,见 Schema。 - 加载时机受 ProtectionParser 之前的 MyTownDatasource 初始化顺序约束。
相关条目
- Town -
blockWhitelistsContainer宿主 - FlagType -
WHITELISTABLE标记 - WhitelisterTool - 交互式增删
- ProtectionManager - 判定时查询