1ab021ddca
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 565a5727 #533: Add consumed item, hand and consumeItem boolean to EntityShootBowEvent CraftBukkit Changes: 927200a9 #718: Add consumed item, hand and consumeItem boolean to EntityShootBowEvent
38 lines
2.1 KiB
Diff
38 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 6 Feb 2019 00:20:33 -0500
|
|
Subject: [PATCH] BlockDestroyEvent
|
|
|
|
Adds an event for when the server is going to destroy a current block,
|
|
potentially causing it to drop. This event can be cancelled to avoid
|
|
the block destruction, such as preventing signs from popping when
|
|
floating in the air.
|
|
|
|
This can replace many uses of BlockPhysicsEvent
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 8bb5f35dd211ef0267f55678bb568a7d3b9980ec..f6c785c1368c1bc1d626a90ffe64638f42775607 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -500,8 +500,20 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
return false;
|
|
} else {
|
|
Fluid fluid = this.getFluid(blockposition);
|
|
+ // Paper start - while the above setAir method is named same and looks very similar
|
|
+ // they are NOT used with same intent and the above should not fire this event. The above method is more of a BlockSetToAirEvent,
|
|
+ // it doesn't imply destruction of a block that plays a sound effect / drops an item.
|
|
+ boolean playEffect = true;
|
|
+ if (com.destroystokyo.paper.event.block.BlockDestroyEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
|
+ com.destroystokyo.paper.event.block.BlockDestroyEvent event = new com.destroystokyo.paper.event.block.BlockDestroyEvent(MCUtil.toBukkitBlock(this, blockposition), fluid.getBlockData().createCraftBlockData(), flag);
|
|
+ if (!event.callEvent()) {
|
|
+ return false;
|
|
+ }
|
|
+ playEffect = event.playEffect();
|
|
+ }
|
|
+ // Paper end
|
|
|
|
- if (!(iblockdata.getBlock() instanceof BlockFireAbstract)) {
|
|
+ if (playEffect && !(iblockdata.getBlock() instanceof BlockFireAbstract)) { // Paper
|
|
this.triggerEffect(2001, blockposition, Block.getCombinedId(iblockdata));
|
|
}
|
|
|