From e2c2361df87f5e2f9ce79a4735ddfae4cc84e3bf Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Thu, 9 Mar 2017 11:44:22 +0100 Subject: [PATCH] fix #3503, fix #3496, work around #3500 --- common/buildcraft/BuildCraftCore.java | 3 +++ .../core/lib/block/BlockBuildCraft.java | 6 +++++- .../core/lib/inventory/StackHelper.java | 20 +++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index fbbcb1dd..7b3377e8 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -646,6 +646,9 @@ public class BuildCraftCore extends BuildCraftMod { BuildingSlotMapIterator.MAX_PER_ITEM = builderMaxPerItemFactor; + if (miningMultiplier <= 0) + throw new RuntimeException("Please do not set the miningMultiplier to values <= 0.0!"); + if (mainConfigManager.get("general.updateCheck").getBoolean(true)) { Version.check(); } diff --git a/common/buildcraft/core/lib/block/BlockBuildCraft.java b/common/buildcraft/core/lib/block/BlockBuildCraft.java index 96bc9a3b..8b36bfb7 100644 --- a/common/buildcraft/core/lib/block/BlockBuildCraft.java +++ b/common/buildcraft/core/lib/block/BlockBuildCraft.java @@ -167,7 +167,11 @@ public abstract class BlockBuildCraft extends BlockContainer { @SideOnly(Side.CLIENT) public IIcon getIconAbsolute(int side, int metadata) { - return icons[metadata] == null ? icons[0][side] : icons[metadata][side]; + if (metadata < 0 || metadata >= icons.length || icons[metadata] == null) { + return icons[0][side]; + } else { + return icons[metadata][side]; + } } @Override diff --git a/common/buildcraft/core/lib/inventory/StackHelper.java b/common/buildcraft/core/lib/inventory/StackHelper.java index 8b256ca9..d1fd21be 100644 --- a/common/buildcraft/core/lib/inventory/StackHelper.java +++ b/common/buildcraft/core/lib/inventory/StackHelper.java @@ -194,18 +194,22 @@ public class StackHelper { if (a.getItem() != b.getItem()) { return false; } - if (matchDamage && a.getHasSubtypes()) { - if (!isWildcard(a) && !isWildcard(b)) { - if (a.getItemDamage() != b.getItemDamage()) { - return false; - } - } + + if (isWildcard(a) || isWildcard(b)) { + return true; } - if (matchNBT) { - if (a.stackTagCompound != null && !a.stackTagCompound.equals(b.stackTagCompound)) { + + if (matchDamage && a.getHasSubtypes()) { + if (a.getItemDamage() != b.getItemDamage()) { return false; } } + if (matchNBT) { + if (!ItemStack.areItemStackTagsEqual(a, b)) { + return false; + } + } + return true; }