package io.gitlab.jfronny.quickmeth.mixin; import io.gitlab.jfronny.quickmeth.MathUtil; 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 = MathUtil.BoxedInvert(x); y = MathUtil.BoxedInvert(y); z = MathUtil.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 MathUtil.BoxedInvert(((PerlinNoiseSampler)(Object)this).sample(i, j, k, l, m - t, n, o, p, q)); } }