diff --git a/pom.xml b/pom.xml
index 051c91f..844c8a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.21.11-beta
+ 1.22.1-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Apis.java b/src/main/java/cn/lunadeer/dominion/commands/Apis.java
index b79c44f..349cd64 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Apis.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Apis.java
@@ -41,6 +41,10 @@ public class Apis {
Location location = player.getLocation();
Location location1 = new Location(location.getWorld(), location.getX() - size, location.getY() - size, location.getZ() - size);
Location location2 = new Location(location.getWorld(), location.getX() + size, location.getY() + size, location.getZ() + size);
+ if (Dominion.config.getLimitVert()) {
+ location1.setY(Dominion.config.getLimitMinY());
+ location2.setY(Dominion.config.getLimitMaxY());
+ }
Map points = new HashMap<>();
points.put(0, location1);
points.put(1, location2);
diff --git a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java
index 43001aa..a38484f 100644
--- a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java
+++ b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java
@@ -70,6 +70,10 @@ public class SelectPointEvents implements Listener {
int maxX = Math.max(loc1.getBlockX(), loc2.getBlockX());
int maxY = Math.max(loc1.getBlockY(), loc2.getBlockY());
int maxZ = Math.max(loc1.getBlockZ(), loc2.getBlockZ());
+ if (Dominion.config.getLimitVert()) {
+ minY = Dominion.config.getLimitMinY();
+ maxY = Dominion.config.getLimitMaxY();
+ }
if (Dominion.config.getEconomyEnable()) {
int count;
if (Dominion.config.getEconomyOnlyXZ()) {
diff --git a/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java b/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
index bf0f821..a29175d 100644
--- a/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
+++ b/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
@@ -56,8 +56,28 @@ public class ConfigManager {
}
_limit_min_y = _file.getInt("Limit.MinY", -64);
_limit_max_y = _file.getInt("Limit.MaxY", 320);
+ if (_limit_min_y >= _limit_max_y) {
+ XLogger.err("Limit.MinY 不能大于或等于 Limit.MaxY,已重置为 -64 320");
+ setLimitMinY(-64);
+ setLimitMaxY(320);
+ }
_limit_amount = _file.getInt("Limit.Amount", 10);
_limit_depth = _file.getInt("Limit.Depth", 10);
+ _limit_vert = _file.getBoolean("Limit.Vert", false);
+ if (_limit_vert) {
+ if (_limit_min_y == -1) {
+ XLogger.warn("启用 Limit.Vert 时 Limit.MinY 不能设置为无限,已自动调整为 -64");
+ setLimitMinY(-64);
+ }
+ if (_limit_max_y == -1) {
+ XLogger.warn("启用 Limit.Vert 时 Limit.MaxY 不能设置为无限,已自动调整为 320");
+ setLimitMaxY(320);
+ }
+ if (_limit_size_y <= _limit_max_y - _limit_min_y) {
+ setLimitSizeY(_limit_max_y - _limit_min_y + 1);
+ XLogger.warn("启用 Limit.Vert 时 Limit.SizeY 不能小于 Limit.MaxY - Limit.MinY,已自动调整为 " + (_limit_max_y - _limit_min_y + 1));
+ }
+ }
_world_black_list = _file.getStringList("Limit.WorldBlackList");
_check_update = _file.getBoolean("CheckUpdate", true);
_tp_enable = _file.getBoolean("Teleport.Enable", false);
@@ -232,6 +252,10 @@ public class ConfigManager {
_plugin.saveConfig();
}
+ public Boolean getLimitVert() {
+ return _limit_vert;
+ }
+
public List getWorldBlackList() {
return _world_black_list;
}
@@ -323,6 +347,7 @@ public class ConfigManager {
private Integer _limit_max_y;
private Integer _limit_amount;
private Integer _limit_depth;
+ private Boolean _limit_vert;
private List _world_black_list;
private Boolean _check_update;
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index d59b031..11b9d51 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -18,7 +18,8 @@ Limit:
SizeZ: 128 # Z方向最大长度
Amount: 10 # 最大领地数量
Depth: 3 # 子领地深度 0:不允许子领地 -1:不限制
- WorldBlackList: [] # 不允许领地的世界
+ Vert: false # 是否自动延伸到 MaxY 和 MinY
+ WorldBlackList: [ ] # 不允许领地的世界
Teleport:
Enable: true