1717import static com .jaimemartz .playerbalancer .utils .MessageUtils .safeNull ;
1818
1919public abstract class ConnectionIntent {
20- protected final PlayerBalancer plugin ;
21- protected final ProxiedPlayer player ;
22- protected final ServerSection section ;
20+ private final PlayerBalancer plugin ;
21+ private final ProxiedPlayer player ;
22+ private final ServerSection section ;
23+ private final List <ServerInfo > exclusions ;
2324
24- public ConnectionIntent (PlayerBalancer plugin , ProxiedPlayer player , ProviderType provider , ServerSection section , List < ServerInfo > servers ) {
25+ public ConnectionIntent (PlayerBalancer plugin , ProxiedPlayer player , ServerSection section ) {
2526 this .plugin = plugin ;
2627 this .player = player ;
2728 this .section = tryRoute (player , section );
29+ this .exclusions = new ArrayList <>();
30+ }
31+
32+ public List <ServerInfo > getExclusions () {
33+ return exclusions ;
34+ }
2835
36+ public boolean execute () {
2937 MessageUtils .send (player , plugin .getSettings ().getMessagesProps ().getConnectingMessage (),
3038 (str ) -> str .replace ("{section}" , section .getName ())
3139 .replace ("{alias}" , safeNull (section .getProps ().getAlias ()))
3240 );
3341
42+ List <ServerInfo > servers = new ArrayList <>(section .getServers ());
43+
3444 //Prevents removing servers from the section
3545 if (servers == section .getServers ()) {
3646 throw new IllegalStateException ("The servers list parameter is the same reference, this cannot happen" );
@@ -43,7 +53,7 @@ public ConnectionIntent(PlayerBalancer plugin, ProxiedPlayer player, ProviderTyp
4353 }
4454
4555 if (section .getImplicitProvider () != ProviderType .NONE ) {
46- ServerInfo target = this .fetchServer (player , section , provider , servers );
56+ ServerInfo target = this .fetchServer (player , section , section . getImplicitProvider () , servers );
4757 if (target != null ) {
4858 this .connect (target , (response , throwable ) -> {
4959 if (response ) { //only if the connect has been executed correctly
@@ -58,18 +68,8 @@ public ConnectionIntent(PlayerBalancer plugin, ProxiedPlayer player, ProviderTyp
5868 MessageUtils .send (player , plugin .getSettings ().getMessagesProps ().getFailureMessage ());
5969 }
6070 }
61- }
6271
63- public ConnectionIntent (PlayerBalancer plugin , ProxiedPlayer player , ServerSection section ) {
64- this (plugin , player , section .getImplicitProvider (), section );
65- }
66-
67- public ConnectionIntent (PlayerBalancer plugin , ProxiedPlayer player , ProviderType type , ServerSection section ) {
68- this (plugin , player , type , section , new ArrayList <>(section .getServers ()));
69- }
70-
71- public ConnectionIntent (PlayerBalancer plugin , ProxiedPlayer player , ServerSection section , List <ServerInfo > servers ) {
72- this (plugin , player , section .getImplicitProvider (), section , servers );
72+ return false ;
7373 }
7474
7575 private ServerInfo fetchServer (ProxiedPlayer player , ServerSection section , ProviderType provider , List <ServerInfo > servers ) {
@@ -104,16 +104,17 @@ private ServerInfo fetchServer(ProxiedPlayer player, ServerSection section, Prov
104104 private ServerSection tryRoute (ProxiedPlayer player , ServerSection section ) {
105105 if (plugin .getSettings ().getFeaturesProps ().getPermissionRouterProps ().isEnabled ()) {
106106 Map <String , String > routes = plugin .getSettings ().getFeaturesProps ().getPermissionRouterProps ().getRules ().get (section .getName ());
107+ ServerSection current = plugin .getSectionManager ().getByPlayer (player );
107108
108109 if (routes != null ) {
109110 for (Map .Entry <String , String > route : routes .entrySet ()) {
110111 if (player .hasPermission (route .getKey ())) {
111112 ServerSection bind = plugin .getSectionManager ().getByName (route .getValue ());
112- ServerSection current = plugin .getSectionManager ().getByPlayer (player );
113113
114114 if (bind != null ) {
115- if (current == bind )
115+ if (current == bind ) {
116116 break ;
117+ }
117118
118119 return bind ;
119120 }
@@ -123,6 +124,7 @@ private ServerSection tryRoute(ProxiedPlayer player, ServerSection section) {
123124 }
124125 }
125126 }
127+
126128 return section ;
127129 }
128130
@@ -134,7 +136,7 @@ public static void simple(PlayerBalancer plugin, ProxiedPlayer player, ServerSec
134136 public void connect (ServerInfo server , Callback <Boolean > callback ) {
135137 ConnectionIntent .direct (plugin , player , server , callback );
136138 }
137- };
139+ }. execute () ;
138140 }
139141
140142 public static void direct (PlayerBalancer plugin , ProxiedPlayer player , ServerInfo server , Callback <Boolean > callback ) {
@@ -148,4 +150,4 @@ public static void direct(PlayerBalancer plugin, ProxiedPlayer player, ServerInf
148150 callback .done (result , throwable );
149151 });
150152 }
151- }
153+ }
0 commit comments