Skip to content

Commit a15c591

Browse files
committed
Progress for more subchannels and some other little changes
1 parent 5f7b7de commit a15c591

File tree

8 files changed

+91
-40
lines changed

8 files changed

+91
-40
lines changed

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/commands/ManageCommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,10 @@ public void execute(CommandSender sender, String[] args) {
178178
.color(ChatColor.GRAY)
179179
.append(server.getName())
180180
.color(ChatColor.AQUA)
181-
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Accessible: ")
181+
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Online: ")
182182
.color(ChatColor.GRAY)
183-
.append(status.isAccessible() ? "yes" : "no")
184-
.color(status.isAccessible() ? ChatColor.GREEN : ChatColor.RED)
183+
.append(status.isOnline() ? "yes" : "no")
184+
.color(status.isOnline() ? ChatColor.GREEN : ChatColor.RED)
185185
.append("\nDescription: ")
186186
.color(ChatColor.GRAY)
187187
.append("\"")
@@ -196,7 +196,7 @@ public void execute(CommandSender sender, String[] args) {
196196
.color(ChatColor.AQUA)
197197
.create()))
198198
.append(String.format(" (%d/%d) ",
199-
status.getOnline(),
199+
status.getPlayers(),
200200
status.getMaximum()))
201201
.color(ChatColor.RED)
202202
.create()

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.jaimemartz.playerbalancer.PlayerBalancer;
44
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
5-
import com.jaimemartz.playerbalancer.ping.ServerStatus;
65
import com.jaimemartz.playerbalancer.section.ServerSection;
76
import com.jaimemartz.playerbalancer.utils.MessageUtils;
87
import net.md_5.bungee.api.Callback;
@@ -73,8 +72,7 @@ private ServerInfo fetchServer(ProxiedPlayer player, ServerSection section, Prov
7372
if (plugin.getSectionManager().isReiterative(section)) {
7473
if (ServerAssignRegistry.hasAssignedServer(player, section)) {
7574
ServerInfo target = ServerAssignRegistry.getAssignedServer(player, section);
76-
ServerStatus status = plugin.getStatusManager().getStatus(target);
77-
if (status.isAccessible()) {
75+
if (plugin.getStatusManager().isAccessible(target)) {
7876
return target;
7977
} else {
8078
ServerAssignRegistry.revokeTarget(player, section);
@@ -89,8 +87,7 @@ private ServerInfo fetchServer(ProxiedPlayer player, ServerSection section, Prov
8987
ServerInfo target = provider.requestTarget(plugin, section, servers, player);
9088
if (target == null) continue;
9189

92-
ServerStatus status = plugin.getStatusManager().getStatus(target);
93-
if (status.isAccessible()) {
90+
if (plugin.getStatusManager().isAccessible(target)) {
9491
return target;
9592
} else {
9693
servers.remove(target);

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/manager/PasteHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public void send(PlayerBalancer plugin, CommandSender sender) {
101101
try {
102102
url = paste(plugin);
103103
} catch (PasteException e) {
104-
sender.sendMessage(new ComponentBuilder("A pastebin exception occurred: " + e.getMessage())
104+
sender.sendMessage(new ComponentBuilder("An pastebin exception occurred: " + e.getMessage())
105105
.color(ChatColor.RED)
106106
.create()
107107
);

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ public void ping(ServerInfo server, Callback<ServerStatus> callback, PlayerBalan
2222
callback.done(new ServerStatus(
2323
response.getDescription().toLegacyText(),
2424
response.getPlayers().getOnline(),
25-
response.getPlayers().getMax(),
26-
plugin.getSettings().getServerCheckerProps().getMarkerDescs()),
25+
response.getPlayers().getMax()),
2726
null);
2827
} catch (IOException e) {
2928
callback.done(null, e);
@@ -42,8 +41,7 @@ public void ping(ServerInfo server, Callback<ServerStatus> callback, PlayerBalan
4241
callback.done(new ServerStatus(
4342
ping.getDescription(),
4443
ping.getPlayers().getOnline(),
45-
ping.getPlayers().getMax(),
46-
plugin.getSettings().getServerCheckerProps().getMarkerDescs()
44+
ping.getPlayers().getMax()
4745
), throwable);
4846
} else {
4947
callback.done(null, throwable);

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

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,33 @@
22

33
import net.md_5.bungee.api.config.ServerInfo;
44

5-
import java.util.Collections;
6-
import java.util.List;
7-
85
public final class ServerStatus {
96
private final String description;
10-
private final int online, maximum;
7+
private final int players, maximum;
118
private boolean outdated = true;
12-
private final boolean accessible;
9+
private final boolean online;
1310

1411
public ServerStatus() {
15-
this("Server Unreachable", 0, 0, Collections.emptyList());
12+
this("Server Unreachable", 0, 0);
1613
}
1714

1815
public ServerStatus(ServerInfo server) {
19-
this(server.getMotd(), server.getPlayers().size(), Integer.MAX_VALUE, Collections.emptyList());
16+
this(server.getMotd(), server.getPlayers().size(), Integer.MAX_VALUE);
2017
}
2118

22-
public ServerStatus(String description, int online, int maximum, List<String> descs) {
19+
public ServerStatus(String description, int players, int maximum) {
2320
this.description = description;
24-
this.online = online;
21+
this.players = players;
2522
this.maximum = maximum;
26-
27-
this.accessible = (maximum != 0 && online < maximum && !isMarked(descs));
28-
}
29-
30-
private boolean isMarked(List<String> descs) {
31-
for (String pattern : descs) {
32-
if (description.matches(pattern)) {
33-
return true;
34-
}
35-
}
36-
return false;
23+
this.online = maximum != 0 && players < maximum;
3724
}
3825

3926
public String getDescription() {
4027
return description;
4128
}
4229

43-
public int getOnline() {
44-
return online;
30+
public int getPlayers() {
31+
return players;
4532
}
4633

4734
public int getMaximum() {
@@ -56,7 +43,7 @@ public void setOutdated(boolean outdated) {
5643
this.outdated = outdated;
5744
}
5845

59-
public boolean isAccessible() {
60-
return accessible;
46+
public boolean isOnline() {
47+
return online;
6148
}
6249
}

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.jaimemartz.playerbalancer.PlayerBalancer;
44
import com.jaimemartz.playerbalancer.section.ServerSection;
5+
import com.jaimemartz.playerbalancer.settings.props.features.ServerCheckerProps;
56
import net.md_5.bungee.api.config.ServerInfo;
67
import net.md_5.bungee.api.scheduler.ScheduledTask;
78

@@ -11,13 +12,16 @@
1112

1213
public class StatusManager {
1314
private final PlayerBalancer plugin;
15+
private final ServerCheckerProps props;
16+
1417
private boolean stopped = true;
1518
private PingTactic tactic;
1619
private ScheduledTask task;
1720
private final Map<ServerInfo, ServerStatus> storage = new HashMap<>();
1821

1922
public StatusManager(PlayerBalancer plugin) {
2023
this.plugin = plugin;
24+
this.props = plugin.getSettings().getServerCheckerProps();
2125
}
2226

2327
public void start() {
@@ -65,8 +69,8 @@ private void update(ServerInfo server) {
6569

6670
if (plugin.getSettings().getServerCheckerProps().isDebug()) {
6771
plugin.getLogger().info(String.format(
68-
"Updated server %s, status: [Description: \"%s\", Online Players: %s, Maximum Players: %s, Accessible: %s]",
69-
server.getName(), status.getDescription(), status.getOnline(), status.getMaximum(), status.isAccessible()
72+
"Updated server %s, status: [Description: \"%s\", Players: %s, Maximum Players: %s, Online: %s]",
73+
server.getName(), status.getDescription(), status.getPlayers(), status.getMaximum(), status.isOnline()
7074
));
7175
}
7276

@@ -84,4 +88,16 @@ public ServerStatus getStatus(ServerInfo server) {
8488
return status;
8589
}
8690
}
91+
92+
public boolean isAccessible(ServerInfo server) {
93+
ServerStatus status = getStatus(server);
94+
95+
for (String pattern : props.getMarkerDescs()) {
96+
if (status.getDescription().matches(pattern)) {
97+
return false;
98+
}
99+
}
100+
101+
return true;
102+
}
87103
}

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/section/SectionManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,10 @@ public Map<String, ServerSection> getSections() {
359359
return sections;
360360
}
361361

362+
public Map<ServerInfo, ServerSection> getServers() {
363+
return servers;
364+
}
365+
362366
public Stage getStage(String name) {
363367
return stages.get(name);
364368
}

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

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,55 @@ public void fallbackPlayer(Player player) {
153153
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
154154
}
155155

156+
//TODO Implement this on the bungeecord side
157+
public boolean unmarkServer(String server) {
158+
Player player = Iterables.getFirst(plugin.getServer().getOnlinePlayers(), null);
159+
if (player == null) {
160+
return false;
161+
}
162+
163+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
164+
out.writeUTF("ServerUnmark");
165+
out.writeUTF(server);
166+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
167+
168+
return true;
169+
}
170+
171+
public boolean markServer(String server, boolean status) {
172+
Player player = Iterables.getFirst(plugin.getServer().getOnlinePlayers(), null);
173+
if (player == null) {
174+
return false;
175+
}
176+
177+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
178+
out.writeUTF("ServerMark");
179+
out.writeUTF(server);
180+
out.writeBoolean(status);
181+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
182+
183+
return true;
184+
}
185+
186+
public void unbypassPlayer(Player player) {
187+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
188+
out.writeUTF("PlayerUnbypass");
189+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
190+
}
191+
192+
public void bypassPlayer(Player player) {
193+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
194+
out.writeUTF("PlayerBypass");
195+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
196+
}
197+
198+
public void bypassConnect(Player player, String server) {
199+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
200+
out.writeUTF("BypassConnect");
201+
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
202+
}
203+
//END TODO Implement this on the bungeecord side
204+
156205
private final class MessageContext {
157206
private final String channel;
158207
private final String subchannel;

0 commit comments

Comments
 (0)