Example #1
0
  /**
   * plays random cave ambient sounds and runs updateTick on random blocks within each chunk in the
   * vacinity of a player
   */
  protected void tickBlocksAndAmbiance() {
    super.tickBlocksAndAmbiance();
    int var1 = 0;
    int var2 = 0;
    Iterator var3 = this.activeChunkSet.iterator();

    while (var3.hasNext()) {
      ChunkCoordIntPair var4 = (ChunkCoordIntPair) var3.next();
      int var5 = var4.chunkXPos * 16;
      int var6 = var4.chunkZPos * 16;
      this.theProfiler.startSection("getChunk");
      Chunk var7 = this.getChunkFromChunkCoords(var4.chunkXPos, var4.chunkZPos);
      this.moodSoundAndLightCheck(var5, var6, var7);
      this.theProfiler.endStartSection("tickChunk");
      var7.updateSkylight();
      this.theProfiler.endStartSection("thunder");
      int var8;
      int var9;
      int var10;
      int var11;

      if (this.rand.nextInt(100000) == 0 && this.isRaining() && this.isThundering()) {
        this.updateLCG = this.updateLCG * 3 + 1013904223;
        var8 = this.updateLCG >> 2;
        var9 = var5 + (var8 & 15);
        var10 = var6 + (var8 >> 8 & 15);
        var11 = this.getPrecipitationHeight(var9, var10);

        if (this.canLightningStrikeAt(var9, var11, var10)) {
          this.addWeatherEffect(
              new EntityLightningBolt(this, (double) var9, (double) var11, (double) var10));
        }
      }

      this.theProfiler.endStartSection("iceandsnow");
      int var13;

      if (this.rand.nextInt(16) == 0) {
        this.updateLCG = this.updateLCG * 3 + 1013904223;
        var8 = this.updateLCG >> 2;
        var9 = var8 & 15;
        var10 = var8 >> 8 & 15;
        var11 = this.getPrecipitationHeight(var9 + var5, var10 + var6);

        if (this.isBlockFreezableNaturally(var9 + var5, var11 - 1, var10 + var6)) {
          this.setBlock(var9 + var5, var11 - 1, var10 + var6, Block.ice.blockID);
        }

        if (this.isRaining() && this.canSnowAt(var9 + var5, var11, var10 + var6)) {
          this.setBlock(var9 + var5, var11, var10 + var6, Block.snow.blockID);
        }

        if (this.isRaining()) {
          BiomeGenBase var12 = this.getBiomeGenForCoords(var9 + var5, var10 + var6);

          if (var12.canSpawnLightningBolt()) {
            var13 = this.getBlockId(var9 + var5, var11 - 1, var10 + var6);

            if (var13 != 0) {
              Block.blocksList[var13].fillWithRain(this, var9 + var5, var11 - 1, var10 + var6);
            }
          }
        }
      }

      this.theProfiler.endStartSection("tickTiles");
      ExtendedBlockStorage[] var19 = var7.getBlockStorageArray();
      var9 = var19.length;

      for (var10 = 0; var10 < var9; ++var10) {
        ExtendedBlockStorage var21 = var19[var10];

        if (var21 != null && var21.getNeedsRandomTick()) {
          for (int var20 = 0; var20 < 3; ++var20) {
            this.updateLCG = this.updateLCG * 3 + 1013904223;
            var13 = this.updateLCG >> 2;
            int var14 = var13 & 15;
            int var15 = var13 >> 8 & 15;
            int var16 = var13 >> 16 & 15;
            int var17 = var21.getExtBlockID(var14, var16, var15);
            ++var2;
            Block var18 = Block.blocksList[var17];

            if (var18 != null && var18.getTickRandomly()) {
              ++var1;
              var18.updateTick(
                  this, var14 + var5, var16 + var21.getYLocation(), var15 + var6, this.rand);
            }
          }
        }
      }

      this.theProfiler.endSection();
    }
  }