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;
}