diff --git a/pom.xml b/pom.xml index b963b83..66808c7 100644 --- a/pom.xml +++ b/pom.xml @@ -1,15 +1,14 @@ - 4.0.0 de.fanta.challenges Challenges - 2.0 + 1.16.1.2-DEV UTF-8 - UTF-8 - UTF-8 - UTF-8 + UTF-8 + de.fanta.challenges.Challenges + fanta, vollkorntomate @@ -31,7 +30,7 @@ de.iani.cubeside CubesideUtilsBukkit - 1.14-split-SNAPSHOT + 1.16-SNAPSHOT provided @@ -48,7 +47,7 @@ maven-jar-plugin 3.2.0 - ${project.artifactId} + ${project.artifactId} ${project.version} diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 7730f73..b8ec3e1 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -4,21 +4,25 @@ package de.fanta.challenges; -import com.google.common.io.MoreFiles; -import com.google.common.io.RecursiveDeleteOption; import de.fanta.challenges.commands.BackpackCommand; import de.fanta.challenges.challenges.RandomDrops; import de.fanta.challenges.challenges.SBManager; -import de.fanta.challenges.commands.ChallengesCommand; +import de.fanta.challenges.commands.RegisterCommands; +import de.fanta.challenges.commands.challenges.ChallengesCommand; +import de.fanta.challenges.commands.ForceMLGCommand; +import de.fanta.challenges.commands.LeaveCommand; +import de.fanta.challenges.commands.challenges.ChallengesHelpCommand; import de.fanta.challenges.commands.coords.CoordsCommand; import de.fanta.challenges.commands.coords.CoordsDeleteCommand; 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.ResetCommand; +import de.fanta.challenges.commands.editor.EditorSetCommand; +import de.fanta.challenges.commands.reset.ResetCommand; +import de.fanta.challenges.commands.reset.ResetConfirmCommand; +import de.fanta.challenges.commands.editor.EditorCommand; import de.fanta.challenges.commands.revive.ReviveCommandTODO; import de.fanta.challenges.commands.settings.SettingsCommandTODO; -import de.fanta.challenges.commands.timer.TimerForceMLGCommand; import de.fanta.challenges.commands.timer.TimerPauseCommand; import de.fanta.challenges.commands.timer.TimerResetCommand; import de.fanta.challenges.commands.timer.TimerReverseCommand; @@ -46,12 +50,13 @@ import de.iani.cubesideutils.bukkit.commands.CommandRouter; import me.wolfyscript.utilities.api.WolfyUtilities; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.GameRule; import org.bukkit.Material; import org.bukkit.World; +import net.md_5.bungee.api.ChatColor; import org.bukkit.WorldCreator; import org.bukkit.WorldType; +import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -73,7 +78,7 @@ private Timer timer; - private BackpackCommand backpack; + public BackpackCommand backpack; private SBManager sbManager; @@ -83,29 +88,26 @@ public static String GUIName = "§6Settings"; - private WolfyUtilities wolfyUtilities; - private InventoryHandler inventoryHandler; - public static Challenges getplugin() { return plugin; } - public static final String PREFIX = ChatColor.BLUE + "[" + ChatColor.GREEN + "Challenge" + ChatColor.BLUE + "]"; + public static final String PREFIX = ChatColor.of("#455aad") + "[" + ChatColor.of("#1FFF00") + "Challenge" + ChatColor.of("#455aad") + "]"; private Player currentEditor; @Override public void onEnable() { plugin = this; - wolfyUtilities = WolfyUtilities.getOrCreateAPI(this); + WolfyUtilities wolfyUtilities = WolfyUtilities.getOrCreateAPI(this); wolfyUtilities.setCHAT_PREFIX(PREFIX); wolfyUtilities.setCONSOLE_PREFIX(PREFIX); this.timer = new Timer(this); this.rndDrops = new RandomDrops(); - this.inventoryHandler = new InventoryHandler(this); - this.inventoryHandler.init(); + InventoryHandler inventoryHandler = new InventoryHandler(this); + inventoryHandler.init(); this.backpack = new BackpackCommand(this); @@ -123,27 +125,14 @@ reloadConfig(); createRndDropsConfig(); createBackpackConfig(); - if (getConfig().getBoolean("World_Reset")) { - getLogger().info("/Reset Command was executed!"); - getLogger().info("Preparing world reset!"); - String worldname = getConfig().getString("World_Name"); - String nethername = worldname + "_nether"; - String endname = worldname + "_the_end"; - File worldfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + worldname); - File netherfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + nethername); - File endfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + endname); - File mlgfolder = new File(Bukkit.getWorldContainer().getPath() + "/mlg_challenge"); - try { - MoreFiles.deleteRecursively(worldfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - MoreFiles.deleteRecursively(netherfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - MoreFiles.deleteRecursively(endfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - MoreFiles.deleteRecursively(mlgfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - getLogger().info("World reset successful!"); - } catch (IOException e) { - getLogger().info("World reset failed!"); - e.printStackTrace(); - } + this.backpack.loadInventoryFromConfig(); + getLogger().info("Plugin loaded!"); + this.sbManager = new SBManager(); + + timer.setTime(getConfig().getInt("timertime")); + + if (getConfig().getBoolean("World_Reset")) { getConfig().set("World_Reset", false); saveConfig(); this.backpack.clearConfig(); @@ -152,12 +141,8 @@ this.rndDrops.loadItems(); } else { this.rndDrops.loadItems(); + this.backpack.loadInventoryFromConfig(); } - this.backpack.loadInventoryFromConfig(); - getLogger().info("Plugin loaded!"); - this.sbManager = new SBManager(); - - timer.setTime(getConfig().getInt("timertime")); } private void registerCommands() { @@ -166,9 +151,12 @@ CommandRouter challengesRouter = new CommandRouter(getCommand("challenges")); challengesRouter.addCommandMapping(new ChallengesCommand(this)); + challengesRouter.addCommandMapping(new ChallengesHelpCommand(this), "help"); + CommandRouter resetRouter = new CommandRouter(getCommand("reset")); resetRouter.addCommandMapping(new ResetCommand(this)); + resetRouter.addCommandMapping(new ResetConfirmCommand(this), "confirm"); CommandRouter backpackRouter = new CommandRouter(getCommand("backpack")); backpackRouter.addCommandMapping(backpack); @@ -188,12 +176,21 @@ hpRouter.addCommandMapping(new HPSetCommand(this), "set"); CommandRouter timerRouter = new CommandRouter(getCommand("timer")); - timerRouter.addCommandMapping(new TimerForceMLGCommand(this), "forcemlg"); timerRouter.addCommandMapping(new TimerPauseCommand(this), "pause"); timerRouter.addCommandMapping(new TimerResetCommand(this), "reset"); timerRouter.addCommandMapping(new TimerReverseCommand(this), "reverse"); timerRouter.addCommandMapping(new TimerSetCommand(this), "set"); timerRouter.addCommandMapping(new TimerStartCommand(this), "start"); + + CommandRouter forcemlgRouter = new CommandRouter(getCommand("forcemlg")); + forcemlgRouter.addCommandMapping(new ForceMLGCommand(this)); + + CommandRouter editorRouter = new CommandRouter(getCommand("editor")); + editorRouter.addCommandMapping(new EditorCommand(this)); + editorRouter.addCommandMapping(new EditorSetCommand(this), "set"); + + CommandRouter leaveRouter = new CommandRouter(getCommand("leave")); + leaveRouter.addCommandMapping(new LeaveCommand()); } @Override @@ -227,7 +224,7 @@ this.BackpackConfig = new YamlConfiguration(); try { this.BackpackConfig.load(this.BackpackConfigFile); - } catch (IOException | org.bukkit.configuration.InvalidConfigurationException e) { + } catch (InvalidConfigurationException | IOException e) { e.printStackTrace(); } } diff --git a/src/main/java/de/fanta/challenges/ChatUtil.java b/src/main/java/de/fanta/challenges/ChatUtil.java index ecc69bc..5aa53db 100644 --- a/src/main/java/de/fanta/challenges/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/ChatUtil.java @@ -15,14 +15,14 @@ } public static void sendNormalMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, ChatColor.of("#123456").toString(), message, messageParts); + sendMessage(sender, ChatColor.of("#1FFF00").toString(), message, messageParts); } public static void sendWarningMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, ChatColor.of("#89A402").toString(), message, messageParts); + sendMessage(sender, ChatColor.of("#ffe100").toString(), message, messageParts); } public static void sendErrorMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, ChatColor.of("#A73F07").toString(), message, messageParts); + sendMessage(sender, ChatColor.of("#a30202").toString(), message, messageParts); } } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java index 8bf81ac..2c2a2f5 100644 --- a/src/main/java/de/fanta/challenges/Timer.java +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -1,8 +1,8 @@ package de.fanta.challenges; import de.iani.cubesideutils.StringUtil; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.GameRule; @@ -62,7 +62,7 @@ stopTimer(); } else { time--; - sendTimerActionBar(ChatColor.DARK_GREEN); + sendTimerActionBar(ChatColor.AQUA); } } else { time++; @@ -83,7 +83,7 @@ private void sendIdleActionBar() { idleActionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { for (Player p : Bukkit.getOnlinePlayers()) { - p.sendActionBar(ChatColor.GOLD + "" + ChatColor.BOLD + "Der Timer ist pausiert."); + p.sendActionBar(ChatColor.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert."); if (p.getGameMode() != GameMode.SPECTATOR) { p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2); } @@ -108,7 +108,7 @@ private void sendTimerActionBar(ChatColor color) { for (Player p : Bukkit.getOnlinePlayers()) { - p.sendActionBar(formatTime(color)); + p.sendActionBar(ChatColor.BOLD + "" + formatTime(color)); } } diff --git a/src/main/java/de/fanta/challenges/challenges/SBManager.java b/src/main/java/de/fanta/challenges/challenges/SBManager.java index e690eb3..05b5308 100644 --- a/src/main/java/de/fanta/challenges/challenges/SBManager.java +++ b/src/main/java/de/fanta/challenges/challenges/SBManager.java @@ -12,8 +12,7 @@ public void createScoreboard(Player p) { ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard sb = manager.getNewScoreboard(); - @SuppressWarnings("deprecation") - Objective TabHP = sb.registerNewObjective("§6Challenges", "health"); + Objective TabHP = sb.registerNewObjective("§6Challenges", "health", "Challenges"); TabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); TabHP.setDisplayName("§cHP"); TabHP.setRenderType(RenderType.HEARTS); diff --git a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java index 8151af7..269e8c2 100644 --- a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java +++ b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java @@ -40,9 +40,7 @@ } public void clearConfig() { - Iterator var2 = this.plugin.getBackpackConfig().getKeys(false).iterator(); - while (var2.hasNext()) { - String main_path = (String) var2.next(); + for (String main_path : this.plugin.getBackpackConfig().getKeys(false)) { this.plugin.getBackpackConfig().set(main_path, null); } } @@ -57,23 +55,20 @@ } } - @SuppressWarnings("rawtypes") public void loadInventoryFromConfig() { - Iterator var2 = this.plugin.getBackpackConfig().getValues(false).entrySet().iterator(); - while (var2.hasNext()) { + for (Map.Entry stringObjectEntry : this.plugin.getBackpackConfig().getValues(false).entrySet()) { int slot; - Map.Entry entry = (Map.Entry) var2.next(); try { - slot = Integer.parseInt((String) entry.getKey()); + slot = Integer.parseInt((String) ((Map.Entry) stringObjectEntry).getKey()); } catch (NumberFormatException var6) { - Bukkit.broadcastMessage("Fehler! Slot: " + (String) entry.getKey()); + Bukkit.broadcastMessage("Fehler! Slot: " + ((Map.Entry) stringObjectEntry).getKey()); continue; } if (slot >= Backpack.getSize()) { Bukkit.broadcastMessage(slot + " befindet sich außerhalb des Inventars!"); continue; } - MemorySection memorySection = (MemorySection) entry.getValue(); + MemorySection memorySection = (MemorySection) ((Map.Entry) stringObjectEntry).getValue(); ItemStack deserialized = ItemStack.deserialize(memorySection.getValues(false)); Backpack.setItem(slot, deserialized); } diff --git a/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java deleted file mode 100644 index 619d462..0000000 --- a/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.fanta.challenges.commands; - -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.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class ChallengesCommand extends SubCommand { - - private final Challenges plugin; - - public ChallengesCommand(Challenges plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!(sender instanceof Player)) { - ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); - return true; - } - - if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - ChatUtil.sendNormalMessage(sender, "Challenges Version " + Challenges.getplugin().getDescription().getVersion() + " von " + Challenges.getplugin().getDescription().getAuthors()); - ChatUtil.sendNormalMessage(sender, "Verfügbare Befehle:"); - ChatUtil.sendNormalMessage(sender, "/HP - Verwalte die HP einzelner Spieler"); - ChatUtil.sendNormalMessage(sender, "/Coords - Teile oder speichere Coordinaten"); - ChatUtil.sendNormalMessage(sender, "/Settings - Verwalte die Challenges Einstellungen"); - ChatUtil.sendNormalMessage(sender, "/Timer - Verwalte den Timer"); - ChatUtil.sendNormalMessage(sender, "/Revive - Wiederbelebe Spieler"); - ChatUtil.sendNormalMessage(sender, "/Backpack | /bp - öffne das Backpack"); - ChatUtil.sendNormalMessage(sender, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); - return true; - } 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/ForceMLGCommand.java b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java new file mode 100644 index 0000000..29ea036 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java @@ -0,0 +1,40 @@ +package de.fanta.challenges.commands; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ForceMLGCommand extends SubCommand { + + private final Challenges plugin; + + public ForceMLGCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (!plugin.getTimer().triggerMLG()) { + ChatUtil.sendWarningMessage(sender, "Ein MLG findet bereits statt! oder MLGs sind nicht Aktiv"); + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + return true; + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/LeaveCommand.java b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java new file mode 100644 index 0000000..df82173 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.commands; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class LeaveCommand extends SubCommand { + + public LeaveCommand() { + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } else { + ((Player) sender).performCommand("tt challenge"); + } + return true; + } + +} + diff --git a/src/main/java/de/fanta/challenges/commands/RegisterCommands.java b/src/main/java/de/fanta/challenges/commands/RegisterCommands.java new file mode 100644 index 0000000..0d002d6 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/RegisterCommands.java @@ -0,0 +1,76 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.commands.challenges.ChallengesCommand; +import de.fanta.challenges.commands.coords.CoordsCommand; +import de.fanta.challenges.commands.coords.CoordsDeleteCommand; +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.editor.EditorCommand; +import de.fanta.challenges.commands.editor.EditorSetCommand; +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.commands.reset.ResetCommand; +import de.fanta.challenges.commands.reset.ResetConfirmCommand; +import de.fanta.challenges.commands.revive.ReviveCommandTODO; +import de.fanta.challenges.commands.settings.SettingsCommandTODO; +import de.fanta.challenges.commands.timer.TimerPauseCommand; +import de.fanta.challenges.commands.timer.TimerResetCommand; +import de.fanta.challenges.commands.timer.TimerReverseCommand; +import de.fanta.challenges.commands.timer.TimerSetCommand; +import de.fanta.challenges.commands.timer.TimerStartCommand; +import de.iani.cubesideutils.bukkit.commands.CommandRouter; + +public class RegisterCommands { + private final Challenges plugin = Challenges.getplugin(); + + public void registerCommands() { + plugin.getCommand("settings").setExecutor(new SettingsCommandTODO(this.plugin)); + plugin.getCommand("revive").setExecutor(new ReviveCommandTODO(this.plugin)); + + CommandRouter challengesRouter = new CommandRouter(plugin.getCommand("challenges")); + challengesRouter.addCommandMapping(new ChallengesCommand(this.plugin)); + + CommandRouter resetRouter = new CommandRouter(plugin.getCommand("reset")); + resetRouter.addCommandMapping(new ResetCommand(this.plugin)); + resetRouter.addCommandMapping(new ResetConfirmCommand(this.plugin), "confirm"); + + CommandRouter backpackRouter = new CommandRouter(plugin.getCommand("backpack")); + backpackRouter.addCommandMapping(plugin.backpack); + + CommandRouter coordsRouter = new CommandRouter(plugin.getCommand("coords")); + coordsRouter.addCommandMapping(new CoordsCommand(this.plugin)); + coordsRouter.addCommandMapping(new CoordsShareCommand(this.plugin), "share"); + coordsRouter.addCommandMapping(new CoordsGetCommand(this.plugin), "get"); + coordsRouter.addCommandMapping(new CoordsSaveCommand(this.plugin), "save"); + coordsRouter.addCommandMapping(new CoordsDeleteCommand(this.plugin), "delete"); + + CommandRouter hpRouter = new CommandRouter(plugin.getCommand("hp")); + hpRouter.addCommandMapping(new HPAddCommand(this.plugin), "add"); + hpRouter.addCommandMapping(new HPGetCommand(this.plugin), "get"); + hpRouter.addCommandMapping(new HPMaxCommand(this.plugin), "max"); + hpRouter.addCommandMapping(new HPRemoveCommand(this.plugin), "remove"); + hpRouter.addCommandMapping(new HPSetCommand(this.plugin), "set"); + + CommandRouter timerRouter = new CommandRouter(plugin.getCommand("timer")); + timerRouter.addCommandMapping(new TimerPauseCommand(this.plugin), "pause"); + timerRouter.addCommandMapping(new TimerResetCommand(this.plugin), "reset"); + timerRouter.addCommandMapping(new TimerReverseCommand(this.plugin), "reverse"); + timerRouter.addCommandMapping(new TimerSetCommand(this.plugin), "set"); + timerRouter.addCommandMapping(new TimerStartCommand(this.plugin), "start"); + + CommandRouter forcemlgRouter = new CommandRouter(plugin.getCommand("forcemlg")); + forcemlgRouter.addCommandMapping(new ForceMLGCommand(this.plugin)); + + CommandRouter editorRouter = new CommandRouter(plugin.getCommand("editor")); + editorRouter.addCommandMapping(new EditorCommand(this.plugin)); + editorRouter.addCommandMapping(new EditorSetCommand(this.plugin), "set"); + + CommandRouter leaveRouter = new CommandRouter(plugin.getCommand("leave")); + leaveRouter.addCommandMapping(new LeaveCommand()); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/ResetCommand.java b/src/main/java/de/fanta/challenges/commands/ResetCommand.java deleted file mode 100644 index bfffda2..0000000 --- a/src/main/java/de/fanta/challenges/commands/ResetCommand.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.fanta.challenges.commands; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.ChatUtil; -import de.iani.cubesideutils.bukkit.commands.SubCommand; -import de.iani.cubesideutils.commands.ArgsParser; -import net.md_5.bungee.api.ChatColor; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -public class ResetCommand extends SubCommand { - - private final Challenges plugin; - - public ResetCommand(Challenges plugin) { - this.plugin = plugin; - } - BackpackCommand backpack; - - @Override - public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - plugin.getTimer().stopTimer(); - plugin.getTimer().setTime(0); - 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); - } - plugin.getConfig().set("World_Name", Bukkit.getWorlds().get(0).getName()); - plugin.getConfig().set("World_Reset", true); - for (String key : plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { - plugin.getConfig().set("Saved_Locations." + key, null); - } - plugin.saveConfig(); - - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - for (Player p : Bukkit.getOnlinePlayers()) { - p.kickPlayer(ChatColor.RED + "Welt wird zurückgesetzt!\n" + ChatColor.RED + "Bitte warte einen Moment..."); - } - Bukkit.shutdown(); - }, 60); - } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); - } - return true; - } -} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java new file mode 100644 index 0000000..df8da0f --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java @@ -0,0 +1,25 @@ +package de.fanta.challenges.commands.challenges; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChallengesCommand extends SubCommand { + + private final Challenges plugin; + + public ChallengesCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + ChatUtil.sendNormalMessage(sender, "Challenges v" + Challenges.getplugin().getDescription().getVersion() + " by " + Challenges.getplugin().getDescription().getAuthors()); + ChatUtil.sendNormalMessage(sender, "Nutze /challenges help für Hilfe"); + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java new file mode 100644 index 0000000..3cbbae9 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java @@ -0,0 +1,47 @@ +package de.fanta.challenges.commands.challenges; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChallengesHelpCommand extends SubCommand { + + private final Challenges plugin; + + public ChallengesHelpCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + ChatUtil.sendNormalMessage(sender, "Verfügbare Befehle:"); + ChatUtil.sendNormalMessage(sender, "/HP - Verwalte die HP einzelner Spieler"); + ChatUtil.sendNormalMessage(sender, "/Coords - Teile oder speichere Coordinaten"); + ChatUtil.sendNormalMessage(sender, "/Settings - Verwalte die Challenges Einstellungen"); + ChatUtil.sendNormalMessage(sender, "/Timer - Verwalte den Timer"); + ChatUtil.sendNormalMessage(sender, "/Revive - Wiederbelebe Spieler"); + ChatUtil.sendNormalMessage(sender, "/Backpack | /bp - öffne das Backpack"); + ChatUtil.sendNormalMessage(sender, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); + ChatUtil.sendNormalMessage(sender, "/forcemlg - Triggert einen MLG wenn MLG Aktiv ist"); + ChatUtil.sendNormalMessage(sender, "/editor - zeigt dir denn Aktuellen Editor an"); + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java b/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java new file mode 100644 index 0000000..b439309 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java @@ -0,0 +1,35 @@ +package de.fanta.challenges.commands.editor; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EditorCommand extends SubCommand { + + private final Challenges plugin; + + public EditorCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (plugin.getCurrentEditor() != null) { + ChatUtil.sendNormalMessage(sender, plugin.getCurrentEditor().getName() + " ist der Aktuelle Editor"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java b/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java new file mode 100644 index 0000000..fce860a --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java @@ -0,0 +1,56 @@ +package de.fanta.challenges.commands.editor; + +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.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EditorSetCommand extends SubCommand { + + private final Challenges plugin; + + public EditorSetCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (plugin.isEditor((Player) sender) || 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; + } else if (!plugin.isEditor(player)){ + plugin.setCurrentEditor(player); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GREEN + player.getName() + " wurde von " + sender.getName() + " zum Editor ernannt"); + ChatUtil.sendNormalMessage(player, "Du bist jetzt Editor und kannst diese Lobby bearbeiten. (/challenges)"); + return true; + } else { + ChatUtil.sendWarningMessage(sender, "Du bist bereits Editor!"); + return true; + } + } + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur " + plugin.getCurrentEditor().getName() + " kann einen neuen Editor bestimmen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java index b5e1bfb..1384a86 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java @@ -5,6 +5,7 @@ import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -33,7 +34,7 @@ double input = args.getNext(0.0); double finalAddHP = player.getHealth() + input; - if (finalAddHP <= player.getMaxHealth() && finalAddHP >= 0) { + if (finalAddHP <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && 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!"); @@ -43,9 +44,13 @@ return true; } } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return false; } @@ -59,4 +64,4 @@ 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 index 4a6d9e0..6bd7b51 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java @@ -31,9 +31,13 @@ } return true; } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return false; } diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java index c6ac0c0..65aef6a 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java @@ -5,6 +5,7 @@ import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -24,16 +25,20 @@ double next = args.getNext(-1.0); if (next > 0) { for (Player pp : Bukkit.getOnlinePlayers()) { - pp.setMaxHealth(next); - pp.setHealth(pp.getMaxHealth()); + pp.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(next); + pp.setHealth(pp.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); } ChatUtil.sendNormalMessage(sender, "Du hast die maximalen HP auf " + next + " gesetzt!"); return true; } } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return false; } diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java index 5cf2b4e..d4db2ad 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java @@ -5,6 +5,7 @@ import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -32,7 +33,7 @@ if (args.hasNext()) { double input = args.getNext(0.0); double finalRemoveHP = player.getHealth() - input; - if (finalRemoveHP <= player.getMaxHealth() && finalRemoveHP >= 0) { + if (finalRemoveHP <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && 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!"); @@ -42,9 +43,13 @@ return true; } } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return false; } diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java index 17ab867..91ef576 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java @@ -5,6 +5,7 @@ import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -31,7 +32,7 @@ if (args.hasNext()) { double input = args.getNext(0.0); - if (input <= player.getMaxHealth() && input >= 0) { + if (input <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && 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!"); @@ -41,9 +42,13 @@ return true; } } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return false; } diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java new file mode 100644 index 0000000..2edb623 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java @@ -0,0 +1,41 @@ +package de.fanta.challenges.commands.reset; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.fanta.challenges.commands.BackpackCommand; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class ResetCommand extends SubCommand { + + private final Challenges plugin; + + public ResetCommand(Challenges plugin) { + this.plugin = plugin; + } + BackpackCommand backpack; + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + ChatUtil.sendWarningMessage(sender, "Wenn du die Welt zurücksetzt wird dein Fortschritt gelöscht und du musst von vorne beginnen!"); + ChatUtil.sendWarningMessage(sender, "Wenn du das Zurücksetzen bestätigen willst, gib bitte ''/reset confirm'' ein!"); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + return true; + } +} + + diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java new file mode 100644 index 0000000..d5e5fd2 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -0,0 +1,53 @@ +package de.fanta.challenges.commands.reset; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import de.fanta.challenges.commands.BackpackCommand; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class ResetConfirmCommand extends SubCommand { + + private final Challenges plugin; + + public ResetConfirmCommand(Challenges plugin) { + this.plugin = plugin; + } + BackpackCommand backpack; + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().stopTimer(); + plugin.getTimer().setTime(0); + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendTitle(ChatColor.of("#0ddead") + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.of("#0ddead") + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10); + p.performCommand("tt challenge"); + } + plugin.getConfig().set("World_Name", Bukkit.getWorlds().get(0).getName()); + plugin.getConfig().set("World_Reset", true); + for (String key : plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { + plugin.getConfig().set("Saved_Locations." + key, null); + } + plugin.saveConfig(); + + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + Bukkit.shutdown(); + }, 60); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java index 3b220f1..cca955a 100644 --- a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java +++ b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java @@ -8,6 +8,7 @@ import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.World; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -20,8 +21,7 @@ public ReviveCommandTODO(Challenges plugin) { this.plugin = plugin; } - - @SuppressWarnings("deprecation") + @Deprecated @Override public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { @@ -29,7 +29,7 @@ plugin.getTimer().setMlgActive(false); if (args[0].equalsIgnoreCase("all")) { for (Player p : Bukkit.getOnlinePlayers()) { - p.setHealth(p.getMaxHealth()); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); p.setGameMode(GameMode.SURVIVAL); } Bukkit.broadcastMessage("§bAlle Spieler wurden wiederbelebt! §aEs kann weiter gehen!"); @@ -37,7 +37,7 @@ OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[0])); if (other.isOnline()) { Player p = (Player) other; - p.setHealth(p.getMaxHealth()); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); p.setGameMode(GameMode.SURVIVAL); Bukkit.broadcastMessage("§b" + p.getName() + " §awurde von §b" + sender.getName() + " §awiederbelebt!"); } else @@ -52,7 +52,7 @@ if (args[0].equalsIgnoreCase("all")) { for (Player p : Bukkit.getOnlinePlayers()) { p.teleport(loc); - p.setHealth(p.getMaxHealth()); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); p.setGameMode(GameMode.SURVIVAL); } Bukkit.broadcastMessage("§bAlle Spieler wurden bei §c" + w.getName() + " " + x + " " + y + " " + z + " §bwiederbelebt! §aEs kann weiter gehen!"); @@ -61,7 +61,7 @@ if (other.isOnline()) { Player p = (Player) other; p.teleport(loc); - p.setHealth(p.getMaxHealth()); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); p.setGameMode(GameMode.SURVIVAL); Bukkit.broadcastMessage("§b" + p.getName() + " §awurde von §b" + sender.getName() + " §abei §c" + w.getName() + " " + x + " " + y + " " + z + " §awiederbelebt!"); } else @@ -69,8 +69,14 @@ } } else sender.sendMessage("§cBenutze: /revive [world] [x] [y] [z]"); - } else - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur " + plugin.getCurrentEditor().getName() + " kann spieler wiederbeleben!"); - return true; + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " Spieler wiederbeleben!!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } } } diff --git a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java index f60d120..9da554e 100644 --- a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java +++ b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java @@ -52,9 +52,9 @@ } else { ChatUtil.sendWarningMessage(p, "/settings Get/Crafting/Trading/DeathFall/DMGOnSneak/SneakDMG/RndDrops/ShareDMG/Respawn/OneLife/ChatDMG/MLG/MLGkillall/MLGTime/DeathXP/SprintDeath/JumpDeath [True/False]"); } - } else if (args.length >= 2) { + } else { if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - Boolean Bwert = Boolean.valueOf(Boolean.parseBoolean(args[1])); + Boolean Bwert = Boolean.parseBoolean(args[1]); switch (args[0].toLowerCase()) { case "crafting": plugin.getConfig().set("craftingtable", Bwert); @@ -77,7 +77,7 @@ ChatUtil.sendNormalMessage(p, "Schaden bei Schleichen = " + plugin.getConfig().getBoolean("damageonsneak")); break; case "sneakdmg": - Double Dwert = Double.valueOf(Double.parseDouble(args[1])); + Double Dwert = Double.parseDouble(args[1]); plugin.getConfig().set("sneakdmg", Dwert); plugin.saveConfig(); ChatUtil.sendNormalMessage(p, "Schadens wert bei Schleichen = " + plugin.getConfig().getString("sneakdmg")); @@ -117,7 +117,7 @@ ChatUtil.sendNormalMessage(p, "MLG Kill All " + plugin.getConfig().getBoolean("mlg.killall")); break; case "mlgtime": - Double time = Double.valueOf(Double.parseDouble(args[1])); + Double time = Double.parseDouble(args[1]); plugin.getConfig().set("mlg.maxtime", time); plugin.saveConfig(); ChatUtil.sendNormalMessage(p, "Maximale zeit bis zum nächsten MLG = " + plugin.getConfig().getString("mlg.maxtime") + " Sekunden"); @@ -138,15 +138,18 @@ ChatUtil.sendNormalMessage(p, "Sterben durch springenn: " + plugin.getConfig().getBoolean("deathonjump")); break; } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } - } else { - ChatUtil.sendWarningMessage(p, "/settings Get/Crafting/Trading/DeathFall/DMGOnSneak/SneakDMG/RndDrops/ShareDMG/Respawn/OneLife/ChatDMG/MLG/MLGkillall/MLGTime/DeathXP/SprintDeath/JumpDeath [True/False]"); } } else { ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); } return true; } -} \ No newline at end of file +} diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java deleted file mode 100644 index 2c70110..0000000 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.fanta.challenges.commands.timer; - -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.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class TimerForceMLGCommand extends SubCommand { - - private final Challenges plugin; - - public TimerForceMLGCommand(Challenges plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!(sender instanceof Player)) { - ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); - return true; - } - if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - if (!plugin.getTimer().triggerMLG()) { - ChatUtil.sendWarningMessage(sender, "Ein MLG findet bereits statt!"); - } - } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); - } - return true; - } - -} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java index fa8b457..b6f9980 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java @@ -4,7 +4,10 @@ import de.fanta.challenges.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; +import org.bukkit.GameRule; +import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -25,13 +28,20 @@ } if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (plugin.getTimer().isRunning()) { + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); plugin.getTimer().stopTimer(); - Bukkit.broadcastMessage(Challenges.PREFIX + " §6Der Timer wurde angehalten"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde angehalten"); } else { ChatUtil.sendWarningMessage(sender, "Der Timer ist bereits pausiert!"); } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return true; } diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java index 3df6007..09ad566 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java @@ -27,8 +27,13 @@ if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { plugin.getTimer().setTime(0); Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde zurückgesetzt!"); - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return true; } diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java index 4ccb41a..959fda1 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java @@ -4,6 +4,7 @@ import de.fanta.challenges.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -26,12 +27,17 @@ if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { plugin.getTimer().reverseTimer(); if (plugin.getTimer().isReverse()) { - Bukkit.broadcastMessage(Challenges.PREFIX + " §5Der Timer läuft nun rückwärts!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.AQUA + " Der Timer läuft nun rückwärts!"); } else { - Bukkit.broadcastMessage(Challenges.PREFIX + " §9Der Timer läuft nun vorwärts!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer läuft nun vorwärts!"); } - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return true; } diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java index 2b9c0ca..4a0f78b 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java @@ -4,8 +4,8 @@ import de.fanta.challenges.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -30,8 +30,13 @@ if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { plugin.getTimer().setTime(time); Bukkit.broadcastMessage(Challenges.PREFIX + " §bDer Timer wurde auf " + plugin.getTimer().formatTime(ChatColor.GREEN) + " §bgesetzt!"); - } else { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } } else { ChatUtil.sendErrorMessage(sender, "Zeit muss eine Zahl größer als 0 sein!"); diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java index 03f85bd..e6e0e10 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java @@ -6,6 +6,8 @@ import de.iani.cubesideutils.commands.ArgsParser; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.GameRule; +import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -26,15 +28,20 @@ } if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (!plugin.getTimer().isRunning()) { + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); plugin.getTimer().startTimer(); Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer wird fortgesetzt!"); } else { ChatUtil.sendWarningMessage(sender, "Der Timer läuft bereits!"); } - } else if (plugin.hasEditor()) { + } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor!"); + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; } return true; } diff --git a/src/main/java/de/fanta/challenges/events/DamageListener.java b/src/main/java/de/fanta/challenges/events/DamageListener.java index 49ae40a..402c87b 100644 --- a/src/main/java/de/fanta/challenges/events/DamageListener.java +++ b/src/main/java/de/fanta/challenges/events/DamageListener.java @@ -4,7 +4,12 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.ChatUtil; import java.text.DecimalFormat; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.ComponentBuilder; import org.bukkit.Bukkit; +import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Sound; @@ -16,6 +21,8 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityTargetLivingEntityEvent; +import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.player.PlayerExpChangeEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.event.player.PlayerToggleSprintEvent; @@ -41,7 +48,7 @@ p.setHealth(0); } }, 1); - } else if (plugin.getConfig().getBoolean("dmginchat")) { + } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { Bukkit.broadcastMessage(Challenges.PREFIX + "§6 " + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getCause()); } } else if (e.getCause() == DamageCause.CUSTOM) { @@ -50,17 +57,17 @@ } } else if (e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) { - } else if (plugin.getConfig().getBoolean("dmginchat")) { + } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { Bukkit.broadcastMessage(Challenges.PREFIX + "§6 " + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getCause()); } - if (plugin.getConfig().getBoolean("sharedmg")) { + if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { for (Player pp : Bukkit.getOnlinePlayers()) { if (pp != p) { double health = pp.getHealth() - e.getFinalDamage(); if (health < 0) { pp.setHealth(0); } else { - if (pp.getGameMode() != GameMode.SPECTATOR) { + if (pp.getGameMode() == GameMode.SURVIVAL) { pp.setHealth(health); pp.getWorld().playSound(pp.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); } @@ -72,20 +79,25 @@ } } } + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } } @EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { - if ((e.getEntity() instanceof Player) && (e.getFinalDamage() > 0)) { + if ((e.getEntity() instanceof Player) && (e.getFinalDamage() > 0) && (plugin.getTimer().isRunning())) { Player p = (Player) e.getEntity(); String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); if ((e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) && plugin.getConfig().getBoolean("dmginchat")) { Bukkit.broadcastMessage(Challenges.PREFIX + "§6 " + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getDamager().getName()); } } + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } } - @SuppressWarnings("deprecation") @EventHandler public void PlayerSneak(PlayerToggleSneakEvent e) { Player p = e.getPlayer(); @@ -94,7 +106,7 @@ if (plugin.getConfig().getBoolean("damageonsneak")) { if (plugin.getConfig().getBoolean("tntdeath")) { for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §ahat gesneakt!", "§b:>"); + pp.sendTitle("§c" + p.getName() + " §ahat gesneakt!", "§b:>", 5, 50, 5); EntityType tnt = EntityType.PRIMED_TNT; Location loc = pp.getLocation(); TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); @@ -111,7 +123,6 @@ } } - @SuppressWarnings("deprecation") @EventHandler public void PlayerSprint(PlayerToggleSprintEvent e) { Player p = e.getPlayer(); @@ -120,7 +131,7 @@ if (plugin.getConfig().getBoolean("deathonsprint")) { if (plugin.getConfig().getBoolean("tntdeath")) { for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §aist gesprintet!", "§bBOOOM :>"); + pp.sendTitle("§c" + p.getName() + " §aist gesprintet!", "§bBOOOM :>", 5, 50, 5); EntityType tnt = EntityType.PRIMED_TNT; Location loc = pp.getLocation(); TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); @@ -137,7 +148,6 @@ } } - @SuppressWarnings("deprecation") @EventHandler public void onPlayerJump(PlayerJumpEvent e) { Player p = e.getPlayer(); @@ -145,7 +155,7 @@ if (plugin.getConfig().getBoolean("deathonjump")) { if (plugin.getConfig().getBoolean("tntdeath")) { for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §aist gesprungen!", "§bBOOOM :>"); + pp.sendTitle("§c" + p.getName() + " §aist gesprungen!", "§bBOOOM :>", 5, 50, 5); EntityType tnt = EntityType.PRIMED_TNT; Location loc = pp.getLocation(); TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); @@ -170,7 +180,7 @@ if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL) { for (Player pp : Bukkit.getOnlinePlayers()) { pp.getInventory().clear(); - ChatUtil.sendNormalMessage(pp, e.getEntity().getName() + " hat Schaden bekommen! Alle Inventare wurden gelöscht!"); + ChatUtil.sendNormalMessage(pp, p.getName() + " hat Schaden bekommen! Alle Inventare wurden gelöscht!"); } } @@ -179,15 +189,14 @@ } } - @SuppressWarnings("deprecation") @EventHandler - public void PlayerGetXP(PlayerExpChangeEvent e) { + public void onPlayerGetXP(PlayerExpChangeEvent e) { Player p = e.getPlayer(); if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (plugin.getConfig().getBoolean("xpdeath")) { if (plugin.getConfig().getBoolean("tntdeath")) { for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §ahat XP eingesammelt!", "§bPling :>"); + pp.sendTitle("§c" + p.getName() + " §ahat XP eingesammelt!", "§bPling :>", 5, 50, 5); EntityType tnt = EntityType.PRIMED_TNT; Location loc = pp.getLocation(); TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); @@ -202,4 +211,18 @@ } } } + + @EventHandler + public void onEntityTarget(EntityTargetLivingEntityEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } + + @EventHandler + public void onFoodChange(FoodLevelChangeEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } } diff --git a/src/main/java/de/fanta/challenges/events/DeathListener.java b/src/main/java/de/fanta/challenges/events/DeathListener.java index 56a53c9..98c33c6 100644 --- a/src/main/java/de/fanta/challenges/events/DeathListener.java +++ b/src/main/java/de/fanta/challenges/events/DeathListener.java @@ -3,8 +3,9 @@ import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.entity.EnderDragon; import org.bukkit.entity.Player; @@ -23,20 +24,18 @@ public void onPlayerDeath(PlayerDeathEvent e) { if (plugin.getConfig().getBoolean("onelife")) { plugin.getTimer().stopTimer(); - plugin.saveConfig(); for (Player p : Bukkit.getOnlinePlayers()) { p.setGameMode(GameMode.SPECTATOR); } - plugin.getServer().broadcastMessage(""); - plugin.getServer().broadcastMessage(""); e.setDeathMessage("§6" + e.getEntity().getName() + " §cist gestorben!"); - plugin.getServer().broadcastMessage("§cDie Challenge wurde nach §6" + plugin.getTimer().formatTime(ChatColor.GOLD) + " §cabgebrochen!"); - plugin.getServer().broadcastMessage("§aSeed: §b" + Bukkit.getWorlds().get(0).getSeed()); - plugin.getServer().broadcastMessage("§6Um alle wiederzubeleben benutze §c/revive ALL"); + Bukkit.broadcastMessage("§cVerschwendete Zeit §6" + plugin.getTimer().formatTime(ChatColor.GOLD)); + Bukkit.broadcastMessage("§aWelt Seed: §b" + Bukkit.getWorlds().get(0).getSeed()); + Bukkit.broadcastMessage("§6Um alle wiederzubeleben benutze §c/revive ALL"); } else { e.setDeathMessage("§6" + e.getEntity().getName() + " §cist gestorben! §6(" + e.getEntity().getWorld().getName() + " " + e.getEntity().getLocation().getBlockX() + " " + e.getEntity().getLocation().getBlockY() + " " + e.getEntity().getLocation().getBlockZ() + "§c)"); if (!plugin.getConfig().getBoolean("respawn")) { - Bukkit.getServer().broadcastMessage("§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); + Player editor = plugin.getCurrentEditor(); + ChatUtil.sendNormalMessage(editor, "§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); } } } @@ -56,20 +55,20 @@ @EventHandler public void DragonDeath(EntityDeathEvent e) { - if (e.getEntity() instanceof EnderDragon) { - plugin.getTimer().stopTimer(); - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §aDie Challenge wurde §2§lerfolgreich §aabgeschlossen."); - Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Der §2§lEnderDragon §7wurde besiegt."); - Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Benötigte Zeit: §2§l" + plugin.getTimer().formatTime(ChatColor.GREEN) + "§7!"); - Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX); - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + if (e.getEntity() instanceof EnderDragon && (plugin.getConfig().getBoolean("dragon")) || (e.getEntity() instanceof Wither && plugin.getConfig().getBoolean("wither"))) { + plugin.getTimer().stopTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §aDie Challenge wurde §2§lerfolgreich §aabgeschlossen."); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Der §2§l" + e.getEntity().toString().toLowerCase() + " §7wurde besiegt."); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Benötigte Zeit: §2§l" + plugin.getTimer().formatTime(ChatColor.GREEN) + "§7!"); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); } } } diff --git a/src/main/java/de/fanta/challenges/events/InteractListener.java b/src/main/java/de/fanta/challenges/events/InteractListener.java index 5df1cb5..2c9fb21 100644 --- a/src/main/java/de/fanta/challenges/events/InteractListener.java +++ b/src/main/java/de/fanta/challenges/events/InteractListener.java @@ -6,7 +6,6 @@ import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; @@ -15,17 +14,17 @@ public class InteractListener implements Listener { - private Challenges chl = Challenges.getplugin(); + private final Challenges plugin = Challenges.getplugin(); @EventHandler public void onBlockClick(PlayerInteractEvent e) { if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { if (e.getClickedBlock().getType() == Material.CRAFTING_TABLE) { - if (!chl.getConfig().getBoolean("craftingtable")) { + if (!plugin.getConfig().getBoolean("craftingtable")) { e.setCancelled(true); } } - if (!chl.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() != GameMode.CREATIVE) { e.setCancelled(true); } } @@ -34,11 +33,11 @@ @EventHandler public void onEntityClick(PlayerInteractEntityEvent e) { if (e.getRightClicked().getType() == EntityType.VILLAGER) { - if (!chl.getConfig().getBoolean("allowtrading")) { + if (!plugin.getConfig().getBoolean("allowtrading")) { e.setCancelled(true); } } - if (!chl.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() != GameMode.CREATIVE) { e.setCancelled(true); } } diff --git a/src/main/java/de/fanta/challenges/events/InventoryClickListener.java b/src/main/java/de/fanta/challenges/events/InventoryClickListener.java index 388dc17..5d529af 100644 --- a/src/main/java/de/fanta/challenges/events/InventoryClickListener.java +++ b/src/main/java/de/fanta/challenges/events/InventoryClickListener.java @@ -2,10 +2,9 @@ import de.fanta.challenges.Challenges; +import de.fanta.challenges.ChatUtil; import de.fanta.challenges.commands.coords.CoordsCommand; import de.fanta.challenges.commands.coords.CoordsDeleteCommand; -import org.bukkit.Bukkit; -import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -13,108 +12,29 @@ public class InventoryClickListener implements Listener { - private Challenges chl = Challenges.getplugin(); - - Challenges chall; - CoordsCommand coco; - CoordsDeleteCommand codeco; - - @SuppressWarnings({ "deprecation", "static-access" }) + private final Challenges plugin = Challenges.getplugin(); + + @EventHandler public void InvClick(InventoryClickEvent e) { - World wld = Bukkit.getWorlds().get(0); - World nth = Bukkit.getWorlds().get(1); - World end = Bukkit.getWorlds().get(2); String invname = e.getView().getTitle(); Player p = (Player) e.getWhoClicked(); int slot = e.getRawSlot(); - if (invname.equals(chall.GUIName)) { - e.setCancelled(true); - if (p.hasPermission("challenges.settings.modify")) { - switch (slot) { - case 9: - chl.getConfig().set("craftingtable", !(chl.getConfig().getBoolean("craftingtable"))); - break; - case 10: - chl.getConfig().set("allowtrading", !(chl.getConfig().getBoolean("allowtrading"))); - break; - case 11: - chl.getConfig().set("deathonfall", !(chl.getConfig().getBoolean("deathonfall"))); - break; - case 12: - chl.getConfig().set("damageonsneak", !(chl.getConfig().getBoolean("damageonsneak"))); - break; - case 13: - chl.getConfig().set("rnddrops", !(chl.getConfig().getBoolean("rnddrops"))); - break; - case 14: - chl.getConfig().set("sharedmg", !(chl.getConfig().getBoolean("sharedmg"))); - break; - case 15: - chl.getConfig().set("respawn", !(chl.getConfig().getBoolean("respawn"))); - break; - case 16: - chl.getConfig().set("onelife", !(chl.getConfig().getBoolean("onelife"))); - break; - case 17: - chl.getConfig().set("dmginchat", !(chl.getConfig().getBoolean("dmginchat"))); - break; - case 27: - chl.getConfig().set("deathonsprint", !(chl.getConfig().getBoolean("deathonsprint"))); - break; - case 28: - chl.getConfig().set("deathonjump", !(chl.getConfig().getBoolean("deathonjump"))); - break; - case 29: - chl.getConfig().set("clinvdmg", !(chl.getConfig().getBoolean("clinvdmg"))); - break; - case 35: - chl.getConfig().set("tntdeath", !(chl.getConfig().getBoolean("tntdeath"))); - break; - case 37: - if (wld.getGameRuleValue("keepInventory").equals("true")) { - wld.setGameRuleValue("keepInventory", "false"); - nth.setGameRuleValue("keepInventory", "false"); - end.setGameRuleValue("keepInventory", "false"); - } else if (wld.getGameRuleValue("keepInventory").equals("false")) { - wld.setGameRuleValue("keepInventory", "true"); - nth.setGameRuleValue("keepInventory", "true"); - end.setGameRuleValue("keepInventory", "true"); - } - break; - case 43: - if (wld.getGameRuleValue("naturalRegeneration").equals("true")) { - wld.setGameRuleValue("naturalRegeneration", "false"); - nth.setGameRuleValue("naturalRegeneration", "false"); - end.setGameRuleValue("naturalRegeneration", "false"); - } else if (wld.getGameRuleValue("naturalRegeneration").equals("false")) { - wld.setGameRuleValue("naturalRegeneration", "true"); - nth.setGameRuleValue("naturalRegeneration", "true"); - end.setGameRuleValue("naturalRegeneration", "true"); - } - break; - default: - break; - } - chl.saveConfig(); - p.performCommand("settings"); - } - } - if (invname.equals(coco.CGUIN)) { + if (invname.equals(CoordsCommand.CGUIN)) { e.setCancelled(true); if (slot >= 0 && slot <= 44) { - if (coco.CoordsGUI.getItem(slot) != null && p.hasPermission("challenges.coords.delete")) { + if (CoordsCommand.CoordsGUI.getItem(slot) != null && p.hasPermission("challenges.coords.delete")) { p.performCommand("coords delete " + e.getCurrentItem().getItemMeta().getDisplayName()); } } } - if (invname.equals(codeco.CDGUIN)) { + if (invname.equals(CoordsDeleteCommand.CDGUIN)) { e.setCancelled(true); if (slot == 0) { - String cname = codeco.CoordsDeleteGUI.getItem(4).getItemMeta().getDisplayName(); - chl.getConfig().set("Saved_Locations." + cname, null); - chl.saveConfig(); - p.sendMessage("§cPosition §6" + cname + " §cwurde gelöscht!"); + String cname = CoordsDeleteCommand.CoordsDeleteGUI.getItem(4).getItemMeta().getDisplayName(); + plugin.getConfig().set("Saved_Locations." + cname, null); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Position " + cname + " wurde gelöscht!"); p.closeInventory(); } if (slot == 8) { diff --git a/src/main/java/de/fanta/challenges/events/QuitJoinListener.java b/src/main/java/de/fanta/challenges/events/QuitJoinListener.java index 17bdcd8..68b7b86 100644 --- a/src/main/java/de/fanta/challenges/events/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/events/QuitJoinListener.java @@ -18,7 +18,7 @@ public class QuitJoinListener implements Listener { - private Challenges plugin = Challenges.getplugin(); + private final Challenges plugin = Challenges.getplugin(); @EventHandler public void onPlayerJoin(PlayerJoinEvent e) { @@ -45,7 +45,7 @@ } } else { - ChatUtil.sendNormalMessage( p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!"); + ChatUtil.sendNormalMessage(p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!"); } } @@ -64,7 +64,9 @@ Random random = new Random(); Player randomPlayer; - List onlinePlayersWithPermission = new ArrayList<>(Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).collect(Collectors.toSet())); + List onlinePlayersWithPermission = Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).distinct().collect(Collectors.toList()); + //TODO CHECK + //List onlinePlayersWithPermission = new ArrayList<>(Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).collect(Collectors.toSet())); onlinePlayersWithPermission.remove(player); if (onlinePlayersWithPermission.size() > 0) { int rnd = random.nextInt(onlinePlayersWithPermission.size()); diff --git a/src/main/java/de/fanta/challenges/gui/SettingsGui.java b/src/main/java/de/fanta/challenges/gui/SettingsGui.java index 5f3ca9f..8a77eda 100644 --- a/src/main/java/de/fanta/challenges/gui/SettingsGui.java +++ b/src/main/java/de/fanta/challenges/gui/SettingsGui.java @@ -36,6 +36,8 @@ registerButton(new SettingButton("xpdeath", Material.ENCHANTING_TABLE, "Sterben durch XP", ChatColor.RED + "Tötet dich wenn du XP einsammelst")); registerButton(new SettingButton("mlg.enabled", Material.WATER_BUCKET, "MLG", "an aus")); registerButton(new SettingButton("mlg.killall", Material.WATER_BUCKET, "MLG killall", "an aus")); + registerButton(new SettingButton("wither", Material.NETHER_STAR, "Wither Töten", "Ziel: Töte denn Wither")); + registerButton(new SettingButton("dragon", Material.DRAGON_EGG, "Ender Dragon Töten", "Ziel: Töte denn Ender Dragon")); // TODO Gamerules xpdeath } @@ -44,6 +46,8 @@ public void onUpdate(GuiUpdateEvent event) { event.setButton(0, "craftingtable"); event.setButton(1, "allowtrading"); + event.setButton(3, "dragon"); + event.setButton(4, "wither"); event.setButton(18, "deathonfall"); event.setButton(19, "damageonsneak"); event.setButton(8, "rnddrops"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 21ae682..9edc2fd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -14,6 +14,8 @@ clinvdmg: false tabhp: true tntdeath: false +dragon: true +wither: false #Mögliche werte: 9 18 27 36 45 54 backpack_size: 54 mlg: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c0a8c71..9e703ff 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,10 +1,9 @@ name: Challenges -main: de.fanta.challenges.Challenges -version: 2.0 -api-version: 1.15 -load: STARTUP -author: fanta -depend: [CubesideUtils] +main: ${mainClass} +version: ${project.version} +api-version: 1.16 +author: ${project.author} +depend: [CubesideUtils, WolfyUtilities] commands: hp: description: Verwalte die HP eines Spielers @@ -30,4 +29,14 @@ aliases: [bp] reset: description: Setzte die Welt zurueck - usage: Benutze /Reset \ No newline at end of file + usage: Benutze /Reset + forcemlg: + description: Triggert einen MLG + usage: Use /forcemlg + editor: + description: Editor Befehl + usage: Use /editor + leave: + description: Spiel verlassen + usage: Use /leave + aliases: [l] \ No newline at end of file