diff options
author | miozune <miozune@gmail.com> | 2023-01-11 02:16:23 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-10 18:16:23 +0100 |
commit | 097e3427100cad0e0ceace4e2059188fa8e96f39 (patch) | |
tree | c5a32d3a8605c78355273d46a88fb9d69241b7df | |
parent | 5a3a3e231e3b55eb28471564b324c0cb44737a4b (diff) | |
download | GT5-Unofficial-097e3427100cad0e0ceace4e2059188fa8e96f39.tar.gz GT5-Unofficial-097e3427100cad0e0ceace4e2059188fa8e96f39.tar.bz2 GT5-Unofficial-097e3427100cad0e0ceace4e2059188fa8e96f39.zip |
Fix breaking drawer voids items (#1645)
-rw-r--r-- | src/main/java/gregtech/api/util/GT_OreDictUnificator.java | 14 | ||||
-rw-r--r-- | src/main/java/gregtech/common/GT_Proxy.java | 3 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java index bf554e57df..959707c18f 100644 --- a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java +++ b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java @@ -176,9 +176,12 @@ public class GT_OreDictUnificator { } public static ItemStack get(boolean aUseBlackList, ItemStack aStack) { + return get(aUseBlackList, aStack, false); + } + + public static ItemStack get(boolean aUseBlackList, ItemStack aStack, boolean unsafe) { if (GT_Utility.isStackInvalid(aStack)) return null; ItemData tPrefixMaterial = getAssociation(aStack); - ItemStack rStack = null; if (tPrefixMaterial == null || !tPrefixMaterial.hasValidPrefixMaterialData() || (aUseBlackList && tPrefixMaterial.mBlackListed)) return GT_Utility.copyOrNull(aStack); @@ -188,11 +191,14 @@ public class GT_OreDictUnificator { } if (tPrefixMaterial.mUnificationTarget == null) tPrefixMaterial.mUnificationTarget = sName2StackMap.get(tPrefixMaterial.toString()); - rStack = tPrefixMaterial.mUnificationTarget; + ItemStack rStack = tPrefixMaterial.mUnificationTarget; if (GT_Utility.isStackInvalid(rStack)) return GT_Utility.copyOrNull(aStack); - assert rStack != null; rStack.setTagCompound(aStack.getTagCompound()); - return GT_Utility.copyAmount(aStack.stackSize, rStack); + if (unsafe) { + return GT_Utility.copyAmountUnsafe(aStack.stackSize, rStack); + } else { + return GT_Utility.copyAmount(aStack.stackSize, rStack); + } } /** Doesn't copy the returned stack or set quantity. Be careful and do not mutate it; diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index fccdaac452..1a97ddd4d0 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -1415,7 +1415,8 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG if ((aEvent.entity != null) && (!aEvent.entity.worldObj.isRemote)) { if ((aEvent.entity instanceof EntityItem)) { ((EntityItem) aEvent.entity) - .setEntityItemStack(GT_OreDictUnificator.get(((EntityItem) aEvent.entity).getEntityItem())); + .setEntityItemStack( + GT_OreDictUnificator.get(true, ((EntityItem) aEvent.entity).getEntityItem(), true)); } if ((this.mSkeletonsShootGTArrows > 0) && (aEvent.entity.getClass() == EntityArrow.class) |