diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java index 39382dcf..d5bcfb63 100644 --- a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java +++ b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java @@ -12,9 +12,9 @@ import lombok.Getter; import net.md_5.bungee.api.config.ConfigurationAdapter; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.api.connection.Server; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.scheduler.TaskScheduler; +import net.md_5.bungee.api.tab.CustomTabList; public abstract class ProxyServer { @@ -241,4 +241,11 @@ public abstract class ProxyServer * @param message the message to broadcast */ public abstract void broadcast(String message); + + /** + * Gets a new instance of this proxies custom tab list. + * + * @return a new {@link CustomTabList} instance + */ + public abstract CustomTabList customTabList(); } diff --git a/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java b/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java index c89daf06..54e44347 100644 --- a/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java +++ b/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java @@ -3,6 +3,7 @@ package net.md_5.bungee.api.connection; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.config.TexturePackInfo; +import net.md_5.bungee.api.tab.TabListHandler; /** * Represents a player who's connection is being connected to somewhere else, @@ -77,4 +78,12 @@ public interface ProxiedPlayer extends Connection, CommandSender * @param pack the pack to request */ public void setTexturePack(TexturePackInfo pack); + + /** + * Sets the new tab list for the user. At this stage it is not advisable to + * change after the user has logged in! + * + * @param list the new list + */ + public void setTabList(TabListHandler list); } diff --git a/api/src/main/java/net/md_5/bungee/api/tab/TabAPI.java b/api/src/main/java/net/md_5/bungee/api/tab/CustomTabList.java similarity index 96% rename from api/src/main/java/net/md_5/bungee/api/tab/TabAPI.java rename to api/src/main/java/net/md_5/bungee/api/tab/CustomTabList.java index 0b72595d..09aaa7f2 100644 --- a/api/src/main/java/net/md_5/bungee/api/tab/TabAPI.java +++ b/api/src/main/java/net/md_5/bungee/api/tab/CustomTabList.java @@ -3,7 +3,7 @@ package net.md_5.bungee.api.tab; /** * Represents a custom tab list, which may have slots manipulated. */ -public interface TabAPI extends TabListHandler +public interface CustomTabList extends TabListHandler { /** diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index 0921ed13..aefc689e 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -51,6 +51,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.PluginManager; import net.md_5.bungee.api.scheduler.TaskScheduler; +import net.md_5.bungee.api.tab.CustomTabList; import net.md_5.bungee.command.*; import net.md_5.bungee.config.YamlConfig; import net.md_5.bungee.log.LoggingOutputStream; @@ -60,6 +61,7 @@ import net.md_5.bungee.protocol.packet.Packet3Chat; import net.md_5.bungee.protocol.packet.PacketFAPluginMessage; import net.md_5.bungee.protocol.Vanilla; import net.md_5.bungee.scheduler.BungeeThreadPool; +import net.md_5.bungee.tablist.Custom; import net.md_5.bungee.util.CaseInsensitiveMap; /** @@ -512,4 +514,10 @@ public class BungeeCord extends ProxyServer connectionLock.writeLock().unlock(); } } + + @Override + public CustomTabList customTabList() + { + return new Custom(); + } } diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 25c23ead..3a19c5de 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -120,6 +120,12 @@ public final class UserConnection implements ProxiedPlayer } } + public void setTabList(TabListHandler tabList) + { + tabList.init( this ); + this.tabList = tabList; + } + public void sendPacket(byte[] b) { ch.write( b ); diff --git a/proxy/src/main/java/net/md_5/bungee/tablist/Custom.java b/proxy/src/main/java/net/md_5/bungee/tablist/Custom.java index 6600e04f..2e2a2b1e 100644 --- a/proxy/src/main/java/net/md_5/bungee/tablist/Custom.java +++ b/proxy/src/main/java/net/md_5/bungee/tablist/Custom.java @@ -4,11 +4,11 @@ import com.google.common.base.Preconditions; import java.util.Collection; import java.util.HashSet; import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.tab.TabAPI; +import net.md_5.bungee.api.tab.CustomTabList; import net.md_5.bungee.api.tab.TabListAdapter; import net.md_5.bungee.protocol.packet.PacketC9PlayerListItem; -public class Custom extends TabListAdapter implements TabAPI +public class Custom extends TabListAdapter implements CustomTabList { private static final int ROWS = 20;