@@ -57,75 +57,77 @@ public void onServerConnectedEvent(ServerConnectedEvent e) {
5757 public void process () {
5858 if (!processSemaphore .tryAcquire ()) return ;
5959
60- // check queue server reachability
61- final RegisteredServer serverQueue ;
62-
6360 try {
64- serverQueue = getServer (Config .serverQueue );
65- } catch (ServerNotReachableException e ) {
66- log .warn (e .getMessage ());
67- return ;
68- }
61+ // check queue server reachability
62+ final RegisteredServer serverQueue ;
63+
64+ try {
65+ serverQueue = getServer (Config .serverQueue );
66+ } catch (ServerNotReachableException e ) {
67+ log .warn (e .getMessage ());
68+ return ;
69+ }
6970
70- // skip if no players queued
71- if (queuedPlayers .isEmpty ())
72- return ;
71+ // skip if no players queued
72+ if (queuedPlayers .isEmpty ())
73+ return ;
74+
75+ // check the main server reachability
76+ final RegisteredServer serverMain ;
77+
78+ try {
79+ serverMain = getServer (Config .serverMain );
80+ } catch (ServerNotReachableException e ) {
81+ if (Instant .now ().getEpochSecond () % 10 == 0 ) {
82+ serverQueue .getPlayersConnected ().forEach (queuedPlayer ->
83+ queuedPlayer .sendMessage (Identity .nil (), Component .text (
84+ Config .messageOffline
85+ )));
86+ }
87+ return ;
88+ }
7389
74- // check the main server reachability
75- final RegisteredServer serverMain ;
90+ // check main server full
91+ boolean full = serverMain . getPlayersConnected (). size () >= Config . maxPlayers ;
7692
77- try {
78- serverMain = getServer (Config .serverMain );
79- } catch (ServerNotReachableException e ) {
93+ // send info every 10 seconds
8094 if (Instant .now ().getEpochSecond () % 10 == 0 ) {
81- serverQueue .getPlayersConnected ().forEach (queuedPlayer ->
82- queuedPlayer .sendMessage (Identity .nil (), Component .text (
83- Config .messageOffline
84- )));
95+ sendInfo (serverQueue , full );
8596 }
86- return ;
87- }
88-
89- // check main server full
90- boolean full = serverMain .getPlayersConnected ().size () >= Config .maxPlayers ;
9197
92- // send info every 10 seconds
93- if ( Instant . now (). getEpochSecond () % 10 == 0 ) {
94- sendInfo ( serverQueue , full );
95- }
96-
97- if ( full )
98- return ;
99-
100- QueuedPlayer currPlayer = queuedPlayers . getFirst ();
101-
102- //wait till delay has passed
103- if ( currPlayer . joinTime () + Config . joinDelay > System . currentTimeMillis ())
104- return ;
105-
106- // connect next player
107- UUID uuid = currPlayer . player ().getUniqueId ();
108-
109- log . info ( "Processing " + uuid . toString ());
110-
111- // lookup player from queue server and ping to be safe the player is connected
112- serverQueue . getPlayersConnected (). stream ()
113- . filter ( p -> p . getUniqueId (). equals ( uuid ))
114- . findAny (). ifPresentOrElse ( p -> {
115- p . sendMessage ( Identity . nil (), Component . text ( Config . messageConnecting ));
116- try {
117- if ( p . createConnectionRequest ( serverMain ). connect (). get (). isSuccessful ()) queuedPlayers . removeFirst ();
118- } catch ( InterruptedException | ExecutionException e ) {
119- log . error ( "Unable to connect " + p . getUsername () + "(" + p . getUniqueId (). toString () + ") to " + Config . serverMain + ": " + e . getMessage () );
98+ if ( full )
99+ return ;
100+
101+ QueuedPlayer currPlayer = queuedPlayers . getFirst ();
102+
103+ //wait till delay has passed
104+ if ( currPlayer . joinTime () + Config . joinDelay > System . currentTimeMillis ())
105+ return ;
106+
107+ // connect next player
108+ UUID uuid = currPlayer . player (). getUniqueId ();
109+
110+ log . info ( "Processing " + uuid . toString ()) ;
111+
112+ // lookup player from queue server and ping to be safe the player is connected
113+ serverQueue . getPlayersConnected ().stream ()
114+ . filter ( p -> p . getUniqueId (). equals ( uuid ))
115+ . findAny (). ifPresentOrElse ( p -> {
116+ p . sendMessage ( Identity . nil (), Component . text ( Config . messageConnecting ));
117+ try {
118+ if ( p . createConnectionRequest ( serverMain ). connect (). get (). isSuccessful ()) queuedPlayers . removeFirst ();
119+ } catch ( InterruptedException | ExecutionException e ) {
120+ log . error ( "Unable to connect " + p . getUsername () + "(" + p . getUniqueId (). toString () + ") to " + Config . serverMain + ": " + e . getMessage ());
121+ }
122+ },
123+ () -> {
124+ log . error ( "Unable to connect " + currPlayer . player (). getUsername () + "(" + currPlayer . player (). getUniqueId (). toString () + ") to " + Config . serverMain + ": player is not connected to " + serverQueue . getServerInfo (). getName ());
125+ queuedPlayers . removeFirst ( );
120126 }
121- },
122- () -> {
123- log .error ("Unable to connect " + currPlayer .player ().getUsername () + "(" + currPlayer .player ().getUniqueId ().toString () + ") to " + Config .serverMain + ": player is not connected to " + serverQueue .getServerInfo ().getName ());
124- queuedPlayers .removeFirst ();
125- }
126- );
127-
128- processSemaphore .release ();
127+ );
128+ } finally {
129+ processSemaphore .release ();
130+ }
129131 }
130132
131133 private void sendInfo (RegisteredServer serverQueue , boolean full ) {
0 commit comments