summaryrefslogtreecommitdiffstats
path: root/nms-patches/ItemSnowball.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nms-patches/ItemSnowball.patch')
-rw-r--r--nms-patches/ItemSnowball.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/nms-patches/ItemSnowball.patch b/nms-patches/ItemSnowball.patch
new file mode 100644
index 00000000..62b259f5
--- /dev/null
+++ b/nms-patches/ItemSnowball.patch
@@ -0,0 +1,33 @@
+--- a/net/minecraft/server/ItemSnowball.java
++++ b/net/minecraft/server/ItemSnowball.java
+@@ -8,17 +8,27 @@
+ }
+
+ public InteractionResultWrapper<ItemStack> a(ItemStack itemstack, World world, EntityHuman entityhuman, EnumHand enumhand) {
+- if (!entityhuman.abilities.canInstantlyBuild) {
++ // CraftBukkit start - moved down
++ /*if (!entityhuman.abilities.canInstantlyBuild) {
+ --itemstack.count;
+ }
+
+- world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.fG, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemSnowball.i.nextFloat() * 0.4F + 0.8F));
++ world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.fG, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemSnowball.i.nextFloat() * 0.4F + 0.8F));*/
+ if (!world.isClientSide) {
+ EntitySnowball entitysnowball = new EntitySnowball(world, entityhuman);
+
+ entitysnowball.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
+- world.addEntity(entitysnowball);
++ if (world.addEntity(entitysnowball)) {
++ if (!entityhuman.abilities.canInstantlyBuild) {
++ --itemstack.count;
++ }
++
++ world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.fG, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemSnowball.i.nextFloat() * 0.4F + 0.8F));
++ } else if (entityhuman instanceof EntityPlayer) {
++ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
++ }
+ }
++ // CraftBukkit end
+
+ entityhuman.b(StatisticList.b((Item) this));
+ return new InteractionResultWrapper(EnumInteractionResult.SUCCESS, itemstack);