Skip to content

Commit 49c64bb

Browse files
committed
some stuff
1 parent 21a53cd commit 49c64bb

File tree

5 files changed

+42
-65
lines changed

5 files changed

+42
-65
lines changed

balancer/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private void execStart() {
143143
}
144144

145145
networkManager = new NetworkManager(this);
146-
146+
getProxy().registerChannel("BungeeCord");
147147
sectionManager = new SectionManager(this);
148148
sectionManager.load();
149149

balancer/src/main/java/com/jaimemartz/playerbalancer/listeners/PluginMessageListener.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
import net.md_5.bungee.api.event.PluginMessageEvent;
1717
import net.md_5.bungee.api.plugin.Listener;
1818
import net.md_5.bungee.event.EventHandler;
19+
import net.md_5.bungee.event.EventPriority;
1920

2021
import java.io.ByteArrayOutputStream;
2122
import java.io.DataOutputStream;
2223
import java.io.IOException;
24+
import java.util.Collection;
25+
import java.util.stream.Collectors;
2326

2427
public class PluginMessageListener implements Listener {
2528
private final PlayerBalancer plugin;
@@ -38,7 +41,7 @@ public PluginMessageListener(PlayerBalancer plugin) {
3841
gson = builder.create();
3942
}
4043

41-
@EventHandler
44+
@EventHandler(priority = EventPriority.LOWEST)
4245
public void onPluginMessage(PluginMessageEvent event) {
4346
if (event.getTag().equals("PlayerBalancer") && event.getSender() instanceof Server) {
4447
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());

balancer/src/main/java/com/jaimemartz/playerbalancer/listeners/ServerConnectListener.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import net.md_5.bungee.api.Callback;
1010
import net.md_5.bungee.api.config.ServerInfo;
1111
import net.md_5.bungee.api.connection.ProxiedPlayer;
12+
import net.md_5.bungee.api.event.PostLoginEvent;
13+
import net.md_5.bungee.api.event.PreLoginEvent;
1214
import net.md_5.bungee.api.event.ServerConnectEvent;
15+
import net.md_5.bungee.api.event.ServerConnectedEvent;
1316
import net.md_5.bungee.api.plugin.Listener;
1417
import net.md_5.bungee.event.EventHandler;
1518
import net.md_5.bungee.event.EventPriority;

balancer/src/main/java/com/jaimemartz/playerbalancer/section/SectionManager.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,8 @@ public void execute(String sectionName, SectionProps sectionProps, ServerSection
128128
@Override
129129
public void execute(String sectionName, SectionProps sectionProps, ServerSection section) throws RuntimeException {
130130
if (sectionProps.getServerName() != null) {
131-
SectionServer server = new SectionServer(props, section);
132-
section.setServer(server);
133-
plugin.getSectionManager().registerServer(server, section);
134-
FixedAdapter.getFakeServers().put(server.getName(), server);
135-
plugin.getProxy().getServers().put(server.getName(), server);
131+
SectionServer server = new SectionServer(plugin, props, section);
132+
plugin.getProxy().getPluginManager().registerListener(plugin, server);
136133
}
137134
}
138135
});
Lines changed: 32 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.jaimemartz.playerbalancer.section;
22

3+
import com.google.common.io.ByteArrayDataInput;
4+
import com.google.common.io.ByteStreams;
5+
import com.jaimemartz.playerbalancer.PlayerBalancer;
6+
import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
7+
import com.jaimemartz.playerbalancer.listeners.PluginMessageListener;
38
import com.jaimemartz.playerbalancer.settings.props.features.BalancerProps;
49
import net.md_5.bungee.BungeeServerInfo;
510
import net.md_5.bungee.api.Callback;
@@ -8,76 +13,45 @@
813
import net.md_5.bungee.api.chat.TextComponent;
914
import net.md_5.bungee.api.config.ServerInfo;
1015
import net.md_5.bungee.api.connection.ProxiedPlayer;
16+
import net.md_5.bungee.api.connection.Server;
17+
import net.md_5.bungee.api.event.PluginMessageEvent;
18+
import net.md_5.bungee.api.plugin.Listener;
19+
import net.md_5.bungee.event.EventHandler;
20+
import net.md_5.bungee.event.EventPriority;
1121

1222
import java.net.InetSocketAddress;
1323
import java.util.Collection;
1424
import java.util.Collections;
1525
import java.util.stream.Collectors;
1626

17-
public class SectionServer extends BungeeServerInfo {
27+
public class SectionServer implements Listener {
28+
private final PlayerBalancer plugin;
1829
private final BalancerProps props;
1930
private final ServerSection section;
2031

21-
public SectionServer(BalancerProps props, ServerSection section) {
22-
super(
23-
"@" + section.getProps().getServerName(),
24-
new InetSocketAddress("0.0.0.0", (int) Math.floor(Math.random() * (0xFFFF + 1))),
25-
"Section server of " + section.getName(),
26-
false
27-
);
28-
32+
public SectionServer(PlayerBalancer plugin, BalancerProps props, ServerSection section) {
33+
this.plugin = plugin;
2934
this.props = props;
3035
this.section = section;
3136
}
3237

33-
@Override
34-
public Collection<ProxiedPlayer> getPlayers() {
35-
if (props.isShowPlayers()) {
36-
return section.getServers().stream()
37-
.map(ServerInfo::getPlayers)
38-
.flatMap(Collection::stream)
39-
.collect(Collectors.toList());
40-
} else return Collections.emptyList();
41-
}
42-
43-
@Override
44-
public void sendData(String channel, byte[] data) {
45-
this.sendData(channel, data, true);
46-
}
47-
48-
@Override
49-
public boolean sendData(String channel, byte[] data, boolean queue) {
50-
//Nothing to do
51-
return true;
52-
}
53-
54-
@Override
55-
public void ping(Callback<ServerPing> callback) {
56-
this.ping(callback, ProxyServer.getInstance().getProtocolVersion());
57-
}
58-
59-
@Override
60-
public void ping(Callback<ServerPing> callback, int protocolVersion) {
61-
ServerPing ping = new ServerPing();
62-
63-
ping.setDescriptionComponent(new TextComponent(
64-
TextComponent.fromLegacyText(this.getMotd())
65-
));
66-
67-
ping.setVersion(new ServerPing.Protocol(
68-
ProxyServer.getInstance().getName(),
69-
protocolVersion
70-
));
71-
72-
Collection<ProxiedPlayer> players = getPlayers();
73-
ping.setPlayers(new ServerPing.Players(
74-
Integer.MAX_VALUE,
75-
players.size(),
76-
players.stream().map(
77-
player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())
78-
).toArray(ServerPing.PlayerInfo[]::new)
79-
));
80-
81-
callback.done(ping, null);
38+
@EventHandler(priority = EventPriority.LOWEST)
39+
public void on(PluginMessageEvent event) {
40+
if (event.getTag().equals("BungeeCord")) {
41+
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
42+
String request = in.readUTF();
43+
44+
if (request.equals("Connect")) {
45+
if (event.getReceiver() instanceof ProxiedPlayer) {
46+
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
47+
String target = in.readUTF();
48+
49+
if (target.equals("@" + section.getProps().getServerName())) {
50+
ConnectionIntent.simple(plugin, player, section);
51+
event.setCancelled(true);
52+
}
53+
}
54+
}
55+
}
8256
}
8357
}

0 commit comments

Comments
 (0)