Added Codecs for SurfaceRule Objects (paulevsGitch/BetterNether#503)

This commit is contained in:
Frank 2022-01-20 19:39:49 +01:00
parent 2892e6fa11
commit 4b27f00eb6
3 changed files with 45 additions and 0 deletions

View file

@ -1,14 +1,20 @@
package ru.betterend.world.surface; package ru.betterend.world.surface;
import com.mojang.serialization.Codec;
import net.minecraft.core.Registry;
import ru.bclib.interfaces.NumericProvider; import ru.bclib.interfaces.NumericProvider;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.mixin.common.SurfaceRulesContextAccessor;
import ru.bclib.util.MHelper; import ru.bclib.util.MHelper;
import ru.betterend.BetterEnd;
import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.noise.OpenSimplexNoise;
/** /**
* Noise source that returns a value in [0, 1] * Noise source that returns a value in [0, 1]
*/ */
public class SplitNoiseCondition implements NumericProvider { public class SplitNoiseCondition implements NumericProvider {
public static final SplitNoiseCondition DEFAULT = new SplitNoiseCondition();
public static final Codec<SplitNoiseCondition> CODEC = Codec.BYTE.fieldOf("split_noise").xmap((obj)->DEFAULT, obj -> (byte)0).codec();
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(4141); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(4141);
@Override @Override
@ -18,4 +24,13 @@ public class SplitNoiseCondition implements NumericProvider {
float noise = (float) NOISE.eval(x * 0.1, z * 0.1) + MHelper.randRange(-0.4F, 0.4F, MHelper.RANDOM); float noise = (float) NOISE.eval(x * 0.1, z * 0.1) + MHelper.randRange(-0.4F, 0.4F, MHelper.RANDOM);
return noise > 0 ? 1 : 0; return noise > 0 ? 1 : 0;
} }
@Override
public Codec<? extends NumericProvider> pcodec() {
return CODEC;
}
static {
Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("split_noise"), SplitNoiseCondition.CODEC);
}
} }

View file

@ -1,14 +1,20 @@
package ru.betterend.world.surface; package ru.betterend.world.surface;
import com.mojang.serialization.Codec;
import net.minecraft.core.Registry;
import ru.bclib.interfaces.NumericProvider; import ru.bclib.interfaces.NumericProvider;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.mixin.common.SurfaceRulesContextAccessor;
import ru.bclib.util.MHelper; import ru.bclib.util.MHelper;
import ru.betterend.BetterEnd;
import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.noise.OpenSimplexNoise;
/** /**
* Noise source that returns a value in [0, 3] * Noise source that returns a value in [0, 3]
*/ */
public class SulphuricSurfaceNoiseCondition implements NumericProvider { public class SulphuricSurfaceNoiseCondition implements NumericProvider {
public static final SulphuricSurfaceNoiseCondition DEFAULT = new SulphuricSurfaceNoiseCondition();
public static final Codec<SulphuricSurfaceNoiseCondition> CODEC = Codec.BYTE.fieldOf("sulphuric_surf").xmap((obj)->DEFAULT, obj -> (byte)0).codec();
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(5123); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(5123);
@Override @Override
@ -21,4 +27,13 @@ public class SulphuricSurfaceNoiseCondition implements NumericProvider {
if (value < 0.5) return 2; if (value < 0.5) return 2;
return 3; return 3;
} }
@Override
public Codec<? extends NumericProvider> pcodec() {
return CODEC;
}
static {
Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("sulphuric_surf"), SulphuricSurfaceNoiseCondition.CODEC);
}
} }

View file

@ -1,14 +1,20 @@
package ru.betterend.world.surface; package ru.betterend.world.surface;
import com.mojang.serialization.Codec;
import net.minecraft.core.Registry;
import ru.bclib.interfaces.NumericProvider; import ru.bclib.interfaces.NumericProvider;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.mixin.common.SurfaceRulesContextAccessor;
import ru.bclib.util.MHelper; import ru.bclib.util.MHelper;
import ru.betterend.BetterEnd;
import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.noise.OpenSimplexNoise;
/** /**
* Noise source that returns a value in [0, 4] * Noise source that returns a value in [0, 4]
*/ */
public class UmbraSurfaceNoiseCondition implements NumericProvider { public class UmbraSurfaceNoiseCondition implements NumericProvider {
public static final UmbraSurfaceNoiseCondition DEFAULT = new UmbraSurfaceNoiseCondition();
public static final Codec<UmbraSurfaceNoiseCondition> CODEC = Codec.BYTE.fieldOf("umbra_srf").xmap((obj)->DEFAULT, obj -> (byte)0).codec();
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(1512); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(1512);
@Override @Override
@ -26,4 +32,13 @@ public class UmbraSurfaceNoiseCondition implements NumericProvider {
if (value > -0.4) return 3; if (value > -0.4) return 3;
return 4; return 4;
} }
@Override
public Codec<? extends NumericProvider> pcodec() {
return CODEC;
}
static {
Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("umbra_srf"), UmbraSurfaceNoiseCondition.CODEC);
}
} }