Skip to content

Commit a71e2ae

Browse files
committed
Implemented more subchannels
1 parent 6cea427 commit a71e2ae

File tree

6 files changed

+134
-32
lines changed

6 files changed

+134
-32
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.2.2</version>
14+
<version>2.1.3</version>
1515

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

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/ping/StatusManager.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class StatusManager implements Listener {
2525
private ScheduledTask task;
2626

2727
private final Map<ServerInfo, ServerStatus> storage = new HashMap<>();
28+
private final Map<ServerInfo, Boolean> overriders = new HashMap<>();
2829

2930
public StatusManager(PlayerBalancer plugin) {
3031
this.props = plugin.getSettings().getServerCheckerProps();
@@ -96,6 +97,9 @@ public ServerStatus getStatus(ServerInfo server) {
9697
}
9798

9899
public boolean isAccessible(ServerInfo server) {
100+
if (overriders.containsKey(server))
101+
return overriders.get(server);
102+
99103
ServerStatus status = getStatus(server);
100104

101105
for (String pattern : props.getMarkerDescs()) {
@@ -121,7 +125,7 @@ public void onPluginMessage(PluginMessageEvent event) {
121125
if (server == null)
122126
break;
123127

124-
//REMOVE OVERRIDE
128+
overriders.remove(server);
125129
break;
126130
}
127131

@@ -131,7 +135,7 @@ public void onPluginMessage(PluginMessageEvent event) {
131135
if (server == null)
132136
break;
133137

134-
//ADD OVERRIDE
138+
overriders.put(server, in.readBoolean());
135139
break;
136140
}
137141
}

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/services/MessagingService.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.google.gson.JsonSerializer;
88
import com.jaimemartz.playerbalancer.PlayerBalancer;
99
import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
10+
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
1011
import com.jaimemartz.playerbalancer.ping.ServerStatus;
1112
import com.jaimemartz.playerbalancer.section.ServerSection;
1213
import net.md_5.bungee.api.config.ServerInfo;
@@ -19,6 +20,7 @@
1920
import java.io.ByteArrayOutputStream;
2021
import java.io.DataOutputStream;
2122
import java.io.IOException;
23+
import java.util.concurrent.TimeUnit;
2224

2325
public class MessagingService implements Listener {
2426
private final PlayerBalancer plugin;
@@ -185,6 +187,38 @@ public void onPluginMessage(PluginMessageEvent event) {
185187

186188
sender.sendData("PlayerBalancer", stream.toByteArray());
187189
}
190+
191+
case "ClearPlayerBypass": {
192+
if (event.getReceiver() instanceof ProxiedPlayer) {
193+
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
194+
PlayerLocker.unlock(player);
195+
}
196+
break;
197+
}
198+
199+
case "SetPlayerBypass": {
200+
if (event.getReceiver() instanceof ProxiedPlayer) {
201+
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
202+
PlayerLocker.lock(player);
203+
}
204+
break;
205+
}
206+
207+
case "BypassConnect": {
208+
if (event.getReceiver() instanceof ProxiedPlayer) {
209+
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
210+
211+
ServerInfo server = plugin.getProxy().getServerInfo(in.readUTF());
212+
if (server == null)
213+
break;
214+
215+
PlayerLocker.lock(player);
216+
plugin.getProxy().getScheduler().schedule(plugin, () -> {
217+
PlayerLocker.unlock(player);
218+
}, 5, TimeUnit.SECONDS);
219+
}
220+
break;
221+
}
188222
}
189223
}
190224
}

Spigot Addon/pom.xml

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

1212
<name>PlayerBalancer Addon</name>
1313
<artifactId>playerbalancer-addon</artifactId>
14-
<version>1.1 for 2.1.2.0+</version>
14+
<version>1.2 for 2.1.2.0+</version>
1515

1616
<build>
1717
<finalName>PlayerBalancerAddon</finalName>

Spigot Addon/src/main/java/com/jaimemartz/playerbalanceraddon/MainCommand.java

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
2626
Player player = plugin.getServer().getPlayer(args[2]);
2727
if (player != null) {
2828
plugin.getManager().connectPlayer(player, input);
29+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
2930
} else {
3031
sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
3132
}
3233
} else {
3334
if (sender instanceof Player) {
3435
plugin.getManager().connectPlayer((Player) sender, input);
36+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
3537
} else {
3638
sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
3739
}
@@ -47,12 +49,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
4749
Player player = plugin.getServer().getPlayer(args[1]);
4850
if (player != null) {
4951
plugin.getManager().fallbackPlayer((Player) sender);
52+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
5053
} else {
5154
sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
5255
}
5356
} else {
5457
if (sender instanceof Player) {
5558
plugin.getManager().fallbackPlayer((Player) sender);
59+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
5660
} else {
5761
sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
5862
}
@@ -61,27 +65,91 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
6165
}
6266

