working biome config addon

This commit is contained in:
dfsek
2021-07-05 00:02:48 -07:00
parent 3364a75cec
commit 25339ca4ef
12 changed files with 164 additions and 94 deletions

View File

@@ -34,6 +34,10 @@ dependencies {
"testImplementation"("com.google.guava:guava:30.0-jre")
}
tasks.named<Jar>("jar") {
archiveBaseName.set("Terra-biome")
}
publishing {
publications {
create<MavenPublication>("mavenJava") {

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.addons.biome;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon;
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;
@Addon("core-biome-config")
@Author("Terra")
@Version("1.0.0")
public class BiomeConfigAddon extends TerraAddon implements EventListener {
@Inject
private TerraPlugin main;
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
}
public void onPackLoad(ConfigPackPreLoadEvent event) {
event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5);
}
}

View File

@@ -0,0 +1,47 @@
package com.dfsek.terra.addons.biome;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
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.config.ConfigType;
import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.util.seeded.BiomeBuilder;
import java.lang.reflect.Type;
import java.util.function.Supplier;
public class BiomeConfigType implements ConfigType<BiomeTemplate, BiomeBuilder> {
private final ConfigPack pack;
private final BiomeFactory factory;
public BiomeConfigType(ConfigPack pack) {
this.pack = pack;
this.factory = new BiomeFactory(pack);
}
@Override
public BiomeTemplate getTemplate(ConfigPack pack, TerraPlugin main) {
return new BiomeTemplate(pack, main);
}
@Override
public ConfigFactory<BiomeTemplate, BiomeBuilder> getFactory() {
return factory;
}
@Override
public Class<BiomeBuilder> getTypeClass() {
return BiomeBuilder.class;
}
@Override
public Supplier<OpenRegistry<BiomeBuilder>> registrySupplier() {
return () -> pack.getRegistryFactory().create(registry -> (TypeLoader<BiomeBuilder>) (t, c, loader) -> {
if(c.equals("SELF")) return null;
return registry.load(t, c, loader);
});
}
}