mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-05 02:10:30 +01:00
Fix Double World Add issues - Fixes #328
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
This commit is contained in:
parent
3faaaab75d
commit
1f940b2ffa
37
Spigot-Server-Patches/0165-Fix-Double-World-Add-issues.patch
Normal file
37
Spigot-Server-Patches/0165-Fix-Double-World-Add-issues.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From d4a8a16b2f72409f3efd372e4ac6536670da3a45 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 940f4e9..584a77d 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||||
|
@@ -527,7 +527,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void a(Entity entity, World world, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
|
||||||
|
- if (world.addEntity(entity, reason) && entity.isVehicle()) {
|
||||||
|
+ if (!entity.valid && world.addEntity(entity, reason) && entity.isVehicle()) { // Paper
|
||||||
|
// CraftBukkit end
|
||||||
|
Iterator iterator = entity.bx().iterator();
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||||
|
index 98fe386..b3d4f86 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||||||
|
@@ -1039,6 +1039,7 @@ public abstract class World implements IBlockAccess {
|
||||||
|
public boolean addEntity(Entity entity, SpawnReason spawnReason) { // Changed signature, added SpawnReason
|
||||||
|
org.spigotmc.AsyncCatcher.catchOp( "entity add"); // Spigot
|
||||||
|
if (entity == null) return false;
|
||||||
|
+ if (entity.valid) { MinecraftServer.LOGGER.error("Attempted Double World add on " + entity, new Throwable()); return true; } // Paper
|
||||||
|
// CraftBukkit end
|
||||||
|
int i = MathHelper.floor(entity.locX / 16.0D);
|
||||||
|
int j = MathHelper.floor(entity.locZ / 16.0D);
|
||||||
|
--
|
||||||
|
2.9.0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user