6367
case "bypassconnect": {
64-
sender.sendMessage(ChatColor.RED + "This command variant is not implemented yet");
68+
if (args.length >= 2) {
69+
String input = args[1];
70+
if (args.length >= 3) {
71+
Player player = plugin.getServer().getPlayer(args[2]);
72+
if (player != null) {
73+
plugin.getManager().bypassConnect(player, input);
74+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
75+
} else {
76+
sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
77+
}
78+
} else {
79+
if (sender instanceof Player) {
80+
plugin.getManager().bypassConnect((Player) sender, input);
81+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
82+
} else {
83+
sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
84+
}
85+
}
86+
} else {
87+
sender.sendMessage(ChatColor.RED + "Usage: /section bypassconnect <server> [player]");
88+
}
6589
break;
6690
}
6791

6892
case "setbypass": {
69-
sender.sendMessage(ChatColor.RED + "This command variant is not implemented yet");
93+
if (args.length >= 2) {
94+
Player player = plugin.getServer().getPlayer(args[1]);
95+
if (player != null) {
96+
plugin.getManager().setPlayerBypass(player);
97+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
98+
} else {
99+
sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
100+
}
101+
} else {
102+
if (sender instanceof Player) {
103+
plugin.getManager().setPlayerBypass((Player) sender);
104+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
105+
} else {
106+
sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
107+
}
108+
}
70109
break;
71110
}
72111

73112
case "clearbypass": {
74-
sender.sendMessage(ChatColor.RED + "This command variant is not implemented yet");
113+
if (args.length >= 2) {
114+
Player player = plugin.getServer().getPlayer(args[1]);
115+
if (player != null) {
116+
plugin.getManager().clearPlayerBypass((Player) sender);
117+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
118+
} else {
119+
sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
120+
}
121+
} else {
122+
if (sender instanceof Player) {
123+
plugin.getManager().clearPlayerBypass((Player) sender);
124+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
125+
} else {
126+
sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
127+
}
128+
}
75129
break;
76130
}
77131

78132
case "overridestatus": {
79-
sender.sendMessage(ChatColor.RED + "This command variant is not implemented yet");
133+
if (args.length >= 3) {
134+
if (args[2].equals("false") || args[2].equals("true")) {
135+
plugin.getManager().setStatusOverride(args[1], Boolean.valueOf(args[2]));
136+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
137+
} else {
138+
sender.sendMessage(ChatColor.RED + "The status parameter of this command variant has to be a boolean type, either false or true");
139+
}
140+
} else {
141+
sender.sendMessage(ChatColor.RED + "Usage: /section overridestatus <section> <status: false|true>");
142+
}
80143
break;
81144
}
82145

