Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 121 lines 3.7 kB view raw
1package net.minecraft.server; 2 3import java.util.Random; 4 5public class NoiseGenerator2 { 6 7 private static int[][] d = 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 } }; 8 private int[] e; 9 public double a; 10 public double b; 11 public double c; 12 private static final double f = 0.5D * (Math.sqrt(3.0D) - 1.0D); 13 private static final double g = (3.0D - Math.sqrt(3.0D)) / 6.0D; 14 15 public NoiseGenerator2() { 16 this(new Random()); 17 } 18 19 public NoiseGenerator2(Random random) { 20 this.e = new int[512]; 21 this.a = random.nextDouble() * 256.0D; 22 this.b = random.nextDouble() * 256.0D; 23 this.c = random.nextDouble() * 256.0D; 24 25 int i; 26 27 for (i = 0; i < 256; this.e[i] = i++) { 28 ; 29 } 30 31 for (i = 0; i < 256; ++i) { 32 int j = random.nextInt(256 - i) + i; 33 int k = this.e[i]; 34 35 this.e[i] = this.e[j]; 36 this.e[j] = k; 37 this.e[i + 256] = this.e[i]; 38 } 39 } 40 41 private static int a(double d0) { 42 return d0 > 0.0D ? (int) d0 : (int) d0 - 1; 43 } 44 45 private static double a(int[] aint, double d0, double d1) { 46 return (double) aint[0] * d0 + (double) aint[1] * d1; 47 } 48 49 public void a(double[] adouble, double d0, double d1, int i, int j, double d2, double d3, double d4) { 50 int k = 0; 51 52 for (int l = 0; l < i; ++l) { 53 double d5 = (d0 + (double) l) * d2 + this.a; 54 55 for (int i1 = 0; i1 < j; ++i1) { 56 double d6 = (d1 + (double) i1) * d3 + this.b; 57 double d7 = (d5 + d6) * f; 58 int j1 = a(d5 + d7); 59 int k1 = a(d6 + d7); 60 double d8 = (double) (j1 + k1) * g; 61 double d9 = (double) j1 - d8; 62 double d10 = (double) k1 - d8; 63 double d11 = d5 - d9; 64 double d12 = d6 - d10; 65 byte b0; 66 byte b1; 67 68 if (d11 > d12) { 69 b0 = 1; 70 b1 = 0; 71 } else { 72 b0 = 0; 73 b1 = 1; 74 } 75 76 double d13 = d11 - (double) b0 + g; 77 double d14 = d12 - (double) b1 + g; 78 double d15 = d11 - 1.0D + 2.0D * g; 79 double d16 = d12 - 1.0D + 2.0D * g; 80 int l1 = j1 & 255; 81 int i2 = k1 & 255; 82 int j2 = this.e[l1 + this.e[i2]] % 12; 83 int k2 = this.e[l1 + b0 + this.e[i2 + b1]] % 12; 84 int l2 = this.e[l1 + 1 + this.e[i2 + 1]] % 12; 85 double d17 = 0.5D - d11 * d11 - d12 * d12; 86 double d18; 87 88 if (d17 < 0.0D) { 89 d18 = 0.0D; 90 } else { 91 d17 *= d17; 92 d18 = d17 * d17 * a(d[j2], d11, d12); 93 } 94 95 double d19 = 0.5D - d13 * d13 - d14 * d14; 96 double d20; 97 98 if (d19 < 0.0D) { 99 d20 = 0.0D; 100 } else { 101 d19 *= d19; 102 d20 = d19 * d19 * a(d[k2], d13, d14); 103 } 104 105 double d21 = 0.5D - d15 * d15 - d16 * d16; 106 double d22; 107 108 if (d21 < 0.0D) { 109 d22 = 0.0D; 110 } else { 111 d21 *= d21; 112 d22 = d21 * d21 * a(d[l2], d15, d16); 113 } 114 115 int i3 = k++; 116 117 adouble[i3] += 70.0D * (d18 + d20 + d22) * d4; 118 } 119 } 120 } 121}