From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Wed, 2 Feb 2022 13:50:06 -0800 Subject: [PATCH] Trigger bee_nest_destroyed trigger in the correct place diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java index 5461e6ff769be93054b3d8369a7aa286d1244875..161a810a8c4bd4c916c54df49c44c504130cb28e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -427,12 +427,16 @@ public class ServerPlayerGameMode { block.destroy(this.level, pos, iblockdata); } + ItemStack mainHandStack = null; // Paper + boolean isCorrectTool = false; // Paper if (this.isCreative()) { // return true; // CraftBukkit } else { ItemStack itemstack = this.player.getMainHandItem(); ItemStack itemstack1 = itemstack.copy(); boolean flag1 = this.player.hasCorrectToolForDrops(iblockdata); + mainHandStack = itemstack1; // Paper + isCorrectTool = flag1; // Paper itemstack.mineBlock(this.level, iblockdata, pos, this.player); if (flag && flag1 && event.isDropItems()) { // CraftBukkit - Check if block should drop items @@ -453,6 +457,13 @@ public class ServerPlayerGameMode { if (flag && event != null) { iblockdata.getBlock().popExperience(this.level, pos, event.getExpToDrop(), this.player); // Paper } + // Paper start - trigger after items are dropped (check impls of block#playerDestroy) + if (mainHandStack != null) { + if (flag && isCorrectTool && event.isDropItems() && block instanceof net.minecraft.world.level.block.BeehiveBlock && tileentity instanceof net.minecraft.world.level.block.entity.BeehiveBlockEntity beehiveBlockEntity) { // simulates the guard on block#playerDestroy above + CriteriaTriggers.BEE_NEST_DESTROYED.trigger(player, iblockdata, mainHandStack, beehiveBlockEntity.getOccupantCount()); + } + } + // Paper end return true; // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java index bd58ae8bb1fcafa2c618f2b0b7825731188a3d65..ca6cf92b96d68ba8b34e90edda2a93e11214c91b 100644 --- a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java @@ -88,7 +88,7 @@ public class BeehiveBlock extends BaseEntityBlock { this.angerNearbyBees(world, pos); } - CriteriaTriggers.BEE_NEST_DESTROYED.trigger((ServerPlayer) player, state, tool, tileentitybeehive.getOccupantCount()); + // CriteriaTriggers.BEE_NEST_DESTROYED.trigger((ServerPlayer) player, state, tool, tileentitybeehive.getOccupantCount()); // Paper - moved until after items are dropped } }