API 容器

基本信息

属性 值
位置 src/main/java/mytown/api/container/
容器数 2
启用版本 Minecraft 1.7.10

供附属 mod 使用的两个强类型容器。

ResidentRankMap

属性 值
文件 api/container/ResidentRankMap.java(15 行起)
声明 extends HashMap<Resident, Rank> implements IChatFormat

居民 → Rank 映射,是 Town.residentsMap 的实际类型 (Town.java:39 声明为 public final ResidentRankMap residentsMap = new ResidentRankMap();)。

实现 IChatFormat 以便直接嵌进聊天输出。 因继承 HashMap,自带 put / get / containsKey / size 等全部方法 —— 本类不新增任何 API。

⚠️ 该映射同时被用于 Town 的 getMaxBlocks(): blocksResident.get() * (residentsMap.size() - 1), 所以居民数直接影响城镇方块上限(见 AdminTown)。

TicketMap

属性 值
文件 api/container/TicketMap.java(16 行起)
声明 extends HashMap<Integer, ForgeChunkManager.Ticket>

区块坐标 → 强载票据 映射,键为 Integer(打包后的区块坐标)。 Town.ticketMap 在构造时传入 this(new TicketMap(this),形成 Town ↔ TicketMap 双向引用)。

⚠️ 与 ResidentRankMap 不同,TicketMap 没有 implements IChatFormat —— 它是内部索引结构,不是展示对象。

实现要点

⚠️ 两者都是 extends 而非组合(继承式容器), 因此会把 HashMap 的全部公开方法暴露给调用方, 并允许调用方绕过任何封装直接改内容。

⚠️ 这两个类放在 api/ 包下、由 @API(provides = "MyTown|API") 覆盖 (见 API 包声明),属公开 API, 改动会破坏附属 mod 兼容性。

相关条目