Path: blob/main/sp-server/src_aux/RegionFileCache.java
8641 views
package net.minecraft.src;12import java.io.DataInputStream;3import java.io.DataOutputStream;4import java.io.File;5import java.io.IOException;6import java.util.HashMap;7import java.util.Iterator;8import java.util.Map;910public class RegionFileCache {11/** A map containing Files as keys and RegionFiles as values */12private static final Map regionsByFilename = new HashMap();1314public static synchronized RegionFile createOrLoadRegionFile(File par0File, int par1, int par2) {15File var3 = new File(par0File, "region");16File var4 = new File(var3, "r." + (par1 >> 5) + "." + (par2 >> 5) + ".mca");17RegionFile var5 = (RegionFile) regionsByFilename.get(var4);1819if (var5 != null) {20return var5;21} else {22if (!var3.exists()) {23var3.mkdirs();24}2526if (regionsByFilename.size() >= 256) {27clearRegionFileReferences();28}2930RegionFile var6 = new RegionFile(var4);31regionsByFilename.put(var4, var6);32return var6;33}34}3536/**37* clears region file references38*/39public static synchronized void clearRegionFileReferences() {40Iterator var0 = regionsByFilename.values().iterator();4142while (var0.hasNext()) {43RegionFile var1 = (RegionFile) var0.next();4445try {46if (var1 != null) {47var1.close();48}49} catch (IOException var3) {50var3.printStackTrace();51}52}5354regionsByFilename.clear();55}5657/**58* Returns an input stream for the specified chunk. Args: worldDir, chunkX,59* chunkZ60*/61public static DataInputStream getChunkInputStream(File par0File, int par1, int par2) {62RegionFile var3 = createOrLoadRegionFile(par0File, par1, par2);63return var3.getChunkDataInputStream(par1 & 31, par2 & 31);64}6566/**67* Returns an output stream for the specified chunk. Args: worldDir, chunkX,68* chunkZ69*/70public static DataOutputStream getChunkOutputStream(File par0File, int par1, int par2) {71RegionFile var3 = createOrLoadRegionFile(par0File, par1, par2);72return var3.getChunkDataOutputStream(par1 & 31, par2 & 31);73}74}757677