diff --git a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java index 8096621..babe91e 100644 --- a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java @@ -6,6 +6,7 @@ import de.fanta.challenges.utils.ChatSkullAPI.ChatSkull; import de.fanta.challenges.utils.ChatUtil; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.GameRule; import org.bukkit.Location; import org.bukkit.Material; @@ -21,6 +22,7 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPortalEvent; @@ -35,7 +37,7 @@ private final Challenges plugin = Challenges.getPlugin(); - private final List deadPlayer = new ArrayList<>(); + private static final List deadPlayer = new ArrayList<>(); private final Map bossBarMap = new HashMap<>(); public static Location spawnLocation; @@ -46,7 +48,7 @@ public void onMove(PlayerMoveEvent e) { Player p = e.getPlayer(); World world = p.getWorld(); - if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning() && !plugin.getVanish().isVanish(p)) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning() && !plugin.getVanish().isVanish(p) && p.getGameMode() != GameMode.SPECTATOR) { if (!deadPlayer.contains(p.getUniqueId().toString())) { if (!e.getTo().equals(e.getFrom())) { int distance = (int) p.getLocation().toVector().subtract(p.getWorld().getSpawnLocation().toVector()).length(); @@ -218,4 +220,8 @@ } } } + + public static List getDeadPlayer() { + return deadPlayer; + } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index 381c0e8..a17fca2 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.ServerType; +import de.fanta.challenges.challenges.DeathrunChallengeEvent; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.utils.ChatUtil; @@ -42,7 +43,10 @@ ChatUtil.sendBrodcastMessage(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.getServerType() != ServerType.ADVENTURE) { - plugin.getSBManager().setScoreboard(p); + if (!DeathrunChallengeEvent.getDeadPlayer().contains(p.getUniqueId().toString())) { + plugin.getSBManager().setScoreboard(p); + plugin.getSBManager().updateEventScoreboard(); + } } if (plugin.getCurrentEditor() == null) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java index e7f88a3..a16b852 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java @@ -109,7 +109,9 @@ event.setRenderType(RenderType.INTEGER); for (String entry : team.getEntries()) { - event.getScore(entry).setScore(0); + if (!event.getScore(entry).isScoreSet()) { + event.getScore(entry).setScore(0); + } } } else {