Fix Advancements packet parsing: sendsTelemetryEvent added in 1.20, deduplicate requirements reading

Agent-Logs-Url: https://github.com/MCCTeam/Minecraft-Console-Client/sessions/5da0ec37-35e2-4aae-b165-66ddd82df985

Co-authored-by: milutinke <441903+milutinke@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-03-29 21:07:17 +00:00
parent 7b3e5ee492
commit 5705df43bd

View file

@ -3204,37 +3204,27 @@ namespace MinecraftClient.Protocol.Handlers
if (protocolVersion < MC_1_20_6_Version)
{
// Builder-based: criteria names list, then requirements
// Builder-based (pre-1.20.6): criteria names list, then requirements
int criteriaCount = dataTypes.ReadNextVarInt(packetData);
for (int c = 0; c < criteriaCount; c++)
dataTypes.ReadNextString(packetData); // criterion name only, no trigger data
int reqGroupCount = dataTypes.ReadNextVarInt(packetData);
for (int g = 0; g < reqGroupCount; g++)
{
int groupSize = dataTypes.ReadNextVarInt(packetData);
var group = new List<string>(groupSize);
for (int s = 0; s < groupSize; s++)
group.Add(dataTypes.ReadNextString(packetData));
requirements.Add(group);
}
}
else
// Requirements (all versions)
int reqGroupCount = dataTypes.ReadNextVarInt(packetData);
for (int g = 0; g < reqGroupCount; g++)
{
// AdvancementHolder-based (1.20.6+): requirements only, then sendsTelemetryEvent
int reqGroupCount = dataTypes.ReadNextVarInt(packetData);
for (int g = 0; g < reqGroupCount; g++)
{
int groupSize = dataTypes.ReadNextVarInt(packetData);
var group = new List<string>(groupSize);
for (int s = 0; s < groupSize; s++)
group.Add(dataTypes.ReadNextString(packetData));
requirements.Add(group);
}
dataTypes.ReadNextBool(packetData); // sendsTelemetryEvent
int groupSize = dataTypes.ReadNextVarInt(packetData);
var group = new List<string>(groupSize);
for (int s = 0; s < groupSize; s++)
group.Add(dataTypes.ReadNextString(packetData));
requirements.Add(group);
}
// sendsTelemetryEvent (added in 1.20, present in all versions since)
if (protocolVersion >= MC_1_20_Version)
dataTypes.ReadNextBool(packetData);
addedDefinitions[id] = (title, description, type, isHidden, requirements);
}