aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0197-Fix-MC-117075-TE-Unload-Lag-Spike.patch
blob: d78dce82f45008bcebb770cdfd4196f7b7f549af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
From 11cb88149b598d003438e6e1b8e430640a012185 Mon Sep 17 00:00:00 2001
From: mezz <tehgeek@gmail.com>
Date: Wed, 9 Aug 2017 17:51:22 -0500
Subject: [PATCH] Fix MC-117075: TE Unload Lag Spike


diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 7c9b4e875..829ab845f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1273,7 +1273,11 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
         this.methodProfiler.exitEnter("blockEntities");
         timings.tileEntityTick.startTiming(); // Spigot
         if (!this.tileEntityListUnload.isEmpty()) {
-            this.tileEntityListTick.removeAll(this.tileEntityListUnload);
+            // Paper start - Use alternate implementation with faster contains
+            java.util.Set<TileEntity> toRemove = java.util.Collections.newSetFromMap(new java.util.IdentityHashMap<>());
+            toRemove.addAll(tileEntityListUnload);
+            this.tileEntityListTick.removeAll(toRemove);
+            // Paper end
             //this.tileEntityList.removeAll(this.tileEntityListUnload); // Paper - remove unused list
             this.tileEntityListUnload.clear();
         }
-- 
2.21.0