From 4beeea50404183d898e118e53f6bcc40cd34d158 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Thu, 18 Jul 2024 11:32:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BE=B9=E7=95=8C=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/cn/lunadeer/dominion/Cache.java | 26 ++++++------------- .../java/cn/lunadeer/dominion/Dominion.java | 1 - .../cn/lunadeer/dominion/DominionNode.java | 6 ++--- .../controllers/DominionController.java | 6 ++--- .../dominion/events/SelectPointEvents.java | 5 ++-- .../lunadeer/dominion/tuis/AllDominion.java | 1 - .../dominion/tuis/dominion/DominionList.java | 1 - .../tuis/dominion/manage/SizeInfo.java | 7 ++--- .../cn/lunadeer/dominion/utils/Particle.java | 22 ++++++++++++++++ 10 files changed, 40 insertions(+), 37 deletions(-) create mode 100644 src/main/java/cn/lunadeer/dominion/utils/Particle.java diff --git a/pom.xml b/pom.xml index 6b93e0c..378267a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.37.0-beta + 1.37.1-beta jar Dominion diff --git a/src/main/java/cn/lunadeer/dominion/Cache.java b/src/main/java/cn/lunadeer/dominion/Cache.java index 6a9b4e2..f935736 100644 --- a/src/main/java/cn/lunadeer/dominion/Cache.java +++ b/src/main/java/cn/lunadeer/dominion/Cache.java @@ -1,9 +1,12 @@ package cn.lunadeer.dominion; -import cn.lunadeer.dominion.dtos.*; +import cn.lunadeer.dominion.dtos.DominionDTO; +import cn.lunadeer.dominion.dtos.Flag; +import cn.lunadeer.dominion.dtos.GroupDTO; +import cn.lunadeer.dominion.dtos.MemberDTO; +import cn.lunadeer.dominion.utils.Particle; import cn.lunadeer.dominion.utils.ResMigration; import cn.lunadeer.minecraftpluginutils.Notification; -import cn.lunadeer.minecraftpluginutils.ParticleRender; import cn.lunadeer.minecraftpluginutils.Scheduler; import cn.lunadeer.minecraftpluginutils.XLogger; import org.bukkit.GameMode; @@ -11,7 +14,6 @@ import org.bukkit.Location; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -20,6 +22,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import static cn.lunadeer.dominion.DominionNode.getLocInDominionNode; +import static cn.lunadeer.dominion.DominionNode.isInDominion; public class Cache { @@ -212,7 +215,7 @@ public class Cache { if (last_in_dom_id != null) { last_dominion = id_dominions.get(last_in_dom_id); } - if (isInDominion(last_dominion, player)) { + if (isInDominion(last_dominion, player.getLocation())) { if (dominion_children.get(last_in_dom_id) == null || dominion_children.get(last_in_dom_id).size() == 0) { // 如果玩家仍在领地内,且领地没有子领地,则直接返回 if (recheckPlayerState) { @@ -249,9 +252,7 @@ public class Cache { player_current_dominion_id.put(player.getUniqueId(), current_dominion.getId()); // show border if (current_dominion.getFlagValue(Flag.SHOW_BORDER)) { - ParticleRender.showBoxFace(player, - current_dominion.getLocation1(), - current_dominion.getLocation2()); + Particle.showBorder(player, current_dominion); } return current_dominion; } @@ -361,17 +362,6 @@ public class Cache { return player_uuid_to_member.get(player_uuid).get(dominion.getId()); } - private static boolean isInDominion(@Nullable DominionDTO dominion, Player player) { - if (dominion == null) return false; - if (!Objects.equals(dominion.getWorld(), player.getWorld().getName())) return false; - double x = player.getLocation().getX(); - double y = player.getLocation().getY(); - double z = player.getLocation().getZ(); - return x >= dominion.getX1() && x <= dominion.getX2() && - y >= dominion.getY1() && y <= dominion.getY2() && - z >= dominion.getZ1() && z <= dominion.getZ2(); - } - public DominionDTO getDominion(Integer id) { return id_dominions.get(id); } diff --git a/src/main/java/cn/lunadeer/dominion/Dominion.java b/src/main/java/cn/lunadeer/dominion/Dominion.java index 9f9c899..3ffb019 100644 --- a/src/main/java/cn/lunadeer/dominion/Dominion.java +++ b/src/main/java/cn/lunadeer/dominion/Dominion.java @@ -1,6 +1,5 @@ package cn.lunadeer.dominion; -import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO; import cn.lunadeer.dominion.events.EnvironmentEvents; import cn.lunadeer.dominion.events.PlayerEvents; import cn.lunadeer.dominion.events.SelectPointEvents; diff --git a/src/main/java/cn/lunadeer/dominion/DominionNode.java b/src/main/java/cn/lunadeer/dominion/DominionNode.java index 4158dde..987a519 100644 --- a/src/main/java/cn/lunadeer/dominion/DominionNode.java +++ b/src/main/java/cn/lunadeer/dominion/DominionNode.java @@ -72,8 +72,8 @@ public class DominionNode { double x = location.getX(); double y = location.getY(); double z = location.getZ(); - return x >= dominion.getX1() && x <= dominion.getX2() && - y >= dominion.getY1() && y <= dominion.getY2() && - z >= dominion.getZ1() && z <= dominion.getZ2(); + return x >= dominion.getX1() && x < dominion.getX2() && + y >= dominion.getY1() && y < dominion.getY2() && + z >= dominion.getZ1() && z < dominion.getZ2(); } } diff --git a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java index 1e98c76..32a4713 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java @@ -4,8 +4,8 @@ import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.PlayerDTO; +import cn.lunadeer.dominion.utils.Particle; import cn.lunadeer.minecraftpluginutils.Notification; -import cn.lunadeer.minecraftpluginutils.ParticleRender; import cn.lunadeer.minecraftpluginutils.VaultConnect; import cn.lunadeer.minecraftpluginutils.XLogger; import org.bukkit.Location; @@ -786,9 +786,7 @@ public class DominionController { */ private static void handleParticle(AbstractOperator operator, DominionDTO dominion) { if (operator instanceof BukkitPlayerOperator) { - ParticleRender.showBoxFace(operator.getPlayer(), - dominion.getLocation1(), - dominion.getLocation2()); + Particle.showBorder(operator.getPlayer(), dominion); } } diff --git a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java index d9ecccd..58c07f8 100644 --- a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java @@ -1,10 +1,9 @@ package cn.lunadeer.dominion.events; -import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.dtos.DominionDTO; +import cn.lunadeer.dominion.utils.Particle; import cn.lunadeer.minecraftpluginutils.Notification; -import cn.lunadeer.minecraftpluginutils.ParticleRender; import cn.lunadeer.minecraftpluginutils.VaultConnect; import org.bukkit.Location; import org.bukkit.World; @@ -95,7 +94,7 @@ public class SelectPointEvents implements Listener { float price = count * Dominion.config.getEconomyPrice(); Notification.info(player, "预计领地创建价格为 %.2f %s", price, VaultConnect.instance.currencyNamePlural()); } - ParticleRender.showBoxFace(player, dominion.getLocation1(), dominion.getLocation2()); + Particle.showBorder(player, dominion); Notification.info(player, "尺寸: %d x %d x %d", dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ()); Notification.info(player, "面积: %d", dominion.getSquare()); Notification.info(player, "高度: %d", dominion.getHeight()); diff --git a/src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java b/src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java index 602a2cb..8a8b9e0 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java @@ -1,6 +1,5 @@ package cn.lunadeer.dominion.tuis; -import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.DominionNode; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.minecraftpluginutils.stui.ListView; diff --git a/src/main/java/cn/lunadeer/dominion/tuis/dominion/DominionList.java b/src/main/java/cn/lunadeer/dominion/tuis/dominion/DominionList.java index 24d0cda..8b852cc 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/dominion/DominionList.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/dominion/DominionList.java @@ -1,6 +1,5 @@ package cn.lunadeer.dominion.tuis.dominion; -import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.DominionNode; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.minecraftpluginutils.stui.ListView; diff --git a/src/main/java/cn/lunadeer/dominion/tuis/dominion/manage/SizeInfo.java b/src/main/java/cn/lunadeer/dominion/tuis/dominion/manage/SizeInfo.java index 0ecde11..ec7284c 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/dominion/manage/SizeInfo.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/dominion/manage/SizeInfo.java @@ -1,11 +1,10 @@ package cn.lunadeer.dominion.tuis.dominion.manage; -import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.controllers.PlayerController; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.PlayerDTO; +import cn.lunadeer.dominion.utils.Particle; import cn.lunadeer.minecraftpluginutils.Notification; -import cn.lunadeer.minecraftpluginutils.ParticleRender; import cn.lunadeer.minecraftpluginutils.stui.View; import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Line; @@ -49,8 +48,6 @@ public class SizeInfo { .append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create("访客权限").setExecuteCommand("/dominion guest_setting " + dominion.getName()).build())) .showOn(player); - ParticleRender.showBoxFace(player, - dominion.getLocation1(), - dominion.getLocation2()); + Particle.showBorder(player, dominion); } } diff --git a/src/main/java/cn/lunadeer/dominion/utils/Particle.java b/src/main/java/cn/lunadeer/dominion/utils/Particle.java new file mode 100644 index 0000000..3b3065a --- /dev/null +++ b/src/main/java/cn/lunadeer/dominion/utils/Particle.java @@ -0,0 +1,22 @@ +package cn.lunadeer.dominion.utils; + +import cn.lunadeer.dominion.dtos.DominionDTO; +import cn.lunadeer.minecraftpluginutils.ParticleRender; +import org.bukkit.entity.Player; + +public class Particle { + + public static void showBorder(Player player, DominionDTO dominion) { + // 由于领地的坐标系统是方块坐标,所以大端需要减去1才是实际角点坐标 + ParticleRender.showBoxFace(player, + dominion.getLocation1().getWorld(), + dominion.getLocation1().getBlockX(), + dominion.getLocation1().getBlockY(), + dominion.getLocation1().getBlockZ(), + dominion.getLocation2().getBlockX(), + dominion.getLocation2().getBlockY(), + dominion.getLocation2().getBlockZ() + ); + } + +}