PlotSelectionTool
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.entities.tools.PlotSelectionTool |
| 文件 | src/main/java/mytown/entities/tools/PlotSelectionTool.java |
| 行数 | 289 |
| 继承 | extends myessentials.utils.Tool |
| 启用版本 | Minecraft 1.7.10 |
功能
圈地工具:类注释 Tool that selects two corners of a plot and creates it.
手持该工具点击两次方块确定长方体对角点,第二次点击后创建 Plot。
字段
| 字段 | 初值 | 说明 |
|---|---|---|
selectionFirst |
null |
第一次点击的角点 |
selectionSecond |
null |
第二次点击的角点 |
plotName |
— | 由构造器传入 plotName |
heightDependent |
Config.instance.defaultPlotHightDependence.get()(默认 true) |
高度是否随选择变化 |
owner |
— | 由构造器传入 |
构造器 PlotSelectionTool(Resident owner, String plotName)。
关键实现
onItemUse 先把方块坐标换算成区块坐标定位城镇:
Town town = MyTownUtils.getTownAtPosition(bp.getDim(), bp.getX() >> 4, bp.getZ() >> 4);
if (!hasPermission(town)) return;
>> 4 即除以 16 的区块换算 —— 再次印证
TownBlock 的区块级粒度。
实现要点
⚠️ heightDependent 在构造时从配置读一次并固化。
改 Config 的 defaultPlotHightDependence
只影响之后新建的工具实例,已在玩家手上的工具不受影响。
⚠️ 创建的地块坐标直接交给 Plot 构造器,
由其做三轴归一化(x1 > x2 自动交换等),本类不负责排序。
⚠️ 面积 / 高度上限由配置约束,构造前会校验:
| 配置项 | 默认 | 含义 |
|---|---|---|
minPlotsArea |
9 | 最小面积(X×Z) |
maxPlotsArea |
300 | 最大面积(X×Z) |
minPlotsHeight |
1 | 最小高度(Y) |
maxPlotsHeight |
256 | 最大高度(Y);设为 255 才是无限高 |
⚠️ 本工具只在 CommandsEveryone 中装载, 助理 / 管理员命令不提供该工具。
相关条目
- 交互工具 - 三工具对照
- Plot - 被创建的对象
- Config - 面积与高度限制
- VisualsHandler - 边框高亮