2026-02-13 18:50:05 +08:00
|
|
|
|
package com.playerblocklife;
|
|
|
|
|
|
|
|
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
|
|
import org.bukkit.Location;
|
|
|
|
|
|
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 SetLifeBlocksCommand implements CommandExecutor {
|
|
|
|
|
|
private final PlayerBlockLife plugin;
|
|
|
|
|
|
|
|
|
|
|
|
public SetLifeBlocksCommand(PlayerBlockLife plugin) {
|
|
|
|
|
|
this.plugin = plugin;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
// 检查命令是否启用
|
|
|
|
|
|
if (!plugin.getConfigManager().isCommandEnabled("setlifeblocks")) {
|
|
|
|
|
|
String message = plugin.getMessageManager().getMessage("game.errors.command_disabled",
|
|
|
|
|
|
"&c此命令已被禁用!");
|
|
|
|
|
|
sender.sendMessage(message);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-13 18:50:05 +08:00
|
|
|
|
if (!(sender instanceof Player)) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String message = plugin.getMessageManager().getMessage("game.errors.no_permission",
|
|
|
|
|
|
"&c只有玩家可以使用此命令!");
|
|
|
|
|
|
sender.sendMessage(message);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Player player = (Player) sender;
|
|
|
|
|
|
UUID playerId = player.getUniqueId();
|
|
|
|
|
|
|
|
|
|
|
|
if (args.length > 0 && args[0].equalsIgnoreCase("help")) {
|
|
|
|
|
|
showHelp(player);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-13 22:03:17 +08:00
|
|
|
|
// 检查管理员权限和配置
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
2026-02-13 18:50:05 +08:00
|
|
|
|
|
2026-02-13 22:03:17 +08:00
|
|
|
|
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);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
2026-02-13 22:03:17 +08:00
|
|
|
|
|
|
|
|
|
|
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;
|
2026-02-13 18:50:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
setBlocksForPlayer(player, null);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void setBlocksForPlayer(Player target, Player executor) {
|
|
|
|
|
|
UUID targetId = target.getUniqueId();
|
2026-02-13 22:03:17 +08:00
|
|
|
|
MessageManager msgManager = plugin.getMessageManager();
|
2026-02-13 18:50:05 +08:00
|
|
|
|
|
|
|
|
|
|
if (plugin.getBlockManager().hasLifeBlocks(targetId)) {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String message = msgManager.getMessage("game.errors.player_already_has_blocks",
|
|
|
|
|
|
"&c玩家 {player} 已经有生命方块了!");
|
|
|
|
|
|
message = message.replace("{player}", target.getName());
|
|
|
|
|
|
executor.sendMessage(message);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
} else {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String alreadyHas = msgManager.getCommandMessage("setlifeblocks", "already_has",
|
|
|
|
|
|
"&c你已经有生命方块了!使用 /checklifeblocks 查看位置");
|
|
|
|
|
|
target.sendMessage(alreadyHas);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!plugin.getSkinManager().isSkinLoaded(targetId)) {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String message = msgManager.getMessage("game.skin_loading",
|
|
|
|
|
|
"&e玩家 {player} 的皮肤正在加载中,请稍候...");
|
|
|
|
|
|
message = message.replace("{player}", target.getName());
|
|
|
|
|
|
executor.sendMessage(message);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
target.sendMessage("§e你的皮肤正在加载中,请稍候...");
|
|
|
|
|
|
target.sendMessage("§7(如果长时间未加载完成,请重新加入服务器)");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
plugin.getSkinManager().loadPlayerSkinAsync(target);
|
|
|
|
|
|
|
|
|
|
|
|
Bukkit.getScheduler().runTaskLater(plugin, () -> {
|
|
|
|
|
|
boolean success = plugin.getBlockManager().setLifeBlocks(target, target.getLocation());
|
|
|
|
|
|
if (success) {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
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);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String message = msgManager.getMessage("game.errors.failed_to_generate_blocks",
|
|
|
|
|
|
"&c为玩家 {player} 生成生命方块失败!");
|
|
|
|
|
|
message = message.replace("{player}", target.getName());
|
|
|
|
|
|
executor.sendMessage(message);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
target.sendMessage("§c生成失败,请稍后再试或联系管理员");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}, 40L);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
boolean success = plugin.getBlockManager().setLifeBlocks(target, target.getLocation());
|
|
|
|
|
|
|
|
|
|
|
|
if (success) {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
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);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (executor != null && !targetId.equals(executor.getUniqueId())) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
String message = msgManager.getMessage("game.errors.failed_to_generate_blocks",
|
|
|
|
|
|
"&c为玩家 {player} 生成生命方块失败!");
|
|
|
|
|
|
message = message.replace("{player}", target.getName());
|
|
|
|
|
|
executor.sendMessage(message);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
target.sendMessage("§c生成失败,请确保周围有足够空间");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void showHelp(Player player) {
|
2026-02-13 22:03:17 +08:00
|
|
|
|
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);
|
2026-02-13 18:50:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|