generify biome provider

This commit is contained in:
dfsek
2021-07-18 14:05:04 -07:00
parent 4b4c26eb84
commit 40cd6607b2
10 changed files with 32 additions and 29 deletions

View File

@@ -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;

View File

@@ -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());
}
}

View File

@@ -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
}
}

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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;
}
}