1.0.1:Fix bug:[21:01:10 INFO]: [PBL] §a========================================

[21:01:10 INFO]: [PBL] §ePlayerBlockLife v1.0.1-1.20.4 已启用
              [21:01:10 INFO]: [PBL] §e作者: [YourName]
              [21:01:10 INFO]: [PBL] §a========================================
This commit is contained in:
xiaobai
2026-02-13 22:03:17 +08:00
parent f899540449
commit 8b502459b0
10 changed files with 737 additions and 138 deletions

View File

@@ -17,21 +17,41 @@ public class AdminCommands implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!sender.hasPermission("playerblocklife.admin")) {
sender.sendMessage("§c你没有权限使用此命令");
MessageManager msgManager = plugin.getMessageManager();
ConfigManager config = plugin.getConfigManager();
String commandName = command.getName().toLowerCase();
// 检查命令是否启用
if (!config.isCommandEnabled(commandName)) {
String message = msgManager.getMessage("game.errors.command_disabled",
"&c此命令已被禁用");
sender.sendMessage(message);
return true;
}
// 检查管理员权限和配置
if (!sender.hasPermission("playerblocklife.admin") || config.isAdminOnly(commandName)) {
String message = msgManager.getMessage("game.errors.no_permission",
"&c你没有权限使用此命令");
sender.sendMessage(message);
return true;
}
if (command.getName().equalsIgnoreCase("pblreload")) {
if (commandName.equals("pblreload")) {
// 调用插件的完整重载方法
plugin.reloadPluginConfig();
sender.sendMessage("§a插件配置已完全重载");
String message = msgManager.getCommandMessage("pblreload", "success",
"&a配置已重载");
sender.sendMessage(message);
return true;
}
if (command.getName().equalsIgnoreCase("pbldelete")) {
if (commandName.equals("pbldelete")) {
if (args.length < 1) {
sender.sendMessage("§c用法: /pbldelete <玩家名>");
String usage = msgManager.getCommandMessage("pbldelete", "usage",
"&c用法: /pbldelete <玩家>");
sender.sendMessage(usage);
return true;
}
@@ -46,43 +66,57 @@ public class AdminCommands implements CommandExecutor {
try {
targetId = Bukkit.getOfflinePlayer(targetName).getUniqueId();
} catch (Exception e) {
sender.sendMessage("§c找不到玩家: " + targetName);
String message = msgManager.getMessage("game.errors.player_not_found",
"&c找不到玩家: {player}");
message = message.replace("{player}", targetName);
sender.sendMessage(message);
return true;
}
}
plugin.getBlockManager().clearPlayerBlocks(targetId);
sender.sendMessage("§a已删除玩家 " + targetName + " 的生命方块");
String message = msgManager.getCommandMessage("pbldelete", "success",
"&a已删除玩家 {player} 的生命方块!");
message = message.replace("{player}", targetName);
sender.sendMessage(message);
return true;
}
if (command.getName().equalsIgnoreCase("pblrevive")) {
if (commandName.equals("pblrevive")) {
Player target;
if (args.length < 1) {
if (!(sender instanceof Player)) {
sender.sendMessage("§c控制台使用时必须指定玩家名: /pblrevive <玩家名>");
String usage = msgManager.getCommandMessage("pblrevive", "usage",
"&c用法: /pblrevive [玩家]");
sender.sendMessage(usage);
return true;
}
target = (Player) sender;
} else {
target = Bukkit.getPlayer(args[0]);
if (target == null) {
sender.sendMessage("§c玩家不存在或不在线");
String message = msgManager.getMessage("game.errors.player_offline",
"&c玩家 {player} 不在线!");
message = message.replace("{player}", args[0]);
sender.sendMessage(message);
return true;
}
}
if (plugin.getLifeSystem() != null) {
plugin.getLifeSystem().revivePlayer(target);
sender.sendMessage("§a玩家 " + target.getName() + " 已复活!");
String message = msgManager.getCommandMessage("pblrevive", "success",
"&a玩家 {player} 已复活!");
message = message.replace("{player}", target.getName());
sender.sendMessage(message);
} else {
sender.sendMessage("§c复活失败生命系统未初始化");
}
return true;
}
if (command.getName().equalsIgnoreCase("pblstats")) {
if (commandName.equals("pblstats")) {
if (plugin.getBlockManager() == null) {
sender.sendMessage("§c方块管理器未初始化");
return true;
@@ -90,12 +124,37 @@ public class AdminCommands implements CommandExecutor {
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在线玩家生命方块:");
// 获取统计标题
String title = msgManager.getCommandMessage("pblstats", "title",
"&6=== PlayerBlockLife 统计 ===");
sender.sendMessage(title);
// 在线玩家统计
String onlineMsg = msgManager.getCommandMessage("pblstats", "online_players",
"&e在线玩家: {count}");
onlineMsg = onlineMsg.replace("{count}", String.valueOf(Bukkit.getOnlinePlayers().size()));
sender.sendMessage(onlineMsg);
// 总方块统计
String blocksMsg = msgManager.getCommandMessage("pblstats", "total_blocks",
"&e总生命方块: {count}");
blocksMsg = blocksMsg.replace("{count}", String.valueOf(totalBlocks));
sender.sendMessage(blocksMsg);
// 淘汰玩家统计
int eliminatedCount = 0;
for (Player player : Bukkit.getOnlinePlayers()) {
if (plugin.getBlockManager().getRemainingBlocks(player.getUniqueId()) == 0) {
eliminatedCount++;
}
}
String eliminatedMsg = msgManager.getCommandMessage("pblstats", "eliminated_players",
"&e已淘汰玩家: {count}");
eliminatedMsg = eliminatedMsg.replace("{count}", String.valueOf(eliminatedCount));
sender.sendMessage(eliminatedMsg);
sender.sendMessage("§7在线玩家详情:");
for (Player player : Bukkit.getOnlinePlayers()) {
int blocks = plugin.getBlockManager().getRemainingBlocks(player.getUniqueId());
String status = blocks > 0 ? "§a存活" : "§c已淘汰";
@@ -106,12 +165,9 @@ public class AdminCommands implements CommandExecutor {
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查看插件统计");
String unknownMsg = msgManager.getMessage("game.errors.invalid_arguments",
"&c未知的管理员命令");
sender.sendMessage(unknownMsg);
return true;
}
}