diff options
Diffstat (limited to 'src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java')
-rw-r--r-- | src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java | 549 |
1 files changed, 0 insertions, 549 deletions
diff --git a/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java b/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java deleted file mode 100644 index 9b6a2809d9..0000000000 --- a/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java +++ /dev/null @@ -1,549 +0,0 @@ -package binnie.craftgui.minecraft; - -import binnie.core.BinnieCore; -import binnie.core.machines.IMachine; -import binnie.core.machines.Machine; -import binnie.core.machines.network.INetwork.RecieveGuiNBT; -import binnie.core.machines.network.INetwork.SendGuiNBT; -import binnie.core.machines.power.ErrorState; -import binnie.core.machines.power.IErrorStateSource; -import binnie.core.machines.power.IPoweredMachine; -import binnie.core.machines.power.IProcess; -import binnie.core.machines.power.ITankMachine; -import binnie.core.machines.power.PowerInfo; -import binnie.core.machines.power.ProcessInfo; -import binnie.core.machines.power.TankInfo; -import binnie.core.machines.transfer.TransferRequest; -import binnie.core.machines.transfer.TransferRequest.TransferSlot; -import binnie.core.network.packet.MessageContainerUpdate; -import binnie.core.proxy.BinnieProxy; -import binnie.craftgui.minecraft.control.ControlSlot; -import binnie.craftgui.minecraft.control.EnumHighlighting; -import com.mojang.authlib.GameProfile; -import cpw.mods.fml.relauncher.Side; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -public class ContainerCraftGUI - extends Container -{ - private Window window; - - public ContainerCraftGUI(Window window) - { - this.window = window; - IMachine machine = Machine.getMachine(window.getInventory()); - if (getSide() == Side.SERVER) - { - this.inventoryItemStacks = new ListMap(); - this.inventorySlots = new ListMap(); - if (machine != null) - { - GameProfile user = machine.getOwner(); - if (user != null) - { - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("username", user.getName()); - sendNBTToClient("username", nbt); - } - } - } - } - - protected Slot addSlotToContainer(Slot slot) - { - return super.addSlotToContainer(slot); - } - - private Side getSide() - { - return this.window.isServer() ? Side.SERVER : Side.CLIENT; - } - - public Slot getSlot(int par1) - { - if ((par1 < 0) || (par1 >= this.inventorySlots.size())) { - return null; - } - return (Slot)this.inventorySlots.get(par1); - } - - public void putStackInSlot(int par1, ItemStack par2ItemStack) - { - if (getSlot(par1) != null) { - getSlot(par1).putStack(par2ItemStack); - } - } - - public void putStacksInSlots(ItemStack[] par1ArrayOfItemStack) - { - for (int i = 0; i < par1ArrayOfItemStack.length; i++) { - if (getSlot(i) != null) { - getSlot(i).putStack(par1ArrayOfItemStack[i]); - } - } - } - - public void onContainerClosed(EntityPlayer par1EntityPlayer) - { - super.onContainerClosed(par1EntityPlayer); - - WindowInventory inventory = this.window.getWindowInventory(); - for (int i = 0; i < inventory.getSizeInventory(); i++) { - if (inventory.dispenseOnClose(i)) - { - ItemStack stack = inventory.getStackInSlot(i); - if (stack != null) - { - stack = new TransferRequest(stack, par1EntityPlayer.inventory).transfer(true); - if (stack != null) { - par1EntityPlayer.dropPlayerItemWithRandomChoice(stack, false); - } - } - } - } - } - - public ItemStack slotClick(int slotNum, int mouseButton, int modifier, EntityPlayer player) - { - Slot slot = getSlot(slotNum); - if (((slot instanceof CustomSlot)) && (((CustomSlot)slot).handleClick())) - { - ((CustomSlot)slot).onSlotClick(this, mouseButton, modifier, player); - return player.inventory.getItemStack(); - } - ItemStack stack = super.slotClick(slotNum, mouseButton, modifier, player); - return stack; - } - - public void sendNBTToClient(String key, NBTTagCompound nbt) - { - this.syncedNBT.put(key, nbt); - } - - public boolean canInteractWith(EntityPlayer var1) - { - return true; - } - - public final ItemStack transferStackInSlot(EntityPlayer player, int slotID) - { - return shiftClick(player, slotID); - } - - private ItemStack shiftClick(EntityPlayer player, int slotnumber) - { - TransferRequest request = getShiftClickRequest(player, slotnumber); - if (request == null) { - return null; - } - ItemStack itemstack = request.transfer(true); - Slot shiftClickedSlot = (Slot)this.inventorySlots.get(slotnumber); - - shiftClickedSlot.putStack(itemstack); - shiftClickedSlot.onSlotChanged(); - - return null; - } - - private TransferRequest getShiftClickRequest(EntityPlayer player, int slotnumber) - { - if (slotnumber < 0) { - return null; - } - Slot shiftClickedSlot = (Slot)this.inventorySlots.get(slotnumber); - - ItemStack itemstack = null; - if (shiftClickedSlot.getHasStack()) { - itemstack = shiftClickedSlot.getStack().copy(); - } - IInventory playerInventory = player.inventory; - IInventory containerInventory = this.window.getInventory(); - IInventory windowInventory = this.window.getWindowInventory(); - - IInventory fromPlayer = containerInventory == null ? windowInventory : containerInventory; - - int[] target = new int[36]; - for (int i = 0; i < 36; i++) { - target[i] = i; - } - TransferRequest request; - TransferRequest request; - if (shiftClickedSlot.inventory == playerInventory) { - request = new TransferRequest(itemstack, fromPlayer).setOrigin(shiftClickedSlot.inventory); - } else { - request = new TransferRequest(itemstack, playerInventory).setOrigin(shiftClickedSlot.inventory).setTargetSlots(target); - } - if ((this.window instanceof IWindowAffectsShiftClick)) { - ((IWindowAffectsShiftClick)this.window).alterRequest(request); - } - return request; - } - - public final ItemStack tankClick(EntityPlayer player, int slotID) - { - if (player.inventory.getItemStack() == null) { - return null; - } - ItemStack heldItem = player.inventory.getItemStack().copy(); - - heldItem = new TransferRequest(heldItem, this.window.getInventory()).setOrigin(player.inventory).setTargetSlots(new int[0]).setTargetTanks(new int[] { slotID }).transfer(true); - - - player.inventory.setItemStack(heldItem); - if ((player instanceof EntityPlayerMP)) { - ((EntityPlayerMP)player).updateHeldItem(); - } - return heldItem; - } - - public boolean handleNBT(Side side, EntityPlayer player, String name, NBTTagCompound action) - { - if (side == Side.SERVER) - { - if (name.equals("tank-click")) { - tankClick(player, action.getByte("id")); - } - if (name.equals("slot-reg")) - { - int type = action.getByte("t"); - int index = action.getShort("i"); - int slotNumber = action.getShort("n"); - getOrCreateSlot(InventoryType.values()[(type % 4)], index, slotNumber); - } - } - if (name.contains("tank-update")) { - onTankUpdate(action); - } else if (name.equals("power-update")) { - onPowerUpdate(action); - } else if (name.equals("process-update")) { - onProcessUpdate(action); - } else if (name.equals("error-update")) { - onErrorUpdate(action); - } else if (name.equals("mouse-over-slot")) { - onMouseOverSlot(player, action); - } else if (name.equals("shift-click-info")) { - onRecieveShiftClickHighlights(player, action); - } - return false; - } - - private Map<String, NBTTagCompound> syncedNBT = new HashMap(); - private Map<String, NBTTagCompound> sentNBT = new HashMap(); - - public void detectAndSendChanges() - { - super.detectAndSendChanges(); - - - - - ITankMachine tanks = (ITankMachine)Machine.getInterface(ITankMachine.class, this.window.getInventory()); - IPoweredMachine powered = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, this.window.getInventory()); - IErrorStateSource error = (IErrorStateSource)Machine.getInterface(IErrorStateSource.class, this.window.getInventory()); - IProcess process = (IProcess)Machine.getInterface(IProcess.class, this.window.getInventory()); - if ((tanks != null) && (this.window.isServer())) { - for (int i = 0; i < tanks.getTankInfos().length; i++) - { - TankInfo tank = tanks.getTankInfos()[i]; - if (!getTankInfo(i).equals(tank)) - { - this.syncedNBT.put("tank-update-" + i, createTankNBT(i, tank)); - - this.syncedTanks.put(Integer.valueOf(i), tank); - } - } - } - if ((powered != null) && (this.window.isServer())) { - this.syncedNBT.put("power-update", createPowerNBT(powered.getPowerInfo())); - } - if ((process != null) && (this.window.isServer())) { - this.syncedNBT.put("process-update", createProcessNBT(process.getInfo())); - } - if ((error != null) && (this.window.isServer())) { - this.syncedNBT.put("error-update", createErrorNBT(error)); - } - INetwork.SendGuiNBT machineSync = (INetwork.SendGuiNBT)Machine.getInterface(INetwork.SendGuiNBT.class, this.window.getInventory()); - if (machineSync != null) { - machineSync.sendGuiNBT(this.syncedNBT); - } - Map<String, NBTTagCompound> sentThisTime = new HashMap(); - for (Map.Entry<String, NBTTagCompound> nbt : this.syncedNBT.entrySet()) - { - ((NBTTagCompound)nbt.getValue()).setString("type", (String)nbt.getKey()); - - - - - - - boolean shouldSend = true; - NBTTagCompound lastSent = (NBTTagCompound)this.sentNBT.get(nbt.getKey()); - if (lastSent != null) { - shouldSend = !lastSent.equals(nbt.getValue()); - } - if (shouldSend) - { - for (int j = 0; j < this.crafters.size(); j++) { - if ((this.crafters.get(j) instanceof EntityPlayerMP)) - { - EntityPlayerMP player = (EntityPlayerMP)this.crafters.get(j); - BinnieCore.proxy.sendToPlayer(new MessageContainerUpdate((NBTTagCompound)nbt.getValue()), player); - } - } - sentThisTime.put(nbt.getKey(), nbt.getValue()); - } - } - this.sentNBT.putAll(sentThisTime); - - this.syncedNBT.clear(); - } - - private NBTTagCompound createErrorNBT(IErrorStateSource error) - { - NBTTagCompound nbt = new NBTTagCompound(); - ErrorState state = null; - if (error.canWork() != null) - { - nbt.setByte("type", (byte)0); - state = error.canWork(); - } - else if (error.canProgress() != null) - { - nbt.setByte("type", (byte)1); - state = error.canProgress(); - } - if (state != null) { - state.writeToNBT(nbt); - } - return nbt; - } - - public NBTTagCompound createPowerNBT(PowerInfo powerInfo) - { - NBTTagCompound nbt = new NBTTagCompound(); - powerInfo.writeToNBT(nbt); - return nbt; - } - - public NBTTagCompound createProcessNBT(ProcessInfo powerInfo) - { - NBTTagCompound nbt = new NBTTagCompound(); - powerInfo.writeToNBT(nbt); - return nbt; - } - - public NBTTagCompound createTankNBT(int tank, TankInfo tankInfo) - { - NBTTagCompound nbt = new NBTTagCompound(); - tankInfo.writeToNBT(nbt); - nbt.setByte("tank", (byte)tank); - return nbt; - } - - private Map<Integer, TankInfo> syncedTanks = new HashMap(); - private PowerInfo syncedPower = new PowerInfo(); - private ProcessInfo syncedProcess = new ProcessInfo(); - private int errorType = 0; - private ErrorState error = null; - - public void onTankUpdate(NBTTagCompound nbt) - { - int tankID = nbt.getByte("tank"); - TankInfo tank = new TankInfo(); - tank.readFromNBT(nbt); - this.syncedTanks.put(Integer.valueOf(tankID), tank); - } - - public void onProcessUpdate(NBTTagCompound nbt) - { - this.syncedProcess = new ProcessInfo(); - this.syncedProcess.readFromNBT(nbt); - } - - public void onPowerUpdate(NBTTagCompound nbt) - { - this.syncedPower = new PowerInfo(); - this.syncedPower.readFromNBT(nbt); - } - - public PowerInfo getPowerInfo() - { - return this.syncedPower; - } - - public ProcessInfo getProcessInfo() - { - return this.syncedProcess; - } - - public TankInfo getTankInfo(int tank) - { - return this.syncedTanks.containsKey(Integer.valueOf(tank)) ? (TankInfo)this.syncedTanks.get(Integer.valueOf(tank)) : new TankInfo(); - } - - public void onErrorUpdate(NBTTagCompound nbt) - { - this.errorType = nbt.getByte("type"); - if (nbt.hasKey("name")) - { - this.error = new ErrorState("", ""); - this.error.readFromNBT(nbt); - } - else - { - this.error = null; - } - } - - public ErrorState getErrorState() - { - return this.error; - } - - public int getErrorType() - { - return this.errorType; - } - - public CustomSlot[] getCustomSlots() - { - List<CustomSlot> slots = new ArrayList(); - for (Object object : this.inventorySlots) { - if ((object instanceof CustomSlot)) { - slots.add((CustomSlot)object); - } - } - return (CustomSlot[])slots.toArray(new CustomSlot[0]); - } - - private int mousedOverSlotNumber = -1; - - public void setMouseOverSlot(Slot slot) - { - if (slot.slotNumber != this.mousedOverSlotNumber) - { - this.mousedOverSlotNumber = slot.slotNumber; - ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).clear(); - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setShort("slot", (short)slot.slotNumber); - this.window.sendClientAction("mouse-over-slot", nbt); - } - } - - private void onMouseOverSlot(EntityPlayer player, NBTTagCompound data) - { - int slotnumber = data.getShort("slot"); - TransferRequest request = getShiftClickRequest(player, slotnumber); - if (request == null) { - return; - } - request.transfer(false); - NBTTagCompound nbt = new NBTTagCompound(); - - List<Integer> slots = new ArrayList(); - for (TransferRequest.TransferSlot tslot : request.getInsertedSlots()) - { - Slot slot = getSlot(tslot.inventory, tslot.id); - if (slot != null) { - slots.add(Integer.valueOf(slot.slotNumber)); - } - } - int[] array = new int[slots.size()]; - for (int i = 0; i < slots.size(); i++) { - array[i] = ((Integer)slots.get(i)).intValue(); - } - nbt.setIntArray("slots", array); - nbt.setShort("origin", (short)slotnumber); - - this.syncedNBT.put("shift-click-info", nbt); - } - - private void onRecieveShiftClickHighlights(EntityPlayer player, NBTTagCompound data) - { - ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).clear(); - for (int slotnumber : data.getIntArray("slots")) { - ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).add(Integer.valueOf(slotnumber)); - } - } - - private CustomSlot getSlot(IInventory inventory, int id) - { - for (Object o : this.inventorySlots) - { - CustomSlot slot = (CustomSlot)o; - if ((slot.inventory == inventory) && (slot.getSlotIndex() == id)) { - return slot; - } - } - return null; - } - - public void recieveNBT(Side side, EntityPlayer player, NBTTagCompound action) - { - String name = action.getString("type"); - if (handleNBT(side, player, name, action)) { - return; - } - this.window.recieveGuiNBT(getSide(), player, name, action); - INetwork.RecieveGuiNBT machine = (INetwork.RecieveGuiNBT)Machine.getInterface(INetwork.RecieveGuiNBT.class, this.window.getInventory()); - if (machine != null) { - machine.recieveGuiNBT(getSide(), player, name, action); - } - } - - public Slot getOrCreateSlot(InventoryType type, int index) - { - IInventory inventory = getInventory(type); - Slot slot = getSlot(inventory, index); - if (slot == null) - { - slot = new CustomSlot(inventory, index); - addSlotToContainer(slot); - } - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setByte("t", (byte)type.ordinal()); - nbt.setShort("i", (short)index); - nbt.setShort("n", (short)slot.slotNumber); - this.window.sendClientAction("slot-reg", nbt); - return slot; - } - - protected IInventory getInventory(InventoryType type) - { - if (type == InventoryType.Machine) { - return this.window.getInventory(); - } - if (type == InventoryType.Player) { - return this.window.getPlayer().inventory; - } - if (type == InventoryType.Window) { - return this.window.getWindowInventory(); - } - return null; - } - - private Slot getOrCreateSlot(InventoryType type, int index, int slotNumber) - { - IInventory inventory = getInventory(type); - if (this.inventorySlots.get(slotNumber) != null) { - return null; - } - Slot slot = new CustomSlot(inventory, index); - slot.slotNumber = slotNumber; - this.inventorySlots.add(slotNumber, slot); - this.inventoryItemStacks.add(slotNumber, (Object)null); - return slot; - } -} |