From 4778149c506c757c41c66e70d7e37af1269f6b40 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 24 Sep 2021 22:08:01 -0700 Subject: [PATCH] create Noise3DLocator --- .../locator/locators/Noise3DLocator.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java new file mode 100644 index 000000000..571a33aa6 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.BinaryColumn; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.world.Column; + + +public class Noise3DLocator implements Locator { + private final NoiseSampler sampler; + + public Noise3DLocator(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public BinaryColumn getSuitableCoordinates(Column column) { + BinaryColumn results = column.newBinaryColumn(); + long seed = column.getWorld().getSeed(); + int x = column.getX(); + int z = column.getZ(); + column.forEach(y -> { + if(sampler.getNoiseSeeded(seed, x, y, z) > 0) results.set(y); + }); + return results; + } +}