tpa 部分bug修复及异常输出

This commit is contained in:
oiQwQio 2024-03-02 10:38:46 +08:00
parent 9367ff81a3
commit 238650d77c
1 changed files with 57 additions and 17 deletions

View File

@ -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<String,Request> 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();
}
}