83146
case "clearoverride": {
84-
sender.sendMessage(ChatColor.RED + "This command variant is not implemented yet");
147+
if (args.length >= 2) {
148+
plugin.getManager().clearStatusOverride(args[1]);
149+
sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
150+
} else {
151+
sender.sendMessage(ChatColor.RED + "Usage: /section clearoverride <server>");
152+
}
85153
break;
86154
}
87155
}
@@ -90,15 +158,11 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
90158
sender.sendMessage(ChatColor.GRAY + "Available commands:");
91159
sender.sendMessage(ChatColor.AQUA + "/spb connect <section> [player]" + ChatColor.GRAY + " - " + ChatColor.RED + "Connects you or the specified player to that section");
92160
sender.sendMessage(ChatColor.AQUA + "/spb fallback [player]" + ChatColor.GRAY + " - " + ChatColor.RED + "Connects you or the specified player to the parent of the current section");
93-
94-
/* TODO For version 2.1.3 of the main plugin
95161
sender.sendMessage(ChatColor.AQUA + "/spb bypassconnect <server> [player]" + ChatColor.GRAY + " - " + ChatColor.RED + "Connects you or the specified player to a specific server without balancing");
96162
sender.sendMessage(ChatColor.AQUA + "/spb setbypass [player]" + ChatColor.GRAY + " - " + ChatColor.RED + "Sets a bypass for you or the specified player");
97163
sender.sendMessage(ChatColor.AQUA + "/spb clearbypass [player]" + ChatColor.GRAY + " - " + ChatColor.RED + "Clears the bypass for you or the specified player");
98-
sender.sendMessage(ChatColor.AQUA + "/spb overridestatus <server> <status>" + ChatColor.GRAY + " - " + ChatColor.RED + "Overrides the accessible status of a specific server, over anything else");
164+
sender.sendMessage(ChatColor.AQUA + "/spb overridestatus <server> <status: false|true>" + ChatColor.GRAY + " - " + ChatColor.RED + "Overrides the accessible status of a specific server, over anything else");
99165
sender.sendMessage(ChatColor.AQUA + "/spb clearoverride <server>" + ChatColor.GRAY + " - " + ChatColor.RED + "Clears the overridden status of a specific server");
100-
*/
101-
102166
sender.sendMessage(ChatColor.STRIKETHROUGH + ChatColor.GRAY.toString() + Strings.repeat("-", 53));
103167
}
104168
}

Spigot Addon/src/main/java/com/jaimemartz/playerbalanceraddon/PluginMessageManager.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,24 @@ public boolean getSectionPlayerCount(String section, Consumer<Integer> consumer)
153153
return true;
154154
}
155155

156+
public void clearPlayerBypass(Player player) {
157+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
158+
out.writeUTF("ClearPlayerBypass");
159+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
160+
}
161+
162+
public void setPlayerBypass(Player player) {
163+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
164+
out.writeUTF("SetPlayerBypass");
165+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
166+
}
167+
168+
public void bypassConnect(Player player, String server) {
169+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
170+
out.writeUTF("BypassConnect");
171+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
172+
}
173+
156174
public boolean clearStatusOverride(String server) {
157175
Player player = Iterables.getFirst(plugin.getServer().getOnlinePlayers(), null);
158176
if (player == null) {
@@ -182,24 +200,6 @@ public boolean setStatusOverride(String server, boolean status) {
182200
return true;
183201
}
184202

185-
public void clearPlayerBypass(Player player) {
186-
ByteArrayDataOutput out = ByteStreams.newDataOutput();
187-
out.writeUTF("ClearPlayerBypass");
188-
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
189-
}
190-
191-
public void setPlayerBypass(Player player) {
192-
ByteArrayDataOutput out = ByteStreams.newDataOutput();
193-
out.writeUTF("SetPlayerBypass");
194-
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
195-
}
196-
197-
public void bypassConnect(Player player, String server) {
198-
ByteArrayDataOutput out = ByteStreams.newDataOutput();
199-
out.writeUTF("BypassConnect");
200-
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
201-
}
202-
203203
private final class MessageContext {
204204
private final String channel;
205205
private final String subchannel;

0 commit comments

Comments
 (0)