2020-05-06 11:48:49 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2018-08-17 23:55:40 +02:00
From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sat, 21 Jul 2018 03:11:03 -0500
Subject: [PATCH] PlayerLaunchProjectileEvent
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/InteractionResultWrapper.java b/src/main/java/net/minecraft/world/InteractionResultWrapper.java
index dd17c111670e637b574f5c7f38d27848900ce194..8cecc3d909a51b1892b4a299a5e6ec3518db9b39 100644
--- a/src/main/java/net/minecraft/world/InteractionResultWrapper.java
+++ b/src/main/java/net/minecraft/world/InteractionResultWrapper.java
2019-12-15 19:25:10 +01:00
@@ -10,6 +10,7 @@ public class InteractionResultWrapper<T> {
this.b = t0;
}
+ public EnumInteractionResult getResult() { return this.a(); } // Paper - OBFHELPER
public EnumInteractionResult a() {
return this.a;
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemEgg.java b/src/main/java/net/minecraft/world/item/ItemEgg.java
index 2083ab6e0dc7e48d409a5ee33e712e34abd6f6bf..4b1a6ee784da4595931396a905f1358b7a13f3dd 100644
--- a/src/main/java/net/minecraft/world/item/ItemEgg.java
+++ b/src/main/java/net/minecraft/world/item/ItemEgg.java
@@ -25,21 +25,35 @@ public class ItemEgg extends Item {
2019-01-01 04:15:55 +01:00
2019-04-30 03:20:24 +02:00
entityegg.setItem(itemstack);
2018-08-17 23:55:40 +02:00
entityegg.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
2020-01-28 20:43:57 +01:00
- // CraftBukkit start
- if (!world.addEntity(entityegg)) {
2018-08-17 23:55:40 +02:00
+ // 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(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity());
+ if (event.callEvent() && world.addEntity(entityegg)) {
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
2021-03-16 08:19:45 +01:00
+ } else if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) {
+ ((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
2018-08-17 23:55:40 +02:00
+ }
+
2021-03-16 08:19:45 +01:00
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EGG_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
2019-12-15 19:25:10 +01:00
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
2018-08-17 23:55:40 +02:00
+ } else {
2021-03-16 08:19:45 +01:00
if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) {
((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
2020-01-28 20:43:57 +01:00
}
- return InteractionResultWrapper.fail(itemstack);
2021-03-16 08:19:45 +01:00
+ return new InteractionResultWrapper<ItemStack>(net.minecraft.world.EnumInteractionResult.FAIL, itemstack);
2020-01-28 20:43:57 +01:00
}
- // CraftBukkit end
2018-08-17 23:55:40 +02:00
+ // Paper end
2020-01-28 20:43:57 +01:00
+
+
2018-08-17 23:55:40 +02:00
}
2020-06-26 01:38:24 +02:00
world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EGG_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (ItemEgg.RANDOM.nextFloat() * 0.4F + 0.8F)); // CraftBukkit - from above
2018-08-17 23:55:40 +02:00
2019-12-15 19:25:10 +01:00
+ /* // Paper start - moved up
2018-08-17 23:55:40 +02:00
entityhuman.b(StatisticList.ITEM_USED.b(this));
2019-12-15 19:25:10 +01:00
if (!entityhuman.abilities.canInstantlyBuild) {
itemstack.subtract(1);
}
+ */ // Paper end
2020-06-26 01:38:24 +02:00
return InteractionResultWrapper.a(itemstack, world.s_());
2019-12-15 19:25:10 +01:00
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemEnderPearl.java b/src/main/java/net/minecraft/world/item/ItemEnderPearl.java
index 5349282b9a5b43c4c3539e1677971463e2ca5a17..9896d77381e7fadf1ef2619210713e190c1445d0 100644
--- a/src/main/java/net/minecraft/world/item/ItemEnderPearl.java
+++ b/src/main/java/net/minecraft/world/item/ItemEnderPearl.java
@@ -25,22 +25,37 @@ public class ItemEnderPearl extends Item {
2018-08-17 23:55:40 +02:00
2019-04-30 03:20:24 +02:00
entityenderpearl.setItem(itemstack);
2018-08-17 23:55:40 +02:00
entityenderpearl.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
- if (!world.addEntity(entityenderpearl)) {
+ // Paper start
2019-12-15 19:25:10 +01:00
+ 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(itemstack), (org.bukkit.entity.Projectile) entityenderpearl.getBukkitEntity());
2018-08-17 23:55:40 +02:00
+ if (event.callEvent() && world.addEntity(entityenderpearl)) {
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
2021-03-16 08:19:45 +01:00
+ } else if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) {
+ ((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
2018-08-17 23:55:40 +02:00
+ }
+
2021-03-16 08:19:45 +01:00
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
2019-12-15 19:25:10 +01:00
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
2019-08-05 04:15:53 +02:00
+ entityhuman.getCooldownTracker().setCooldown(this, 20);
2018-08-17 23:55:40 +02:00
+ } else {
+ // Paper end
2021-03-16 08:19:45 +01:00
if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) {
((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
2018-08-17 23:55:40 +02:00
}
2021-03-16 08:19:45 +01:00
- return InteractionResultWrapper.fail(itemstack);
+ return new InteractionResultWrapper<ItemStack>(net.minecraft.world.EnumInteractionResult.FAIL, itemstack);
2018-08-17 23:55:40 +02:00
}
}
2020-06-26 01:38:24 +02:00
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemEnderPearl.RANDOM.nextFloat() * 0.4F + 0.8F));
2019-12-15 19:25:10 +01:00
- entityhuman.getCooldownTracker().setCooldown(this, 20);
- // CraftBukkit end
-
- entityhuman.b(StatisticList.ITEM_USED.b(this));
2018-08-17 23:55:40 +02:00
- if (!entityhuman.abilities.canInstantlyBuild) {
- itemstack.subtract(1);
- }
2019-12-15 19:25:10 +01:00
+ // Paper start - moved up
2020-06-26 01:38:24 +02:00
+// world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemEnderPearl.RANDOM.nextFloat() * 0.4F + 0.8F));
2019-12-15 19:25:10 +01:00
+// entityhuman.getCooldownTracker().setCooldown(this, 20);
+// // CraftBukkit end
+//
+// entityhuman.b(StatisticList.ITEM_USED.b(this));
2019-07-20 06:01:24 +02:00
+// if (!entityhuman.abilities.canInstantlyBuild) {
+// itemstack.subtract(1);
+// }
2020-06-26 01:38:24 +02:00
+ // Paper end - moved up
2018-08-17 23:55:40 +02:00
2020-06-26 01:38:24 +02:00
return InteractionResultWrapper.a(itemstack, world.s_());
2019-12-15 19:25:10 +01:00
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemExpBottle.java b/src/main/java/net/minecraft/world/item/ItemExpBottle.java
2021-03-16 16:50:45 +01:00
index 3f41fe5bf1a0cc283d6a72824779026fdad75708..cf36ec4769dc316e3ed16262043cb78cbba340ab 100644
2021-03-16 08:19:45 +01:00
--- a/src/main/java/net/minecraft/world/item/ItemExpBottle.java
+++ b/src/main/java/net/minecraft/world/item/ItemExpBottle.java
2021-03-16 16:50:45 +01:00
@@ -1,10 +1,13 @@
package net.minecraft.world.item;
+import net.minecraft.server.level.EntityPlayer;
import net.minecraft.sounds.SoundCategory;
import net.minecraft.sounds.SoundEffects;
import net.minecraft.stats.StatisticList;
import net.minecraft.world.EnumHand;
+import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.InteractionResultWrapper;
+import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.entity.projectile.EntityThrownExpBottle;
import net.minecraft.world.level.World;
@@ -24,19 +27,38 @@ public class ItemExpBottle extends Item {
2018-08-17 23:55:40 +02:00
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
ItemStack itemstack = entityhuman.b(enumhand);
2018-09-01 00:56:57 +02:00
2020-06-26 01:38:24 +02:00
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemExpBottle.RANDOM.nextFloat() * 0.4F + 0.8F));
+ //world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemExpBottle.RANDOM.nextFloat() * 0.4F + 0.8F)); // Paper - moved down
2018-08-17 23:55:40 +02:00
if (!world.isClientSide) {
EntityThrownExpBottle entitythrownexpbottle = new EntityThrownExpBottle(world, entityhuman);
2019-01-01 04:15:55 +01:00
2019-04-30 03:20:24 +02:00
entitythrownexpbottle.setItem(itemstack);
2018-08-17 23:55:40 +02:00
entitythrownexpbottle.a(entityhuman, entityhuman.pitch, entityhuman.yaw, -20.0F, 0.7F, 1.0F);
- world.addEntity(entitythrownexpbottle);
+ // 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(itemstack), (org.bukkit.entity.Projectile) entitythrownexpbottle.getBukkitEntity());
+ if (event.callEvent() && world.addEntity(entitythrownexpbottle)) {
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
+ } else if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
+ }
+
2019-12-15 19:25:10 +01:00
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
2018-08-17 23:55:40 +02:00
+ } else {
+ if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
+ }
2019-12-15 19:25:10 +01:00
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
2018-08-17 23:55:40 +02:00
+ }
+ // Paper end
}
2019-12-15 19:25:10 +01:00
+ /* // Paper start - moved up
2018-08-17 23:55:40 +02:00
entityhuman.b(StatisticList.ITEM_USED.b(this));
2019-12-15 19:25:10 +01:00
if (!entityhuman.abilities.canInstantlyBuild) {
itemstack.subtract(1);
}
+ */ // Paper end
2020-06-26 01:38:24 +02:00
return InteractionResultWrapper.a(itemstack, world.s_());
2019-12-15 19:25:10 +01:00
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemFireworks.java b/src/main/java/net/minecraft/world/item/ItemFireworks.java
2021-03-16 16:50:45 +01:00
index 79e9be800385b94c4493bd8970620d76bfbd65ae..e7f958d137257da912ce9b83db017b4423959943 100644
2021-03-16 08:19:45 +01:00
--- a/src/main/java/net/minecraft/world/item/ItemFireworks.java
+++ b/src/main/java/net/minecraft/world/item/ItemFireworks.java
2021-03-16 16:50:45 +01:00
@@ -3,6 +3,7 @@ package net.minecraft.world.item;
import java.util.Arrays;
import java.util.Comparator;
import net.minecraft.core.EnumDirection;
+import net.minecraft.server.level.EntityPlayer;
import net.minecraft.world.EnumHand;
import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.InteractionResultWrapper;
@@ -29,8 +30,12 @@ public class ItemFireworks extends Item {
2020-10-27 23:01:32 +01:00
EntityFireworks entityfireworks = new EntityFireworks(world, itemactioncontext.getEntity(), vec3d.x + (double) enumdirection.getAdjacentX() * 0.15D, vec3d.y + (double) enumdirection.getAdjacentY() * 0.15D, vec3d.z + (double) enumdirection.getAdjacentZ() * 0.15D, itemstack);
entityfireworks.spawningEntity = itemactioncontext.getEntity().getUniqueID(); // Paper
- world.addEntity(entityfireworks);
- itemstack.subtract(1);
+ // Paper start - PlayerLaunchProjectileEvent
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) itemactioncontext.getEntity().getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Firework) entityfireworks.getBukkitEntity());
+ if (!event.callEvent() || !world.addEntity(entityfireworks)) return EnumInteractionResult.PASS;
+ if (event.shouldConsume() && !itemactioncontext.getEntity().abilities.canInstantlyBuild) itemstack.subtract(1);
+ else if (itemactioncontext.getEntity() instanceof EntityPlayer) ((EntityPlayer) itemactioncontext.getEntity()).getBukkitEntity().updateInventory();
+ // Paper end
}
return EnumInteractionResult.a(world.isClientSide);
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemLingeringPotion.java b/src/main/java/net/minecraft/world/item/ItemLingeringPotion.java
2021-03-16 16:50:45 +01:00
index a75f374f0639e8143772aa863666afe25d2020cf..0e073a8c23d24afb8b0198a9cfd8dc7d0b9d0a6b 100644
2021-03-16 08:19:45 +01:00
--- a/src/main/java/net/minecraft/world/item/ItemLingeringPotion.java
+++ b/src/main/java/net/minecraft/world/item/ItemLingeringPotion.java
2021-03-16 16:50:45 +01:00
@@ -3,6 +3,7 @@ package net.minecraft.world.item;
import net.minecraft.sounds.SoundCategory;
import net.minecraft.sounds.SoundEffects;
import net.minecraft.world.EnumHand;
+import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.InteractionResultWrapper;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.level.World;
@@ -15,7 +16,12 @@ public class ItemLingeringPotion extends ItemPotionThrowable {
2019-12-15 19:25:10 +01:00
2019-04-30 03:20:24 +02:00
@Override
2018-08-17 23:55:40 +02:00
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
2020-06-26 01:38:24 +02:00
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_LINGERING_POTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemLingeringPotion.RANDOM.nextFloat() * 0.4F + 0.8F));
2019-12-15 19:25:10 +01:00
- return super.a(world, entityhuman, enumhand);
+ // Paper start
+ InteractionResultWrapper<ItemStack> wrapper = super.a(world, entityhuman, enumhand);
2020-06-26 01:38:24 +02:00
+ if (wrapper.getResult() != EnumInteractionResult.FAIL) {
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_LINGERING_POTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemLingeringPotion.RANDOM.nextFloat() * 0.4F + 0.8F));
+ }
2019-12-15 19:25:10 +01:00
+ return wrapper;
+ // Paper end
}
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemPotionThrowable.java b/src/main/java/net/minecraft/world/item/ItemPotionThrowable.java
2021-03-16 16:50:45 +01:00
index d050243946ad7023d5dd3958d7056cddcaf185a4..27c61fc4e61b0d76565ca6893514b3c73247c954 100644
2021-03-16 08:19:45 +01:00
--- a/src/main/java/net/minecraft/world/item/ItemPotionThrowable.java
+++ b/src/main/java/net/minecraft/world/item/ItemPotionThrowable.java
2021-03-16 16:50:45 +01:00
@@ -1,7 +1,9 @@
package net.minecraft.world.item;
+import net.minecraft.server.level.EntityPlayer;
import net.minecraft.stats.StatisticList;
import net.minecraft.world.EnumHand;
+import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.InteractionResultWrapper;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.entity.projectile.EntityPotion;
@@ -22,13 +24,31 @@ public class ItemPotionThrowable extends ItemPotion {
2019-01-01 04:15:55 +01:00
2019-12-15 19:25:10 +01:00
entitypotion.setItem(itemstack);
2018-08-17 23:55:40 +02:00
entitypotion.a(entityhuman, entityhuman.pitch, entityhuman.yaw, -20.0F, 0.5F, 1.0F);
- world.addEntity(entitypotion);
+ // 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(itemstack), (org.bukkit.entity.Projectile) entitypotion.getBukkitEntity());
+ if (event.callEvent() && world.addEntity(entitypotion)) {
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
+ } else if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
+ }
+
2019-12-15 19:25:10 +01:00
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
2018-08-17 23:55:40 +02:00
+ } else {
+ if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
+ }
2019-12-15 19:25:10 +01:00
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
2018-08-17 23:55:40 +02:00
+ }
+ // Paper end
}
2019-12-15 19:25:10 +01:00
+ /* // Paper start - moved up
2018-08-17 23:55:40 +02:00
entityhuman.b(StatisticList.ITEM_USED.b(this));
2019-12-15 19:25:10 +01:00
if (!entityhuman.abilities.canInstantlyBuild) {
itemstack.subtract(1);
}
+ */ // Paper end
2020-06-26 01:38:24 +02:00
return InteractionResultWrapper.a(itemstack, world.s_());
2019-12-15 19:25:10 +01:00
}
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemSnowball.java b/src/main/java/net/minecraft/world/item/ItemSnowball.java
index e5200b2a7d6d5c2d549e585ed157ec5217edae8e..8a1d59cb1ea5a8959c52272aa762ec35307246d7 100644
--- a/src/main/java/net/minecraft/world/item/ItemSnowball.java
+++ b/src/main/java/net/minecraft/world/item/ItemSnowball.java
@@ -26,14 +26,20 @@ public class ItemSnowball extends Item {
2018-08-17 23:55:40 +02:00
2019-04-30 03:20:24 +02:00
entitysnowball.setItem(itemstack);
2018-08-17 23:55:40 +02:00
entitysnowball.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
- if (world.addEntity(entitysnowball)) {
- if (!entityhuman.abilities.canInstantlyBuild) {
+ // 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(itemstack), (org.bukkit.entity.Projectile) entitysnowball.getBukkitEntity());
+ if (event.callEvent() && world.addEntity(entitysnowball)) {
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
2020-06-26 01:38:24 +02:00
+ // Paper end
2018-08-17 23:55:40 +02:00
itemstack.subtract(1);
2021-03-16 08:19:45 +01:00
+ } else if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) { // Paper
+ ((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory(); // Paper
2018-08-17 23:55:40 +02:00
}
2020-06-26 01:38:24 +02:00
world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemSnowball.RANDOM.nextFloat() * 0.4F + 0.8F));
2021-03-16 08:19:45 +01:00
- } else if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) {
- ((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
2020-06-26 01:38:24 +02:00
+ } else { // Paper
2021-03-16 08:19:45 +01:00
+ if (entityhuman instanceof net.minecraft.server.level.EntityPlayer) ((net.minecraft.server.level.EntityPlayer) entityhuman).getBukkitEntity().updateInventory(); // Paper
+ return new InteractionResultWrapper<ItemStack>(net.minecraft.world.EnumInteractionResult.FAIL, itemstack); // Paper
2018-08-17 23:55:40 +02:00
}
}
// CraftBukkit end
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/item/ItemSplashPotion.java b/src/main/java/net/minecraft/world/item/ItemSplashPotion.java
2021-03-16 16:50:45 +01:00
index 98f29fac4bf087ad15f1cc7e85b408e22ec07efd..971491a461ccb7a707c6ca1a5b7c16d8823a7a80 100644
2021-03-16 08:19:45 +01:00
--- a/src/main/java/net/minecraft/world/item/ItemSplashPotion.java
+++ b/src/main/java/net/minecraft/world/item/ItemSplashPotion.java
2021-03-16 16:50:45 +01:00
@@ -3,6 +3,7 @@ package net.minecraft.world.item;
import net.minecraft.sounds.SoundCategory;
import net.minecraft.sounds.SoundEffects;
import net.minecraft.world.EnumHand;
+import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.InteractionResultWrapper;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.level.World;
@@ -15,7 +16,12 @@ public class ItemSplashPotion extends ItemPotionThrowable {
2019-12-15 19:25:10 +01:00
2019-04-30 03:20:24 +02:00
@Override
2018-08-17 23:55:40 +02:00
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
2019-12-15 19:25:10 +01:00
+ // Paper start
+ InteractionResultWrapper<ItemStack> wrapper = super.a(world, entityhuman, enumhand);
2020-06-26 01:38:24 +02:00
+ if (wrapper.getResult() != EnumInteractionResult.FAIL) {
world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SPLASH_POTION_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (ItemSplashPotion.RANDOM.nextFloat() * 0.4F + 0.8F));
- return super.a(world, entityhuman, enumhand);
+ }
2019-12-15 19:25:10 +01:00
+ return wrapper;
+ // Paper end
}
}