mirror of https://github.com/YatopiaMC/Yatopia.git
77 lines
4.3 KiB
Diff
77 lines
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Paul Sauve <paul@technove.co>
|
|
Date: Wed, 19 May 2021 20:36:24 -0500
|
|
Subject: [PATCH] Use raw iterator where possible
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
|
|
index 207a9c3928aad7c6e89a120b54d87e003ebd232c..06864951af539e22f6e459c0f0c097b7c2fb929b 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java
|
|
@@ -1033,10 +1033,12 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
//Collections.shuffle(list); // Paper
|
|
// Paper - moved up
|
|
// Tuinity start - optimise chunk tick iteration
|
|
- com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator<Chunk> iterator = this.entityTickingChunks.iterator();
|
|
+ // Airplane start - use raw iterator
|
|
+ //com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator<Chunk> iterator = this.entityTickingChunks.iterator();
|
|
+ int iterator = this.entityTickingChunks.createRawIterator();
|
|
try {
|
|
- while (iterator.hasNext()) {
|
|
- Chunk chunk = iterator.next();
|
|
+ while (iterator != -1) {
|
|
+ Chunk chunk = this.entityTickingChunks.rawGet(iterator);
|
|
PlayerChunk playerchunk = chunk.playerChunk;
|
|
if (playerchunk != null) { // make sure load event has been called along with the load logic we put there
|
|
// Tuinity end - optimise chunk tick iteration
|
|
@@ -1064,10 +1066,12 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
}
|
|
}
|
|
}
|
|
+ iterator = this.entityTickingChunks.advanceRawIterator(iterator);
|
|
} // Tuinity start - optimise chunk tick iteration
|
|
} finally {
|
|
- iterator.finishedIterating();
|
|
+ this.entityTickingChunks.finishRawIterator();
|
|
}
|
|
+ // Airplane end
|
|
// Tuinity end - optimise chunk tick iteration
|
|
this.world.getMethodProfiler().enter("customSpawners");
|
|
if (flag1) {
|
|
diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
|
|
index 33429be7da4d4c2b2469b8140e46e66d9921652c..38919488ce5917a751605c4ddcf0296ff0340b91 100644
|
|
--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
|
|
@@ -2170,10 +2170,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
private final void processTrackQueue() {
|
|
this.world.timings.tracker1.startTiming();
|
|
try {
|
|
- com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator<Chunk> iterator = this.world.getChunkProvider().entityTickingChunks.iterator();
|
|
+ // Airplane start - raw iterator
|
|
+ //com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator<Chunk> iterator = this.world.getChunkProvider().entityTickingChunks.iterator();
|
|
+ com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<Chunk> chunks = this.world.getChunkProvider().entityTickingChunks;
|
|
+ int iterator = chunks.createRawIterator();
|
|
try {
|
|
- while (iterator.hasNext()) {
|
|
- Chunk chunk = iterator.next();
|
|
+ while (iterator != -1) {
|
|
+ Chunk chunk = chunks.rawGet(iterator);
|
|
Entity[] entities = chunk.entities.getRawData();
|
|
for (int i = 0, len = chunk.entities.size(); i < len; ++i) {
|
|
Entity entity = entities[i];
|
|
@@ -2183,10 +2186,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
tracker.trackerEntry.tick();
|
|
}
|
|
}
|
|
+
|
|
+ iterator = chunks.advanceRawIterator(iterator);
|
|
}
|
|
} finally {
|
|
- iterator.finishedIterating();
|
|
+ chunks.finishRawIterator();
|
|
}
|
|
+ // Airplane end
|
|
} finally {
|
|
this.world.timings.tracker1.stopTiming();
|
|
}
|