Ejemplo n.º 1
0
  /** 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)));
    }
  }
Ejemplo n.º 3
0
  /** 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;
 }
Ejemplo n.º 6
0
 /**
  * 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;
 }
Ejemplo n.º 7
0
 /** 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));
 }