aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0462-Add-PlayerShearBlockEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0462-Add-PlayerShearBlockEvent.patch')
-rw-r--r--patches/server/0462-Add-PlayerShearBlockEvent.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/patches/server/0462-Add-PlayerShearBlockEvent.patch b/patches/server/0462-Add-PlayerShearBlockEvent.patch
new file mode 100644
index 0000000000..140bb100a4
--- /dev/null
+++ b/patches/server/0462-Add-PlayerShearBlockEvent.patch
@@ -0,0 +1,70 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: JRoy <[email protected]>
+Date: Thu, 27 Aug 2020 15:02:48 -0400
+Subject: [PATCH] Add PlayerShearBlockEvent
+
+
+diff --git a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
+index 44e72176a0da08a77fa192ee31c0fcd53f0dc22d..27f1c1ac12251f1438ee8bf14f4afb5fe601138f 100644
+--- a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
+@@ -127,7 +127,7 @@ public class BeehiveBlock extends BaseEntityBlock {
+ }
+
+ public static void dropHoneycomb(Level world, BlockPos pos) {
+- popResource(world, pos, new ItemStack(Items.HONEYCOMB, 3));
++ popResource(world, pos, new ItemStack(Items.HONEYCOMB, 3)); // Paper - Add PlayerShearBlockEvent; conflict on change, item needs to be set below
+ }
+
+ @Override
+@@ -140,8 +140,19 @@ public class BeehiveBlock extends BaseEntityBlock {
+ Item item = itemstack.getItem();
+
+ if (itemstack.is(Items.SHEARS)) {
++ // Paper start - Add PlayerShearBlockEvent
++ io.papermc.paper.event.block.PlayerShearBlockEvent event = new io.papermc.paper.event.block.PlayerShearBlockEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand), new java.util.ArrayList<>());
++ event.getDrops().add(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(new ItemStack(Items.HONEYCOMB, 3)));
++ if (!event.callEvent()) {
++ return InteractionResult.PASS;
++ }
++ // Paper end
+ world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.BEEHIVE_SHEAR, SoundSource.BLOCKS, 1.0F, 1.0F);
+- BeehiveBlock.dropHoneycomb(world, pos);
++ // Paper start - Add PlayerShearBlockEvent
++ for (org.bukkit.inventory.ItemStack itemDrop : event.getDrops()) {
++ popResource(world, pos, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(itemDrop));
++ }
++ // Paper end - Add PlayerShearBlockEvent
+ itemstack.hurtAndBreak(1, player, (entityhuman1) -> {
+ entityhuman1.broadcastBreakEvent(hand);
+ });
+diff --git a/src/main/java/net/minecraft/world/level/block/PumpkinBlock.java b/src/main/java/net/minecraft/world/level/block/PumpkinBlock.java
+index df11efd22682c2ed799dabf15d2cfa5973e8dca9..cc13b74fa37b5df6fe6f1423496b9fb03d71d083 100644
+--- a/src/main/java/net/minecraft/world/level/block/PumpkinBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/PumpkinBlock.java
+@@ -35,13 +35,24 @@ public class PumpkinBlock extends Block {
+ ItemStack itemStack = player.getItemInHand(hand);
+ if (itemStack.is(Items.SHEARS)) {
+ if (!world.isClientSide) {
++ // Paper start - Add PlayerShearBlockEvent
++ io.papermc.paper.event.block.PlayerShearBlockEvent event = new io.papermc.paper.event.block.PlayerShearBlockEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand), new java.util.ArrayList<>());
++ event.getDrops().add(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(new ItemStack(Items.PUMPKIN_SEEDS, 4)));
++ if (!event.callEvent()) {
++ return InteractionResult.PASS;
++ }
++ // Paper end - Add PlayerShearBlockEvent
+ Direction direction = hit.getDirection();
+ Direction direction2 = direction.getAxis() == Direction.Axis.Y ? player.getDirection().getOpposite() : direction;
+ world.playSound((Player)null, pos, SoundEvents.PUMPKIN_CARVE, SoundSource.BLOCKS, 1.0F, 1.0F);
+ world.setBlock(pos, Blocks.CARVED_PUMPKIN.defaultBlockState().setValue(CarvedPumpkinBlock.FACING, direction2), 11);
+- ItemEntity itemEntity = new ItemEntity(world, (double)pos.getX() + 0.5D + (double)direction2.getStepX() * 0.65D, (double)pos.getY() + 0.1D, (double)pos.getZ() + 0.5D + (double)direction2.getStepZ() * 0.65D, new ItemStack(Items.PUMPKIN_SEEDS, 4));
++ // Paper start - Add PlayerShearBlockEvent
++ for (org.bukkit.inventory.ItemStack item : event.getDrops()) {
++ ItemEntity itemEntity = new ItemEntity(world, (double) pos.getX() + 0.5D + (double) direction2.getStepX() * 0.65D, (double) pos.getY() + 0.1D, (double) pos.getZ() + 0.5D + (double) direction2.getStepZ() * 0.65D, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item));
++ // Paper end - Add PlayerShearBlockEvent
+ itemEntity.setDeltaMovement(0.05D * (double)direction2.getStepX() + world.random.nextDouble() * 0.02D, 0.05D, 0.05D * (double)direction2.getStepZ() + world.random.nextDouble() * 0.02D);
+ world.addFreshEntity(itemEntity);
++ } // Paper - Add PlayerShearBlockEvent
+ itemStack.hurtAndBreak(1, player, (playerx) -> {
+ playerx.broadcastBreakEvent(hand);
+ });