Serialize Surface rules in Biomes

This commit is contained in:
Frank 2022-07-09 05:12:33 +02:00
parent f6ad608c53
commit fac94c6f31
10 changed files with 40 additions and 8 deletions

View file

@ -34,7 +34,10 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
public static final Codec<EndBiome> CODEC = RecordCodecBuilder.create(instance -> public static final Codec<EndBiome> CODEC = RecordCodecBuilder.create(instance ->
codecWithSettings( codecWithSettings(
instance, instance,
Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(o -> o.hasCaves) Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(o -> o.hasCaves),
SurfaceMaterialProvider.CODEC.fieldOf("surface")
.orElse(Config.DEFAULT_MATERIAL)
.forGetter(o -> o.surfMatProv)
).apply(instance, EndBiome::new) ).apply(instance, EndBiome::new)
); );
public static final KeyDispatchDataCodec<EndBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC); public static final KeyDispatchDataCodec<EndBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
@ -56,7 +59,8 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
Optional<ResourceLocation> biomeParent, Optional<ResourceLocation> biomeParent,
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves boolean hasCaves,
SurfaceMaterialProvider surface
) { ) {
super( super(
terrainHeight, terrainHeight,
@ -72,6 +76,7 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
intendedType intendedType
); );
this.hasCaves = hasCaves; this.hasCaves = hasCaves;
this.surfMatProv = surface;
} }
private boolean hasCaves = true; private boolean hasCaves = true;
@ -192,9 +197,9 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
} }
private SurfaceMaterialProvider surfMatProv = Config.DEFAULT_MATERIAL; protected SurfaceMaterialProvider surfMatProv = Config.DEFAULT_MATERIAL;
private void setSurfaceMaterial(SurfaceMaterialProvider prov) { protected void setSurfaceMaterial(SurfaceMaterialProvider prov) {
surfMatProv = prov; surfMatProv = prov;
} }

View file

