Beispiel #1
0
        static void ListChunks(FileInfo vldbFile, bool old)
        {
            byte[] fileContents = vldbFile.ReadFileFullyInflate();

            using (VLDBReader reader = new VLDBReader(new MemoryStream(fileContents))) {
                if (!old)
                {
                    reader.verifyVldb();
                }

                int regionX = reader.BaseReader.ReadInt();
                int regionZ = reader.BaseReader.ReadInt();

                IDictionary <ChunkPos, int>      header       = reader.ReadHeader(regionX, regionZ);
                SortedDictionary <ChunkPos, int> sortedHeader = new SortedDictionary <ChunkPos, int>(header, new ChunkPosComparer(header));

                Console.WriteLine($"============== {vldbFile.Name} ==============");
                Console.WriteLine($"TOTAL AFFECTED CHUNKS: {header.Keys.Count}");
                Console.WriteLine();

                foreach (ChunkPos chunkPos in sortedHeader.Keys)
                {
                    int offset = header[chunkPos];
                    reader.BaseReader.BaseStream.Position = offset;

                    reader.BaseReader.ReadShort(); // Skip position
                    int amountLightSources = reader.ReadUInt24();

                    Console.WriteLine($"Chunk {chunkPos,10}: {amountLightSources,5} Light sources - OFFSET 0x{$"{header[chunkPos]:X}",-10}");
                }
            }
        }