From fae704b8990bf73ca33885eae41eea1fec612d95 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sun, 14 Mar 2021 12:20:36 -0500 Subject: [PATCH] Add logN growth in DynmapBlockState --- .../src/main/java/org/dynmap/renderer/DynmapBlockState.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DynmapCoreAPI/src/main/java/org/dynmap/renderer/DynmapBlockState.java b/DynmapCoreAPI/src/main/java/org/dynmap/renderer/DynmapBlockState.java index f9f48937..9e7e9a4f 100644 --- a/DynmapCoreAPI/src/main/java/org/dynmap/renderer/DynmapBlockState.java +++ b/DynmapCoreAPI/src/main/java/org/dynmap/renderer/DynmapBlockState.java @@ -120,13 +120,13 @@ public class DynmapBlockState { stateName = (statename != null) ? statename : ""; if (base != this) { // If we aren't base block state if (base.states == null) { // If no state list yet - base.states = new DynmapBlockState[stateidx+1]; // Enough for us to fit + base.states = new DynmapBlockState[Math.max(stateidx+1, 16)]; // Enough for us to fit (at least 16 Arrays.fill(base.states, AIR); base.states[0] = base; // Add base state as index 0 } else if (base.states.length <= stateidx) { // Not enough room // Resize it - DynmapBlockState[] newstates = new DynmapBlockState[stateidx+1]; + DynmapBlockState[] newstates = new DynmapBlockState[Math.max((stateidx * 3) / 2, 32)]; // Get some extra (logN scaling for big state spaces) System.arraycopy(base.states, 0, newstates, 0, base.states.length); Arrays.fill(newstates, base.states.length, stateidx+1, AIR); base.states = newstates;