- Worldgen breaks

This commit is contained in:
JFronny 2020-08-07 00:18:24 +02:00
parent ae8b91cbde
commit 049ef096ae
5 changed files with 105 additions and 5 deletions

View File

@ -63,10 +63,10 @@ public class MathHelperMixin {
// return d < i ? i - 1 : i;
//}
//@Overwrite
//public static long lfloor(double d) {
// return floor(d / 4) * 4;
//}
@Overwrite
public static long lfloor(double d) {
return MathHelper.floor(d / 4) * 4;
}
//@Overwrite
//public static float abs(float f) {

View File

@ -0,0 +1,42 @@
package io.gitlab.jfronny.quickmeth.mixin;
import net.minecraft.util.math.noise.OctavePerlinNoiseSampler;
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;
import static net.minecraft.util.math.noise.OctavePerlinNoiseSampler.maintainPrecision;
@Mixin(OctavePerlinNoiseSampler.class)
public class MixinOctavePerlinNoiseSampler {
@Shadow
@Final
private PerlinNoiseSampler[] octaveSamplers;
@Shadow
@Final
private double field_20659;
@Shadow
@Final
private double field_20660;
@Overwrite
public double sample(double x, double y, double z, double d, double e, boolean bl) {
double f = 0.0D;
double g = this.field_20660;
double h = this.field_20659;
PerlinNoiseSampler[] var18 = this.octaveSamplers;
int var19 = var18.length;
for (PerlinNoiseSampler perlinNoiseSampler : var18) {
if (perlinNoiseSampler != null) {
f += perlinNoiseSampler.sample(x * g - maintainPrecision(x * g), perlinNoiseSampler.originY - (bl ? -perlinNoiseSampler.originY : maintainPrecision(y * g)), maintainPrecision(z * g), d * g, e * g) * h;
}
g /= 2.0D;
h *= 2.0D;
}
return f;
}
}

View File

@ -0,0 +1,48 @@
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));
}
}

View File

@ -7,4 +7,12 @@ public class quickmeth implements ModInitializer {
public void onInitialize() {
}
public static double BoxedInvert(double min, double max, double value) {
return max - value + min;
}
public static double BoxedInvert(double value) {
return BoxedInvert(Math.floor(value), Math.ceil(value), value);
}
}

View File

@ -4,7 +4,9 @@
"package": "io.gitlab.jfronny.quickmeth.mixin",
"compatibilityLevel": "JAVA_8",
"mixins": [
"MathHelperMixin"
"MathHelperMixin",
"MixinOctavePerlinNoiseSampler",
"MixinPerlinNoiseSampler"
],
"client": [
],