From 603f4bd7a3657e8721ab74d4363848e337d27d78 Mon Sep 17 00:00:00 2001 From: bloodmc Date: Sat, 14 Jul 2018 17:28:42 -0400 Subject: [PATCH] Check use item result before calling onItemUseFirst. (#5016) --- .../PlayerInteractionManager.java.patch | 23 +++++++++++-------- .../entity/player/PlayerInteractEvent.java | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/patches/minecraft/net/minecraft/server/management/PlayerInteractionManager.java.patch b/patches/minecraft/net/minecraft/server/management/PlayerInteractionManager.java.patch index 431d8bc84..c14361b2c 100644 --- a/patches/minecraft/net/minecraft/server/management/PlayerInteractionManager.java.patch +++ b/patches/minecraft/net/minecraft/server/management/PlayerInteractionManager.java.patch @@ -212,7 +212,7 @@ p_187250_1_.func_184611_a(p_187250_4_, ItemStack.field_190927_a); } -@@ -402,13 +428,24 @@ +@@ -402,13 +428,27 @@ } else { @@ -222,16 +222,19 @@ + .onRightClickBlock(p_187251_1_, p_187251_4_, p_187251_5_, p_187251_6_, net.minecraftforge.common.ForgeHooks.rayTraceEyeHitVec(p_187251_1_, reachDist + 1)); + if (event.isCanceled()) return event.getCancellationResult(); + -+ EnumActionResult ret = p_187251_3_.onItemUseFirst(p_187251_1_, p_187251_2_, p_187251_5_, p_187251_4_, p_187251_6_, p_187251_7_, p_187251_8_, p_187251_9_); -+ if (ret != EnumActionResult.PASS) return ret; -+ -+ boolean bypass = p_187251_1_.func_184614_ca().doesSneakBypassUse(p_187251_2_, p_187251_5_, p_187251_1_) && p_187251_1_.func_184592_cb().doesSneakBypassUse(p_187251_2_, p_187251_5_, p_187251_1_); + EnumActionResult result = EnumActionResult.PASS; ++ if (event.getUseItem() != net.minecraftforge.fml.common.eventhandler.Event.Result.DENY) + { +- IBlockState iblockstate = p_187251_2_.func_180495_p(p_187251_5_); ++ result = p_187251_3_.onItemUseFirst(p_187251_1_, p_187251_2_, p_187251_5_, p_187251_4_, p_187251_6_, p_187251_7_, p_187251_8_, p_187251_9_); ++ if (result != EnumActionResult.PASS) return result ; ++ } + ++ boolean bypass = p_187251_1_.func_184614_ca().doesSneakBypassUse(p_187251_2_, p_187251_5_, p_187251_1_) && p_187251_1_.func_184592_cb().doesSneakBypassUse(p_187251_2_, p_187251_5_, p_187251_1_); + + if (!p_187251_1_.func_70093_af() || bypass || event.getUseBlock() == net.minecraftforge.fml.common.eventhandler.Event.Result.ALLOW) - { - IBlockState iblockstate = p_187251_2_.func_180495_p(p_187251_5_); -- ++ { ++ IBlockState iblockstate = p_187251_2_.func_180495_p(p_187251_5_); + if(event.getUseBlock() != net.minecraftforge.fml.common.eventhandler.Event.Result.DENY) if (iblockstate.func_177230_c().func_180639_a(p_187251_2_, p_187251_5_, iblockstate, p_187251_1_, p_187251_4_, p_187251_6_, p_187251_7_, p_187251_8_, p_187251_9_)) { @@ -240,7 +243,7 @@ } } -@@ -436,14 +473,22 @@ +@@ -436,14 +476,22 @@ { int j = p_187251_3_.func_77960_j(); int i = p_187251_3_.func_190916_E(); @@ -264,7 +267,7 @@ } } } -@@ -453,4 +498,16 @@ +@@ -453,4 +501,16 @@ { this.field_73092_a = p_73080_1_; } diff --git a/src/main/java/net/minecraftforge/event/entity/player/PlayerInteractEvent.java b/src/main/java/net/minecraftforge/event/entity/player/PlayerInteractEvent.java index f54eb59f1..76c8f3ab9 100644 --- a/src/main/java/net/minecraftforge/event/entity/player/PlayerInteractEvent.java +++ b/src/main/java/net/minecraftforge/event/entity/player/PlayerInteractEvent.java @@ -168,7 +168,7 @@ public class PlayerInteractEvent extends PlayerEvent } /** - * @return If {@link net.minecraft.item.Item#onItemUse} should be called + * @return If {@link net.minecraft.item.Item#onItemUseFirst} and {@link net.minecraft.item.Item#onItemUse} should be called */ public Result getUseItem() {