@ -4,6 +4,7 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
import org.betterx.bclib.util.WeightedList; import org.betterx.bclib.util.WeightedList;
import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.registry.EndFeatures;
import org.betterx.betterend.registry.EndParticles; import org.betterx.betterend.registry.EndParticles;
@ -49,6 +50,7 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -65,6 +67,7 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -4,6 +4,7 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
import org.betterx.bclib.util.WeightedList; import org.betterx.bclib.util.WeightedList;
import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.registry.EndFeatures;
import org.betterx.betterend.world.biome.EndBiome; import org.betterx.betterend.world.biome.EndBiome;
@ -48,6 +49,7 @@ public class EmptyEndCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -64,6 +66,7 @@ public class EmptyEndCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -4,6 +4,7 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
import org.betterx.bclib.util.WeightedList; import org.betterx.bclib.util.WeightedList;
import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.registry.EndFeatures;
import org.betterx.betterend.registry.EndParticles; import org.betterx.betterend.registry.EndParticles;
@ -52,6 +53,7 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -68,6 +70,7 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -6,6 +6,7 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
import org.betterx.bclib.api.v3.levelgen.features.BCLFeature; import org.betterx.bclib.api.v3.levelgen.features.BCLFeature;
import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder; import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder;
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
import org.betterx.bclib.util.WeightedList; import org.betterx.bclib.util.WeightedList;
import org.betterx.betterend.BetterEnd; import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.registry.EndBiomes; import org.betterx.betterend.registry.EndBiomes;
@ -15,7 +16,7 @@ import org.betterx.betterend.world.biome.EndBiome;
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature; import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature;
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeatureConfig; import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeatureConfig;
import com.mojang.datafixers.util.Function14; import com.mojang.datafixers.util.Function15;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -35,11 +36,14 @@ import java.util.Optional;
public class EndCaveBiome extends EndBiome { public class EndCaveBiome extends EndBiome {
public static final Codec<EndCaveBiome> CODEC = simpleCaveBiomeCodec(EndCaveBiome::new); public static final Codec<EndCaveBiome> CODEC = simpleCaveBiomeCodec(EndCaveBiome::new);
public static <T extends EndCaveBiome> Codec<T> simpleCaveBiomeCodec(Function14<Float, Float, Float, Integer, Boolean, Optional<ResourceLocation>, ResourceLocation, Optional<List<Climate.ParameterPoint>>, Optional<ResourceLocation>, Optional<WeightedList<ResourceLocation>>, Optional<String>, Boolean, WeightedList<Holder<ConfiguredFeature<?, ?>>>, WeightedList<Holder<ConfiguredFeature<?, ?>>>, T> builder) { public static <T extends EndCaveBiome> Codec<T> simpleCaveBiomeCodec(Function15<Float, Float, Float, Integer, Boolean, Optional<ResourceLocation>, ResourceLocation, Optional<List<Climate.ParameterPoint>>, Optional<ResourceLocation>, Optional<WeightedList<ResourceLocation>>, Optional<String>, Boolean, SurfaceMaterialProvider, WeightedList<Holder<ConfiguredFeature<?, ?>>>, WeightedList<Holder<ConfiguredFeature<?, ?>>>, T> builder) {
return RecordCodecBuilder.create(instance -> return RecordCodecBuilder.create(instance ->
codecWithSettings( codecWithSettings(
instance, instance,
Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(EndBiome::hasCaves), Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(EndBiome::hasCaves),
SurfaceMaterialProvider.CODEC.fieldOf("surface")
.orElse(new DefaultSurfaceMaterialProvider())
.forGetter(o -> o.surfMatProv),
WeightedList.listCodec(ConfiguredFeature.CODEC, "configured_features", "configured_feature") WeightedList.listCodec(ConfiguredFeature.CODEC, "configured_features", "configured_feature")
.fieldOf("floor_features") .fieldOf("floor_features")
.forGetter(o -> (WeightedList) ((EndCaveBiome) o).floorFeatures), .forGetter(o -> (WeightedList) ((EndCaveBiome) o).floorFeatures),
@ -70,6 +74,7 @@ public class EndCaveBiome extends EndBiome {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -85,7 +90,8 @@ public class EndCaveBiome extends EndBiome {
biomeParent, biomeParent,
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves hasCaves,
surface
); );
this.floorFeatures.addAll((WeightedList) floorFeatures); this.floorFeatures.addAll((WeightedList) floorFeatures);
this.ceilFeatures.addAll((WeightedList) ceilFeatures); this.ceilFeatures.addAll((WeightedList) ceilFeatures);

View file

@ -4,6 +4,7 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
import org.betterx.bclib.util.WeightedList; import org.betterx.bclib.util.WeightedList;
import org.betterx.betterend.noise.OpenSimplexNoise; import org.betterx.betterend.noise.OpenSimplexNoise;
import org.betterx.betterend.registry.EndBlocks; import org.betterx.betterend.registry.EndBlocks;
@ -58,6 +59,7 @@ public class JadeCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -74,6 +76,7 @@ public class JadeCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -62,6 +62,7 @@ public class LushAuroraCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -78,6 +79,7 @@ public class LushAuroraCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -55,6 +55,7 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome.Config {
Optional<WeightedList<ResourceLocation>> subbiomes, Optional<WeightedList<ResourceLocation>> subbiomes,
Optional<String> intendedType, Optional<String> intendedType,
boolean hasCaves, boolean hasCaves,
SurfaceMaterialProvider surface,
WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures, WeightedList<Holder<ConfiguredFeature<?, ?>>> floorFeatures,
WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures WeightedList<Holder<ConfiguredFeature<?, ?>>> ceilFeatures
) { ) {
@ -71,6 +72,7 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome.Config {
subbiomes, subbiomes,
intendedType, intendedType,
hasCaves, hasCaves,
surface,
floorFeatures, floorFeatures,
ceilFeatures ceilFeatures
); );

View file

@ -51,6 +51,11 @@ public class BlossomingSpiresBiome extends EndBiome.Config {
public BlockState getTopMaterial() { public BlockState getTopMaterial() {
return EndBlocks.PINK_MOSS.defaultBlockState(); return EndBlocks.PINK_MOSS.defaultBlockState();
} }
@Override
public BlockState getAltTopMaterial() {
return getTopMaterial();
}
}; };
} }
} }

View file

@ -73,7 +73,7 @@ public class FloatingSpireFeature extends SpireFeature {
return EndBiome.findTopMaterial( return EndBiome.findTopMaterial(
world, world,
info.getPos() info.getPos()
);//world.getBiome(info.getPos()).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial(); );//world.getBiome(info.getPos()).value().getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
} else if (info.getState(Direction.UP, 3).isAir()) { } else if (info.getState(Direction.UP, 3).isAir()) {
return EndBiome.findUnderMaterial(world, info.getPos()); return EndBiome.findUnderMaterial(world, info.getPos());
// return world.getBiome(info.getPos()) // return world.getBiome(info.getPos())