From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: DigitalRegent Date: Sat, 11 Apr 2020 13:10:58 +0200 Subject: [PATCH] Brand support diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java index eae8ba055b0cd595a31ce4d99622366ce2cc9bb0..6cb6a6d2cdf25c7db0e3d2c79af2c1002a04d14b 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -5,6 +5,7 @@ import com.google.common.primitives.Doubles; import com.google.common.primitives.Floats; import com.mojang.brigadier.ParseResults; import com.mojang.brigadier.StringReader; +import io.netty.buffer.Unpooled; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; import it.unimi.dsi.fastutil.ints.Int2ShortMap; @@ -114,6 +115,8 @@ public class PlayerConnection implements PacketListenerPlayIn { private static final int MAX_SIGN_LINE_LENGTH = Integer.getInteger("Paper.maxSignLength", 80); private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit + private String clientBrandName = null; // Paper - Brand name + public PlayerConnection(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) { this.minecraftServer = minecraftserver; this.networkManager = networkmanager; @@ -2833,6 +2836,8 @@ public class PlayerConnection implements PacketListenerPlayIn { private static final MinecraftKey CUSTOM_REGISTER = new MinecraftKey("register"); private static final MinecraftKey CUSTOM_UNREGISTER = new MinecraftKey("unregister"); + private static final MinecraftKey MINECRAFT_BRAND = new MinecraftKey("brand"); // Paper - Brand support + @Override public void a(PacketPlayInCustomPayload packetplayincustompayload) { PlayerConnectionUtils.ensureMainThread(packetplayincustompayload, this, this.player.getWorldServer()); @@ -2860,6 +2865,16 @@ public class PlayerConnection implements PacketListenerPlayIn { try { byte[] data = new byte[packetplayincustompayload.data.readableBytes()]; packetplayincustompayload.data.readBytes(data); + + // Paper start - Brand support + if (packetplayincustompayload.tag.equals(MINECRAFT_BRAND)) { + try { + this.clientBrandName = new PacketDataSerializer(Unpooled.copiedBuffer(data)).readUTF(256); + } catch (StringIndexOutOfBoundsException ex) { + this.clientBrandName = "illegal"; + } + } + // Paper end server.getMessenger().dispatchIncomingMessage(player.getBukkitEntity(), packetplayincustompayload.tag.toString(), data); } catch (Exception ex) { PlayerConnection.LOGGER.error("Couldn\'t dispatch custom payload", ex); @@ -2869,6 +2884,12 @@ public class PlayerConnection implements PacketListenerPlayIn { } + // Paper start - brand support + public String getClientBrandName() { + return clientBrandName; + } + // Paper end + public final boolean isDisconnected() { return (!this.player.joining && !this.networkManager.isConnected()) || this.processedDisconnect; // Paper } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 1fb88aefa052bc61a7421378a48bb7f0846d7fa9..01b554c3caf4322cfc403db24433e3db70b9c579 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2190,6 +2190,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end }; + // Paper start - brand support + @Override + public String getClientBrandName() { + return getHandle().playerConnection.getClientBrandName(); + } + // Paper end + public Player.Spigot spigot() { return spigot;