From 4a44ec7498b964a71889fe81ef367d2ac489696c Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Tue, 7 May 2024 17:45:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20Vert=20=E5=8F=82=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E8=AE=BE=E7=BD=AE=E7=8E=A9=E5=AE=B6=E5=9C=88?= =?UTF-8?q?=E5=9C=B0=E8=87=AA=E5=8A=A8=E5=8C=85=E5=90=ABY=E6=96=B9?= =?UTF-8?q?=E5=90=91=E6=9C=80=E5=A4=A7=E5=80=BC=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../cn/lunadeer/dominion/commands/Apis.java | 4 +++ .../dominion/events/SelectPointEvents.java | 4 +++ .../dominion/utils/ConfigManager.java | 25 +++++++++++++++++++ src/main/resources/config.yml | 3 ++- 5 files changed, 36 insertions(+), 2 deletions(-) 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