BiomeBuilder -> SeededTerraBiome

This commit is contained in:
dfsek
2021-07-17 21:37:57 -07:00
parent 689fe0bc70
commit 3a94c5287c
20 changed files with 58 additions and 64 deletions
@@ -2,14 +2,14 @@ package com.dfsek.terra.addons.biome.image;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { public class ImageProviderTemplate /*extends BiomeProviderTemplate */ {
private final Registry<BiomeBuilder> biomes; private final Registry<SeededTerraBiome> biomes;
@Value("image.name") @Value("image.name")
private BufferedImage image; private BufferedImage image;
@@ -18,7 +18,7 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ {
private int resolution; private int resolution;
public ImageProviderTemplate(Registry<BiomeBuilder> set) { public ImageProviderTemplate(Registry<SeededTerraBiome> set) {
this.biomes = set; this.biomes = set;
} }
@@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.source.RandomSource; import com.dfsek.terra.addons.biome.pipeline.source.RandomSource;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler; import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource;
@@ -12,7 +12,7 @@ public class NoiseSourceTemplate extends SourceTemplate {
private SeededNoiseSampler noise; private SeededNoiseSampler noise;
@Value("biomes") @Value("biomes")
private ProbabilityCollection<BiomeBuilder> biomes; private ProbabilityCollection<SeededTerraBiome> biomes;
@Override @Override
public BiomeSource apply(Long seed) { public BiomeSource apply(Long seed) {
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator;
import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import java.util.HashMap; import java.util.HashMap;
@@ -19,10 +19,10 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate {
private String defaultReplace; private String defaultReplace;
@Value("default-to") @Value("default-to")
private ProbabilityCollection<BiomeBuilder> defaultTo; private ProbabilityCollection<SeededTerraBiome> defaultTo;
@Value("replace") @Value("replace")
private Map<BiomeBuilder, ProbabilityCollection<BiomeBuilder>> replace; private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace;
@Override @Override
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator;
import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class BorderMutatorTemplate extends MutatorStageTemplate { public class BorderMutatorTemplate extends MutatorStageTemplate {
@@ -15,7 +15,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate {
private String replace; private String replace;
@Value("to") @Value("to")
private ProbabilityCollection<BiomeBuilder> to; private ProbabilityCollection<SeededTerraBiome> to;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator build(long seed) {
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator;
import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import java.util.HashMap; import java.util.HashMap;
@@ -16,10 +16,10 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate {
private String defaultFrom; private String defaultFrom;
@Value("default-to") @Value("default-to")
private ProbabilityCollection<BiomeBuilder> defaultTo; private ProbabilityCollection<SeededTerraBiome> defaultTo;
@Value("to") @Value("to")
private Map<BiomeBuilder, ProbabilityCollection<BiomeBuilder>> replace; private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator build(long seed) {
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator;
import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class ReplaceMutatorTemplate extends MutatorStageTemplate { public class ReplaceMutatorTemplate extends MutatorStageTemplate {
@@ -12,7 +12,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate {
private String from; private String from;
@Value("to") @Value("to")
private ProbabilityCollection<BiomeBuilder> to; private ProbabilityCollection<SeededTerraBiome> to;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator build(long seed) {
@@ -2,13 +2,13 @@ package com.dfsek.terra.addons.biome.single;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public class SingleBiomeProviderTemplate implements ObjectTemplate<BiomeProviderBuilder>, BiomeProviderBuilder { public class SingleBiomeProviderTemplate implements ObjectTemplate<BiomeProviderBuilder>, BiomeProviderBuilder {
@Value("biome") @Value("biome")
private BiomeBuilder biome; private SeededTerraBiome biome;
@Override @Override
public BiomeProvider build(long seed) { public BiomeProvider build(long seed) {
@@ -15,7 +15,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
@Addon("chunk-generator-noise-3d") @Addon("chunk-generator-noise-3d")
@@ -37,8 +37,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe
} }
public void onBiomeLoad(ConfigurationLoadEvent event) { public void onBiomeLoad(ConfigurationLoadEvent event) {
if(event.is(BiomeBuilder.class)) { if(event.is(SeededTerraBiome.class)) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get());
} }
} }
} }
@@ -7,11 +7,11 @@ import com.dfsek.terra.api.config.ConfigFactory;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.ConfigType;
import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import java.util.function.Supplier; import java.util.function.Supplier;
public class BiomeConfigType implements ConfigType<BiomeTemplate, BiomeBuilder> { public class BiomeConfigType implements ConfigType<BiomeTemplate, SeededTerraBiome> {
private final ConfigPack pack; private final ConfigPack pack;
private final BiomeFactory factory; private final BiomeFactory factory;
@@ -26,20 +26,20 @@ public class BiomeConfigType implements ConfigType<BiomeTemplate, BiomeBuilder>
} }
@Override @Override
public ConfigFactory<BiomeTemplate, BiomeBuilder> getFactory() { public ConfigFactory<BiomeTemplate, SeededTerraBiome> getFactory() {
return factory; return factory;
} }
@Override @Override
public Class<BiomeBuilder> getTypeClass() { public Class<SeededTerraBiome> getTypeClass() {
return BiomeBuilder.class; return SeededTerraBiome.class;
} }
@Override @Override
public Supplier<OpenRegistry<BiomeBuilder>> registrySupplier() { public Supplier<OpenRegistry<SeededTerraBiome>> registrySupplier() {
return () -> pack.getRegistryFactory().create(registry -> (TypeLoader<BiomeBuilder>) (t, c, loader) -> { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader<SeededTerraBiome>) (t, c, loader) -> {
if(c.equals("SELF")) return null; if(c.equals("SELF")) return null;
BiomeBuilder obj = registry.get((String) c); SeededTerraBiome obj = registry.get((String) c);
if(obj == null) if(obj == null)
throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry.");
return obj; return obj;
@@ -3,9 +3,9 @@ package com.dfsek.terra.addons.biome;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigFactory;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
public class BiomeFactory implements ConfigFactory<BiomeTemplate, BiomeBuilder> { public class BiomeFactory implements ConfigFactory<BiomeTemplate, SeededTerraBiome> {
private final ConfigPack pack; private final ConfigPack pack;
public BiomeFactory(ConfigPack pack) { public BiomeFactory(ConfigPack pack) {
@@ -13,7 +13,7 @@ public class BiomeFactory implements ConfigFactory<BiomeTemplate, BiomeBuilder>
} }
@Override @Override
public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) { public SeededTerraBiome build(BiomeTemplate template, TerraPlugin main) {
return new UserDefinedBiomeBuilder(template); return new UserDefinedSeededTerraBiome(template);
} }
} }
@@ -2,19 +2,19 @@ package com.dfsek.terra.addons.biome;
import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.properties.Context;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.Biome;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
public class UserDefinedBiomeBuilder implements BiomeBuilder { public class UserDefinedSeededTerraBiome implements SeededTerraBiome {
private final BiomeTemplate template; private final BiomeTemplate template;
private final Context context = new Context(); private final Context context = new Context();
private final Map<Long, UserDefinedBiome> biomeMap = new ConcurrentHashMap<>(); private final Map<Long, UserDefinedBiome> biomeMap = new ConcurrentHashMap<>();
public UserDefinedBiomeBuilder(BiomeTemplate template) { public UserDefinedSeededTerraBiome(BiomeTemplate template) {
this.template = template; this.template = template;
} }
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("generation-stage-feature") @Addon("generation-stage-feature")
@@ -30,8 +30,8 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener
} }
public void onBiomeLoad(ConfigurationLoadEvent event) { public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get());
} }
} }
} }
@@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("generation-stage-flora") @Addon("generation-stage-flora")
@@ -31,8 +31,8 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener {
} }
public void onBiomeLoad(ConfigurationLoadEvent event) { public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get()); event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get());
} }
} }
} }
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("generation-stage-tree") @Addon("generation-stage-tree")
@@ -31,8 +31,8 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener {
} }
public void onBiomeLoad(ConfigurationLoadEvent event) { public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) { if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get()); event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get());
} }
} }
} }
@@ -7,6 +7,6 @@ import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
@Linked(TerraBiome.class) @Linked(TerraBiome.class)
public interface BiomeBuilder extends SeededBuilder<TerraBiome>, PropertyHolder { public interface SeededTerraBiome extends SeededBuilder<TerraBiome>, PropertyHolder {
ProbabilityCollection<Biome> getVanillaBiomes(); ProbabilityCollection<Biome> getVanillaBiomes();
} }
@@ -4,7 +4,7 @@ package com.dfsek.terra.api.world.biome;
import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.properties.PropertyHolder;
import com.dfsek.terra.api.properties.annotations.Linked; import com.dfsek.terra.api.properties.annotations.Linked;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import java.util.Set; import java.util.Set;
@@ -12,7 +12,7 @@ import java.util.Set;
/** /**
* Represents a custom biome * Represents a custom biome
*/ */
@Linked(BiomeBuilder.class) @Linked(SeededTerraBiome.class)
public interface TerraBiome extends PropertyHolder { public interface TerraBiome extends PropertyHolder {
/** /**
@@ -4,22 +4,16 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.GenerationStage;
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.SamplerCache;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl;
import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl;
import com.dfsek.terra.world.SamplerCacheImpl; import com.dfsek.terra.world.SamplerCacheImpl;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
public class WorldConfigImpl implements WorldConfig { public class WorldConfigImpl implements WorldConfig {
@@ -40,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig {
pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft())));
OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistryImpl<>(); OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistryImpl<>();
pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed())));
registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry));
this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed());
@@ -28,7 +28,7 @@ import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.generic.pair.Pair;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Tree;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
@@ -364,7 +364,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
public void injectBiomes(BiomeRegistrationEvent event) { public void injectBiomes(BiomeRegistrationEvent event) {
logger.info("Registering biomes..."); logger.info("Registering biomes...");
Registry<Biome> biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); Registry<Biome> biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY);
configRegistry.forEach(pack -> pack.getCheckedRegistry(BiomeBuilder.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. configRegistry.forEach(pack -> pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes.
logger.info("Biomes registered."); logger.info("Biomes registered.");
} }
@@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.config;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import java.util.HashMap; import java.util.HashMap;
@@ -14,17 +14,17 @@ import java.util.Set;
public class PostLoadCompatibilityOptions implements ConfigTemplate { public class PostLoadCompatibilityOptions implements ConfigTemplate {
@Value("structures.inject-biome.exclude-biomes") @Value("structures.inject-biome.exclude-biomes")
@Default @Default
private Map<BiomeBuilder, Set<Identifier>> excludedPerBiomeStructures = new HashMap<>(); private Map<SeededTerraBiome, Set<Identifier>> excludedPerBiomeStructures = new HashMap<>();
@Value("features.inject-biome.exclude-biomes") @Value("features.inject-biome.exclude-biomes")
@Default @Default
private Map<BiomeBuilder, Set<Identifier>> excludedPerBiomeFeatures = new HashMap<>(); private Map<SeededTerraBiome, Set<Identifier>> excludedPerBiomeFeatures = new HashMap<>();
public Map<BiomeBuilder, Set<Identifier>> getExcludedPerBiomeFeatures() { public Map<SeededTerraBiome, Set<Identifier>> getExcludedPerBiomeFeatures() {
return excludedPerBiomeFeatures; return excludedPerBiomeFeatures;
} }
public Map<BiomeBuilder, Set<Identifier>> getExcludedPerBiomeStructures() { public Map<SeededTerraBiome, Set<Identifier>> getExcludedPerBiomeStructures() {
return excludedPerBiomeStructures; return excludedPerBiomeStructures;
} }
} }
@@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.entity.Container;
import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.MobSpawner;
import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.block.entity.Sign;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.util.seeded.BiomeBuilder; import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor; import com.dfsek.terra.fabric.mixin.access.BiomeEffectsAccessor;
import com.mojang.serialization.Lifecycle; import com.mojang.serialization.Lifecycle;
@@ -43,7 +43,7 @@ public final class FabricUtil {
* @param pack The ConfigPack this biome belongs to. * @param pack The ConfigPack this biome belongs to.
* @return The Minecraft delegate biome. * @return The Minecraft delegate biome.
*/ */
public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { public static Biome createBiome(SeededTerraBiome biome, ConfigPack pack, DynamicRegistryManager registryManager) {
// BiomeTemplate template = biome.getTemplate(); // BiomeTemplate template = biome.getTemplate();
Map<String, Integer> colors = new HashMap<>(); // template.getColors(); Map<String, Integer> colors = new HashMap<>(); // template.getColors();