package dev.trixinity.eventmanager.commands; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.GameMode; /** * Implementace příkazů pro správu eventů. */ public class EventCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args == null || args.length == 0) { showHelp(sender); return true; } if (!sender.hasPermission("trixinity.event.*")) { sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); return true; } switch (args[0].toLowerCase()) { case "build": handleBuild(sender, args); break; case "pvp": handlePvP(sender, args); break; case "spawn": handleSpawn(sender, args); break; case "gmc": handleGamemode(sender); break; case "heal": handleHeal(sender, args); break; case "teleport": handleTeleport(sender, args); break; default: showHelp(sender); break; } return true; } /** * Zobrazí nápovědu příkazů. * * @param sender Odesílatel příkazu */ private void showHelp(CommandSender sender) { sender.sendMessage(String.format("%s%s------------(%s%s EVENT %s%s)------------", ChatColor.RED, ChatColor.STRIKETHROUGH, ChatColor.RED, ChatColor.BOLD, ChatColor.RED, ChatColor.STRIKETHROUGH)); sender.sendMessage(""); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/build off/on"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/event off/on"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/pvp off/on"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/spawn (hráč)"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/gmc"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/heal (hráč/*)"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/teleport (hráč) (hráč)"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "WorldEdit příkazy"); sender.sendMessage(""); sender.sendMessage(ChatColor.RED + ChatColor.STRIKETHROUGH.toString() + "---------------------------------"); } private void handleBuild(CommandSender sender, String[] args) { if (args == null || args.length < 2) { sender.sendMessage(ChatColor.RED + "Použití: /event build "); return; } String command = args[1].toLowerCase(); if ("on".equals(command)) { // Bezpečnější porovnání řetězců Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ build -w EVENT allow"); sender.sendMessage(ChatColor.GREEN + "Build mód byl zapnut!"); } else if ("off".equals(command)) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ build -w EVENT deny"); sender.sendMessage(ChatColor.RED + "Build mód byl vypnut!"); } } private void handleTeleport(CommandSender sender, String[] args) { if (args == null || args.length < 3) { sender.sendMessage(ChatColor.RED + "Použití: /event teleport "); return; } Player player = Bukkit.getPlayer(args[1]); Player target = Bukkit.getPlayer(args[2]); if (player == null || target == null) { sender.sendMessage(ChatColor.RED + "Jeden nebo oba hráči nejsou online!"); return; } player.teleport(target.getLocation()); sender.sendMessage(ChatColor.GREEN + String.format("Hráč %s byl teleportován k hráči %s!", player.getName(), target.getName())); } private void handlePvP(CommandSender sender, String[] args) { if (args.length < 2) { sender.sendMessage(ChatColor.RED + "Použití: /event pvp "); return; } String command = args[1].toLowerCase(); if (command.equals("on")) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ pvp -w EVENT allow"); sender.sendMessage(ChatColor.GREEN + "PvP bylo zapnuto!"); } else if (command.equals("off")) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "rg flag __global__ pvp -w EVENT deny"); sender.sendMessage(ChatColor.RED + "PvP bylo vypnuto!"); } } private void handleSpawn(CommandSender sender, String[] args) { if (args.length < 2) { if (sender instanceof Player) { Bukkit.dispatchCommand(sender, "spawn"); } else { sender.sendMessage(ChatColor.RED + "Použití: /event spawn "); } return; } Player target = Bukkit.getPlayer(args[1]); if (target == null) { sender.sendMessage(ChatColor.RED + "Hráč není online!"); return; } Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "spawn " + target.getName()); sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl teleportován na spawn!"); } private void handleGamemode(CommandSender sender) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "Tento příkaz může použít pouze hráč!"); return; } Player player = (Player) sender; player.setGameMode(GameMode.CREATIVE); sender.sendMessage(ChatColor.GREEN + "Herní mód byl změněn na Creative!"); } private void handleHeal(CommandSender sender, String[] args) { if (args.length < 2) { if (sender instanceof Player) { Player player = (Player) sender; player.setHealth(player.getMaxHealth()); player.setFoodLevel(20); sender.sendMessage(ChatColor.GREEN + "Byl jsi vyléčen!"); } else { sender.sendMessage(ChatColor.RED + "Použití: /event heal "); } return; } if (args[1].equals("*")) { for (Player player : Bukkit.getOnlinePlayers()) { player.setHealth(player.getMaxHealth()); player.setFoodLevel(20); } sender.sendMessage(ChatColor.GREEN + "Všichni hráči byli vyléčeni!"); return; } Player target = Bukkit.getPlayer(args[1]); if (target == null) { sender.sendMessage(ChatColor.RED + "Hráč není online!"); return; } target.setHealth(target.getMaxHealth()); target.setFoodLevel(20); sender.sendMessage(ChatColor.GREEN + "Hráč " + target.getName() + " byl vyléčen!"); } }