From 238650d77c821f47e2fa6440af7f8f5b0c369666 Mon Sep 17 00:00:00 2001 From: oiQwQio <3299893806@qq.com> Date: Sat, 2 Mar 2024 10:38:46 +0800 Subject: [PATCH] =?UTF-8?q?tpa=20=E9=83=A8=E5=88=86bug=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8F=8A=E5=BC=82=E5=B8=B8=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/tp/Tp.java | 74 +++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/tp/Tp.java b/src/main/java/org/tp/Tp.java index d19a23e..65a2cf3 100644 --- a/src/main/java/org/tp/Tp.java +++ b/src/main/java/org/tp/Tp.java @@ -8,7 +8,9 @@ import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; @@ -24,7 +26,7 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { Logger out=getLogger(); HashMap request; FileConfiguration config; - + final long timeDelay=5000; @Override public void onEnable() { // Plugin startup logic @@ -48,7 +50,7 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { this.saveConfig(); } - Player cmdGetPlayer(Player run,String findName){ + public static Player cmdGetPlayer(Player run,String findName){ Player playerObj=Bukkit.getPlayer(findName); if(playerObj==null){ run.sendMessage("§4玩家"+findName+"不存在"); @@ -86,8 +88,8 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { player.sendMessage("§4未找到上一传送点"); } else { playInfo.set("back", player.getLocation()); - player.teleport(pos); saveConfig(); + player.teleport(pos); player.sendMessage("§2返回上一传送点成功"); } break; @@ -99,13 +101,13 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { if ((playerObj = cmdGetPlayer(player, args[0])) == null) { return false; } - if (request.get(player.getName()) == null || (time = Duration.between(LocalDateTime.now(), request.get(player.getName()).dateTime).toMillis()) > 30000) { + if (request.get(player.getName()) == null || (time = Duration.between(request.get(player.getName()).dateTime, LocalDateTime.now()).toMillis()) > timeDelay) { request.put(player.getName(), new Request(player.getName(), args[0])); player.sendMessage("§2已发送传送请求"); playerObj.sendMessage(player.getName() + "请求传送到你这里"); - playerObj.sendMessage("输入[/tpaccept 接受]|[/tpdeny 拒绝] 请求"); + playerObj.sendMessage("输入§l§e[/tpaccept 接受]|[/tpdeny 拒绝] §r请求"); } else { - player.sendMessage("§e已有传送请求,请等待" + (30000 - time) / 1000 + "秒后再次发送"); + player.sendMessage("§e已有传送请求,请等待" + (timeDelay - time) / 1000 + "秒后再次发送"); } break; case "tpaccept": @@ -114,15 +116,15 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { return false; } if (request.get(playerObj.getName()) != null) { - time = Duration.between(LocalDateTime.now(), request.get(playerObj.getName()).dateTime).toMillis(); - if (time > 30000) { + time = Duration.between(request.get(playerObj.getName()).dateTime,LocalDateTime.now()).toMillis(); + if (time > timeDelay) { player.sendMessage("§e请求超时"); } else { player.sendMessage("§2已接受" + playerObj.getName() + "传送"); playerObj.sendMessage("§2传送已被接受"); config.set(playerObj.getUniqueId() + ".back", playerObj.getLocation()); - playerObj.teleport(player); saveConfig(); + playerObj.teleport(player); } } else { player.sendMessage("§4未发现传送请求"); @@ -131,16 +133,16 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { } for (Request i : request.values()) { if (i == null) continue; - time = Duration.between(LocalDateTime.now(), i.dateTime).toMillis(); + time = Duration.between( i.dateTime,LocalDateTime.now()).toMillis(); if (Objects.equals(i.toPlayer, player.getName()) && time < 30000) { if ((playerObj = cmdGetPlayer(player, i.rawPlayer)) == null) { continue; } - player.sendMessage("§2已接受传送"); + player.sendMessage("§2已接受"+playerObj.getName()+"传送"); playerObj.sendMessage("§2传送已被接受"); config.set(playerObj.getUniqueId() + ".back", playerObj.getLocation()); - playerObj.teleport(player); saveConfig(); + playerObj.teleport(player); } } break; @@ -160,25 +162,58 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { } for (Request i : request.values()) { if (i == null) continue; - time = Duration.between(LocalDateTime.now(), i.dateTime).toMillis(); - if (Objects.equals(i.toPlayer, player.getName()) && time < 30000) { + time = Duration.between(i.dateTime,LocalDateTime.now()).toMillis(); + if (Objects.equals(i.toPlayer, player.getName()) && time < timeDelay) { if ((playerObj = cmdGetPlayer(player, i.rawPlayer)) == null) { continue; } request.remove(i.rawPlayer); player.sendMessage("§e已拒绝传送"); - playerObj.sendMessage("§2传送已被拒绝"); + playerObj.sendMessage("§4传送已被拒绝"); } } break; case "home": + if (args != null && args.length>0 && args[0] != null) { + ConfigurationSection homeList; + if(playInfo==null|| (homeList=playInfo.getConfigurationSection("homes"))==null){ + player.sendMessage("§4未找到"+args[0]+"传送点"); + return false; + } + for(String i :homeList.getKeys(false)){ + if(args[0].equals(i)&&(pos=homeList.getLocation(i))!=null){ + playInfo.set("back",player.getLocation()); + saveConfig(); + player.teleport(pos); + player.sendMessage("已传送至"+i); + } + } + }else return false; break; case "sethome": - + if (args != null && args.length>0 && args[0] != null && playInfo!=null) { + playInfo.set("homes."+args[0],player.getLocation()); + saveConfig(); + player.sendMessage("已设置传送点"+args[0]); + }else return false; break; case "homes": - + ConfigurationSection homeList; + if(playInfo==null|| (homeList=playInfo.getConfigurationSection("homes"))==null){ + player.sendMessage("§4未找到传送点"); + return false; + } + player.sendMessage("存在路径点:"); + if (args != null && args.length>0 && args[0] != null) { + for(String i :homeList.getKeys(false)){ + if(i.contains(args[0]))player.sendMessage(i); + } + }else { + for(String i :homeList.getKeys(false)){ + player.sendMessage(i); + } + } break; default: player.sendMessage("未找到" + label + "命令"); @@ -189,4 +224,9 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor { } return true; } + @EventHandler + public void onPlayerDeathEvent(PlayerDeathEvent event){ + config.set(event.getPlayer().getUniqueId() + ".back", event.getPlayer().getLocation()); + saveConfig(); + } }