feat: load chat translations from server resource packs

Agent-Logs-Url: https://github.com/MCCTeam/Minecraft-Console-Client/sessions/d7467a13-d1ff-4cd6-a332-1ac389c445da

Co-authored-by: milutinke <441903+milutinke@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-05-04 12:05:55 +00:00 committed by GitHub
parent 9c47456455
commit 34f45543c3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 193 additions and 9 deletions

View file

@ -580,7 +580,9 @@ namespace MinecraftClient.Protocol.Handlers
case ConfigurationPacketTypesIn.RemoveResourcePack:
if (dataTypes.ReadNextBool(packetData)) // Has UUID
dataTypes.ReadNextUUID(packetData); // UUID
ChatParser.RemoveResourcePackTranslations(dataTypes.ReadNextUUID(packetData).ToString("D")); // UUID
else
ChatParser.ClearResourcePackTranslations();
break;
case ConfigurationPacketTypesIn.ResourcePack:
@ -703,6 +705,7 @@ namespace MinecraftClient.Protocol.Handlers
var url = dataTypes.ReadNextString(packetData);
var hash = dataTypes.ReadNextString(packetData);
string packIdentifier = uuid != Guid.Empty ? uuid.ToString("D") : (hash.Length == 40 ? hash : url);
if (protocolVersion >= MC_1_17_Version)
{
@ -740,6 +743,8 @@ namespace MinecraftClient.Protocol.Handlers
SendPacket(PacketTypesOut.ResourcePackStatus, acceptedResourcePackData); // Accepted
SendPacket(PacketTypesOut.ResourcePackStatus, loadedResourcePackData); // Successfully loaded
}
ChatParser.LoadResourcePackTranslations(packIdentifier, url, hash);
}
private bool HandlePlayPackets(int packetId, Queue<byte> packetData)
@ -2447,7 +2452,9 @@ namespace MinecraftClient.Protocol.Handlers
break;
case PacketTypesIn.RemoveResourcePack:
if (dataTypes.ReadNextBool(packetData)) // Has UUID
dataTypes.ReadNextUUID(packetData); // UUID
ChatParser.RemoveResourcePackTranslations(dataTypes.ReadNextUUID(packetData).ToString("D")); // UUID
else
ChatParser.ClearResourcePackTranslations();
break;
case PacketTypesIn.ResourcePackSend:
HandleResourcePackPacket(packetData);