[Feature] More flexible/extensible End-Biome Placement

This commit is contained in:
Frank 2022-07-08 00:12:39 +02:00
parent c695e0af5e
commit 3f3454e634
2 changed files with 63 additions and 7 deletions

View file

@ -0,0 +1,60 @@
package org.betterx.betterend.world.generator;
import org.betterx.bclib.api.v2.generator.BCLBiomeSource;
import org.betterx.bclib.api.v2.generator.BCLibEndBiomeSource;
import org.betterx.bclib.api.v2.generator.BiomeDecider;
import org.betterx.bclib.api.v2.generator.config.BCLEndBiomeSourceConfig;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import net.minecraft.core.Registry;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.BiomeSource;
public class EndLandBiomeDecider extends BiomeDecider {
public EndLandBiomeDecider() {
this(null);
}
protected EndLandBiomeDecider(Registry<Biome> biomeRegistry) {
super(biomeRegistry, (biome) -> false);
}
@Override
public boolean canProvideFor(BiomeSource source) {
if (source instanceof BCLibEndBiomeSource endSource) {
return endSource.getTogetherConfig().generatorVersion == BCLEndBiomeSourceConfig.EndBiomeGeneratorType.PAULEVS;
}
return false;
}
@Override
public BiomeDecider createInstance(BCLBiomeSource biomeSource) {
return new EndLandBiomeDecider(biomeSource.getBiomeRegistry());
}
@Override
public BiomeAPI.BiomeType suggestType(
BiomeAPI.BiomeType originalType,
BiomeAPI.BiomeType suggestedType,
double density,
int maxHeight,
int blockX,
int blockY,
int blockZ,
int quarterX,
int quarterY,
int quarterZ
) {
if (!TerrainGenerator.isLand(quarterX, quarterZ, maxHeight)) {
return suggestedType.equals(BiomeAPI.BiomeType.END_CENTER)
? BiomeAPI.BiomeType.END_BARRENS
: BiomeAPI.BiomeType.END_VOID;
}
return suggestedType;
}
@Override
public boolean canProvideBiome(BiomeAPI.BiomeType suggestedType) {
return false;
}
}