aboutsummaryrefslogtreecommitdiffhomepage
path: root/CraftBukkit-Patches/0106-Fix-ConcurrentModificationException-while-being-idle.patch
blob: 454917c51bafb0ed19ddfe57c79e1539585cba45 (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
From 105ad265e192a49620e3c4ffd7c2703f54bc67ef Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Tue, 14 Jan 2014 20:11:25 +0000
Subject: [PATCH] Fix ConcurrentModificationException while being idle kicked
 in a vehicle


diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index d5d5f9d..554023a 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1131,23 +1131,24 @@ public abstract class World implements IBlockAccess {
             this.players.remove(entity);
             this.everyoneSleeping();
         }
-
-        int i = entity.ah;
-        int j = entity.aj;
-
-        if (entity.ag && this.isChunkLoaded(i, j)) {
-            this.getChunkAt(i, j).b(entity);
-        }
-
-        // CraftBukkit start - Decrement loop variable field if we've already ticked this entity
-        int index = this.entityList.indexOf(entity);
-        if (index != -1) {
-            if (index <= this.tickPosition) {
-                this.tickPosition--;
+        // Spigot start
+        if (!guardEntityList) { // It will get removed after the tick if we are ticking
+            int i = entity.ah;
+            int j = entity.aj;
+            if (entity.ag && this.isChunkLoaded(i, j)) {
+                this.getChunkAt(i, j).b(entity);
             }
-            this.entityList.remove(index);
+            // CraftBukkit start - Decrement loop variable field if we've already ticked this entity
+            int index = this.entityList.indexOf(entity);
+            if (index != -1) {
+                if (index <= this.tickPosition) {
+                    this.tickPosition--;
+                }
+                this.entityList.remove(index);
+            }
+            // CraftBukkit end
         }
-        // CraftBukkit end
+        // Spigot end
 
         this.b(entity);
     }
-- 
1.9.1