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

View File

@@ -2,14 +2,14 @@ package com.dfsek.terra.addons.biome.image;
import com.dfsek.tectonic.annotations.Value;
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 java.awt.image.BufferedImage;
import java.util.stream.Collectors;
public class ImageProviderTemplate /*extends BiomeProviderTemplate */ {
private final Registry<BiomeBuilder> biomes;
private final Registry<SeededTerraBiome> biomes;
@Value("image.name")
private BufferedImage image;
@@ -18,7 +18,7 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ {
private int resolution;
public ImageProviderTemplate(Registry<BiomeBuilder> set) {
public ImageProviderTemplate(Registry<SeededTerraBiome> set) {
this.biomes = set;
}

View File

@@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.config;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.biome.pipeline.source.RandomSource;
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.world.biome.generation.pipeline.BiomeSource;
@@ -12,7 +12,7 @@ public class NoiseSourceTemplate extends SourceTemplate {
private SeededNoiseSampler noise;
@Value("biomes")
private ProbabilityCollection<BiomeBuilder> biomes;
private ProbabilityCollection<SeededTerraBiome> biomes;
@Override
public BiomeSource apply(Long seed) {

View File

@@ -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.mutator.BorderListMutator;
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 java.util.HashMap;
@@ -19,10 +19,10 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate {
private String defaultReplace;
@Value("default-to")
private ProbabilityCollection<BiomeBuilder> defaultTo;
private ProbabilityCollection<SeededTerraBiome> defaultTo;
@Value("replace")
private Map<BiomeBuilder, ProbabilityCollection<BiomeBuilder>> replace;
private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace;
@Override

View File

@@ -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.mutator.BorderMutator;
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")
public class BorderMutatorTemplate extends MutatorStageTemplate {
@@ -15,7 +15,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate {
private String replace;
@Value("to")
private ProbabilityCollection<BiomeBuilder> to;
private ProbabilityCollection<SeededTerraBiome> to;
@Override
public BiomeMutator build(long seed) {

View File

@@ -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.mutator.ReplaceListMutator;
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 java.util.HashMap;
@@ -16,10 +16,10 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate {
private String defaultFrom;
@Value("default-to")
private ProbabilityCollection<BiomeBuilder> defaultTo;
private ProbabilityCollection<SeededTerraBiome> defaultTo;
@Value("to")
private Map<BiomeBuilder, ProbabilityCollection<BiomeBuilder>> replace;
private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace;
@Override
public BiomeMutator build(long seed) {

View File

@@ -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.mutator.ReplaceMutator;
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")
public class ReplaceMutatorTemplate extends MutatorStageTemplate {
@@ -12,7 +12,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate {
private String from;
@Value("to")
private ProbabilityCollection<BiomeBuilder> to;
private ProbabilityCollection<SeededTerraBiome> to;
@Override
public BiomeMutator build(long seed) {

View File

@@ -2,13 +2,13 @@ package com.dfsek.terra.addons.biome.single;
import com.dfsek.tectonic.annotations.Value;
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.world.biome.generation.BiomeProvider;
public class SingleBiomeProviderTemplate implements ObjectTemplate<BiomeProviderBuilder>, BiomeProviderBuilder {
@Value("biome")
private BiomeBuilder biome;
private SeededTerraBiome biome;
@Override
public BiomeProvider build(long seed) {

View File

@@ -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.injection.annotations.Inject;
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;
@Addon("chunk-generator-noise-3d")
@@ -37,8 +37,8 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe
}
public void onBiomeLoad(ConfigurationLoadEvent event) {
if(event.is(BiomeBuilder.class)) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomePaletteTemplate()).get());
if(event.is(SeededTerraBiome.class)) {
event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get());
}
}
}

View File

@@ -7,11 +7,11 @@ import com.dfsek.terra.api.config.ConfigFactory;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.ConfigType;
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;
public class BiomeConfigType implements ConfigType<BiomeTemplate, BiomeBuilder> {
public class BiomeConfigType implements ConfigType<BiomeTemplate, SeededTerraBiome> {
private final ConfigPack pack;
private final BiomeFactory factory;
@@ -26,20 +26,20 @@ public class BiomeConfigType implements ConfigType<BiomeTemplate, BiomeBuilder>
}
@Override
public ConfigFactory<BiomeTemplate, BiomeBuilder> getFactory() {
public ConfigFactory<BiomeTemplate, SeededTerraBiome> getFactory() {
return factory;
}
@Override
public Class<BiomeBuilder> getTypeClass() {
return BiomeBuilder.class;
public Class<SeededTerraBiome> getTypeClass() {
return SeededTerraBiome.class;
}
@Override
public Supplier<OpenRegistry<BiomeBuilder>> registrySupplier() {
return () -> pack.getRegistryFactory().create(registry -> (TypeLoader<BiomeBuilder>) (t, c, loader) -> {
public Supplier<OpenRegistry<SeededTerraBiome>> registrySupplier() {
return () -> pack.getRegistryFactory().create(registry -> (TypeLoader<SeededTerraBiome>) (t, c, loader) -> {
if(c.equals("SELF")) return null;
BiomeBuilder obj = registry.get((String) c);
SeededTerraBiome obj = registry.get((String) c);
if(obj == null)
throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry.");
return obj;

View File

@@ -3,9 +3,9 @@ package com.dfsek.terra.addons.biome;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigFactory;
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;
public BiomeFactory(ConfigPack pack) {
@@ -13,7 +13,7 @@ public class BiomeFactory implements ConfigFactory<BiomeTemplate, BiomeBuilder>
}
@Override
public BiomeBuilder build(BiomeTemplate template, TerraPlugin main) {
return new UserDefinedBiomeBuilder(template);
public SeededTerraBiome build(BiomeTemplate template, TerraPlugin main) {
return new UserDefinedSeededTerraBiome(template);
}
}

View File

@@ -2,19 +2,19 @@ package com.dfsek.terra.addons.biome;
import com.dfsek.terra.api.properties.Context;
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 java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class UserDefinedBiomeBuilder implements BiomeBuilder {
public class UserDefinedSeededTerraBiome implements SeededTerraBiome {
private final BiomeTemplate template;
private final Context context = new Context();
private final Map<Long, UserDefinedBiome> biomeMap = new ConcurrentHashMap<>();
public UserDefinedBiomeBuilder(BiomeTemplate template) {
public UserDefinedSeededTerraBiome(BiomeTemplate template) {
this.template = template;
}

View File

@@ -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.pack.ConfigPackPreLoadEvent;
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;
@Addon("generation-stage-feature")
@@ -30,8 +30,8 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener
}
public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get());
if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get());
}
}
}

View File

@@ -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.pack.ConfigPackPreLoadEvent;
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;
@Addon("generation-stage-flora")
@@ -31,8 +31,8 @@ public class FloraGenerationAddon extends TerraAddon implements EventListener {
}
public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFloraTemplate()).get());
if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeFloraTemplate()).get());
}
}
}

View File

@@ -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.injection.annotations.Inject;
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;
@Addon("generation-stage-tree")
@@ -31,8 +31,8 @@ public class TreeGenerationAddon extends TerraAddon implements EventListener {
}
public void onBiomeLoad(ConfigurationLoadEvent event) {
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeTreeTemplate()).get());
if(SeededTerraBiome.class.isAssignableFrom(event.getType().getTypeClass())) {
event.getLoadedObject(SeededTerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get());
}
}
}

View File

@@ -7,6 +7,6 @@ import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.world.biome.TerraBiome;
@Linked(TerraBiome.class)
public interface BiomeBuilder extends SeededBuilder<TerraBiome>, PropertyHolder {
public interface SeededTerraBiome extends SeededBuilder<TerraBiome>, PropertyHolder {
ProbabilityCollection<Biome> getVanillaBiomes();
}

View File

@@ -4,7 +4,7 @@ package com.dfsek.terra.api.world.biome;
import com.dfsek.terra.api.properties.PropertyHolder;
import com.dfsek.terra.api.properties.annotations.Linked;
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 java.util.Set;
@@ -12,7 +12,7 @@ import java.util.Set;
/**
* Represents a custom biome
*/
@Linked(BiomeBuilder.class)
@Linked(SeededTerraBiome.class)
public interface TerraBiome extends PropertyHolder {
/**

View File

@@ -4,22 +4,16 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.registry.OpenRegistry;
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.biome.TerraBiome;
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.TerraGenerationStage;
import com.dfsek.terra.registry.LockedRegistryImpl;
import com.dfsek.terra.registry.OpenRegistryImpl;
import com.dfsek.terra.world.SamplerCacheImpl;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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())));
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));
this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed());

View File

@@ -28,7 +28,7 @@ import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
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.Tree;
import com.dfsek.terra.api.world.World;
@@ -364,7 +364,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
public void injectBiomes(BiomeRegistrationEvent event) {
logger.info("Registering biomes...");
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.");
}

View File

@@ -3,7 +3,7 @@ package com.dfsek.terra.fabric.config;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
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 java.util.HashMap;
@@ -14,17 +14,17 @@ import java.util.Set;
public class PostLoadCompatibilityOptions implements ConfigTemplate {
@Value("structures.inject-biome.exclude-biomes")
@Default
private Map<BiomeBuilder, Set<Identifier>> excludedPerBiomeStructures = new HashMap<>();
private Map<SeededTerraBiome, Set<Identifier>> excludedPerBiomeStructures = new HashMap<>();
@Value("features.inject-biome.exclude-biomes")
@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;
}
public Map<BiomeBuilder, Set<Identifier>> getExcludedPerBiomeStructures() {
public Map<SeededTerraBiome, Set<Identifier>> getExcludedPerBiomeStructures() {
return excludedPerBiomeStructures;
}
}

View File

@@ -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.Sign;
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.mixin.access.BiomeEffectsAccessor;
import com.mojang.serialization.Lifecycle;
@@ -43,7 +43,7 @@ public final class FabricUtil {
* @param pack The ConfigPack this biome belongs to.
* @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();
Map<String, Integer> colors = new HashMap<>(); // template.getColors();