diff --git a/src/main/java/com/alttd/ctf/game/phases/CombatPhase.java b/src/main/java/com/alttd/ctf/game/phases/CombatPhase.java index ef90272..1e09953 100644 --- a/src/main/java/com/alttd/ctf/game/phases/CombatPhase.java +++ b/src/main/java/com/alttd/ctf/game/phases/CombatPhase.java @@ -32,6 +32,8 @@ public class CombatPhase implements GamePhaseExecutor { @Override public void end(GamePhase ignored) { - executorService.shutdown(); + if (executorService != null) { + executorService.shutdown(); + } } } diff --git a/src/main/java/com/alttd/ctf/game/phases/GatheringPhase.java b/src/main/java/com/alttd/ctf/game/phases/GatheringPhase.java index 8d1e51a..f2123fc 100644 --- a/src/main/java/com/alttd/ctf/game/phases/GatheringPhase.java +++ b/src/main/java/com/alttd/ctf/game/phases/GatheringPhase.java @@ -4,11 +4,11 @@ import com.alttd.ctf.flag.Flag; import com.alttd.ctf.game.GameManager; import com.alttd.ctf.game.GamePhase; import com.alttd.ctf.game.GamePhaseExecutor; -import com.alttd.ctf.game_class.GameClass; import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; import lombok.extern.slf4j.Slf4j; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; @Slf4j public class GatheringPhase implements GamePhaseExecutor { @@ -37,8 +37,12 @@ public class GatheringPhase implements GamePhaseExecutor { return; } gameManager.getTeams().forEach(team -> { - team.getPlayers().forEach(player -> { - player.resetWorldBorder(Bukkit.getPlayer(player.getUuid()), worldBorderApi, nextPhase, flag.getFlagLocation()); + team.getPlayers().forEach(teamPlayer -> { + Player player = Bukkit.getPlayer(teamPlayer.getUuid()); + if (player == null || !player.isOnline()) { + return; + } + teamPlayer.resetWorldBorder(player, worldBorderApi, nextPhase, flag.getFlagLocation()); }); }); } diff --git a/src/main/java/com/alttd/ctf/team/TeamPlayer.java b/src/main/java/com/alttd/ctf/team/TeamPlayer.java index 529e243..af47a6e 100644 --- a/src/main/java/com/alttd/ctf/team/TeamPlayer.java +++ b/src/main/java/com/alttd/ctf/team/TeamPlayer.java @@ -50,7 +50,10 @@ public class TeamPlayer { resetWorldBorder(player, worldBorderApi, gamePhase, worldBorderCenter)); } - public void resetWorldBorder(Player player, WorldBorderApi worldBorderApi, GamePhase gamePhase, Location worldBorderCenter) { + public void resetWorldBorder(@NotNull Player player, WorldBorderApi worldBorderApi, GamePhase gamePhase, Location worldBorderCenter) { + if (!player.isOnline()) { + return; + } WorldBorderSettings worldBorderSettings = GameConfig.WORLD_BORDER.getGAME_PHASE_WORLD_BORDER().get(gamePhase); if (worldBorderSettings == null) { throw new IllegalStateException("All phases need to have world border settings");