aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0222-PlayerLaunchProjectileEvent.patch
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2023-07-04 10:22:56 +0200
committerGitHub <[email protected]>2023-07-04 10:22:56 +0200
commitc0936a71bd762a5a87425a24cfb9daff7418a4d4 (patch)
treee0fdbf09ef0ac1ae127f76a03bd8bb5132fa5c54 /patches/server/0222-PlayerLaunchProjectileEvent.patch
parent4356758b645f3d4d91268ac40cd3b682eb3faecf (diff)
downloadPaper-c0936a71bd762a5a87425a24cfb9daff7418a4d4.tar.gz
Paper-c0936a71bd762a5a87425a24cfb9daff7418a4d4.zip
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9440)
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 01aa02eb PR-858: Add LivingEntity#playHurtAnimation() 9421320f PR-884: Refinements to new ban API for improved compatibility and correctness 37a60b45 SPIGOT-6455, SPIGOT-7030, PR-750: Improve ban API 4eeb174b All smithing inventories are now the new smithing inventory f2bb168e PR-880: Add methods to get/set FallingBlock CancelDrop e7a807fa PR-879: Add Player#sendHealthUpdate() 692b8e96 SPIGOT-7370: Remove float value conversion in plugin.yml 2d033390 SPIGOT-7403: Add direct API for waxed signs 16a08373 PR-876: Add missing Raider API and 'no action ticks' CraftBukkit Changes: b60a95c8c PR-1189: Add LivingEntity#playHurtAnimation() 95c335c63 PR-1226: Fix VehicleEnterEvent not being called for certain entities 0a0fc3bee PR-1227: Refinements to new ban API for improved compatibility and correctness 0d0b1e5dc Revert bad change to PathfinderGoalSit causing all cats to sit 648196070 SPIGOT-6455, SPIGOT-7030, PR-1054: Improve ban API 31fe848d6 All smithing inventories are now the new smithing inventory 9a919a143 SPIGOT-7416: SmithItemEvent not firing in Smithing Table 9f64f0d22 PR-1221: Add methods to get/set FallingBlock CancelDrop 3be9ac171 PR-1220: Add Player#sendHealthUpdate() c1279f775 PR-1209: Clean up various patches c432e4397 Fix Raider#setCelebrating() implementation 504d96665 SPIGOT-7403: Add direct API for waxed signs c68c1f1b3 PR-1216: Add missing Raider API and 'no action ticks' 85b89c3dd Increase outdated build delay Spigot Changes: 9ebce8af Rebuild patches 64b565e6 Rebuild patches
Diffstat (limited to 'patches/server/0222-PlayerLaunchProjectileEvent.patch')
-rw-r--r--patches/server/0222-PlayerLaunchProjectileEvent.patch301
1 files changed, 301 insertions, 0 deletions
diff --git a/patches/server/0222-PlayerLaunchProjectileEvent.patch b/patches/server/0222-PlayerLaunchProjectileEvent.patch
new file mode 100644
index 0000000000..558aaf5b04
--- /dev/null
+++ b/patches/server/0222-PlayerLaunchProjectileEvent.patch
@@ -0,0 +1,301 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Sat, 21 Jul 2018 03:11:03 -0500
+Subject: [PATCH] PlayerLaunchProjectileEvent
+
+
+diff --git a/src/main/java/net/minecraft/world/item/EggItem.java b/src/main/java/net/minecraft/world/item/EggItem.java
+index 32b63407b943fb00d765dbf4e0eefb4b06f801b6..58cb992c5defec2f092755cbde661ff10f38bf9d 100644
+--- a/src/main/java/net/minecraft/world/item/EggItem.java
++++ b/src/main/java/net/minecraft/world/item/EggItem.java
+@@ -25,21 +25,33 @@ public class EggItem extends Item {
+
+ entityegg.setItem(itemstack);
+ entityegg.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
+- // CraftBukkit start
+- if (!world.addFreshEntity(entityegg)) {
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity());
++ if (event.callEvent() && world.addFreshEntity(entityegg)) {
++ if (event.shouldConsume() && !user.getAbilities().instabuild) {
++ itemstack.shrink(1);
++ } else if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++
++ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), net.minecraft.sounds.SoundEvents.EGG_THROW, net.minecraft.sounds.SoundSource.PLAYERS, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
++ user.awardStat(Stats.ITEM_USED.get(this));
++ } else {
+ if (user instanceof net.minecraft.server.level.ServerPlayer) {
+ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
+ }
+ return InteractionResultHolder.fail(itemstack);
+ }
+- // CraftBukkit end
++ // Paper end
+ }
+ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.EGG_THROW, SoundSource.PLAYERS, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+
++ /* // Paper start - moved up
+ user.awardStat(Stats.ITEM_USED.get(this));
+ if (!user.getAbilities().instabuild) {
+ itemstack.shrink(1);
+ }
++ */ // Paper end
+
+ return InteractionResultHolder.sidedSuccess(itemstack, world.isClientSide());
+ }
+diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
+index c7d4745aed77b23562cde7c68b8870fa239428d4..749ab72edc0d2e9c6f1161415ab8d59d3d6ca976 100644
+--- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java
++++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
+@@ -25,7 +25,20 @@ public class EnderpearlItem extends Item {
+
+ entityenderpearl.setItem(itemstack);
+ entityenderpearl.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
+- if (!world.addFreshEntity(entityenderpearl)) {
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityenderpearl.getBukkitEntity());
++ if (event.callEvent() && world.addFreshEntity(entityenderpearl)) {
++ if (event.shouldConsume() && !user.getAbilities().instabuild) {
++ itemstack.shrink(1);
++ } else if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++
++ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
++ user.awardStat(Stats.ITEM_USED.get(this));
++ user.getCooldowns().addCooldown(this, 20);
++ } else {
++ // Paper end
+ if (user instanceof net.minecraft.server.level.ServerPlayer) {
+ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
+ }
+@@ -33,6 +46,7 @@ public class EnderpearlItem extends Item {
+ }
+ }
+
++ /* // Paper start - moved up
+ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+ user.getCooldowns().addCooldown(this, 20);
+ // CraftBukkit end
+@@ -41,6 +55,7 @@ public class EnderpearlItem extends Item {
+ if (!user.getAbilities().instabuild) {
+ itemstack.shrink(1);
+ }
++ */ // Paper end - moved up
+
+ return InteractionResultHolder.sidedSuccess(itemstack, world.isClientSide());
+ }
+diff --git a/src/main/java/net/minecraft/world/item/ExperienceBottleItem.java b/src/main/java/net/minecraft/world/item/ExperienceBottleItem.java
+index 72dfb7b652f515bf9df201d524a851ab56706544..b80bedb5f27b474d7f66e9e1cc38ca3b692fc92b 100644
+--- a/src/main/java/net/minecraft/world/item/ExperienceBottleItem.java
++++ b/src/main/java/net/minecraft/world/item/ExperienceBottleItem.java
+@@ -22,18 +22,37 @@ public class ExperienceBottleItem extends Item {
+ @Override
+ public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
+ ItemStack itemStack = user.getItemInHand(hand);
+- world.playSound((Player)null, user.getX(), user.getY(), user.getZ(), SoundEvents.EXPERIENCE_BOTTLE_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
++ // world.playSound((Player)null, user.getX(), user.getY(), user.getZ(), SoundEvents.EXPERIENCE_BOTTLE_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F)); // Paper - moved down
+ if (!world.isClientSide) {
+ ThrownExperienceBottle thrownExperienceBottle = new ThrownExperienceBottle(world, user);
+ thrownExperienceBottle.setItem(itemStack);
+ thrownExperienceBottle.shootFromRotation(user, user.getXRot(), user.getYRot(), -20.0F, 0.7F, 1.0F);
+- world.addFreshEntity(thrownExperienceBottle);
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownExperienceBottle.getBukkitEntity());
++ if (event.callEvent() && world.addFreshEntity(thrownExperienceBottle)) {
++ if (event.shouldConsume() && !user.getAbilities().instabuild) {
++ itemStack.shrink(1);
++ } else if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++
++ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.EXPERIENCE_BOTTLE_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
++ user.awardStat(Stats.ITEM_USED.get(this));
++ } else {
++ if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++ return InteractionResultHolder.fail(itemStack);
++ }
++ // Paper end
+ }
+
++ /* // Paper start - moved up
+ user.awardStat(Stats.ITEM_USED.get(this));
+ if (!user.getAbilities().instabuild) {
+ itemStack.shrink(1);
+ }
++ */ // Paper end
+
+ return InteractionResultHolder.sidedSuccess(itemStack, world.isClientSide());
+ }
+diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
+index f17e9c6c91c02e0d36f58851522a5d3e5e423121..82b0bda3e35ec2157a477e1a17b2b46baadc97d9 100644
+--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
++++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
+@@ -47,8 +47,12 @@ public class FireworkRocketItem extends Item {
+ Direction direction = context.getClickedFace();
+ FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(level, context.getPlayer(), vec3.x + (double)direction.getStepX() * 0.15D, vec3.y + (double)direction.getStepY() * 0.15D, vec3.z + (double)direction.getStepZ() * 0.15D, itemStack);
+ fireworkRocketEntity.spawningEntity = context.getPlayer() == null ? null : context.getPlayer().getUUID(); // Paper
+- level.addFreshEntity(fireworkRocketEntity);
+- itemStack.shrink(1);
++ // Paper start - PlayerLaunchProjectileEvent
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity());
++ if (!event.callEvent() || !level.addFreshEntity(fireworkRocketEntity)) return InteractionResult.PASS;
++ if (event.shouldConsume() && !context.getPlayer().getAbilities().instabuild) itemStack.shrink(1);
++ else if (context.getPlayer() instanceof net.minecraft.server.level.ServerPlayer) ((net.minecraft.server.level.ServerPlayer) context.getPlayer()).getBukkitEntity().updateInventory();
++ // Paper end
+ }
+
+ return InteractionResult.sidedSuccess(level.isClientSide);
+diff --git a/src/main/java/net/minecraft/world/item/LingeringPotionItem.java b/src/main/java/net/minecraft/world/item/LingeringPotionItem.java
+index db0492f6337de562210ef062f46e98992c908200..f2d1b4e3fc08f6a06beb391bc6e60f62a9bf82b9 100644
+--- a/src/main/java/net/minecraft/world/item/LingeringPotionItem.java
++++ b/src/main/java/net/minecraft/world/item/LingeringPotionItem.java
+@@ -23,7 +23,12 @@ public class LingeringPotionItem extends ThrowablePotionItem {
+
+ @Override
+ public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
++ // Paper start
++ InteractionResultHolder<ItemStack> wrapper = super.use(world, user, hand);
++ if (wrapper.getResult() != net.minecraft.world.InteractionResult.FAIL) {
+ world.playSound((Player)null, user.getX(), user.getY(), user.getZ(), SoundEvents.LINGERING_POTION_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+- return super.use(world, user, hand);
++ }
++ return wrapper;
++ // Paper end
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/item/SnowballItem.java b/src/main/java/net/minecraft/world/item/SnowballItem.java
+index d60e57e84f7d66e1858ab50ac33777feedf1c54d..ef3f90a5bcdd7b9815a4053cff166f9d2552f55d 100644
+--- a/src/main/java/net/minecraft/world/item/SnowballItem.java
++++ b/src/main/java/net/minecraft/world/item/SnowballItem.java
+@@ -26,18 +26,26 @@ public class SnowballItem extends Item {
+
+ entitysnowball.setItem(itemstack);
+ entitysnowball.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
+- if (world.addFreshEntity(entitysnowball)) {
+- if (!user.getAbilities().instabuild) {
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitysnowball.getBukkitEntity());
++ if (event.callEvent() && world.addFreshEntity(entitysnowball)) {
++ user.awardStat(Stats.ITEM_USED.get(this));
++ if (event.shouldConsume() && !user.getAbilities().instabuild) {
++ // Paper end
+ itemstack.shrink(1);
++ } else if (user instanceof net.minecraft.server.level.ServerPlayer) { // Paper
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); // Paper
+ }
+
+ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.SNOWBALL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+- } else if (user instanceof net.minecraft.server.level.ServerPlayer) {
+- ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ } else { // Paper
++ if (user instanceof net.minecraft.server.level.ServerPlayer) ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); // Paper
++ return InteractionResultHolder.fail(itemstack); // Paper
+ }
+ }
+ // CraftBukkit end
+
++ /* // Paper tart - moved up
+ user.awardStat(Stats.ITEM_USED.get(this));
+ // CraftBukkit start - moved up
+ /*
+@@ -45,6 +53,7 @@ public class SnowballItem extends Item {
+ itemstack.shrink(1);
+ }
+ */
++ // Paper end
+
+ return InteractionResultHolder.sidedSuccess(itemstack, world.isClientSide());
+ }
+diff --git a/src/main/java/net/minecraft/world/item/SplashPotionItem.java b/src/main/java/net/minecraft/world/item/SplashPotionItem.java
+index 317e20052bcac9118e1adeb619bedaacc6fcd690..ece19f30064e9f59d4df077683e1f894455a84b7 100644
+--- a/src/main/java/net/minecraft/world/item/SplashPotionItem.java
++++ b/src/main/java/net/minecraft/world/item/SplashPotionItem.java
+@@ -14,7 +14,12 @@ public class SplashPotionItem extends ThrowablePotionItem {
+
+ @Override
+ public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
++ // Paper start
++ InteractionResultHolder<ItemStack> wrapper = super.use(world, user, hand);
++ if (wrapper.getResult() != net.minecraft.world.InteractionResult.FAIL) {
+ world.playSound((Player)null, user.getX(), user.getY(), user.getZ(), SoundEvents.SPLASH_POTION_THROW, SoundSource.PLAYERS, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+- return super.use(world, user, hand);
++ }
++ return wrapper;
++ // Paper end
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
+index 0673f62f25532955f3552b64f122e644d42027e4..de5bdceb4c8578fb972a2fd5ee0dfdae509e46dc 100644
+--- a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
++++ b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
+@@ -19,13 +19,31 @@ public class ThrowablePotionItem extends PotionItem {
+ ThrownPotion thrownPotion = new ThrownPotion(world, user);
+ thrownPotion.setItem(itemStack);
+ thrownPotion.shootFromRotation(user, user.getXRot(), user.getYRot(), -20.0F, 0.5F, 1.0F);
+- world.addFreshEntity(thrownPotion);
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity());
++ if (event.callEvent() && world.addFreshEntity(thrownPotion)) {
++ if (event.shouldConsume() && !user.getAbilities().instabuild) {
++ itemStack.shrink(1);
++ } else if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++
++ user.awardStat(Stats.ITEM_USED.get(this));
++ } else {
++ if (user instanceof net.minecraft.server.level.ServerPlayer) {
++ ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
++ }
++ return InteractionResultHolder.fail(itemStack);
++ }
++ // Paper end
+ }
+
++ /* // Paper start - moved up
+ user.awardStat(Stats.ITEM_USED.get(this));
+ if (!user.getAbilities().instabuild) {
+ itemStack.shrink(1);
+ }
++ */ // Paper end
+
+ return InteractionResultHolder.sidedSuccess(itemStack, world.isClientSide());
+ }
+diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
+index 216ae3fbc6d64538255ad404ad7e9915d6694f81..8078f127ff4b6e0aafb5804b9c02e237f79445b5 100644
+--- a/src/main/java/net/minecraft/world/item/TridentItem.java
++++ b/src/main/java/net/minecraft/world/item/TridentItem.java
+@@ -83,21 +83,25 @@ public class TridentItem extends Item implements Vanishable {
+ }
+
+ // CraftBukkit start
+- if (!world.addFreshEntity(entitythrowntrident)) {
++ // Paper start
++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity());
++ if (!event.callEvent() || !world.addFreshEntity(entitythrowntrident)) {
++ // Paper end
+ if (entityhuman instanceof net.minecraft.server.level.ServerPlayer) {
+ ((net.minecraft.server.level.ServerPlayer) entityhuman).getBukkitEntity().updateInventory();
+ }
+ return;
+ }
+-
++ if (event.shouldConsume()) { // Paper
+ stack.hurtAndBreak(1, entityhuman, (entityhuman1) -> {
+ entityhuman1.broadcastBreakEvent(user.getUsedItemHand());
+ });
++ } // Paper
+ entitythrowntrident.tridentItem = stack.copy(); // SPIGOT-4511 update since damage call moved
+ // CraftBukkit end
+
+ world.playSound((Player) null, (Entity) entitythrowntrident, SoundEvents.TRIDENT_THROW, SoundSource.PLAYERS, 1.0F, 1.0F);
+- if (!entityhuman.getAbilities().instabuild) {
++ if (event.shouldConsume() && !entityhuman.getAbilities().instabuild) { // Paper
+ entityhuman.getInventory().removeItem(stack);
+ }
+ // CraftBukkit start - SPIGOT-5458 also need in this branch :(