From 9037f27ed80c62078958f6740fbb1dad063af8b1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 28 Jan 2020 17:56:45 -0500 Subject: [PATCH] added spawnpoint data --- .../seedcracker/cracker/SpawnPointData.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/kaptainwutax/seedcracker/cracker/SpawnPointData.java diff --git a/src/main/java/kaptainwutax/seedcracker/cracker/SpawnPointData.java b/src/main/java/kaptainwutax/seedcracker/cracker/SpawnPointData.java new file mode 100644 index 0000000..b9b6219 --- /dev/null +++ b/src/main/java/kaptainwutax/seedcracker/cracker/SpawnPointData.java @@ -0,0 +1,38 @@ +package kaptainwutax.seedcracker.cracker; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.biome.Biome; + +import java.util.List; +import java.util.Random; + +public class SpawnPointData { + + private BlockPos center; + private int distanceSquared; + + public SpawnPointData(BlockPos center, int maxDistance) { + this.center = center; + this.distanceSquared = maxDistance * maxDistance; + } + + public boolean test(FakeBiomeSource source) { + BlockPos spawnPos = getSpawnPoint(source); + + int distanceX = spawnPos.getX() - this.center.getX(); + distanceX *= distanceX; + int distanceZ = spawnPos.getZ() - this.center.getZ(); + distanceZ *= distanceZ; + return distanceX + distanceZ <= this.distanceSquared; + } + + public static BlockPos getSpawnPoint(FakeBiomeSource source) { + List spawnBiomes = source.getSpawnBiomes(); + Random random = new Random(source.getSeed()); + BlockPos spawnPos = source.locateBiome(0, 63, 0, 256, spawnBiomes, random); + ChunkPos chunkPos = spawnPos == null ? new ChunkPos(0, 0) : new ChunkPos(spawnPos); + return chunkPos.getCenterBlockPos().add(0, 64, 0); + } + +}