diff options
author | repo-alt <wvk17@yandex.ru> | 2021-01-07 19:31:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-07 17:31:12 +0100 |
commit | 53db33a070b479112c82c579ca7b033372629dda (patch) | |
tree | d7a3f88ab121075c044488352a5040f9f2e1d439 | |
parent | 7355c94bf2b9938765e7b2f6ccaa42e292d648c2 (diff) | |
download | GT5-Unofficial-53db33a070b479112c82c579ca7b033372629dda.tar.gz GT5-Unofficial-53db33a070b479112c82c579ca7b033372629dda.tar.bz2 GT5-Unofficial-53db33a070b479112c82c579ca7b033372629dda.zip |
fixed item detector cover on quantum chests (#398)
Co-authored-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>
3 files changed, 26 insertions, 17 deletions
diff --git a/build.properties b/build.properties index ee528ac761..72b8c07bd4 100644 --- a/build.properties +++ b/build.properties @@ -1,7 +1,6 @@ minecraft.version=1.7.10 forge.version=10.13.4.1614-1.7.10 gt.version=5.09.34.06 - ae2.version=rv3-beta-22 applecore.version=1.7.10-1.2.1+107.59407 buildcraft.version=7.1.11 diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index 83b03b65a5..29c752ddf9 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -7,6 +7,7 @@ import gregtech.api.gui.widgets.GT_GuiIcon; import gregtech.api.gui.widgets.GT_GuiIconCheckButton; import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IDigitalChest; import gregtech.api.net.GT_Packet_TileEntityCover; import gregtech.api.util.GT_CoverBehavior; import gregtech.api.util.GT_Utility; @@ -34,20 +35,26 @@ public class GT_Cover_ItemMeter else if (aCoverVariable > 1) aCoverVariable = CONVERTED_BIT | Math.min((aCoverVariable - 2), SLOT_MASK); - int[] tSlots; - if ((aCoverVariable & SLOT_MASK) > 0) - tSlots = new int[]{(aCoverVariable & SLOT_MASK) - 1}; - else - tSlots = aTileEntity.getAccessibleSlotsFromSide(aSide); - - int tMax = 0; - int tUsed = 0; - for (int i : tSlots) { - if (i >= 0 && i < aTileEntity.getSizeInventory()) { - tMax+=64; - ItemStack tStack = aTileEntity.getStackInSlot(i); - if (tStack != null) - tUsed += (tStack.stackSize<<6)/tStack.getMaxStackSize(); + long tMax = 0; + long tUsed = 0; + if (aTileEntity instanceof IDigitalChest) { + IDigitalChest dc = (IDigitalChest)aTileEntity; + tMax = dc.getMaxItemCount(); // currently it is limited by int, but there is not much reason for that + ItemStack[] inv = dc.getStoredItemData(); + if (inv != null && inv.length > 1 && inv[1] != null) + tUsed = inv[1].stackSize; + } else { + int[] tSlots = (aCoverVariable & SLOT_MASK) > 0 ? + new int[] {(aCoverVariable & SLOT_MASK) - 1} : + aTileEntity.getAccessibleSlotsFromSide(aSide); + + for (int i : tSlots) { + if (i >= 0 && i < aTileEntity.getSizeInventory()) { + tMax += 64; + ItemStack tStack = aTileEntity.getStackInSlot(i); + if (tStack != null) + tUsed += (tStack.stackSize << 6) / tStack.getMaxStackSize(); + } } } @@ -169,7 +176,7 @@ public class GT_Cover_ItemMeter else maxSlot = -1; - if (maxSlot == -1) + if (maxSlot == -1 || tile instanceof IDigitalChest) intSlot.setEnabled(false); } diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java index 606733658b..e9aa20e5ab 100644 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java +++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java @@ -168,7 +168,10 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti public int getMaxItemCount() { return CommonSizeCompute(mTier); } - + @Override + public ItemStack[] getStoredItemData() { + return mInventory; + } @Override public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { return aIndex == 1; |