AdminTown
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.AdminTown |
| 文件 | src/main/java/mytown/entities/AdminTown.java |
| 行数 | 13 |
| 继承 | extends Town |
| 启用版本 | Minecraft 1.7.10 |
功能
管理员城镇。全类只做一件事:覆写方块上限。
public class AdminTown extends Town {
public AdminTown(String name) { super(name); }
@Override
public int getMaxBlocks() {
return Integer.MAX_VALUE;
}
}
实现要点
⚠️ 方块上限为 Integer.MAX_VALUE(2 147 483 647),
即在数据层面不设实际上限。这是相对普通 Town 的唯一差异。
⚠️ 由 AdminTown 覆写 getMaxBlocks() 可知,
普通 Town.getMaxBlocks() 存在且返回一个小于 Integer.MAX_VALUE 的值。
该值在 Town.java:242-252 算出,不是固定常量:
int mayorBlocks = Config.instance.blocksMayor.get();
int residentsBlocks = Config.instance.blocksResident.get() * (residentsMap.size() - 1);
int residentsExtra = 0;
for (Resident res : residentsMap.keySet()) residentsExtra += res.getExtraBlocks();
int townExtra = townBlocksContainer.getExtraBlocks();
return mayorBlocks + residentsBlocks + residentsExtra + townExtra;
即「市长基础方块 + 每居民方块 ×(居民数 减 1)+ 各居民额外方块 + 城镇额外方块」。
⚠️ (residentsMap.size() - 1) 里的减 1 容易被误读成「扣掉镇长」:
它与 blocksMayor 独立相加,实际语义是「市长已单独计一份,此处只算其余居民」。
按默认 blocksMayor=5、blocksResident=3 计,单人城镇为 5 + 0 = 5 方块。
⚠️ 本类不注册任何东西,既不是 Forge 的 admin 机制,
也不需要在 mcmod.info 或配置中声明。数据库侧以
Towns.isAdminTown(BOOLEAN)字段区分,见 Schema。
⚠️ 13 行、全类仅一个覆写方法 —— 把它描述成「管理工具」或「独立功能」都是过度解读,
它只是 Town 的一个布尔标记变体。