diff options
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0227-PlayerReadyArrowEvent.patch')
-rw-r--r-- | Spigot-Server-Patches-Unmapped/0227-PlayerReadyArrowEvent.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Spigot-Server-Patches-Unmapped/0227-PlayerReadyArrowEvent.patch b/Spigot-Server-Patches-Unmapped/0227-PlayerReadyArrowEvent.patch new file mode 100644 index 0000000000..48c889f719 --- /dev/null +++ b/Spigot-Server-Patches-Unmapped/0227-PlayerReadyArrowEvent.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +Date: Mon, 18 Jun 2018 01:12:53 -0400 +Subject: [PATCH] PlayerReadyArrowEvent + +Called when a player is firing a bow and the server is choosing an arrow to use. +Plugins can skip selection of certain arrows and control which is used. + +diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +index 7839553662d7f1f378969d42fb7a560e489852f4..408732c59ed817c056671a78e43a734b048a818e 100644 +--- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java ++++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +@@ -2142,6 +2142,17 @@ public abstract class EntityHuman extends EntityLiving { + return ImmutableList.of(EntityPose.STANDING, EntityPose.CROUCHING, EntityPose.SWIMMING); + } + ++ // Paper start ++ protected boolean tryReadyArrow(ItemStack bow, ItemStack itemstack) { ++ return !(this instanceof EntityPlayer) || ++ new com.destroystokyo.paper.event.player.PlayerReadyArrowEvent( ++ ((EntityPlayer) this).getBukkitEntity(), ++ org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(bow), ++ org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack) ++ ).callEvent(); ++ // Paper end ++ } ++ + @Override + public ItemStack f(ItemStack itemstack) { + if (!(itemstack.getItem() instanceof ItemProjectileWeapon)) { +@@ -2158,7 +2169,7 @@ public abstract class EntityHuman extends EntityLiving { + for (int i = 0; i < this.inventory.getSize(); ++i) { + ItemStack itemstack2 = this.inventory.getItem(i); + +- if (predicate.test(itemstack2)) { ++ if (predicate.test(itemstack2) && tryReadyArrow(itemstack, itemstack2)) { // Paper + return itemstack2; + } + } |