From e653ae766907d25591414be0f6fb85f0f629be44 Mon Sep 17 00:00:00 2001 From: BlackHole Date: Wed, 22 Jan 2020 18:34:03 +0100 Subject: [PATCH] SPIGOT-5526: Call EntityEnterBlockEvent for bees trying to enter hives --- nms-patches/TileEntityBeehive.patch | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/nms-patches/TileEntityBeehive.patch b/nms-patches/TileEntityBeehive.patch index c37bcef098..35c932a8c6 100644 --- a/nms-patches/TileEntityBeehive.patch +++ b/nms-patches/TileEntityBeehive.patch @@ -1,6 +1,25 @@ --- a/net/minecraft/server/TileEntityBeehive.java +++ b/net/minecraft/server/TileEntityBeehive.java -@@ -163,6 +163,7 @@ +@@ -108,6 +108,18 @@ + + public void a(Entity entity, boolean flag, int i) { + if (this.bees.size() < 3) { ++ // CraftBukkit start ++ if (this.world != null) { ++ org.bukkit.event.entity.EntityEnterBlockEvent event = new org.bukkit.event.entity.EntityEnterBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, getPosition())); ++ org.bukkit.Bukkit.getPluginManager().callEvent(event); ++ if (event.isCancelled()) { ++ if (entity instanceof EntityBee) { ++ ((EntityBee) entity).setCannotEnterHiveTicks(400); ++ } ++ return; ++ } ++ } ++ // CraftBukkit end + entity.stopRiding(); + entity.ejectPassengers(); + NBTTagCompound nbttagcompound = new NBTTagCompound(); +@@ -163,6 +175,7 @@ if (!entity.getEntityType().a(TagsEntity.BEEHIVE_INHABITORS)) { return false; } else { @@ -8,7 +27,7 @@ if (entity instanceof EntityBee) { EntityBee entitybee = (EntityBee) entity; -@@ -196,7 +197,7 @@ +@@ -196,7 +209,7 @@ BlockPosition blockposition2 = this.getPosition(); this.world.playSound((EntityHuman) null, (double) blockposition2.getX(), (double) blockposition2.getY(), (double) blockposition2.getZ(), SoundEffects.BLOCK_BEEHIVE_EXIT, SoundCategory.BLOCKS, 1.0F, 1.0F); @@ -17,7 +36,7 @@ } } else { return false; -@@ -223,6 +224,11 @@ +@@ -223,6 +236,11 @@ if (this.a(iblockdata, nbttagcompound, (List) null, tileentitybeehive_releasestatus)) { iterator.remove(); }