Minecraft-Console-Client/MinecraftClient
BruceChen 8eac21b4a4 Wire up 1.20.6 structured components to Item and fix GetItemSlot serialization
In 1.20.6+, items use structured components instead of NBT for metadata.
Previously, ReadNextItemSlot parsed the components but never stored them
on the Item instance, leaving DisplayName/Lores/Damage/Enchantments all
empty. GetItemSlot also still used the pre-1.20.6 format (bool + VarInt +
byte + NBT), causing the server to reject any item operation packets.

Changes:

Item.cs:
- Add List<StructuredComponent>? Components field to hold the raw
  component list for round-trip serialization
- DisplayName property: read from CustomNameComponent (with
  ItemNameComponent as fallback) when Components is present
- Lores property: read from LoreNameComponent1206 when Components is
  present
- Damage property: read from DamageComponent when Components is present
- Add EnchantmentList property: read from EnchantmentsComponent (covers
  both normal and StoredEnchantmentsComponent for enchanted books)
- ToFullString(): use EnchantmentList with EnchantmentMapping for display
  when available, fall back to NBT path for older versions
- Add CloneWithCount() method that preserves both NBT and Components

DataTypes.cs - ReadNextItemSlot:
- Assign parsed strcturedComponentsToAdd to item.Components

DataTypes.cs - GetItemSlot:
- Add 1.20.6+ branch: write VarInt(count) + VarInt(itemId) + component
  counts + serialized components (using each component's TypeId and
  Serialize() method)
- Empty slot sends VarInt(0) per the 1.20.6 protocol spec

StructuredComponent.cs:
- Add int TypeId property (default -1) to store the registry type ID
  assigned during parsing, enabling round-trip serialization

StructuredComponentRegistry.cs:
- Set component.TypeId = id after instantiation in ParseComponent()

McClient.cs:
- Replace manual Item constructor calls (new Item(type, count, nbt))
  with Item.CloneWithCount() to preserve Components during inventory
  operations like slot moves, stack splits, and right-click placement

Made-with: Cursor
2026-03-19 00:34:10 +08:00
..
ChatBots Handle non-interactive terminal environments gracefully 2026-03-19 00:11:13 +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 Fix RegistryData parsing and KnownDataPacks negotiation for 1.20.6 2026-03-19 00:13:22 +08:00
Properties Fix all warnings & Trim (#2226) 2022-10-02 18:31:08 +08:00
Protocol Wire up 1.20.6 structured components to Item and fix GetItemSlot serialization 2026-03-19 00:34:10 +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 Wire up 1.20.6 structured components to Item and fix GetItemSlot serialization 2026-03-19 00:34:10 +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