From da974f2238e2d15a42727028d14300c00fa168d5 Mon Sep 17 00:00:00 2001 From: ch2012enyc Date: Sun, 12 Oct 2025 19:12:22 +0800 Subject: [PATCH] update 2025/10/12 upd2 update: - teleport fix - teleport new va (teleport me) --- .../survival/command/HelpCommandExecutor.java | 3 +- .../command/TeleportCommandExecutor.java | 34 ++++++++++++++++++- .../command/TpAccCommandExecutor.java | 30 +++++++++++++++- .../org/xgqy/survival/event/JoinEvent.java | 2 +- 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/xgqy/survival/command/HelpCommandExecutor.java b/src/main/java/org/xgqy/survival/command/HelpCommandExecutor.java index e4d5877..a28b97b 100644 --- a/src/main/java/org/xgqy/survival/command/HelpCommandExecutor.java +++ b/src/main/java/org/xgqy/survival/command/HelpCommandExecutor.java @@ -21,9 +21,8 @@ public class HelpCommandExecutor implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "/pvp - 开启/关闭 玩家伤害"); sender.sendMessage(ChatColor.GREEN + "/tag - 选择称号"); sender.sendMessage(ChatColor.GREEN + "/teleport <玩家名> - 玩家传送"); + sender.sendMessage(ChatColor.GREEN + "/teleport <玩家名> me - 玩家传送"); sender.sendMessage(ChatColor.GREEN + "/report - 举报作弊玩家"); - sender.sendMessage(ChatColor.GREEN + "/tpacc - 同意/拒绝玩家传送"); - sender.sendMessage(ChatColor.GREEN + "/tpfin - 结束传送"); sender.sendMessage(ChatColor.YELLOW + "-----------------------------"); return true; } diff --git a/src/main/java/org/xgqy/survival/command/TeleportCommandExecutor.java b/src/main/java/org/xgqy/survival/command/TeleportCommandExecutor.java index 180601e..823f8f6 100644 --- a/src/main/java/org/xgqy/survival/command/TeleportCommandExecutor.java +++ b/src/main/java/org/xgqy/survival/command/TeleportCommandExecutor.java @@ -28,7 +28,7 @@ public class TeleportCommandExecutor implements CommandExecutor { sender.sendMessage(ChatColor.RED + "传送正在冷却,剩余: " + (4 - (System.currentTimeMillis() - plugin.lasttp.getOrDefault(sender, 0L)) / 1000 / 60) + " 分 " + (60 - ((System.currentTimeMillis() - plugin.lasttp.getOrDefault(sender, 0L)) / 1000) % 60) + " 秒 "); return true; } - if (args.length != 1) { + if (args.length != 1 && args.length != 2) { sender.sendMessage(ChatColor.RED + "参数错误!用法: /teleport <玩家名>"); return true; } else { @@ -37,6 +37,38 @@ public class TeleportCommandExecutor implements CommandExecutor { sender.sendMessage(ChatColor.RED + "该玩家不在线!"); return true; } + if (args[1].contains("me")){ + playerto = Bukkit.getPlayer(args[0]); + if(plugin.teleport.getOrDefault(playerto, null) != null){ + sender.sendMessage(ChatColor.RED + "对方已经发送了一个请求,请等待"); + return true; + }if (plugin.Ateleport.getOrDefault(sender, null) != null) { + sender.sendMessage(ChatColor.RED + "你还有一个未处理的请求!"); + return true; + } + sender.sendMessage(ChatColor.GREEN + "请求已发送"); + playerto.sendMessage(ChatColor.GREEN + "玩家 " + sender.getName() + ChatColor.GREEN + " 向你发来传送请求,输入 /tpacc tome 同意这个请求或 /tpacc detome 来拒绝这个请求,有效期2分钟。"); + BaseComponent[] message = new ComponentBuilder(ChatColor.YELLOW + "玩家 " + sender.getName() + ChatColor.YELLOW + " 向你发来传送请求\n") + .append(new ComponentBuilder(ChatColor.GREEN + "[同意] ").event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tpacc tome")).create()) + .append(new ComponentBuilder(ChatColor.RED + "[拒绝]").event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/tpacc detome")).create()) + .create(); + playerto.spigot().sendMessage(message); + plugin.Ateleport.put((Player) sender, playerto); + plugin.teleport.put(playerto, (Player) sender); + new BukkitRunnable() { + @Override + public void run() { + if (plugin.teleportp.getOrDefault(playerto, null) == null) + playerto.sendMessage(ChatColor.RED + "玩家 " + sender.getName() + ChatColor.RED + " 的传送请求已过期"); + if (plugin.teleportp.getOrDefault(playerto, null) == null) + sender.sendMessage(ChatColor.RED + "你向 " + playerto.getName() + ChatColor.RED + " 发送的传送请求已过期"); + plugin.Ateleport.remove((Player) sender); + plugin.teleport.remove(playerto); + plugin.isteleport.remove(playerto); + } + }.runTaskLater(plugin, 40 * 60); + return true; + } playerto = Bukkit.getPlayer(args[0]); if (plugin.teleport.getOrDefault((Player) sender, null) != null) { playerto.sendMessage(ChatColor.RED + "您已经向 " + plugin.teleport.get((Player) sender).getName() + ChatColor.RED + " 发送了一份请求"); diff --git a/src/main/java/org/xgqy/survival/command/TpAccCommandExecutor.java b/src/main/java/org/xgqy/survival/command/TpAccCommandExecutor.java index 44ff0fd..3e60ee7 100644 --- a/src/main/java/org/xgqy/survival/command/TpAccCommandExecutor.java +++ b/src/main/java/org/xgqy/survival/command/TpAccCommandExecutor.java @@ -49,7 +49,35 @@ public class TpAccCommandExecutor implements CommandExecutor { plugin.Ateleport.remove(sender); return true; - } else { + } else if (args[0].contains("tome")){ + sender.sendMessage(ChatColor.GREEN + "传送成功!"); + plugin.teleport.get(sender).sendMessage(ChatColor.GREEN + "传送成功!输入 /tpfin 回到原处,该命令将会在5分钟后过期。"); + plugin.teleportp.put(plugin.teleport.get(sender), plugin.teleport.get(sender).getLocation()); + plugin.teleport.get(sender).teleport(((Player) sender).getLocation()); + plugin.isteleport.put(plugin.teleport.get(sender), 1); + ((Player)sender).teleport(plugin.Ateleport.get(sender)); + new BukkitRunnable() { + @Override + public void run() { + if (plugin.isteleport.get(sender) != 1) + plugin.teleport.get(sender).sendMessage(ChatColor.RED + "返回命令已过期,你将无法返回原处!"); + plugin.teleportp.remove(plugin.teleport.get(sender)); + plugin.Ateleport.remove(plugin.teleport.get(sender)); + plugin.isteleport.remove(plugin.teleport.get(sender)); + plugin.teleport.remove(sender); + } + }.runTaskLater(plugin, 5 * 20 * 60); + return true; + }else if (args[0].contains("detome")){ + sender.sendMessage(ChatColor.GREEN + "拒绝成功"); + plugin.teleport.get(sender).sendMessage(ChatColor.GREEN + "您的传送请求被拒绝"); + //plugin.teleportp.put(plugin.Ateleport.get(sender),plugin.Ateleport.get(sender).getLocation()); + plugin.teleportp.remove(plugin.teleport.get(sender)); + plugin.Ateleport.remove(plugin.teleport.get(sender)); + plugin.isteleport.remove(plugin.teleport.get(sender)); + plugin.teleport.remove(sender); + return true; + }else { sender.sendMessage(ChatColor.RED + "参数错误,请输入 /tpacc accept 或 /tpacc deny"); return true; } diff --git a/src/main/java/org/xgqy/survival/event/JoinEvent.java b/src/main/java/org/xgqy/survival/event/JoinEvent.java index 4e9aa82..9070acf 100644 --- a/src/main/java/org/xgqy/survival/event/JoinEvent.java +++ b/src/main/java/org/xgqy/survival/event/JoinEvent.java @@ -52,7 +52,7 @@ public class JoinEvent implements Listener { } } player.teleport(new Location(player.getWorld(),x,player.getWorld().getHighestBlockYAt(bx,bz),z)); - player.sendMessage(ChatColor.GREEN+"你好,欢迎!"); + //player.sendMessage(ChatColor.GREEN+"你好,欢迎!"); player.getScoreboard().getObjective("logged").getScore(player).setScore(1); } e.setJoinMessage(e.getPlayer().getPlayerListName() + " 加入了 生存1区");