Flag
基本信息
| 属性 |
值 |
| 类名 |
mytown.entities.flag.Flag<T> |
| 文件 |
src/main/java/mytown/entities/flag/Flag.java |
| 行数 |
167 |
| 实现 |
Comparable<Flag>、IChatFormat |
| 启用版本 |
Minecraft 1.7.10 |
功能
flag 的实例。FlagType(见 FlagType)定义「有哪些 flag」,
而 Flag<T> 表示「某处(城镇 / 地块 / 荒野)的某个 flag 当前取什么值」。
字段
| 字段 |
类型 |
说明 |
value |
T |
实际取值(Boolean 或 Integer) |
configurable |
boolean |
初值 true |
flagType |
final FlagType<T> |
指向所属类型 |
两个构造器:Flag(FlagType<T>, String serializedValue) 与 Flag(FlagType<T>, T value)。
关键方法
| 方法 |
返回 |
说明 |
setValue(String) |
boolean |
从字符串解析并设值 |
toggle() |
boolean |
布尔 flag 取反 |
compareTo(Flag) |
int |
排序 |
toChatMessage() |
IChatComponent |
聊天气泡展示 |
内嵌类型
| 类型 |
说明 |
Serializer extends SerializerTemplate<Flag> |
Gson 适配,含 register / serialize / deserialize |
Container extends ArrayList<Flag> |
flag 集合,实现 IChatFormat |
Container 提供 contains(FlagType<?>)、get(FlagType<T>)、remove(FlagType<?>)、
getValue(FlagType<T>)。这些方法按 FlagType 查找,而非按值查找,
因此同一容器内每个 FlagType 最多一项。
实现要点
configurable 初值为 true,但会被 FlagsConfig 按
JSON 内容回写(item.getFlagType().configurable = item.configurable;)。
所以「某 flag 是否可配」的真实来源是 DefaultFlags.json,不是这个默认值。
Container 继承 ArrayList 而非组合,属继承式容器,
因此它带有 ArrayList 的全部公开方法。
Town / Plot / Wild 各持有一个 Flag.Container,
三者的 flag 查找走同一套 API。
相关条目