diff --git a/src/main/java/ru/betterend/world/biome/EndBiome.java b/src/main/java/ru/betterend/world/biome/EndBiome.java index 0aabcfef..60cd3ef9 100644 --- a/src/main/java/ru/betterend/world/biome/EndBiome.java +++ b/src/main/java/ru/betterend/world/biome/EndBiome.java @@ -23,6 +23,9 @@ public class EndBiome extends BCLBiome { protected static final SurfaceRules.RuleSource END_MOSS = SurfaceRules.state(EndBlocks.END_MOSS.defaultBlockState()); protected static final SurfaceRules.RuleSource ENDSTONE_DUST = SurfaceRules.state(EndBlocks.ENDSTONE_DUST.defaultBlockState()); protected static final SurfaceRules.RuleSource END_MYCELIUM = SurfaceRules.state(EndBlocks.END_MYCELIUM.defaultBlockState()); + protected static final SurfaceRules.RuleSource FLAVOLITE =SurfaceRules.state(EndBlocks.FLAVOLITE.stone.defaultBlockState()); + protected static final SurfaceRules.RuleSource SULPHURIC_ROCK =SurfaceRules.state(EndBlocks.SULPHURIC_ROCK.stone.defaultBlockState()); + protected static final SurfaceRules.RuleSource BRIMSTONE =SurfaceRules.state(EndBlocks.BRIMSTONE.defaultBlockState()); public final ResourceLocation ID; diff --git a/src/main/java/ru/betterend/world/biome/land/SulphurSpringsBiome.java b/src/main/java/ru/betterend/world/biome/land/SulphurSpringsBiome.java index 70415a3b..5cfd8175 100644 --- a/src/main/java/ru/betterend/world/biome/land/SulphurSpringsBiome.java +++ b/src/main/java/ru/betterend/world/biome/land/SulphurSpringsBiome.java @@ -1,12 +1,14 @@ package ru.betterend.world.biome.land; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.levelgen.SurfaceRules; import ru.bclib.api.biomes.BCLBiomeBuilder; import ru.betterend.registry.EndEntities; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.surface.SulphuricSurfaceNoiseCondition; public class SulphurSpringsBiome extends EndBiome.Config { public SulphurSpringsBiome() { @@ -23,6 +25,13 @@ public class SulphurSpringsBiome extends EndBiome.Config { builder //TODO: 1.18 surface Rules //.surface(SurfaceBuilders.SULPHURIC_SURFACE.configured(SurfaceBuilders.DEFAULT_END_CONFIG)) + .surface( + SurfaceRules.sequence( + SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.6), END_STONE), + SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.3), FLAVOLITE), + SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(0.5), SULPHURIC_ROCK), + BRIMSTONE + )) .music(EndSounds.MUSIC_OPENSPACE) .loop(EndSounds.AMBIENT_SULPHUR_SPRINGS) .waterColor(25, 90, 157) diff --git a/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java b/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java new file mode 100644 index 00000000..8dd46f45 --- /dev/null +++ b/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java @@ -0,0 +1,28 @@ +package ru.betterend.world.surface; + +import ru.bclib.api.biomes.SurfaceNoiseCondition; +import ru.bclib.mixin.common.SurfaceRulesContextAccessor; +import ru.bclib.util.MHelper; +import ru.betterend.noise.OpenSimplexNoise; + +public class SulphuricSurfaceNoiseCondition extends SurfaceNoiseCondition { + private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(5123); + + private final double threshold; + public SulphuricSurfaceNoiseCondition(double threshold){ + this.threshold = threshold; + } + + @Override + public boolean test(SurfaceRulesContextAccessor context) { + final int x = context.getBlockX(); + final int z = context.getBlockZ(); + double value = NOISE.eval(x * 0.03, z * 0.03) + NOISE.eval(x * 0.1, z * 0.1) * 0.3 + MHelper.randRange( + -0.1, + 0.1, + MHelper.RANDOM + ); + + return value < threshold; + } +}