mirror of
https://github.com/BX-Team/DivineMC.git
synced 2025-12-19 14:59:25 +00:00
91 lines
5.4 KiB
Diff
91 lines
5.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
Date: Thu, 24 Jul 2025 14:07:47 +0300
|
|
Subject: [PATCH] Optimize collections
|
|
|
|
|
|
diff --git a/net/minecraft/core/NonNullList.java b/net/minecraft/core/NonNullList.java
|
|
index 8c0d8f4e8f8c4cbf0a0b771c1bd99e54877b4944..b88a8663bb4ebd8bf2c541402ded6fd6e9a97589 100644
|
|
--- a/net/minecraft/core/NonNullList.java
|
|
+++ b/net/minecraft/core/NonNullList.java
|
|
@@ -14,23 +14,23 @@ public class NonNullList<E> extends AbstractList<E> {
|
|
private final E defaultValue;
|
|
|
|
public static <E> NonNullList<E> create() {
|
|
- return new NonNullList<>(Lists.newArrayList(), null);
|
|
+ return new NonNullList<>(new it.unimi.dsi.fastutil.objects.ObjectArrayList<>(), null); // DivineMC - Optimize collections
|
|
}
|
|
|
|
public static <E> NonNullList<E> createWithCapacity(int initialCapacity) {
|
|
- return new NonNullList<>(Lists.newArrayListWithCapacity(initialCapacity), null);
|
|
+ return new NonNullList<>(new it.unimi.dsi.fastutil.objects.ObjectArrayList<>(initialCapacity), null); // DivineMC - Optimize collections
|
|
}
|
|
|
|
public static <E> NonNullList<E> withSize(int size, E defaultValue) {
|
|
Validate.notNull(defaultValue);
|
|
Object[] objects = new Object[size];
|
|
Arrays.fill(objects, defaultValue);
|
|
- return new NonNullList<>(Arrays.asList((E[])objects), defaultValue);
|
|
+ return new NonNullList<>(new it.unimi.dsi.fastutil.objects.ObjectArrayList<>((E[])objects), defaultValue); // DivineMC - Optimize collections
|
|
}
|
|
|
|
@SafeVarargs
|
|
public static <E> NonNullList<E> of(E defaultValue, E... elements) {
|
|
- return new NonNullList<>(Arrays.asList(elements), defaultValue);
|
|
+ return new NonNullList<>(new it.unimi.dsi.fastutil.objects.ObjectArrayList<>(elements), defaultValue); // DivineMC - Optimize collections
|
|
}
|
|
|
|
protected NonNullList(List<E> list, @Nullable E defaultValue) {
|
|
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
|
index de7800b46f7e8c68f24de8476032f2179edc4797..3ca2f56cb31d41e88eb2a3e59c3749fbdef7c85e 100644
|
|
--- a/net/minecraft/server/level/ChunkMap.java
|
|
+++ b/net/minecraft/server/level/ChunkMap.java
|
|
@@ -132,8 +132,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
|
public final AtomicInteger tickingGenerated = new AtomicInteger(); // Paper - public
|
|
private final String storageName;
|
|
private final PlayerMap playerMap = new PlayerMap();
|
|
- public final Int2ObjectMap<ChunkMap.TrackedEntity> entityMap = new Int2ObjectOpenHashMap<>();
|
|
- private final Long2ByteMap chunkTypeCache = new Long2ByteOpenHashMap();
|
|
+ // DivineMC start - Optimize collections
|
|
+ public final Int2ObjectMap<ChunkMap.TrackedEntity> entityMap = new org.bxteam.divinemc.util.map.Int2ObjectConcurrentHashMap<>();
|
|
+ private final Long2ByteMap chunkTypeCache = it.unimi.dsi.fastutil.longs.Long2ByteMaps.synchronize(new Long2ByteOpenHashMap());
|
|
+ // DivineMC end - Optimize collections
|
|
// Paper - rewrite chunk system
|
|
public int serverViewDistance;
|
|
public final WorldGenContext worldGenContext; // Paper - public
|
|
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
|
index 66ba223dacefb3531c46b144c4499b2b2285eafe..0b7f9af0c4e43115878769043ebd06a09ccdf059 100644
|
|
--- a/net/minecraft/world/level/Level.java
|
|
+++ b/net/minecraft/world/level/Level.java
|
|
@@ -253,7 +253,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
|
|
|
|
@Override
|
|
public final <T extends Entity> List<T> getEntitiesOfClass(final Class<T> entityClass, final AABB boundingBox, final Predicate<? super T> predicate) {
|
|
- final List<T> ret = new java.util.ArrayList<>();
|
|
+ final List<T> ret = new it.unimi.dsi.fastutil.objects.ObjectArrayList<>(); // DivineMC - Optimize collections
|
|
|
|
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate);
|
|
|
|
@@ -262,7 +262,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
|
|
|
|
@Override
|
|
public final List<Entity> moonrise$getHardCollidingEntities(final Entity entity, final AABB box, final Predicate<? super Entity> predicate) {
|
|
- final List<Entity> ret = new java.util.ArrayList<>();
|
|
+ final List<Entity> ret = new it.unimi.dsi.fastutil.objects.ObjectArrayList<>(); // DivineMC - Optimize collections
|
|
|
|
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate);
|
|
|
|
diff --git a/net/minecraft/world/level/chunk/ProtoChunk.java b/net/minecraft/world/level/chunk/ProtoChunk.java
|
|
index aa085d8a78a3fb40a214e4b152ab04d9a409f76f..5ed1a8b6ac025d03fdeb408a6eaa00320087f690 100644
|
|
--- a/net/minecraft/world/level/chunk/ProtoChunk.java
|
|
+++ b/net/minecraft/world/level/chunk/ProtoChunk.java
|
|
@@ -46,7 +46,7 @@ public class ProtoChunk extends ChunkAccess {
|
|
@Nullable
|
|
private volatile LevelLightEngine lightEngine;
|
|
private volatile ChunkStatus status = ChunkStatus.EMPTY;
|
|
- private final List<CompoundTag> entities = Lists.newArrayList();
|
|
+ private final List<CompoundTag> entities = Collections.synchronizedList(Lists.newArrayList()); // DivineMC - Optimize collections
|
|
@Nullable
|
|
private CarvingMask carvingMask;
|
|
@Nullable
|