update 2025/10/15 upd

update:0
This commit is contained in:
2025-10-16 20:14:25 +08:00
parent f8b8065c37
commit 529802f6c5
3 changed files with 199 additions and 99 deletions

View File

@@ -37,12 +37,14 @@ public class TeleportCommandExecutor implements CommandExecutor {
sender.sendMessage(ChatColor.RED + "该玩家不在线!");
return true;
}
if (args.length == 2) {
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) {
}
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 + " 发送了一份请求");

View File

@@ -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);
}
}

View File

@@ -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