/** Recursively called by generate() (generate) and optionally by itself. */ protected void recursiveGenerate( World par1World, int par2, int par3, int par4, int par5, byte[] par6ArrayOfByte) { if (!this.structureMap.containsKey(Long.valueOf(ChunkCoordIntPair.chunkXZ2Int(par2, par3)))) { this.rand.nextInt(); try { if (this.canSpawnStructureAtCoords(par2, par3)) { StructureStart var7 = this.getStructureStart(par2, par3); this.structureMap.put(Long.valueOf(ChunkCoordIntPair.chunkXZ2Int(par2, par3)), var7); } } catch (Throwable var10) { CrashReport var8 = CrashReport.makeCrashReport(var10, "Exception preparing structure feature"); CrashReportCategory var9 = var8.makeCategory("Feature being prepared"); var9.addCrashSectionCallable( "Is feature chunk", new CallableIsFeatureChunk(this, par2, par3)); var9.addCrashSection( "Chunk location", String.format("%d,%d", new Object[] {Integer.valueOf(par2), Integer.valueOf(par3)})); var9.addCrashSectionCallable("Chunk pos hash", new CallableChunkPosHash(this, par2, par3)); var9.addCrashSectionCallable("Structure type", new CallableStructureType(this)); throw new ReportedException(var8); } } }
public void dropChunk(int par1, int par2) { if (this.world.provider.canRespawnHere()) { ChunkCoordinates var3 = this.world.getSpawnPoint(); int var4 = par1 * 16 + 8 - var3.posX; int var5 = par2 * 16 + 8 - var3.posZ; short var6 = 128; if (var4 < -var6 || var4 > var6 || var5 < -var6 || var5 > var6) { this.droppedChunksSet.add(Long.valueOf(ChunkCoordIntPair.chunkXZ2Int(par1, par2))); } } else { this.droppedChunksSet.add(Long.valueOf(ChunkCoordIntPair.chunkXZ2Int(par1, par2))); } }
/** loads or generates the chunk at the chunk location specified */ public Chunk loadChunk(int par1, int par2) { long var3 = ChunkCoordIntPair.chunkXZ2Int(par1, par2); this.droppedChunksSet.remove(Long.valueOf(var3)); Chunk var5 = (Chunk) this.chunkMap.getValueByKey(var3); if (var5 == null) { int var6 = 1875004; if (par1 < -var6 || par2 < -var6 || par1 >= var6 || par2 >= var6) { return this.emptyChunk; } var5 = this.loadChunkFromFile(par1, par2); if (var5 == null) { if (this.chunkProvider == null) { var5 = this.emptyChunk; } else { var5 = this.chunkProvider.provideChunk(par1, par2); } } this.chunkMap.add(var3, var5); this.chunkList.add(var5); if (var5 != null) { var5.func_4143_d(); var5.onChunkLoad(); } var5.populateChunk(this, this, par1, par2); } return var5; }
/** loads or generates the chunk at the chunk location specified */ public Chunk loadChunk(int par1, int par2) { long var3 = ChunkCoordIntPair.chunkXZ2Int(par1, par2); this.droppedChunksSet.remove(Long.valueOf(var3)); Chunk var5 = (Chunk) this.id2ChunkMap.getValueByKey(var3); if (var5 == null) { var5 = this.loadChunkFromFile(par1, par2); if (var5 == null) { if (this.serverChunkGenerator == null) { var5 = this.dummyChunk; } else { var5 = this.serverChunkGenerator.provideChunk(par1, par2); } } this.id2ChunkMap.add(var3, var5); this.field_73245_g.add(var5); if (var5 != null) { var5.onChunkLoad(); } var5.populateChunk(this, this, par1, par2); } return var5; }
/** * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the * blocks for the specified chunk from the map seed and chunk seed */ public Chunk provideChunk(int par1, int par2) { Chunk var3 = (Chunk) this.id2ChunkMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(par1, par2)); return var3 == null ? (!this.world.findingSpawnPoint && !this.chunkLoadOverride ? this.dummyChunk : this.loadChunk(par1, par2)) : var3; }
/** * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the * blocks for the specified chunk from the map seed and chunk seed */ public Chunk provideChunk(int par1, int par2) { Chunk var3 = (Chunk) this.chunkMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(par1, par2)); return var3 == null ? this.loadChunk(par1, par2) : var3; }
/** Checks to see if a chunk exists at x, y */ public boolean chunkExists(int par1, int par2) { return this.chunkMap.containsItem(ChunkCoordIntPair.chunkXZ2Int(par1, par2)); }