diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 369d9e0..e7d4db2 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -18,13 +18,12 @@ import de.fanta.challenges.commands.ResetCommand; 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.TimerForceMLGCommand; 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.fanta.challenges.commands.timer.TimerUtil; import de.fanta.challenges.commands.hp.HPAddCommand; import de.fanta.challenges.commands.hp.HPGetCommand; import de.fanta.challenges.commands.hp.HPMaxCommand; @@ -42,12 +41,15 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; 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 org.bukkit.WorldCreator; import org.bukkit.WorldType; import org.bukkit.configuration.file.FileConfiguration; @@ -69,7 +71,7 @@ private FileConfiguration RndDropsConfig; - private TimerUtil Timer; + private Timer timer; private BackpackCommand backpack; @@ -99,7 +101,7 @@ wolfyUtilities.setCHAT_PREFIX(PREFIX); wolfyUtilities.setCONSOLE_PREFIX(PREFIX); - this.Timer = new TimerUtil(this); + this.timer = new Timer(this); this.rndDrops = new RandomDrops(); this.inventoryHandler = new InventoryHandler(this); @@ -135,7 +137,7 @@ hpRouter.addCommandMapping(new HPSetCommand(this), "set"); CommandRouter timerRouter = new CommandRouter(getCommand("timer")); - timerRouter.addCommandMapping(new TimerForcemlgCommand(this), "forcemlg"); + timerRouter.addCommandMapping(new TimerForceMLGCommand(this), "forcemlg"); timerRouter.addCommandMapping(new TimerPauseCommand(this), "pause"); timerRouter.addCommandMapping(new TimerResetCommand(this), "reset"); timerRouter.addCommandMapping(new TimerReverseCommand(this), "reverse"); @@ -190,7 +192,6 @@ this.rndDrops.loadItems(); } this.backpack.loadInventoryFromConfig(); - this.Timer.LoadTimer(); getLogger().info("Plugin loaded!"); this.sbManager = new SBManager(); } @@ -251,15 +252,15 @@ return this.sbManager; } - @SuppressWarnings("deprecation") - public void CheckMLGWorld() { - if (Bukkit.getWorld("mlg_challenge") == null) { - Bukkit.createWorld((new WorldCreator("mlg_challenge")).type(WorldType.FLAT).generateStructures(false)); - Bukkit.getWorld("mlg_challenge").setAnimalSpawnLimit(0); - Bukkit.getWorld("mlg_challenge").setGameRuleValue("doMobSpawning", "false"); - Bukkit.getWorld("mlg_challenge").setGameRuleValue("doDaylightCycle", "false"); - Bukkit.getWorld("mlg_challenge").setGameRuleValue("doWeatherCycle", "false"); - Bukkit.getWorld("mlg_challenge").setTime(6000L); + public void checkMLGWorld() { + World mlgWorld = Bukkit.getWorld("mlg_challenge"); + if (mlgWorld == null) { + mlgWorld = Bukkit.createWorld((new WorldCreator("mlg_challenge")).type(WorldType.FLAT).generateStructures(false)); + mlgWorld.setAnimalSpawnLimit(0); + mlgWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false); + mlgWorld.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + mlgWorld.setGameRule(GameRule.DO_WEATHER_CYCLE, false); + mlgWorld.setTime(6000L); } } @@ -270,9 +271,7 @@ meta.setDisplayName(name); ArrayList metalore = new ArrayList<>(); if (lore != null) { - for (String lorecomments : lore) { - metalore.add(lorecomments); - } + metalore.addAll(Arrays.asList(lore)); } meta.setLore(metalore); item.setItemMeta(meta); @@ -287,4 +286,16 @@ public void setCurrentEditor(Player currentEditor) { this.currentEditor = currentEditor; } + + public boolean hasEditor() { + return currentEditor != null; + } + + public boolean isEditor(Player player) { + return hasEditor() && currentEditor.getUniqueId().equals(player.getUniqueId()); + } + + public Timer getTimer() { + return timer; + } } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java new file mode 100644 index 0000000..0130753 --- /dev/null +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -0,0 +1,160 @@ +package de.fanta.challenges; + +import de.iani.cubesideutils.StringUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Effect; +import org.bukkit.GameMode; +import org.bukkit.GameRule; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.Random; + +public class Timer { + + private final Challenges plugin; + private final Random random; + private int taskId; + + private int time; // seconds + private int timeSinceMLG; // seconds + private int maxMLGTime; // seconds + private boolean mlgActive; + private boolean reverse; + + public Timer(Challenges plugin) { + this.plugin = plugin; + this.random = new Random(); + this.maxMLGTime = plugin.getConfig().getInt("mlg.maxtime"); + } + + public void startTimer() { + taskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { + int random = this.random.nextInt(750); + timeSinceMLG++; + if (random == 638 || timeSinceMLG >= maxMLGTime) { + triggerMLG(); + } + + if (reverse) { + if (time <= 0) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.setGameMode(GameMode.SPECTATOR); + p.sendTitle(ChatColor.DARK_RED + "ZEIT ABGELAUFEN!", ChatColor.RED + "Challenge fehgeschlagen", 10, 60, 10); + } + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.DARK_RED + " Die Zeit ist abgelaufen und die Challenge somit fehlgeschlagen!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Seed: " + ChatColor.AQUA + Bukkit.getWorlds().get(0).getSeed()); + + stopTimer(); + } else { + time--; + sendTimerActionBar(ChatColor.DARK_GREEN); + } + } else { + time++; + sendTimerActionBar(ChatColor.GREEN); + } + }, 20L, 20L); + } + + public void stopTimer() { + if (taskId > 0) { + Bukkit.getScheduler().cancelTask(taskId); + taskId = -1; + } + + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendActionBar(ChatColor.GOLD + "" + ChatColor.BOLD + "Der Timer ist pausiert."); + if (p.getGameMode() != GameMode.SPECTATOR) { + p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2); + } + } + } + + public boolean triggerMLG() { + if (plugin.getConfig().getBoolean("mlg.enabled") && !mlgActive && Bukkit.getOnlinePlayers().size() >= 1) { + mlgActive = true; + Bukkit.broadcastMessage(Challenges.PREFIX + " §bZeit für einen MLG! §6Viel Glück!"); + timeSinceMLG = 0; + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getGameMode() == GameMode.SURVIVAL && !p.isDead()) { + tpMLG(p); + } + } + return true; + } + return false; + } + + private void sendTimerActionBar(ChatColor color) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendActionBar(formatTime(color)); + } + } + + public void setTimer(int seconds) { + this.time = seconds; + } + + public String formatTime(ChatColor color) { + return color + StringUtil.formatTimespan((long) time * 1000L, ChatColor.GOLD + " Day/s", "", "", "", color + ":", ":", true, true); + } + + public void reverseTimer() { + this.reverse = !this.reverse; + } + + public void tpMLG(Player p) { + p.closeInventory(); + Inventory inv = Bukkit.createInventory(p, InventoryType.PLAYER, p.getName()); + inv.setContents(p.getInventory().getContents()); + p.getInventory().clear(); + p.getInventory().setItemInMainHand(new ItemStack(Material.WATER_BUCKET)); + int rndY = random.nextInt(20); + Location oldloc = p.getLocation(); + + Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX(), (50 + rndY), p.getLocation().getBlockZ()); + p.teleport(newloc); + mlgResult(p, oldloc, inv); + } + + public void mlgResult(final Player p, final Location loc, final Inventory inv) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + mlgActive = false; + if (!p.isDead() && p.getWorld() == Bukkit.getWorld("mlg_challenge")) { + ChatUtil.sendNormalMessage(p, "§aDu hast den §bMLG §aerfolgreich absolviert! §6Weitere folgen..."); + p.setInvulnerable(true); + mlgBack(p, loc, inv); + } else if (Bukkit.getWorlds().get(0).getGameRuleValue(GameRule.KEEP_INVENTORY)) { + p.getInventory().setContents(inv.getContents()); + } + }, 100L); + } + + public void mlgBack(final Player p, Location loc, Inventory inv) { + p.teleport(loc); + p.getInventory().setContents(inv.getContents()); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setInvulnerable(false), 60L); + } + + public boolean isMlgActive() { + return mlgActive; + } + + public void setMlgActive(boolean mlgActive) { + this.mlgActive = mlgActive; + } + + public boolean isRunning() { + return taskId > 0; + } + + public boolean isReverse() { + return reverse; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java index 12e9a50..619d462 100644 --- a/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java +++ b/src/main/java/de/fanta/challenges/commands/ChallengesCommand.java @@ -23,7 +23,7 @@ return true; } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + 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"); diff --git a/src/main/java/de/fanta/challenges/commands/ResetCommand.java b/src/main/java/de/fanta/challenges/commands/ResetCommand.java index 1346c74..32294ad 100644 --- a/src/main/java/de/fanta/challenges/commands/ResetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/ResetCommand.java @@ -22,7 +22,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) {// 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); } 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 a5dbdab..b5e1bfb 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java @@ -19,7 +19,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { String playerName = args.getNext(); Player player = Bukkit.getPlayer(playerName); 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 ebaf8cb..4a6d9e0 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java @@ -19,7 +19,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { String playerName = args.getNext(); Player player = Bukkit.getPlayer(playerName); 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 08fd824..c6ac0c0 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java @@ -19,7 +19,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { double next = args.getNext(-1.0); if (next > 0) { 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 d6228ed..5cf2b4e 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java @@ -19,7 +19,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { String playerName = args.getNext(); Player player = Bukkit.getPlayer(playerName); 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 e87e4e5..17ab867 100644 --- a/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java @@ -19,7 +19,7 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { String playerName = args.getNext(); Player player = Bukkit.getPlayer(playerName); 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 79f7be3..3b220f1 100644 --- a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java +++ b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java @@ -2,7 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.ChatUtil; -import de.fanta.challenges.commands.timer.TimerUtil; +import de.fanta.challenges.Timer; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -24,9 +24,9 @@ @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 (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { if (args.length == 1) { - TimerUtil.setMlg_active(false); + plugin.getTimer().setMlgActive(false); if (args[0].equalsIgnoreCase("all")) { for (Player p : Bukkit.getOnlinePlayers()) { p.setHealth(p.getMaxHealth()); 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 96b32b1..f60d120 100644 --- a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java +++ b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java @@ -22,7 +22,7 @@ if (sender instanceof Player) { Player p = (Player) sender; if (args.length == 0) { - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { WolfyUtilities.getAPI(plugin).getInventoryAPI().openCluster(p, "none"); return true; } else { @@ -30,7 +30,7 @@ } } else if (args.length == 1) { if (args[0].equalsIgnoreCase("get")) { - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { ChatUtil.sendNormalMessage(p, "Einstellungen"); ChatUtil.sendNormalMessage(p, "Crafting = " + plugin.getConfig().getBoolean("craftingtable")); ChatUtil.sendNormalMessage(p, "Villager Handel = " + plugin.getConfig().getBoolean("allowtrading")); @@ -53,7 +53,7 @@ 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) { - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { Boolean Bwert = Boolean.valueOf(Boolean.parseBoolean(args[1])); switch (args[0].toLowerCase()) { case "crafting": diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java new file mode 100644 index 0000000..2c70110 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerForceMLGCommand.java @@ -0,0 +1,35 @@ +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/TimerForcemlgCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerForcemlgCommand.java deleted file mode 100644 index 0a3eeca..0000000 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerForcemlgCommand.java +++ /dev/null @@ -1,40 +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.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.Random; - -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.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - if (!TimerUtil.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 false; - } - -} \ 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 38a1dda..fa8b457 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java @@ -23,18 +23,17 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - if (this.plugin.getConfig().getBoolean("timer.enabled")) { - this.plugin.getConfig().set("timer.enabled", Boolean.FALSE); - Bukkit.broadcastMessage(Challenges.PREFIX + " §6Der Timer wurde angehalten"); - } else { - ChatUtil.sendWarningMessage(sender, "Der Timer ist bereits pausiert!"); - } - return true; + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (plugin.getTimer().isRunning()) { + plugin.getTimer().stopTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + " §6Der Timer wurde angehalten"); } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + ChatUtil.sendWarningMessage(sender, "Der Timer ist bereits pausiert!"); } - return false; + } 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/TimerResetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java index df79644..bfb7d9b 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.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.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,14 +24,13 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - TimerUtil.SetTimer(0); - Bukkit.broadcastMessage(Challenges.PREFIX + " §cDer Timer wurde zurückgesetzt!"); - return true; - } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); - } - return false; + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().setTimer(0); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde zurückgesetzt!"); + } 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/timer/TimerReverseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java index d982499..4ccb41a 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java @@ -23,19 +23,17 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - this.plugin.getConfig().set("timer.reverse", !this.plugin.getConfig().getBoolean("timer.reverse")); - this.plugin.saveConfig(); - if (this.plugin.getConfig().getBoolean("timer.reverse")) { - Bukkit.broadcastMessage(Challenges.PREFIX + " §5Der Timer läuft nun rückwärts!"); - } else { - Bukkit.broadcastMessage(Challenges.PREFIX + " §9Der Timer läuft nun vorwärts!"); - } - return true; + 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!"); } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + Bukkit.broadcastMessage(Challenges.PREFIX + " §9Der Timer läuft nun vorwärts!"); } - return false; + } 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/timer/TimerSetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java index e367592..8c85a5f 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.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.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -25,15 +26,15 @@ } if (args.hasNext()) { int time = args.getNext(-1); - if (time < 0) { - ChatUtil.sendErrorMessage(sender, "Zeit muss eine Zahl größer als 0 sein!"); - return true; - } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - TimerUtil.SetTimer(time); - Bukkit.broadcastMessage(Challenges.PREFIX + " §bDer Timer wurde auf §a" + TimerUtil.hrs + ":" + TimerUtil.smin + ":" + TimerUtil.ssek + " §bgesetzt!"); + if (time >= 0) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().setTimer(time); + Bukkit.broadcastMessage(Challenges.PREFIX + " §bDer Timer wurde auf " + plugin.getTimer().formatTime(ChatColor.GREEN) + " §bgesetzt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + } } else { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + ChatUtil.sendErrorMessage(sender, "Zeit muss eine Zahl größer als 0 sein!"); } return true; } 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 2f5e044..03f85bd 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.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.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,18 +24,19 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if ((plugin.getCurrentEditor() != null && ((Player) sender).getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) || sender.hasPermission("Challenges.editor.override")) { - if (!this.plugin.getConfig().getBoolean("timer.enabled")) { - this.plugin.getConfig().set("timer.enabled", Boolean.TRUE); - Bukkit.broadcastMessage(Challenges.PREFIX + " §aDer Timer wird fortgesetzt!"); + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (!plugin.getTimer().isRunning()) { + plugin.getTimer().startTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer wird fortgesetzt!"); } else { ChatUtil.sendWarningMessage(sender, "Der Timer läuft bereits!"); } - return true; - } else { + } else if (plugin.hasEditor()) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor!"); } - return false; + return true; } } diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerUtil.java b/src/main/java/de/fanta/challenges/commands/timer/TimerUtil.java deleted file mode 100644 index ddab03a..0000000 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerUtil.java +++ /dev/null @@ -1,199 +0,0 @@ -package de.fanta.challenges.commands.timer; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.ChatUtil; - -import java.util.Random; - -import de.iani.cubesideutils.StringUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Effect; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -public class TimerUtil { - - private static Challenges plugin; - - public TimerUtil(Challenges plugin) { - TimerUtil.plugin = plugin; - } - - public static int time; - public static int sek; - public static int min; - public static int hrs; - public static int tsincemlg = 0; - public static String ssek; - public static String smin; - public static Random random = new Random(); - - private static boolean mlg_active = false; - - public void LoadTimer() { - time = plugin.getConfig().getInt("timer.time"); - UpdateStrings(); - StartTimer(); - } - - public void StartTimer() { - Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { - @Override - public void run() { - int rndnmbr = random.nextInt(750); - boolean ttimer = plugin.getConfig().getBoolean("timer.enabled"); - int ttime = plugin.getConfig().getInt("timer.time"); - int thrs = plugin.getConfig().getInt("timer.hrs"); - String tsek = plugin.getConfig().getString("timer.sek"); - String tmin = plugin.getConfig().getString("timer.min"); - - if (ttimer) { - tsincemlg++; - if (rndnmbr == 638 || tsincemlg >= plugin.getConfig().getInt("mlg.maxtime")) { - triggerMLG(); - } - - if (plugin.getConfig().getBoolean("timer.reverse")) { - if (ttime <= 0) { - plugin.getConfig().set("timer.enabled", Boolean.FALSE); - for (Player p : Bukkit.getOnlinePlayers()) { - p.setGameMode(GameMode.SPECTATOR); - p.sendTitle("§4ZEIT ABGELAUFEN!", "§cChallenge fehgeschlagen", 10, 60, 10); - } - Bukkit.broadcastMessage(Challenges.PREFIX + " §4Die Zeit ist abgelaufen und die Challenge somit fehlgeschlagen!"); - - Bukkit.broadcastMessage(Challenges.PREFIX + " §aSeed: §b" + Bukkit.getWorlds().get(0).getSeed()); - } else { - ttime--; - time = ttime; - UpdateStrings(); - } - sendTimerActionBar(ChatColor.DARK_GREEN); - } else { - - ttime++; - time = ttime; - UpdateStrings(); - sendTimerActionBar(ChatColor.GREEN); - } - } else { - - for (Player p : Bukkit.getOnlinePlayers()) { - p.sendActionBar(ChatColor.GOLD + "" + ChatColor.BOLD + "Der Timer ist pausiert."); - if (p.getGameMode() != GameMode.SPECTATOR) - p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2); - } - } - } - }, 20L, 20L); - } - - public static boolean triggerMLG() { - if (plugin.getConfig().getBoolean("mlg.enabled") && !mlg_active && Bukkit.getOnlinePlayers().size() >= 1) { - mlg_active = true; - Bukkit.broadcastMessage(Challenges.PREFIX + " §bZeit für einen MLG! §6Viel Glück!"); - tsincemlg = 0; - for (Player p : Bukkit.getOnlinePlayers()) { - if ((((p.getGameMode() == GameMode.SURVIVAL) ? 1 : 0) & (!p.isDead() ? 1 : 0)) != 0) { - TPMLG(p); - } - } - return true; - } - return false; - } - - private void sendTimerActionBar(ChatColor color) { - for (Player p : Bukkit.getOnlinePlayers()) { - p.sendActionBar(color + StringUtil.formatTimespan(time * 1000, ChatColor.GOLD + " Day/s", "", "", "", color + ":", ":", true, true)); - } - } - - public static void SetTimer(int t) { - time = t; - UpdateStrings(); - SaveTimer(); - } - - public static void UpdateStrings() { - min = time / 60; - hrs = min / 60; - min %= 60; - sek = time % 60; - if (sek >= 10) { - ssek = Integer.toString(sek); - } else { - ssek = '0' + Integer.toString(sek); - } - if (min >= 10) { - smin = Integer.toString(min); - } else { - smin = '0' + Integer.toString(min); - } - SaveTimer(); - } - - public static void SaveTimer() { - plugin.getConfig().set("timer.time", time); - plugin.getConfig().set("timer.sek", ssek); - plugin.getConfig().set("timer.min", smin); - plugin.getConfig().set("timer.hrs", hrs); - plugin.saveConfig(); - } - - - public static void TPMLG(Player p) { - p.closeInventory(); - Inventory inv = Bukkit.createInventory(p, InventoryType.PLAYER, p.getName()); - inv.setContents(p.getInventory().getContents()); - p.getInventory().clear(); - p.getInventory().setItemInMainHand(new ItemStack(Material.WATER_BUCKET)); - int rndY = random.nextInt(20); - Location oldloc = p.getLocation(); - - Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX(), (50 + rndY), p.getLocation().getBlockZ()); - p.teleport(newloc); - MLGResult(p, oldloc, inv); - } - - public static void MLGResult(final Player p, final Location loc, final Inventory inv) { - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - @Override - public void run() { - mlg_active = false; - if (!p.isDead() && p.getWorld() == Bukkit.getWorld("mlg_challenge")) { - ChatUtil.sendNormalMessage(p, "§aDu hast den §bMLG §aerfolgreich absolviert! §6Weitere folgen..."); - p.setInvulnerable(true); - MLGBack(p, loc, inv); - } else if (Bukkit.getWorlds().get(0).getGameRuleValue("keepInventory").equals("true")) { - p.getInventory().setContents(inv.getContents()); - } - } - }, 100L); - } - - public static void MLGBack(final Player p, Location loc, Inventory inv) { - p.teleport(loc); - p.getInventory().setContents(inv.getContents()); - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - @Override - public void run() { - p.setInvulnerable(false); - } - }, 60L); - } - - public static boolean isMlg_active() { - return mlg_active; - } - - public static void setMlg_active(boolean mlg_active) { - TimerUtil.mlg_active = mlg_active; - } -} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/events/QuitJoinListener.java b/src/main/java/de/fanta/challenges/events/QuitJoinListener.java index 4094dfc..5e1979a 100644 --- a/src/main/java/de/fanta/challenges/events/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/events/QuitJoinListener.java @@ -21,11 +21,11 @@ private Challenges plugin = Challenges.getplugin(); @EventHandler - public void PlayerJoinEvent(PlayerJoinEvent e) { + public void onPlayerJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GOLD + p.getName() + ChatColor.GREEN + " hat die Lobby betreten! " + ChatColor.BLUE + "[" + Bukkit.getServer().getOnlinePlayers().size() + "/" + Bukkit.getServer().getMaxPlayers() + "]"); e.setJoinMessage(null); - Challenges.getplugin().CheckMLGWorld(); + Challenges.getplugin().checkMLGWorld(); if (plugin.getConfig().getBoolean("sharedmg")) { int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size()); Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd]; @@ -50,7 +50,7 @@ } @EventHandler - public void PlayerQuitEvent(PlayerQuitEvent e) { + public void onPlayerQuit(PlayerQuitEvent e) { Player player = e.getPlayer(); Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GOLD + player.getName() + ChatColor.RED + " hat die Lobby verlassen! " + ChatColor.BLUE + "[" + (Bukkit.getServer().getOnlinePlayers().size() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); e.setQuitMessage(null);