begin implementing BiomeExtrusionAddon

This commit is contained in:
dfsek
2022-06-10 14:48:59 -07:00
parent dad0a0bd29
commit 50f895c8f4
6 changed files with 118 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package com.dfsek.terra.addons.biome.extrusion;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
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.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.inject.annotations.Inject;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.util.reflection.TypeKey;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import java.util.function.Supplier;
public class BiomeExtrusionAddon implements AddonInitializer {
public static final TypeKey<Supplier<ObjectTemplate<Extrusion>>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() {
};
@Inject
private Platform platform;
@Inject
private BaseAddon addon;
@Override
public void initialize() {
platform.getEventManager()
.getHandler(FunctionalEventHandler.class)
.register(addon, ConfigPackPreLoadEvent.class)
.then(event -> {
})
.failThrough();
}
}

View File

@@ -0,0 +1,30 @@
package com.dfsek.terra.addons.biome.extrusion;
import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class BiomeExtrusionProvider implements BiomeProvider {
private final BiomeProvider delegate;
private final Set<Biome> biomes;
public BiomeExtrusionProvider(BiomeProvider delegate) {
this.delegate = delegate;
this.biomes = delegate.stream().collect(Collectors.toSet());
}
@Override
public Biome getBiome(int x, int y, int z, long seed) {
return delegate.getBiome(x, y, z, seed);
}
@Override
public Iterable<Biome> getBiomes() {
return biomes;
}
}

View File

@@ -0,0 +1,10 @@
package com.dfsek.terra.addons.biome.extrusion.api;
import com.dfsek.terra.api.world.biome.Biome;
public interface Extrusion {
Biome extrude(Biome original, int x, int y, int z, long seed);
Iterable<Biome> getBiomes();
}

View File

@@ -0,0 +1,20 @@
package com.dfsek.terra.addons.biome.extrusion.extrusions;
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.world.biome.Biome;
import java.security.cert.Extension;
/**
* Extrusion which operates using a noise sampler
*/
public abstract class SamplerExtrusion implements Extrusion {
protected NoiseSampler sampler;
@Override
public Biome extrude(Biome original, int x, int y, int z, long seed) {
return null;
}
}

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.addons.biome.extrusion.extrusions;
/**
* Sets biomes at locations based on a sampler.
*/
public class SetExtrusion {
}

View File

@@ -0,0 +1,12 @@
schema-version: 1
contributors:
- Terra contributors
id: biome-provider-extrusion
version: @VERSION@
entrypoints:
- "com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionAddon"
website:
issues: https://github.com/PolyhedralDev/Terra/issues
source: https://github.com/PolyhedralDev/Terra
docs: https://terra.polydev.org
license: MIT License