From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martijn Muijsers Date: Thu, 1 Dec 2022 14:18:46 +0100 Subject: [PATCH] Cache world generator sea level Removed since 1.21.4 hardfork, as the cache captured the wrong value and caused LeavesMC/Leaves#392. Also this opt has been disabled by default in Lithium since 08/12/2022 due to the early access of registry crash. License: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) Gale - https://galemc.org This patch is based on the following mixin: "net/caffeinemc/mods/lithium/mixin/gen/cached_generator_settings/NoiseBasedChunkGeneratorMixin.java" By: SuperCoder7979 As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java index 65728ef17e63d71833677fdcbd5bb90794b4822b..de0f33fd008d8cd08b6da9ab37e98bd7f51ce0ca 100644 --- a/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java +++ b/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java @@ -57,11 +57,19 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { private static final BlockState AIR = Blocks.AIR.defaultBlockState(); public final Holder settings; private final Supplier globalFluidPicker; + private int cachedSeaLevel; // Gale - Lithium - cache world generator sea level public NoiseBasedChunkGenerator(BiomeSource biomeSource, Holder settings) { super(biomeSource); this.settings = settings; - this.globalFluidPicker = Suppliers.memoize(() -> createFluidPicker(settings.value())); + // Gale start - Lithium - cache world generator sea level + this.globalFluidPicker = Suppliers.memoize(() -> { + var fluidPicker = createFluidPicker(settings.value()); + this.cachedSeaLevel = settings.value().seaLevel(); + return fluidPicker; + + }); + // Gale end - Lithium - cache world generator sea level } private static Aquifer.FluidPicker createFluidPicker(NoiseGeneratorSettings settings) { @@ -407,7 +415,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { @Override public int getSeaLevel() { - return this.settings.value().seaLevel(); + return this.cachedSeaLevel; // Gale - Lithium - cache world generator sea level } @Override