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

@@ -18,8 +18,18 @@ public class SetLifeBlocksCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
// 检查命令是否启用
if (!plugin.getConfigManager().isCommandEnabled("setlifeblocks")) {
String message = plugin.getMessageManager().getMessage("game.errors.command_disabled",
"&c此命令已被禁用");
sender.sendMessage(message);
return true;
}
if (!(sender instanceof Player)) {
sender.sendMessage("§c只有玩家可以使用此命令");
String message = plugin.getMessageManager().getMessage("game.errors.no_permission",
"&c只有玩家可以使用此命令");
sender.sendMessage(message);
return true;
}
@@ -31,22 +41,42 @@ public class SetLifeBlocksCommand implements CommandExecutor {
return true;
}
if (args.length > 0 && player.hasPermission("playerblocklife.admin")) {
if (args[0].equalsIgnoreCase("other")) {
if (args.length < 2) {
player.sendMessage("§c用法: /setlifeblocks other <玩家名>");
return true;
}
Player target = Bukkit.getPlayer(args[1]);
if (target == null) {
player.sendMessage("§c找不到玩家: " + args[1]);
return true;
}
setBlocksForPlayer(target, player);
// 检查管理员权限和配置
if (args.length > 0 && args[0].equalsIgnoreCase("other")) {
// 检查是否允许管理员使用
if (!plugin.getConfigManager().isAdminUseAllowed("setlifeblocks") || !player.hasPermission("playerblocklife.admin")) {
String message = plugin.getMessageManager().getMessage("game.errors.no_permission",
"&c你没有权限使用此命令");
player.sendMessage(message);
return true;
}
if (args.length < 2) {
String usage = plugin.getMessageManager().getCommandMessage("setlifeblocks", "usage",
"&c用法: /setlifeblocks [reset|other|help]");
player.sendMessage(usage);
return true;
}
Player target = Bukkit.getPlayer(args[1]);
if (target == null) {
String message = plugin.getMessageManager().getMessage("game.errors.player_not_found",
"&c找不到玩家: {player}");
message = message.replace("{player}", args[1]);
player.sendMessage(message);
return true;
}
setBlocksForPlayer(target, player);
return true;
}
// 检查是否允许玩家自己使用
if (!plugin.getConfigManager().isSelfUseAllowed("setlifeblocks")) {
String message = plugin.getMessageManager().getMessage("game.errors.no_permission",
"&c你没有权限使用此命令");
player.sendMessage(message);
return true;
}
setBlocksForPlayer(player, null);
@@ -55,21 +85,28 @@ public class SetLifeBlocksCommand implements CommandExecutor {
private void setBlocksForPlayer(Player target, Player executor) {
UUID targetId = target.getUniqueId();
MessageManager msgManager = plugin.getMessageManager();
if (plugin.getBlockManager().hasLifeBlocks(targetId)) {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§c玩家 " + target.getName() + " 已经有生命方块了!");
String message = msgManager.getMessage("game.errors.player_already_has_blocks",
"&c玩家 {player} 已经有生命方块了!");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
target.sendMessage("§c你已经有生命方块了");
target.sendMessage("§e使用 /checklifeblocks 查看位置");
target.sendMessage("§e使用 /setlifeblocks reset 重置方块位置");
String alreadyHas = msgManager.getCommandMessage("setlifeblocks", "already_has",
"&c你已经有生命方块了使用 /checklifeblocks 查看位置");
target.sendMessage(alreadyHas);
}
return;
}
if (!plugin.getSkinManager().isSkinLoaded(targetId)) {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§e玩家 " + target.getName() + " 的皮肤正在加载中,请稍候...");
String message = msgManager.getMessage("game.skin_loading",
"&e玩家 {player} 的皮肤正在加载中,请稍候...");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
target.sendMessage("§e你的皮肤正在加载中请稍候...");
target.sendMessage("§7(如果长时间未加载完成,请重新加入服务器)");
@@ -81,11 +118,23 @@ public class SetLifeBlocksCommand implements CommandExecutor {
boolean success = plugin.getBlockManager().setLifeBlocks(target, target.getLocation());
if (success) {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§a已为玩家 " + target.getName() + " 生成生命方块!");
String message = msgManager.getMessage("game.blocks_generated_for_other",
"&a已为玩家 {player} 生成生命方块!");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
String successMsg = msgManager.getCommandMessage("setlifeblocks", "success",
"&a已为你生成 {blocks} 个生命方块!");
ConfigManager config = plugin.getConfigManager();
successMsg = successMsg.replace("{blocks}", String.valueOf(config.getBlocksPerPlayer()));
target.sendMessage(successMsg);
}
} else {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§c为玩家 " + target.getName() + " 生成生命方块失败!");
String message = msgManager.getMessage("game.errors.failed_to_generate_blocks",
"&c为玩家 {player} 生成生命方块失败!");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
target.sendMessage("§c生成失败请稍后再试或联系管理员");
}
@@ -99,11 +148,23 @@ public class SetLifeBlocksCommand implements CommandExecutor {
if (success) {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§a已为玩家 " + target.getName() + " 生成生命方块!");
String message = msgManager.getMessage("game.blocks_generated_for_other",
"&a已为玩家 {player} 生成生命方块!");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
String successMsg = msgManager.getCommandMessage("setlifeblocks", "success",
"&a已为你生成 {blocks} 个生命方块!");
ConfigManager config = plugin.getConfigManager();
successMsg = successMsg.replace("{blocks}", String.valueOf(config.getBlocksPerPlayer()));
target.sendMessage(successMsg);
}
} else {
if (executor != null && !targetId.equals(executor.getUniqueId())) {
executor.sendMessage("§c为玩家 " + target.getName() + " 生成生命方块失败!");
String message = msgManager.getMessage("game.errors.failed_to_generate_blocks",
"&c为玩家 {player} 生成生命方块失败!");
message = message.replace("{player}", target.getName());
executor.sendMessage(message);
} else {
target.sendMessage("§c生成失败请确保周围有足够空间");
}
@@ -111,22 +172,13 @@ public class SetLifeBlocksCommand implements CommandExecutor {
}
private void showHelp(Player player) {
player.sendMessage("§a========== PlayerBlockLife 帮助 ==========");
player.sendMessage("§e/setlifeblocks §7- 设置你的生命方块");
player.sendMessage("§e/checklifeblocks §7- 查看你的生命方块位置");
player.sendMessage("§e/setlifeblocks reset §7- 重置生命方块位置");
if (player.hasPermission("playerblocklife.admin")) {
player.sendMessage("§6管理员命令:");
player.sendMessage("§e/setlifeblocks other <玩家> §7- 为其他玩家设置生命方块");
player.sendMessage("§e/pblreload §7- 重载插件配置");
player.sendMessage("§e/pbldelete <玩家> §7- 删除玩家的生命方块");
}
player.sendMessage("§7游戏规则:");
player.sendMessage("§7- 每个玩家有5个生命方块");
player.sendMessage("§7- 方块被挖光时,玩家死亡");
player.sendMessage("§7- 方块使用玩家的皮肤作为材质");
player.sendMessage("§a======================================");
String helpMessage = plugin.getMessageManager().getCommandMessage("setlifeblocks", "help",
"&6=== PlayerBlockLife 帮助 ===\n" +
"&e/setlifeblocks &7- 设置你的生命方块\n" +
"&e/setlifeblocks reset &7- 重置生命方块位置\n" +
"&e/setlifeblocks other <玩家> &7- 为其他玩家设置(管理员)\n" +
"&e/setlifeblocks help &7- 显示此帮助");
player.sendMessage(helpMessage);
}
}