aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrepo-alt <wvk17@yandex.ru>2021-01-07 19:31:12 +0300
committerGitHub <noreply@github.com>2021-01-07 17:31:12 +0100
commit53db33a070b479112c82c579ca7b033372629dda (patch)
treed7a3f88ab121075c044488352a5040f9f2e1d439 /src
parent7355c94bf2b9938765e7b2f6ccaa42e292d648c2 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java37
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java5
2 files changed, 26 insertions, 16 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);
}
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;