Advertisement
HalestormXV

Untitled

Aug 27th, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.13 KB | None | 0 0
  1. package halestormxv.eAngelus.gui;
  2.  
  3. import halestormxv.eAngelus.crafting.DualFurnaceRecipes;
  4. import halestormxv.eAngelus.slots.SlotDualFuranceOutput;
  5. import halestormxv.eAngelus.slots.SlotDualFurnaceFuel;
  6. import halestormxv.eAngelus.tileentity.TileEntityDualFurnace;
  7. import net.minecraft.entity.player.EntityPlayer;
  8. import net.minecraft.entity.player.InventoryPlayer;
  9. import net.minecraft.inventory.Container;
  10. import net.minecraft.inventory.IContainerListener;
  11. import net.minecraft.inventory.Slot;
  12. import net.minecraft.item.ItemStack;
  13. import net.minecraftforge.fml.relauncher.Side;
  14. import net.minecraftforge.fml.relauncher.SideOnly;
  15.  
  16. /**
  17.  * Created by Blaze on 8/27/2017.
  18.  */
  19. public class ContainerDualFurnace extends Container {
  20.     private final TileEntityDualFurnace tileEntity;
  21.  
  22.     private int cookTime;
  23.     private int totalCookTime;
  24.     private int burnTime;
  25.     private int currentBurnTime;
  26.  
  27.     public ContainerDualFurnace(InventoryPlayer player, TileEntityDualFurnace tileEntity) {
  28.         this.tileEntity = tileEntity;
  29.         this.addSlotToContainer(new Slot(tileEntity, 0, 20, 18));
  30.         this.addSlotToContainer(new Slot(tileEntity, 1, 140, 18));
  31.         this.addSlotToContainer(new SlotDualFurnaceFuel(tileEntity, 2, 80, 59));
  32.         this.addSlotToContainer(new SlotDualFuranceOutput(player.player, tileEntity, 3, 80, 19));
  33.  
  34.         for (int y = 0; y < 3; ++y) {
  35.             for (int x = 0; x < 9; ++x) {
  36.                 this.addSlotToContainer(new Slot(player, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
  37.             }
  38.         }
  39.  
  40.         for (int x = 0; x < 9l; ++x)
  41.             this.addSlotToContainer(new Slot(player, x, 8 + x * 18, 142));
  42.     }
  43.  
  44.     @Override
  45.     public void addListener(IContainerListener listener) {
  46.         super.addListener(listener);
  47.         listener.sendAllWindowProperties(this, this.tileEntity);
  48.     }
  49.  
  50.     @Override
  51.     public void detectAndSendChanges() {
  52.         super.detectAndSendChanges();
  53.  
  54.         for (int i = 0; i < this.listeners.size(); ++i) {
  55.             IContainerListener listener = (IContainerListener) this.listeners.get(i);
  56.  
  57.             if (this.cookTime != this.tileEntity.getField(2))
  58.                 listener.sendProgressBarUpdate(this, 2, this.tileEntity.getField(2));
  59.             if (this.burnTime != this.tileEntity.getField(2))
  60.                 listener.sendProgressBarUpdate(this, 0, this.tileEntity.getField(0));
  61.             if (this.currentBurnTime != this.tileEntity.getField(1))
  62.                 listener.sendProgressBarUpdate(this, 1, this.tileEntity.getField(1));
  63.             if (this.totalCookTime != this.tileEntity.getField(3))
  64.                 listener.sendProgressBarUpdate(this, 3, this.tileEntity.getField(3));
  65.         }
  66.  
  67.         this.cookTime = this.tileEntity.getField(2);
  68.         this.burnTime = this.tileEntity.getField(0);
  69.         this.currentBurnTime = this.tileEntity.getField(1);
  70.         this.totalCookTime = this.tileEntity.getField(3);
  71.     }
  72.  
  73.     @Override
  74.     @SideOnly(Side.CLIENT)
  75.     public void updateProgressBar(int id, int data) {
  76.         this.tileEntity.setField(id, data);
  77.     }
  78.  
  79.     @Override
  80.     public boolean canInteractWith(EntityPlayer playerIn) {
  81.         return this.tileEntity.isUsableByPlayer(playerIn);
  82.     }
  83.  
  84.     @Override
  85.     public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
  86.     {
  87.         ItemStack itemStack = ItemStack.EMPTY;
  88.         Slot slot = (Slot) this.inventorySlots.get(index);
  89.  
  90.         if (slot != null && slot.getHasStack())
  91.         {
  92.             ItemStack stack1 = slot.getStack();
  93.             itemStack = stack1.copy();
  94.  
  95.             if (index == 3)
  96.             {
  97.                 if (!this.mergeItemStack(stack1, 4, 40, true))
  98.                     return ItemStack.EMPTY;
  99.                 slot.onSlotChange(stack1, itemStack);
  100.             }
  101.             else if (index != 2 && index != 1 && index != 0)
  102.             {
  103.                 Slot slot1 = (Slot) this.inventorySlots.get(index + 1);
  104.  
  105.                 if (!DualFurnaceRecipes.instance().getDualSmeltingResult(stack1, slot1.getStack()).isEmpty())
  106.                     if (!this.mergeItemStack(stack1, 0, 2, false))
  107.                         return ItemStack.EMPTY;
  108.                     else if (TileEntityDualFurnace.isItemFuel(stack1))
  109.                         if (!this.mergeItemStack(stack1, 2, 3, false))
  110.                             return ItemStack.EMPTY;
  111.                     else if (index >= 4 && index < 31)
  112.                         if (!this.mergeItemStack(stack1, 31, 40, false))
  113.                             return ItemStack.EMPTY;
  114.                     else if (index >= 31 && index < 40 && !this.mergeItemStack(stack1, 4, 31, false))
  115.                             return ItemStack.EMPTY;
  116.             }
  117.             else if (!this.mergeItemStack(stack1, 4, 40, false))
  118.                 return ItemStack.EMPTY;
  119.             if (stack1.isEmpty())
  120.                 slot.putStack(ItemStack.EMPTY);
  121.             else
  122.                 slot.onSlotChanged();
  123.             if (stack1.getCount() == stack1.getCount())
  124.                 return ItemStack.EMPTY;
  125.             slot.onTake(playerIn, stack1);
  126.         }
  127.         return itemStack;
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement