From bb3bf76bb4a20214a39ac89a67494b5e38089d5a Mon Sep 17 00:00:00 2001 From: Prototik Date: Sun, 18 May 2014 16:46:14 +0800 Subject: [PATCH] Fix possible NPE and crashes --- common/buildcraft/builders/ItemBlueprint.java | 3 +++ common/buildcraft/core/utils/NBTUtils.java | 3 +++ .../buildcraft/silicon/TileAssemblyTable.java | 3 +++ common/buildcraft/transport/ItemFacade.java | 26 +++++++++++-------- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/common/buildcraft/builders/ItemBlueprint.java b/common/buildcraft/builders/ItemBlueprint.java index 22137b50..aff8c238 100644 --- a/common/buildcraft/builders/ItemBlueprint.java +++ b/common/buildcraft/builders/ItemBlueprint.java @@ -73,6 +73,9 @@ public abstract class ItemBlueprint extends ItemBuildCraft { public static BlueprintId getId (ItemStack stack) { NBTTagCompound nbt = NBTUtils.getItemData(stack); + if (nbt == null) { + return null; + } BlueprintId id = new BlueprintId (); id.read (nbt); diff --git a/common/buildcraft/core/utils/NBTUtils.java b/common/buildcraft/core/utils/NBTUtils.java index 37786fdd..7fdec735 100644 --- a/common/buildcraft/core/utils/NBTUtils.java +++ b/common/buildcraft/core/utils/NBTUtils.java @@ -23,6 +23,9 @@ public final class NBTUtils { } public static NBTTagCompound getItemData(ItemStack stack) { + if (stack == null) { + return null; + } NBTTagCompound nbt = stack.getTagCompound(); if (nbt == null) { nbt = new NBTTagCompound(); diff --git a/common/buildcraft/silicon/TileAssemblyTable.java b/common/buildcraft/silicon/TileAssemblyTable.java index af72f1d5..eac84161 100644 --- a/common/buildcraft/silicon/TileAssemblyTable.java +++ b/common/buildcraft/silicon/TileAssemblyTable.java @@ -149,6 +149,9 @@ public class TileAssemblyTable extends TileLaserTableBase implements IMachine, I NBTTagCompound cpt = list.getCompoundTagAt(i); ItemStack stack = ItemStack.loadItemStackFromNBT(cpt); + if (stack == null) { + continue; + } for (AssemblyRecipe r : AssemblyRecipeManager.INSTANCE.getRecipes()) { if (r.output.getItem() == stack.getItem() && r.output.getItemDamage() == stack.getItemDamage()) { diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index b7798666..86f0bc23 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -216,19 +216,23 @@ public class ItemFacade extends ItemBuildCraft { } private static boolean isBlockValidForFacade(Block block) { - if (block.getRenderType() != 0 && block.getRenderType() != 31) { + try { + if (block.getRenderType() != 0 && block.getRenderType() != 31) { + return false; + } + + if (block.getBlockBoundsMaxX() != 1.0 || block.getBlockBoundsMaxY() != 1.0 || block.getBlockBoundsMaxZ() != 1.0) { + return false; + } + + if (block instanceof BlockSpring || block instanceof BlockGenericPipe) { + return false; + } + + return true; + } catch (Throwable ignored) { return false; } - - if (block.getBlockBoundsMaxX() != 1.0 || block.getBlockBoundsMaxY() != 1.0 || block.getBlockBoundsMaxZ() != 1.0) { - return false; - } - - if (block instanceof BlockSpring || block instanceof BlockGenericPipe) { - return false; - } - - return true; } // GETTERS FOR FACADE DATA