From d6c2e9fd582594f9e19f732398d1c16d20d3b38e Mon Sep 17 00:00:00 2001 From: Draknyte1 Date: Thu, 20 Oct 2016 20:04:45 +1000 Subject: + Added the Advanced workbench. + Added custom slots for the Adv. Workbench, that take either tools or IElectricItems. % Swapped the textures on most multiblocks/casings. --- .../gtPlusPlus/core/slots/SlotGtToolElectric.java | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/Java/gtPlusPlus/core/slots/SlotGtToolElectric.java (limited to 'src/Java/gtPlusPlus/core/slots/SlotGtToolElectric.java') diff --git a/src/Java/gtPlusPlus/core/slots/SlotGtToolElectric.java b/src/Java/gtPlusPlus/core/slots/SlotGtToolElectric.java new file mode 100644 index 0000000000..461fa6ff04 --- /dev/null +++ b/src/Java/gtPlusPlus/core/slots/SlotGtToolElectric.java @@ -0,0 +1,98 @@ +package gtPlusPlus.core.slots; + +import gregtech.api.items.GT_MetaGenerated_Tool; +import gtPlusPlus.core.util.Utils; +import ic2.api.info.Info; +import ic2.api.item.ElectricItem; +import ic2.api.item.IElectricItem; +import net.minecraft.init.Items; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class SlotGtToolElectric extends SlotGtTool { + public int tier; + private ItemStack content; + + public SlotGtToolElectric(IInventory base, int x, int y, int z, int tier, boolean allowRedstoneDust) + { + super(base, x, y, z); + this.tier = tier; + this.allowRedstoneDust = allowRedstoneDust; + } + + public boolean accepts(ItemStack stack) + { + if (stack == null) { + return false; + } + if ((stack.getItem() == Items.redstone) && (!this.allowRedstoneDust)) { + return false; + } + return (Info.itemEnergy.getEnergyValue(stack) > 0.0D) || (ElectricItem.manager.discharge(stack, (1.0D / 0.0D), 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."); + } + ItemStack stack = get(0); + if (stack == null) { + return 0.0D; + } + 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 -= 1; + if (stack.stackSize <= 0) { + put(0, null); + } + } + return realAmount; + } + + public void setTier(int tier1) + { + this.tier = tier1; + } + + public boolean allowRedstoneDust = true; + + public ItemStack get() + { + return get(0); + } + + public ItemStack get(int index) + { + return this.content; + } + + public void put(ItemStack content) + { + put(0, content); + } + + public void put(int index, ItemStack content) + { + this.content = content; + onChanged(); + } + + public void onChanged() {} + + @Override + public boolean isItemValid(ItemStack itemstack) { + if (itemstack.getItem() instanceof GT_MetaGenerated_Tool || itemstack.getItem() instanceof IElectricItem){ + Utils.LOG_WARNING(itemstack.getDisplayName()+" is a valid Tool."); + return true; + } + Utils.LOG_WARNING(itemstack.getDisplayName()+" is not a valid Tool."); + return false; + } + +} -- cgit