[Change] BCLBiome Data is managed in a Datapack-Aware registry now
This commit is contained in:
parent
a1175480b3
commit
015e0969a9
5 changed files with 115 additions and 3 deletions
|
@ -4,7 +4,9 @@ import org.betterx.bclib.api.v2.LifeCycleAPI;
|
||||||
import org.betterx.bclib.api.v2.generator.BiomePicker;
|
import org.betterx.bclib.api.v2.generator.BiomePicker;
|
||||||
import org.betterx.bclib.api.v2.generator.map.hex.HexBiomeMap;
|
import org.betterx.bclib.api.v2.generator.map.hex.HexBiomeMap;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
|
||||||
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeRegistry;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
|
||||||
|
import org.betterx.betterend.BetterEnd;
|
||||||
import org.betterx.betterend.config.Configs;
|
import org.betterx.betterend.config.Configs;
|
||||||
import org.betterx.betterend.world.biome.EndBiome;
|
import org.betterx.betterend.world.biome.EndBiome;
|
||||||
import org.betterx.betterend.world.biome.air.BiomeIceStarfield;
|
import org.betterx.betterend.world.biome.air.BiomeIceStarfield;
|
||||||
|
@ -60,6 +62,8 @@ public class EndBiomes {
|
||||||
public static final EndCaveBiome JADE_CAVE = registerCaveBiome(new JadeCaveBiome());
|
public static final EndCaveBiome JADE_CAVE = registerCaveBiome(new JadeCaveBiome());
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
|
BCLBiomeRegistry.registerBiomeCodec(BetterEnd.makeID("biome"), EndBiome.KEY_CODEC);
|
||||||
|
BCLBiomeRegistry.registerBiomeCodec(BetterEnd.makeID("cave_biome"), EndCaveBiome.KEY_CODEC);
|
||||||
LifeCycleAPI.onLevelLoad(EndBiomes::onWorldLoad);
|
LifeCycleAPI.onLevelLoad(EndBiomes::onWorldLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,4 +166,5 @@ public class EndBiomes {
|
||||||
public static BiomePicker.ActualBiome getCaveBiome(int x, int z) {
|
public static BiomePicker.ActualBiome getCaveBiome(int x, int z) {
|
||||||
return caveBiomeMap.getBiome(x, 5, z);
|
return caveBiomeMap.getBiome(x, 5, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,22 +7,73 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
|
||||||
import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder;
|
import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder;
|
||||||
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
|
import org.betterx.bclib.interfaces.SurfaceMaterialProvider;
|
||||||
|
import org.betterx.bclib.util.WeightedList;
|
||||||
import org.betterx.betterend.BetterEnd;
|
import org.betterx.betterend.BetterEnd;
|
||||||
import org.betterx.betterend.registry.EndBlocks;
|
import org.betterx.betterend.registry.EndBlocks;
|
||||||
import org.betterx.betterend.registry.EndFeatures;
|
import org.betterx.betterend.registry.EndFeatures;
|
||||||
import org.betterx.betterend.registry.EndSounds;
|
import org.betterx.betterend.registry.EndSounds;
|
||||||
import org.betterx.betterend.registry.EndTags;
|
import org.betterx.betterend.registry.EndTags;
|
||||||
|
|
||||||
|
import com.mojang.serialization.Codec;
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.util.KeyDispatchDataCodec;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
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.biome.Climate;
|
||||||
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.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.SurfaceRules;
|
import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
|
public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
|
||||||
|
public static final Codec<EndBiome> CODEC = RecordCodecBuilder.create(instance ->
|
||||||
|
codecWithSettings(
|
||||||
|
instance,
|
||||||
|
Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(o -> o.hasCaves)
|
||||||
|
).apply(instance, EndBiome::new)
|
||||||
|
);
|
||||||
|
public static final KeyDispatchDataCodec<EndBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KeyDispatchDataCodec<? extends BCLBiome> codec() {
|
||||||
|
return KEY_CODEC;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected EndBiome(
|
||||||
|
float terrainHeight,
|
||||||
|
float fogDensity,
|
||||||
|
float genChance,
|
||||||
|
int edgeSize,
|
||||||
|
boolean vertical,
|
||||||
|
Optional<ResourceLocation> edge,
|
||||||
|
ResourceLocation biomeID,
|
||||||
|
Optional<List<Climate.ParameterPoint>> parameterPoints,
|
||||||
|
Optional<ResourceLocation> biomeParent,
|
||||||
|
Optional<WeightedList<ResourceLocation>> subbiomes,
|
||||||
|
Optional<String> intendedType,
|
||||||
|
boolean hasCaves
|
||||||
|
) {
|
||||||
|
super(
|
||||||
|
terrainHeight,
|
||||||
|
fogDensity,
|
||||||
|
genChance,
|
||||||
|
edgeSize,
|
||||||
|
vertical,
|
||||||
|
edge,
|
||||||
|
biomeID,
|
||||||
|
parameterPoints,
|
||||||
|
biomeParent,
|
||||||
|
subbiomes,
|
||||||
|
intendedType
|
||||||
|
);
|
||||||
|
this.hasCaves = hasCaves;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean hasCaves = true;
|
private boolean hasCaves = true;
|
||||||
|
|
||||||
void setHasCaves(boolean v) {
|
void setHasCaves(boolean v) {
|
||||||
|
@ -108,6 +159,7 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public EndBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings settings) {
|
public EndBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings settings) {
|
||||||
super(biomeID, biome, settings);
|
super(biomeID, biome, settings);
|
||||||
}
|
}
|
||||||
|
@ -124,7 +176,8 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider {
|
||||||
.temperature(0.5f)
|
.temperature(0.5f)
|
||||||
.wetness(0.5f)
|
.wetness(0.5f)
|
||||||
.precipitation(Biome.Precipitation.NONE)
|
.precipitation(Biome.Precipitation.NONE)
|
||||||
.surface(biomeConfig.surfaceMaterial().surface().build());
|
.surface(biomeConfig.surfaceMaterial().surface().build())
|
||||||
|
.endLandBiome();
|
||||||
|
|
||||||
biomeConfig.addCustomBuildData(builder);
|
biomeConfig.addCustomBuildData(builder);
|
||||||
EndFeatures.addDefaultFeatures(biomeConfig.ID, builder, biomeConfig.hasCaves());
|
EndFeatures.addDefaultFeatures(biomeConfig.ID, builder, biomeConfig.hasCaves());
|
||||||
|
|
|
@ -29,6 +29,7 @@ public class BiomeIceStarfield extends EndBiome.Config {
|
||||||
.particles(EndParticles.SNOWFLAKE, 0.002F)
|
.particles(EndParticles.SNOWFLAKE, 0.002F)
|
||||||
.feature(EndFeatures.ICE_STAR)
|
.feature(EndFeatures.ICE_STAR)
|
||||||
.feature(EndFeatures.ICE_STAR_SMALL)
|
.feature(EndFeatures.ICE_STAR_SMALL)
|
||||||
.spawn(EntityType.ENDERMAN, 20, 1, 4);
|
.spawn(EntityType.ENDERMAN, 20, 1, 4)
|
||||||
|
.endVoidBiome();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config {
|
||||||
public static class Biome extends EndCaveBiome {
|
public static class Biome extends EndCaveBiome {
|
||||||
public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) {
|
public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) {
|
||||||
super(biomeID, biome, settings);
|
super(biomeID, biome, settings);
|
||||||
|
|
||||||
this.addFloorFeature(EndFeatures.BIG_AURORA_CRYSTAL.configuredFeature, 1);
|
this.addFloorFeature(EndFeatures.BIG_AURORA_CRYSTAL.configuredFeature, 1);
|
||||||
|
|
||||||
this.addCeilFeature(EndFeatures.END_STONE_STALACTITE.configuredFeature, 1);
|
this.addCeilFeature(EndFeatures.END_STONE_STALACTITE.configuredFeature, 1);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.betterx.betterend.world.biome.cave;
|
package org.betterx.betterend.world.biome.cave;
|
||||||
|
|
||||||
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeBuilder.BiomeSupplier;
|
||||||
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeSettings;
|
||||||
|
@ -7,22 +8,74 @@ import org.betterx.bclib.api.v3.levelgen.features.BCLFeature;
|
||||||
import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder;
|
import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder;
|
||||||
import org.betterx.bclib.util.WeightedList;
|
import org.betterx.bclib.util.WeightedList;
|
||||||
import org.betterx.betterend.BetterEnd;
|
import org.betterx.betterend.BetterEnd;
|
||||||
|
import org.betterx.betterend.registry.EndBiomes;
|
||||||
import org.betterx.betterend.registry.EndFeatures;
|
import org.betterx.betterend.registry.EndFeatures;
|
||||||
import org.betterx.betterend.registry.EndSounds;
|
import org.betterx.betterend.registry.EndSounds;
|
||||||
import org.betterx.betterend.world.biome.EndBiome;
|
import org.betterx.betterend.world.biome.EndBiome;
|
||||||
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature;
|
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature;
|
||||||
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeatureConfig;
|
import org.betterx.betterend.world.features.terrain.caves.CaveChunkPopulatorFeatureConfig;
|
||||||
|
|
||||||
|
import com.mojang.serialization.Codec;
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.util.KeyDispatchDataCodec;
|
||||||
import net.minecraft.util.RandomSource;
|
import net.minecraft.util.RandomSource;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
import net.minecraft.world.level.biome.Climate;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class EndCaveBiome extends EndBiome {
|
public class EndCaveBiome extends EndBiome {
|
||||||
|
public static final Codec<EndCaveBiome> CODEC = RecordCodecBuilder.create(instance ->
|
||||||
|
codecWithSettings(
|
||||||
|
instance,
|
||||||
|
Codec.BOOL.fieldOf("has_caves").orElse(true).forGetter(EndBiome::hasCaves)
|
||||||
|
).apply(instance, EndCaveBiome::new)
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final KeyDispatchDataCodec<EndCaveBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KeyDispatchDataCodec<? extends BCLBiome> codec() {
|
||||||
|
return KEY_CODEC;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected EndCaveBiome(
|
||||||
|
float terrainHeight,
|
||||||
|
float fogDensity,
|
||||||
|
float genChance,
|
||||||
|
int edgeSize,
|
||||||
|
boolean vertical,
|
||||||
|
Optional<ResourceLocation> edge,
|
||||||
|
ResourceLocation biomeID,
|
||||||
|
Optional<List<Climate.ParameterPoint>> parameterPoints,
|
||||||
|
Optional<ResourceLocation> biomeParent,
|
||||||
|
Optional<WeightedList<ResourceLocation>> subbiomes,
|
||||||
|
Optional<String> intendedType,
|
||||||
|
boolean hasCaves
|
||||||
|
) {
|
||||||
|
super(
|
||||||
|
terrainHeight,
|
||||||
|
fogDensity,
|
||||||
|
genChance,
|
||||||
|
edgeSize,
|
||||||
|
vertical,
|
||||||
|
edge,
|
||||||
|
biomeID,
|
||||||
|
parameterPoints,
|
||||||
|
biomeParent,
|
||||||
|
subbiomes,
|
||||||
|
intendedType,
|
||||||
|
hasCaves
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static abstract class Config extends EndBiome.Config {
|
public static abstract class Config extends EndBiome.Config {
|
||||||
protected Config(String name) {
|
protected Config(String name) {
|
||||||
super(name);
|
super(name);
|
||||||
|
@ -45,6 +98,7 @@ public class EndCaveBiome extends EndBiome {
|
||||||
.buildAndRegister();
|
.buildAndRegister();
|
||||||
|
|
||||||
builder.feature(feature)
|
builder.feature(feature)
|
||||||
|
.intendedType(EndBiomes.END_CAVE)
|
||||||
.music(EndSounds.MUSIC_CAVES)
|
.music(EndSounds.MUSIC_CAVES)
|
||||||
.loop(EndSounds.AMBIENT_CAVES);
|
.loop(EndSounds.AMBIENT_CAVES);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue