Surface builder for two blocks
This commit is contained in:
parent
c7ce0b5547
commit
ae6c0e9aac
2 changed files with 30 additions and 5 deletions
|
@ -4,6 +4,8 @@ import net.fabricmc.api.EnvType;
|
|||
import net.fabricmc.api.ModInitializer;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.levelgen.Noises;
|
||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||
import ru.bclib.api.TagAPI;
|
||||
import ru.bclib.api.WorldDataAPI;
|
||||
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
||||
|
@ -40,11 +42,11 @@ public class BCLib implements ModInitializer {
|
|||
DataExchangeAPI.registerMod(MOD_ID);
|
||||
|
||||
DataExchangeAPI.registerDescriptors(List.of(
|
||||
HelloClient.DESCRIPTOR,
|
||||
HelloServer.DESCRIPTOR,
|
||||
RequestFiles.DESCRIPTOR,
|
||||
SendFiles.DESCRIPTOR,
|
||||
Chunker.DESCRIPTOR
|
||||
HelloClient.DESCRIPTOR,
|
||||
HelloServer.DESCRIPTOR,
|
||||
RequestFiles.DESCRIPTOR,
|
||||
SendFiles.DESCRIPTOR,
|
||||
Chunker.DESCRIPTOR
|
||||
));
|
||||
|
||||
BCLibPatch.register();
|
||||
|
@ -62,4 +64,9 @@ public class BCLib implements ModInitializer {
|
|||
public static ResourceLocation makeID(String path) {
|
||||
return new ResourceLocation(MOD_ID, path);
|
||||
}
|
||||
|
||||
private static SurfaceRules.ConditionSource surfaceNoiseAbove(double d) {
|
||||
|
||||
return SurfaceRules.noiseCondition(Noises.SURFACE, d / 8.25, Double.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,9 +24,11 @@ import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData;
|
|||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||
import net.minecraft.world.level.levelgen.Noises;
|
||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||
import net.minecraft.world.level.levelgen.placement.CaveSurface;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import ru.bclib.util.ColorUtil;
|
||||
import ru.bclib.world.biomes.BCLBiome;
|
||||
|
@ -40,6 +42,7 @@ import java.util.function.Consumer;
|
|||
|
||||
public class BCLBiomeBuilder {
|
||||
private static final BCLBiomeBuilder INSTANCE = new BCLBiomeBuilder();
|
||||
private static final SurfaceRules.ConditionSource SURFACE_NOISE = SurfaceRules.noiseCondition(Noises.SOUL_SAND_LAYER, -0.012);
|
||||
|
||||
private List<ConfiguredStructureFeature> structures = new ArrayList<>(16);
|
||||
private BiomeGenerationSettings.Builder generationSettings;
|
||||
|
@ -494,6 +497,21 @@ public class BCLBiomeBuilder {
|
|||
return surface(SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, SurfaceRules.state(surfaceBlock.defaultBlockState())));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds blocks to the biome surface and below it (with specified depth).
|
||||
* @param surfaceBlock {@link Block} that will cover biome.
|
||||
* @param subterrainBlock {@link Block} below it with specified depth.
|
||||
* @param depth thickness of bottom block layer.
|
||||
* @return same {@link BCLBiomeBuilder} instance.
|
||||
*/
|
||||
public BCLBiomeBuilder surface(Block surfaceBlock, Block subterrainBlock, int depth) {
|
||||
SurfaceRules.RuleSource topRule = SurfaceRules.state(surfaceBlock.defaultBlockState());
|
||||
SurfaceRules.RuleSource subterrainRule = SurfaceRules.state(subterrainBlock.defaultBlockState());
|
||||
topRule = SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, topRule);
|
||||
subterrainRule = SurfaceRules.ifTrue(SurfaceRules.stoneDepthCheck(depth, false, false, CaveSurface.FLOOR), subterrainRule);
|
||||
return surface(SurfaceRules.sequence(topRule, subterrainRule));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds surface rule to this biome.
|
||||
* @param surfaceRule {link SurfaceRules.RuleSource} surface rule.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue