mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Fix entity handle & Try fix message singing again
This commit is contained in:
parent
50dd5a3ba3
commit
950d9bcfdc
3 changed files with 198 additions and 130 deletions
|
|
@ -684,23 +684,73 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
case 15: // Particle
|
case 15: // Particle
|
||||||
// Currecutly not handled. Reading data only
|
// Currecutly not handled. Reading data only
|
||||||
int ParticleID = ReadNextVarInt(cache);
|
int ParticleID = ReadNextVarInt(cache);
|
||||||
switch (ParticleID)
|
// Need to check the exact version where the change occurred!!!!!
|
||||||
|
if (protocolversion >= Protocol18Handler.MC_1_19_3_Version)
|
||||||
{
|
{
|
||||||
case 3:
|
switch (ParticleID)
|
||||||
ReadNextVarInt(cache);
|
{
|
||||||
break;
|
case 2:
|
||||||
case 14:
|
ReadNextVarInt(cache);
|
||||||
ReadNextFloat(cache);
|
break;
|
||||||
ReadNextFloat(cache);
|
case 3:
|
||||||
ReadNextFloat(cache);
|
ReadNextVarInt(cache);
|
||||||
ReadNextFloat(cache);
|
break;
|
||||||
break;
|
case 14:
|
||||||
case 23:
|
ReadNextFloat(cache);
|
||||||
ReadNextVarInt(cache);
|
ReadNextFloat(cache);
|
||||||
break;
|
ReadNextFloat(cache);
|
||||||
case 32:
|
ReadNextFloat(cache);
|
||||||
ReadNextItemSlot(cache, itemPalette);
|
break;
|
||||||
break;
|
case 15:
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
ReadNextVarInt(cache);
|
||||||
|
break;
|
||||||
|
case 35:
|
||||||
|
ReadNextItemSlot(cache, itemPalette);
|
||||||
|
break;
|
||||||
|
case 36:
|
||||||
|
string positionSourceType = ReadNextString(cache);
|
||||||
|
if (positionSourceType == "minecraft:block")
|
||||||
|
{
|
||||||
|
ReadNextLocation(cache);
|
||||||
|
}
|
||||||
|
else if (positionSourceType == "minecraft:entity")
|
||||||
|
{
|
||||||
|
ReadNextVarInt(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
}
|
||||||
|
ReadNextVarInt(cache);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (ParticleID)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
ReadNextVarInt(cache);
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
ReadNextFloat(cache);
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
ReadNextVarInt(cache);
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
ReadNextItemSlot(cache, itemPalette);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16: // Villager Data (3x VarInt)
|
case 16: // Villager Data (3x VarInt)
|
||||||
|
|
@ -730,7 +780,10 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
if (protocolversion <= Protocol18Handler.MC_1_19_Version)
|
if (protocolversion <= Protocol18Handler.MC_1_19_Version)
|
||||||
value = ReadNextVarInt(cache);
|
value = ReadNextVarInt(cache);
|
||||||
else
|
else
|
||||||
value = null; // Dimension and blockPos, currently not in use
|
{
|
||||||
|
// Dimension and blockPos, currently not in use
|
||||||
|
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 22: // Painting Variant
|
case 22: // Painting Variant
|
||||||
value = ReadNextVarInt(cache);
|
value = ReadNextVarInt(cache);
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,9 @@ namespace MinecraftClient.Protocol.Handlers.packet.s2c
|
||||||
|
|
||||||
private static void CollectSignArguments(int NodeIdx, string command, List<Tuple<string, string>> arguments)
|
private static void CollectSignArguments(int NodeIdx, string command, List<Tuple<string, string>> arguments)
|
||||||
{
|
{
|
||||||
|
if (Nodes.Length <= NodeIdx)
|
||||||
|
return;
|
||||||
|
|
||||||
CommandNode node = Nodes[NodeIdx];
|
CommandNode node = Nodes[NodeIdx];
|
||||||
string last_arg = command;
|
string last_arg = command;
|
||||||
switch (node.Flags & 0x03)
|
switch (node.Flags & 0x03)
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
private readonly BlockingCollection<Tuple<int, Queue<byte>>> packetQueue = new();
|
private readonly BlockingCollection<Tuple<int, Queue<byte>>> packetQueue = new();
|
||||||
private float LastYaw, LastPitch;
|
private float LastYaw, LastPitch;
|
||||||
|
|
||||||
|
private object MessageSigningLock = new();
|
||||||
private Guid chatUuid = Guid.Empty;
|
private Guid chatUuid = Guid.Empty;
|
||||||
private int pendingAcknowledgments = 0, messageIndex = 0;
|
private int pendingAcknowledgments = 0, messageIndex = 0;
|
||||||
private LastSeenMessagesCollector lastSeenMessagesCollector;
|
private LastSeenMessagesCollector lastSeenMessagesCollector;
|
||||||
|
|
@ -696,11 +697,15 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatMessage chat = new(message, false, chatTypeId, senderUUID, unsignedChatContent, senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult);
|
ChatMessage chat = new(message, false, chatTypeId, senderUUID, unsignedChatContent, senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult);
|
||||||
if (isOnlineMode && !chat.LacksSender() && messageSignature != null)
|
lock (MessageSigningLock)
|
||||||
Acknowledge(chat);
|
Acknowledge(chat);
|
||||||
handler.OnTextReceived(chat);
|
handler.OnTextReceived(chat);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case PacketTypesIn.HideMessage:
|
||||||
|
byte[] hideMessageSignature = dataTypes.ReadNextByteArray(packetData);
|
||||||
|
ConsoleIO.WriteLine($"HideMessage was not processed! (SigLen={hideMessageSignature.Length})");
|
||||||
|
break;
|
||||||
case PacketTypesIn.SystemChat:
|
case PacketTypesIn.SystemChat:
|
||||||
string systemMessage = dataTypes.ReadNextString(packetData);
|
string systemMessage = dataTypes.ReadNextString(packetData);
|
||||||
if (protocolVersion >= MC_1_19_3_Version)
|
if (protocolVersion >= MC_1_19_3_Version)
|
||||||
|
|
@ -2524,13 +2529,14 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
{
|
{
|
||||||
if (protocolVersion >= MC_1_19_3_Version)
|
if (protocolVersion >= MC_1_19_3_Version)
|
||||||
{
|
{
|
||||||
lastSeenMessagesCollector.Add_1_19_3(entry, true);
|
if (lastSeenMessagesCollector.Add_1_19_3(entry, true))
|
||||||
lastReceivedMessage = null;
|
|
||||||
if (lastSeenMessagesCollector.messageCount > 64)
|
|
||||||
{
|
{
|
||||||
int messageCount = lastSeenMessagesCollector.ResetMessageCount();
|
if (lastSeenMessagesCollector.messageCount > 64)
|
||||||
if (messageCount > 0)
|
{
|
||||||
SendMessageAcknowledgment(messageCount);
|
int messageCount = lastSeenMessagesCollector.ResetMessageCount();
|
||||||
|
if (messageCount > 0)
|
||||||
|
SendMessageAcknowledgment(messageCount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -2561,74 +2567,77 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LastSeenMessageList.Acknowledgment? acknowledgment_1_19_2 =
|
|
||||||
(protocolVersion == MC_1_19_2_Version) ? ConsumeAcknowledgment() : null;
|
|
||||||
|
|
||||||
(LastSeenMessageList.AcknowledgedMessage[] acknowledgment_1_19_3, byte[] bitset_1_19_3, int messageCount_1_19_3) =
|
|
||||||
(protocolVersion >= MC_1_19_3_Version) ? lastSeenMessagesCollector.Collect_1_19_3() : new(Array.Empty<LastSeenMessageList.AcknowledgedMessage>(), Array.Empty<byte>(), 0);
|
|
||||||
|
|
||||||
List<byte> fields = new();
|
|
||||||
|
|
||||||
// Command: String
|
|
||||||
fields.AddRange(dataTypes.GetString(command));
|
|
||||||
|
|
||||||
// Timestamp: Instant(Long)
|
|
||||||
DateTimeOffset timeNow = DateTimeOffset.UtcNow;
|
|
||||||
fields.AddRange(DataTypes.GetLong(timeNow.ToUnixTimeMilliseconds()));
|
|
||||||
|
|
||||||
List<Tuple<string, string>>? needSigned = null; // List< Argument Name, Argument Value >
|
List<Tuple<string, string>>? needSigned = null; // List< Argument Name, Argument Value >
|
||||||
if (playerKeyPair != null && isOnlineMode && protocolVersion >= MC_1_19_Version
|
if (playerKeyPair != null && isOnlineMode && protocolVersion >= MC_1_19_Version
|
||||||
&& Config.Signature.LoginWithSecureProfile && Config.Signature.SignMessageInCommand)
|
&& Config.Signature.LoginWithSecureProfile && Config.Signature.SignMessageInCommand)
|
||||||
needSigned = DeclareCommands.CollectSignArguments(command);
|
needSigned = DeclareCommands.CollectSignArguments(command);
|
||||||
|
|
||||||
if (needSigned == null || needSigned!.Count == 0)
|
lock (MessageSigningLock)
|
||||||
{
|
{
|
||||||
fields.AddRange(DataTypes.GetLong(0)); // Salt: Long
|
LastSeenMessageList.Acknowledgment? acknowledgment_1_19_2 =
|
||||||
fields.AddRange(DataTypes.GetVarInt(0)); // Signature Length: VarInt
|
(protocolVersion == MC_1_19_2_Version) ? ConsumeAcknowledgment() : null;
|
||||||
}
|
|
||||||
else
|
(LastSeenMessageList.AcknowledgedMessage[] acknowledgment_1_19_3, byte[] bitset_1_19_3, int messageCount_1_19_3) =
|
||||||
{
|
(protocolVersion >= MC_1_19_3_Version) ? lastSeenMessagesCollector.Collect_1_19_3() : new(Array.Empty<LastSeenMessageList.AcknowledgedMessage>(), Array.Empty<byte>(), 0);
|
||||||
Guid uuid = handler.GetUserUuid();
|
|
||||||
byte[] salt = GenerateSalt();
|
List<byte> fields = new();
|
||||||
fields.AddRange(salt); // Salt: Long
|
|
||||||
fields.AddRange(DataTypes.GetVarInt(needSigned.Count)); // Signature Length: VarInt
|
// Command: String
|
||||||
foreach ((string argName, string message) in needSigned)
|
fields.AddRange(dataTypes.GetString(command));
|
||||||
|
|
||||||
|
// Timestamp: Instant(Long)
|
||||||
|
DateTimeOffset timeNow = DateTimeOffset.UtcNow;
|
||||||
|
fields.AddRange(DataTypes.GetLong(timeNow.ToUnixTimeMilliseconds()));
|
||||||
|
|
||||||
|
if (needSigned == null || needSigned!.Count == 0)
|
||||||
{
|
{
|
||||||
fields.AddRange(dataTypes.GetString(argName)); // Argument name: String
|
fields.AddRange(DataTypes.GetLong(0)); // Salt: Long
|
||||||
|
fields.AddRange(DataTypes.GetVarInt(0)); // Signature Length: VarInt
|
||||||
byte[] sign;
|
|
||||||
if (protocolVersion == MC_1_19_Version)
|
|
||||||
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt);
|
|
||||||
else if (protocolVersion == MC_1_19_2_Version)
|
|
||||||
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt, acknowledgment_1_19_2!.lastSeen);
|
|
||||||
else // protocolVersion >= MC_1_19_3_Version
|
|
||||||
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, chatUuid, messageIndex++, timeNow, ref salt, acknowledgment_1_19_3);
|
|
||||||
|
|
||||||
if (protocolVersion <= MC_1_19_2_Version)
|
|
||||||
fields.AddRange(DataTypes.GetVarInt(sign.Length)); // Signature length: VarInt
|
|
||||||
|
|
||||||
fields.AddRange(sign); // Signature: Byte Array
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Guid uuid = handler.GetUserUuid();
|
||||||
|
byte[] salt = GenerateSalt();
|
||||||
|
fields.AddRange(salt); // Salt: Long
|
||||||
|
fields.AddRange(DataTypes.GetVarInt(needSigned.Count)); // Signature Length: VarInt
|
||||||
|
foreach ((string argName, string message) in needSigned)
|
||||||
|
{
|
||||||
|
fields.AddRange(dataTypes.GetString(argName)); // Argument name: String
|
||||||
|
|
||||||
|
byte[] sign;
|
||||||
|
if (protocolVersion == MC_1_19_Version)
|
||||||
|
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt);
|
||||||
|
else if (protocolVersion == MC_1_19_2_Version)
|
||||||
|
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt, acknowledgment_1_19_2!.lastSeen);
|
||||||
|
else // protocolVersion >= MC_1_19_3_Version
|
||||||
|
sign = playerKeyPair!.PrivateKey.SignMessage(message, uuid, chatUuid, messageIndex++, timeNow, ref salt, acknowledgment_1_19_3);
|
||||||
|
|
||||||
|
if (protocolVersion <= MC_1_19_2_Version)
|
||||||
|
fields.AddRange(DataTypes.GetVarInt(sign.Length)); // Signature length: VarInt
|
||||||
|
|
||||||
|
fields.AddRange(sign); // Signature: Byte Array
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (protocolVersion <= MC_1_19_2_Version)
|
||||||
|
fields.AddRange(dataTypes.GetBool(false)); // Signed Preview: Boolean
|
||||||
|
|
||||||
|
if (protocolVersion == MC_1_19_2_Version)
|
||||||
|
{
|
||||||
|
// Message Acknowledgment (1.19.2)
|
||||||
|
fields.AddRange(dataTypes.GetAcknowledgment(acknowledgment_1_19_2!, isOnlineMode && Config.Signature.LoginWithSecureProfile));
|
||||||
|
}
|
||||||
|
else if (protocolVersion >= MC_1_19_3_Version)
|
||||||
|
{
|
||||||
|
// message count
|
||||||
|
fields.AddRange(DataTypes.GetVarInt(messageCount_1_19_3));
|
||||||
|
|
||||||
|
// Acknowledged: BitSet
|
||||||
|
fields.AddRange(bitset_1_19_3);
|
||||||
|
}
|
||||||
|
|
||||||
|
SendPacket(PacketTypesOut.ChatCommand, fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (protocolVersion <= MC_1_19_2_Version)
|
|
||||||
fields.AddRange(dataTypes.GetBool(false)); // Signed Preview: Boolean
|
|
||||||
|
|
||||||
if (protocolVersion == MC_1_19_2_Version)
|
|
||||||
{
|
|
||||||
// Message Acknowledgment (1.19.2)
|
|
||||||
fields.AddRange(dataTypes.GetAcknowledgment(acknowledgment_1_19_2!, isOnlineMode && Config.Signature.LoginWithSecureProfile));
|
|
||||||
}
|
|
||||||
else if (protocolVersion >= MC_1_19_3_Version)
|
|
||||||
{
|
|
||||||
// message count
|
|
||||||
fields.AddRange(DataTypes.GetVarInt(messageCount_1_19_3));
|
|
||||||
|
|
||||||
// Acknowledged: BitSet
|
|
||||||
fields.AddRange(bitset_1_19_3);
|
|
||||||
}
|
|
||||||
|
|
||||||
SendPacket(PacketTypesOut.ChatCommand, fields);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (SocketException) { return false; }
|
catch (SocketException) { return false; }
|
||||||
|
|
@ -2660,62 +2669,65 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
|
|
||||||
if (protocolVersion >= MC_1_19_Version)
|
if (protocolVersion >= MC_1_19_Version)
|
||||||
{
|
{
|
||||||
LastSeenMessageList.Acknowledgment? acknowledgment_1_19_2 =
|
lock (MessageSigningLock)
|
||||||
|
{
|
||||||
|
LastSeenMessageList.Acknowledgment? acknowledgment_1_19_2 =
|
||||||
(protocolVersion == MC_1_19_2_Version) ? ConsumeAcknowledgment() : null;
|
(protocolVersion == MC_1_19_2_Version) ? ConsumeAcknowledgment() : null;
|
||||||
|
|
||||||
(LastSeenMessageList.AcknowledgedMessage[] acknowledgment_1_19_3, byte[] bitset_1_19_3, int messageCount_1_19_3) =
|
(LastSeenMessageList.AcknowledgedMessage[] acknowledgment_1_19_3, byte[] bitset_1_19_3, int messageCount_1_19_3) =
|
||||||
(protocolVersion >= MC_1_19_3_Version) ? lastSeenMessagesCollector.Collect_1_19_3() : new(Array.Empty<LastSeenMessageList.AcknowledgedMessage>(), Array.Empty<byte>(), 0);
|
(protocolVersion >= MC_1_19_3_Version) ? lastSeenMessagesCollector.Collect_1_19_3() : new(Array.Empty<LastSeenMessageList.AcknowledgedMessage>(), Array.Empty<byte>(), 0);
|
||||||
|
|
||||||
// Timestamp: Instant(Long)
|
// Timestamp: Instant(Long)
|
||||||
DateTimeOffset timeNow = DateTimeOffset.UtcNow;
|
DateTimeOffset timeNow = DateTimeOffset.UtcNow;
|
||||||
fields.AddRange(DataTypes.GetLong(timeNow.ToUnixTimeMilliseconds()));
|
fields.AddRange(DataTypes.GetLong(timeNow.ToUnixTimeMilliseconds()));
|
||||||
|
|
||||||
if (!isOnlineMode || playerKeyPair == null || !Config.Signature.LoginWithSecureProfile || !Config.Signature.SignChat)
|
if (!isOnlineMode || playerKeyPair == null || !Config.Signature.LoginWithSecureProfile || !Config.Signature.SignChat)
|
||||||
{
|
{
|
||||||
fields.AddRange(DataTypes.GetLong(0)); // Salt: Long
|
fields.AddRange(DataTypes.GetLong(0)); // Salt: Long
|
||||||
if (protocolVersion < MC_1_19_3_Version)
|
if (protocolVersion < MC_1_19_3_Version)
|
||||||
fields.AddRange(DataTypes.GetVarInt(0)); // Signature Length: VarInt (1.19 - 1.19.2)
|
fields.AddRange(DataTypes.GetVarInt(0)); // Signature Length: VarInt (1.19 - 1.19.2)
|
||||||
|
else
|
||||||
|
fields.AddRange(dataTypes.GetBool(false)); // Has signature: bool (1.19.3)
|
||||||
|
}
|
||||||
else
|
else
|
||||||
fields.AddRange(dataTypes.GetBool(false)); // Has signature: bool (1.19.3)
|
{
|
||||||
}
|
// Salt: Long
|
||||||
else
|
byte[] salt = GenerateSalt();
|
||||||
{
|
fields.AddRange(salt);
|
||||||
// Salt: Long
|
|
||||||
byte[] salt = GenerateSalt();
|
|
||||||
fields.AddRange(salt);
|
|
||||||
|
|
||||||
// Signature Length & Signature: (VarInt) and Byte Array
|
// Signature Length & Signature: (VarInt) and Byte Array
|
||||||
Guid playerUuid = handler.GetUserUuid();
|
Guid playerUuid = handler.GetUserUuid();
|
||||||
byte[] sign;
|
byte[] sign;
|
||||||
if (protocolVersion == MC_1_19_Version) // 1.19.1 or lower
|
if (protocolVersion == MC_1_19_Version) // 1.19.1 or lower
|
||||||
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, timeNow, ref salt);
|
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, timeNow, ref salt);
|
||||||
else if (protocolVersion == MC_1_19_2_Version) // 1.19.2
|
else if (protocolVersion == MC_1_19_2_Version) // 1.19.2
|
||||||
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, timeNow, ref salt, acknowledgment_1_19_2!.lastSeen);
|
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, timeNow, ref salt, acknowledgment_1_19_2!.lastSeen);
|
||||||
else // protocolVersion >= MC_1_19_3_Version
|
else // protocolVersion >= MC_1_19_3_Version
|
||||||
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, chatUuid, messageIndex++, timeNow, ref salt, acknowledgment_1_19_3);
|
sign = playerKeyPair.PrivateKey.SignMessage(message, playerUuid, chatUuid, messageIndex++, timeNow, ref salt, acknowledgment_1_19_3);
|
||||||
|
|
||||||
|
if (protocolVersion >= MC_1_19_3_Version)
|
||||||
|
fields.AddRange(dataTypes.GetBool(true));
|
||||||
|
else
|
||||||
|
fields.AddRange(DataTypes.GetVarInt(sign.Length));
|
||||||
|
fields.AddRange(sign);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (protocolVersion <= MC_1_19_2_Version)
|
||||||
|
fields.AddRange(dataTypes.GetBool(false)); // Signed Preview: Boolean
|
||||||
|
|
||||||
if (protocolVersion >= MC_1_19_3_Version)
|
if (protocolVersion >= MC_1_19_3_Version)
|
||||||
fields.AddRange(dataTypes.GetBool(true));
|
{
|
||||||
else
|
// message count
|
||||||
fields.AddRange(DataTypes.GetVarInt(sign.Length));
|
fields.AddRange(DataTypes.GetVarInt(messageCount_1_19_3));
|
||||||
fields.AddRange(sign);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (protocolVersion <= MC_1_19_2_Version)
|
// Acknowledged: BitSet
|
||||||
fields.AddRange(dataTypes.GetBool(false)); // Signed Preview: Boolean
|
fields.AddRange(bitset_1_19_3);
|
||||||
|
}
|
||||||
if (protocolVersion >= MC_1_19_3_Version)
|
else if (protocolVersion == MC_1_19_2_Version)
|
||||||
{
|
{
|
||||||
// message count
|
// Message Acknowledgment
|
||||||
fields.AddRange(DataTypes.GetVarInt(messageCount_1_19_3));
|
fields.AddRange(dataTypes.GetAcknowledgment(acknowledgment_1_19_2!, isOnlineMode && Config.Signature.LoginWithSecureProfile));
|
||||||
|
}
|
||||||
// Acknowledged: BitSet
|
|
||||||
fields.AddRange(bitset_1_19_3);
|
|
||||||
}
|
|
||||||
else if (protocolVersion == MC_1_19_2_Version)
|
|
||||||
{
|
|
||||||
// Message Acknowledgment
|
|
||||||
fields.AddRange(dataTypes.GetAcknowledgment(acknowledgment_1_19_2!, isOnlineMode && Config.Signature.LoginWithSecureProfile));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendPacket(PacketTypesOut.ChatMessage, fields);
|
SendPacket(PacketTypesOut.ChatMessage, fields);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue