From 4d8c8f9aa54f446f4d8e8e2736b1728c34c31deb Mon Sep 17 00:00:00 2001 From: Thinkofdeath 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 121b3d5..fa3f5e0 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1120,23 +1120,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