From 266db4850e1bcbfde191ae8a09b6f2b12b5006dd Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Wed, 26 Jun 2024 14:49:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=A0=E9=80=81=E5=80=92?= =?UTF-8?q?=E8=AE=A1=E6=97=B6=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../dominion/commands/DominionOperate.java | 32 +++++++++++++------ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index ed507ed..ce02b18 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.33.6-beta + 1.33.7-beta jar Dominion diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java index b9b28f6..b63ad5f 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java +++ b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java @@ -400,21 +400,33 @@ public class DominionOperate { } if (Dominion.config.getTpDelay() > 0) { Notification.info(player, "传送将在 %d 秒后执行", Dominion.config.getTpDelay()); + Scheduler.runTaskAsync(() -> { + int i = Dominion.config.getTpDelay(); + while (i > 0) { + if (!player.isOnline()) { + return; + } + Notification.actionBar(player, "传送倒计时 %d 秒", i); + i--; + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + XLogger.err(e.getMessage()); + } + } + }); } Cache.instance.NextTimeAllowTeleport.put(player.getUniqueId(), now.plusSeconds(Dominion.config.getTpCoolDown())); Scheduler.runTaskLater(() -> { Location location = dominionDTO.getTpLocation(); + int center_x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2; + int center_z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2; + World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld()); if (location == null) { - int x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2; - int z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2; - World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld()); - location = new Location(world, x, player.getLocation().getY(), z); + location = new Location(world, center_x, player.getLocation().getY(), center_z); XLogger.warn("领地 %s 没有设置传送点,将尝试传送到中心点", dominionDTO.getName()); } else if (!isInDominion(dominionDTO, location)) { - int x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2; - int z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2; - World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld()); - location = new Location(world, x, player.getLocation().getY(), z); + location = new Location(world, center_x, player.getLocation().getY(), center_z); XLogger.warn("领地 %s 传送点不在领地内,将尝试传送到中心点", dominionDTO.getName()); } if (player.isOnline()) { @@ -432,8 +444,8 @@ public class DominionOperate { /** * 设置领地卫星地图地块颜色 * - * @param sender 命令发送者 - * @param args 命令参数 + * @param sender 命令发送者 + * @param args 命令参数 */ public static void setMapColor(CommandSender sender, String[] args) { Player player = playerOnly(sender);