1919
2020package org .screamingsandals .bedwars .game ;
2121
22+ import org .bukkit .Bukkit ;
2223import org .bukkit .GameMode ;
2324import org .bukkit .Location ;
2425import org .bukkit .entity .Player ;
2526import org .bukkit .inventory .ItemStack ;
2627import org .bukkit .inventory .PlayerInventory ;
2728import org .bukkit .potion .PotionEffect ;
29+ import org .bukkit .scheduler .BukkitRunnable ;
2830import org .bukkit .scoreboard .Scoreboard ;
2931import org .screamingsandals .bedwars .Main ;
32+ import org .screamingsandals .bedwars .commands .BaseCommand ;
3033import org .screamingsandals .bedwars .utils .BungeeUtils ;
3134import org .screamingsandals .bedwars .lib .nms .entity .PlayerUtils ;
3235
3336import java .util .ArrayList ;
3437import java .util .List ;
3538
39+ import static org .screamingsandals .bedwars .commands .BaseCommand .ADMIN_PERMISSION ;
40+
3641public class GamePlayer {
3742 public final Player player ;
3843 private Game game = null ;
@@ -51,13 +56,50 @@ public GamePlayer(Player player) {
5156 }
5257
5358 public void changeGame (Game game ) {
59+ changeGame (game , false );
60+ }
61+
62+ public void changeGame (Game game , boolean gameEndLeave ) {
5463 if (this .game != null && game == null ) {
5564 this .game .internalLeavePlayer (this );
5665 this .game = null ;
5766 this .isSpectator = false ;
5867 this .clean ();
5968 if (Game .isBungeeEnabled ()) {
60- BungeeUtils .movePlayerToBungeeServer (player , Main .isDisabling ());
69+ if (gameEndLeave
70+ && !Main .isDisabling ()
71+ && Main .getConfigurator ().config .getBoolean ("bungee.rejoin-players-after-game" )
72+ && !Main .getConfigurator ().config .getBoolean ("bungee.serverRestart" )
73+ && !Main .getConfigurator ().config .getBoolean ("bungee.serverStop" )) {
74+ new BukkitRunnable () {
75+ public void run () {
76+ try {
77+ Game game = null ;
78+ if (Main .getConfigurator ().config .getBoolean ("bungee.random-game-selection.enabled" )) {
79+ if (Main .getInstance ().isPreSelectGames ()) {
80+ game = Main .getInstance ().getSelectedGame ();
81+ }
82+ if (game == null ) {
83+ game = (Game ) Main .getInstance ().getRandomWaitingGameForBungeeMode ();
84+ }
85+ } else {
86+ game = (Game ) Main .getInstance ().getFirstWaitingGame ();
87+ }
88+ if (game == null ) {
89+ game = (Game ) Main .getInstance ().getFirstRunningGame ();
90+ }
91+
92+ game .joinToGame (player );
93+ } catch (NullPointerException ignored ) {
94+ if (!BaseCommand .hasPermission (player , ADMIN_PERMISSION , false )) {
95+ BungeeUtils .movePlayerToBungeeServer (player , false );
96+ }
97+ }
98+ }
99+ }.runTaskLater (Main .getInstance (), 1L );
100+ } else {
101+ BungeeUtils .movePlayerToBungeeServer (player , Main .isDisabling ());
102+ }
61103 } else {
62104 this .restoreInv ();
63105 }
0 commit comments