Java 类net.minecraft.world.level.chunk.storage.RegionFile 实例源码

项目:AnvilCleaner    文件:ChunkWorker.java   
public ChunkWorker(AnvilCleaner main, int x, int z, int rx, int rz, RegionFile regionSource, RegionFile regionDest, Options options)
{
    this.main = main;
    this.x = x;
    this.z = z;
    this.rx = rx;
    this.rz = rz;
    this.regionSource = regionSource;
    this.regionDest = regionDest;
    this.options = options;
    this.completion = CompletionType.INCOMPLETE;
}
项目:AnvilCleaner    文件:ChunkBuffer.java   
public ChunkBuffer(RegionFile par1RegionFile, int par2, int par3)
{
    super(8096);
    regionFile = par1RegionFile;
    chunkX = par2;
    chunkZ = par3;
}
项目:MapRend    文件:Region.java   
public Region(File file) {
    if(!file.exists()) {
        Program.exitWithError("Region file does not exist!");
    }
    try {
        regionFile = new RegionFile(file);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
项目:CoreNetwork-Tools    文件:Main.java   
public static void main(String[] args)
{
    if (args.length < 5)
    {
        System.out.println("usage: java -jar RegionTiler.jar <origin chunk x> <origin chunk z> <min region x> <max region x> <min region z> <max region z>");
        return;
    }

    int originX = Integer.parseInt(args[0]);
    int originZ = Integer.parseInt(args[1]);
    int minX = Integer.parseInt(args[2]);
    int maxX = Integer.parseInt(args[3]);
    int minZ = Integer.parseInt(args[4]);
    int maxZ = Integer.parseInt(args[5]);

    try
    {
        System.out.println("loading origin chunk...");
        int originRegionX = originX / 32;
        int originRegionZ = originZ / 32;
        int insideOriginChunkX = originX % 32;
        int insideOriginChunkZ = originZ % 32;

        File originRegionFile = new File("r." + originRegionX + "." + originRegionZ + ".mca");
        RegionFile originRegion = new RegionFile(originRegionFile);
        DataInputStream originChunkStream = originRegion.getChunkDataInputStream(insideOriginChunkX, insideOriginChunkZ);
        CompoundTag originChunk = NbtIo.read(originChunkStream);
        originChunkStream.close();
        originRegion.close();

        for (int x = minX; x <= maxX; x++)
        {
            for (int z = minZ; z <= maxZ; z++)
            {
                System.out.println("writing region " + x + " " + z + "...");
                File regionFile = new File("r." + x + "." + z + ".mca");
                RegionFile region = new RegionFile(regionFile);

                for (int cX = 0; cX < 32; cX++)
                {
                    for (int cZ = 0; cZ < 32; cZ++)
                    {
                        int actualChunkX = x * 32 + cX;
                        int actualChunkZ = z * 32 + cZ;

                        modifyChunkCoordinates(originChunk, actualChunkX, actualChunkZ);

                        DataOutputStream stream = region.getChunkDataOutputStream(cX, cZ);
                        NbtIo.write(originChunk, stream);
                        stream.close();
                    }
                }

                region.close();
            }
        }

    }
    catch (IOException e)
    {
        e.printStackTrace();
    }


}
项目:AnvilCleaner    文件:ChunkTrimmerWorker.java   
public ChunkTrimmerWorker(AnvilCleaner anvilCleaner, int x, int z, int rx, int rz, RegionFile regionSource, RegionFile regionDest,
        Options options, List<ChunkLocation> keep)
{
    super(anvilCleaner, x, z, rx, rz, regionSource, regionDest, options);
    this.keep = keep;
}
项目:AnvilCleaner    文件:ChunkCleanerWorker.java   
public ChunkCleanerWorker(AnvilCleaner anvilCleaner, int x, int z, int rx, int rz, RegionFile regionSource, RegionFile regionDest,
        Options options)
{
    super(anvilCleaner, x, z, rx, rz, regionSource, regionDest, options);
}
项目:AnvilCleaner    文件:TypeCleanerChunkWorker.java   
public TypeCleanerChunkWorker(AnvilCleaner anvilCleaner, int x, int z, int rx, int rz, RegionFile regionSource, RegionFile regionDest,
        Options options)
{
    super(anvilCleaner, x, z, rx, rz, regionSource, regionDest, options);
}
项目:AnvilCleaner    文件:TrimmerWorker.java   
public void scanRegion(File regionFile, List<ChunkLocation> keep, int currentCount, int totalCount)
{
    try
    {
        RegionFile regionSource = new RegionFile(regionFile);

        for (int x = 0; x < 32; x++)
        {
            for (int z = 0; z < 32; z++)
            {
                if (regionSource.hasChunk(x, z))
                {
                    DataInputStream regionChunkInputStream = regionSource.getChunkDataInputStream(x, z);
                    if (regionChunkInputStream == null)
                    {
                        System.out.println("Failed to fetch input stream");
                    }
                    else
                    {
                        CompoundTag chunkData = (CompoundTag) Tag.readNamedTag(regionChunkInputStream);
                        regionChunkInputStream.close();

                        CompoundTag compound = chunkData.getCompound("Level");

                        ChunkStorage.LevelChunk chunk = ChunkStorage.load(compound);

                        if (! ChunkStorage.trim(chunk, options))
                        {
                            keep.add(new ChunkLocation(chunk.x, chunk.z));
                        }
                    }
                }
            }

            int basePercent = (int) Math.round(80.0D * (currentCount * 1024) / (totalCount * 1024));
            int newPercent = (int) Math.round(80.0D * ((x + 1) * 32 + currentCount * 1024) / (totalCount * 1024));
            if (newPercent > basePercent)
            {
                progress.progressStagePercentage(newPercent);
            }
        }

        regionSource.close();
    }
    catch (IOException ex)
    {
        main.getLogger().log(Level.SEVERE, "Encountered an exception trimming region \"" + regionFile.getName() + "\": ", ex);
    }
}
项目:AnvilCleaner    文件:ChunkBuffer.java   
public final RegionFile getRegionFile()
{
    return regionFile;
}