193 lines
6.7 KiB
Java
193 lines
6.7 KiB
Java
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 <on/off>");
|
|
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 <hráč> <cíl>");
|
|
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 <on/off>");
|
|
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 <hráč>");
|
|
}
|
|
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 <hráč/*>");
|
|
}
|
|
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!");
|
|
}
|
|
} |