Path: blob/main/sp-server/src_aux/ChunkLoader.java
8641 views
package net.minecraft.src;12public class ChunkLoader {3public static AnvilConverterData load(NBTTagCompound par0NBTTagCompound) {4int var1 = par0NBTTagCompound.getInteger("xPos");5int var2 = par0NBTTagCompound.getInteger("zPos");6AnvilConverterData var3 = new AnvilConverterData(var1, var2);7var3.blocks = par0NBTTagCompound.getByteArray("Blocks");8var3.data = new NibbleArrayReader(par0NBTTagCompound.getByteArray("Data"), 7);9var3.skyLight = new NibbleArrayReader(par0NBTTagCompound.getByteArray("SkyLight"), 7);10var3.blockLight = new NibbleArrayReader(par0NBTTagCompound.getByteArray("BlockLight"), 7);11var3.heightmap = par0NBTTagCompound.getByteArray("HeightMap");12var3.terrainPopulated = par0NBTTagCompound.getBoolean("TerrainPopulated");13var3.entities = par0NBTTagCompound.getTagList("Entities");14var3.tileEntities = par0NBTTagCompound.getTagList("TileEntities");15var3.tileTicks = par0NBTTagCompound.getTagList("TileTicks");1617try {18var3.lastUpdated = par0NBTTagCompound.getLong("LastUpdate");19} catch (ClassCastException var5) {20var3.lastUpdated = (long) par0NBTTagCompound.getInteger("LastUpdate");21}2223return var3;24}2526public static void convertToAnvilFormat(AnvilConverterData par0AnvilConverterData,27NBTTagCompound par1NBTTagCompound, WorldChunkManager par2WorldChunkManager) {28par1NBTTagCompound.setInteger("xPos", par0AnvilConverterData.x);29par1NBTTagCompound.setInteger("zPos", par0AnvilConverterData.z);30par1NBTTagCompound.setLong("LastUpdate", par0AnvilConverterData.lastUpdated);31int[] var3 = new int[par0AnvilConverterData.heightmap.length];3233for (int var4 = 0; var4 < par0AnvilConverterData.heightmap.length; ++var4) {34var3[var4] = par0AnvilConverterData.heightmap[var4];35}3637par1NBTTagCompound.setIntArray("HeightMap", var3);38par1NBTTagCompound.setBoolean("TerrainPopulated", par0AnvilConverterData.terrainPopulated);39NBTTagList var16 = new NBTTagList("Sections");40int var7;4142for (int var5 = 0; var5 < 8; ++var5) {43boolean var6 = true;4445for (var7 = 0; var7 < 16 && var6; ++var7) {46int var8 = 0;4748while (var8 < 16 && var6) {49int var9 = 0;5051while (true) {52if (var9 < 16) {53int var10 = var7 << 11 | var9 << 7 | var8 + (var5 << 4);54byte var11 = par0AnvilConverterData.blocks[var10];5556if (var11 == 0) {57++var9;58continue;59}6061var6 = false;62}6364++var8;65break;66}67}68}6970if (!var6) {71byte[] var19 = new byte[4096];72NibbleArray var20 = new NibbleArray(var19.length, 4);73NibbleArray var21 = new NibbleArray(var19.length, 4);74NibbleArray var22 = new NibbleArray(var19.length, 4);7576for (int var23 = 0; var23 < 16; ++var23) {77for (int var12 = 0; var12 < 16; ++var12) {78for (int var13 = 0; var13 < 16; ++var13) {79int var14 = var23 << 11 | var13 << 7 | var12 + (var5 << 4);80byte var15 = par0AnvilConverterData.blocks[var14];81var19[var12 << 8 | var13 << 4 | var23] = (byte) (var15 & 255);82var20.set(var23, var12, var13,83par0AnvilConverterData.data.get(var23, var12 + (var5 << 4), var13));84var21.set(var23, var12, var13,85par0AnvilConverterData.skyLight.get(var23, var12 + (var5 << 4), var13));86var22.set(var23, var12, var13,87par0AnvilConverterData.blockLight.get(var23, var12 + (var5 << 4), var13));88}89}90}9192NBTTagCompound var24 = new NBTTagCompound();93var24.setByte("Y", (byte) (var5 & 255));94var24.setByteArray("Blocks", var19);95var24.setByteArray("Data", var20.data);96var24.setByteArray("SkyLight", var21.data);97var24.setByteArray("BlockLight", var22.data);98var16.appendTag(var24);99}100}101102par1NBTTagCompound.setTag("Sections", var16);103byte[] var17 = new byte[256];104105for (int var18 = 0; var18 < 16; ++var18) {106for (var7 = 0; var7 < 16; ++var7) {107var17[var7 << 4108| var18] = (byte) (par2WorldChunkManager.getBiomeGenAt(par0AnvilConverterData.x << 4 | var18,109par0AnvilConverterData.z << 4 | var7).biomeID & 255);110}111}112113par1NBTTagCompound.setByteArray("Biomes", var17);114par1NBTTagCompound.setTag("Entities", par0AnvilConverterData.entities);115par1NBTTagCompound.setTag("TileEntities", par0AnvilConverterData.tileEntities);116117if (par0AnvilConverterData.tileTicks != null) {118par1NBTTagCompound.setTag("TileTicks", par0AnvilConverterData.tileTicks);119}120}121}122123124