diff --git a/src/main/java/net/minestom/server/MinecraftServer.java b/src/main/java/net/minestom/server/MinecraftServer.java index 7c1be1707..c4b33591e 100644 --- a/src/main/java/net/minestom/server/MinecraftServer.java +++ b/src/main/java/net/minestom/server/MinecraftServer.java @@ -112,10 +112,10 @@ public final class MinecraftServer { @Setter private static boolean fixLighting = true; - // Rate Limiting + // Network monitoring private static int rateLimit = 300; private static int maxPacketSize = 30_000; - + // Network private static PacketListenerManager packetListenerManager; private static NettyServer nettyServer; diff --git a/src/main/java/net/minestom/server/thread/PerGroupChunkProvider.java b/src/main/java/net/minestom/server/thread/PerGroupChunkProvider.java index 347fa6cdd..f54c73083 100644 --- a/src/main/java/net/minestom/server/thread/PerGroupChunkProvider.java +++ b/src/main/java/net/minestom/server/thread/PerGroupChunkProvider.java @@ -120,7 +120,17 @@ public class PerGroupChunkProvider extends ThreadProvider { @NotNull @Override public List> update(long time) { - List> futures = new ArrayList<>(); + + List> futures; + int potentialSize = 0; + + // Compute the potential array size + { + for (Map longSetInstanceMap : instanceInstanceMap.values()) { + potentialSize += 1 + longSetInstanceMap.size(); + } + futures = new ArrayList<>(potentialSize); + } instanceInstanceMap.forEach((instance, instanceMap) -> { @@ -147,6 +157,7 @@ public class PerGroupChunkProvider extends ThreadProvider { chunksIndexes.forEach((long chunkIndex) -> processChunkTick(instance, chunkIndex, time)); }))); }); + return futures; }