mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-04 06:46:21 +00:00
generify biome provider
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.dfsek.terra.addons.biome.image;
|
||||
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import net.jafama.FastMath;
|
||||
@@ -11,7 +11,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class ImageBiomeProvider implements BiomeProvider, SeededBiomeProvider { // This provider does not need a seed, so it is its own builder.
|
||||
public class ImageBiomeProvider implements BiomeProvider, SeededBuilder<BiomeProvider> { // This provider does not need a seed, so it is its own builder.
|
||||
private final Map<Color, TerraBiome> colorBiomeMap = new HashMap<>();
|
||||
private final BufferedImage image;
|
||||
private final int resolution;
|
||||
|
||||
@@ -21,8 +21,10 @@ import com.dfsek.terra.api.addon.annotations.Version;
|
||||
import com.dfsek.terra.api.event.EventListener;
|
||||
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.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.TypeToken;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeSource;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
@@ -33,6 +35,8 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener {
|
||||
@Inject
|
||||
private TerraPlugin main;
|
||||
|
||||
public static final TypeToken<SeededBuilder<BiomeProvider>> BIOME_PROVIDER_BUILDER_TOKEN = new TypeToken<>(){};
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
main.getEventManager().registerListener(this, this);
|
||||
@@ -51,6 +55,6 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener {
|
||||
.applyLoader(SmoothMutatorTemplate.class, SmoothMutatorTemplate::new)
|
||||
.applyLoader(ExpanderStageTemplate.class, ExpanderStageTemplate::new)
|
||||
.applyLoader((Type) BiomePipelineTemplate.class, () -> new BiomePipelineTemplate(main))
|
||||
.applyLoader(SeededBiomeProvider.class, new BiomeProviderBuilderLoader());
|
||||
.applyLoader(BIOME_PROVIDER_BUILDER_TOKEN.getType(), new BiomeProviderBuilderLoader());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,13 +3,14 @@ package com.dfsek.terra.addons.biome.pipeline.config;
|
||||
import com.dfsek.tectonic.exception.LoadException;
|
||||
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||
import com.dfsek.tectonic.loading.TypeLoader;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
import java.lang.reflect.AnnotatedType;
|
||||
|
||||
public class BiomeProviderBuilderLoader implements TypeLoader<SeededBiomeProvider> {
|
||||
public class BiomeProviderBuilderLoader implements TypeLoader<SeededBuilder<BiomeProvider>> {
|
||||
@Override
|
||||
public SeededBiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException {
|
||||
public SeededBuilder<BiomeProvider> load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException {
|
||||
return loader.loadType(BiomePipelineTemplate.class, c); // TODO: actually implement this lol
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,10 +3,11 @@ package com.dfsek.terra.addons.biome.pipeline.config;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
public abstract class BiomeProviderTemplate implements ObjectTemplate<SeededBiomeProvider>, SeededBiomeProvider {
|
||||
public abstract class BiomeProviderTemplate implements ObjectTemplate<SeededBuilder<BiomeProvider>>, SeededBuilder<BiomeProvider> {
|
||||
@Value("resolution")
|
||||
@Default
|
||||
protected int resolution = 1;
|
||||
@@ -18,7 +19,7 @@ public abstract class BiomeProviderTemplate implements ObjectTemplate<SeededBiom
|
||||
protected double blendAmp = 0d;
|
||||
|
||||
@Override
|
||||
public SeededBiomeProvider get() {
|
||||
public SeededBuilder<BiomeProvider> get() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.biome.single;
|
||||
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
public class SingleBiomeProvider implements BiomeProvider, SeededBiomeProvider {
|
||||
public class SingleBiomeProvider implements BiomeProvider, SeededBuilder<BiomeProvider> {
|
||||
private final TerraBiome biome;
|
||||
|
||||
public SingleBiomeProvider(TerraBiome biome) {
|
||||
|
||||
@@ -2,11 +2,11 @@ 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.SeededBuilder;
|
||||
import com.dfsek.terra.api.util.seeded.SeededTerraBiome;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
public class SingleBiomeProviderTemplate implements ObjectTemplate<SeededBiomeProvider>, SeededBiomeProvider {
|
||||
public class SingleBiomeProviderTemplate implements ObjectTemplate<SeededBuilder<BiomeProvider>>, SeededBuilder<BiomeProvider> {
|
||||
@Value("biome")
|
||||
private SeededTerraBiome biome;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate<SeededBiomePr
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeededBiomeProvider get() {
|
||||
public SeededBuilder<BiomeProvider> get() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,9 @@ import com.dfsek.terra.api.registry.meta.RegistryHolder;
|
||||
import com.dfsek.terra.api.tectonic.LoaderHolder;
|
||||
import com.dfsek.terra.api.tectonic.LoaderRegistrar;
|
||||
import com.dfsek.terra.api.util.TypeToken;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.TerraWorld;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
|
||||
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
|
||||
|
||||
@@ -18,7 +19,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder {
|
||||
SeededBiomeProvider getBiomeProviderBuilder();
|
||||
SeededBuilder<BiomeProvider> getBiomeProviderBuilder();
|
||||
|
||||
<T> CheckedRegistry<T> getOrCreateRegistry(Type clazz);
|
||||
default <T> CheckedRegistry<T> getOrCreateRegistry(Class<T> clazz) {
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.dfsek.terra.api.util.seeded;
|
||||
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
public interface SeededBiomeProvider extends SeededBuilder<BiomeProvider> {
|
||||
}
|
||||
@@ -30,8 +30,9 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
||||
import com.dfsek.terra.api.registry.meta.RegistryFactory;
|
||||
import com.dfsek.terra.api.util.ReflectionUtil;
|
||||
import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.TerraWorld;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
|
||||
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
|
||||
import com.dfsek.terra.config.dummy.DummyWorld;
|
||||
@@ -83,7 +84,7 @@ public class ConfigPackImpl implements ConfigPack {
|
||||
|
||||
private final Set<TerraAddon> addons;
|
||||
|
||||
private final SeededBiomeProvider seededBiomeProvider;
|
||||
private final SeededBuilder<BiomeProvider> seededBiomeProvider;
|
||||
|
||||
private final Map<Type, ImmutablePair<OpenRegistry<?>, CheckedRegistry<?>>> registryMap = new HashMap<>();
|
||||
|
||||
@@ -294,7 +295,7 @@ public class ConfigPackImpl implements ConfigPack {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeededBiomeProvider getBiomeProviderBuilder() {
|
||||
public SeededBuilder<BiomeProvider> getBiomeProviderBuilder() {
|
||||
return seededBiomeProvider;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@ package com.dfsek.terra.config.pack;
|
||||
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBiomeProvider;
|
||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
public class ConfigPackPostTemplate implements ConfigTemplate {
|
||||
@Value("biomes")
|
||||
private SeededBiomeProvider providerBuilder;
|
||||
private SeededBuilder<BiomeProvider> providerBuilder;
|
||||
|
||||
public SeededBiomeProvider getProviderBuilder() {
|
||||
public SeededBuilder<BiomeProvider> getProviderBuilder() {
|
||||
return providerBuilder;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user