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 的一个布尔标记变体。

相关条目

  • Town - 基类
  • Config - 普通城镇的方块上限来源
  • Schema - Towns.isAdminTown 字段