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.api.ModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
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.TagAPI;
|
||||||
import ru.bclib.api.WorldDataAPI;
|
import ru.bclib.api.WorldDataAPI;
|
||||||
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
||||||
|
@ -40,11 +42,11 @@ public class BCLib implements ModInitializer {
|
||||||
DataExchangeAPI.registerMod(MOD_ID);
|
DataExchangeAPI.registerMod(MOD_ID);
|
||||||
|
|
||||||
DataExchangeAPI.registerDescriptors(List.of(
|
DataExchangeAPI.registerDescriptors(List.of(
|
||||||
HelloClient.DESCRIPTOR,
|
HelloClient.DESCRIPTOR,
|
||||||
HelloServer.DESCRIPTOR,
|
HelloServer.DESCRIPTOR,
|
||||||
RequestFiles.DESCRIPTOR,
|
RequestFiles.DESCRIPTOR,
|
||||||
SendFiles.DESCRIPTOR,
|
SendFiles.DESCRIPTOR,
|
||||||
Chunker.DESCRIPTOR
|
Chunker.DESCRIPTOR
|
||||||
));
|
));
|
||||||
|
|
||||||
BCLibPatch.register();
|
BCLibPatch.register();
|
||||||
|
@ -62,4 +64,9 @@ public class BCLib implements ModInitializer {
|
||||||
public static ResourceLocation makeID(String path) {
|
public static ResourceLocation makeID(String path) {
|
||||||
return new ResourceLocation(MOD_ID, 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.block.Block;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
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.SurfaceRules;
|
||||||
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
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 net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||||
import ru.bclib.util.ColorUtil;
|
import ru.bclib.util.ColorUtil;
|
||||||
import ru.bclib.world.biomes.BCLBiome;
|
import ru.bclib.world.biomes.BCLBiome;
|
||||||
|
@ -40,6 +42,7 @@ import java.util.function.Consumer;
|
||||||
|
|
||||||
public class BCLBiomeBuilder {
|
public class BCLBiomeBuilder {
|
||||||
private static final BCLBiomeBuilder INSTANCE = new 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 List<ConfiguredStructureFeature> structures = new ArrayList<>(16);
|
||||||
private BiomeGenerationSettings.Builder generationSettings;
|
private BiomeGenerationSettings.Builder generationSettings;
|
||||||
|
@ -494,6 +497,21 @@ public class BCLBiomeBuilder {
|
||||||
return surface(SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, SurfaceRules.state(surfaceBlock.defaultBlockState())));
|
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.
|
* Adds surface rule to this biome.
|
||||||
* @param surfaceRule {link SurfaceRules.RuleSource} surface rule.
|
* @param surfaceRule {link SurfaceRules.RuleSource} surface rule.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue