From cab91ec15b0545f8c6b14c04da2ec94759631612 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 16 Nov 2020 16:18:34 -0700 Subject: [PATCH] Account for elevation in structure spawns --- src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java | 5 ++++- src/main/java/com/dfsek/terra/structure/spawn/LandSpawn.java | 5 ++++- .../java/com/dfsek/terra/structure/spawn/OceanSpawn.java | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java b/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java index a90b29a9d..931b6c12b 100644 --- a/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java +++ b/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java @@ -4,6 +4,8 @@ import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.genconfig.biome.BiomeConfig; +import com.dfsek.terra.generation.ElevationEquation; +import com.dfsek.terra.generation.UserDefinedGenerator; import org.bukkit.World; import org.polydev.gaea.generation.GenerationPhase; @@ -19,6 +21,7 @@ public class AirSpawn extends Requirement { UserDefinedBiome b = (UserDefinedBiome) tw.getGrid().getBiome(x, z, GenerationPhase.POPULATE); BiomeConfig c = wc.getBiome(b); if(y <= c.getOcean().getSeaLevel()) return false; - return b.getGenerator().getNoise(getNoise(), getWorld(), x, y, z) <= 0; + ElevationEquation elevationEquation = ((UserDefinedGenerator) b.getGenerator()).getElevationEquation(); + return b.getGenerator().getNoise(getNoise(), getWorld(), x, (int) (y - elevationEquation.getNoise(x, z, getWorld())), z) <= 0; } } diff --git a/src/main/java/com/dfsek/terra/structure/spawn/LandSpawn.java b/src/main/java/com/dfsek/terra/structure/spawn/LandSpawn.java index 361c17ab4..d97a884c1 100644 --- a/src/main/java/com/dfsek/terra/structure/spawn/LandSpawn.java +++ b/src/main/java/com/dfsek/terra/structure/spawn/LandSpawn.java @@ -2,6 +2,8 @@ package com.dfsek.terra.structure.spawn; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; +import com.dfsek.terra.generation.ElevationEquation; +import com.dfsek.terra.generation.UserDefinedGenerator; import org.bukkit.World; import org.polydev.gaea.generation.GenerationPhase; @@ -14,6 +16,7 @@ public class LandSpawn extends Requirement { public boolean matches(int x, int y, int z) { TerraWorld tw = TerraWorld.getWorld(getWorld()); UserDefinedBiome b = (UserDefinedBiome) tw.getGrid().getBiome(x, z, GenerationPhase.POPULATE); - return b.getGenerator().getNoise(getNoise(), getWorld(), x, y, z) > 0; + ElevationEquation elevationEquation = ((UserDefinedGenerator) b.getGenerator()).getElevationEquation(); + return b.getGenerator().getNoise(getNoise(), getWorld(), x, (int) (y - elevationEquation.getNoise(x, z, getWorld())), z) > 0; } } diff --git a/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java b/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java index d417d3b5c..d24139920 100644 --- a/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java +++ b/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java @@ -3,6 +3,8 @@ package com.dfsek.terra.structure.spawn; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.config.genconfig.biome.BiomeConfig; +import com.dfsek.terra.generation.ElevationEquation; +import com.dfsek.terra.generation.UserDefinedGenerator; import org.bukkit.World; import org.polydev.gaea.generation.GenerationPhase; @@ -17,6 +19,7 @@ public class OceanSpawn extends Requirement { UserDefinedBiome b = (UserDefinedBiome) tw.getGrid().getBiome(x, z, GenerationPhase.POPULATE); BiomeConfig c = tw.getConfig().getBiome(b); if(y > c.getOcean().getSeaLevel()) return false; - return b.getGenerator().getNoise(getNoise(), getWorld(), x, y, z) <= 0; + ElevationEquation elevationEquation = ((UserDefinedGenerator) b.getGenerator()).getElevationEquation(); + return b.getGenerator().getNoise(getNoise(), getWorld(), x, (int) (y - elevationEquation.getNoise(x, z, getWorld())), z) <= 0; } }