using System; using System.Collections.Generic; using System.Linq; using MinecraftClient.Inventory; using MinecraftClient.Inventory.ItemPalettes; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; public class ChargedProjectilesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfItems { get; set; } public List Items { get; set; } = []; public override void Parse(Queue data) { NumberOfItems = dataTypes.ReadNextVarInt(data); for (var i = 0; i < NumberOfItems; i++) Items.Add(dataTypes.ReadNextItemSlot(data, itemPalette)); } public override Queue Serialize() { var data = new List(); data.AddRange(DataTypes.GetVarInt(NumberOfItems)); if (NumberOfItems != Items.Count) throw new ArgumentNullException($"Cannot serialize ChargedProjectilesComponent1206 because NumberOfItems != Items.Count!"); foreach (var item in Items.OfType()) data.AddRange(DataTypes.GetItemSlot(item, itemPalette)); return new Queue(data); } }