dont implement LoaderHolder in TerraPlugin

This commit is contained in:
dfsek
2021-07-15 14:05:44 -07:00
parent b3594b2479
commit 2705e7d6a2
11 changed files with 45 additions and 70 deletions

View File

@@ -19,6 +19,7 @@ import com.dfsek.terra.api.addon.annotations.Addon;
import com.dfsek.terra.api.addon.annotations.Author;
import com.dfsek.terra.api.addon.annotations.Version;
import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder;
import com.dfsek.terra.api.util.seeded.SourceSeeded;
@@ -34,7 +35,11 @@ public class BiomePipelineAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.applyLoader(SourceSeeded.class, new SourceBuilderLoader())
main.getEventManager().registerListener(this, this);
}
public void onPackLoad(ConfigPackPreLoadEvent event) {
event.getPack().applyLoader(SourceSeeded.class, new SourceBuilderLoader())
.applyLoader(StageSeeded.class, new StageBuilderLoader())
.applyLoader(ExpanderStage.Type.class, (c, o, l) -> ExpanderStage.Type.valueOf((String) o))
.applyLoader(MutatorStage.Type.class, (c, o, l) -> MutatorStage.Type.valueOf((String) o))

View File

@@ -22,11 +22,11 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
main.applyLoader(PaletteHolder.class, new PaletteHolderLoader())
.applyLoader(SlantHolder.class, (t, o, l) -> null);
}
public void onPackLoad(ConfigPackPreLoadEvent event) {
event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5);
event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader())
.applyLoader(SlantHolder.class, (t, o, l) -> null);
}
}

View File

@@ -34,13 +34,13 @@ public class FloraAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
main.applyLoader(FloraLayer.class, FloraLayerLoader::new)
.applyLoader(BlockLayer.class, BlockLayerTemplate::new);
}
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2);
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main, this));
event.getPack().applyLoader(FloraLayer.class, FloraLayerLoader::new)
.applyLoader(BlockLayer.class, BlockLayerTemplate::new);
}
public void onBiomeLoad(ConfigLoadEvent event) {

View File

@@ -51,7 +51,13 @@ public class NoiseAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
plugin.getEventManager().registerListener(this, this);
plugin.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new)
}
public void packPreLoad(ConfigPackPreLoadEvent event) {
CheckedRegistry<NoiseProvider> noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class);
event.getPack()
.applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry))
.applyLoader(ImageSamplerTemplate.class, ImageSamplerTemplate::new)
.applyLoader(DomainWarpTemplate.class, DomainWarpTemplate::new)
.applyLoader(LinearNormalizerTemplate.class, LinearNormalizerTemplate::new)
.applyLoader(NormalNormalizerTemplate.class, NormalNormalizerTemplate::new)
@@ -59,47 +65,40 @@ public class NoiseAddon extends TerraAddon implements EventListener {
.applyLoader(ClampNormalizerTemplate.class, ClampNormalizerTemplate::new)
.applyLoader(CellularSampler.ReturnType.class, (t, object, cf) -> CellularSampler.ReturnType.valueOf((String) object))
.applyLoader(CellularSampler.DistanceFunction.class, (t, object, cf) -> CellularSampler.DistanceFunction.valueOf((String) object));
}
@SuppressWarnings("deprecation")
public void packPreLoad(ConfigPackPreLoadEvent event) {
CheckedRegistry<NoiseProvider> noiseRegistry = event.getPack().getOrCreateRegistry(NoiseProvider.class);
event.getPack()
.applyLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(noiseRegistry));
noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new);
noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new);
noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new);
noiseRegistry.registerUnchecked("LINEAR", LinearNormalizerTemplate::new);
noiseRegistry.registerUnchecked("NORMAL", NormalNormalizerTemplate::new);
noiseRegistry.registerUnchecked("CLAMP", ClampNormalizerTemplate::new);
noiseRegistry.register("IMAGE", ImageSamplerTemplate::new);
noiseRegistry.registerUnchecked("IMAGE", ImageSamplerTemplate::new);
noiseRegistry.register("DOMAINWARP", DomainWarpTemplate::new);
noiseRegistry.registerUnchecked("DOMAINWARP", DomainWarpTemplate::new);
noiseRegistry.register("FBM", BrownianMotionTemplate::new);
noiseRegistry.register("PINGPONG", PingPongTemplate::new);
noiseRegistry.register("RIDGED", RidgedFractalTemplate::new);
noiseRegistry.registerUnchecked("FBM", BrownianMotionTemplate::new);
noiseRegistry.registerUnchecked("PINGPONG", PingPongTemplate::new);
noiseRegistry.registerUnchecked("RIDGED", RidgedFractalTemplate::new);
noiseRegistry.registerUnchecked("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new));
noiseRegistry.registerUnchecked("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new));
noiseRegistry.registerUnchecked("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new));
noiseRegistry.registerUnchecked("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new));
noiseRegistry.registerUnchecked("GABOR", GaborNoiseTemplate::new);
noiseRegistry.register("OPENSIMPLEX2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new));
noiseRegistry.register("OPENSIMPLEX2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new));
noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new));
noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new));
noiseRegistry.register("GABOR", GaborNoiseTemplate::new);
noiseRegistry.registerUnchecked("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new));
noiseRegistry.registerUnchecked("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new));
noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new));
noiseRegistry.register("VALUECUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new));
noiseRegistry.registerUnchecked("CELLULAR", CellularNoiseTemplate::new);
noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new);
noiseRegistry.registerUnchecked("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new));
noiseRegistry.registerUnchecked("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new));
noiseRegistry.register("WHITENOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new));
noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new));
noiseRegistry.registerUnchecked("CONSTANT", ConstantNoiseTemplate::new);
noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new);
noiseRegistry.registerUnchecked("KERNEL", KernelTemplate::new);
noiseRegistry.register("KERNEL", KernelTemplate::new);
Map<String, NoiseSeeded> packFunctions = new HashMap<>();
noiseRegistry.registerUnchecked("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions));
noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions));
try {

View File

@@ -21,10 +21,10 @@ public class PaletteAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
main.applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader());
}
public void onPackLoad(ConfigPackPreLoadEvent event) {
event.getPack().registerConfigType(new PaletteConfigType(event.getPack(), main), "PALETTE", 2);
event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader());
}
}

