mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
Register Fabric biomes as actual modded biomes.
This commit is contained in:
@@ -14,6 +14,7 @@ import com.dfsek.terra.api.transform.MapTransform;
|
|||||||
import com.dfsek.terra.api.transform.NotNullValidator;
|
import com.dfsek.terra.api.transform.NotNullValidator;
|
||||||
import com.dfsek.terra.api.transform.Transformer;
|
import com.dfsek.terra.api.transform.Transformer;
|
||||||
import com.dfsek.terra.biome.UserDefinedBiome;
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
import com.dfsek.terra.config.base.PluginConfig;
|
import com.dfsek.terra.config.base.PluginConfig;
|
||||||
import com.dfsek.terra.config.lang.LangUtil;
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
||||||
@@ -26,6 +27,7 @@ import com.dfsek.terra.registry.ConfigRegistry;
|
|||||||
import net.fabricmc.api.EnvType;
|
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.block.Blocks;
|
||||||
import net.minecraft.client.world.GeneratorType;
|
import net.minecraft.client.world.GeneratorType;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
@@ -42,6 +44,8 @@ import net.minecraft.world.gen.feature.Feature;
|
|||||||
import net.minecraft.world.gen.feature.HugeMushroomFeature;
|
import net.minecraft.world.gen.feature.HugeMushroomFeature;
|
||||||
import net.minecraft.world.gen.feature.TreeFeature;
|
import net.minecraft.world.gen.feature.TreeFeature;
|
||||||
import net.minecraft.world.gen.feature.TreeFeatureConfig;
|
import net.minecraft.world.gen.feature.TreeFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder;
|
||||||
|
import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -158,26 +162,41 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
.registerLoader(com.dfsek.terra.api.generic.world.Biome.class, (t, o, l) -> new FabricBiome(biomeFixer.translate((String) o)));
|
.registerLoader(com.dfsek.terra.api.generic.world.Biome.class, (t, o, l) -> new FabricBiome(biomeFixer.translate((String) o)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String createBiomeID(ConfigPack pack, UserDefinedBiome biome) {
|
||||||
|
return pack.getTemplate().getID().toLowerCase() + "/" + biome.getID().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
private Biome createBiome(UserDefinedBiome biome) {
|
private Biome createBiome(UserDefinedBiome biome) {
|
||||||
SpawnSettings.Builder spawnSettings = new SpawnSettings.Builder();
|
SpawnSettings.Builder spawnSettings = new SpawnSettings.Builder();
|
||||||
DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
|
DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
|
||||||
DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
|
DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
|
||||||
|
|
||||||
|
Biome vanilla = ((FabricBiome) biome.getVanillaBiome()).getHandle();
|
||||||
|
|
||||||
GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
|
GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
|
||||||
|
generationSettings.surfaceBuilder(SurfaceBuilder.DEFAULT.withConfig(new TernarySurfaceConfig(Blocks.GRASS_BLOCK.getDefaultState(), Blocks.DIRT.getDefaultState(), Blocks.GRAVEL.getDefaultState()))); // It needs a surfacebuilder, even though we dont use it.
|
||||||
|
|
||||||
|
BiomeEffects.Builder effects = new BiomeEffects.Builder()
|
||||||
|
.waterColor(vanilla.getWaterColor())
|
||||||
|
.waterFogColor(vanilla.getWaterFogColor())
|
||||||
|
.fogColor(vanilla.getFogColor())
|
||||||
|
.skyColor(vanilla.getSkyColor())
|
||||||
|
.grassColorModifier(vanilla.getEffects().getGrassColorModifier());
|
||||||
|
if(vanilla.getEffects().getGrassColor().isPresent()) {
|
||||||
|
effects.grassColor(vanilla.getEffects().getGrassColor().get());
|
||||||
|
}
|
||||||
|
if(vanilla.getEffects().getFoliageColor().isPresent()) {
|
||||||
|
effects.foliageColor(vanilla.getEffects().getFoliageColor().get());
|
||||||
|
}
|
||||||
|
|
||||||
return (new Biome.Builder())
|
return (new Biome.Builder())
|
||||||
.precipitation(Biome.Precipitation.RAIN)
|
.precipitation(vanilla.getPrecipitation())
|
||||||
.category(Biome.Category.NONE)
|
.category(vanilla.getCategory())
|
||||||
.depth(0.125F)
|
.depth(vanilla.getDepth())
|
||||||
.scale(0.05F)
|
.scale(vanilla.getScale())
|
||||||
.temperature(0.8F)
|
.temperature(0.8F)
|
||||||
.downfall(0.4F)
|
.downfall(0.4F)
|
||||||
.effects((new BiomeEffects.Builder())
|
.effects(effects.build())
|
||||||
.waterColor(0x3f76e4)
|
|
||||||
.waterFogColor(0x050533)
|
|
||||||
.fogColor(0xc0d8ff)
|
|
||||||
.skyColor(0x77adff)
|
|
||||||
.build())
|
|
||||||
.spawnSettings(spawnSettings.build())
|
.spawnSettings(spawnSettings.build())
|
||||||
.generationSettings(generationSettings.build())
|
.generationSettings(generationSettings.build())
|
||||||
.build();
|
.build();
|
||||||
@@ -213,9 +232,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
plugin.load(this);
|
plugin.load(this);
|
||||||
LangUtil.load("en_us", this);
|
LangUtil.load("en_us", this);
|
||||||
logger.info("Initializing Terra...");
|
logger.info("Initializing Terra...");
|
||||||
registry.loadAll(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
registry.loadAll(this);
|
||||||
|
registry.forEach(pack -> pack.getBiomeRegistry().forEach(biome -> Registry.register(BuiltinRegistries.BIOME, new Identifier("terra", createBiomeID(pack, biome)), createBiome(biome)))); // Register all Terra biomes.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
registry.forEach(config -> {
|
registry.forEach(config -> {
|
||||||
String pack = config.getTemplate().getID().toLowerCase();
|
String pack = config.getTemplate().getID().toLowerCase();
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.dfsek.terra.fabric.world;
|
package com.dfsek.terra.fabric.world;
|
||||||
|
|
||||||
import com.dfsek.terra.api.gaea.generation.GenerationPhase;
|
import com.dfsek.terra.api.gaea.generation.GenerationPhase;
|
||||||
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
||||||
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.registry.RegistryLookupCodec;
|
import net.minecraft.util.registry.RegistryLookupCodec;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
@@ -23,12 +25,14 @@ public class TerraBiomeSource extends BiomeSource {
|
|||||||
private final Registry<Biome> biomeRegistry;
|
private final Registry<Biome> biomeRegistry;
|
||||||
private final long seed;
|
private final long seed;
|
||||||
private final TerraBiomeGrid grid;
|
private final TerraBiomeGrid grid;
|
||||||
|
private final ConfigPack pack;
|
||||||
|
|
||||||
public TerraBiomeSource(Registry<Biome> biomes, long seed) {
|
public TerraBiomeSource(Registry<Biome> biomes, long seed) {
|
||||||
super(biomes.stream().collect(Collectors.toList()));
|
super(biomes.stream().collect(Collectors.toList()));
|
||||||
this.biomeRegistry = biomes;
|
this.biomeRegistry = biomes;
|
||||||
this.seed = seed;
|
this.seed = seed;
|
||||||
this.grid = new TerraBiomeGrid.TerraBiomeGridBuilder(seed, TerraFabricPlugin.getInstance().getRegistry().get("DEFAULT"), TerraFabricPlugin.getInstance()).build();
|
this.grid = new TerraBiomeGrid.TerraBiomeGridBuilder(seed, TerraFabricPlugin.getInstance().getRegistry().get("DEFAULT"), TerraFabricPlugin.getInstance()).build();
|
||||||
|
this.pack = TerraFabricPlugin.getInstance().getRegistry().get("DEFAULT");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -43,8 +47,8 @@ public class TerraBiomeSource extends BiomeSource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) {
|
public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) {
|
||||||
FabricBiome biome = ((FabricBiome) grid.getBiome(biomeX * 4, biomeZ * 4, GenerationPhase.BASE).getVanillaBiome());
|
UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(biomeX * 4, biomeZ * 4, GenerationPhase.BASE);
|
||||||
return biomeRegistry.get(BuiltinRegistries.BIOME.getRawId(biome.getHandle()));
|
return biomeRegistry.get(new Identifier("terra", TerraFabricPlugin.createBiomeID(pack, biome)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user