--- ../src-base/minecraft/net/minecraft/client/particle/EffectRenderer.java
+++ ../src-work/minecraft/net/minecraft/client/particle/EffectRenderer.java
@@ -135,6 +135,7 @@
 
     public void func_78873_a(EntityFX p_78873_1_)
     {
+        if (p_78873_1_ == null) return; //Forge: Prevent modders from being bad and adding nulls causing untraceable NPEs.
         int i = p_78873_1_.func_70537_b();
         int j = p_78873_1_.func_174838_j() != 1.0F ? 0 : 1;
 
@@ -361,7 +362,7 @@
 
     public void func_180533_a(BlockPos p_180533_1_, IBlockState p_180533_2_)
     {
-        if (p_180533_2_.func_177230_c().func_149688_o() != Material.field_151579_a)
+        if (p_180533_2_.func_177230_c().isAir(field_78878_a, p_180533_1_) && !p_180533_2_.func_177230_c().addDestroyEffects(field_78878_a, p_180533_1_, this))
         {
             p_180533_2_ = p_180533_2_.func_177230_c().func_176221_a(p_180533_2_, this.field_78878_a, p_180533_1_);
             byte b0 = 4;
@@ -467,4 +468,13 @@
 
         return "" + i;
     }
+
+    public void addBlockHitEffects(BlockPos pos, net.minecraft.util.MovingObjectPosition target)
+    {
+        Block block = field_78878_a.func_180495_p(pos).func_177230_c();
+        if (block != null && !block.addHitEffects(field_78878_a, target, this))
+        {
+            func_180532_a(pos, target.field_178784_b);
+        }
+     }
 }
