diff --git a/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java b/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java index c1d65d6..9aa200d 100644 --- a/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java +++ b/src/main/java/dev/trixinity/eventmanager/commands/EventCommand.java @@ -4,11 +4,15 @@ import dev.trixinity.eventmanager.TrixinityEventManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.Arrays; @@ -50,6 +54,13 @@ public class EventCommand implements CommandExecutor, TabCompleter { } handleEventEnd(sender); break; + case "event": + if (!sender.hasPermission("trixinity.event.admin")) { + sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); + return true; + } + handleEventEvent(sender, args); + break; case "build": if (!sender.hasPermission("trixinity.event.build")) { sender.sendMessage(ChatColor.RED + "Nemáte oprávnění k použití tohoto příkazu!"); @@ -98,7 +109,7 @@ public class EventCommand implements CommandExecutor, TabCompleter { if (args.length == 1) { // První argument - sub-příkazy - List subCommands = Arrays.asList("starting", "start", "end", "build", "pvp", "spawn", "hunger", "kick"); + List subCommands = Arrays.asList("starting", "start", "end", "event", "build", "pvp", "spawn", "hunger", "kick"); for (String subCommand : subCommands) { if (subCommand.toLowerCase().startsWith(args[0].toLowerCase())) { completions.add(subCommand); @@ -117,6 +128,14 @@ public class EventCommand implements CommandExecutor, TabCompleter { } } break; + case "event": + List eventOptions = Arrays.asList("spleef", "end"); + for (String option : eventOptions) { + if (option.toLowerCase().startsWith(args[1].toLowerCase())) { + completions.add(option); + } + } + break; case "spawn": case "kick": // Autocomplete pro jména hráčů @@ -220,6 +239,8 @@ public class EventCommand implements CommandExecutor, TabCompleter { + ChatColor.RED + "/event start"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/event end"); + sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + + ChatColor.RED + "/event event "); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " + ChatColor.RED + "/event build off/on"); sender.sendMessage(ChatColor.RED + ChatColor.BOLD.toString() + "- " @@ -464,4 +485,79 @@ public class EventCommand implements CommandExecutor, TabCompleter { } } } + + /** + * Zpracuje příkaz event event. + * + * @param sender Odesílatel příkazu + * @param args Argumenty příkazu + */ + private void handleEventEvent(CommandSender sender, String[] args) { + if (args == null || args.length < 2) { + sender.sendMessage(ChatColor.RED + "Použití: /event event "); + return; + } + + String eventType = args[1].toLowerCase(); + switch (eventType) { + case "spleef": + handleSpleefStart(sender); + break; + case "end": + handleSpleefEnd(sender); + break; + default: + sender.sendMessage(ChatColor.RED + "Použití: /event event "); + break; + } + } + + /** + * Spustí spleef event. + * + * @param sender Odesílatel příkazu + */ + private void handleSpleefStart(CommandSender sender) { + // Vyplnění oblasti sněhovými bloky + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "fill 22 107 -21 50 107 9 minecraft:snow_block"); + + // Teleportace všech hráčů + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "minecraft:tp @a 42 108 1"); + + // Dání zlaté lopaty všem hráčům + for (Player player : Bukkit.getOnlinePlayers()) { + ItemStack goldenShovel = new ItemStack(Material.GOLDEN_SHOVEL); + ItemMeta meta = goldenShovel.getItemMeta(); + + if (meta != null) { + meta.setUnbreakable(true); + meta.addEnchant(Enchantment.EFFICIENCY, 3, true); // Opraveno z DIG_SPEED na EFFICIENCY + meta.setDisplayName(ChatColor.GOLD + "Spleef Lopata"); + goldenShovel.setItemMeta(meta); + } + + player.getInventory().addItem(goldenShovel); + } + + sender.sendMessage(ChatColor.GREEN + "Spleef event byl spuštěn!"); + Bukkit.broadcastMessage(ChatColor.YELLOW + ChatColor.BOLD.toString() + "SPLEEF EVENT ZAČAL!"); + } + + /** + * Ukončí spleef event. + * + * @param sender Odesílatel příkazu + */ + private void handleSpleefEnd(CommandSender sender) { + // Odebrání zlatých lopat všem hráčům + for (Player player : Bukkit.getOnlinePlayers()) { + player.getInventory().remove(Material.GOLDEN_SHOVEL); + } + + // Teleportace všech hráčů + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "minecraft:tp @a 43 60 26"); + + sender.sendMessage(ChatColor.RED + "Spleef event byl ukončen!"); + Bukkit.broadcastMessage(ChatColor.RED + ChatColor.BOLD.toString() + "SPLEEF EVENT SKONČIL!"); + } } \ No newline at end of file