Minecraft-Console-Client/MinecraftClient
BruceChen 99ac3d028a Dynamically parse minecraft:attribute registry from server RegistryData
In 1.20.6+, EntityProperties packets reference attributes by VarInt registry
IDs instead of string names. Previously, a hardcoded dictionary of 22 attribute
entries (matching the vanilla 1.20.6 registry) was used to map these IDs back
to names. This works for vanilla servers but would fail silently for modded
servers that add custom attributes — any unknown ID would be reported as
"unknown".

This commit replaces the hardcoded attribute dictionary with dynamic registry
parsing, following the same pattern already used for dimension_type and
chat_type registries:

- World.cs: Add static `attributeIdMap` field, `SetAttributeIdMap()` and
  `GetAttributeNameById()` methods for storing/querying attribute names by
  their VarInt registry IDs.

- Protocol18.cs (RegistryData handler): When the server sends a
  `minecraft:attribute` registry during the Configuration phase, parse all
  entries and store the ID→name mapping. The `minecraft:` prefix is stripped
  from entry names to match the format used in EntityProperties packets
  (e.g. "minecraft:generic.armor" → "generic.armor").

- Protocol18.cs (EntityProperties handler): Remove the hardcoded 22-entry
  `attributeDictionary` and use `World.GetAttributeNameById()` instead.
  Unknown IDs still fall back to "unknown" for safety.

Also closes issue #4 (Disconnect packet extra boolean) — verified that both
Play and Configuration phase Disconnect handlers already use `ReadNextChat()`
(NBT format since 1.20.4+), matching the 1.20.6 protocol spec. No code
changes needed; updated tracking document to mark as closed.

Made-with: Cursor
2026-03-19 01:12:18 +08:00
..
ChatBots Add FileInputBot for non-interactive debugging and fix NbtToString crash 2026-03-19 00:45:51 +08:00
CommandHandler [skip ci] Miscellaneous scripting QoL improvements and fixes (#2740) 2024-06-22 06:40:23 +08:00
Commands Handle non-interactive terminal environments gracefully 2026-03-19 00:11:13 +08:00
config Merge into master 2022-12-06 20:32:46 +08:00
Crypto Trim 2023-01-14 21:07:09 +08:00
Inventory Wire up 1.20.6 structured components to Item and fix GetItemSlot serialization 2026-03-19 00:34:10 +08:00
Logger Implement command completion suggestions. 2022-12-06 15:50:17 +08:00
Mapping Dynamically parse minecraft:attribute registry from server RegistryData 2026-03-19 01:12:18 +08:00
Properties Fix all warnings & Trim (#2226) 2022-10-02 18:31:08 +08:00
Protocol Dynamically parse minecraft:attribute registry from server RegistryData 2026-03-19 01:12:18 +08:00
Proxy Tooltip support & Bug fix 2022-12-11 13:00:19 +08:00
Resources Add Sentry Error Tracking (#2670) 2024-06-22 06:41:13 +08:00
Scripting Merge branch 'master' into 1.20.6 2025-12-02 00:06:16 +08:00
WinAPI Bug fix 2022-10-10 10:56:12 +08:00
AutoTimeout.cs Fix all warnings & Trim (#2226) 2022-10-02 18:31:08 +08:00
ColorHelper.cs legacy color support 2022-12-14 14:45:51 +08:00
Command.cs Bug fix 2022-12-11 16:30:45 +08:00
ConsoleIO.cs fixed typo in word heAlper lol 2024-04-16 21:21:08 +03:00
ExtensionMethods.cs Better translation 2022-10-17 20:00:33 +08:00
FileMonitor.cs Remove color code from text 2022-11-30 16:08:55 +08:00
INIFile.cs [skip ci] Normalize all line endings 2023-09-15 14:44:11 +08:00
Json.cs Re-added WebSocketChat bot and improved it, no longer using WebsocketSharp library 2023-05-27 19:46:28 +02:00
McClient.cs Add FileInputBot for non-interactive debugging and fix NbtToString crash 2026-03-19 00:45:51 +08:00
MinecraftClient.csproj Ported to .NET 8 2024-12-22 13:20:04 +01:00
Program.cs Handle non-interactive terminal environments gracefully 2026-03-19 00:11:13 +08:00
Settings.cs Temporarily removed WebSocket bot because of a false positive virus detection. I will make it in to a standalone bot later. 2025-05-22 13:56:27 +02:00
TaskWithDelay.cs Fix all warnings & Trim (#2226) 2022-10-02 18:31:08 +08:00
TaskWithResult.cs Fix all warnings & Trim (#2226) 2022-10-02 18:31:08 +08:00
UpgradeHelper.cs Make UpgradeHelper compliant with .NET RID catalog 2023-03-29 20:15:22 +08:00