From 89069a362dd82c4ba281b33cb7c4c9e59cbe27f2 Mon Sep 17 00:00:00 2001 From: Outfluencer Date: Mon, 21 Apr 2025 08:28:16 +0200 Subject: [PATCH] #3823: Add client brand API --- .../net/md_5/bungee/api/connection/ProxiedPlayer.java | 8 ++++++++ proxy/src/main/java/net/md_5/bungee/UserConnection.java | 5 +++++ .../java/net/md_5/bungee/connection/InitialHandler.java | 4 ++++ 3 files changed, 17 insertions(+) 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 0fe647b8..17dd8694 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 @@ -382,4 +382,12 @@ public interface ProxiedPlayer extends Connection, CommandSender */ @ApiStatus.Experimental void transfer(String host, int port); + + /** + * Gets the client brand of this player. + * If the player has not sent a brand packet yet, it will return null. + * + * @return the brand of the client, or null if not received yet + */ + String getClientBrand(); } 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 84ca1eae..35e59709 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -778,6 +778,11 @@ public final class UserConnection implements ProxiedPlayer return this.getPendingConnection().getExtraDataInHandshake(); } + public String getClientBrand() + { + return getPendingConnection().getClientBrand(); + } + public void setCompressionThreshold(int compressionThreshold) { if ( !ch.isClosing() && this.compressionThreshold == -1 && compressionThreshold >= 0 ) diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java index e4c92ef7..fa1f2bef 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java @@ -2,6 +2,7 @@ package net.md_5.bungee.connection; import com.google.common.base.Preconditions; import com.google.gson.Gson; +import io.netty.buffer.Unpooled; import java.math.BigInteger; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -97,6 +98,8 @@ public class InitialHandler extends PacketHandler implements PendingConnection @Getter private PluginMessage brandMessage; @Getter + private String clientBrand; + @Getter private final Set registeredChannels = new HashSet<>(); private State thisState = State.HANDSHAKE; private int loginPayloadId; @@ -849,6 +852,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection } else if ( input.getTag().equals( "MC|Brand" ) || input.getTag().equals( "minecraft:brand" ) ) { brandMessage = input; + clientBrand = DefinedPacket.readString( Unpooled.wrappedBuffer( input.getData() ) ); } }