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 中装载, 助理 / 管理员命令不提供该工具。

相关条目