コード例 #1
0
        private ReadResults ReadArrayTag(out INbtTag result)
        {
            result = default;
            ReadResults readResults = Reader.Expect('[');

            if (!readResults.Successful)
            {
                return(readResults);
            }
            int  start = Reader.GetCursor();
            char type  = Reader.Read();

            Reader.Skip();
            Reader.SkipWhitespace();
            if (!Reader.CanRead())
            {
                return(ReadResults.Failure(CommandError.ExpectedValue().WithContext(Reader)));
            }

            INbtCollectionTag list;

            switch (type)
            {
            case 'B':
                list = new ByteArrayNbtTag();
                break;

            case 'I':
                list = new IntegerArrayNbtTag();
                break;

            case 'L':
                list = new LongArrayNbtTag();
                break;

            default:
                Reader.SetCursor(start);
                return(ReadResults.Failure(CommandError.InvalidArrayType(type).WithContext(Reader)));
            }
            readResults = ReadListContents(ref list);
            if (readResults.Successful)
            {
                result = list;
            }
            return(readResults);
        }