use ChunkLocalCachingBiomeProvider

This commit is contained in:
dfsek
2022-06-11 21:50:04 -07:00
parent d58eb699f1
commit 881477c42f
3 changed files with 7 additions and 2 deletions
@@ -99,4 +99,8 @@ public interface BiomeProvider {
default CachingBiomeProvider caching(WorldProperties worldProperties) { default CachingBiomeProvider caching(WorldProperties worldProperties) {
return caching(worldProperties.getMinHeight(), worldProperties.getMaxHeight()); return caching(worldProperties.getMinHeight(), worldProperties.getMaxHeight());
} }
default ChunkLocalCachingBiomeProvider caching(WorldProperties worldProperties, int chunkX, int chunkZ) {
return new ChunkLocalCachingBiomeProvider(this, worldProperties, chunkX, chunkZ);
}
} }
@@ -19,7 +19,7 @@ import java.util.Optional;
*/ */
public class ChunkLocalCachingBiomeProvider extends CachingBiomeProvider { public class ChunkLocalCachingBiomeProvider extends CachingBiomeProvider {
private final Biome[][][] cache; private final Biome[][][] cache;
private final Column<Biome>[][] columnCache = new Column<>[16][16]; private final Column<Biome>[][] columnCache = new Column[16][16];
private final int chunkX; private final int chunkX;
private final int chunkZ; private final int chunkZ;
@@ -92,9 +92,10 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
public CompletableFuture<Chunk> populateBiomes(Registry<Biome> biomeRegistry, Executor executor, NoiseConfig noiseConfig, public CompletableFuture<Chunk> populateBiomes(Registry<Biome> biomeRegistry, Executor executor, NoiseConfig noiseConfig,
Blender blender, StructureAccessor structureAccessor, Chunk chunk) { Blender blender, StructureAccessor structureAccessor, Chunk chunk) {
if(chunk instanceof net.minecraft.world.chunk.ProtoChunk) { if(chunk instanceof net.minecraft.world.chunk.ProtoChunk) {
ChunkPos pos = chunk.getPos();
((BiomeProviderHolder) chunk) ((BiomeProviderHolder) chunk)
.setBiomeProvider(pack.getBiomeProvider() .setBiomeProvider(pack.getBiomeProvider()
.caching((ProtoWorld) ((StructureAccessorAccessor) structureAccessor).getWorld())); .caching((ProtoWorld) ((StructureAccessorAccessor) structureAccessor).getWorld(), pos.x, pos.z));
} }
return super.populateBiomes(biomeRegistry, executor, noiseConfig, blender, structureAccessor, chunk); return super.populateBiomes(biomeRegistry, executor, noiseConfig, blender, structureAccessor, chunk);
} }