diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 735ea30..e025f2f 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -15,11 +15,15 @@ import de.fanta.challenges.commands.coords.CoordsGetCommand; import de.fanta.challenges.commands.coords.CoordsSaveCommand; import de.fanta.challenges.commands.coords.CoordsShareCommand; -import de.fanta.challenges.commands.HPCommand; import de.fanta.challenges.commands.ResetCommand; import de.fanta.challenges.commands.ReviveCommand; import de.fanta.challenges.commands.SettingsCommand; import de.fanta.challenges.commands.TimerCommand; +import de.fanta.challenges.commands.hp.HPAddCommand; +import de.fanta.challenges.commands.hp.HPGetCommand; +import de.fanta.challenges.commands.hp.HPMaxCommand; +import de.fanta.challenges.commands.hp.HPRemoveCommand; +import de.fanta.challenges.commands.hp.HPSetCommand; import de.fanta.challenges.events.BlockCreateListener; import de.fanta.challenges.events.BlockDestroyListener; import de.fanta.challenges.events.DamageListener; @@ -97,7 +101,6 @@ this.backpack = new BackpackCommand(this); - getCommand("hp").setExecutor(new HPCommand(this)); getCommand("settings").setExecutor(new SettingsCommand(this)); getCommand("revive").setExecutor(new ReviveCommand(this)); getCommand("timer").setExecutor(new TimerCommand(this)); @@ -119,6 +122,13 @@ coordsRouter.addCommandMapping(new CoordsSaveCommand(this), "save"); coordsRouter.addCommandMapping(new CoordsDeleteCommand(this), "delete"); + CommandRouter hpRouter = new CommandRouter(getCommand("hp")); + hpRouter.addCommandMapping(new HPAddCommand(this), "add"); + hpRouter.addCommandMapping(new HPGetCommand(this), "get"); + hpRouter.addCommandMapping(new HPMaxCommand(this), "max"); + hpRouter.addCommandMapping(new HPRemoveCommand(this), "remove"); + hpRouter.addCommandMapping(new HPSetCommand(this), "set"); + Bukkit.getPluginManager().registerEvents(new InventoryClickListener(), this); Bukkit.getPluginManager().registerEvents(new QuitJoinListener(), this); Bukkit.getPluginManager().registerEvents(new BlockDestroyListener(), this); diff --git a/src/main/java/de/fanta/challenges/commands/HPCommand.java b/src/main/java/de/fanta/challenges/commands/HPCommand.java deleted file mode 100644 index 8a9fa92..0000000 --- a/src/main/java/de/fanta/challenges/commands/HPCommand.java +++ /dev/null @@ -1,93 +0,0 @@ -package de.fanta.challenges.commands; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.ChatUtil; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class HPCommand implements CommandExecutor { - - private final Challenges plugin; - - public HPCommand(Challenges plugin) { - this.plugin = plugin; - } - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - if (args.length >= 2) { - if (args[0].equalsIgnoreCase("max")) { - if (Double.parseDouble(args[1]) > 0) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.setMaxHealth(Double.parseDouble(args[1])); - pp.setHealth(pp.getMaxHealth()); - } - ChatUtil.sendNormalMessage(sender, "Du hast die maximalen HP auf " + args[1] + " gesetzt!"); - } - } else if (args[0].equalsIgnoreCase("get")) { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1])); - if (other.isOnline()) { - Player p = (Player) other; - ChatUtil.sendNormalMessage(p, p.getName() + " besitzt derzeit " + p.getHealth() + "HP!"); - } else - ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); - } else if (args.length >= 3) { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1])); - if (other.isOnline()) { - Player p = (Player) other; - double finaladdhp = p.getHealth() + Double.parseDouble(args[2]); - double finalremhp = p.getHealth() - Double.parseDouble(args[2]); - if (args[0].equalsIgnoreCase("add")) { - if (!(finaladdhp > p.getMaxHealth()) && !(finaladdhp < 0)) { - p.setHealth(finaladdhp); - ChatUtil.sendNormalMessage(p, "Du wurdest von " + sender.getName() + " um " + args[2] + "HP geheilt!"); - } else - ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); - } - if (args[0].equalsIgnoreCase("remove")) { - if (!(finalremhp > p.getMaxHealth()) && !(finalremhp < 0)) { - p.setHealth(finalremhp); - ChatUtil.sendNormalMessage(p, sender.getName() + " hat dir " + args[2] + "HP entfernt!"); - ChatUtil.sendNormalMessage(sender, "Du hast " + p.getName() + " " + args[2] + "HP entfernt!"); - } else - ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); - } - if (args[0].equalsIgnoreCase("set")) { - if (!(Double.parseDouble(args[2]) > p.getMaxHealth()) && !(Double.parseDouble(args[2]) < 0)) { - p.setHealth(Double.parseDouble(args[2])); - ChatUtil.sendNormalMessage(p, sender.getName() + " hat deine HP auf " + args[2] + " gesetzt!"); - ChatUtil.sendNormalMessage(sender, "Du hast die HP von " + p.getName() + " auf " + args[2] + " gesetzt!"); - } else - ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); - } - } else - ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); - } else { - ChatUtil.sendNormalMessage(sender, "~~~~~ HP command ~~~~~"); - ChatUtil.sendNormalMessage(sender, "/HP Get - Erhalte die aktuelen HP eines Spielers"); - ChatUtil.sendNormalMessage(sender, "/HP Add - Füge einem Spieler die angegebene Zahl an Herzen hinzu"); - ChatUtil.sendNormalMessage(sender, "/HP Remove - Entferne einem Spieler die angegebene Zahl an Herzen"); - ChatUtil.sendNormalMessage(sender, "/HP Set - Setze die Herzen eines Spieler auf die angegebene Zahl"); - ChatUtil.sendNormalMessage(sender, "/HP Max - Setze die maximalen HP aller Spieler"); - - } - } else { - ChatUtil.sendNormalMessage(sender, "~~~~~ HP command ~~~~~"); - ChatUtil.sendNormalMessage(sender, "/HP Get - Erhalte die aktuelen HP eines Spielers"); - ChatUtil.sendNormalMessage(sender, "/HP Add - Füge einem Spieler die angegebene Zahl an Herzen hinzu"); - ChatUtil.sendNormalMessage(sender, "/HP Remove - Entferne einem Spieler die angegebene Zahl an Herzen"); - ChatUtil.sendNormalMessage(sender, "/HP Set - Setze die Herzen eines Spieler auf die angegebene Zahl"); - ChatUtil.sendNormalMessage(sender, "/HP Max - Setze die maximalen HP aller Spieler"); - ; - } - } else - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); - return true; - } -} diff --git a/src/main/java/de/fanta/challenges/commands/ResetCommand.java b/src/main/java/de/fanta/challenges/commands/ResetCommand.java index 4f81c8e..572779e 100644 --- a/src/main/java/de/fanta/challenges/commands/ResetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/ResetCommand.java @@ -39,16 +39,13 @@ } plugin.saveConfig(); - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - @Override - public void run() { - for (Player p : Bukkit.getOnlinePlayers()) { - p.sendTitle(ChatColor.GREEN + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.GREEN + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10); - p.kickPlayer(ChatColor.RED + "Welt wird zurückgesetzt!\n" + ChatColor.RED + "§cBitte warte einen Moment..."); - } - ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); - Bukkit.dispatchCommand(console, "restart"); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendTitle(ChatColor.GREEN + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.GREEN + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10); + p.kickPlayer(ChatColor.RED + "Welt wird zurückgesetzt!\n" + ChatColor.RED + "§cBitte warte einen Moment..."); } + ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); + Bukkit.dispatchCommand(console, "restart"); }, 60); } else { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java new file mode 100644 index 0000000..a5dbdab --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java @@ -0,0 +1,62 @@ +package de.fanta.challenges.commands.hp; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPAddCommand extends SubCommand { + + private final Challenges plugin; + + public HPAddCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player == null) { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + return true; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + double finalAddHP = player.getHealth() + input; + + if (finalAddHP <= player.getMaxHealth() && finalAddHP >= 0) { + player.setHealth(finalAddHP); + ChatUtil.sendNormalMessage(player, "Du wurdest von " + sender.getName() + " um " + input + "HP geheilt!"); + ChatUtil.sendNormalMessage(sender, "Du hast " + player.getName() + " " + input + "HP hinzugefügt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Füge einem Spieler die angegebene Zahl an Herzen hinzu"; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java new file mode 100644 index 0000000..ebaf8cb --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java @@ -0,0 +1,50 @@ +package de.fanta.challenges.commands.hp; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPGetCommand extends SubCommand { + + private final Challenges plugin; + + public HPGetCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player != null) { + ChatUtil.sendNormalMessage(sender, player.getName() + " besitzt derzeit " + player.getHealth() + "HP!"); + } else { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + } + return true; + } + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Erhalte die aktuelen HP eines Spielers"; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java new file mode 100644 index 0000000..08fd824 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java @@ -0,0 +1,50 @@ +package de.fanta.challenges.commands.hp; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPMaxCommand extends SubCommand { + + private final Challenges plugin; + + public HPMaxCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + double next = args.getNext(-1.0); + if (next > 0) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.setMaxHealth(next); + pp.setHealth(pp.getMaxHealth()); + } + ChatUtil.sendNormalMessage(sender, "Du hast die maximalen HP auf " + next + " gesetzt!"); + return true; + } + } + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Setze die maximalen HP aller Spieler"; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java new file mode 100644 index 0000000..d6228ed --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java @@ -0,0 +1,61 @@ +package de.fanta.challenges.commands.hp; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPRemoveCommand extends SubCommand { + + private final Challenges plugin; + + public HPRemoveCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player == null) { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + return true; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + double finalRemoveHP = player.getHealth() - input; + if (finalRemoveHP <= player.getMaxHealth() && finalRemoveHP >= 0) { + player.setHealth(finalRemoveHP); + ChatUtil.sendNormalMessage(player, sender.getName() + " hat dir " + input + "HP entfernt!"); + ChatUtil.sendNormalMessage(sender, "Du hast " + player.getName() + " " + input + "HP entfernt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Entferne einem Spieler die angegebene Zahl an Herzen"; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java new file mode 100644 index 0000000..e87e4e5 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java @@ -0,0 +1,60 @@ +package de.fanta.challenges.commands.hp; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPSetCommand extends SubCommand { + + private final Challenges plugin; + + public HPSetCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player == null) { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + return true; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + if (input <= player.getMaxHealth() && input >= 0) { + player.setHealth(input); + ChatUtil.sendNormalMessage(player, sender.getName() + " hat deine HP auf " + input + " gesetzt!"); + ChatUtil.sendNormalMessage(sender, "Du hast die HP von " + player.getName() + " auf " + input + " gesetzt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Setze die Herzen eines Spieler auf die angegebene Zahl"; + } +} \ No newline at end of file