tpa 部分bug修复及异常输出
This commit is contained in:
parent
ef95751183
commit
9367ff81a3
|
@ -12,6 +12,8 @@ import org.bukkit.event.Listener;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -27,9 +29,18 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor {
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
// Plugin startup logic
|
// Plugin startup logic
|
||||||
out.info("插件 tpa 启动成功");
|
out.info("插件 tpa 启动成功");
|
||||||
|
if (!getDataFolder().exists()){
|
||||||
|
out.info("Creating "+ getDataFolder() +" main directory ");
|
||||||
|
getDataFolder().mkdir();
|
||||||
|
}
|
||||||
|
saveDefaultConfig();
|
||||||
|
config=getConfig();
|
||||||
|
request=new HashMap<>();
|
||||||
getServer().getPluginManager().registerEvents(this, this);
|
getServer().getPluginManager().registerEvents(this, this);
|
||||||
this.saveDefaultConfig();
|
Objects.requireNonNull(getCommand("tpa")).setExecutor(this);
|
||||||
config=this.getConfig();
|
Objects.requireNonNull(getCommand("tpaccept")).setExecutor(this);
|
||||||
|
Objects.requireNonNull(getCommand("tpdeny")).setExecutor(this);
|
||||||
|
Objects.requireNonNull(getCommand("back")).setExecutor(this);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
@ -50,121 +61,131 @@ public final class Tp extends JavaPlugin implements Listener, CommandExecutor {
|
||||||
return playerObj;
|
return playerObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getStackTrace(Throwable throwable){
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
try (PrintWriter pw = new PrintWriter(sw)) {
|
||||||
|
throwable.printStackTrace(pw);
|
||||||
|
return sw.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args){
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args){
|
||||||
if(!(sender instanceof Player)){
|
try {
|
||||||
out.warning("此命令是玩家命令");
|
if (!(sender instanceof Player)) {
|
||||||
return false;
|
out.warning("此命令是玩家命令");
|
||||||
}
|
return false;
|
||||||
Player player=(Player) sender;
|
}
|
||||||
ConfigurationSection playInfo=config.getConfigurationSection(player.getUniqueId().toString());
|
Player player = (Player) sender;
|
||||||
Location pos;
|
ConfigurationSection playInfo = config.getConfigurationSection(player.getUniqueId().toString());
|
||||||
Player playerObj;
|
Location pos;
|
||||||
long time;
|
Player playerObj;
|
||||||
switch (label) {
|
long time;
|
||||||
case "back":
|
switch (label) {
|
||||||
if (playInfo == null || (pos=playInfo.getLocation("back")) == null){
|
case "back":
|
||||||
player.sendMessage("§4未找到上一传送点");
|
if (playInfo == null || (pos = playInfo.getLocation("back")) == null) {
|
||||||
}else{
|
player.sendMessage("§4未找到上一传送点");
|
||||||
playInfo.set("back",player.getLocation());
|
} else {
|
||||||
player.teleport(pos);
|
playInfo.set("back", player.getLocation());
|
||||||
saveConfig();
|
player.teleport(pos);
|
||||||
player.sendMessage("§2返回上一传送点成功");
|
saveConfig();
|
||||||
}
|
player.sendMessage("§2返回上一传送点成功");
|
||||||
break;
|
}
|
||||||
case "tpa":
|
break;
|
||||||
if(args==null||args[0]==null){
|
case "tpa":
|
||||||
player.sendMessage("§4参数不正确,请输入 /tpa <玩家名>");
|
if (args == null || args.length<1 || args[0] == null) {
|
||||||
return false;
|
player.sendMessage("§4参数不正确,请输入 /tpa <玩家名>");
|
||||||
}
|
|
||||||
if((playerObj=cmdGetPlayer(player,args[0]))==null){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
time=Duration.between(LocalDateTime.now(),request.get(player.getName()).dateTime).toMillis();
|
|
||||||
if(request.get(player.getName())==null|| time>30000){
|
|
||||||
request.put(player.getName(),new Request(player.getName(),args[0]));
|
|
||||||
player.sendMessage("§2已发送传送请求");
|
|
||||||
playerObj.sendMessage(player.getName()+"请求传送到你这里");
|
|
||||||
playerObj.sendMessage("输入[/tpaccept 接受]|[/tpdeny 拒绝] 请求");
|
|
||||||
}else{
|
|
||||||
player.sendMessage("§e已有传送请求,请等待"+(30000-time)/1000+"秒后再次发送");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "tpaccept":
|
|
||||||
if(args!=null&&args[0]!=null){
|
|
||||||
if((playerObj=cmdGetPlayer(player,args[0]))==null){
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(request.get(playerObj.getName())!=null){
|
if ((playerObj = cmdGetPlayer(player, args[0])) == null) {
|
||||||
time=Duration.between(LocalDateTime.now(),request.get(playerObj.getName()).dateTime).toMillis();
|
return false;
|
||||||
if(time>30000){
|
}
|
||||||
player.sendMessage("§e请求超时");
|
if (request.get(player.getName()) == null || (time = Duration.between(LocalDateTime.now(), request.get(player.getName()).dateTime).toMillis()) > 30000) {
|
||||||
}else {
|
request.put(player.getName(), new Request(player.getName(), args[0]));
|
||||||
player.sendMessage("§2已接受"+playerObj.getName()+"传送");
|
player.sendMessage("§2已发送传送请求");
|
||||||
|
playerObj.sendMessage(player.getName() + "请求传送到你这里");
|
||||||
|
playerObj.sendMessage("输入[/tpaccept 接受]|[/tpdeny 拒绝] 请求");
|
||||||
|
} else {
|
||||||
|
player.sendMessage("§e已有传送请求,请等待" + (30000 - time) / 1000 + "秒后再次发送");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "tpaccept":
|
||||||
|
if (args != null && args.length>0 && args[0] != null) {
|
||||||
|
if ((playerObj = cmdGetPlayer(player, args[0])) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (request.get(playerObj.getName()) != null) {
|
||||||
|
time = Duration.between(LocalDateTime.now(), request.get(playerObj.getName()).dateTime).toMillis();
|
||||||
|
if (time > 30000) {
|
||||||
|
player.sendMessage("§e请求超时");
|
||||||
|
} else {
|
||||||
|
player.sendMessage("§2已接受" + playerObj.getName() + "传送");
|
||||||
|
playerObj.sendMessage("§2传送已被接受");
|
||||||
|
config.set(playerObj.getUniqueId() + ".back", playerObj.getLocation());
|
||||||
|
playerObj.teleport(player);
|
||||||
|
saveConfig();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
player.sendMessage("§4未发现传送请求");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
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) {
|
||||||
|
if ((playerObj = cmdGetPlayer(player, i.rawPlayer)) == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
player.sendMessage("§2已接受传送");
|
||||||
playerObj.sendMessage("§2传送已被接受");
|
playerObj.sendMessage("§2传送已被接受");
|
||||||
config.set(playerObj.getUniqueId() +".back",playerObj.getLocation());
|
config.set(playerObj.getUniqueId() + ".back", playerObj.getLocation());
|
||||||
playerObj.teleport(player);
|
playerObj.teleport(player);
|
||||||
saveConfig();
|
saveConfig();
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
player.sendMessage("§4未发现传送请求");
|
|
||||||
}
|
}
|
||||||
return true;
|
break;
|
||||||
}
|
case "tpdeny":
|
||||||
for(Request i : request.values()){
|
if (args != null && args.length>0 && args[0] != null) {
|
||||||
if(i==null)continue;
|
if ((playerObj = cmdGetPlayer(player, args[0])) == null) {
|
||||||
time=Duration.between(LocalDateTime.now(),i.dateTime).toMillis();
|
return false;
|
||||||
if(Objects.equals(i.toPlayer, player.getName())&&time<30000){
|
|
||||||
if((playerObj=cmdGetPlayer(player,i.rawPlayer))==null){
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
player.sendMessage("§2已接受传送");
|
Request tmp = request.get(playerObj.getName());
|
||||||
playerObj.sendMessage("§2传送已被接受");
|
if (tmp == null || !player.getName().equals(tmp.toPlayer)) {
|
||||||
config.set(playerObj.getUniqueId() +".back",playerObj.getLocation());
|
player.sendMessage("此玩家无传送请求");
|
||||||
playerObj.teleport(player);
|
return false;
|
||||||
saveConfig();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "tpdeny":
|
|
||||||
if(args!=null&&args[0]!=null){
|
|
||||||
if((playerObj=cmdGetPlayer(player,args[0]))==null){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Request tmp=request.get(playerObj.getName());
|
|
||||||
if(tmp==null|| !player.getName().equals(tmp.toPlayer)){
|
|
||||||
player.sendMessage("此玩家无传送请求");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
request.remove(playerObj.getName());
|
|
||||||
player.sendMessage("§e已拒绝传送");
|
|
||||||
playerObj.sendMessage("§2传送已被拒绝");
|
|
||||||
}
|
|
||||||
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){
|
|
||||||
if((playerObj=cmdGetPlayer(player,i.rawPlayer))==null){
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
request.remove(i.rawPlayer);
|
request.remove(playerObj.getName());
|
||||||
player.sendMessage("§e已拒绝传送");
|
player.sendMessage("§e已拒绝传送");
|
||||||
playerObj.sendMessage("§2传送已被拒绝");
|
playerObj.sendMessage("§2传送已被拒绝");
|
||||||
}
|
}
|
||||||
}
|
for (Request i : request.values()) {
|
||||||
break;
|
if (i == null) continue;
|
||||||
case "home":
|
time = Duration.between(LocalDateTime.now(), i.dateTime).toMillis();
|
||||||
|
if (Objects.equals(i.toPlayer, player.getName()) && time < 30000) {
|
||||||
|
if ((playerObj = cmdGetPlayer(player, i.rawPlayer)) == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
request.remove(i.rawPlayer);
|
||||||
|
player.sendMessage("§e已拒绝传送");
|
||||||
|
playerObj.sendMessage("§2传送已被拒绝");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "home":
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "sethome":
|
case "sethome":
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "homes":
|
case "homes":
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
player.sendMessage("未找到" + label + "命令");
|
player.sendMessage("未找到" + label + "命令");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
out.warning(getStackTrace(e));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue