using System; using System.Collections.Generic; using LibAC.NBT.API; namespace LibAC.NBT { public class LongArrayTag : Tag { public List value { get; private set; } = new List(); public LongArrayTag() { } public LongArrayTag(List lst) { value.AddRange(lst); } public static LongArrayTag ValueOf(List value) { return new LongArrayTag(value); } public override void ReadValue(ByteLayer data) { int count = data.ReadInt(); for (int i = 0; i < count; i++) { value.Add(data.ReadLong()); } } public override void WriteValue(ByteLayer data) { data.WriteInt(Size()); foreach (long val in value) { data.WriteLong(val); } } public int Size() { return value.Count; } public override TagType GetTagType() { return TagType.LongArray; } public override void SetValue(dynamic val) { } public override dynamic GetValue() { return null; } public override void PrettyPrint(int indent, bool recurse) { string array = string.Join(", ", value); Console.WriteLine($"{new string('\t', indent)}{Tag.GetCanonicalName(GetTagType())}: [{array}]"); } public override void WriteStringifiedValue(StringBuilder builder, int indent, bool isList) { builder.Append($"{(isList ? new string('\t', indent) : "")}[L; {string.Join("L, ", value)}L]"); } public override void ReadStringifiedValue(StringReader reader) { reader.Expect('['); reader.Expect('L'); reader.Expect(';'); while (reader.Peek() != ']') { value.Add(long.Parse(reader.ReadNumber())); reader.Expect('l'); if (reader.Peek() == ',') reader.Next(); } reader.Expect(']'); } } }