From 137206884c95c8223e5c84f01e50be0429576aef Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 20 Jul 2021 19:43:14 -0700 Subject: [PATCH] create RandomLocator --- .../locator/locators/RandomLocator.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java new file mode 100644 index 000000000..792e5b88f --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.world.Column; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class RandomLocator implements Locator { + private final Range height; + + private final Range points; + + public RandomLocator(Range height, Range points) { + this.height = height; + this.points = points; + } + + @Override + public List getSuitableCoordinates(Column column) { + long seed = column.getWorld().getSeed(); + seed = 31 * seed + column.getX(); + seed = 31 * seed + column.getZ(); + + Random r = new Random(seed); + + int size = points.get(r); + + List results = new ArrayList<>(size); + for(int i = 0; i < size; i++) { + results.set(i, height.get(r)); + } + + return results; + } +}