mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-21 23:33:48 -07:00
Call missing BlockDispenseEvent
This commit is contained in:
@@ -404,7 +404,7 @@
|
|||||||
- PrimedTnt entitytntprimed = new PrimedTnt(worldserver, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (LivingEntity) null);
|
- PrimedTnt entitytntprimed = new PrimedTnt(worldserver, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (LivingEntity) null);
|
||||||
+ // CraftBukkit start
|
+ // CraftBukkit start
|
||||||
+ // EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(worldserver, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (EntityLiving) null);
|
+ // EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(worldserver, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (EntityLiving) null);
|
||||||
+
|
|
||||||
+ ItemStack itemstack1 = stack.split(1);
|
+ ItemStack itemstack1 = stack.split(1);
|
||||||
+ org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos());
|
+ org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos());
|
||||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
+ return stack;
|
+ return stack;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
+ PrimedTnt entitytntprimed = new PrimedTnt(worldserver, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (LivingEntity) null);
|
+ PrimedTnt entitytntprimed = new PrimedTnt(worldserver, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (LivingEntity) null);
|
||||||
+ // CraftBukkit end
|
+ // CraftBukkit end
|
||||||
+
|
+
|
||||||
@@ -441,10 +441,11 @@
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -314,6 +608,30 @@
|
@@ -313,7 +607,31 @@
|
||||||
|
ServerLevel worldserver = pointer.level();
|
||||||
Direction enumdirection = (Direction) pointer.state().getValue(DispenserBlock.FACING);
|
Direction enumdirection = (Direction) pointer.state().getValue(DispenserBlock.FACING);
|
||||||
BlockPos blockposition = pointer.pos().relative(enumdirection);
|
BlockPos blockposition = pointer.pos().relative(enumdirection);
|
||||||
|
+
|
||||||
+ // CraftBukkit start
|
+ // CraftBukkit start
|
||||||
+ org.bukkit.block.Block bukkitBlock = CraftBlock.at(worldserver, pointer.pos());
|
+ org.bukkit.block.Block bukkitBlock = CraftBlock.at(worldserver, pointer.pos());
|
||||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack);
|
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack);
|
||||||
@@ -457,7 +458,7 @@
|
|||||||
+ if (event.isCancelled()) {
|
+ if (event.isCancelled()) {
|
||||||
+ return stack;
|
+ return stack;
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ if (!event.getItem().equals(craftItem)) {
|
+ if (!event.getItem().equals(craftItem)) {
|
||||||
+ // Chain to handler for new item
|
+ // Chain to handler for new item
|
||||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||||
@@ -534,7 +535,21 @@
|
|||||||
if (iblockdata.is(BlockTags.BEEHIVES, (blockbase_blockdata) -> {
|
if (iblockdata.is(BlockTags.BEEHIVES, (blockbase_blockdata) -> {
|
||||||
return blockbase_blockdata.hasProperty(BeehiveBlock.HONEY_LEVEL) && blockbase_blockdata.getBlock() instanceof BeehiveBlock;
|
return blockbase_blockdata.hasProperty(BeehiveBlock.HONEY_LEVEL) && blockbase_blockdata.getBlock() instanceof BeehiveBlock;
|
||||||
}) && (Integer) iblockdata.getValue(BeehiveBlock.HONEY_LEVEL) >= 5) {
|
}) && (Integer) iblockdata.getValue(BeehiveBlock.HONEY_LEVEL) >= 5) {
|
||||||
@@ -426,6 +792,31 @@
|
@@ -402,6 +768,13 @@
|
||||||
|
this.setSuccess(true);
|
||||||
|
if (iblockdata.is(Blocks.RESPAWN_ANCHOR)) {
|
||||||
|
if ((Integer) iblockdata.getValue(RespawnAnchorBlock.CHARGE) != 4) {
|
||||||
|
+ // Paper start - Call missing BlockDispenseEvent
|
||||||
|
+ ItemStack result = org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDispenseEvent(pointer, blockposition, stack, this);
|
||||||
|
+ if (result != null) {
|
||||||
|
+ this.setSuccess(false);
|
||||||
|
+ return result;
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Call missing BlockDispenseEvent
|
||||||
|
RespawnAnchorBlock.charge((Entity) null, worldserver, blockposition, iblockdata);
|
||||||
|
stack.shrink(1);
|
||||||
|
} else {
|
||||||
|
@@ -426,6 +799,31 @@
|
||||||
this.setSuccess(false);
|
this.setSuccess(false);
|
||||||
return stack;
|
return stack;
|
||||||
} else {
|
} else {
|
||||||
@@ -566,3 +581,30 @@
|
|||||||
Iterator iterator1 = list.iterator();
|
Iterator iterator1 = list.iterator();
|
||||||
|
|
||||||
Armadillo armadillo;
|
Armadillo armadillo;
|
||||||
|
@@ -454,6 +852,13 @@
|
||||||
|
Optional<BlockState> optional = HoneycombItem.getWaxed(iblockdata);
|
||||||
|
|
||||||
|
if (optional.isPresent()) {
|
||||||
|
+ // Paper start - Call missing BlockDispenseEvent
|
||||||
|
+ ItemStack result = org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDispenseEvent(pointer, blockposition, stack, this);
|
||||||
|
+ if (result != null) {
|
||||||
|
+ this.setSuccess(false);
|
||||||
|
+ return result;
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Call missing BlockDispenseEvent
|
||||||
|
worldserver.setBlockAndUpdate(blockposition, (BlockState) optional.get());
|
||||||
|
worldserver.levelEvent(3003, blockposition, 0);
|
||||||
|
stack.shrink(1);
|
||||||
|
@@ -481,6 +886,12 @@
|
||||||
|
if (!worldserver.getBlockState(blockposition1).is(BlockTags.CONVERTABLE_TO_MUD)) {
|
||||||
|
return this.defaultDispenseItemBehavior.dispense(pointer, stack);
|
||||||
|
} else {
|
||||||
|
+ // Paper start - Call missing BlockDispenseEvent
|
||||||
|
+ ItemStack result = org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDispenseEvent(pointer, blockposition1, stack, this);
|
||||||
|
+ if (result != null) {
|
||||||
|
+ return result;
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Call missing BlockDispenseEvent
|
||||||
|
if (!worldserver.isClientSide) {
|
||||||
|
for (int k = 0; k < 5; ++k) {
|
||||||
|
worldserver.sendParticles(ParticleTypes.SPLASH, (double) blockposition.getX() + worldserver.random.nextDouble(), (double) (blockposition.getY() + 1), (double) blockposition.getZ() + worldserver.random.nextDouble(), 1, 0.0D, 0.0D, 0.0D, 1.0D);
|
||||||
|
@@ -2196,6 +2196,32 @@ public class CraftEventFactory {
|
|||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
|
// Paper start - Call missing BlockDispenseEvent
|
||||||
|
@Nullable
|
||||||
|
public static ItemStack handleBlockDispenseEvent(net.minecraft.core.dispenser.BlockSource pointer, BlockPos to, ItemStack itemStack, net.minecraft.core.dispenser.DispenseItemBehavior instance) {
|
||||||
|
org.bukkit.block.Block bukkitBlock = CraftBlock.at(pointer.level(), pointer.pos());
|
||||||
|
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemStack.copyWithCount(1));
|
||||||
|
|
||||||
|
org.bukkit.event.block.BlockDispenseEvent event = new org.bukkit.event.block.BlockDispenseEvent(bukkitBlock, craftItem.clone(), CraftVector.toBukkit(to));
|
||||||
|
if (!net.minecraft.world.level.block.DispenserBlock.eventFired) {
|
||||||
|
if (!event.callEvent()) {
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event.getItem().equals(craftItem)) {
|
||||||
|
// Chain to handler for new item
|
||||||
|
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||||
|
net.minecraft.core.dispenser.DispenseItemBehavior itemBehavior = net.minecraft.world.level.block.DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem());
|
||||||
|
if (itemBehavior != net.minecraft.core.dispenser.DispenseItemBehavior.NOOP && itemBehavior != instance) {
|
||||||
|
itemBehavior.dispense(pointer, eventStack);
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// Paper end - Call missing BlockDispenseEvent
|
||||||
|
|
||||||
// Paper start - add EntityFertilizeEggEvent
|
// Paper start - add EntityFertilizeEggEvent
|
||||||
/**
|
/**
|
||||||
* Calls the {@link io.papermc.paper.event.entity.EntityFertilizeEggEvent}.
|
* Calls the {@link io.papermc.paper.event.entity.EntityFertilizeEggEvent}.
|
||||||
|
Reference in New Issue
Block a user