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 /src/main/java/gregtech/common/covers | |
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>
Diffstat (limited to 'src/main/java/gregtech/common/covers')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java | 37 |
1 files changed, 22 insertions, 15 deletions
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); } |