diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java index 4147385..cad9bfb 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java @@ -151,12 +151,14 @@ } else { World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.MAX_ENTITY_CRAMMING, Bukkit.getServer().getMaxPlayers()); - for (Player pp : Bukkit.getOnlinePlayers()) { - plugin.getScoreManager().join(new ChallengePlayer(pp.getUniqueId())); - Location spawn = world.getSpawnLocation(); - spawn.setYaw(-90f); - pp.teleport(spawn); - } + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + for (Player pp : Bukkit.getOnlinePlayers()) { + plugin.getScoreManager().join(new ChallengePlayer(pp.getUniqueId())); + Location spawn = world.getSpawnLocation(); + spawn.setYaw(-90f); + pp.teleport(spawn); + } + }, 1L); startUpdateTask(); } } diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/SammelFieberChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/SammelFieberChallengeEvent.java index 1b13c88..2173895 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/SammelFieberChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/SammelFieberChallengeEvent.java @@ -32,12 +32,14 @@ import java.util.HashMap; import java.util.Objects; +import java.util.UUID; public class SammelFieberChallengeEvent implements Listener { public static BossBar bossBar; public static HashMap bossBarList = new HashMap<>(); + public static HashMap bossBarPlayerList = new HashMap<>(); public static Location hopperloc; private static Material material; private static boolean running; @@ -72,6 +74,10 @@ return count; } + private boolean isSinglePlayer() { + return SammelFieberSettingsGui.singlePlayer; + } + @EventHandler public void onActivation(TimerChangedEvent event) { if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { @@ -80,11 +86,15 @@ if (stack != null && getHopperLocation() != null) { setMaterial(stack.getType()); if (!Config.getBoolean("event.teams")) { - bossBar = Bukkit.createBossBar(ChatUtil.GREEN + "Es wurden " + ChatUtil.BLUE + count + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben. Das sind " + ChatUtil.BLUE + count * SammelFieberSettingsGui.MONEY + " Cubes", BarColor.GREEN, BarStyle.SOLID); - bossBar.setVisible(true); - for (Player pp : Bukkit.getOnlinePlayers()) { - plugin.getScoreManager().join(new ChallengePlayer(pp.getUniqueId())); - bossBar.addPlayer(pp); + if (isSinglePlayer()) { + updatePlayerBossBar(); + } else { + bossBar = Bukkit.createBossBar(ChatUtil.GREEN + "Es wurden " + ChatUtil.BLUE + count + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben. Das sind " + ChatUtil.BLUE + count * SammelFieberSettingsGui.MONEY + " Cubes", BarColor.GREEN, BarStyle.SOLID); + bossBar.setVisible(true); + for (Player pp : Bukkit.getOnlinePlayers()) { + plugin.getScoreManager().join(new ChallengePlayer(pp.getUniqueId())); + bossBar.addPlayer(pp); + } } } else { for (ChallengeTeam team : TeamUtils.getTeams()) { @@ -138,7 +148,11 @@ count = count + stack.getAmount(); plugin.getScoreManager().updateScore(new ChallengePlayer(player.getUniqueId()), stack.getAmount()); player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); - bossBar.setTitle(ChatUtil.GREEN + "Es wurden " + ChatUtil.BLUE + count + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben. Das sind " + ChatUtil.BLUE + count * SammelFieberSettingsGui.MONEY + " Cubes"); + if (isSinglePlayer()) { + updatePlayerBossBar(); + } else { + bossBar.setTitle(ChatUtil.GREEN + "Es wurden " + ChatUtil.BLUE + count + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben. Das sind " + ChatUtil.BLUE + count * SammelFieberSettingsGui.MONEY + " Cubes"); + } } else { ChallengeTeam team = TeamUtils.getTeam(meta.getDisplayName()); if (team != null) { @@ -160,6 +174,23 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> e.getInventory().clear(), 1); } + private void updatePlayerBossBar() { + for (Player pp : Bukkit.getOnlinePlayers()) { + ChallengePlayer challengePlayer = new ChallengePlayer(pp.getUniqueId()); + plugin.getScoreManager().join(challengePlayer); + if (bossBarPlayerList.containsKey(pp.getUniqueId())) { + BossBar playerBar = bossBarPlayerList.get(pp.getUniqueId()); + playerBar.setTitle(ChatUtil.GREEN + "Du hast " + ChatUtil.BLUE + plugin.getScoreManager().getScore(challengePlayer) + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben." + ChatUtil.RED + " | " + ChatUtil.GREEN + "Platzierung: " + plugin.getScoreManager().getPosition(challengePlayer)); + playerBar.addPlayer(pp); + } else { + BossBar playerBar = Bukkit.createBossBar(ChatUtil.GREEN + "Du hast " + ChatUtil.BLUE + plugin.getScoreManager().getScore(challengePlayer) + " " + new ItemStack(getMaterial()).getI18NDisplayName() + ChatUtil.GREEN + " abgegeben." + ChatUtil.RED + " | " + ChatUtil.GREEN + "Platzierung: " + plugin.getScoreManager().getPosition(challengePlayer), BarColor.GREEN, BarStyle.SOLID); + playerBar.setVisible(true); + playerBar.addPlayer(pp); + bossBarPlayerList.put(pp.getUniqueId(), playerBar); + } + } + } + @EventHandler public void onHopperMoveItem(InventoryMoveItemEvent e) { if (!isRunning()) { @@ -248,8 +279,12 @@ return; } if (!Config.getBoolean("event.teams")) { - plugin.getScoreManager().join(new ChallengePlayer(e.getPlayer().getUniqueId())); - bossBar.addPlayer(e.getPlayer()); + if (isSinglePlayer()) { + updatePlayerBossBar(); + } else { + plugin.getScoreManager().join(new ChallengePlayer(e.getPlayer().getUniqueId())); + bossBar.addPlayer(e.getPlayer()); + } } else { ChallengeTeam team = TeamUtils.getPlayerTeam(e.getPlayer()); if (team != null) { diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java index b630f48..1fb7eba 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java @@ -27,11 +27,13 @@ private static final Challenges plugin = Challenges.getPlugin(); private static final int SET_HOPPER_INDEX = 0; private static final int ADD_MONEY_INDEX = 2; + private static final int SINGLEPLAYER_INDEX = 3; private static final int ITEM_INDEX = 4; private static final int MONEY_INDEX = 5; private static final int BACK_INDEX = 6; private static final int REMOVE_MONEY_INDEX = 8; public static int MONEY = 100; + public static boolean singlePlayer = true; public static ItemStack eventItem = null; @@ -89,6 +91,11 @@ } event.setCancelled(true); } + case SINGLEPLAYER_INDEX -> { + singlePlayer = !singlePlayer; + rebuildInventory(); + event.setCancelled(true); + } case ITEM_INDEX -> { switch (event.getAction()) { case MOVE_TO_OTHER_INVENTORY: @@ -148,6 +155,8 @@ item = CustomHeads.RAINBOW_ARROW_UP.getHead(ChatUtil.GREEN + "Add Money", ChatUtil.GREEN + "Klick = +10", ChatUtil.GREEN + "Shift + Klick = +1"); case MONEY_INDEX -> item = GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY); + case SINGLEPLAYER_INDEX -> + item = singlePlayer ? GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.GREEN + "SiglePlayer", true) : GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.RED + "SiglePlayer", false); case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück"); case REMOVE_MONEY_INDEX -> item = CustomHeads.RAINBOW_ARROW_DOWN.getHead(ChatUtil.RED + "Remove Money", ChatUtil.RED + "Klick = -10", ChatUtil.RED + "Shift + Klick = -1");