View File

@@ -20,10 +20,9 @@ public class StructureAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
main.applyLoader(ConfiguredStructure.class, (t, o, l) -> null);
}
public void onConfigLoad(ConfigPackPreLoadEvent event) {
event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null);
}
}

View File

@@ -33,12 +33,12 @@ public class TreeAddon extends TerraAddon implements EventListener {
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
main.applyLoader(TreeLayer.class, TreeLayerTemplate::new);
}
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2);
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main, this));
event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new);
}
public void onBiomeLoad(ConfigLoadEvent event) {

View File

@@ -24,7 +24,7 @@ import java.util.jar.JarFile;
/**
* Represents a Terra mod/plugin instance.
*/
public interface TerraPlugin extends LoaderRegistrar, LoaderHolder {
public interface TerraPlugin extends LoaderRegistrar {
WorldHandle getWorldHandle();
TerraWorld getWorld(World world);

View File

@@ -232,17 +232,17 @@ public class ConfigPackImpl implements ConfigPack {
List<Configuration> configurations = new ArrayList<>();
main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add));
main.getEventManager().callEvent(new ConfigurationLoadEvent(this, loader, configurations::add)); // Create all the configs.
Map<ConfigType<? extends ConfigTemplate, ?>, List<Configuration>> configs = new HashMap<>();
for(Configuration configuration : configurations) {
for(Configuration configuration : configurations) { // Sort the configs
ProtoConfig config = new ProtoConfig();
selfLoader.load(config, configuration);
configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration);
}
for(ConfigType<?, ?> configType : configTypeRegistry.entries()) {
for(ConfigType<?, ?> configType : configTypeRegistry.entries()) { // Load the configs
CheckedRegistry registry = getCheckedRegistry(configType.getTypeClass());
for(AbstractConfiguration config : abstractConfigLoader.loadConfigs(configs.getOrDefault(configType, Collections.emptyList()))) {
try {

View File

@@ -91,9 +91,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private static TerraFabricPlugin instance;
private final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger();
private final Map<DimensionType, Pair<ServerWorld, TerraWorld>> worldMap = new HashMap<>();
private final Map<Type, TypeLoader<?>> loaders = new HashMap<>();
private final Map<Type, Supplier<ObjectTemplate<?>>> objectLoaders = new HashMap<>();
private final EventManager eventManager = new EventManagerImpl(this);
private final GenericLoaders genericLoaders = new GenericLoaders(this);
private final Profiler profiler = new ProfilerImpl();
@@ -243,8 +240,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
if(identifier == null) throw new LoadException("Invalid identifier: " + o);
return identifier;
});
loaders.forEach(registry::registerLoader);
objectLoaders.forEach((t, l) -> registry.registerLoader(t, (Supplier<ObjectTemplate<Object>>) ((Object) l)));
}
@Override
@@ -293,19 +288,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return profiler;
}
@Override
public <T> TerraFabricPlugin applyLoader(Type type, TypeLoader<T> loader) {
loaders.put(type, loader);
return this;
}
@SuppressWarnings("unchecked")
@Override
public <T> TerraFabricPlugin applyLoader(Type type, Supplier<ObjectTemplate<T>> loader) {
objectLoaders.put(type, (Supplier<ObjectTemplate<?>>) ((Object) loader));
return this;
}
@Addon("Terra-Fabric")
@Author("Terra")
@Version("1.0.0")

View File

@@ -161,14 +161,4 @@ public class StandalonePlugin implements TerraPlugin {
public Profiler getProfiler() {
return profiler;
}
@Override
public <T> LoaderHolder applyLoader(Type type, TypeLoader<T> loader) {
return null;
}
@Override
public <T> LoaderHolder applyLoader(Type type, Supplier<ObjectTemplate<T>> loader) {
return null;
}
}