diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java index 9b02fab98..172289c39 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java @@ -57,8 +57,12 @@ public final class BlockStateIdAccess { OptionalInt id = getBlockStateId(blockState); if (id.isPresent()) { int i = id.getAsInt(); - while (i >= blockStates.length) { - blockStates = Arrays.copyOf(blockStates, blockStates.length + blockStates.length >> 1); + if (i >= blockStates.length) { + int curLength = blockStates.length; + do { + curLength += curLength >> 1; + } while (i >= curLength); + blockStates = Arrays.copyOf(blockStates, curLength); } BlockState existing = blockStates[i]; checkState(existing == null || existing == blockState,