Add getServerInfo(name) and rework plugin channel system for stupud Bukkit limitations.
This commit is contained in:
parent
8f32374cda
commit
8797a29761
@ -87,6 +87,14 @@ public abstract class ProxyServer
|
||||
*/
|
||||
public abstract Map<String, ServerInfo> getServers();
|
||||
|
||||
/**
|
||||
* Gets the server info of a server.
|
||||
*
|
||||
* @param name the name of the configured server
|
||||
* @return the server info belonging to the specified server
|
||||
*/
|
||||
public abstract ServerInfo getServerInfo(String name);
|
||||
|
||||
/**
|
||||
* Get the {@link PluginManager} associated with loading plugins and
|
||||
* dispatching events. It is recommended that implementations use the
|
||||
|
@ -105,9 +105,7 @@ public class BungeeCord extends ProxyServer
|
||||
getPluginManager().registerCommand(new CommandAlert());
|
||||
getPluginManager().registerCommand(new CommandBungee());
|
||||
|
||||
registerChannel("BungeeCord::Disconnect");
|
||||
registerChannel("BungeeCord::Connect");
|
||||
registerChannel("BungeeCord::Forward");
|
||||
registerChannel("BungeeCord");
|
||||
}
|
||||
|
||||
public static BungeeCord getInstance()
|
||||
@ -291,6 +289,12 @@ public class BungeeCord extends ProxyServer
|
||||
return config.getServers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServerInfo getServerInfo(String name)
|
||||
{
|
||||
return getServers().get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Synchronized("pluginChannels")
|
||||
public void registerChannel(String channel)
|
||||
|
@ -282,6 +282,13 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
||||
case 0xFA:
|
||||
// Call the onPluginMessage event
|
||||
PacketFAPluginMessage message = new PacketFAPluginMessage(packet);
|
||||
|
||||
// Might matter in the future
|
||||
if (message.tag.equals("BungeeCord"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
PluginMessageEvent event = new PluginMessageEvent(UserConnection.this, server, message.tag, message.data);
|
||||
ProxyServer.getInstance().getPluginManager().callEvent(event);
|
||||
|
||||
@ -371,39 +378,42 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (message.tag)
|
||||
if (message.tag.equals("BungeeCord"))
|
||||
{
|
||||
case "BungeeCord::Disconnect":
|
||||
break outer;
|
||||
case "BungeeCord::Forward":
|
||||
String target = in.readUTF();
|
||||
String channel = in.readUTF();
|
||||
short len = in.readShort();
|
||||
byte[] data = new byte[len];
|
||||
in.readFully(data);
|
||||
switch (in.readUTF())
|
||||
{
|
||||
case "Disconnect":
|
||||
break outer;
|
||||
case "Forward":
|
||||
String target = in.readUTF();
|
||||
String channel = in.readUTF();
|
||||
short len = in.readShort();
|
||||
byte[] data = new byte[len];
|
||||
in.readFully(data);
|
||||
|
||||
if (target.equals("ALL"))
|
||||
{
|
||||
for (String s : BungeeCord.getInstance().getServers().keySet())
|
||||
if (target.equals("ALL"))
|
||||
{
|
||||
Server server = BungeeCord.getInstance().getServer(s);
|
||||
for (String s : BungeeCord.getInstance().getServers().keySet())
|
||||
{
|
||||
Server server = BungeeCord.getInstance().getServer(s);
|
||||
server.sendData(channel, data);
|
||||
}
|
||||
} else
|
||||
{
|
||||
Server server = BungeeCord.getInstance().getServer(target);
|
||||
server.sendData(channel, data);
|
||||
}
|
||||
} else
|
||||
{
|
||||
Server server = BungeeCord.getInstance().getServer(target);
|
||||
server.sendData(channel, data);
|
||||
}
|
||||
|
||||
break;
|
||||
case "BungeeCord::Connect":
|
||||
ServerInfo server = BungeeCord.getInstance().config.getServers().get(in.readUTF());
|
||||
if (server != null)
|
||||
{
|
||||
connect(server);
|
||||
break outer;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case "Connect":
|
||||
ServerInfo server = BungeeCord.getInstance().config.getServers().get(in.readUTF());
|
||||
if (server != null)
|
||||
{
|
||||
connect(server);
|
||||
break outer;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user