mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-19 11:39:50 +01:00
Add BlockPreDispenseEvent
This commit is contained in:
parent
cd4969468c
commit
b69f8fb10b
3 changed files with 12 additions and 2 deletions
paper-server
patches/sources/net/minecraft/world/level/block
src/main/java/org/bukkit/craftbukkit/event
|
@ -17,7 +17,7 @@
|
|||
|
||||
if (tileentitydispenser == null) {
|
||||
DispenserBlock.LOGGER.warn("Ignoring dispensing attempt for Dispenser without matching block entity at {}", pos);
|
||||
@@ -97,13 +98,16 @@
|
||||
@@ -97,13 +98,17 @@
|
||||
int i = tileentitydispenser.getRandomSlot(world.random);
|
||||
|
||||
if (i < 0) {
|
||||
|
@ -30,6 +30,7 @@
|
|||
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(world, itemstack);
|
||||
|
||||
if (idispensebehavior != DispenseItemBehavior.NOOP) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - Add BlockPreDispenseEvent
|
||||
+ DispenserBlock.eventFired = false; // CraftBukkit - reset event status
|
||||
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
|
||||
}
|
||||
|
|
|
@ -42,8 +42,11 @@
|
|||
world.levelEvent(1001, pos, 0);
|
||||
} else {
|
||||
ItemStack itemstack = tileentitydispenser.getItem(i);
|
||||
@@ -68,8 +73,25 @@
|
||||
@@ -66,10 +71,28 @@
|
||||
ItemStack itemstack1;
|
||||
|
||||
if (iinventory == null) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - Add BlockPreDispenseEvent
|
||||
itemstack1 = DropperBlock.DISPENSE_BEHAVIOUR.dispense(sourceblock, itemstack);
|
||||
} else {
|
||||
- itemstack1 = HopperBlockEntity.addItem(tileentitydispenser, iinventory, itemstack.copyWithCount(1), enumdirection.getOpposite());
|
||||
|
|
|
@ -2132,5 +2132,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 = CraftBlock.at(serverLevel, pos);
|
||||
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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue