aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
diff options
context:
space:
mode:
authorKiwi <42833050+Kiwi233@users.noreply.github.com>2021-07-05 22:06:44 +0800
committerGitHub <noreply@github.com>2021-07-05 22:06:44 +0800
commit4eaefbb5455dc3402b43dcbf6cba208cea4e301a (patch)
treeb7e34b2e20af663cdd72c616fd7424301304e3e4 /src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
parent36406947fc5c0de1ee71da2644ec057b5fbc8d25 (diff)
parent703a8930bee25b1f908e9c4ea4f52cef24337d03 (diff)
downloadGT5-Unofficial-4eaefbb5455dc3402b43dcbf6cba208cea4e301a.tar.gz
GT5-Unofficial-4eaefbb5455dc3402b43dcbf6cba208cea4e301a.tar.bz2
GT5-Unofficial-4eaefbb5455dc3402b43dcbf6cba208cea4e301a.zip
Merge pull request #3 from GTNewHorizons/experimental
gregtech-5.09.35.00
Diffstat (limited to 'src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java59
1 files changed, 38 insertions, 21 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..5d26f2079e 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
@@ -10,20 +10,22 @@ import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.net.GT_Packet_TileEntityCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase;
+
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.Fluid;
-public class GT_Cover_ItemMeter
- extends GT_CoverBehavior {
+public class GT_Cover_ItemMeter extends GT_CoverBehavior {
// format:
private static final int SLOT_MASK = 0x3FFFFFF; // 0 = all, 1 = 0 ...
private static final int CONVERTED_BIT = 0x80000000;
private static final int INVERT_BIT = 0x40000000;
+ @Override
public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
//Convert from ver. 5.09.33.50
if ((CONVERTED_BIT & aCoverVariable) == 0)
@@ -34,20 +36,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 GT_MetaTileEntity_DigitalChestBase) {
+ GT_MetaTileEntity_DigitalChestBase dc = (GT_MetaTileEntity_DigitalChestBase)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();
+ }
}
}
@@ -61,6 +69,7 @@ public class GT_Cover_ItemMeter
return aCoverVariable;
}
+ @Override
public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (aPlayer.isSneaking()) {
if ((aCoverVariable & INVERT_BIT) == INVERT_BIT) {
@@ -85,34 +94,42 @@ public class GT_Cover_ItemMeter
return CONVERTED_BIT | (aCoverVariable & INVERT_BIT) | slot;
}
+ @Override
public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
return true;
}
+ @Override
public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return true;
}
+ @Override
public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return 5;
}
@@ -139,10 +156,10 @@ public class GT_Cover_ItemMeter
private final GT_GuiFakeItemButton intSlotIcon;
private int coverVariable;
- private final static int startX = 10;
- private final static int startY = 25;
- private final static int spaceX = 18;
- private final static int spaceY = 18;
+ private static final int startX = 10;
+ private static final int startY = 25;
+ private static final int spaceX = 18;
+ private static final int spaceY = 18;
private final int maxSlot;
@@ -169,7 +186,7 @@ public class GT_Cover_ItemMeter
else
maxSlot = -1;
- if (maxSlot == -1)
+ if (maxSlot == -1 || tile instanceof GT_MetaTileEntity_DigitalChestBase)
intSlot.setEnabled(false);
}