diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index 0a3207f4..6870a6e2 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -1018,14 +1018,20 @@ namespace MinecraftClient.Protocol.Handlers string name = dataTypes.ReadNextString(packetData); // Player name int propNum = dataTypes.ReadNextVarInt(packetData); // Number of properties in the following array - Tuple[]? property = null; // Property: Tuple[]? properties = useProperty ? + new Tuple[propNum] : null; for (int p = 0; p < propNum; p++) { - string key = dataTypes.ReadNextString(packetData); // Name - string val = dataTypes.ReadNextString(packetData); // Value - + string propertyName = dataTypes.ReadNextString(packetData); // Name: String (32767) + string val = dataTypes.ReadNextString(packetData); // Value: String (32767) + string? propertySignature = null; if (dataTypes.ReadNextBool(packetData)) // Is Signed - dataTypes.ReadNextString(packetData); // Signature + propertySignature = dataTypes.ReadNextString(packetData); // Signature: String (32767) + if (useProperty) + properties![p] = new(propertyName, val, propertySignature); } int gameMode = dataTypes.ReadNextVarInt(packetData); // Gamemode @@ -1056,7 +1062,7 @@ namespace MinecraftClient.Protocol.Handlers } } - handler.OnPlayerJoin(new PlayerInfo(uuid, name, property, gameMode, ping, displayName, keyExpiration, publicKey, signature)); + handler.OnPlayerJoin(new PlayerInfo(uuid, name, properties, gameMode, ping, displayName, keyExpiration, publicKey, signature)); break; case 0x01: //Update gamemode handler.OnGamemodeUpdate(uuid, dataTypes.ReadNextVarInt(packetData)); diff --git a/MinecraftClient/Protocol/PlayerInfo.cs b/MinecraftClient/Protocol/PlayerInfo.cs index 46c50bf6..aa482b89 100644 --- a/MinecraftClient/Protocol/PlayerInfo.cs +++ b/MinecraftClient/Protocol/PlayerInfo.cs @@ -15,7 +15,7 @@ namespace MinecraftClient.Protocol public readonly string Name; // Tuple[]? Property; + public readonly Tuple[]? Property; public int Gamemode; @@ -31,7 +31,7 @@ namespace MinecraftClient.Protocol private byte[]? precedingSignature; - public PlayerInfo(Guid uuid, string name, Tuple[]? property, int gamemode, int ping, string? displayName, long? timeStamp, byte[]? publicKey, byte[]? signature) + public PlayerInfo(Guid uuid, string name, Tuple[]? property, int gamemode, int ping, string? displayName, long? timeStamp, byte[]? publicKey, byte[]? signature) { Uuid = uuid; Name = name;