using System.Collections.Generic; using MinecraftClient.Inventory; using MinecraftClient.Inventory.ItemPalettes; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; /// /// 1.21.5+ enchantments: showInTooltip removed from wire format (moved to tooltip_display component). /// Wire: VarInt count, then (VarInt holder_id + VarInt level) per entry. No trailing boolean. /// public class EnchantmentsComponent1215(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EnchantmentsComponent(dataTypes, itemPalette, subComponentRegistry) { public override void Parse(Queue data) { NumberOfEnchantments = DataTypes.ReadNextVarInt(data); for (var i = 0; i < NumberOfEnchantments; i++) { var registryId = DataTypes.ReadNextVarInt(data); var level = DataTypes.ReadNextVarInt(data); Enchantments.Add(new Enchantment(EnchantmentMapping.GetEnchantmentByRegistryId1206(DataTypes.ProtocolVersion, registryId), level)); } } public override Queue Serialize() { var data = new List(); data.AddRange(DataTypes.GetVarInt(Enchantments.Count)); foreach (var enchantment in Enchantments) { data.AddRange(DataTypes.GetVarInt(EnchantmentMapping.GetRegistryId1206ByEnchantment(DataTypes.ProtocolVersion, enchantment.Type))); data.AddRange(DataTypes.GetVarInt(enchantment.Level)); } return new Queue(data); } }