create biome structure config

This commit is contained in:
dfsek
2021-11-24 13:28:47 -07:00
parent 5e5ce0722f
commit ba7722ce45
3 changed files with 55 additions and 0 deletions

View File

@@ -1,11 +1,14 @@
package com.dfsek.terra.addons.generation.structure;
import com.dfsek.terra.addons.generation.structure.config.BiomeStructuresTemplate;
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.addon.BaseAddon;
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.inject.annotations.Inject;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@@ -25,6 +28,16 @@ public class StructureGenerationAddon implements AddonInitializer {
.getOrCreateRegistry(GenerationStageProvider.class)
.register("STRUCTURE", pack -> new StructureGenerationStage(platform)))
.failThrough();
platform.getEventManager()
.getHandler(FunctionalEventHandler.class)
.register(addon, ConfigurationLoadEvent.class)
.then(event -> {
if(event.is(TerraBiome.class)) {
event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeStructuresTemplate()).get());
}
})
.failThrough();
}
}

View File

@@ -0,0 +1,17 @@
package com.dfsek.terra.addons.generation.structure.config;
import com.dfsek.terra.api.properties.Properties;
import com.dfsek.terra.api.structure.configured.ConfiguredStructure;
import java.util.List;
public class BiomeStructures implements Properties {
private final List<ConfiguredStructure> structures;
public BiomeStructures(List<ConfiguredStructure> structures) { this.structures = structures; }
public List<ConfiguredStructure> getStructures() {
return structures;
}
}

View File

@@ -0,0 +1,25 @@
package com.dfsek.terra.addons.generation.structure.config;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.config.meta.Meta;
import com.dfsek.terra.api.structure.configured.ConfiguredStructure;
import com.dfsek.terra.api.structure.feature.Feature;
import java.util.Collections;
import java.util.List;
public class BiomeStructuresTemplate implements ObjectTemplate<BiomeStructures> {
@Value("features")
@Default
private @Meta List<@Meta ConfiguredStructure> features = Collections.emptyList();
@Override
public BiomeStructures get() {
return new BiomeStructures(features);
}
}