QuickMath/src/main/java/io/gitlab/jfronny/quickmeth/mixin/MixinPerlinNoiseSampler.java

49 lines
1.5 KiB
Java

package io.gitlab.jfronny.quickmeth.mixin;
import io.gitlab.jfronny.quickmeth.quickmeth;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.noise.PerlinNoiseSampler;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(PerlinNoiseSampler.class)
public class MixinPerlinNoiseSampler {
@Shadow @Final
public double originX;
@Shadow @Final
public double originY;
@Shadow @Final
public double originZ;
@Overwrite
public double sample(double x, double y, double z, double d, double e) {
x = quickmeth.BoxedInvert(x);
y = quickmeth.BoxedInvert(y);
z = quickmeth.BoxedInvert(z);
double f = x + this.originX;
double g = y + this.originY;
double h = z + this.originZ;
int i = MathHelper.floor(f);
int j = MathHelper.floor(g);
int k = MathHelper.floor(h);
double l = f - (double)i;
double m = g - (double)j;
double n = h - (double)k;
double o = MathHelper.perlinFade(l);
double p = MathHelper.perlinFade(m);
double q = MathHelper.perlinFade(n);
double t;
if (d != 0.0D) {
double r = Math.min(e, m);
t = (double)MathHelper.floor(r / d) * d;
} else {
t = 0.0D;
}
return quickmeth.BoxedInvert(((PerlinNoiseSampler)(Object)this).sample(i, j, k, l, m - t, n, o, p, q));
}
}