From 0d13fe245d032b81bdfa5b65024c867c09845cce Mon Sep 17 00:00:00 2001 From: LexManos Date: Wed, 4 May 2016 22:29:00 -0700 Subject: [PATCH] Add NPE protection to in-hand item rendering. --- .../client/renderer/ItemRenderer.java.patch | 9 +++++ .../entity/EntityLivingBase.java.patch | 35 ++++++++----------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch index d0f3d8a146..af69531d01 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch @@ -1,5 +1,14 @@ --- ../src-base/minecraft/net/minecraft/client/renderer/ItemRenderer.java +++ ../src-work/minecraft/net/minecraft/client/renderer/ItemRenderer.java +@@ -316,7 +316,7 @@ + { + ItemStack itemstack = abstractclientplayer.func_184607_cu(); + +- if (itemstack.func_77973_b() == Items.field_151031_f) ++ if (itemstack != null && itemstack.func_77973_b() == Items.field_151031_f) //Forge: Data watcher can desync and cause this to NPE... + { + EnumHand enumhand1 = abstractclientplayer.func_184600_cs(); + flag = enumhand1 == EnumHand.MAIN_HAND; @@ -360,7 +360,7 @@ this.func_187456_a(p_187457_7_, p_187457_5_, enumhandside); } diff --git a/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch b/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch index 1715d44ced..314387c0c4 100644 --- a/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch +++ b/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch @@ -232,33 +232,28 @@ public abstract EnumHandSide func_184591_cq(); public boolean func_184587_cr() -@@ -2369,8 +2435,16 @@ - { - ItemStack itemstack = this.func_184586_b(this.func_184600_cs()); +@@ -2371,12 +2437,19 @@ -- if (itemstack == this.field_184627_bm) -+ if (itemstack == this.field_184627_bm && itemstack != null) + if (itemstack == this.field_184627_bm) { -+ field_184628_bn = net.minecraftforge.event.ForgeEventFactory.onItemUseTick(this, field_184627_bm, field_184628_bn); -+ if (field_184628_bn <= 0) ++ if (this.field_184627_bm != null) + { -+ this.func_71036_o(); ++ field_184628_bn = net.minecraftforge.event.ForgeEventFactory.onItemUseTick(this, field_184627_bm, field_184628_bn); ++ if (field_184628_bn > 0) ++ field_184627_bm.func_77973_b().onUsingTick(field_184627_bm, this, field_184628_bn); + } -+ else -+ { // Forge Keep unindented to lower patch -+ field_184627_bm.func_77973_b().onUsingTick(field_184627_bm, this, field_184628_bn); //Forge Added ++ if (this.func_184605_cv() <= 25 && this.func_184605_cv() % 4 == 0) { this.func_184584_a(this.field_184627_bm, 5); -@@ -2380,6 +2454,7 @@ + } + +- if (--this.field_184628_bn == 0 && !this.field_70170_p.field_72995_K) ++ if (--this.field_184628_bn <= 0 && !this.field_70170_p.field_72995_K) { this.func_71036_o(); } -+ } - } - else - { -@@ -2394,8 +2469,10 @@ +@@ -2394,8 +2467,10 @@ if (itemstack != null && !this.func_184587_cr()) { @@ -270,7 +265,7 @@ if (!this.field_70170_p.field_72995_K) { -@@ -2478,6 +2555,8 @@ +@@ -2478,6 +2553,8 @@ this.func_184584_a(this.field_184627_bm, 16); ItemStack itemstack = this.field_184627_bm.func_77950_b(this.field_70170_p, this); @@ -279,7 +274,7 @@ if (itemstack != null && itemstack.field_77994_a == 0) { itemstack = null; -@@ -2507,7 +2586,8 @@ +@@ -2507,7 +2584,8 @@ { if (this.field_184627_bm != null) { @@ -289,7 +284,7 @@ } this.func_184602_cy(); -@@ -2626,4 +2706,28 @@ +@@ -2626,4 +2704,28 @@ { return true; }