From e2ec9f0c84cf2f04982b3dfcf087845c8c203a9d Mon Sep 17 00:00:00 2001 From: Sen Date: Sun, 25 May 2025 18:40:34 +0200 Subject: [PATCH] test chunk array perf --- client/src/client/world/ChunkClient.java | 3 +++ common/src/common/world/Chunk.java | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/client/src/client/world/ChunkClient.java b/client/src/client/world/ChunkClient.java index 8f59b89..29bae3e 100644 --- a/client/src/client/world/ChunkClient.java +++ b/client/src/client/world/ChunkClient.java @@ -1,5 +1,7 @@ package client.world; +import java.util.Arrays; + import common.biome.Biome; import common.block.Block; import common.init.Blocks; @@ -16,6 +18,7 @@ public class ChunkClient extends Chunk { } private void clearArrays() { + Arrays.fill(this.core, null); this.blocks.clearMap(); this.blockList.clear(); this.bottom = Integer.MAX_VALUE; diff --git a/common/src/common/world/Chunk.java b/common/src/common/world/Chunk.java index c70a379..dc95a7d 100755 --- a/common/src/common/world/Chunk.java +++ b/common/src/common/world/Chunk.java @@ -29,6 +29,7 @@ public abstract class Chunk { protected final World world; protected final State filler; protected final Block fillerBlock; + protected final BlockArray[] core = new BlockArray[32]; protected final IntHashMap blocks = new IntHashMap(); protected final Set blockList = Sets.newHashSet(); protected final byte[] biomes = new byte[256]; @@ -69,12 +70,15 @@ public abstract class Chunk { } public BlockArray getArray(int y) { - return this.blocks.lookup(y); + return y >= -16 && y < 16 ? this.core[y + 16] : this.blocks.lookup(y); } protected void setArray(BlockArray array) { int y = array.getY() >> 4; - this.blocks.addKey(y, array); + if(y >= -16 && y < 16) + this.core[y + 16] = array; + else + this.blocks.addKey(y, array); this.blockList.add(array); y <<= 4; this.bottom = y < this.bottom ? y : this.bottom;