mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
While it wasn't really "broken" before, if plugins use NMS (which they really should't be) and mess with entity management themselves, and get it wrong, they could ultimately corrupt our state expectations. I've been unable to reproduce any issues locally, but these changes are the result of me analyzing the code pretty deeply and seeing about how to make it more durable to abnormal usage. Any servers seeing oddities, please run with -Ddebug.entities=true and send me any logs triggered.
25 lines
1.3 KiB
Diff
25 lines
1.3 KiB
Diff
From 80a584557c916ec5acd1ac5f5b5c0bdd45023f02 Mon Sep 17 00:00:00 2001
|
|
From: Byteflux <byte@byteflux.net>
|
|
Date: Tue, 1 Mar 2016 15:08:03 -0600
|
|
Subject: [PATCH] Remove invalid mob spawner tile entities
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index 2b1198ca8f..e15ed21f67 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -796,6 +796,10 @@ public class Chunk implements IChunkAccess {
|
|
tileentity.z();
|
|
this.tileEntities.put(blockposition.h(), tileentity);
|
|
// CraftBukkit start
|
|
+ // Paper start - Remove invalid mob spawner tile entities
|
|
+ } else if (tileentity instanceof TileEntityMobSpawner && !(getBlockData(blockposition.getX(), blockposition.getY(), blockposition.getZ()).getBlock() instanceof BlockMobSpawner)) {
|
|
+ this.tileEntities.remove(blockposition);
|
|
+ // Paper end
|
|
} else {
|
|
System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
|
|
+ " (" + getType(blockposition) + ") where there was no entity tile!");
|
|
--
|
|
2.21.0
|
|
|