Minecraft-Console-Client/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BannerPatternsComponent.cs
copilot-swe-agent[bot] 640a4e39b7 Fix CS9107 warnings: use base class properties instead of captured primary constructor parameters
Replace lowercase primary constructor parameter references (dataTypes.,
subComponentRegistry., itemPalette.) with PascalCase base class property
references (DataTypes., SubComponentRegistry., ItemPalette.) in method
bodies of all StructuredComponent and SubComponent subclasses.

This eliminates CS9107 warnings where subclass primary constructor
parameters shadow the base class properties they are assigned to.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 01:16:05 +00:00

68 lines
No EOL
2.5 KiB
C#

using System;
using System.Collections.Generic;
using MinecraftClient.Inventory.ItemPalettes;
using MinecraftClient.Protocol.Handlers.StructuredComponents.Core;
namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6;
public class BannerPatternsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry)
: StructuredComponent(dataTypes, itemPalette, subComponentRegistry)
{
public int NumberOfLayers { get; set; }
public List<BannerLayer> Layers { get; set; } = [];
public override void Parse(Queue<byte> data)
{
NumberOfLayers = DataTypes.ReadNextVarInt(data);
for (var i = 0; i < NumberOfLayers; i++)
{
var patternType = DataTypes.ReadNextVarInt(data);
Layers.Add(new BannerLayer
{
PatternType = patternType,
AssetId = patternType == 0 ? DataTypes.ReadNextString(data) : null,
TranslationKey = patternType == 0 ? DataTypes.ReadNextString(data) : null,
DyeColor = DataTypes.ReadNextVarInt(data)
});
}
}
public override Queue<byte> Serialize()
{
var data = new List<byte>();
data.AddRange(DataTypes.GetVarInt(NumberOfLayers));
if (NumberOfLayers > 0)
{
if (NumberOfLayers != Layers.Count)
throw new Exception("Can't serialize BannerPatternsComponent because NumberOfLayers and Layers.Count differ!");
foreach (var bannerLayer in Layers)
{
data.AddRange(DataTypes.GetVarInt(bannerLayer.PatternType));
if (bannerLayer.PatternType == 0)
{
if(string.IsNullOrEmpty(bannerLayer.AssetId) || string.IsNullOrEmpty(bannerLayer.TranslationKey))
throw new Exception("Can't serialize BannerPatternsComponent because AssetId or TranslationKey is null/empty!");
data.AddRange(DataTypes.GetString(bannerLayer.AssetId));
data.AddRange(DataTypes.GetString(bannerLayer.TranslationKey));
}
data.AddRange(DataTypes.GetVarInt(bannerLayer.DyeColor));
}
}
return new Queue<byte>(data);
}
}
public class BannerLayer
{
public int PatternType { get; set; }
public string? AssetId { get; set; } = null!;
public string? TranslationKey { get; set; } = null!;
public int DyeColor { get; set; }
}