diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerCraftingWireless.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerCraftingWireless.java index bae3b302..4dbd5b8a 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerCraftingWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerCraftingWireless.java @@ -16,7 +16,6 @@ import appeng.tile.inventory.InvOperation; import com.glodblock.github.inventory.item.IWirelessCraftTerminal; import com.glodblock.github.inventory.item.IWirelessTerminal; -import com.glodblock.github.util.Util; public class ContainerCraftingWireless extends ContainerItemMonitor implements IAEAppEngInventory, IContainerCraftingPacket { @@ -24,16 +23,10 @@ public class ContainerCraftingWireless extends ContainerItemMonitor private final IWirelessCraftTerminal it; private final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9]; private final SlotCraftingTerm outputSlot; - private final int slot; - private int ticks = 0; - private double powerMultiplier = 0.5; public ContainerCraftingWireless(final InventoryPlayer ip, final IWirelessTerminal monitorable) { super(ip, monitorable, false); this.it = (IWirelessCraftTerminal) monitorable; - final int slotIndex = monitorable.getInventorySlot(); - this.lockPlayerInventorySlot(slotIndex); - this.slot = slotIndex; final IInventory crafting = this.it.getInventoryByName("crafting"); for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { @@ -63,14 +56,9 @@ public class ContainerCraftingWireless extends ContainerItemMonitor this.onCraftMatrixChanged(crafting); } - public void detectAndSendChanges() { - this.ticks = Util - .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.it); - super.detectAndSendChanges(); - } - - private double getPowerMultiplier() { - return this.powerMultiplier; + @Override + protected boolean isWirelessTerminal() { + return true; } @Override diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidMonitor.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidMonitor.java index d75f4323..68786d71 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidMonitor.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidMonitor.java @@ -318,4 +318,9 @@ public class ContainerFluidMonitor extends FCContainerMonitor { protected boolean isEssentiaMode() { return false; } + + @Override + protected boolean isWirelessTerminal() { + return false; + } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java index 008110d4..636ef6c6 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java @@ -3,39 +3,15 @@ package com.glodblock.github.client.gui.container; import net.minecraft.entity.player.InventoryPlayer; import com.glodblock.github.inventory.item.IWirelessTerminal; -import com.glodblock.github.util.Util; public class ContainerFluidPatternExWireless extends ContainerFluidPatternTerminalEx { - private double powerMultiplier = 0.5; - private final IWirelessTerminal civ; - private int ticks = 0; - private final int slot; - public ContainerFluidPatternExWireless(InventoryPlayer ip, IWirelessTerminal monitorable) { super(ip, monitorable); - if (monitorable != null) { - final int slotIndex = monitorable.getInventorySlot(); - this.lockPlayerInventorySlot(slotIndex); - this.slot = slotIndex; - } else { - this.slot = -1; - this.lockPlayerInventorySlot(ip.currentItem); - } - this.civ = monitorable; } - public void detectAndSendChanges() { - this.ticks = Util - .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.civ); - super.detectAndSendChanges(); - } - - private double getPowerMultiplier() { - return this.powerMultiplier; - } - - void setPowerMultiplier(final double powerMultiplier) { - this.powerMultiplier = powerMultiplier; + @Override + protected boolean isWirelessTerminal() { + return true; } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternWireless.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternWireless.java index 84f125b1..063e7bdc 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternWireless.java @@ -3,39 +3,15 @@ package com.glodblock.github.client.gui.container; import net.minecraft.entity.player.InventoryPlayer; import com.glodblock.github.inventory.item.IWirelessTerminal; -import com.glodblock.github.util.Util; public class ContainerFluidPatternWireless extends ContainerFluidPatternTerminal { - private double powerMultiplier = 0.5; - private final IWirelessTerminal civ; - private int ticks = 0; - private final int slot; - public ContainerFluidPatternWireless(InventoryPlayer ip, IWirelessTerminal monitorable) { super(ip, monitorable); - if (monitorable != null) { - final int slotIndex = monitorable.getInventorySlot(); - this.lockPlayerInventorySlot(slotIndex); - this.slot = slotIndex; - } else { - this.slot = -1; - this.lockPlayerInventorySlot(ip.currentItem); - } - this.civ = monitorable; } - public void detectAndSendChanges() { - this.ticks = Util - .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.civ); - super.detectAndSendChanges(); - } - - private double getPowerMultiplier() { - return this.powerMultiplier; - } - - void setPowerMultiplier(final double powerMultiplier) { - this.powerMultiplier = powerMultiplier; + @Override + protected boolean isWirelessTerminal() { + return true; } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPortableCell.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPortableCell.java index a55f86e9..bb4dde1d 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPortableCell.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPortableCell.java @@ -3,41 +3,17 @@ package com.glodblock.github.client.gui.container; import net.minecraft.entity.player.InventoryPlayer; import com.glodblock.github.inventory.item.IFluidPortableCell; -import com.glodblock.github.util.Util; public class ContainerFluidPortableCell extends ContainerFluidMonitor { - private double powerMultiplier = 0.5; - private final IFluidPortableCell civ; - private int ticks = 0; - private final int slot; - public ContainerFluidPortableCell(final InventoryPlayer ip, final IFluidPortableCell monitorable) { super(ip, monitorable, false); - if (monitorable != null) { - final int slotIndex = monitorable.getInventorySlot(); - this.lockPlayerInventorySlot(slotIndex); - this.slot = slotIndex; - } else { - this.slot = -1; - this.lockPlayerInventorySlot(ip.currentItem); - } - this.civ = monitorable; this.bindPlayerInventory(ip, 0, 0); } @Override - public void detectAndSendChanges() { - this.ticks = Util - .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.civ); - super.detectAndSendChanges(); + protected boolean isWirelessTerminal() { + return true; } - private double getPowerMultiplier() { - return this.powerMultiplier; - } - - void setPowerMultiplier(final double powerMultiplier) { - this.powerMultiplier = powerMultiplier; - } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerInterfaceWireless.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerInterfaceWireless.java index 9d97dd49..3fe60922 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerInterfaceWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerInterfaceWireless.java @@ -14,7 +14,6 @@ import appeng.api.config.*; import appeng.api.networking.IGrid; import appeng.api.networking.IGridNode; import appeng.api.networking.security.IActionHost; -import appeng.container.AEBaseContainer; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketCompressedNBT; import appeng.helpers.DualityInterface; @@ -33,15 +32,14 @@ import appeng.util.inv.AdaptorPlayerHand; import appeng.util.inv.ItemSlot; import appeng.util.inv.WrapperInvSlot; +import com.glodblock.github.client.gui.container.base.FCBaseContainer; import com.glodblock.github.common.parts.PartFluidInterface; import com.glodblock.github.common.tile.TileFluidInterface; -import com.glodblock.github.inventory.item.IWirelessInterfaceTerminal; import com.glodblock.github.inventory.item.IWirelessTerminal; -import com.glodblock.github.util.Util; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -public class ContainerInterfaceWireless extends AEBaseContainer { +public class ContainerInterfaceWireless extends FCBaseContainer { /** * this stuff is all server side.. @@ -50,20 +48,12 @@ public class ContainerInterfaceWireless extends AEBaseContainer { private final Multimap diList = HashMultimap.create(); private final Map byId = new HashMap(); - private final IWirelessInterfaceTerminal it; // private final Map byId = new HashMap<>(); private IGrid grid; private NBTTagCompound data = new NBTTagCompound(); - private int ticks; - private final int slot; - private double powerMultiplier = 0.5; public ContainerInterfaceWireless(final InventoryPlayer ip, final IWirelessTerminal monitorable) { super(ip, monitorable); - this.it = (IWirelessInterfaceTerminal) monitorable; - final int slotIndex = monitorable.getInventorySlot(); - this.lockPlayerInventorySlot(slotIndex); - this.slot = slotIndex; if (Platform.isServer()) { this.grid = monitorable.getActionableNode().getGrid(); } @@ -81,17 +71,11 @@ public class ContainerInterfaceWireless extends AEBaseContainer { return union; } - private double getPowerMultiplier() { - return this.powerMultiplier; - } - @Override public void detectAndSendChanges() { if (Platform.isClient()) { return; } - this.ticks = Util - .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.it); super.detectAndSendChanges(); if (this.grid == null) { @@ -300,6 +284,11 @@ public class ContainerInterfaceWireless extends AEBaseContainer { } } + @Override + protected boolean isWirelessTerminal() { + return true; + } + private boolean isDifferent(final ItemStack a, final ItemStack b) { if (a == null && b == null) { return false; diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerItemMonitor.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerItemMonitor.java index 154717ee..caa1474e 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerItemMonitor.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerItemMonitor.java @@ -150,4 +150,9 @@ public class ContainerItemMonitor extends FCContainerMonitor { this.items.add(is); } } + + @Override + protected boolean isWirelessTerminal() { + return false; + } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java b/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java new file mode 100644 index 00000000..9e0b9c21 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java @@ -0,0 +1,60 @@ +package com.glodblock.github.client.gui.container.base; + +import net.minecraft.entity.player.InventoryPlayer; + +import appeng.api.storage.ITerminalHost; +import appeng.container.AEBaseContainer; + +import com.glodblock.github.inventory.item.IFluidPortableCell; +import com.glodblock.github.util.Util; + +public abstract class FCBaseContainer extends AEBaseContainer { + + private int ticks; + private final double powerMultiplier = 0.5; + private IFluidPortableCell host; + private int slot = -1; + private final InventoryPlayer ip; + + public FCBaseContainer(InventoryPlayer ip, ITerminalHost monitorable) { + super(ip, monitorable); + this.ip = ip; + if (isWirelessTerminal()) { + host = (IFluidPortableCell) monitorable; + this.slot = lockSlot(); + } + } + + private int lockSlot() { + if (isWirelessTerminal()) { + if (this.host != null) { + final int slotIndex = this.host.getInventorySlot(); + this.lockPlayerInventorySlot(slotIndex); + return slotIndex; + } else { + this.lockPlayerInventorySlot(ip.currentItem); + } + } + return -1; + } + + protected abstract boolean isWirelessTerminal(); + + public void detectAndSendChanges() { + if (isWirelessTerminal()) { + this.ticks = Util.drainItemPower( + this, + this.getPlayerInv(), + this.slot, + this.ticks, + this.getPowerMultiplier(), + this.host); + } + super.detectAndSendChanges(); + } + + public double getPowerMultiplier() { + return this.powerMultiplier; + } + +} diff --git a/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerMonitor.java b/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerMonitor.java index 5293422e..bb2d1307 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerMonitor.java +++ b/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerMonitor.java @@ -9,19 +9,16 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ICrafting; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import appeng.api.config.*; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergyGrid; -import appeng.api.parts.IPart; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEStack; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigurableObject; -import appeng.container.AEBaseContainer; import appeng.container.guisync.GuiSync; import appeng.container.slot.SlotRestrictedInput; import appeng.core.AELog; @@ -34,7 +31,7 @@ import appeng.util.Platform; import com.glodblock.github.inventory.item.IWirelessTerminal; -public abstract class FCContainerMonitor> extends AEBaseContainer +public abstract class FCContainerMonitor> extends FCBaseContainer implements IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver { protected final SlotRestrictedInput[] cellView = new SlotRestrictedInput[5]; @@ -58,10 +55,7 @@ public abstract class FCContainerMonitor> extends AEBaseCo protected FCContainerMonitor(final InventoryPlayer ip, final ITerminalHost monitorable, final boolean bindInventory) { - super( - ip, - monitorable instanceof TileEntity ? (TileEntity) monitorable : null, - monitorable instanceof IPart ? (IPart) monitorable : null); + super(ip, monitorable); this.host = monitorable; this.clientCM = new ConfigManager(this); this.clientCM.registerSetting(Settings.SORT_BY, SortOrder.NAME);