diff --git a/src/main/java/de/fanta/challenges/Bingo.java b/src/main/java/de/fanta/challenges/Bingo.java index 278894d..983af17 100644 --- a/src/main/java/de/fanta/challenges/Bingo.java +++ b/src/main/java/de/fanta/challenges/Bingo.java @@ -61,15 +61,15 @@ items.add(material); playerMaterials.put(uuid, items); plugin.getScoreManager().updateScore(player, 1); - ChatUtil.sendNormalMessage(player, "Item: " + ChatUtil.PLAYER + itemStack.getI18NDisplayName() + ChatUtil.NORMAL + " wurde Registriert"); + ChatUtil.sendNormalMessage(player, "Item: " + ChatUtil.BLUE + itemStack.getI18NDisplayName() + ChatUtil.GREEN + " wurde Registriert"); player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); if(plugin.getScoreManager().getScore(player) == materials.size()){ ChatUtil.sendNormalMessage(player, "Wuhuu du hast gewonnen :>"); plugin.getTimer().stopTimer(); - GUIUtils.sendTitleToAll("Event", ChatUtil.PLAYER + player.getName() + ChatUtil.NORMAL + " hat alle Items gefunden!", ChatUtil.PLAYER); + GUIUtils.sendTitleToAll("Event", ChatUtil.BLUE + player.getName() + ChatUtil.GREEN + " hat alle Items gefunden!", ChatUtil.BLUE); for (Player pp : Bukkit.getOnlinePlayers()) { - ChatUtil.sendNormalMessage(pp, ChatUtil.PLAYER + player.getName() + ChatUtil.NORMAL + " hat alle Items gefunden!"); + ChatUtil.sendNormalMessage(pp, ChatUtil.BLUE + player.getName() + ChatUtil.GREEN + " hat alle Items gefunden!"); pp.setGameMode(GameMode.SPECTATOR); } } diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 4e40433..c27bcc0 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -1,10 +1,6 @@ package de.fanta.challenges; import de.fanta.challenges.challenges.RandomDrops; -import de.fanta.challenges.guis.eventgui.EventGui; -import de.fanta.challenges.guis.eventgui.EventItemsGui; -import de.fanta.challenges.listeners.BingoListener; -import de.fanta.challenges.scoreboard.ScoreBoardManager; import de.fanta.challenges.commands.CommandRegistration; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; @@ -12,10 +8,13 @@ import de.fanta.challenges.guis.BackpackGui; import de.fanta.challenges.guis.ResetGui; import de.fanta.challenges.guis.TimerGui; +import de.fanta.challenges.guis.eventgui.EventGui; +import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.guis.settingsgui.MainGui; import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; import de.fanta.challenges.guis.settingsgui.ServerSettingsGui; import de.fanta.challenges.guis.settingsgui.SettingsGui; +import de.fanta.challenges.listeners.BingoListener; import de.fanta.challenges.listeners.BlockCreateListener; import de.fanta.challenges.listeners.BlockDestroyListener; import de.fanta.challenges.listeners.DamageListener; @@ -24,6 +23,7 @@ import de.fanta.challenges.listeners.InventoryClickListener; import de.fanta.challenges.listeners.PlayerListener; import de.fanta.challenges.listeners.QuitJoinListener; +import de.fanta.challenges.scoreboard.ScoreBoardManager; import de.fanta.challenges.scoreboard.ScoreManager; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.VanishUtils; @@ -49,6 +49,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; public class Challenges extends JavaPlugin { private static Challenges plugin; @@ -65,8 +68,6 @@ private Bingo bingo; - private RIPBoden ripboden; - private VanishUtils vanish; private BackpackGui backpack; @@ -80,7 +81,7 @@ return plugin; } - public static final String PREFIX = ChatColor.of("#455aad") + "[" + ChatUtil.NORMAL + "Challenge" + ChatColor.of("#455aad") + "]"; + public static final String PREFIX = ChatColor.of("#455aad") + "[" + ChatUtil.GREEN + "Challenge" + ChatColor.of("#455aad") + "]"; public static final String GUIPREFIX = ChatColor.of("#2d8745") + "Challenge"; private Player currentEditor; @@ -138,6 +139,7 @@ World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); checkMLGWorld(); + plugin.getSBManager().initScoreboard(); }, 1L); if (getConfig().getBoolean("World_Reset")) { @@ -260,6 +262,45 @@ public void setCurrentEditor(Player currentEditor) { this.currentEditor = currentEditor; + if (currentEditor != null) { + ChatUtil.sendNormalMessage(currentEditor, "Du bist nun der Editor dieser Lobby!"); + ChatUtil.sendNormalMessage(currentEditor, "Verfügbare Befehle:"); + ChatUtil.sendNormalMessage(currentEditor, "/HP - Verwalte die HP einzelner Spieler"); + ChatUtil.sendNormalMessage(currentEditor, "/Coords - Teile oder speichere Coordinaten"); + ChatUtil.sendNormalMessage(currentEditor, "/Settings - Verwalte die Challenges Einstellungen"); + ChatUtil.sendNormalMessage(currentEditor, "/Timer - Verwalte den Timer"); + ChatUtil.sendNormalMessage(currentEditor, "/Revive - Wiederbelebe Spieler"); + ChatUtil.sendNormalMessage(currentEditor, "/Backpack | /bp - öffne das Backpack"); + ChatUtil.sendNormalMessage(currentEditor, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); + ChatUtil.sendNormalMessage(currentEditor, "/forcemlg - Triggert einen MLG wenn MLG aktiv ist"); + ChatUtil.sendNormalMessage(currentEditor, "/editor - zeigt dir den aktuellen Editor an"); + ChatUtil.sendNormalMessage(currentEditor, "/challenges hilfe Seite und Spieler kicken"); + ChatUtil.sendBrodcastMessage(currentEditor.getName() + " ist nun der Editor dieser Lobby!"); + } + } + + public void updateEditor() { + Random random = new Random(); + Player randomPlayer = null; + Player oldEditor = plugin.getCurrentEditor(); + + List onlinePlayersWithPermission = Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).distinct().collect(Collectors.toList()); + onlinePlayersWithPermission.remove(oldEditor); + if (onlinePlayersWithPermission.size() > 0) { + int rnd = random.nextInt(onlinePlayersWithPermission.size()); + randomPlayer = onlinePlayersWithPermission.get(rnd); + } else { + ArrayList onlinePlayers = Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toCollection(ArrayList::new)); + List vanishPlayers = plugin.getVanish().getVanishPlayerList(); + onlinePlayers.removeAll(vanishPlayers); + onlinePlayers.remove(oldEditor.getName()); + + if (onlinePlayers.size() > 0) { + int rnd = random.nextInt(onlinePlayers.size()); + randomPlayer = Bukkit.getPlayer(onlinePlayers.get(rnd)); + } + } + plugin.setCurrentEditor(randomPlayer); } public boolean hasEditor() { @@ -278,10 +319,6 @@ return bingo; } - public RIPBoden getRipboden() { - return ripboden; - } - public VanishUtils getVanish() { return vanish; } diff --git a/src/main/java/de/fanta/challenges/RIPBoden.java b/src/main/java/de/fanta/challenges/RIPBoden.java index bd330e6..406e175 100644 --- a/src/main/java/de/fanta/challenges/RIPBoden.java +++ b/src/main/java/de/fanta/challenges/RIPBoden.java @@ -1,5 +1,7 @@ package de.fanta.challenges; +import org.bukkit.entity.Player; + public class RIPBoden { private final Challenges plugin = Challenges.getPlugin(); @@ -9,8 +11,6 @@ - - public boolean isRunning() { return running; } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java index e4f64d7..51269e3 100644 --- a/src/main/java/de/fanta/challenges/Timer.java +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -11,6 +11,8 @@ import org.bukkit.GameRule; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.entity.Creature; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; @@ -72,11 +74,11 @@ stopTimer(); } else { time--; - sendTimerActionBar(ChatColor.AQUA); + sendTimerActionBar(ChatUtil.BLUE); } } else { time++; - sendTimerActionBar(ChatColor.GREEN); + sendTimerActionBar(ChatUtil.GREEN); } }, 20L, 20L); if (!plugin.getConfig().getBoolean("firsttimerstart")) { @@ -91,7 +93,16 @@ actionBarTaskId = -1; sendIdleActionBar(); } - + for (Player pp : Bukkit.getOnlinePlayers()) { + for (final Entity entity : pp.getNearbyEntities(100, 100, 100)) { + if ((entity instanceof Creature)) { + final Creature creature = ((Creature) entity); + if ((creature.getTarget() != null) && creature.getTarget().equals(pp)) { + creature.setTarget(null); + } + } + } + } Bukkit.getPluginManager().callEvent(new TimerChangedEvent(false)); } @@ -99,7 +110,7 @@ idleActionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { for (Player p : Bukkit.getOnlinePlayers()) { if (!plugin.getVanish().isVanish(p)) { - p.sendActionBar(ChatColor.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert."); + p.sendActionBar(ChatUtil.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert."); if (p.getGameMode() != GameMode.SPECTATOR) { p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2); } @@ -150,9 +161,11 @@ p.getInventory().clear(); p.getInventory().setItemInMainHand(new ItemStack(Material.WATER_BUCKET)); int rndY = random.nextInt(20); + int rndX = random.nextInt(50); + int rndZ = random.nextInt(50); Location oldloc = p.getLocation(); - Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX(), (50 + rndY), p.getLocation().getBlockZ()); + Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX() + rndX, (50 + rndY), p.getLocation().getBlockZ() + rndZ); p.teleport(newloc); mlgResult(p, oldloc, inv); } diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index 031c0b6..96b9d1d 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -101,5 +101,9 @@ CommandRouter villageRouter = new CommandRouter(plugin.getCommand("village")); villageRouter.addCommandMapping(new VillageCommand(plugin)); + + CommandRouter netherRouter = new CommandRouter(plugin.getCommand("nether")); + netherRouter.addCommandMapping(new NetherToggleCommand(plugin, true), "enable"); + netherRouter.addCommandMapping(new NetherToggleCommand(plugin, false), "disable"); } } diff --git a/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java b/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java new file mode 100644 index 0000000..9e42ead --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java @@ -0,0 +1,73 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +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.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class NetherToggleCommand extends SubCommand { + + private final Challenges plugin; + private final boolean enable; + + public NetherToggleCommand(Challenges plugin, boolean enable) { + this.plugin = plugin; + this.enable = enable; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + Player p = (Player) sender; + if (!p.hasPermission("challenges.event")) { + ChatUtil.sendErrorMessage(p, "Keine Berechtigung"); + return true; + } + if (enable) { + if (!plugin.getConfig().getBoolean("nether.enabled")) { + GUIUtils.setConfig("nether.enabled", true); + for (Player pp : Bukkit.getOnlinePlayers()) { + Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation(); + World world = spawn.getWorld(); + for(int x = spawn.getBlockX() - 2; x <= spawn.getBlockX() + 2; x++) { + for(int z = spawn.getBlockZ() - 2; z <= spawn.getBlockZ() + 2; z++) { + for(int y = spawn.getBlockY(); y <= spawn.getBlockY() + 3; y++) { + world.getBlockAt(x,y,z).setType(Material.AIR); + world.getBlockAt(x,y,spawn.getBlockZ()+3).setType(Material.SLIME_BLOCK); + world.getBlockAt(x,y,spawn.getBlockZ()-3).setType(Material.SLIME_BLOCK); + world.getBlockAt(spawn.getBlockX()+3,y,z).setType(Material.SLIME_BLOCK); + world.getBlockAt(spawn.getBlockX()-3,y,z).setType(Material.SLIME_BLOCK); + } + world.getBlockAt(x,spawn.getBlockY(),z).setType(Material.SLIME_BLOCK); + world.getBlockAt(x,spawn.getBlockY()-1,z).setType(Material.BEDROCK); + world.getBlockAt(x,spawn.getBlockY() + 4,z).setType(Material.SLIME_BLOCK); + } + } + pp.teleport(spawn); + } + GUIUtils.sendTitleToAll("Nether Challenge", "Nether-Modus aktiviert", ChatColor.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Die Nether Challenge läuft bereits!"); + return true; + } + } else { + if (plugin.getConfig().getBoolean("nether.enabled")) { + GUIUtils.setConfig("nether.enabled", false); + GUIUtils.sendTitleToAll("Nether Challenge", "Nether-Modus deaktiviert", ChatColor.RED); + } else { + ChatUtil.sendErrorMessage(p, "Aktuell läuft keine Nether Challenge!"); + return true; + } + } + return true; + } +} + diff --git a/src/main/java/de/fanta/challenges/commands/VillageCommand.java b/src/main/java/de/fanta/challenges/commands/VillageCommand.java index 5b5b2b0..c96c9b9 100644 --- a/src/main/java/de/fanta/challenges/commands/VillageCommand.java +++ b/src/main/java/de/fanta/challenges/commands/VillageCommand.java @@ -35,7 +35,7 @@ Location villagetop = village.getWorld().getHighestBlockAt(x, z, HeightMap.MOTION_BLOCKING).getLocation().add(0, 1, 0); int y = villagetop.getBlockY(); Bukkit.getWorlds().get(0).setSpawnLocation(villagetop); - ChatUtil.sendNormalMessage(p, "Dorf: " + ChatUtil.PLAYER + x + " " + y + " " + z); + ChatUtil.sendNormalMessage(p, "Dorf: " + ChatUtil.BLUE + x + " " + y + " " + z); for (Player pp : Bukkit.getOnlinePlayers()) { pp.teleport(villagetop); ChatUtil.sendNormalMessage(pp, "Dorfspawn gesetzt!"); diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java index 15991d8..2d358ce 100644 --- a/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java @@ -38,7 +38,7 @@ String x = plugin.getConfig().getString("Saved_Locations." + next + ".BlockX"); String y = plugin.getConfig().getString("Saved_Locations." + next + ".BlockY"); String z = plugin.getConfig().getString("Saved_Locations." + next + ".BlockZ"); - ChatUtil.sendNormalMessage(player, ChatUtil.NORMAL + "Position " + ChatUtil.WARNING + next + ChatUtil.NORMAL + ": " + ChatUtil.WARNING + "[" + x + "/" + y + "/" + z + " " + w + "]"); + ChatUtil.sendNormalMessage(player, ChatUtil.GREEN + "Position " + ChatUtil.ORANGE + next + ChatUtil.GREEN + ": " + ChatUtil.ORANGE + "[" + x + "/" + y + "/" + z + " " + w + "]"); } else { ChatUtil.sendWarningMessage(player, "§cDiese Position existiert nicht!"); } diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java index 5d8bbc4..43f90f7 100644 --- a/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java @@ -31,7 +31,7 @@ int x = player.getLocation().getBlockX(); int y = player.getLocation().getBlockY(); int z = player.getLocation().getBlockZ(); - ChatUtil.sendNormalMessage(player, ChatUtil.NORMAL + "Position " + ChatUtil.WARNING + next + ChatUtil.NORMAL + ": " + ChatUtil.WARNING + "[" + x + "/" + y + "/" + z + " " + w + "]"); + ChatUtil.sendNormalMessage(player, ChatUtil.GREEN + "Position " + ChatUtil.ORANGE + next + ChatUtil.GREEN + ": " + ChatUtil.ORANGE + "[" + x + "/" + y + "/" + z + " " + w + "]"); plugin.getConfig().set("Saved_Locations." + next + ".World", w); plugin.getConfig().set("Saved_Locations." + next + ".BlockX", x); plugin.getConfig().set("Saved_Locations." + next + ".BlockY", y); diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java index 59e132b..f2df13f 100644 --- a/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java @@ -28,7 +28,7 @@ int x = player.getLocation().getBlockX(); int y = player.getLocation().getBlockY(); int z = player.getLocation().getBlockZ(); - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + sender.getName() + ChatUtil.NORMAL + " ist bei " + ChatUtil.WARNING + x + "/" + y + "/" + z + " " + ChatUtil.WARNING + w); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + sender.getName() + ChatUtil.GREEN + " ist bei " + ChatUtil.ORANGE + x + "/" + y + "/" + z + " " + ChatUtil.ORANGE + w); return true; } } diff --git a/src/main/java/de/fanta/challenges/commands/event/EventCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java index 6586d70..e21776d 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java @@ -28,6 +28,7 @@ ChatUtil.sendNormalMessage(sender, "/event settings - öffnet die Event-Einstellungen"); ChatUtil.sendNormalMessage(sender, "/event getscore [player] - zeigt den Score der Spieler"); ChatUtil.sendNormalMessage(sender, "--- ************** ---"); + ChatUtil.sendNormalMessage(sender, plugin.getVanish().getVanishPlayerList()); return true; } else { ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java index 644c535..58880d8 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java @@ -8,10 +8,14 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.World; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; public class EventStartCommand extends SubCommand { @@ -33,13 +37,20 @@ Bukkit.getScheduler().runTaskTimer(plugin, bukkitTask -> { int j = i.decrementAndGet(); - GUIUtils.sendTitleToAll("Event", j > 0 ? "" + j : "Go", ChatUtil.PLAYER); + GUIUtils.sendTitleToAll("Event", j > 0 ? "" + j : "Go", ChatUtil.BLUE); if(j <= 0){ bukkitTask.cancel(); World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); plugin.getTimer().startTimer(); + if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")) { + for (Player p : Bukkit.getOnlinePlayers()) { + BossBar bossBar = Bukkit.createBossBar(ChatUtil.GREEN + "Nutze " + ChatUtil.BLUE + "/bingo" + ChatUtil.GREEN + " um die Items zu sehen", BarColor.GREEN, BarStyle.SOLID); + bossBar.setVisible(true); + bossBar.addPlayer(p); + } + } } }, 10, 20); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java index 6e65008..c947da4 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java @@ -6,7 +6,6 @@ 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.entity.Player; @@ -41,7 +40,6 @@ GUIUtils.setConfig("event.enabled", false); GUIUtils.sendTitleToAll("Event", "Event-Modus deaktiviert", ChatColor.RED); plugin.getScoreManager().saveScores(p); - plugin.getScoreManager().resetScores(); } else { ChatUtil.sendErrorMessage(p, "Aktuell läuft kein Event!"); return true; 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 63c19b8..f9f65eb 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,6 @@ import de.fanta.challenges.utils.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; @@ -31,7 +30,7 @@ World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); plugin.getTimer().stopTimer(); - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde angehalten"); + ChatUtil.sendBrodcastMessage(ChatUtil.RED + " Der Timer wurde angehalten"); } else { ChatUtil.sendWarningMessage(sender, "Der Timer ist bereits pausiert!"); } 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 317ba7c..f145059 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java @@ -4,7 +4,6 @@ import de.fanta.challenges.utils.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; @@ -27,9 +26,9 @@ if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { plugin.getTimer().reverseTimer(); if (plugin.getTimer().isReverse()) { - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.AQUA + " Der Timer läuft nun rückwärts!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatUtil.BLUE + " Der Timer läuft nun rückwärts!"); } else { - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer läuft nun vorwärts!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatUtil.GREEN + " Der Timer läuft nun vorwärts!"); } } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); 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 b2d34c1..2ef3a65 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java @@ -31,7 +31,7 @@ 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!"); + ChatUtil.sendBrodcastMessage(ChatUtil.GREEN + " Der Timer wird fortgesetzt!"); } else { ChatUtil.sendWarningMessage(sender, "Der Timer läuft bereits!"); } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java index 65f855a..c3798d0 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -5,6 +5,9 @@ import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java index ce8405a..a735679 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java @@ -37,7 +37,7 @@ } public static List getEventItems() { - return Arrays.stream(event_items.getContents()).filter(itemStack -> itemStack != null && !itemStack.getType().equals(Material.AIR)).map(ItemStack::getType).collect(Collectors.toList()); + return Arrays.stream(event_items.getContents()).filter(itemStack -> !itemStack.getType().equals(Material.AIR)).map(ItemStack::getType).collect(Collectors.toList()); } public static Map getPlayerInvs() { diff --git a/src/main/java/de/fanta/challenges/listeners/BingoListener.java b/src/main/java/de/fanta/challenges/listeners/BingoListener.java index 4500c8b..146d627 100644 --- a/src/main/java/de/fanta/challenges/listeners/BingoListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BingoListener.java @@ -15,7 +15,7 @@ @EventHandler public void onActivation(TimerChangedEvent event){ - if(Objects.equals(plugin.getConfig().getString("event.type"), "bingo")){ + if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")){ Bingo bingo = plugin.getBingo(); if(event.isRunning()) { bingo.setMaterials(EventItemsGui.getEventItems()); diff --git a/src/main/java/de/fanta/challenges/listeners/DamageListener.java b/src/main/java/de/fanta/challenges/listeners/DamageListener.java index e9a229e..8021dbd 100644 --- a/src/main/java/de/fanta/challenges/listeners/DamageListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java @@ -40,20 +40,20 @@ if (e.getCause() == DamageCause.FALL) { if (plugin.getConfig().getBoolean("deathonfall")) { if (plugin.getConfig().getBoolean("dmginchat")) { - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1); } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } } else if (e.getCause() == DamageCause.CUSTOM) { if (!p.isSneaking() && (plugin.getConfig().getBoolean("dmginchat"))) { - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + plugin.getConfig().getDouble("sneakdmg") + ChatUtil.NORMAL + " HP Schaden genommen durch" + ChatUtil.WARNING + " SNEAKING"); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + plugin.getConfig().getDouble("sneakdmg") + ChatUtil.GREEN + " HP Schaden genommen durch" + ChatUtil.ORANGE + " SNEAKING"); } } else if (e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) { } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { for (Player pp : Bukkit.getOnlinePlayers()) { @@ -93,7 +93,7 @@ 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 + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getDamager().getName()); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getDamager().getName()); } } if (!plugin.getTimer().isRunning()) { @@ -183,7 +183,7 @@ if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { for (Player pp : Bukkit.getOnlinePlayers()) { pp.getInventory().clear(); - ChatUtil.sendNormalMessage(pp, ChatUtil.PLAYER + p.getName() + ChatUtil.WARNING + " hat Schaden bekommen! Alle Inventare wurden gelöscht!"); + ChatUtil.sendNormalMessage(pp, ChatUtil.BLUE + p.getName() + ChatUtil.ORANGE + " hat Schaden bekommen! Alle Inventare wurden gelöscht!"); } } diff --git a/src/main/java/de/fanta/challenges/listeners/DeathListener.java b/src/main/java/de/fanta/challenges/listeners/DeathListener.java index 8a19262..17988fd 100644 --- a/src/main/java/de/fanta/challenges/listeners/DeathListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DeathListener.java @@ -12,39 +12,34 @@ import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerRespawnEvent; public class DeathListener implements Listener { private final Challenges plugin = Challenges.getPlugin(); @EventHandler - public void onPlayerDeath(PlayerDeathEvent e) { + public void onPlayerDeath(PlayerDeathEvent e) { if (plugin.getConfig().getBoolean("onelife")) { plugin.getTimer().stopTimer(); for (Player p : Bukkit.getOnlinePlayers()) { p.setGameMode(GameMode.SPECTATOR); } - e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + e.getEntity().getName() + ChatUtil.NORMAL + " ist gestorben!"); - 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"); + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getEntity().getName() + ChatUtil.GREEN + " ist gestorben!"); + ChatUtil.sendBrodcastMessage("Verschwendete Zeit " + plugin.getTimer().formatTime(ChatColor.GOLD)); + ChatUtil.sendBrodcastMessage("Welt Seed: " + Bukkit.getWorlds().get(0).getSeed()); + ChatUtil.sendBrodcastMessage("Um alle wiederzubeleben benutze §c/revive ALL"); } else { - e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + e.getEntity().getName() + ChatUtil.NORMAL + " ist gestorben! " + ChatUtil.WARNING + "(" + e.getEntity().getLocation().getBlockX() + " " + e.getEntity().getLocation().getBlockY() + " " + e.getEntity().getLocation().getBlockZ() + ")"); + if (plugin.getConfig().getBoolean("event.enabled")) { + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getEntity().getName() + ChatUtil.GREEN + " ist gestorben!"); + } else { + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getEntity().getName() + ChatUtil.GREEN + " ist gestorben!" + ChatUtil.ORANGE + " (" + e.getEntity().getLocation().getBlockX() + "/" + e.getEntity().getLocation().getBlockY() + "/" + e.getEntity().getLocation().getBlockZ() + ")"); + } if (!plugin.getConfig().getBoolean("respawn")) { Player editor = plugin.getCurrentEditor(); ChatUtil.sendNormalMessage(editor, "§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); } } } - - @EventHandler - public void onPlayerRespawn(PlayerRespawnEvent e) { - if (!plugin.getConfig().getBoolean("respawn")) { - e.getPlayer().sendTitle(ChatUtil.NORMAL + "Du bist gestorben!", ChatUtil.ERROR + "Du bist nun Zuschauer", 10, 80, 10); - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> e.getPlayer().setGameMode(GameMode.SPECTATOR), 1); - } - } @EventHandler public void DragonDeath(EntityDeathEvent e) { diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 823d126..e66765e 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Bingo; import de.fanta.challenges.Challenges; +import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.utils.ChatUtil; import org.bukkit.Bukkit; @@ -21,6 +22,8 @@ import org.bukkit.event.player.PlayerLevelChangeEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerPortalEvent; +import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.kitteh.vanish.event.VanishStatusChangeEvent; @@ -98,13 +101,21 @@ @EventHandler public void onPayerMove(PlayerMoveEvent e) { Player player = e.getPlayer(); + Location playerloc = player.getLocation(); if (!plugin.getConfig().getBoolean("firsttimerstart")) { if (!plugin.getTimer().isRunning() && player.getGameMode() == GameMode.SURVIVAL) { - Location spawn = Bukkit.getWorlds().get(0).getSpawnLocation(); - Location playerloc = player.getLocation(); - if (playerloc.distance(spawn) > 20) { - player.teleport(spawn); - ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg wenn die Challenge gestartet wurde!"); + if (plugin.getConfig().getBoolean("nether.enabled")) { + Location netherspawn = Bukkit.getWorlds().get(1).getSpawnLocation(); + if (playerloc.distance(netherspawn) > 20) { + player.teleport(netherspawn); + ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Challenge gestartet wurde!"); + } + } else { + Location spawn = Bukkit.getWorlds().get(0).getSpawnLocation(); + if (playerloc.distance(spawn) > 20) { + player.teleport(spawn); + ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Challenge gestartet wurde!"); + } } } } @@ -135,14 +146,52 @@ } @EventHandler + public void onPlayerRespawn(PlayerRespawnEvent e) { + if (!plugin.getConfig().getBoolean("respawn")) { + e.getPlayer().sendTitle(ChatUtil.GREEN + "Du bist gestorben!", ChatUtil.RED + "Du bist nun Zuschauer", 10, 80, 10); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> e.getPlayer().setGameMode(GameMode.SPECTATOR), 1); + } + if (plugin.getConfig().getBoolean("nether.enabled")) { + Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation(); + e.setRespawnLocation(spawn); + } + } + + @EventHandler + public void onPlayerPortal(PlayerPortalEvent e) { + Location endspawn = Bukkit.getWorlds().get(2).getSpawnLocation().add(60, -15, 60); + if (plugin.getTimer().isRunning()) { + if (plugin.getConfig().getBoolean("nether.enabled")) { + for (int x = endspawn.getBlockX() - 2; x <= endspawn.getBlockX() + 2; x++) { + for (int z = endspawn.getBlockZ() - 2; z <= endspawn.getBlockZ() + 2; z++) { + for (int y = endspawn.getBlockY(); y <= endspawn.getBlockY() + 3; y++) { + endspawn.getWorld().getBlockAt(x, y, z).setType(Material.AIR); + } + endspawn.getWorld().getBlockAt(x, endspawn.getBlockY() - 1, z).setType(Material.OBSIDIAN); + } + } + e.getPlayer().teleport(endspawn); + e.setCancelled(true); + } + } else { + e.setCancelled(true); + } + } + + @EventHandler public void vanishToggle(VanishStatusChangeEvent e) { Player p = e.getPlayer(); - if (!e.isVanishing()) { + if (e.isVanishing()) { + plugin.getSBManager().removeScoreboard(p); + if (plugin.getCurrentEditor() == p) { + plugin.updateEditor(); + } + } else { plugin.getSBManager().setScoreboard(p); if (plugin.getCurrentEditor() == null) { plugin.setCurrentEditor(p); } } - + Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers())); } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index f6e0913..2820343 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -6,18 +6,15 @@ import de.fanta.challenges.utils.ChatUtil; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.kitteh.vanish.event.VanishStatusChangeEvent; -import java.util.ArrayList; -import java.util.List; import java.util.Random; -import java.util.stream.Collectors; public class QuitJoinListener implements Listener { @@ -31,13 +28,16 @@ Bukkit.getScheduler().cancelTask(resetTaskId); resetTaskId = -1; } - + if (plugin.getConfig().getBoolean("nether.enabled")) { + Location netherspawn = Bukkit.getWorlds().get(1).getSpawnLocation(); + p.teleport(netherspawn); + } if (plugin.getVanish().isVanish(p)) { - ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß das du in der Lobby bist"); + ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß, dass du in der Lobby bist."); return; } Bukkit.broadcastMessage( - Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); + Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); e.setJoinMessage(null); if (plugin.getConfig().getBoolean("sharedmg")) { int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size()); @@ -51,18 +51,6 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { if (p.hasPermission("Challenges.editor")) { plugin.setCurrentEditor(p); - ChatUtil.sendNormalMessage(p, "Du bist nun der Editor dieser Lobby!"); - ChatUtil.sendNormalMessage(p, "Verfügbare Befehle:"); - ChatUtil.sendNormalMessage(p, "/HP - Verwalte die HP einzelner Spieler"); - ChatUtil.sendNormalMessage(p, "/Coords - Teile oder speichere Coordinaten"); - ChatUtil.sendNormalMessage(p, "/Settings - Verwalte die Challenges Einstellungen"); - ChatUtil.sendNormalMessage(p, "/Timer - Verwalte den Timer"); - ChatUtil.sendNormalMessage(p, "/Revive - Wiederbelebe Spieler"); - ChatUtil.sendNormalMessage(p, "/Backpack | /bp - öffne das Backpack"); - ChatUtil.sendNormalMessage(p, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); - ChatUtil.sendNormalMessage(p, "/forcemlg - Triggert einen MLG wenn MLG aktiv ist"); - ChatUtil.sendNormalMessage(p, "/editor - zeigt dir den aktuellen Editor an"); - ChatUtil.sendNormalMessage(p, "/challenges hilfe Seite und Spieler kicken"); } else { ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby"); @@ -88,42 +76,24 @@ public void onPlayerQuit(PlayerQuitEvent e) { Player player = e.getPlayer(); - if (plugin.getVanish().isVanish(player)) { - if (Bukkit.getOnlinePlayers().size() == 1) { - plugin.getTimer().stopTimer(); - return; - } - } - - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); - e.setQuitMessage(null); - if (Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() == 1) { plugin.getTimer().stopTimer(); } + if (plugin.getVanish().isVanish(player)) { + return; + } + + Bukkit.broadcastMessage( + Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1) + "/" + Bukkit.getServer() + .getMaxPlayers() + "]"); + e.setQuitMessage(null); + this.plugin.getSBManager().removeScoreboard(player); if (plugin.getCurrentEditor() != null && player.getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) { - if (Bukkit.getServer().getOnlinePlayers().size() - 1 > 0) { - Random random = new Random(); - Player randomPlayer; - - List onlinePlayersWithPermission = Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).distinct().collect(Collectors.toList()); - onlinePlayersWithPermission.remove(player); - if (onlinePlayersWithPermission.size() > 0) { - int rnd = random.nextInt(onlinePlayersWithPermission.size()); - randomPlayer = onlinePlayersWithPermission.get(rnd); - } else { - List onlinePlayers = new ArrayList<>(Bukkit.getOnlinePlayers()); - onlinePlayers.remove(player); - onlinePlayers.remove(plugin.getVanish().VanishPlayerList()); - int rnd = random.nextInt(onlinePlayers.size()); - randomPlayer = onlinePlayers.get(rnd); - } - plugin.setCurrentEditor(randomPlayer); - ChatUtil.sendNormalMessage(randomPlayer, "Du bist nun der Editor dieser Lobby!"); - Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GREEN + randomPlayer.getName() + " ist nun der Editor dieser Lobby!"); + if (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1 > 0) { + plugin.updateEditor(); } else { plugin.setCurrentEditor(null); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java index 12e36ff..e96f125 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java @@ -4,13 +4,11 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; -import org.bukkit.entity.Strider; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.RenderType; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.ScoreboardManager; import org.bukkit.scoreboard.Team; public class ScoreBoardManager { @@ -26,7 +24,7 @@ this.plugin = plugin; } - private void initScoreboard() { // only possible after first world has loaded + public void initScoreboard() { // only possible after first world has loaded this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); this.team = scoreboard.registerNewTeam("Player"); @@ -46,8 +44,10 @@ } public void removeScoreboard(Player p) { - team.removeEntry(p.getName()); - p.setScoreboard(scoreboard); + if (team != null) { + team.removeEntry(p.getName()); + p.setScoreboard(scoreboard); + } } public void addScoreboard(Player p) { diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 4611c11..77dceea 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -5,7 +5,6 @@ import de.iani.cubesideutils.HastebinUtil; import org.bukkit.entity.Player; -import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -22,7 +21,7 @@ public ScoreManager(Challenges plugin) { this.plugin = plugin; - this.scores = new HashMap(); + this.scores = new HashMap<>(); } public void updateScore(Player player, int difference) { @@ -43,7 +42,6 @@ public void saveScores(Player player) { StringBuilder sb = new StringBuilder(); - DateFormat df = DateFormat.getDateInstance(); String ownerName = plugin.hasEditor() ? plugin.getCurrentEditor().getName() : "Console"; SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy - HH:mm:ss"); Date currentTime = new Date(); @@ -77,6 +75,7 @@ ChatUtil.sendNormalMessage(player, "Event Log gepastet: " + url); } plugin.getLogger().log(Level.SEVERE, "Event Log gepastet: " + url); + plugin.getScoreManager().resetScores(); } @Override diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index 7e462ca..c6f6829 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -8,10 +8,10 @@ public class ChatUtil { - public static final ChatColor NORMAL = ChatColor.of("#1FFF00"); - public static final ChatColor WARNING = ChatColor.of("#ffe100"); - public static final ChatColor ERROR = ChatColor.of("#a30202"); - public static final ChatColor PLAYER = ChatColor.of("#3D98DC"); + public static final ChatColor GREEN = ChatColor.of("#1FFF00"); + public static final ChatColor ORANGE = ChatColor.of("#ffe100"); + public static final ChatColor RED = ChatColor.of("#a30202"); + public static final ChatColor BLUE = ChatColor.of("#3D98DC"); private ChatUtil() { // prevent instances @@ -22,18 +22,18 @@ } public static void sendNormalMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, NORMAL.toString(), message, messageParts); + sendMessage(sender, GREEN.toString(), message, messageParts); } public static void sendWarningMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, WARNING.toString(), message, messageParts); + sendMessage(sender, ORANGE.toString(), message, messageParts); } public static void sendErrorMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, ERROR.toString(), message, messageParts); + sendMessage(sender, RED.toString(), message, messageParts); } public static void sendBrodcastMessage(Object message) { - Bukkit.broadcastMessage(Challenges.PREFIX + " " + message); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + GREEN + message); } } diff --git a/src/main/java/de/fanta/challenges/utils/VanishUtils.java b/src/main/java/de/fanta/challenges/utils/VanishUtils.java index 2fa465b..e1f447f 100644 --- a/src/main/java/de/fanta/challenges/utils/VanishUtils.java +++ b/src/main/java/de/fanta/challenges/utils/VanishUtils.java @@ -23,7 +23,7 @@ return vanish.getManager().getVanishedPlayers().size(); } - public List VanishPlayerList() { + public List getVanishPlayerList() { return new ArrayList<>(vanish.getManager().getVanishedPlayers()); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8957dbd..5bc93a1 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -28,4 +28,6 @@ World_Reset: false event: enabled: false - type: nix \ No newline at end of file + type: nix +nether: + enabled: false \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3a4bd11..28a6202 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -53,4 +53,7 @@ village: description: Village usage: /village - aliases: [dorf] \ No newline at end of file + aliases: [dorf] + nether: + description: Spiele die Challenge vom Nether ins End durch + usage: Use /nether \ No newline at end of file