Fix channels for newer spigot versions

This commit is contained in:
Jaime Martínez Rincón 2020-04-10 15:59:23 +02:00
parent 4caae18e6a
commit 8f1fbd234e
4 changed files with 39 additions and 31 deletions

View File

@ -15,23 +15,26 @@ import java.util.UUID;
import java.util.function.Consumer;
public class PluginMessageManager implements PluginMessageListener {
private static final String PB_CHANNEL = "playerbalancer:main",
BC_CHANNEL = "bungeecord:main";
private final Multimap<MessageContext, Consumer<ByteArrayDataInput>> contexts = LinkedHashMultimap.create();
private final PlayerBalancerAddon plugin;
public PluginMessageManager(PlayerBalancerAddon plugin) {
this.plugin = plugin;
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, "PlayerBalancer", this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "PlayerBalancer");
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, PB_CHANNEL, this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, PB_CHANNEL);
//In case we need to use BungeeCord channels
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, "BungeeCord", this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, BC_CHANNEL, this);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, BC_CHANNEL);
}
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
if (channel.equals("PlayerBalancer")) {
if (channel.equals(PB_CHANNEL)) {
ByteArrayDataInput in = ByteStreams.newDataInput(message);
String subchannel = in.readUTF();
@ -50,14 +53,14 @@ public class PluginMessageManager implements PluginMessageListener {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(section);
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public void fallbackPlayer(Player player) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("FallbackPlayer");
out.writeUTF(player.getName());
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public boolean getSectionByName(String section, Consumer<String> consumer) {
@ -71,12 +74,12 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF(section);
contexts.put(new MessageContext(
"PlayerBalancer",
PB_CHANNEL,
"GetSectionByName",
player.getUniqueId()
), (response) -> consumer.accept(response.readUTF()));
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}
@ -91,12 +94,12 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF(server);
contexts.put(new MessageContext(
"PlayerBalancer",
PB_CHANNEL,
"GetSectionByServer",
player.getUniqueId()
), (response) -> consumer.accept(response.readUTF()));
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}
@ -106,12 +109,12 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF(player.getName());
contexts.put(new MessageContext(
"PlayerBalancer",
PB_CHANNEL,
"GetSectionOfPlayer",
player.getUniqueId()
), (response) -> consumer.accept(response.readUTF()));
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public boolean getServerStatus(String server, Consumer<String> consumer) {
@ -125,12 +128,12 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF(player.getName());
contexts.put(new MessageContext(
"PlayerBalancer",
PB_CHANNEL,
"GetServerStatus",
player.getUniqueId()
), (response) -> consumer.accept(response.readUTF()));
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}
@ -145,32 +148,32 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF(section);
contexts.put(new MessageContext(
"PlayerBalancer",
PB_CHANNEL,
"GetSectionPlayerCount",
player.getUniqueId()
), (response) -> consumer.accept(response.readInt()));
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}
public void clearPlayerBypass(Player player) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("ClearPlayerBypass");
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public void setPlayerBypass(Player player) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("SetPlayerBypass");
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public void bypassConnect(Player player, String server) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("BypassConnect");
out.writeUTF(server);
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
}
public boolean clearStatusOverride(String server) {
@ -182,7 +185,7 @@ public class PluginMessageManager implements PluginMessageListener {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("ClearStatusOverride");
out.writeUTF(server);
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}
@ -197,7 +200,7 @@ public class PluginMessageManager implements PluginMessageListener {
out.writeUTF("SetStatusOverride");
out.writeUTF(server);
out.writeBoolean(status);
player.sendPluginMessage(plugin, "PlayerBalancer", out.toByteArray());
player.sendPluginMessage(plugin, PB_CHANNEL, out.toByteArray());
return true;
}

View File

@ -42,6 +42,7 @@ public class PlayerBalancer extends Plugin {
private Listener connectListener, kickListener, reloadListener, pluginMessageListener;
public static final String LOG_FILE_PATTERN = "balancer.log";
public static final String PB_CHANNEL = "playerbalancer:main";
@Override
public void onLoad() {
@ -147,7 +148,7 @@ public class PlayerBalancer extends Plugin {
getProxy().getPluginManager().registerListener(this, connectListener);
if (settings.getGeneralProps().isPluginMessaging()) {
getProxy().registerChannel("PlayerBalancer");
getProxy().registerChannel(PB_CHANNEL);
getProxy().getPluginManager().registerListener(this, statusManager);
@ -234,7 +235,7 @@ public class PlayerBalancer extends Plugin {
if (settings.getGeneralProps().isPluginMessaging()) {
if (pluginMessageListener != null) {
getProxy().unregisterChannel("PlayerBalancer");
getProxy().unregisterChannel(PB_CHANNEL);
getProxy().getPluginManager().unregisterListener(pluginMessageListener);
pluginMessageListener = null;
}

View File

@ -21,6 +21,8 @@ import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import static com.jaimemartz.playerbalancer.PlayerBalancer.PB_CHANNEL;
public class PluginMessageListener implements Listener {
private final PlayerBalancer plugin;
private final Gson gson;
@ -40,7 +42,7 @@ public class PluginMessageListener implements Listener {
@EventHandler
public void onPluginMessage(PluginMessageEvent event) {
if (event.getTag().equals("PlayerBalancer") && event.getSender() instanceof Server) {
if (event.getTag().equals(PB_CHANNEL) && event.getSender() instanceof Server) {
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
String request = in.readUTF();
ServerInfo sender = ((Server) event.getSender()).getInfo();
@ -91,7 +93,7 @@ public class PluginMessageListener implements Listener {
e.printStackTrace();
}
sender.sendData("PlayerBalancer", stream.toByteArray());
sender.sendData(PB_CHANNEL, stream.toByteArray());
break;
}
@ -117,7 +119,7 @@ public class PluginMessageListener implements Listener {
e.printStackTrace();
}
sender.sendData("PlayerBalancer", stream.toByteArray());
sender.sendData(PB_CHANNEL, stream.toByteArray());
break;
}
@ -140,7 +142,7 @@ public class PluginMessageListener implements Listener {
e.printStackTrace();
}
sender.sendData("PlayerBalancer", stream.toByteArray());
sender.sendData(PB_CHANNEL, stream.toByteArray());
}
break;
}
@ -162,7 +164,7 @@ public class PluginMessageListener implements Listener {
e.printStackTrace();
}
sender.sendData("PlayerBalancer", stream.toByteArray());
sender.sendData(PB_CHANNEL, stream.toByteArray());
break;
}
@ -184,7 +186,7 @@ public class PluginMessageListener implements Listener {
e.printStackTrace();
}
sender.sendData("PlayerBalancer", stream.toByteArray());
sender.sendData(PB_CHANNEL, stream.toByteArray());
}
case "ClearPlayerBypass": {

View File

@ -17,6 +17,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static com.jaimemartz.playerbalancer.PlayerBalancer.PB_CHANNEL;
public class StatusManager implements Listener {
private final PlayerBalancer plugin;
private final ServerCheckerProps props;
@ -121,7 +123,7 @@ public class StatusManager implements Listener {
@EventHandler
public void onPluginMessage(PluginMessageEvent event) {
if (event.getTag().equals("PlayerBalancer") && event.getSender() instanceof Server) {
if (event.getTag().equals(PB_CHANNEL) && event.getSender() instanceof Server) {
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
String request = in.readUTF();
ServerInfo sender = ((Server) event.getSender()).getInfo();