summaryrefslogtreecommitdiff
path: root/ihl/utils/IHLInvSlotDischarge.java
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
committerFoghrye4 <foghrye4@gmail.com>2016-04-11 19:44:54 +0300
commit05c78126859231a68e199dc34613689bd0978e2f (patch)
tree050bea104a18c72905095d29f31bec2935a27a24 /ihl/utils/IHLInvSlotDischarge.java
Initial commit
Diffstat (limited to 'ihl/utils/IHLInvSlotDischarge.java')
-rw-r--r--ihl/utils/IHLInvSlotDischarge.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/ihl/utils/IHLInvSlotDischarge.java b/ihl/utils/IHLInvSlotDischarge.java
new file mode 100644
index 0000000..4ebb488
--- /dev/null
+++ b/ihl/utils/IHLInvSlotDischarge.java
@@ -0,0 +1,83 @@
+package ihl.utils;
+
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import ic2.api.info.Info;
+import ic2.api.item.ElectricItem;
+import ic2.core.block.TileEntityInventory;
+import ic2.core.block.invslot.InvSlot;
+
+public class IHLInvSlotDischarge extends InvSlot
+{
+ public int tier;
+ public boolean allowRedstoneDust;
+
+ public IHLInvSlotDischarge(TileEntityInventory base, int oldStartIndex, InvSlot.Access access, int tier)
+ {
+ this(base, oldStartIndex, access, tier, InvSlot.InvSide.ANY);
+ }
+
+ public IHLInvSlotDischarge(TileEntityInventory base, int oldStartIndex, InvSlot.Access access, int tier, InvSlot.InvSide preferredSide)
+ {
+ this(base, oldStartIndex, access, tier, true, preferredSide);
+ }
+
+ public IHLInvSlotDischarge(TileEntityInventory base, int oldStartIndex, InvSlot.Access access, int tier, boolean allowRedstoneDust, InvSlot.InvSide preferredSide)
+ {
+ super(base, "discharge", oldStartIndex, access, 1, preferredSide);
+ this.allowRedstoneDust = true;
+ this.tier = tier;
+ this.allowRedstoneDust = allowRedstoneDust;
+ }
+
+ @Override
+ public boolean accepts(ItemStack stack)
+ {
+ return stack == null ? false : (stack.getItem() == Items.redstone && !this.allowRedstoneDust ? false : Info.itemEnergy.getEnergyValue(stack) > 0.0D || ElectricItem.manager.discharge(stack, Double.POSITIVE_INFINITY, this.tier, true, true, true) > 0.0D);
+ }
+
+ public double discharge(double amount, boolean ignoreLimit)
+ {
+ if (amount <= 0.0D)
+ {
+ throw new IllegalArgumentException("Amount must be > 0.");
+ }
+ else
+ {
+ ItemStack stack = this.get(0);
+
+ if (stack == null)
+ {
+ return 0.0D;
+ }
+ else
+ {
+ double realAmount = ElectricItem.manager.discharge(stack, amount, this.tier, ignoreLimit, true, false);
+
+ if (realAmount <= 0.0D)
+ {
+ realAmount = Info.itemEnergy.getEnergyValue(stack);
+
+ if (realAmount <= 0.0D)
+ {
+ return 0.0D;
+ }
+
+ --stack.stackSize;
+
+ if (stack.stackSize <= 0)
+ {
+ this.put(0, (ItemStack)null);
+ }
+ }
+
+ return realAmount;
+ }
+ }
+ }
+
+ public void setTier(int tier1)
+ {
+ this.tier = tier1;
+ }
+} \ No newline at end of file