[Feature] More flexible/extensible End-Biome Placement
This commit is contained in:
parent
c695e0af5e
commit
3f3454e634
2 changed files with 63 additions and 7 deletions
|
@ -1,5 +1,6 @@
|
|||
package org.betterx.betterend;
|
||||
|
||||
import org.betterx.bclib.api.v2.generator.BiomeDecider;
|
||||
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
|
||||
import org.betterx.bclib.util.Logger;
|
||||
import org.betterx.betterend.api.BetterEndPlugin;
|
||||
|
@ -11,8 +12,8 @@ import org.betterx.betterend.recipe.*;
|
|||
import org.betterx.betterend.registry.*;
|
||||
import org.betterx.betterend.util.BonemealPlants;
|
||||
import org.betterx.betterend.util.LootTableUtil;
|
||||
import org.betterx.betterend.world.generator.EndLandBiomeDecider;
|
||||
import org.betterx.betterend.world.generator.GeneratorOptions;
|
||||
import org.betterx.betterend.world.generator.TerrainGenerator;
|
||||
import org.betterx.worlds.together.world.WorldConfig;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
@ -59,12 +60,7 @@ public class BetterEnd implements ModInitializer {
|
|||
Configs.saveConfigs();
|
||||
|
||||
if (GeneratorOptions.useNewGenerator()) {
|
||||
org.betterx.bclib.api.v2.generator.GeneratorOptions.setFarEndBiomes(GeneratorOptions.getIslandDistBlock());
|
||||
org.betterx.bclib.api.v2.generator.GeneratorOptions.setEndLandFunction((pos, height) -> TerrainGenerator.isLand(
|
||||
pos.x,
|
||||
pos.y,
|
||||
height
|
||||
));
|
||||
BiomeDecider.registerDecider(makeID("end_land"), new EndLandBiomeDecider());
|
||||
}
|
||||
|
||||
BiomeAPI.registerEndBiomeModification((biomeID, biome) -> {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue