mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-01 12:42:05 -07:00
Add BlockPreDispenseEvent
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
if (tileentitydispenser == null) {
|
if (tileentitydispenser == null) {
|
||||||
DispenserBlock.LOGGER.warn("Ignoring dispensing attempt for Dispenser without matching block entity at {}", pos);
|
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);
|
int i = tileentitydispenser.getRandomSlot(world.random);
|
||||||
|
|
||||||
if (i < 0) {
|
if (i < 0) {
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(world, itemstack);
|
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(world, itemstack);
|
||||||
|
|
||||||
if (idispensebehavior != DispenseItemBehavior.NOOP) {
|
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
|
+ DispenserBlock.eventFired = false; // CraftBukkit - reset event status
|
||||||
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
|
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
|
||||||
}
|
}
|
||||||
|
@@ -42,8 +42,11 @@
|
|||||||
world.levelEvent(1001, pos, 0);
|
world.levelEvent(1001, pos, 0);
|
||||||
} else {
|
} else {
|
||||||
ItemStack itemstack = tileentitydispenser.getItem(i);
|
ItemStack itemstack = tileentitydispenser.getItem(i);
|
||||||
@@ -68,8 +73,25 @@
|
@@ -66,10 +71,28 @@
|
||||||
|
ItemStack itemstack1;
|
||||||
|
|
||||||
if (iinventory == null) {
|
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);
|
itemstack1 = DropperBlock.DISPENSE_BEHAVIOUR.dispense(sourceblock, itemstack);
|
||||||
} else {
|
} else {
|
||||||
- itemstack1 = HopperBlockEntity.addItem(tileentitydispenser, iinventory, itemstack.copyWithCount(1), enumdirection.getOpposite());
|
- 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);
|
io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
|
||||||
return event.callEvent();
|
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
|
// Paper end
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user