From 427b335cac9ab8f30636f23cb2c5d59f4720da15 Mon Sep 17 00:00:00 2001 From: matyrobbrt Date: Thu, 21 Jul 2022 00:35:37 +0300 Subject: [PATCH] Fix crossbows not firing ArrowLooseEvent (#8887) --- .../net/minecraft/world/item/CrossbowItem.java.patch | 10 ++++++++++ .../event/entity/player/ArrowLooseEvent.java | 1 + 2 files changed, 11 insertions(+) create mode 100644 patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch diff --git a/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch b/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch new file mode 100644 index 0000000000..f659deca02 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/item/CrossbowItem.java ++++ b/net/minecraft/world/item/CrossbowItem.java +@@ -241,6 +_,7 @@ + } + + public static void m_40887_(Level p_40888_, LivingEntity p_40889_, InteractionHand p_40890_, ItemStack p_40891_, float p_40892_, float p_40893_) { ++ if (p_40889_ instanceof Player player && net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_40891_, p_40889_.f_19853_, player, 1, true) < 0) return; + List list = m_40941_(p_40891_); + float[] afloat = m_220023_(p_40889_.m_217043_()); + diff --git a/src/main/java/net/minecraftforge/event/entity/player/ArrowLooseEvent.java b/src/main/java/net/minecraftforge/event/entity/player/ArrowLooseEvent.java index a6bf884f95..514a5deb54 100644 --- a/src/main/java/net/minecraftforge/event/entity/player/ArrowLooseEvent.java +++ b/src/main/java/net/minecraftforge/event/entity/player/ArrowLooseEvent.java @@ -24,6 +24,7 @@ import org.jetbrains.annotations.NotNull; *
* This event is {@link Cancelable}.
* If this event is canceled, the player does not stop using the bow.
+ * For crossbows, the charge will always be 1; Set it to -1 in order to prevent firing the arrow.
*
* This event does not have a result. {@link HasResult}
*