Files
PlayerBlockLife/src/main/java/com/playerblocklife/AdminCommands.java

117 lines
4.4 KiB
Java
Raw Normal View History

2026-02-13 18:50:05 +08:00
package com.playerblocklife;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.UUID;
public class AdminCommands implements CommandExecutor {
private final PlayerBlockLife plugin;
public AdminCommands(PlayerBlockLife plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!sender.hasPermission("playerblocklife.admin")) {
sender.sendMessage("§c你没有权限使用此命令");
return true;
}
if (command.getName().equalsIgnoreCase("pblreload")) {
// 调用插件的完整重载方法
plugin.reloadPluginConfig();
sender.sendMessage("§a插件配置已完全重载");
2026-02-13 18:50:05 +08:00
return true;
}
if (command.getName().equalsIgnoreCase("pbldelete")) {
if (args.length < 1) {
sender.sendMessage("§c用法: /pbldelete <玩家名>");
return true;
}
String targetName = args[0];
Player target = Bukkit.getPlayer(targetName);
UUID targetId;
if (target != null) {
targetId = target.getUniqueId();
} else {
// 尝试从离线玩家获取UUID
try {
targetId = Bukkit.getOfflinePlayer(targetName).getUniqueId();
} catch (Exception e) {
sender.sendMessage("§c找不到玩家: " + targetName);
return true;
}
2026-02-13 18:50:05 +08:00
}
plugin.getBlockManager().clearPlayerBlocks(targetId);
sender.sendMessage("§a已删除玩家 " + targetName + " 的生命方块");
return true;
}
if (command.getName().equalsIgnoreCase("pblrevive")) {
Player target;
if (args.length < 1) {
if (!(sender instanceof Player)) {
sender.sendMessage("§c控制台使用时必须指定玩家名: /pblrevive <玩家名>");
return true;
}
target = (Player) sender;
} else {
target = Bukkit.getPlayer(args[0]);
if (target == null) {
sender.sendMessage("§c玩家不存在或不在线");
return true;
}
}
if (plugin.getLifeSystem() != null) {
plugin.getLifeSystem().revivePlayer(target);
sender.sendMessage("§a玩家 " + target.getName() + " 已复活!");
} else {
sender.sendMessage("§c复活失败生命系统未初始化");
}
2026-02-13 18:50:05 +08:00
return true;
}
if (command.getName().equalsIgnoreCase("pblstats")) {
if (plugin.getBlockManager() == null) {
sender.sendMessage("§c方块管理器未初始化");
return true;
}
2026-02-13 18:50:05 +08:00
int totalPlayers = plugin.getBlockManager().getPlayerBlocksCount();
int totalBlocks = plugin.getBlockManager().getTotalBlocksCount();
sender.sendMessage("§a===== PlayerBlockLife 统计 =====");
sender.sendMessage("§7注册玩家数: §e" + totalPlayers);
sender.sendMessage("§7总生命方块数: §e" + totalBlocks);
sender.sendMessage("§7在线玩家生命方块:");
for (Player player : Bukkit.getOnlinePlayers()) {
int blocks = plugin.getBlockManager().getRemainingBlocks(player.getUniqueId());
String status = blocks > 0 ? "§a存活" : "§c已淘汰";
sender.sendMessage("§7- " + player.getName() + ": §e" + blocks + " §7/ §a5 §7(" + status + "§7)");
2026-02-13 18:50:05 +08:00
}
sender.sendMessage("§a=================================");
2026-02-13 18:50:05 +08:00
return true;
}
sender.sendMessage("§c未知的管理员命令");
sender.sendMessage("§e可用命令:");
sender.sendMessage("§7/pblreload §8- §f重载插件配置");
sender.sendMessage("§7/pbldelete <玩家> §8- §f删除玩家的生命方块");
sender.sendMessage("§7/pblrevive [玩家] §8- §f复活被淘汰的玩家");
sender.sendMessage("§7/pblstats §8- §f查看插件统计");
return true;
}
}