Add info about top/underMaterial to BE-biomes
This commit is contained in:
parent
5c12813b3e
commit
633c5ad553
26 changed files with 430 additions and 67 deletions
|
@ -2,13 +2,18 @@ package ru.betterend.world.biome;
|
||||||
|
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.data.worldgen.StructureFeatures;
|
import net.minecraft.data.worldgen.StructureFeatures;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.BiomeAPI;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.bclib.world.biomes.BCLBiome;
|
import ru.bclib.world.biomes.BCLBiome;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.interfaces.StructureFeaturesAccessor;
|
import ru.betterend.interfaces.StructureFeaturesAccessor;
|
||||||
|
@ -16,10 +21,30 @@ import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
|
||||||
public class EndBiome extends BCLBiome {
|
public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
|
||||||
|
public static class DefaultSurfaceMaterialProvider implements SurfaceMaterialProvider{
|
||||||
|
public static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState();
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return END_STONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return getTopMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getUnderMaterial() {
|
||||||
|
return END_STONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract static class Config {
|
public abstract static class Config {
|
||||||
|
public static final SurfaceMaterialProvider DEFAULT_MATERIAL = new DefaultSurfaceMaterialProvider();
|
||||||
|
|
||||||
protected static final StructureFeaturesAccessor VANILLA_FEATURES = (StructureFeaturesAccessor)new StructureFeatures();
|
protected static final StructureFeaturesAccessor VANILLA_FEATURES = (StructureFeaturesAccessor)new StructureFeatures();
|
||||||
protected static final SurfaceRules.RuleSource END_STONE = SurfaceRules.state(Blocks.END_STONE.defaultBlockState());
|
protected static final SurfaceRules.RuleSource END_STONE = SurfaceRules.state(DefaultSurfaceMaterialProvider.END_STONE);
|
||||||
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());
|
||||||
|
@ -47,6 +72,10 @@ public class EndBiome extends BCLBiome {
|
||||||
protected boolean hasCaves(){
|
protected boolean hasCaves(){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return DEFAULT_MATERIAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EndBiome(ResourceLocation biomeID, Biome biome) {
|
public EndBiome(ResourceLocation biomeID, Biome biome) {
|
||||||
|
@ -73,7 +102,54 @@ public class EndBiome extends BCLBiome {
|
||||||
|
|
||||||
EndBiome biome = builder.build(biomeConfig.getSupplier());
|
EndBiome biome = builder.build(biomeConfig.getSupplier());
|
||||||
biome.addCustomData("has_caves", biomeConfig.hasCaves());
|
biome.addCustomData("has_caves", biomeConfig.hasCaves());
|
||||||
|
biome.setSurfaceMaterial(biomeConfig.surfaceMaterial());
|
||||||
|
|
||||||
return biome;
|
return biome;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private SurfaceMaterialProvider surfMatProv = Config.DEFAULT_MATERIAL;
|
||||||
|
private void setSurfaceMaterial(SurfaceMaterialProvider prov) {
|
||||||
|
surfMatProv = prov;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return surfMatProv.getTopMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockState getUnderMaterial() {
|
||||||
|
return surfMatProv.getUnderMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return surfMatProv.getAltTopMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BlockState findTopMaterial(BCLBiome biome){
|
||||||
|
if (biome instanceof SurfaceMaterialProvider smp){
|
||||||
|
return smp.getTopMaterial();
|
||||||
|
}
|
||||||
|
return EndBiome.Config.DEFAULT_MATERIAL.getTopMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BlockState findTopMaterial(Biome biome){
|
||||||
|
return findTopMaterial(BiomeAPI.getBiome(biome));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BlockState findTopMaterial(WorldGenLevel world, BlockPos pos){
|
||||||
|
return findTopMaterial(BiomeAPI.getBiome(world.getBiome(pos)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BlockState findUnderMaterial(BCLBiome biome){
|
||||||
|
if (biome instanceof SurfaceMaterialProvider smp){
|
||||||
|
return smp.getTopMaterial();
|
||||||
|
}
|
||||||
|
return EndBiome.Config.DEFAULT_MATERIAL.getTopMaterial();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BlockState findUnderMaterial(WorldGenLevel world, BlockPos pos){
|
||||||
|
return findUnderMaterial(BiomeAPI.getBiome(world.getBiome(pos)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
@ -10,33 +13,43 @@ import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.world.biome.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class AmberLandBiome extends EndBiome.Config {
|
public class AmberLandBiome extends EndBiome.Config {
|
||||||
public AmberLandBiome() {
|
public AmberLandBiome() {
|
||||||
super("amber_land");
|
super("amber_land");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addCustomBuildData(BCLBiomeBuilder builder) {
|
protected void addCustomBuildData(BCLBiomeBuilder builder) {
|
||||||
builder.fogColor(255, 184, 71)
|
builder.fogColor(255, 184, 71)
|
||||||
.fogDensity(2.0F)
|
.fogDensity(2.0F)
|
||||||
.plantsColor(219, 115, 38)
|
.plantsColor(219, 115, 38)
|
||||||
.waterAndFogColor(145, 108, 72)
|
.waterAndFogColor(145, 108, 72)
|
||||||
.music(EndSounds.MUSIC_FOREST)
|
.music(EndSounds.MUSIC_FOREST)
|
||||||
.loop(EndSounds.AMBIENT_AMBER_LAND)
|
.loop(EndSounds.AMBIENT_AMBER_LAND)
|
||||||
.particles(EndParticles.AMBER_SPHERE, 0.001F)
|
.particles(EndParticles.AMBER_SPHERE, 0.001F)
|
||||||
.surface(EndBlocks.AMBER_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.feature(EndFeatures.AMBER_ORE)
|
.feature(EndFeatures.AMBER_ORE)
|
||||||
.feature(EndFeatures.END_LAKE_RARE)
|
.feature(EndFeatures.END_LAKE_RARE)
|
||||||
.feature(EndFeatures.HELIX_TREE)
|
.feature(EndFeatures.HELIX_TREE)
|
||||||
.feature(EndFeatures.LANCELEAF)
|
.feature(EndFeatures.LANCELEAF)
|
||||||
.feature(EndFeatures.GLOW_PILLAR)
|
.feature(EndFeatures.GLOW_PILLAR)
|
||||||
.feature(EndFeatures.AMBER_GRASS)
|
.feature(EndFeatures.AMBER_GRASS)
|
||||||
.feature(EndFeatures.AMBER_ROOT)
|
.feature(EndFeatures.AMBER_ROOT)
|
||||||
.feature(EndFeatures.BULB_MOSS)
|
.feature(EndFeatures.BULB_MOSS)
|
||||||
.feature(EndFeatures.BULB_MOSS_WOOD)
|
.feature(EndFeatures.BULB_MOSS_WOOD)
|
||||||
.feature(EndFeatures.CHARNIA_ORANGE)
|
.feature(EndFeatures.CHARNIA_ORANGE)
|
||||||
.feature(EndFeatures.CHARNIA_RED)
|
.feature(EndFeatures.CHARNIA_RED)
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 4)
|
.spawn(EntityType.ENDERMAN, 50, 1, 4)
|
||||||
.spawn(EndEntities.END_SLIME, 30, 1, 2);
|
.spawn(EndEntities.END_SLIME, 30, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.AMBER_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
@ -23,7 +26,7 @@ public class BlossomingSpiresBiome extends EndBiome.Config {
|
||||||
builder.fogColor(241, 146, 229)
|
builder.fogColor(241, 146, 229)
|
||||||
.fogDensity(1.7F)
|
.fogDensity(1.7F)
|
||||||
.plantsColor(122, 45, 122)
|
.plantsColor(122, 45, 122)
|
||||||
.surface(EndBlocks.PINK_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.music(EndSounds.MUSIC_FOREST)
|
.music(EndSounds.MUSIC_FOREST)
|
||||||
.loop(EndSounds.AMBIENT_BLOSSOMING_SPIRES)
|
.loop(EndSounds.AMBIENT_BLOSSOMING_SPIRES)
|
||||||
.feature(EndFeatures.SPIRE)
|
.feature(EndFeatures.SPIRE)
|
||||||
|
@ -40,4 +43,14 @@ public class BlossomingSpiresBiome extends EndBiome.Config {
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 4)
|
.spawn(EntityType.ENDERMAN, 50, 1, 4)
|
||||||
.spawn(EndEntities.SILK_MOTH, 5, 1, 2);
|
.spawn(EndEntities.SILK_MOTH, 5, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.PINK_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,11 @@ package ru.betterend.world.biome.land;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.data.worldgen.placement.EndPlacements;
|
import net.minecraft.data.worldgen.placement.EndPlacements;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
@ -22,7 +25,7 @@ public class ChorusForestBiome extends EndBiome.Config {
|
||||||
.fogDensity(1.5F)
|
.fogDensity(1.5F)
|
||||||
.plantsColor(122, 45, 122)
|
.plantsColor(122, 45, 122)
|
||||||
.waterAndFogColor(73, 30, 73)
|
.waterAndFogColor(73, 30, 73)
|
||||||
.surface(EndBlocks.CHORUS_NYLIUM)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.particles(ParticleTypes.PORTAL, 0.01F)
|
.particles(ParticleTypes.PORTAL, 0.01F)
|
||||||
.loop(EndSounds.AMBIENT_CHORUS_FOREST)
|
.loop(EndSounds.AMBIENT_CHORUS_FOREST)
|
||||||
.music(EndSounds.MUSIC_DARK)
|
.music(EndSounds.MUSIC_DARK)
|
||||||
|
@ -42,4 +45,14 @@ public class ChorusForestBiome extends EndBiome.Config {
|
||||||
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 4);
|
.spawn(EntityType.ENDERMAN, 50, 1, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.CHORUS_NYLIUM.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
@ -17,9 +20,19 @@ public class CrystalMountainsBiome extends EndBiome.Config {
|
||||||
protected void addCustomBuildData(BCLBiomeBuilder builder) {
|
protected void addCustomBuildData(BCLBiomeBuilder builder) {
|
||||||
builder.structure(EndStructures.MOUNTAIN.getFeatureConfigured())
|
builder.structure(EndStructures.MOUNTAIN.getFeatureConfigured())
|
||||||
.plantsColor(255, 133, 211)
|
.plantsColor(255, 133, 211)
|
||||||
.surface(EndBlocks.CRYSTAL_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.music(EndSounds.MUSIC_OPENSPACE)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.feature(EndFeatures.CRYSTAL_GRASS)
|
.feature(EndFeatures.CRYSTAL_GRASS)
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.CRYSTAL_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
|
@ -21,7 +24,7 @@ public class DragonGraveyardsBiome extends EndBiome.Config {
|
||||||
.particles(EndParticles.FIREFLY, 0.0007F)
|
.particles(EndParticles.FIREFLY, 0.0007F)
|
||||||
.music(EndSounds.MUSIC_OPENSPACE)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.loop(EndSounds.AMBIENT_GLOWING_GRASSLANDS)
|
.loop(EndSounds.AMBIENT_GLOWING_GRASSLANDS)
|
||||||
.surface(EndBlocks.SANGNUM)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.waterAndFogColor(203, 59, 167)
|
.waterAndFogColor(203, 59, 167)
|
||||||
.plantsColor(244, 46, 79)
|
.plantsColor(244, 46, 79)
|
||||||
.feature(EndFeatures.OBSIDIAN_PILLAR_BASEMENT)
|
.feature(EndFeatures.OBSIDIAN_PILLAR_BASEMENT)
|
||||||
|
@ -35,4 +38,14 @@ public class DragonGraveyardsBiome extends EndBiome.Config {
|
||||||
.feature(EndFeatures.CLAWFERN)
|
.feature(EndFeatures.CLAWFERN)
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.SANGNUM.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
@ -18,7 +21,7 @@ public class DryShrublandBiome extends EndBiome.Config {
|
||||||
.fogDensity(1.2F)
|
.fogDensity(1.2F)
|
||||||
.waterAndFogColor(113, 88, 53)
|
.waterAndFogColor(113, 88, 53)
|
||||||
.plantsColor(237, 122, 66)
|
.plantsColor(237, 122, 66)
|
||||||
.surface(EndBlocks.RUTISCUS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.music(EndSounds.MUSIC_OPENSPACE)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.feature(EndFeatures.LUCERNIA_BUSH_RARE)
|
.feature(EndFeatures.LUCERNIA_BUSH_RARE)
|
||||||
.feature(EndFeatures.ORANGO)
|
.feature(EndFeatures.ORANGO)
|
||||||
|
@ -28,4 +31,14 @@ public class DryShrublandBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.RUTISCUS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.world.biome.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
@ -17,7 +20,7 @@ public class DustWastelandsBiome extends EndBiome.Config {
|
||||||
builder.fogColor(226, 239, 168)
|
builder.fogColor(226, 239, 168)
|
||||||
.fogDensity(2)
|
.fogDensity(2)
|
||||||
.waterAndFogColor(192, 180, 131)
|
.waterAndFogColor(192, 180, 131)
|
||||||
.surface(EndBlocks.ENDSTONE_DUST)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
//TODO: 1.18 removed
|
//TODO: 1.18 removed
|
||||||
//.depth(1.5F)
|
//.depth(1.5F)
|
||||||
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
||||||
|
@ -26,4 +29,14 @@ public class DustWastelandsBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.ENDSTONE_DUST.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
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;
|
||||||
|
@ -22,7 +26,11 @@ public class FoggyMushroomlandBiome extends EndBiome.Config {
|
||||||
.fogDensity(3)
|
.fogDensity(3)
|
||||||
.waterAndFogColor(119, 227, 250)
|
.waterAndFogColor(119, 227, 250)
|
||||||
//TODO: 1.18 check surface Rules
|
//TODO: 1.18 check surface Rules
|
||||||
.chancedSurface(END_MOSS, END_MYCELIUM, END_STONE)
|
.chancedSurface(
|
||||||
|
SurfaceRules.state(surfaceMaterial().getTopMaterial()),
|
||||||
|
SurfaceRules.state(surfaceMaterial().getAltTopMaterial()),
|
||||||
|
END_STONE
|
||||||
|
)
|
||||||
//.surface(EndBlocks.END_MOSS, EndBlocks.END_MYCELIUM)
|
//.surface(EndBlocks.END_MOSS, EndBlocks.END_MYCELIUM)
|
||||||
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
||||||
.loop(EndSounds.AMBIENT_FOGGY_MUSHROOMLAND)
|
.loop(EndSounds.AMBIENT_FOGGY_MUSHROOMLAND)
|
||||||
|
@ -48,4 +56,21 @@ public class FoggyMushroomlandBiome extends EndBiome.Config {
|
||||||
.spawn(EndEntities.END_SLIME, 10, 1, 2)
|
.spawn(EndEntities.END_SLIME, 10, 1, 2)
|
||||||
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.END_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return EndBlocks.END_MYCELIUM.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
|
@ -20,7 +23,7 @@ public class GlowingGrasslandsBiome extends EndBiome.Config {
|
||||||
.particles(EndParticles.FIREFLY, 0.001F)
|
.particles(EndParticles.FIREFLY, 0.001F)
|
||||||
.music(EndSounds.MUSIC_OPENSPACE)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.loop(EndSounds.AMBIENT_GLOWING_GRASSLANDS)
|
.loop(EndSounds.AMBIENT_GLOWING_GRASSLANDS)
|
||||||
.surface(EndBlocks.END_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.waterAndFogColor(92, 250, 230)
|
.waterAndFogColor(92, 250, 230)
|
||||||
.plantsColor(73, 210, 209)
|
.plantsColor(73, 210, 209)
|
||||||
.feature(EndFeatures.END_LAKE_RARE)
|
.feature(EndFeatures.END_LAKE_RARE)
|
||||||
|
@ -39,4 +42,14 @@ public class GlowingGrasslandsBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.END_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
|
@ -19,7 +22,7 @@ public class LanternWoodsBiome extends EndBiome.Config {
|
||||||
.fogDensity(1.1F)
|
.fogDensity(1.1F)
|
||||||
.waterAndFogColor(171, 234, 226)
|
.waterAndFogColor(171, 234, 226)
|
||||||
.plantsColor(254, 85, 57)
|
.plantsColor(254, 85, 57)
|
||||||
.surface(EndBlocks.RUTISCUS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.music(EndSounds.MUSIC_FOREST)
|
.music(EndSounds.MUSIC_FOREST)
|
||||||
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
||||||
.feature(EndFeatures.END_LAKE_NORMAL)
|
.feature(EndFeatures.END_LAKE_NORMAL)
|
||||||
|
@ -39,4 +42,14 @@ public class LanternWoodsBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.RUTISCUS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
|
@ -23,7 +27,11 @@ public class MegalakeBiome extends EndBiome.Config {
|
||||||
.music(EndSounds.MUSIC_WATER)
|
.music(EndSounds.MUSIC_WATER)
|
||||||
.loop(EndSounds.AMBIENT_MEGALAKE)
|
.loop(EndSounds.AMBIENT_MEGALAKE)
|
||||||
//TODO: 1.18 check surface Rules
|
//TODO: 1.18 check surface Rules
|
||||||
.chancedSurface(END_MOSS, ENDSTONE_DUST, END_STONE)
|
.chancedSurface(
|
||||||
|
SurfaceRules.state(surfaceMaterial().getTopMaterial()),
|
||||||
|
SurfaceRules.state(surfaceMaterial().getAltTopMaterial()),
|
||||||
|
END_STONE
|
||||||
|
)
|
||||||
//.surface(EndBlocks.END_MOSS, EndBlocks.ENDSTONE_DUST)
|
//.surface(EndBlocks.END_MOSS, EndBlocks.ENDSTONE_DUST)
|
||||||
//TODO: 1.18 removed
|
//TODO: 1.18 removed
|
||||||
//.depth(0F)
|
//.depth(0F)
|
||||||
|
@ -44,4 +52,19 @@ public class MegalakeBiome extends EndBiome.Config {
|
||||||
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
||||||
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.END_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return EndBlocks.ENDSTONE_DUST.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
@ -25,7 +28,7 @@ public class MegalakeGroveBiome extends EndBiome.Config {
|
||||||
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
.particles(EndParticles.GLOWING_SPHERE, 0.001F)
|
||||||
.music(EndSounds.MUSIC_WATER)
|
.music(EndSounds.MUSIC_WATER)
|
||||||
.loop(EndSounds.AMBIENT_MEGALAKE_GROVE)
|
.loop(EndSounds.AMBIENT_MEGALAKE_GROVE)
|
||||||
.surface(EndBlocks.END_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
//TODO: 1.18 removed
|
//TODO: 1.18 removed
|
||||||
//.depth(0F)
|
//.depth(0F)
|
||||||
.feature(EndFeatures.LACUGROVE)
|
.feature(EndFeatures.LACUGROVE)
|
||||||
|
@ -46,4 +49,14 @@ public class MegalakeGroveBiome extends EndBiome.Config {
|
||||||
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
.spawn(EndEntities.END_SLIME, 5, 1, 2)
|
||||||
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
.spawn(EntityType.ENDERMAN, 10, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.END_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,11 @@ package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.world.biome.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
@ -19,7 +23,11 @@ public class NeonOasisBiome extends EndBiome.Config {
|
||||||
.fogDensity(2)
|
.fogDensity(2)
|
||||||
.waterAndFogColor(106, 238, 215)
|
.waterAndFogColor(106, 238, 215)
|
||||||
//TODO: 1.18 check surface Rules
|
//TODO: 1.18 check surface Rules
|
||||||
.chancedSurface(ENDSTONE_DUST, END_MOSS, END_STONE)
|
.chancedSurface(
|
||||||
|
SurfaceRules.state(surfaceMaterial().getTopMaterial()),
|
||||||
|
SurfaceRules.state(surfaceMaterial().getAltTopMaterial()),
|
||||||
|
END_STONE
|
||||||
|
)
|
||||||
//.surface(EndBlocks.ENDSTONE_DUST, EndBlocks.END_MOSS)
|
//.surface(EndBlocks.ENDSTONE_DUST, EndBlocks.END_MOSS)
|
||||||
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
||||||
.loop(EndSounds.AMBIENT_DUST_WASTELANDS)
|
.loop(EndSounds.AMBIENT_DUST_WASTELANDS)
|
||||||
|
@ -34,4 +42,19 @@ public class NeonOasisBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.ENDSTONE_DUST.defaultBlockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return EndBlocks.END_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
@ -21,8 +24,18 @@ public class PaintedMountainsBiome extends EndBiome.Config {
|
||||||
.waterAndFogColor(192, 180, 131)
|
.waterAndFogColor(192, 180, 131)
|
||||||
.music(EndSounds.MUSIC_OPENSPACE)
|
.music(EndSounds.MUSIC_OPENSPACE)
|
||||||
.loop(EndSounds.AMBIENT_DUST_WASTELANDS)
|
.loop(EndSounds.AMBIENT_DUST_WASTELANDS)
|
||||||
.surface(EndBlocks.ENDSTONE_DUST)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
.particles(ParticleTypes.WHITE_ASH, 0.01F)
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.ENDSTONE_DUST.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
@ -20,7 +23,7 @@ public class ShadowForestBiome extends EndBiome.Config {
|
||||||
.fogDensity(2.5F)
|
.fogDensity(2.5F)
|
||||||
.plantsColor(45, 45, 45)
|
.plantsColor(45, 45, 45)
|
||||||
.waterAndFogColor(42, 45, 80)
|
.waterAndFogColor(42, 45, 80)
|
||||||
.surface(EndBlocks.SHADOW_GRASS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.particles(ParticleTypes.MYCELIUM, 0.01F)
|
.particles(ParticleTypes.MYCELIUM, 0.01F)
|
||||||
.loop(EndSounds.AMBIENT_CHORUS_FOREST)
|
.loop(EndSounds.AMBIENT_CHORUS_FOREST)
|
||||||
.music(EndSounds.MUSIC_DARK)
|
.music(EndSounds.MUSIC_DARK)
|
||||||
|
@ -43,4 +46,14 @@ public class ShadowForestBiome extends EndBiome.Config {
|
||||||
.spawn(EntityType.ENDERMAN, 40, 1, 4)
|
.spawn(EntityType.ENDERMAN, 40, 1, 4)
|
||||||
.spawn(EntityType.PHANTOM, 1, 1, 2);
|
.spawn(EntityType.PHANTOM, 1, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.SHADOW_GRASS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
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.block.Blocks;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
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;
|
||||||
|
@ -27,8 +31,8 @@ public class SulphurSpringsBiome extends EndBiome.Config {
|
||||||
//.surface(SurfaceBuilders.SULPHURIC_SURFACE.configured(SurfaceBuilders.DEFAULT_END_CONFIG))
|
//.surface(SurfaceBuilders.SULPHURIC_SURFACE.configured(SurfaceBuilders.DEFAULT_END_CONFIG))
|
||||||
.surface(
|
.surface(
|
||||||
SurfaceRules.sequence(
|
SurfaceRules.sequence(
|
||||||
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.6), END_STONE),
|
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.6), SurfaceRules.state(surfaceMaterial().getAltTopMaterial())),
|
||||||
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.3), FLAVOLITE),
|
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(-0.3), SurfaceRules.state(surfaceMaterial().getTopMaterial())),
|
||||||
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(0.5), SULPHURIC_ROCK),
|
SurfaceRules.ifTrue(new SulphuricSurfaceNoiseCondition(0.5), SULPHURIC_ROCK),
|
||||||
BRIMSTONE
|
BRIMSTONE
|
||||||
))
|
))
|
||||||
|
@ -53,4 +57,19 @@ public class SulphurSpringsBiome extends EndBiome.Config {
|
||||||
.spawn(EndEntities.CUBOZOA, 50, 3, 8)
|
.spawn(EndEntities.CUBOZOA, 50, 3, 8)
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 4);
|
.spawn(EntityType.ENDERMAN, 50, 1, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.FLAVOLITE.stone.defaultBlockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return Blocks.END_STONE.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
package ru.betterend.world.biome.land;
|
package ru.betterend.world.biome.land;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
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;
|
||||||
|
@ -23,11 +26,11 @@ public class UmbraValleyBiome extends EndBiome.Config {
|
||||||
.surface(
|
.surface(
|
||||||
SurfaceRules.sequence(
|
SurfaceRules.sequence(
|
||||||
SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, SurfaceRules.sequence(
|
SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, SurfaceRules.sequence(
|
||||||
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(0.4), PALLIDIUM_FULL),
|
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(0.4), SurfaceRules.state(surfaceMaterial().getAltTopMaterial())),
|
||||||
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(0.15), PALLIDIUM_HEAVY),
|
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(0.15), PALLIDIUM_HEAVY),
|
||||||
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(-0.15), PALLIDIUM_THIN),
|
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(-0.15), PALLIDIUM_THIN),
|
||||||
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(-0.4), PALLIDIUM_TINY)
|
SurfaceRules.ifTrue(new UmbraSurfaceNoiseCondition(-0.4), PALLIDIUM_TINY)
|
||||||
)), UMBRALITH
|
)), SurfaceRules.state(surfaceMaterial().getTopMaterial())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.particles(EndParticles.AMBER_SPHERE, 0.0001F)
|
.particles(EndParticles.AMBER_SPHERE, 0.0001F)
|
||||||
|
@ -38,4 +41,19 @@ public class UmbraValleyBiome extends EndBiome.Config {
|
||||||
.feature(EndFeatures.INFLEXIA)
|
.feature(EndFeatures.INFLEXIA)
|
||||||
.feature(EndFeatures.FLAMMALIX);
|
.feature(EndFeatures.FLAMMALIX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.UMBRALITH.stone.defaultBlockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return EndBlocks.PALLIDIUM_FULL.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
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.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
import ru.bclib.api.biomes.BCLBiomeBuilder;
|
||||||
|
import ru.bclib.api.biomes.SurfaceMaterialProvider;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
import ru.betterend.registry.EndParticles;
|
import ru.betterend.registry.EndParticles;
|
||||||
|
@ -22,7 +25,7 @@ public class UmbrellaJungleBiome extends EndBiome.Config {
|
||||||
.particles(EndParticles.JUNGLE_SPORE, 0.001F)
|
.particles(EndParticles.JUNGLE_SPORE, 0.001F)
|
||||||
.music(EndSounds.MUSIC_FOREST)
|
.music(EndSounds.MUSIC_FOREST)
|
||||||
.loop(EndSounds.AMBIENT_UMBRELLA_JUNGLE)
|
.loop(EndSounds.AMBIENT_UMBRELLA_JUNGLE)
|
||||||
.surface(EndBlocks.JUNGLE_MOSS)
|
.surface(SurfaceRules.state(surfaceMaterial().getTopMaterial()))
|
||||||
.feature(EndFeatures.END_LAKE)
|
.feature(EndFeatures.END_LAKE)
|
||||||
.feature(EndFeatures.UMBRELLA_TREE)
|
.feature(EndFeatures.UMBRELLA_TREE)
|
||||||
.feature(EndFeatures.JELLYSHROOM)
|
.feature(EndFeatures.JELLYSHROOM)
|
||||||
|
@ -43,4 +46,14 @@ public class UmbrellaJungleBiome extends EndBiome.Config {
|
||||||
.structure(VANILLA_FEATURES.getEND_CITY())
|
.structure(VANILLA_FEATURES.getEND_CITY())
|
||||||
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
.spawn(EntityType.ENDERMAN, 50, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SurfaceMaterialProvider surfaceMaterial() {
|
||||||
|
return new EndBiome.DefaultSurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return EndBlocks.JUNGLE_MOSS.defaultBlockState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -15,6 +15,7 @@ import ru.bclib.sdf.primitive.SDFCappedCone;
|
||||||
import ru.bclib.util.BlocksHelper;
|
import ru.bclib.util.BlocksHelper;
|
||||||
import ru.bclib.world.features.DefaultFeature;
|
import ru.bclib.world.features.DefaultFeature;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class BiomeIslandFeature extends DefaultFeature {
|
public class BiomeIslandFeature extends DefaultFeature {
|
||||||
private static final MutableBlockPos CENTER = new MutableBlockPos();
|
private static final MutableBlockPos CENTER = new MutableBlockPos();
|
||||||
|
@ -31,7 +32,7 @@ public class BiomeIslandFeature extends DefaultFeature {
|
||||||
Biome biome = world.getBiome(pos);
|
Biome biome = world.getBiome(pos);
|
||||||
int dist = BlocksHelper.downRay(world, pos, 10) + 1;
|
int dist = BlocksHelper.downRay(world, pos, 10) + 1;
|
||||||
BlockPos surfacePos = new BlockPos(pos.getX(), pos.getY()-dist, pos.getZ());
|
BlockPos surfacePos = new BlockPos(pos.getX(), pos.getY()-dist, pos.getZ());
|
||||||
BlockState topMaterial = world.getBlockState(surfacePos);
|
BlockState topMaterial = EndBiome.findTopMaterial(world, surfacePos);;
|
||||||
|
|
||||||
//TODO: 1.18 the block selection should be based on the surface rules of the biome
|
//TODO: 1.18 the block selection should be based on the surface rules of the biome
|
||||||
if (BlocksHelper.isFluid(topMaterial)) {
|
if (BlocksHelper.isFluid(topMaterial)) {
|
||||||
|
@ -39,8 +40,7 @@ public class BiomeIslandFeature extends DefaultFeature {
|
||||||
underBlock = Blocks.STONE.defaultBlockState();
|
underBlock = Blocks.STONE.defaultBlockState();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
topBlock = topMaterial.is(Blocks.AIR)?Blocks.GRASS_BLOCK.defaultBlockState():topMaterial;
|
underBlock = EndBiome.findUnderMaterial(world, surfacePos);
|
||||||
underBlock = Blocks.DIRT.defaultBlockState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
simplexNoise = new OpenSimplexNoise(world.getSeed());
|
simplexNoise = new OpenSimplexNoise(world.getSeed());
|
||||||
|
|
|
@ -18,6 +18,7 @@ import ru.bclib.world.features.DefaultFeature;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.util.BlockFixer;
|
import ru.betterend.util.BlockFixer;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class DesertLakeFeature extends DefaultFeature {
|
public class DesertLakeFeature extends DefaultFeature {
|
||||||
private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState();
|
private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState();
|
||||||
|
@ -124,7 +125,7 @@ public class DesertLakeFeature extends DefaultFeature {
|
||||||
pos = POS.below();
|
pos = POS.below();
|
||||||
if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) {
|
if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
state = Blocks.END_STONE.defaultBlockState(); //world.getBiome(pos).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
state = EndBiome.findTopMaterial(world, pos); //world.getBiome(pos).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
if (y > waterLevel + 1) BlocksHelper.setWithoutUpdate(world, pos, state);
|
if (y > waterLevel + 1) BlocksHelper.setWithoutUpdate(world, pos, state);
|
||||||
else if (y > waterLevel)
|
else if (y > waterLevel)
|
||||||
BlocksHelper.setWithoutUpdate(
|
BlocksHelper.setWithoutUpdate(
|
||||||
|
@ -197,7 +198,7 @@ public class DesertLakeFeature extends DefaultFeature {
|
||||||
else if (y < waterLevel) {
|
else if (y < waterLevel) {
|
||||||
if (world.isEmptyBlock(POS.above())) {
|
if (world.isEmptyBlock(POS.above())) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
state = Blocks.END_STONE.defaultBlockState(); //world.getBiome(POS).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
state = EndBiome.findTopMaterial(world, pos); //world.getBiome(POS).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
BlocksHelper.setWithoutUpdate(
|
BlocksHelper.setWithoutUpdate(
|
||||||
world,
|
world,
|
||||||
POS,
|
POS,
|
||||||
|
|
|
@ -18,12 +18,17 @@ import ru.bclib.world.features.DefaultFeature;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.util.BlockFixer;
|
import ru.betterend.util.BlockFixer;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class EndLakeFeature extends DefaultFeature {
|
public class EndLakeFeature extends DefaultFeature {
|
||||||
private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState();
|
private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState();
|
||||||
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(15152);
|
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(15152);
|
||||||
private static final MutableBlockPos POS = new MutableBlockPos();
|
private static final MutableBlockPos POS = new MutableBlockPos();
|
||||||
|
|
||||||
|
public EndLakeFeature(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> featureConfig) {
|
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> featureConfig) {
|
||||||
final Random random = featureConfig.random();
|
final Random random = featureConfig.random();
|
||||||
|
@ -124,8 +129,8 @@ public class EndLakeFeature extends DefaultFeature {
|
||||||
pos = POS.below();
|
pos = POS.below();
|
||||||
if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) {
|
if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
state = Blocks.END_STONE.defaultBlockState();
|
state = EndBiome.findTopMaterial(world, pos);
|
||||||
// state = world.getBiome(pos)
|
//state = world.getBiome(pos)
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
// .getTopMaterial();
|
// .getTopMaterial();
|
||||||
|
@ -196,7 +201,7 @@ public class EndLakeFeature extends DefaultFeature {
|
||||||
else if (y < waterLevel && y2 + x2 + z2 <= rb) {
|
else if (y < waterLevel && y2 + x2 + z2 <= rb) {
|
||||||
if (world.isEmptyBlock(POS.above())) {
|
if (world.isEmptyBlock(POS.above())) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
state = Blocks.END_STONE.defaultBlockState();
|
state = EndBiome.findTopMaterial(world, pos);
|
||||||
// state = world.getBiome(POS)
|
// state = world.getBiome(POS)
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
|
|
@ -21,6 +21,7 @@ import ru.bclib.util.MHelper;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class FloatingSpireFeature extends SpireFeature {
|
public class FloatingSpireFeature extends SpireFeature {
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,11 +66,11 @@ public class FloatingSpireFeature extends SpireFeature {
|
||||||
support.add(info.getPos().above());
|
support.add(info.getPos().above());
|
||||||
}
|
}
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
return Blocks.END_STONE.defaultBlockState();//world.getBiome(info.getPos()).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
return EndBiome.findTopMaterial(world, info.getPos());//world.getBiome(info.getPos()).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
}
|
}
|
||||||
else if (info.getState(Direction.UP, 3).isAir()) {
|
else if (info.getState(Direction.UP, 3).isAir()) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
return Blocks.END_STONE.defaultBlockState();
|
return EndBiome.findUnderMaterial(world, info.getPos());
|
||||||
// return world.getBiome(info.getPos())
|
// return world.getBiome(info.getPos())
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
|
|
@ -29,6 +29,7 @@ import ru.bclib.world.features.DefaultFeature;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndFeatures;
|
import ru.betterend.registry.EndFeatures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class SpireFeature extends DefaultFeature {
|
public class SpireFeature extends DefaultFeature {
|
||||||
protected static final Function<BlockState, Boolean> REPLACE;
|
protected static final Function<BlockState, Boolean> REPLACE;
|
||||||
|
@ -68,12 +69,12 @@ public class SpireFeature extends DefaultFeature {
|
||||||
support.add(info.getPos().above());
|
support.add(info.getPos().above());
|
||||||
}
|
}
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
return Blocks.END_STONE.defaultBlockState();
|
return EndBiome.findTopMaterial(world, info.getPos());
|
||||||
//return world.getBiome(info.getPos()).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
//return world.getBiome(info.getPos()).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
}
|
}
|
||||||
else if (info.getState(Direction.UP, 3).isAir()) {
|
else if (info.getState(Direction.UP, 3).isAir()) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
return Blocks.END_STONE.defaultBlockState();
|
return EndBiome.findUnderMaterial(world, info.getPos());
|
||||||
// return world.getBiome(info.getPos())
|
// return world.getBiome(info.getPos())
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.util.Random;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.ChunkPos;
|
import net.minecraft.world.level.ChunkPos;
|
||||||
import net.minecraft.world.level.StructureFeatureManager;
|
import net.minecraft.world.level.StructureFeatureManager;
|
||||||
|
@ -20,9 +19,11 @@ import net.minecraft.world.level.levelgen.Heightmap.Types;
|
||||||
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
||||||
import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext;
|
import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext;
|
||||||
import ru.bclib.api.TagAPI;
|
import ru.bclib.api.TagAPI;
|
||||||
|
import ru.bclib.api.biomes.BiomeAPI;
|
||||||
import ru.bclib.util.MHelper;
|
import ru.bclib.util.MHelper;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class CrystalMountainPiece extends MountainPiece {
|
public class CrystalMountainPiece extends MountainPiece {
|
||||||
private BlockState top;
|
private BlockState top;
|
||||||
|
@ -30,7 +31,7 @@ public class CrystalMountainPiece extends MountainPiece {
|
||||||
public CrystalMountainPiece(BlockPos center, float radius, float height, Random random, Biome biome) {
|
public CrystalMountainPiece(BlockPos center, float radius, float height, Random random, Biome biome) {
|
||||||
super(EndStructures.MOUNTAIN_PIECE, center, radius, height, random, biome);
|
super(EndStructures.MOUNTAIN_PIECE, center, radius, height, random, biome);
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
top = Blocks.END_STONE.defaultBlockState(); //biome.getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
top = EndBiome.findTopMaterial(biome); //biome.getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CrystalMountainPiece(StructurePieceSerializationContext type, CompoundTag tag) {
|
public CrystalMountainPiece(StructurePieceSerializationContext type, CompoundTag tag) {
|
||||||
|
@ -40,7 +41,7 @@ public class CrystalMountainPiece extends MountainPiece {
|
||||||
@Override
|
@Override
|
||||||
protected void fromNbt(CompoundTag tag) {
|
protected void fromNbt(CompoundTag tag) {
|
||||||
super.fromNbt(tag);//TODO: 1.18 this needs to change to a dynamic block
|
super.fromNbt(tag);//TODO: 1.18 this needs to change to a dynamic block
|
||||||
top = Blocks.END_STONE.defaultBlockState(); //BiomeAPI.getBiome(biomeID).getBiome().getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
top = EndBiome.findTopMaterial(BiomeAPI.getBiome(biomeID)); //BiomeAPI.getBiome(biomeID).getBiome().getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -32,6 +32,7 @@ import ru.bclib.util.MHelper;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
|
import ru.betterend.world.biome.EndBiome;
|
||||||
|
|
||||||
public class LakePiece extends BasePiece {
|
public class LakePiece extends BasePiece {
|
||||||
private static final BlockState ENDSTONE = Blocks.END_STONE.defaultBlockState();
|
private static final BlockState ENDSTONE = Blocks.END_STONE.defaultBlockState();
|
||||||
|
@ -133,7 +134,7 @@ public class LakePiece extends BasePiece {
|
||||||
state = chunk.getBlockState(mut.above());
|
state = chunk.getBlockState(mut.above());
|
||||||
if (state.isAir()) {
|
if (state.isAir()) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
state = ENDSTONE;
|
state = EndBiome.findTopMaterial(world, worldPos);
|
||||||
// state = random.nextBoolean() ? ENDSTONE : world.getBiome(worldPos)
|
// state = random.nextBoolean() ? ENDSTONE : world.getBiome(worldPos)
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
@ -170,7 +171,7 @@ public class LakePiece extends BasePiece {
|
||||||
BlockState bState = chunk.getBlockState(mut);
|
BlockState bState = chunk.getBlockState(mut);
|
||||||
if (bState.isAir()) {
|
if (bState.isAir()) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
bState = ENDSTONE;
|
bState = EndBiome.findTopMaterial(world, mut.offset(sx, 0, sz));
|
||||||
// bState = random.nextBoolean() ? ENDSTONE : world.getBiome(mut.offset(sx, 0, sz))
|
// bState = random.nextBoolean() ? ENDSTONE : world.getBiome(mut.offset(sx, 0, sz))
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
@ -194,7 +195,7 @@ public class LakePiece extends BasePiece {
|
||||||
BlockState bState = chunk.getBlockState(mut);
|
BlockState bState = chunk.getBlockState(mut);
|
||||||
if (bState.isAir()) {
|
if (bState.isAir()) {
|
||||||
//TODO: 1.18 this needs to change to a dynamic block
|
//TODO: 1.18 this needs to change to a dynamic block
|
||||||
bState = ENDSTONE;
|
bState =EndBiome.findTopMaterial(world, mut.offset(sx, 0, sz));
|
||||||
// bState = random.nextBoolean() ? ENDSTONE : world.getBiome(mut.offset(sx, 0, sz))
|
// bState = random.nextBoolean() ? ENDSTONE : world.getBiome(mut.offset(sx, 0, sz))
|
||||||
// .getGenerationSettings()
|
// .getGenerationSettings()
|
||||||
// .getSurfaceBuilderConfig()
|
// .getSurfaceBuilderConfig()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue