TownBlock
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.TownBlock |
| 文件 | src/main/java/mytown/entities/TownBlock.java |
| 行数 | 202 |
| 实现 | IChatFormat |
| 键格式 | KEY_FORMAT = "%s;%s;%s" |
| 启用版本 | Minecraft 1.7.10 |
功能
城镇占用的区块级单元。⚠️ 注意粒度:它不是单个方块。
证据是 TownBlock 自身提供 toChunkPos() 与 toChunkCoords()
(TownBlock.java:101、105),且字段只有 dim, x, z —— 没有 y。
构造器 TownBlock(int dim, int x, int z, ...) 同样只有 x / z。
即一个 TownBlock 对应一个区块(16×256×16 的柱体)。
键
public static final String KEY_FORMAT = "%s;%s;%s";
按 dim;x;z 三段拼接,配合 TownBlockKey 生成复合键,
供 Map / Set 索引。没有 y 段 —— 这是区块粒度的直接体现。
字段与构造
| 成员 | 说明 |
|---|---|
plotsContainer |
final Plot.Container,容量取 Config.instance.defaultMaxPlots |
getDim() / getX() / getZ() |
三个坐标分量 |
isFarClaim() |
是否为远程认领(不在城镇出生点附近) |
getPricePaid() |
已付价格 |
isChunkloaded() |
该区块是否被强载 |
getTown() / getKey() |
所属城镇 / 复合键 |
getCoordString() |
坐标字符串 |
toVolume() |
转 Volume 供保护判定 |
构造器:TownBlock(int dim, int x, int z, boolean isFarClaim, int pricePaid, Town town)。
实现要点
⚠️ x / z 是区块坐标还是方块坐标,源码未在字段上直接标明,
但因存在 toChunkPos() / toChunkCoords() 且 KEY_FORMAT 只三段,
实际按区块坐标使用。判定时经 worldServerForDimension(bp.getDim())
拿到世界后再取对应区块。
⚠️ plotsContainer 的容量同样在构造时从
Config.instance.defaultMaxPlots.get() 固化,改配置不影响已加载实例。
⚠️ isFarClaim 与远程认领的最大距离由
Config 的 maxFarClaims(默认 0,即禁用)约束,
费用见 costAmountClaimFar(默认 8)。
- 强载相关联动 Chunk 加载回调 与
Config 的
costAmountChunkloadedClaim(默认 10)。
相关条目
- Town -
townBlocksContainer宿主 - Config -
maxFarClaims/defaultMaxPlotsPerPlayer - Chunk 加载回调 - 强载票据
- TownBlockKey - 复合键实现