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 0cd489960..e503dd54c 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 @@ -5,6 +5,7 @@ import com.dfsek.terra.api.world.biome.Biome; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; +import com.github.benmanes.caffeine.cache.Scheduler; import java.util.Optional; @@ -25,6 +26,8 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { this.res = delegate.resolution(); this.cache = Caffeine .newBuilder() + .scheduler(Scheduler.disabledScheduler()) + .initialCapacity(98304) .maximumSize(98304) // 1 full chunk (high res) .build(vec -> delegate.getBiome(vec.x * res, vec.y * res, vec.z * res, vec.seed)); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 887e697ae..9061b8d0c 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -231,7 +231,7 @@ public class ConfigPackImpl implements ConfigPack { ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, packManifest); - seededBiomeProvider = packPostTemplate.getProviderBuilder(); + seededBiomeProvider = template.getBiomeCache() ? packPostTemplate.getProviderBuilder().caching() : packPostTemplate.getProviderBuilder(); checkDeadEntries(); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index b41005a25..3aa0a8c27 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -107,6 +107,10 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("generator") private @Meta ChunkGeneratorProvider generatorProvider; + @Value("cache.biome.enable") + @Default + private boolean biomeCache = false; + public boolean disableCarvers() { return disableCarvers; } @@ -182,4 +186,8 @@ public class ConfigPackTemplate implements ConfigTemplate { public Map getLocatable() { return locatable; } + + public boolean getBiomeCache() { + return biomeCache; + } }