mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 00:15:35 +00:00
Add slant locator (#413)
* Add slant locator addon * Bump slant locator noise3d dependency version * Fix slant locator dependency version range * Actually fix slant locator dependency version range
This commit is contained in:
parent
abd83e8278
commit
47f531089e
6
common/addons/locator-slant-noise-3d/build.gradle.kts
Normal file
6
common/addons/locator-slant-noise-3d/build.gradle.kts
Normal file
@ -0,0 +1,6 @@
|
||||
version = version("1.0.0")
|
||||
|
||||
dependencies {
|
||||
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
|
||||
compileOnlyApi(project(":common:addons:chunk-generator-noise-3d"))
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.dfsek.terra.addon.feature.locator.slant;
|
||||
|
||||
import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D;
|
||||
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
||||
import com.dfsek.terra.api.structure.feature.Locator;
|
||||
import com.dfsek.terra.api.world.World;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
|
||||
import java.util.function.DoublePredicate;
|
||||
|
||||
|
||||
public class SlantLocator implements Locator {
|
||||
|
||||
private final DoublePredicate predicate;
|
||||
|
||||
public SlantLocator(DoublePredicate predicate) {
|
||||
this.predicate = predicate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
return column.newBinaryColumn(y -> {
|
||||
int x = column.getX();
|
||||
int z = column.getZ();
|
||||
World world = column.getWorld();
|
||||
NoiseChunkGenerator3D generator = (NoiseChunkGenerator3D) world.getGenerator();
|
||||
BiomeProvider biomeProvider = world.getBiomeProvider();
|
||||
return predicate.test(generator.getSlant(x, y, z, world, biomeProvider));
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.dfsek.terra.addon.feature.locator.slant;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||
|
||||
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.structure.feature.Locator;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
||||
public class SlantLocatorAddon implements AddonInitializer {
|
||||
|
||||
public static final TypeKey<Supplier<ObjectTemplate<Locator>>> LOCATOR_TOKEN = new TypeKey<>() {
|
||||
};
|
||||
|
||||
@Inject
|
||||
private Platform platform;
|
||||
|
||||
@Inject
|
||||
private BaseAddon addon;
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
platform.getEventManager()
|
||||
.getHandler(FunctionalEventHandler.class)
|
||||
.register(addon, ConfigPackPreLoadEvent.class)
|
||||
.priority(1)
|
||||
.then(event -> event.getPack().getOrCreateRegistry(LOCATOR_TOKEN).register(addon.key("SLANT"), SlantLocatorTemplate::new))
|
||||
.failThrough();
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.dfsek.terra.addon.feature.locator.slant;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||
|
||||
import com.dfsek.terra.api.structure.feature.Locator;
|
||||
|
||||
import java.util.function.DoublePredicate;
|
||||
|
||||
|
||||
public class SlantLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
|
||||
@Value("condition")
|
||||
private DoublePredicate predicate;
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new SlantLocator(predicate);
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
schema-version: 1
|
||||
contributors:
|
||||
- Terra contributors
|
||||
id: locator-slant-noise-3d
|
||||
version: @VERSION@
|
||||
entrypoints:
|
||||
- "com.dfsek.terra.addon.feature.locator.slant.SlantLocatorAddon"
|
||||
website:
|
||||
issues: https://github.com/PolyhedralDev/Terra/issues
|
||||
source: https://github.com/PolyhedralDev/Terra
|
||||
docs: https://terra.polydev.org
|
||||
license: MIT License
|
||||
depends:
|
||||
chunk-generator-noise-3d: "[1.2.0,2.0.0)"
|
Loading…
x
Reference in New Issue
Block a user