geforkt von Mirrors/Paper
8e83c3c7b4
replaced by ProjectileHitEvent propagated the cancellation of the legacy event to the modern one
35 Zeilen
2.3 KiB
Diff
35 Zeilen
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Madeline Miller <mnmiller1@me.com>
|
|
Date: Sun, 17 Jan 2021 13:16:09 +1000
|
|
Subject: [PATCH] Implement BlockPreDispenseEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
index 85c5319837295bd2f85baebfe8d6660b267f1d5f..8f55d0753fa26924235c943595f0d1a06a933a6f 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
@@ -93,6 +93,7 @@ public class DispenserBlock extends BaseEntityBlock {
|
|
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(itemstack);
|
|
|
|
if (idispensebehavior != DispenseItemBehavior.NOOP) {
|
|
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - BlockPreDispenseEvent is called here
|
|
DispenserBlock.eventFired = false; // CraftBukkit - reset event status
|
|
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
index 36fa211c9ae970624dfc461d9a1b6bcd9e33d22e..9851859fc3c1ff87edc1d52aa8e6806d0d1494a0 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
@@ -1894,5 +1894,11 @@ public class CraftEventFactory {
|
|
io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
|
|
return event.callEvent();
|
|
}
|
|
+
|
|
+ public static boolean handleBlockPreDispenseEvent(ServerLevel serverLevel, BlockPos pos, ItemStack itemStack, int slot) {
|
|
+ org.bukkit.block.Block block = serverLevel.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ());
|
|
+ io.papermc.paper.event.block.BlockPreDispenseEvent event = new io.papermc.paper.event.block.BlockPreDispenseEvent(block, org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), slot);
|
|
+ return event.callEvent();
|
|
+ }
|
|
// Paper end
|
|
}
|