mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
feature configuration
This commit is contained in:
parent
6b191ac00b
commit
0f638b0317
@ -1,12 +1,17 @@
|
|||||||
package com.dfsek.terra.addons.generation.feature;
|
package com.dfsek.terra.addons.generation.feature;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.generation.feature.config.BiomeFeaturesTemplate;
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.addon.TerraAddon;
|
import com.dfsek.terra.api.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.addon.annotations.Addon;
|
import com.dfsek.terra.api.addon.annotations.Addon;
|
||||||
import com.dfsek.terra.api.addon.annotations.Author;
|
import com.dfsek.terra.api.addon.annotations.Author;
|
||||||
import com.dfsek.terra.api.addon.annotations.Version;
|
import com.dfsek.terra.api.addon.annotations.Version;
|
||||||
import com.dfsek.terra.api.event.EventListener;
|
import com.dfsek.terra.api.event.EventListener;
|
||||||
|
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
|
||||||
|
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
|
||||||
import com.dfsek.terra.api.injection.annotations.Inject;
|
import com.dfsek.terra.api.injection.annotations.Inject;
|
||||||
|
import com.dfsek.terra.api.util.seeded.BiomeBuilder;
|
||||||
|
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
|
||||||
|
|
||||||
@Addon("generation-stage-feature")
|
@Addon("generation-stage-feature")
|
||||||
@Version("1.0.0")
|
@Version("1.0.0")
|
||||||
@ -19,4 +24,14 @@ public class FeatureGenerationAddon extends TerraAddon implements EventListener
|
|||||||
public void initialize() {
|
public void initialize() {
|
||||||
main.getEventManager().registerListener(this, this);
|
main.getEventManager().registerListener(this, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onPackLoad(ConfigPackPreLoadEvent event) {
|
||||||
|
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FEATURE", pack -> new FeatureGenerationStage(main));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onBiomeLoad(ConfigurationLoadEvent event) {
|
||||||
|
if(BiomeBuilder.class.isAssignableFrom(event.getType().getTypeClass())) {
|
||||||
|
event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.dfsek.terra.addons.generation.feature;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.profiler.ProfileFrame;
|
||||||
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
|
import com.dfsek.terra.api.world.TerraWorld;
|
||||||
|
import com.dfsek.terra.api.world.World;
|
||||||
|
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
|
||||||
|
|
||||||
|
public class FeatureGenerationStage implements TerraGenerationStage {
|
||||||
|
private final TerraPlugin main;
|
||||||
|
|
||||||
|
public FeatureGenerationStage(TerraPlugin main) {
|
||||||
|
this.main = main;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void populate(World world, Chunk chunk) {
|
||||||
|
TerraWorld terraWorld = main.getWorld(world);
|
||||||
|
try(ProfileFrame ignore = main.getProfiler().profile("feature")) {
|
||||||
|
int cx = chunk.getX() << 4;
|
||||||
|
int cz = chunk.getZ() << 4;
|
||||||
|
for(int x = 0; x < 16; x++) {
|
||||||
|
for(int z = 0; z < 16; z++) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.dfsek.terra.addons.generation.feature.config;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.properties.Properties;
|
||||||
|
import com.dfsek.terra.api.structure.feature.Feature;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BiomeFeatures implements Properties {
|
||||||
|
private final List<Feature> features;
|
||||||
|
|
||||||
|
public BiomeFeatures(List<Feature> features) {
|
||||||
|
this.features = features;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Feature> getFeatures() {
|
||||||
|
return features;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.dfsek.terra.addons.generation.feature.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.structure.feature.Feature;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BiomeFeaturesTemplate implements ObjectTemplate<BiomeFeatures> {
|
||||||
|
@Value("features")
|
||||||
|
@Default
|
||||||
|
private List<Feature> features = Collections.emptyList();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeFeatures get() {
|
||||||
|
return new BiomeFeatures(features);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user