diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index cdba21f31..271ccff37 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -63,12 +63,8 @@ public interface BiomeProvider { return getBiome(vector3.getX(), vector3.getY(), vector3.getZ(), seed); } - default Column getColumn(int x, int z, int min, int max, long seed) { - return new BiomeColumn(this, min, max, x, z, seed); - } - default Column getColumn(int x, int z, WorldProperties properties) { - return getColumn(x, z, properties.getMinHeight(), properties.getMaxHeight(), properties.getSeed()); + return new BiomeColumn(this, x, z, properties.getMinHeight(), properties.getMaxHeight(), properties.getSeed()); } /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java index ee2b41dbc..49846b11a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java @@ -1,8 +1,11 @@ package com.dfsek.terra.api.world.biome.generation; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.util.Column; import com.dfsek.terra.api.util.MathUtil; +import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.info.WorldProperties; import java.util.HashMap; import java.util.Map; @@ -18,6 +21,7 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { private final int minY; private final int maxY; private final Map cache = new HashMap<>(); + private final Map> columns = new HashMap<>(); protected CachingBiomeProvider(BiomeProvider delegate, int minY, int maxY) { this.delegate = delegate; @@ -41,6 +45,11 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { return biomes[yi]; } + @Override + public Column getColumn(int x, int z, WorldProperties properties) { + return columns.computeIfAbsent(MathUtil.squash(x, z), k -> BiomeProvider.super.getColumn(x, z, properties)); + } + @Override public Iterable getBiomes() { return delegate.getBiomes();