Skip to content

Commit b29254f

Browse files
committed
Made the section router work on all connection types
1 parent a0c0b60 commit b29254f

File tree

3 files changed

+28
-34
lines changed

3 files changed

+28
-34
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.1</version>
14+
<version>2.1.5.2</version>
1515

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

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

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212
import java.util.ArrayList;
1313
import java.util.List;
14+
import java.util.Map;
1415
import java.util.concurrent.TimeUnit;
1516

1617
import static com.jaimemartz.playerbalancer.utils.MessageUtils.safeNull;
1718

18-
//TODO I don't like this, improve it
1919
public abstract class ConnectionIntent {
2020
protected final PlayerBalancer plugin;
2121
protected final ProxiedPlayer player;
@@ -24,7 +24,7 @@ public abstract class ConnectionIntent {
2424
public ConnectionIntent(PlayerBalancer plugin, ProxiedPlayer player, ProviderType provider, ServerSection section, List<ServerInfo> servers) {
2525
this.plugin = plugin;
2626
this.player = player;
27-
this.section = section;
27+
this.section = tryRoute(player, section);
2828

2929
MessageUtils.send(player, plugin.getSettings().getMessagesProps().getConnectingMessage(),
3030
(str) -> str.replace("{section}", section.getName())
@@ -101,9 +101,33 @@ private ServerInfo fetchServer(ProxiedPlayer player, ServerSection section, Prov
101101
return null;
102102
}
103103

104+
private ServerSection tryRoute(ProxiedPlayer player, ServerSection section) {
105+
if (plugin.getSettings().getFeaturesProps().getPermissionRouterProps().isEnabled()) {
106+
Map<String, String> routes = plugin.getSettings().getFeaturesProps().getPermissionRouterProps().getRules().get(section.getName());
107+
108+
if (routes != null) {
109+
for (Map.Entry<String, String> route : routes.entrySet()) {
110+
if (player.hasPermission(route.getKey())) {
111+
ServerSection bind = plugin.getSectionManager().getByName(route.getValue());
112+
ServerSection current = plugin.getSectionManager().getByPlayer(player);
113+
114+
if (bind != null) {
115+
if (current == bind)
116+
break;
117+
118+
return bind;
119+
}
120+
121+
break;
122+
}
123+
}
124+
}
125+
}
126+
return section;
127+
}
128+
104129
public abstract void connect(ServerInfo server, Callback<Boolean> callback);
105130

106-
//TODO Create this as a type
107131
public static void simple(PlayerBalancer plugin, ProxiedPlayer player, ServerSection section) {
108132
new ConnectionIntent(plugin, player, section) {
109133
@Override
@@ -113,7 +137,6 @@ public void connect(ServerInfo server, Callback<Boolean> callback) {
113137
};
114138
}
115139

116-
//TODO Create this as a type
117140
public static void direct(PlayerBalancer plugin, ProxiedPlayer player, ServerInfo server, Callback<Boolean> callback) {
118141
PlayerLocker.lock(player);
119142
player.connect(server, (result, throwable) -> {

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

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.jaimemartz.playerbalancer.connection.ServerAssignRegistry;
66
import com.jaimemartz.playerbalancer.helper.PlayerLocker;
77
import com.jaimemartz.playerbalancer.section.ServerSection;
8-
import com.jaimemartz.playerbalancer.settings.props.features.PermissionRouterProps;
98
import com.jaimemartz.playerbalancer.utils.MessageUtils;
109
import net.md_5.bungee.api.Callback;
1110
import net.md_5.bungee.api.config.ServerInfo;
@@ -15,17 +14,11 @@
1514
import net.md_5.bungee.event.EventHandler;
1615
import net.md_5.bungee.event.EventPriority;
1716

18-
import java.util.Map;
19-
2017
public class ServerConnectListener implements Listener {
2118
private final PlayerBalancer plugin;
2219

23-
private final PermissionRouterProps permissionRouterProps;
24-
2520
public ServerConnectListener(PlayerBalancer plugin) {
2621
this.plugin = plugin;
27-
28-
this.permissionRouterProps = plugin.getSettings().getFeaturesProps().getPermissionRouterProps();
2922
}
3023

3124
@EventHandler(priority = EventPriority.HIGHEST)
@@ -63,28 +56,6 @@ private ServerSection getSection(ProxiedPlayer player, ServerInfo target) {
6356
ServerSection section = plugin.getSectionManager().getByServer(target);
6457

6558
if (section != null) {
66-
if (permissionRouterProps.isEnabled()) {
67-
Map<String, String> routes = permissionRouterProps.getRules().get(section.getName());
68-
69-
if (routes != null) {
70-
for (Map.Entry<String, String> route : routes.entrySet()) {
71-
if (player.hasPermission(route.getKey())) {
72-
ServerSection bind = plugin.getSectionManager().getByName(route.getValue());
73-
ServerSection current = plugin.getSectionManager().getByPlayer(player);
74-
75-
if (bind != null) {
76-
if (current == bind)
77-
break;
78-
79-
return bind;
80-
}
81-
82-
break;
83-
}
84-
}
85-
}
86-
}
87-
8859
//Checks only for servers (not the section server)
8960
if (!target.equals(section.getServer())) {
9061
if (plugin.getSectionManager().isDummy(section)) {

0 commit comments

Comments
 (0)