Skip to content

Commit 25d7054

Browse files
committed
Fixed issues with the router
1 parent b29254f commit 25d7054

File tree

5 files changed

+29
-30
lines changed

5 files changed

+29
-30
lines changed

Main Plugin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<name>PlayerBalancer Plugin</name>
1313
<artifactId>playerbalancer-plugin</artifactId>
14-
<version>2.1.5.2</version>
14+
<version>2.1.5.3</version>
1515

1616
<build>
1717
<finalName>PlayerBalancer</finalName>

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/connection/ConnectionIntent.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,30 @@
1717
import static com.jaimemartz.playerbalancer.utils.MessageUtils.safeNull;
1818

1919
public 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+
}

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/listeners/ServerConnectListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void connect(ServerInfo server, Callback<Boolean> callback) {
4949
event.setTarget(server);
5050
callback.done(true, null);
5151
}
52-
};
52+
}.execute();
5353
}
5454

5555
private ServerSection getSection(ProxiedPlayer player, ServerInfo target) {

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/listeners/ServerKickListener.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import net.md_5.bungee.event.EventHandler;
1717
import net.md_5.bungee.event.EventPriority;
1818

19-
import java.util.ArrayList;
20-
import java.util.List;
2119
import java.util.concurrent.TimeUnit;
2220

2321
public class ServerKickListener implements Listener {
@@ -67,11 +65,7 @@ public void onKick(ServerKickEvent event) {
6765
if (section == null)
6866
return;
6967

70-
List<ServerInfo> servers = new ArrayList<>();
71-
servers.addAll(section.getServers());
72-
servers.remove(from);
73-
74-
new ConnectionIntent(plugin, player, section, servers) {
68+
ConnectionIntent intent = new ConnectionIntent(plugin, player, section) {
7569
@Override
7670
public void connect(ServerInfo server, Callback<Boolean> callback) {
7771
PlayerLocker.lock(player);
@@ -87,6 +81,9 @@ public void connect(ServerInfo server, Callback<Boolean> callback) {
8781
callback.done(true, null);
8882
}
8983
};
84+
85+
intent.getExclusions().add(from);
86+
intent.execute();
9087
}
9188

9289
private ServerSection getSection(ProxiedPlayer player, ServerInfo from) {

Main Plugin/src/main/resources/default.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ features {
229229

230230
rules {
231231
general-lobbies {
232-
special.permission=other-lobby-section
232+
"special.permission"=other-lobby-section
233233
}
234234
}
235235
}

0 commit comments

Comments
 (0)