Advertisement
BillyGalbreath

Untitled

Mar 30th, 2023
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1. public Holder<Biome> getBiome(BlockPos pos) {
  2.         int i = pos.getX() - 2;
  3.         int j = pos.getY() - 2;
  4.         int k = pos.getZ() - 2;
  5.         int l = i >> 2;
  6.         int m = j >> 2;
  7.         int n = k >> 2;
  8.         double d = (double)(i & 3) / 4.0D;
  9.         double e = (double)(j & 3) / 4.0D;
  10.         double f = (double)(k & 3) / 4.0D;
  11.         int o = 0;
  12.         double g = Double.POSITIVE_INFINITY;
  13.  
  14.         for(int p = 0; p < 8; ++p) {
  15.             boolean bl = (p & 4) == 0;
  16.             boolean bl2 = (p & 2) == 0;
  17.             boolean bl3 = (p & 1) == 0;
  18.             int q = bl ? l : l + 1;
  19.             int r = bl2 ? m : m + 1;
  20.             int s = bl3 ? n : n + 1;
  21.             double h = bl ? d : d - 1.0D;
  22.             double t = bl2 ? e : e - 1.0D;
  23.             double u = bl3 ? f : f - 1.0D;
  24.             double v = getFiddledDistance(this.biomeZoomSeed, q, r, s, h, t, u);
  25.             if (g > v) {
  26.                 o = p;
  27.                 g = v;
  28.             }
  29.         }
  30.  
  31.         int w = (o & 4) == 0 ? l : l + 1;
  32.         int x = (o & 2) == 0 ? m : m + 1;
  33.         int y = (o & 1) == 0 ? n : n + 1;
  34.         return this.noiseBiomeSource.getNoiseBiome(w, x, y);
  35.     }
  36.  
  37.     public Holder<Biome> getNoiseBiomeAtPosition(double x, double y, double z) {
  38.         int i = QuartPos.fromBlock(Mth.floor(x));
  39.         int j = QuartPos.fromBlock(Mth.floor(y));
  40.         int k = QuartPos.fromBlock(Mth.floor(z));
  41.         return this.getNoiseBiomeAtQuart(i, j, k);
  42.     }
  43.  
  44.     public Holder<Biome> getNoiseBiomeAtPosition(BlockPos pos) {
  45.         int i = QuartPos.fromBlock(pos.getX());
  46.         int j = QuartPos.fromBlock(pos.getY());
  47.         int k = QuartPos.fromBlock(pos.getZ());
  48.         return this.getNoiseBiomeAtQuart(i, j, k);
  49.     }
  50.  
  51.     public Holder<Biome> getNoiseBiomeAtQuart(int biomeX, int biomeY, int biomeZ) {
  52.         return this.noiseBiomeSource.getNoiseBiome(biomeX, biomeY, biomeZ);
  53.     }
  54.  
  55.     private static double getFiddledDistance(long l, int i, int j, int k, double d, double e, double f) {
  56.         long m = LinearCongruentialGenerator.next(l, (long)i);
  57.         m = LinearCongruentialGenerator.next(m, (long)j);
  58.         m = LinearCongruentialGenerator.next(m, (long)k);
  59.         m = LinearCongruentialGenerator.next(m, (long)i);
  60.         m = LinearCongruentialGenerator.next(m, (long)j);
  61.         m = LinearCongruentialGenerator.next(m, (long)k);
  62.         double g = getFiddle(m);
  63.         m = LinearCongruentialGenerator.next(m, l);
  64.         double h = getFiddle(m);
  65.         m = LinearCongruentialGenerator.next(m, l);
  66.         double n = getFiddle(m);
  67.         return Mth.square(f + n) + Mth.square(e + h) + Mth.square(d + g);
  68.     }
  69.  
  70.     private static double getFiddle(long l) {
  71.         double d = (double)Math.floorMod(l >> 24, 1024) / 1024.0D;
  72.         return (d - 0.5D) * 0.9D;
  73.     }
  74.  
  75.     public interface NoiseBiomeSource {
  76.         Holder<Biome> getNoiseBiome(int biomeX, int biomeY, int biomeZ);
  77.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement