mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-11-07 17:36:07 +00:00
Server Data and Profileless Chat message packets implemented. ChatPreview packet removed. Message Header packet set only to 1.19.2. Chat Message packet partially implemented.
This commit is contained in:
parent
d81a67762e
commit
bb160d6d84
2 changed files with 143 additions and 80 deletions
15
MinecraftClient/Mapping/MessageFilterType.cs
Normal file
15
MinecraftClient/Mapping/MessageFilterType.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MinecraftClient.Mapping
|
||||||
|
{
|
||||||
|
public enum MessageFilterType
|
||||||
|
{
|
||||||
|
PassThrough = 0,
|
||||||
|
FullyFiltered,
|
||||||
|
PartiallyFiltered
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -521,6 +521,51 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
handler.OnTextReceived(chat);
|
handler.OnTextReceived(chat);
|
||||||
}
|
}
|
||||||
else // 1.19.1 +
|
else // 1.19.1 +
|
||||||
|
{
|
||||||
|
if (protocolVersion >= MC_1_19_3_Version)
|
||||||
|
{
|
||||||
|
// Header section
|
||||||
|
Guid senderUUID = dataTypes.ReadNextUUID(packetData);
|
||||||
|
int index = dataTypes.ReadNextVarInt(packetData);
|
||||||
|
byte[]? messageSignature = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextByteArray(packetData) : null;
|
||||||
|
|
||||||
|
// Body
|
||||||
|
string message = dataTypes.ReadNextString(packetData);
|
||||||
|
long timestamp = dataTypes.ReadNextLong(packetData);
|
||||||
|
long salt = dataTypes.ReadNextLong(packetData);
|
||||||
|
|
||||||
|
// Previous Messages
|
||||||
|
int totalPreviousMessages = dataTypes.ReadNextVarInt(packetData);
|
||||||
|
List<Byte[]> previousMessageSignatures = new();
|
||||||
|
|
||||||
|
for (int i = 0; i < totalPreviousMessages; i++)
|
||||||
|
{
|
||||||
|
int messageId = dataTypes.ReadNextVarInt(packetData);
|
||||||
|
|
||||||
|
if (messageId > 0)
|
||||||
|
previousMessageSignatures.Add(dataTypes.ReadNextByteArray(packetData));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other
|
||||||
|
string? unsignedChatContent = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextString(packetData) : null;
|
||||||
|
|
||||||
|
MessageFilterType filterType = (MessageFilterType)dataTypes.ReadNextVarInt(packetData);
|
||||||
|
|
||||||
|
if (filterType == MessageFilterType.PartiallyFiltered)
|
||||||
|
dataTypes.ReadNextULongArray(packetData);
|
||||||
|
|
||||||
|
// Network Target
|
||||||
|
int chatType = dataTypes.ReadNextInt(packetData);
|
||||||
|
string networkName = dataTypes.ReadNextString(packetData);
|
||||||
|
bool networkTargetNamePresent = dataTypes.ReadNextBool(packetData);
|
||||||
|
string? networkTargetName = null;
|
||||||
|
|
||||||
|
if (networkTargetNamePresent)
|
||||||
|
networkTargetName = dataTypes.ReadNextString(packetData);
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
byte[]? precedingSignature = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextByteArray(packetData) : null;
|
byte[]? precedingSignature = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextByteArray(packetData) : null;
|
||||||
Guid senderUUID = dataTypes.ReadNextUUID(packetData);
|
Guid senderUUID = dataTypes.ReadNextUUID(packetData);
|
||||||
|
|
@ -544,8 +589,8 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
|
|
||||||
string? unsignedChatContent = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextString(packetData) : null;
|
string? unsignedChatContent = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextString(packetData) : null;
|
||||||
|
|
||||||
int filterEnum = dataTypes.ReadNextVarInt(packetData);
|
MessageFilterType filterEnum = (MessageFilterType)dataTypes.ReadNextVarInt(packetData);
|
||||||
if (filterEnum == 2) // PARTIALLY_FILTERED
|
if (filterEnum == MessageFilterType.PartiallyFiltered)
|
||||||
dataTypes.ReadNextULongArray(packetData);
|
dataTypes.ReadNextULongArray(packetData);
|
||||||
|
|
||||||
int chatTypeId = dataTypes.ReadNextVarInt(packetData);
|
int chatTypeId = dataTypes.ReadNextVarInt(packetData);
|
||||||
|
|
@ -597,6 +642,7 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
Acknowledge(chat);
|
Acknowledge(chat);
|
||||||
handler.OnTextReceived(chat);
|
handler.OnTextReceived(chat);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PacketTypesIn.CombatEvent:
|
case PacketTypesIn.CombatEvent:
|
||||||
// 1.8 - 1.16.5
|
// 1.8 - 1.16.5
|
||||||
|
|
@ -625,8 +671,8 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
);
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PacketTypesIn.MessageHeader:
|
case PacketTypesIn.MessageHeader: // 1.19.2 only
|
||||||
if (protocolVersion >= MC_1_19_2_Version)
|
if (protocolVersion == MC_1_19_2_Version)
|
||||||
{
|
{
|
||||||
byte[]? precedingSignature = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextByteArray(packetData) : null;
|
byte[]? precedingSignature = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextByteArray(packetData) : null;
|
||||||
Guid senderUUID = dataTypes.ReadNextUUID(packetData);
|
Guid senderUUID = dataTypes.ReadNextUUID(packetData);
|
||||||
|
|
@ -654,6 +700,7 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PacketTypesIn.Respawn:
|
case PacketTypesIn.Respawn:
|
||||||
string? dimensionTypeNameRespawn = null;
|
string? dimensionTypeNameRespawn = null;
|
||||||
|
|
@ -1104,7 +1151,11 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
if (hasIcon)
|
if (hasIcon)
|
||||||
iconBase64 = dataTypes.ReadNextString(packetData);
|
iconBase64 = dataTypes.ReadNextString(packetData);
|
||||||
|
|
||||||
bool previewsChat = dataTypes.ReadNextBool(packetData);
|
|
||||||
|
bool previewsChat = false;
|
||||||
|
|
||||||
|
if (protocolVersion < MC_1_19_3_Version)
|
||||||
|
dataTypes.ReadNextBool(packetData);
|
||||||
|
|
||||||
handler.OnServerDataRecived(hasMotd, motd, hasIcon, iconBase64, previewsChat);
|
handler.OnServerDataRecived(hasMotd, motd, hasIcon, iconBase64, previewsChat);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1134,25 +1185,22 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
case PacketTypesIn.SetDisplayChatPreview:
|
case PacketTypesIn.SetDisplayChatPreview:
|
||||||
bool previewsChatSetting = dataTypes.ReadNextBool(packetData);
|
bool previewsChatSetting = dataTypes.ReadNextBool(packetData);
|
||||||
handler.OnChatPreviewSettingUpdate(previewsChatSetting);
|
handler.OnChatPreviewSettingUpdate(previewsChatSetting);
|
||||||
break;
|
|
||||||
case PacketTypesIn.ChatPreview:
|
|
||||||
int queryID = dataTypes.ReadNextInt(packetData);
|
|
||||||
bool componentIsPresent = dataTypes.ReadNextBool(packetData);
|
|
||||||
|
|
||||||
// Currently noy implemented
|
|
||||||
log.Debug("New chat preview: ");
|
|
||||||
log.Debug(">> Query ID: " + queryID);
|
|
||||||
log.Debug(">> Component is present: " + componentIsPresent);
|
|
||||||
if (componentIsPresent)
|
|
||||||
{
|
|
||||||
string message = dataTypes.ReadNextString(packetData);
|
|
||||||
log.Debug(">> Component: " + ChatParser.ParseText(message));
|
|
||||||
//handler.OnTextReceived(message, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PacketTypesIn.ChatSuggestions:
|
case PacketTypesIn.ChatSuggestions:
|
||||||
break;
|
break;
|
||||||
|
case PacketTypesIn.ProfilelessChatMessage:
|
||||||
|
string message_ = dataTypes.ReadNextString(packetData);
|
||||||
|
int messageType_ = dataTypes.ReadNextVarInt(packetData);
|
||||||
|
string messageName = dataTypes.ReadNextString(packetData);
|
||||||
|
bool hasTargetName = dataTypes.ReadNextBool(packetData);
|
||||||
|
|
||||||
|
string? targetName_ = null;
|
||||||
|
|
||||||
|
if (hasTargetName)
|
||||||
|
targetName_ = dataTypes.ReadNextString(packetData);
|
||||||
|
|
||||||
|
// Not clear for what this is used as the time of writting
|
||||||
|
break;
|
||||||
case PacketTypesIn.MapChunkBulk:
|
case PacketTypesIn.MapChunkBulk:
|
||||||
if (protocolVersion < MC_1_9_Version && handler.GetTerrainEnabled())
|
if (protocolVersion < MC_1_9_Version && handler.GetTerrainEnabled())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue