2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: TheViperShow <29604693+TheViperShow@users.noreply.github.com>
|
|
|
|
Date: Wed, 22 Apr 2020 09:40:38 +0200
|
|
|
|
Subject: [PATCH] Implemented BlockFailedDispenseEvent
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
2023-06-08 01:56:33 +02:00
|
|
|
index 504ba1588ae0c35c81934d0a09f0ad70d542d968..9ec043ff2cd38e589066a3eb7f42834e4e7592cf 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
2023-06-08 01:56:33 +02:00
|
|
|
@@ -83,8 +83,10 @@ public class DispenserBlock extends BaseEntityBlock {
|
2022-06-08 09:30:41 +02:00
|
|
|
int i = tileentitydispenser.getRandomSlot(world.random);
|
2021-06-11 14:02:28 +02:00
|
|
|
|
|
|
|
if (i < 0) {
|
2021-06-14 21:17:47 +02:00
|
|
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFailedDispenseEvent(world, pos)) {// Paper - BlockFailedDispenseEvent is called here
|
|
|
|
world.levelEvent(1001, pos, 0);
|
2023-06-08 01:56:33 +02:00
|
|
|
world.gameEvent(GameEvent.BLOCK_ACTIVATE, pos, GameEvent.Context.of(tileentitydispenser.getBlockState()));
|
2021-06-14 21:17:47 +02:00
|
|
|
+ } // Paper
|
2021-06-11 14:02:28 +02:00
|
|
|
} else {
|
|
|
|
ItemStack itemstack = tileentitydispenser.getItem(i);
|
2021-06-14 21:17:47 +02:00
|
|
|
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(itemstack);
|
2021-06-11 14:02:28 +02:00
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/DropperBlock.java b/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
2022-06-08 09:30:41 +02:00
|
|
|
index 1415ad60163f6584619cc7caa61f1848d6ebaa93..801c4c120e98584bcf218a4ef9bd66d7d18c1097 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
2021-11-24 18:58:26 +01:00
|
|
|
@@ -44,6 +44,7 @@ public class DropperBlock extends DispenserBlock {
|
2022-06-08 09:30:41 +02:00
|
|
|
int i = tileentitydispenser.getRandomSlot(world.random);
|
2021-06-11 14:02:28 +02:00
|
|
|
|
|
|
|
if (i < 0) {
|
2021-06-14 21:17:47 +02:00
|
|
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFailedDispenseEvent(world, pos)) // Paper - BlockFailedDispenseEvent is called here
|
|
|
|
world.levelEvent(1001, pos, 0);
|
2021-06-11 14:02:28 +02:00
|
|
|
} else {
|
|
|
|
ItemStack itemstack = tileentitydispenser.getItem(i);
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
2023-06-18 13:03:18 +02:00
|
|
|
index 98db6ecab2ae7adf24d415e743c78731d9cd03f7..acc292bd5f22e0d20279f5abcb4f12eae84649e0 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
2023-06-18 13:03:18 +02:00
|
|
|
@@ -1928,4 +1928,12 @@ public class CraftEventFactory {
|
2023-05-12 13:10:08 +02:00
|
|
|
|
|
|
|
return !event.isCancelled();
|
2021-06-11 14:02:28 +02:00
|
|
|
}
|
|
|
|
+
|
|
|
|
+ // Paper start
|
2021-06-14 21:17:47 +02:00
|
|
|
+ public static boolean handleBlockFailedDispenseEvent(ServerLevel serverLevel, BlockPos blockposition) {
|
|
|
|
+ org.bukkit.block.Block block = serverLevel.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
|
|
|
+ io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ return event.callEvent();
|
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
}
|