package net.minecraft.world.gen; import java.util.Random; public class NoiseGeneratorSimplex { private static int[][] field_151611_e = new int[][] {{1, 1, 0}, { -1, 1, 0}, {1, -1, 0}, { -1, -1, 0}, {1, 0, 1}, { -1, 0, 1}, {1, 0, -1}, { -1, 0, -1}, {0, 1, 1}, {0, -1, 1}, {0, 1, -1}, {0, -1, -1}}; public static final double field_151614_a = Math.sqrt(3.0D); private int[] field_151608_f; public double field_151612_b; public double field_151613_c; public double field_151610_d; private static final double field_151609_g = 0.5D * (field_151614_a - 1.0D); private static final double field_151615_h = (3.0D - field_151614_a) / 6.0D; private static final String __OBFID = "CL_00000537"; public NoiseGeneratorSimplex() { this(new Random()); } public NoiseGeneratorSimplex(Random p_i45471_1_) { this.field_151608_f = new int[512]; this.field_151612_b = p_i45471_1_.nextDouble() * 256.0D; this.field_151613_c = p_i45471_1_.nextDouble() * 256.0D; this.field_151610_d = p_i45471_1_.nextDouble() * 256.0D; int var2; for (var2 = 0; var2 < 256; this.field_151608_f[var2] = var2++) { ; } for (var2 = 0; var2 < 256; ++var2) { int var3 = p_i45471_1_.nextInt(256 - var2) + var2; int var4 = this.field_151608_f[var2]; this.field_151608_f[var2] = this.field_151608_f[var3]; this.field_151608_f[var3] = var4; this.field_151608_f[var2 + 256] = this.field_151608_f[var2]; } } private static int func_151607_a(double p_151607_0_) { return p_151607_0_ > 0.0D ? (int)p_151607_0_ : (int)p_151607_0_ - 1; } private static double func_151604_a(int[] p_151604_0_, double p_151604_1_, double p_151604_3_) { return (double)p_151604_0_[0] * p_151604_1_ + (double)p_151604_0_[1] * p_151604_3_; } public double func_151605_a(double p_151605_1_, double p_151605_3_) { double var11 = 0.5D * (field_151614_a - 1.0D); double var13 = (p_151605_1_ + p_151605_3_) * var11; int var15 = func_151607_a(p_151605_1_ + var13); int var16 = func_151607_a(p_151605_3_ + var13); double var17 = (3.0D - field_151614_a) / 6.0D; double var19 = (double)(var15 + var16) * var17; double var21 = (double)var15 - var19; double var23 = (double)var16 - var19; double var25 = p_151605_1_ - var21; double var27 = p_151605_3_ - var23; byte var29; byte var30; if (var25 > var27) { var29 = 1; var30 = 0; } else { var29 = 0; var30 = 1; } double var31 = var25 - (double)var29 + var17; double var33 = var27 - (double)var30 + var17; double var35 = var25 - 1.0D + 2.0D * var17; double var37 = var27 - 1.0D + 2.0D * var17; int var39 = var15 & 255; int var40 = var16 & 255; int var41 = this.field_151608_f[var39 + this.field_151608_f[var40]] % 12; int var42 = this.field_151608_f[var39 + var29 + this.field_151608_f[var40 + var30]] % 12; int var43 = this.field_151608_f[var39 + 1 + this.field_151608_f[var40 + 1]] % 12; double var44 = 0.5D - var25 * var25 - var27 * var27; double var5; if (var44 < 0.0D) { var5 = 0.0D; } else { var44 *= var44; var5 = var44 * var44 * func_151604_a(field_151611_e[var41], var25, var27); } double var46 = 0.5D - var31 * var31 - var33 * var33; double var7; if (var46 < 0.0D) { var7 = 0.0D; } else { var46 *= var46; var7 = var46 * var46 * func_151604_a(field_151611_e[var42], var31, var33); } double var48 = 0.5D - var35 * var35 - var37 * var37; double var9; if (var48 < 0.0D) { var9 = 0.0D; } else { var48 *= var48; var9 = var48 * var48 * func_151604_a(field_151611_e[var43], var35, var37); } return 70.0D * (var5 + var7 + var9); } public void func_151606_a(double[] p_151606_1_, double p_151606_2_, double p_151606_4_, int p_151606_6_, int p_151606_7_, double p_151606_8_, double p_151606_10_, double p_151606_12_) { int var14 = 0; for (int var15 = 0; var15 < p_151606_7_; ++var15) { double var16 = (p_151606_4_ + (double)var15) * p_151606_10_ + this.field_151613_c; for (int var18 = 0; var18 < p_151606_6_; ++var18) { double var19 = (p_151606_2_ + (double)var18) * p_151606_8_ + this.field_151612_b; double var27 = (var19 + var16) * field_151609_g; int var29 = func_151607_a(var19 + var27); int var30 = func_151607_a(var16 + var27); double var31 = (double)(var29 + var30) * field_151615_h; double var33 = (double)var29 - var31; double var35 = (double)var30 - var31; double var37 = var19 - var33; double var39 = var16 - var35; byte var41; byte var42; if (var37 > var39) { var41 = 1; var42 = 0; } else { var41 = 0; var42 = 1; } double var43 = var37 - (double)var41 + field_151615_h; double var45 = var39 - (double)var42 + field_151615_h; double var47 = var37 - 1.0D + 2.0D * field_151615_h; double var49 = var39 - 1.0D + 2.0D * field_151615_h; int var51 = var29 & 255; int var52 = var30 & 255; int var53 = this.field_151608_f[var51 + this.field_151608_f[var52]] % 12; int var54 = this.field_151608_f[var51 + var41 + this.field_151608_f[var52 + var42]] % 12; int var55 = this.field_151608_f[var51 + 1 + this.field_151608_f[var52 + 1]] % 12; double var56 = 0.5D - var37 * var37 - var39 * var39; double var21; if (var56 < 0.0D) { var21 = 0.0D; } else { var56 *= var56; var21 = var56 * var56 * func_151604_a(field_151611_e[var53], var37, var39); } double var58 = 0.5D - var43 * var43 - var45 * var45; double var23; if (var58 < 0.0D) { var23 = 0.0D; } else { var58 *= var58; var23 = var58 * var58 * func_151604_a(field_151611_e[var54], var43, var45); } double var60 = 0.5D - var47 * var47 - var49 * var49; double var25; if (var60 < 0.0D) { var25 = 0.0D; } else { var60 *= var60; var25 = var60 * var60 * func_151604_a(field_151611_e[var55], var47, var49); } int var10001 = var14++; p_151606_1_[var10001] += 70.0D * (var21 + var23 + var25) * p_151606_12_; } } } }