More work
This commit is contained in:
parent
592a504e77
commit
55867dbdc3
@ -98,6 +98,21 @@ public abstract class ProxyServer
|
|||||||
*/
|
*/
|
||||||
public abstract void setConfigurationAdapter(ConfigurationAdapter adapter);
|
public abstract void setConfigurationAdapter(ConfigurationAdapter adapter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the currently in use tab list handle.
|
||||||
|
*
|
||||||
|
* @return the tab list handler
|
||||||
|
*/
|
||||||
|
public abstract TabListHandler getTabListHandler();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the used tab list handler, should not be changed once players have
|
||||||
|
* connected
|
||||||
|
*
|
||||||
|
* @param handler the tab list handler to set
|
||||||
|
*/
|
||||||
|
public abstract void setTabListHandler(TabListHandler handler);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gracefully mark this instance for shutdown.
|
* Gracefully mark this instance for shutdown.
|
||||||
*/
|
*/
|
||||||
|
@ -22,11 +22,11 @@ public class PluginMessageEvent extends TargetedEvent implements Cancellable
|
|||||||
/**
|
/**
|
||||||
* Tag specified for this plugin message.
|
* Tag specified for this plugin message.
|
||||||
*/
|
*/
|
||||||
private String tag;
|
private final String tag;
|
||||||
/**
|
/**
|
||||||
* Data contained in this plugin message.
|
* Data contained in this plugin message.
|
||||||
*/
|
*/
|
||||||
private byte[] data;
|
private final byte[] data;
|
||||||
|
|
||||||
public PluginMessageEvent(Connection sender, Connection receiver, String tag, byte[] data)
|
public PluginMessageEvent(Connection sender, Connection receiver, String tag, byte[] data)
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package net.md_5.bungee.api.event;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
import net.md_5.bungee.api.connection.Server;
|
||||||
|
import net.md_5.bungee.api.plugin.Event;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ServerConnectEvent extends Event
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Player connecting to a new server.
|
||||||
|
*/
|
||||||
|
private final ProxiedPlayer player;
|
||||||
|
/**
|
||||||
|
* Server the player will be connected to.
|
||||||
|
*/
|
||||||
|
private Server target;
|
||||||
|
}
|
@ -2,7 +2,9 @@ package net.md_5.bungee.api.event;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import net.md_5.bungee.api.connection.Connection;
|
import net.md_5.bungee.api.connection.Connection;
|
||||||
|
import net.md_5.bungee.api.plugin.Event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An event which occurs in the communication between two nodes. It is not
|
* An event which occurs in the communication between two nodes. It is not
|
||||||
@ -12,7 +14,8 @@ import net.md_5.bungee.api.connection.Connection;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public abstract class TargetedEvent
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public abstract class TargetedEvent extends Event
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -268,7 +268,7 @@ public class Configuration
|
|||||||
*/
|
*/
|
||||||
public void setServer(UserConnection user, String server)
|
public void setServer(UserConnection user, String server)
|
||||||
{
|
{
|
||||||
reconnectLocations.put(user.username, server);
|
reconnectLocations.put(user.name, server);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import static net.md_5.bungee.Logger.$;
|
import static net.md_5.bungee.Logger.$;
|
||||||
import net.md_5.bungee.packet.PacketFFKick;
|
import net.md_5.bungee.packet.PacketFFKick;
|
||||||
@ -20,8 +21,10 @@ public class GenericConnection
|
|||||||
protected final Socket socket;
|
protected final Socket socket;
|
||||||
protected final PacketInputStream in;
|
protected final PacketInputStream in;
|
||||||
protected final OutputStream out;
|
protected final OutputStream out;
|
||||||
public String username;
|
@Getter
|
||||||
public String tabListName;
|
public String name;
|
||||||
|
@Getter
|
||||||
|
public String displayName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the socket with the specified reason.
|
* Close the socket with the specified reason.
|
||||||
@ -55,6 +58,6 @@ public class GenericConnection
|
|||||||
|
|
||||||
public void log(String message)
|
public void log(String message)
|
||||||
{
|
{
|
||||||
$().info(socket.getInetAddress() + ((username == null) ? " " : " [" + username + "] ") + message);
|
$().info(socket.getInetAddress() + ((name == null) ? " " : " [" + name + "] ") + message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,17 +4,18 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.SocketAddress;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import javax.print.attribute.standard.Destination;
|
import lombok.Getter;
|
||||||
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.connection.Server;
|
import net.md_5.bungee.api.connection.Server;
|
||||||
import net.md_5.bungee.api.event.ChatEvent;
|
import net.md_5.bungee.api.event.ChatEvent;
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||||
|
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||||
import net.md_5.bungee.packet.*;
|
import net.md_5.bungee.packet.*;
|
||||||
|
|
||||||
public class UserConnection extends GenericConnection implements ProxiedPlayer
|
public class UserConnection extends GenericConnection implements ProxiedPlayer
|
||||||
@ -23,6 +24,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
public final Packet2Handshake handshake;
|
public final Packet2Handshake handshake;
|
||||||
public Queue<DefinedPacket> packetQueue = new ConcurrentLinkedQueue<>();
|
public Queue<DefinedPacket> packetQueue = new ConcurrentLinkedQueue<>();
|
||||||
public List<byte[]> loginPackets = new ArrayList<>();
|
public List<byte[]> loginPackets = new ArrayList<>();
|
||||||
|
@Getter
|
||||||
private ServerConnection server;
|
private ServerConnection server;
|
||||||
private UpstreamBridge upBridge;
|
private UpstreamBridge upBridge;
|
||||||
private DownstreamBridge downBridge;
|
private DownstreamBridge downBridge;
|
||||||
@ -33,6 +35,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
// ping stuff
|
// ping stuff
|
||||||
private int trackingPingId;
|
private int trackingPingId;
|
||||||
private long pingTime;
|
private long pingTime;
|
||||||
|
@Getter
|
||||||
private int ping;
|
private int ping;
|
||||||
public UserConnection instance = this;
|
public UserConnection instance = this;
|
||||||
|
|
||||||
@ -40,39 +43,25 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
{
|
{
|
||||||
super(socket, in, out);
|
super(socket, in, out);
|
||||||
this.handshake = handshake;
|
this.handshake = handshake;
|
||||||
username = handshake.username;
|
name = handshake.username;
|
||||||
tabListName = handshake.username;
|
displayName = handshake.username;
|
||||||
this.loginPackets = loginPackets;
|
this.loginPackets = loginPackets;
|
||||||
BungeeCord.instance.connections.put(username, this);
|
BungeeCord.instance.connections.put(name, this);
|
||||||
BungeeCord.instance.tabListHandler.onJoin(this);
|
BungeeCord.instance.tabListHandler.onJoin(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTabListName(String newName)
|
@Override
|
||||||
|
public void setDisplayName(String name)
|
||||||
{
|
{
|
||||||
BungeeCord.instance.tabListHandler.onDisconnect(this);
|
ProxyServer.getInstance().getTabListHandler().onDisconnect(this);
|
||||||
tabListName = newName;
|
displayName = name;
|
||||||
BungeeCord.instance.tabListHandler.onJoin(this);
|
ProxyServer.getInstance().getTabListHandler().onConnect(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void connect(String server)
|
public void connect(Server server)
|
||||||
{
|
{
|
||||||
ServerConnectEvent event = new ServerConnectEvent(this.server == null, this, server);
|
ServerConnectEvent event = new ServerConnectEvent(this, server);
|
||||||
event.setNewServer(server);
|
BungeeCord.getInstance().getPluginManager().callEvent(event);
|
||||||
BungeeCord.instance.pluginManager.onServerConnect(event);
|
|
||||||
if (event.getMessage() != null)
|
|
||||||
{
|
|
||||||
this.sendMessage(event.getMessage());
|
|
||||||
}
|
|
||||||
if (event.getNewServer() == null)
|
|
||||||
{
|
|
||||||
if (event.isFirstTime())
|
|
||||||
{
|
|
||||||
event.setNewServer(BungeeCord.instance.config.defaultServerName);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
InetSocketAddress addr = BungeeCord.instance.config.getServer(event.getNewServer());
|
InetSocketAddress addr = BungeeCord.instance.config.getServer(event.getNewServer());
|
||||||
connect(server, addr);
|
connect(server, addr);
|
||||||
}
|
}
|
||||||
@ -146,21 +135,6 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getServer()
|
|
||||||
{
|
|
||||||
return server.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SocketAddress getAddress()
|
|
||||||
{
|
|
||||||
return socket.getRemoteSocketAddress();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPing()
|
|
||||||
{
|
|
||||||
return ping;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setPing(int ping)
|
private void setPing(int ping)
|
||||||
{
|
{
|
||||||
BungeeCord.instance.tabListHandler.onPingChange(this, ping);
|
BungeeCord.instance.tabListHandler.onPingChange(this, ping);
|
||||||
@ -171,7 +145,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
{
|
{
|
||||||
if (BungeeCord.instance.isRunning)
|
if (BungeeCord.instance.isRunning)
|
||||||
{
|
{
|
||||||
BungeeCord.instance.connections.remove(username);
|
BungeeCord.instance.connections.remove(name);
|
||||||
if (server != null)
|
if (server != null)
|
||||||
{
|
{
|
||||||
List<UserConnection> conns = BungeeCord.instance.connectionsByServer.get(server.name);
|
List<UserConnection> conns = BungeeCord.instance.connectionsByServer.get(server.name);
|
||||||
@ -202,45 +176,10 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
packetQueue.add(new Packet3Chat(message));
|
packetQueue.add(new Packet3Chat(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendPluginMessage(String tag, byte[] data)
|
|
||||||
{
|
|
||||||
server.packetQueue.add(new PacketFAPluginMessage(tag, data));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return username;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDisplayName()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDisplayName(String name)
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void connect(Server server)
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Server getServer()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendData(String channel, byte[] data)
|
public void sendData(String channel, byte[] data)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
server.packetQueue.add(new PacketFAPluginMessage(channel, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -284,7 +223,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
|
|
||||||
public UpstreamBridge()
|
public UpstreamBridge()
|
||||||
{
|
{
|
||||||
super("Upstream Bridge - " + username);
|
super("Upstream Bridge - " + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -298,39 +237,37 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
boolean sendPacket = true;
|
boolean sendPacket = true;
|
||||||
|
|
||||||
int id = Util.getId(packet);
|
int id = Util.getId(packet);
|
||||||
if (id == 0xFA)
|
switch (id)
|
||||||
{
|
{
|
||||||
|
case 0x00:
|
||||||
|
if (trackingPingId == new Packet0KeepAlive(packet).id)
|
||||||
|
{
|
||||||
|
setPing((int) (System.currentTimeMillis() - pingTime));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
Packet3Chat chat = new Packet3Chat(packet);
|
||||||
|
if (chat.message.startsWith("/"))
|
||||||
|
{
|
||||||
|
sendPacket = !ProxyServer.getInstance().getPluginManager().dispatchCommand(UserConnection.this, chat.message.substring(1));
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
ChatEvent chatEvent = new ChatEvent(UserConnection.this, server, chat.message);
|
||||||
|
ProxyServer.getInstance().getPluginManager().callEvent(chatEvent);
|
||||||
|
sendPacket = !chatEvent.isCancelled();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xFA:
|
||||||
// Call the onPluginMessage event
|
// Call the onPluginMessage event
|
||||||
PacketFAPluginMessage message = new PacketFAPluginMessage(packet);
|
PacketFAPluginMessage message = new PacketFAPluginMessage(packet);
|
||||||
PluginMessageEvent event = new PluginMessageEvent(Destination.SERVER, instance);
|
PluginMessageEvent event = new PluginMessageEvent(UserConnection.this, server, message.tag, message.data);
|
||||||
event.setTag(message.tag);
|
ProxyServer.getInstance().getPluginManager().callEvent(event);
|
||||||
event.setData(new String(message.data));
|
|
||||||
BungeeCord.instance.pluginManager.onPluginMessage(event);
|
|
||||||
|
|
||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else if (id == 0x03)
|
break;
|
||||||
{
|
|
||||||
Packet3Chat chat = new Packet3Chat(packet);
|
|
||||||
String message = chat.message;
|
|
||||||
if (message.startsWith("/"))
|
|
||||||
{
|
|
||||||
sendPacket = !BungeeCord.instance.dispatchCommand(message.substring(1), UserConnection.this);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ChatEvent chatEvent = new ChatEvent(ChatEvent.Destination.SERVER, instance);
|
|
||||||
chatEvent.setText(message);
|
|
||||||
BungeeCord.instance.pluginManager.onChat(chatEvent);
|
|
||||||
sendPacket = !chatEvent.isCancelled();
|
|
||||||
}
|
|
||||||
} else if (id == 0x00)
|
|
||||||
{
|
|
||||||
if (trackingPingId == new Packet0KeepAlive(packet).id)
|
|
||||||
{
|
|
||||||
setPing((int) (System.currentTimeMillis() - pingTime));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!server.packetQueue.isEmpty())
|
while (!server.packetQueue.isEmpty())
|
||||||
@ -363,7 +300,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
|
|
||||||
public DownstreamBridge()
|
public DownstreamBridge()
|
||||||
{
|
{
|
||||||
super("Downstream Bridge - " + username);
|
super("Downstream Bridge - " + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -371,61 +308,59 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
outer:
|
||||||
while (!reconnecting)
|
while (!reconnecting)
|
||||||
{
|
{
|
||||||
byte[] packet = server.in.readPacket();
|
byte[] packet = server.in.readPacket();
|
||||||
|
|
||||||
int id = Util.getId(packet);
|
int id = Util.getId(packet);
|
||||||
if (id == 0xFA)
|
switch (id)
|
||||||
{
|
{
|
||||||
|
case 0x00:
|
||||||
|
trackingPingId = new Packet0KeepAlive(packet).id;
|
||||||
|
pingTime = System.currentTimeMillis();
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
Packet3Chat chat = new Packet3Chat(packet);
|
||||||
|
ChatEvent chatEvent = new ChatEvent(server, UserConnection.this, chat.message);
|
||||||
|
ProxyServer.getInstance().getPluginManager().callEvent(chatEvent);
|
||||||
|
|
||||||
|
if (chatEvent.isCancelled())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xC9:
|
||||||
|
PacketC9PlayerListItem playerList = new PacketC9PlayerListItem(packet);
|
||||||
|
if (!ProxyServer.getInstance().getTabListHandler().onListUpdate(instance, playerList.username, playerList.online, playerList.ping))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xFA:
|
||||||
// Call the onPluginMessage event
|
// Call the onPluginMessage event
|
||||||
PacketFAPluginMessage message = new PacketFAPluginMessage(packet);
|
PacketFAPluginMessage message = new PacketFAPluginMessage(packet);
|
||||||
PluginMessageEvent event = new PluginMessageEvent(Destination.CLIENT, instance);
|
PluginMessageEvent event = new PluginMessageEvent(server, UserConnection.this, message.tag, message.data);
|
||||||
event.setTag(message.tag);
|
ProxyServer.getInstance().getPluginManager().callEvent(event);
|
||||||
event.setData(new String(message.data));
|
|
||||||
BungeeCord.instance.pluginManager.onPluginMessage(event);
|
|
||||||
|
|
||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
message.tag = event.getTag();
|
switch (message.tag)
|
||||||
message.data = event.getData().getBytes();
|
|
||||||
|
|
||||||
// Allow a message for killing the connection outright
|
|
||||||
if (message.tag.equals("KillCon"))
|
|
||||||
{
|
{
|
||||||
break;
|
case "BungeeCord::Disconnect":
|
||||||
}
|
break outer;
|
||||||
|
case "BungeeCord::Connect":
|
||||||
if (message.tag.equals("RubberBand"))
|
Server server = ProxyServer.getInstance().getServer(new String(message.data));
|
||||||
|
if (server != null)
|
||||||
{
|
{
|
||||||
String server = new String(message.data);
|
|
||||||
connect(server);
|
connect(server);
|
||||||
|
break outer;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (id == 0x00)
|
|
||||||
{
|
|
||||||
trackingPingId = new Packet0KeepAlive(packet).id;
|
|
||||||
pingTime = System.currentTimeMillis();
|
|
||||||
} else if (id == 0x03)
|
|
||||||
{
|
|
||||||
Packet3Chat chat = new Packet3Chat(packet);
|
|
||||||
String message = chat.message;
|
|
||||||
ChatEvent chatEvent = new ChatEvent(ChatEvent.Destination.CLIENT, instance);
|
|
||||||
chatEvent.setText(message);
|
|
||||||
BungeeCord.instance.pluginManager.onChat(chatEvent);
|
|
||||||
if (chatEvent.isCancelled())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else if (id == 0xC9)
|
|
||||||
{
|
|
||||||
if (!BungeeCord.instance.tabListHandler.onPacketC9(UserConnection.this, new PacketC9PlayerListItem(packet)))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!packetQueue.isEmpty())
|
while (!packetQueue.isEmpty())
|
||||||
|
@ -19,7 +19,7 @@ public class GlobalTabList implements TabListHandler
|
|||||||
{
|
{
|
||||||
for (UserConnection c : BungeeCord.getInstance().connections.values())
|
for (UserConnection c : BungeeCord.getInstance().connections.values())
|
||||||
{
|
{
|
||||||
c.packetQueue.add(new PacketC9PlayerListItem(c.tabListName, true, c.getPing()));
|
c.packetQueue.add(new PacketC9PlayerListItem(c.displayName, true, c.getPing()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user