Example implementation of custom noise for SurfaceRules
This commit is contained in:
parent
1c79354e13
commit
e8a40246b4
3 changed files with 40 additions and 0 deletions
|
@ -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 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 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 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;
|
public final ResourceLocation ID;
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
package ru.betterend.world.biome.land;
|
package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.world.biome.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
import ru.betterend.world.surface.SulphuricSurfaceNoiseCondition;
|
||||||
|
|
||||||
public class SulphurSpringsBiome extends EndBiome.Config {
|
public class SulphurSpringsBiome extends EndBiome.Config {
|
||||||
public SulphurSpringsBiome() {
|
public SulphurSpringsBiome() {
|
||||||
|
@ -23,6 +25,13 @@ public class SulphurSpringsBiome extends EndBiome.Config {
|
||||||
builder
|
builder
|
||||||
//TODO: 1.18 surface Rules
|
//TODO: 1.18 surface Rules
|
||||||
//.surface(SurfaceBuilders.SULPHURIC_SURFACE.configured(SurfaceBuilders.DEFAULT_END_CONFIG))
|
//.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)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.loop(EndSounds.AMBIENT_SULPHUR_SPRINGS)
|
.loop(EndSounds.AMBIENT_SULPHUR_SPRINGS)
|
||||||
.waterColor(25, 90, 157)
|
.waterColor(25, 90, 157)
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue