this.height = 64;
this.waterLevel = 32;
this.blocks = new byte[var2 * var3 << 6];
this.progressBar.setText("Raising..");
LevelGenerator var5 = this;
CombinedNoise var6 = new CombinedNoise(new OctaveNoise(this.random, 8), new OctaveNoise(this.random, 8));
CombinedNoise var7 = new CombinedNoise(new OctaveNoise(this.random, 8), new OctaveNoise(this.random, 8));
OctaveNoise var8 = new OctaveNoise(this.random, 6);
int[] var9 = new int[this.width * this.depth];
float var10 = 1.3F;
int var11;
int var12;
for(var11 = 0; var11 < var5.width; ++var11) {
var5.setProgress(var11 * 100 / (var5.width - 1));
for(var12 = 0; var12 < var5.depth; ++var12) {
double var13 = var6.compute((double)((float)var11 * var10), (double)((float)var12 * var10)) / 6.0D + (double)-4;
double var15 = var7.compute((double)((float)var11 * var10), (double)((float)var12 * var10)) / 5.0D + 10.0D + (double)-4;
if(var8.compute((double)var11, (double)var12) / 8.0D > 0.0D) {
var15 = var13;
}
double var19;
if((var19 = Math.max(var13, var15) / 2.0D) < 0.0D) {
var19 *= 0.8D;
}
var9[var11 + var12 * var5.width] = (int)var19;
}
}
this.progressBar.setText("Eroding..");
int[] var42 = var9;
var5 = this;
var7 = new CombinedNoise(new OctaveNoise(this.random, 8), new OctaveNoise(this.random, 8));
CombinedNoise var49 = new CombinedNoise(new OctaveNoise(this.random, 8), new OctaveNoise(this.random, 8));
int var23;
int var51;
int var54;
for(var51 = 0; var51 < var5.width; ++var51) {
var5.setProgress(var51 * 100 / (var5.width - 1));
for(var54 = 0; var54 < var5.depth; ++var54) {
double var21 = var7.compute((double)(var51 << 1), (double)(var54 << 1)) / 8.0D;
var12 = var49.compute((double)(var51 << 1), (double)(var54 << 1)) > 0.0D?1:0;
if(var21 > 2.0D) {
var23 = ((var42[var51 + var54 * var5.width] - var12) / 2 << 1) + var12;
var42[var51 + var54 * var5.width] = var23;
}
}
}
this.progressBar.setText("Soiling..");
var42 = var9;
var5 = this;
int var46 = this.width;
int var48 = this.depth;
var51 = this.height;
OctaveNoise var53 = new OctaveNoise(this.random, 8);
int var25;
int var24;
int var27;
int var26;
int var28;
for(var24 = 0; var24 < var46; ++var24) {
var5.setProgress(var24 * 100 / (var5.width - 1));
for(var11 = 0; var11 < var48; ++var11) {
var12 = (int)(var53.compute((double)var24, (double)var11) / 24.0D) - 4;
var25 = (var23 = var42[var24 + var11 * var46] + var5.waterLevel) + var12;
var42[var24 + var11 * var46] = Math.max(var23, var25);
if(var42[var24 + var11 * var46] > var51 - 2) {
var42[var24 + var11 * var46] = var51 - 2;
}
if(var42[var24 + var11 * var46] < 1) {
var42[var24 + var11 * var46] = 1;
}
for(var26 = 0; var26 < var51; ++var26) {
var27 = (var26 * var5.depth + var11) * var5.width + var24;
var28 = 0;
if(var26 <= var23) {
var28 = Block.DIRT.id;
}
if(var26 <= var25) {
var28 = Block.STONE.id;
}
if(var26 == 0) {
var28 = Block.LAVA.id;
}
var5.blocks[var27] = (byte)var28;
}
}
}
this.progressBar.setText("Carving..");
boolean var45 = true;
boolean var44 = false;
var5 = this;
var48 = this.width;
var51 = this.depth;
var54 = this.height;
var24 = var48 * var51 * var54 / 256 / 64 << 1;
for(var11 = 0; var11 < var24; ++var11) {
var5.setProgress(var11 * 100 / (var24 - 1) / 4);
float var55 = var5.random.nextFloat() * (float)var48;
float var59 = var5.random.nextFloat() * (float)var54;
float var56 = var5.random.nextFloat() * (float)var51;
var26 = (int)((var5.random.nextFloat() + var5.random.nextFloat()) * 200.0F);
float var61 = var5.random.nextFloat() * 3.1415927F * 2.0F;
float var64 = 0.0F;
float var29 = var5.random.nextFloat() * 3.1415927F * 2.0F;
float var30 = 0.0F;
float var31 = var5.random.nextFloat() * var5.random.nextFloat();
for(int var32 = 0; var32 < var26; ++var32) {
var55 += MathHelper.sin(var61) * MathHelper.cos(var29);
var56 += MathHelper.cos(var61) * MathHelper.cos(var29);
var59 += MathHelper.sin(var29);
var61 += var64 * 0.2F;
var64 = (var64 *= 0.9F) + (var5.random.nextFloat() - var5.random.nextFloat());
var29 = (var29 + var30 * 0.5F) * 0.5F;
var30 = (var30 *= 0.75F) + (var5.random.nextFloat() - var5.random.nextFloat());
if(var5.random.nextFloat() >= 0.25F) {
float var43 = var55 + (var5.random.nextFloat() * 4.0F - 2.0F) * 0.2F;
float var50 = var59 + (var5.random.nextFloat() * 4.0F - 2.0F) * 0.2F;
float var33 = var56 + (var5.random.nextFloat() * 4.0F - 2.0F) * 0.2F;
float var34 = ((float)var5.height - var50) / (float)var5.height;
var34 = 1.2F + (var34 * 3.5F + 1.0F) * var31;
var34 = MathHelper.sin((float)var32 * 3.1415927F / (float)var26) * var34;
for(int var35 = (int)(var43 - var34); var35 <= (int)(var43 + var34); ++var35) {
for(int var36 = (int)(var50 - var34); var36 <= (int)(var50 + var34); ++var36) {
for(int var37 = (int)(var33 - var34); var37 <= (int)(var33 + var34); ++var37) {
float var38 = (float)var35 - var43;
float var39 = (float)var36 - var50;
float var40 = (float)var37 - var33;
if(var38 * var38 + var39 * var39 * 2.0F + var40 * var40 < var34 * var34 && var35 >= 1 && var36 >= 1 && var37 >= 1 && var35 < var5.width - 1 && var36 < var5.height - 1 && var37 < var5.depth - 1) {
int var66 = (var36 * var5.depth + var37) * var5.width + var35;
if(var5.blocks[var66] == Block.STONE.id) {
var5.blocks[var66] = 0;
}
}
}
}
}
}
}
}
this.populateOre(Block.COAL_ORE.id, 90, 1, 4);
this.populateOre(Block.IRON_ORE.id, 70, 2, 4);
this.populateOre(Block.GOLD_ORE.id, 50, 3, 4);
this.progressBar.setText("Watering..");
var5 = this;
var51 = Block.STATIONARY_WATER.id;
this.setProgress(0);
for(var54 = 0; var54 < var5.width; ++var54) {
var5.flood(var54, var5.height / 2 - 1, 0, 0, var51);
var5.flood(var54, var5.height / 2 - 1, var5.depth - 1, 0, var51);
}
for(var54 = 0; var54 < var5.depth; ++var54) {
var5.flood(0, var5.height / 2 - 1, var54, 0, var51);
var5.flood(var5.width - 1, var5.height / 2 - 1, var54, 0, var51);
}
var54 = var5.width * var5.depth / 8000;
for(var24 = 0; var24 < var54; ++var24) {
if(var24 % 100 == 0) {
var5.setProgress(var24 * 100 / (var54 - 1));
}
var11 = var5.random.nextInt(var5.width);
var12 = var5.waterLevel - 1 - var5.random.nextInt(2);
var23 = var5.random.nextInt(var5.depth);
if(var5.blocks[(var12 * var5.depth + var23) * var5.width + var11] == 0) {
var5.flood(var11, var12, var23, 0, var51);
}
}
var5.setProgress(100);
this.progressBar.setText("Melting..");
var5 = this;
var46 = this.width * this.depth * this.height / 20000;
for(var48 = 0; var48 < var46; ++var48) {
if(var48 % 100 == 0) {
var5.setProgress(var48 * 100 / (var46 - 1));
}
var51 = var5.random.nextInt(var5.width);
var54 = (int)(var5.random.nextFloat() * var5.random.nextFloat() * (float)(var5.waterLevel - 3));
var24 = var5.random.nextInt(var5.depth);
if(var5.blocks[(var54 * var5.depth + var24) * var5.width + var51] == 0) {
var5.flood(var51, var54, var24, 0, Block.STATIONARY_LAVA.id);
}
}
var5.setProgress(100);
this.progressBar.setText("Growing..");
var42 = var9;
var5 = this;
var46 = this.width;
var48 = this.depth;
var51 = this.height;
var53 = new OctaveNoise(this.random, 8);
OctaveNoise var58 = new OctaveNoise(this.random, 8);
int var63;
for(var11 = 0; var11 < var46; ++var11) {
var5.setProgress(var11 * 100 / (var5.width - 1));
for(var12 = 0; var12 < var48; ++var12) {
boolean var60 = var53.compute((double)var11, (double)var12) > 8.0D;
boolean var57 = var58.compute((double)var11, (double)var12) > 12.0D;
var27 = ((var26 = var42[var11 + var12 * var46]) * var5.depth + var12) * var5.width + var11;
if(((var28 = var5.blocks[((var26 + 1) * var5.depth + var12) * var5.width + var11] & 255) == Block.WATER.id || var28 == Block.STATIONARY_WATER.id) && var26 <= var51 / 2 - 1 && var57) {
var5.blocks[var27] = (byte)Block.GRAVEL.id;
}