From fac94c6f31897b3d1f361058f01dca9a9a2e51ab Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 9 Jul 2022 05:12:33 +0200 Subject: [PATCH] Serialize Surface rules in Biomes --- .../org/betterx/betterend/world/biome/EndBiome.java | 13 +++++++++---- .../world/biome/cave/EmptyAuroraCaveBiome.java | 3 +++ .../world/biome/cave/EmptyEndCaveBiome.java | 3 +++ .../world/biome/cave/EmptySmaragdantCaveBiome.java | 3 +++ .../betterend/world/biome/cave/EndCaveBiome.java | 12 +++++++++--- .../betterend/world/biome/cave/JadeCaveBiome.java | 3 +++ .../world/biome/cave/LushAuroraCaveBiome.java | 2 ++ .../world/biome/cave/LushSmaragdantCaveBiome.java | 2 ++ .../world/biome/land/BlossomingSpiresBiome.java | 5 +++++ .../features/terrain/FloatingSpireFeature.java | 2 +- 10 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/betterx/betterend/world/biome/EndBiome.java b/src/main/java/org/betterx/betterend/world/biome/EndBiome.java index 84582166..ff6b92a0 100644 --- a/src/main/java/org/betterx/betterend/world/biome/EndBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/EndBiome.java @@ -34,7 +34,10 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { public static final Codec CODEC = RecordCodecBuilder.create(instance -> codecWithSettings( 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) ); public static final KeyDispatchDataCodec KEY_CODEC = KeyDispatchDataCodec.of(CODEC); @@ -56,7 +59,8 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { Optional biomeParent, Optional> subbiomes, Optional intendedType, - boolean hasCaves + boolean hasCaves, + SurfaceMaterialProvider surface ) { super( terrainHeight, @@ -72,6 +76,7 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { intendedType ); this.hasCaves = hasCaves; + this.surfMatProv = surface; } 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; } diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/EmptyAuroraCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/EmptyAuroraCaveBiome.java index c6cd9019..d50abe63 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/EmptyAuroraCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/EmptyAuroraCaveBiome.java @@ -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.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.bclib.util.WeightedList; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.registry.EndParticles; @@ -49,6 +50,7 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -65,6 +67,7 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/EmptyEndCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/EmptyEndCaveBiome.java index 55c3c94a..143f3895 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/EmptyEndCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/EmptyEndCaveBiome.java @@ -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.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.bclib.util.WeightedList; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.world.biome.EndBiome; @@ -48,6 +49,7 @@ public class EmptyEndCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -64,6 +66,7 @@ public class EmptyEndCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java index d6c43609..0e095c12 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java @@ -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.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.bclib.util.WeightedList; import org.betterx.betterend.registry.EndFeatures; import org.betterx.betterend.registry.EndParticles; @@ -52,6 +53,7 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -68,6 +70,7 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/EndCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/EndCaveBiome.java index 9e0f79c0..1adc9b30 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/EndCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/EndCaveBiome.java @@ -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.v3.levelgen.features.BCLFeature; import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.bclib.util.WeightedList; import org.betterx.betterend.BetterEnd; 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.CaveChunkPopulatorFeatureConfig; -import com.mojang.datafixers.util.Function14; +import com.mojang.datafixers.util.Function15; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; @@ -35,11 +36,14 @@ import java.util.Optional; public class EndCaveBiome extends EndBiome { public static final Codec CODEC = simpleCaveBiomeCodec(EndCaveBiome::new); - public static Codec simpleCaveBiomeCodec(Function14, ResourceLocation, Optional>, Optional, Optional>, Optional, Boolean, WeightedList>>, WeightedList>>, T> builder) { + public static Codec simpleCaveBiomeCodec(Function15, ResourceLocation, Optional>, Optional, Optional>, Optional, Boolean, SurfaceMaterialProvider, WeightedList>>, WeightedList>>, T> builder) { return RecordCodecBuilder.create(instance -> codecWithSettings( instance, 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") .fieldOf("floor_features") .forGetter(o -> (WeightedList) ((EndCaveBiome) o).floorFeatures), @@ -70,6 +74,7 @@ public class EndCaveBiome extends EndBiome { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -85,7 +90,8 @@ public class EndCaveBiome extends EndBiome { biomeParent, subbiomes, intendedType, - hasCaves + hasCaves, + surface ); this.floorFeatures.addAll((WeightedList) floorFeatures); this.ceilFeatures.addAll((WeightedList) ceilFeatures); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/JadeCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/JadeCaveBiome.java index d0c66330..0cc08a86 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/JadeCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/JadeCaveBiome.java @@ -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.BiomeSupplier; import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings; +import org.betterx.bclib.interfaces.SurfaceMaterialProvider; import org.betterx.bclib.util.WeightedList; import org.betterx.betterend.noise.OpenSimplexNoise; import org.betterx.betterend.registry.EndBlocks; @@ -58,6 +59,7 @@ public class JadeCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -74,6 +76,7 @@ public class JadeCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/LushAuroraCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/LushAuroraCaveBiome.java index 82456b31..a32e9df9 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/LushAuroraCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/LushAuroraCaveBiome.java @@ -62,6 +62,7 @@ public class LushAuroraCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -78,6 +79,7 @@ public class LushAuroraCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/cave/LushSmaragdantCaveBiome.java b/src/main/java/org/betterx/betterend/world/biome/cave/LushSmaragdantCaveBiome.java index 5344f308..68d6be94 100644 --- a/src/main/java/org/betterx/betterend/world/biome/cave/LushSmaragdantCaveBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/cave/LushSmaragdantCaveBiome.java @@ -55,6 +55,7 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome.Config { Optional> subbiomes, Optional intendedType, boolean hasCaves, + SurfaceMaterialProvider surface, WeightedList>> floorFeatures, WeightedList>> ceilFeatures ) { @@ -71,6 +72,7 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome.Config { subbiomes, intendedType, hasCaves, + surface, floorFeatures, ceilFeatures ); diff --git a/src/main/java/org/betterx/betterend/world/biome/land/BlossomingSpiresBiome.java b/src/main/java/org/betterx/betterend/world/biome/land/BlossomingSpiresBiome.java index 9466717a..0a52e48c 100644 --- a/src/main/java/org/betterx/betterend/world/biome/land/BlossomingSpiresBiome.java +++ b/src/main/java/org/betterx/betterend/world/biome/land/BlossomingSpiresBiome.java @@ -51,6 +51,11 @@ public class BlossomingSpiresBiome extends EndBiome.Config { public BlockState getTopMaterial() { return EndBlocks.PINK_MOSS.defaultBlockState(); } + + @Override + public BlockState getAltTopMaterial() { + return getTopMaterial(); + } }; } } diff --git a/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java b/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java index 53c05530..1abf83dd 100644 --- a/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java +++ b/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java @@ -73,7 +73,7 @@ public class FloatingSpireFeature extends SpireFeature { return EndBiome.findTopMaterial( world, 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()) { return EndBiome.findUnderMaterial(world, info.getPos()); // return world.getBiome(info.getPos())