PaperMC/Spigot-Server-Patches/Do-not-allow-bees-to-load-chunks-for-beehives.patch
Aikar 6b3f3d8d8c Improve Async Login to avoid firing in middle of Entity Ticking
If a sync load was triggered, it would process pending join events,
causing them to be added to the world in the middle of the entity ticking
process.

This caused their add to be queued instead of immediate, causing
"Illegal Tracking" errors.

This schedules it to fire at the players next Connection Tick, which
is exactly where this entire process use to run anyways.

Also added missing tab complete and syntax for syncloadinfo debug command
2020-04-29 04:14:47 -04:00

43 lines
No EOL
2.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: chickeneer <emcchickeneer@gmail.com>
Date: Tue, 17 Mar 2020 14:18:50 -0500
Subject: [PATCH] Do not allow bees to load chunks for beehives
diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java
index c7d79efdf6..dd1d246aeb 100644
--- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird {
if (this.hivePos == null) {
return false;
} else {
+ if (!this.world.isLoadedAndInBounds(hivePos)) return false; // Paper
TileEntity tileentity = this.world.getTileEntity(this.hivePos);
return tileentity instanceof TileEntityBeehive && ((TileEntityBeehive) tileentity).d();
@@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird {
}
private boolean i(BlockPosition blockposition) {
+ if (!this.world.isLoadedAndInBounds(blockposition)) return false; // Paper
TileEntity tileentity = this.world.getTileEntity(blockposition);
return tileentity instanceof TileEntityBeehive ? !((TileEntityBeehive) tileentity).isFull() : false;
@@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird {
@Override
public boolean g() {
if (EntityBee.this.hasHivePos() && EntityBee.this.eI() && EntityBee.this.hivePos.a((IPosition) EntityBee.this.getPositionVector(), 2.0D)) {
+ if (!EntityBee.this.world.isLoadedAndInBounds(EntityBee.this.hivePos)) return false; // Paper
TileEntity tileentity = EntityBee.this.world.getTileEntity(EntityBee.this.hivePos);
if (tileentity instanceof TileEntityBeehive) {
@@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird {
@Override
public void c() {
+ if (!EntityBee.this.world.isLoadedAndInBounds(EntityBee.this.hivePos)) return; // Paper
TileEntity tileentity = EntityBee.this.world.getTileEntity(EntityBee.this.hivePos);
if (tileentity instanceof TileEntityBeehive) {
--