update 2025/10/15 upd
update:0
This commit is contained in:
@@ -37,12 +37,14 @@ public class TeleportCommandExecutor implements CommandExecutor {
|
||||
sender.sendMessage(ChatColor.RED + "该玩家不在线!");
|
||||
return true;
|
||||
}
|
||||
if (args[1].contains("me")){
|
||||
if (args.length == 2) {
|
||||
if (args[1].contains("me")) {
|
||||
playerto = Bukkit.getPlayer(args[0]);
|
||||
if(plugin.teleport.getOrDefault(playerto, null) != null){
|
||||
if (plugin.teleport.getOrDefault(playerto, null) != null) {
|
||||
sender.sendMessage(ChatColor.RED + "对方已经发送了一个请求,请等待");
|
||||
return true;
|
||||
}if (plugin.Ateleport.getOrDefault(sender, null) != null) {
|
||||
}
|
||||
if (plugin.Ateleport.getOrDefault(sender, null) != null) {
|
||||
sender.sendMessage(ChatColor.RED + "你还有一个未处理的请求!");
|
||||
return true;
|
||||
}
|
||||
@@ -69,6 +71,7 @@ public class TeleportCommandExecutor implements CommandExecutor {
|
||||
}.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 + " 发送了一份请求");
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.xgqy.survival.Survival;
|
||||
|
||||
public class TpAccCommandExecutor implements CommandExecutor {
|
||||
|
||||
private Survival plugin;
|
||||
private final Survival plugin;
|
||||
|
||||
public TpAccCommandExecutor(Survival plugin) {
|
||||
this.plugin = plugin;
|
||||
@@ -19,76 +19,159 @@ public class TpAccCommandExecutor implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
if (sender instanceof Player) {
|
||||
if (plugin.Ateleport.getOrDefault(sender, null) != null) {
|
||||
if (args[0].contains("accept")) {
|
||||
sender.sendMessage(ChatColor.GREEN + "传送成功!");
|
||||
plugin.Ateleport.get(sender).sendMessage(ChatColor.GREEN + "传送成功!输入 /tpfin 回到原处,该命令将会在5分钟后过期。");
|
||||
plugin.teleportp.put(plugin.Ateleport.get(sender), plugin.Ateleport.get(sender).getLocation());
|
||||
plugin.Ateleport.get(sender).teleport(((Player) sender).getLocation());
|
||||
plugin.isteleport.put(plugin.Ateleport.get(sender), 1);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (plugin.isteleport.get(sender) != 1)
|
||||
plugin.Ateleport.get(sender).sendMessage(ChatColor.RED + "返回命令已过期,你将无法返回原处!");
|
||||
plugin.teleportp.remove(plugin.Ateleport.get(sender));
|
||||
plugin.teleport.remove(plugin.Ateleport.get(sender));
|
||||
plugin.isteleport.remove(plugin.Ateleport.get(sender));
|
||||
plugin.Ateleport.remove(sender);
|
||||
}
|
||||
}.runTaskLater(plugin, 5 * 20 * 60);
|
||||
// 仅允许玩家执行命令
|
||||
if (!(sender instanceof Player player)) {
|
||||
sender.sendMessage(ChatColor.RED + "无法对非玩家使用此命令");
|
||||
return true;
|
||||
} else if (args[0].contains("deny")) {
|
||||
sender.sendMessage(ChatColor.GREEN + "拒绝成功");
|
||||
plugin.Ateleport.get(sender).sendMessage(ChatColor.GREEN + "您的传送请求被拒绝");
|
||||
//plugin.teleportp.put(plugin.Ateleport.get(sender),plugin.Ateleport.get(sender).getLocation());
|
||||
plugin.teleportp.remove(plugin.Ateleport.get(sender));
|
||||
plugin.teleport.remove(plugin.Ateleport.get(sender));
|
||||
plugin.isteleport.remove(plugin.Ateleport.get(sender));
|
||||
plugin.Ateleport.remove(sender);
|
||||
}
|
||||
|
||||
// 检查玩家是否已登录
|
||||
if (!plugin.getAccountManager().isLoggedIn(player)) {
|
||||
player.sendMessage(ChatColor.RED + "请先登录或注册!");
|
||||
return true;
|
||||
}
|
||||
|
||||
// 参数长度校验(必须为1个参数)
|
||||
if (args.length != 1) {
|
||||
player.sendMessage(ChatColor.RED + "请输入正确参数!用法: /tpacc <accept|deny|tome|detome>");
|
||||
return true;
|
||||
}
|
||||
|
||||
// 处理不同参数逻辑
|
||||
String action = args[0];
|
||||
switch (action) {
|
||||
case "accept":
|
||||
handleAccept(player);
|
||||
break;
|
||||
case "deny":
|
||||
handleDeny(player);
|
||||
break;
|
||||
case "tome":
|
||||
handleTome(player);
|
||||
break;
|
||||
case "detome":
|
||||
handleDetome(player);
|
||||
break;
|
||||
default:
|
||||
player.sendMessage(ChatColor.RED + "参数错误!请使用 /tpacc <accept|deny|tome|detome>");
|
||||
}
|
||||
|
||||
return true;
|
||||
} 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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理接受对方传送至自己的请求
|
||||
*/
|
||||
private void handleAccept(Player receiver) {
|
||||
// 获取请求传送的玩家(Ateleport: 接收者 -> 请求者)
|
||||
Player requester = plugin.Ateleport.get(receiver);
|
||||
if (requester == null || !requester.isOnline()) {
|
||||
receiver.sendMessage(ChatColor.RED + "传送请求已过期或不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
// 执行传送逻辑
|
||||
receiver.sendMessage(ChatColor.GREEN + "已同意传送请求!");
|
||||
requester.sendMessage(ChatColor.GREEN + "对方已同意传送!输入 /tpfin 可在5分钟内返回原处");
|
||||
|
||||
// 保存请求者原始位置
|
||||
plugin.teleportp.put(requester, requester.getLocation());
|
||||
// 传送请求者到接收者位置
|
||||
requester.teleport(receiver.getLocation());
|
||||
plugin.isteleport.put(requester, 1);
|
||||
|
||||
// 5分钟后清理传送状态
|
||||
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);
|
||||
if (plugin.isteleport.getOrDefault(requester, 0) != 1) {
|
||||
requester.sendMessage(ChatColor.RED + "返回命令已过期,无法再返回原处");
|
||||
}
|
||||
}.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;
|
||||
// 清理相关映射
|
||||
plugin.teleportp.remove(requester);
|
||||
plugin.teleport.remove(requester);
|
||||
plugin.isteleport.remove(requester);
|
||||
plugin.Ateleport.remove(receiver);
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "现在没有传送申请或申请已过期");
|
||||
return true;
|
||||
}.runTaskLater(plugin, 5 * 60 * 20); // 5分钟(20tick=1秒)
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "无法对非玩家类使用");
|
||||
return true;
|
||||
|
||||
/**
|
||||
* 处理拒绝对方传送至自己的请求
|
||||
*/
|
||||
private void handleDeny(Player receiver) {
|
||||
Player requester = plugin.Ateleport.get(receiver);
|
||||
if (requester == null || !requester.isOnline()) {
|
||||
receiver.sendMessage(ChatColor.RED + "传送请求已过期或不存在");
|
||||
return;
|
||||
}
|
||||
//return true;
|
||||
|
||||
// 发送拒绝消息
|
||||
receiver.sendMessage(ChatColor.GREEN + "已拒绝传送请求");
|
||||
requester.sendMessage(ChatColor.RED + "对方已拒绝你的传送请求");
|
||||
|
||||
// 清理相关映射
|
||||
plugin.teleportp.remove(requester);
|
||||
plugin.teleport.remove(requester);
|
||||
plugin.isteleport.remove(requester);
|
||||
plugin.Ateleport.remove(receiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理同意自己传送至对方的请求
|
||||
*/
|
||||
private void handleTome(Player requester) {
|
||||
// 获取请求接收者(teleport: 请求者 -> 接收者)
|
||||
Player receiver = plugin.teleport.get(requester);
|
||||
if (receiver == null || !receiver.isOnline()) {
|
||||
requester.sendMessage(ChatColor.RED + "传送请求已过期或不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
// 执行传送逻辑
|
||||
requester.sendMessage(ChatColor.GREEN + "已同意传送至对方!");
|
||||
receiver.sendMessage(ChatColor.GREEN + "对方已同意传送至你处");
|
||||
|
||||
// 保存请求者原始位置
|
||||
plugin.teleportp.put(requester, requester.getLocation());
|
||||
// 传送请求者到接收者位置
|
||||
requester.teleport(receiver.getLocation());
|
||||
plugin.isteleport.put(requester, 1);
|
||||
|
||||
// 5分钟后清理传送状态
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (plugin.isteleport.getOrDefault(requester, 0) != 1) {
|
||||
requester.sendMessage(ChatColor.RED + "返回命令已过期,无法再返回原处");
|
||||
}
|
||||
// 清理相关映射
|
||||
plugin.teleportp.remove(requester);
|
||||
plugin.Ateleport.remove(receiver);
|
||||
plugin.isteleport.remove(requester);
|
||||
plugin.teleport.remove(requester);
|
||||
}
|
||||
}.runTaskLater(plugin, 5 * 60 * 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理拒绝自己传送至对方的请求
|
||||
*/
|
||||
private void handleDetome(Player requester) {
|
||||
Player receiver = plugin.teleport.get(requester);
|
||||
if (receiver == null || !receiver.isOnline()) {
|
||||
requester.sendMessage(ChatColor.RED + "传送请求已过期或不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送拒绝消息
|
||||
requester.sendMessage(ChatColor.GREEN + "已拒绝传送至对方");
|
||||
receiver.sendMessage(ChatColor.RED + "对方已拒绝传送至你处");
|
||||
|
||||
// 清理相关映射
|
||||
plugin.teleportp.remove(requester);
|
||||
plugin.Ateleport.remove(receiver);
|
||||
plugin.isteleport.remove(requester);
|
||||
plugin.teleport.remove(requester);
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,20 @@ commands:
|
||||
login:
|
||||
description: to login
|
||||
usage: /<command> <password>
|
||||
party:
|
||||
description: to create a party
|
||||
usage: /<command> <create|quit|join|invite|kick|allow|disband|help> <args>
|
||||
inventory:
|
||||
description: check inventory of a player
|
||||
usage: /<command> <player>
|
||||
permission: permission.settag
|
||||
permission-message: 无权执行命令
|
||||
msg:
|
||||
description: private chat with friend
|
||||
usage: /<command> <player> <message>
|
||||
friend:
|
||||
description: add friend
|
||||
usage: /<command> <add|allow|deny|remove> <player>
|
||||
permissions:
|
||||
permission.settag:
|
||||
description: Allows setting player tags
|
||||
|
||||
Reference in New Issue
Block a user