generify noise registry

This commit is contained in:
dfsek 2021-07-18 13:59:26 -07:00
parent d5601229ac
commit 4b4c26eb84
3 changed files with 9 additions and 15 deletions

View File

@ -1,5 +1,6 @@
package com.dfsek.terra.addons.noise;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.addons.noise.config.NoiseSamplerBuilderLoader;
import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate;
import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate;
@ -34,11 +35,12 @@ 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.registry.CheckedRegistry;
import com.dfsek.terra.api.util.provider.NoiseProvider;
import com.dfsek.terra.api.util.TypeToken;
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
@Addon("config-noise-function")
@Author("Terra")
@ -47,13 +49,15 @@ public class NoiseAddon extends TerraAddon implements EventListener {
@Inject
private TerraPlugin plugin;
public static final TypeToken<Supplier<ObjectTemplate<SeededNoiseSampler>>> NOISE_SAMPLER_TOKEN = new TypeToken<>() {};
@Override
public void initialize() {
plugin.getEventManager().registerListener(this, this);
}
public void packPreLoad(ConfigPackPreLoadEvent event) {
CheckedRegistry<NoiseProvider> noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class);
CheckedRegistry<Supplier<ObjectTemplate<SeededNoiseSampler>>> noiseRegistry = event.getPack().getOrCreateRegistry(NOISE_SAMPLER_TOKEN);
event.getPack()
.applyLoader(SeededNoiseSampler.class, new NoiseSamplerBuilderLoader(noiseRegistry))
.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new)

View File

@ -7,18 +7,18 @@ import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.provider.NoiseProvider;
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
import java.lang.reflect.AnnotatedType;
import java.util.Locale;
import java.util.Map;
import java.util.function.Supplier;
@SuppressWarnings("unchecked")
public class NoiseSamplerBuilderLoader implements TypeLoader<SeededNoiseSampler> {
private final Registry<NoiseProvider> noiseRegistry;
private final Registry<Supplier<ObjectTemplate<SeededNoiseSampler>>> noiseRegistry;
public NoiseSamplerBuilderLoader(Registry<NoiseProvider> noiseRegistry) {
public NoiseSamplerBuilderLoader(Registry<Supplier<ObjectTemplate<SeededNoiseSampler>>> noiseRegistry) {
this.noiseRegistry = noiseRegistry;
}

View File

@ -1,10 +0,0 @@
package com.dfsek.terra.api.util.provider;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
import java.util.function.Supplier;
@FunctionalInterface
public interface NoiseProvider extends Supplier<ObjectTemplate<SeededNoiseSampler>> {
}