Advertisement
HalestormXV

Untitled

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