aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0124-Fix-Double-World-Add-issues.patch
blob: db9b3211bd3901f86a2ad896a0e98f16f7075247 (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
From 5998e59699d7927e6937cc3df8d056504fa7f2c0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 21 Jun 2016 22:54:34 -0400
Subject: [PATCH] Fix Double World Add issues

Vanilla will double add Spider Jockeys to the world, so ignore already added.

Also add debug if something else tries to, and abort before world gets bad state

diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 21ee154a5..a144118f6 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -1041,7 +1041,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
     }
 
     public static void a(Entity entity, GeneratorAccess generatoraccess, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
-        if (generatoraccess.addEntity(entity, reason) && entity.isVehicle()) {
+        if (!entity.valid && generatoraccess.addEntity(entity, reason) && entity.isVehicle()) { // Paper
             // CraftBukkit end
             Iterator iterator = entity.bP().iterator();
 
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 06991baca..56676f34b 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -992,6 +992,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
 
     public boolean addEntity(Entity entity, SpawnReason spawnReason) { // Changed signature, added SpawnReason
         org.spigotmc.AsyncCatcher.catchOp( "entity add"); // Spigot
+        if (entity.valid) { MinecraftServer.LOGGER.error("Attempted Double World add on " + entity, new Throwable()); return true; } // Paper
         if (!CraftEventFactory.doEntityAddEventCalling(this, entity, spawnReason)) {
             return false;
         }
-- 
2.20.1