Guest User

ContainerBarrel

a guest
Jul 29th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.28 KB | None | 0 0
  1. package com.konarjg.arcticraft.blocks.tileentities.containers;
  2.  
  3. import com.konarjg.arcticraft.blocks.tileentities.TileEntityBarrel;
  4.  
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.entity.player.InventoryPlayer;
  7. import net.minecraft.inventory.Container;
  8. import net.minecraft.inventory.Slot;
  9. import net.minecraft.item.ItemStack;
  10.  
  11. public class ContainerBarrel extends Container {
  12.    
  13.     TileEntityBarrel inventory;
  14.    
  15.     @Override
  16.     protected boolean mergeItemStack(ItemStack stack, int start, int end, boolean backwards)
  17.     {
  18.         boolean flag1 = false;
  19.         int k = start;
  20.         Slot slot;
  21.         ItemStack itemstack1;
  22.  
  23.         if (backwards) { k = end - 1; }
  24.  
  25.         if (stack.isStackable()) {
  26.             while (stack.getCount() > 0 && (!backwards && k < end || backwards && k >= start))
  27.             {
  28.                 slot = (Slot) inventorySlots.get(k);
  29.                 itemstack1 = slot.getStack();
  30.  
  31.                 if (!slot.isItemValid(stack)) {
  32.                     continue;
  33.                 }
  34.  
  35.                 if (itemstack1 != null && itemstack1.getItem() == stack.getItem() &&
  36.                         (!stack.getHasSubtypes() || stack.getItemDamage() == itemstack1.getItemDamage()) &&
  37.                         ItemStack.areItemStackTagsEqual(stack, itemstack1))
  38.                 {
  39.                     int l = itemstack1.getCount() + stack.getCount();
  40.  
  41.                     if (l <= stack.getCount() && l <= slot.getSlotStackLimit()) {
  42.                         stack = ItemStack.EMPTY;
  43.                         itemstack1.setCount (l);
  44.                         inventory.markDirty();
  45.                         flag1 = true;
  46.                     } else if (itemstack1.getCount() < stack.getCount() && l < slot.getSlotStackLimit()) {
  47.                         stack.setCount(stack.getCount() - stack.getCount()- itemstack1.getCount());
  48.                         itemstack1.setCount(stack.getCount());
  49.                         inventory.markDirty();
  50.                         flag1 = true;
  51.                     }
  52.                 }
  53.  
  54.                 if (backwards) { --k; }
  55.  
  56.                 else { ++k; }
  57.             }
  58.         }
  59.  
  60.         if (stack.getMaxStackSize() > 0)
  61.         {
  62.             if (backwards) { k = end - 1; }
  63.  
  64.             else { k = start; }
  65.  
  66.             while (!backwards && k < end || backwards && k >= start) {
  67.                 slot = (Slot) inventorySlots.get(k);
  68.                 itemstack1 = slot.getStack();
  69.                
  70.                 if (!slot.isItemValid(stack)) {
  71.                     continue;
  72.                 }
  73.  
  74.                 if (itemstack1 == null) {
  75.                     int l = stack.getMaxStackSize ();
  76.  
  77.                     if (l <= slot.getSlotStackLimit()) {
  78.                         slot.putStack(stack.copy());
  79.                         stack = ItemStack.EMPTY;
  80.                         inventory.markDirty();
  81.                         flag1 = true;
  82.                         break;
  83.                     } else {
  84.                         putStackInSlot(k, new ItemStack(stack.getItem(), slot.getSlotStackLimit(), stack.getItemDamage()));
  85.                         stack.setCount(stack.getCount() - slot.getSlotStackLimit());
  86.                         inventory.markDirty();
  87.                         flag1 = true;
  88.                     }
  89.                 }
  90.  
  91.                 if (backwards) { --k; }
  92.  
  93.                 else { ++k; }
  94.             }
  95.         }
  96.  
  97.         return flag1;
  98.     }
  99.  
  100.    
  101.     @Override
  102.     public void onContainerClosed(EntityPlayer playerIn) {
  103.         super.onContainerClosed(playerIn);
  104.         inventory.closeInventory(playerIn);
  105.     }
  106.    
  107.     public ContainerBarrel (InventoryPlayer playerInv, TileEntityBarrel te) {
  108.         this.inventory = te;
  109.         inventory.openInventory(playerInv.player);
  110.         for (int x = 0; x < 2; x++) {
  111.             for (int y = 0; y < 8; y++) {
  112.                 addSlotToContainer (new Slot (inventory, y + x * 8, 16 + y * 18, 24 + x * 18));
  113.             }
  114.         }
  115.        
  116.         for (int i = 0; i < 3; i++) {
  117.             for (int j = 0; j < 9; j++) {
  118.                 addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
  119.             }
  120.         }
  121.    
  122.         for (int k = 0; k < 9; k++) {
  123.             addSlotToContainer(new Slot(playerInv, k, 8 + k * 18, 142));
  124.         }
  125.     }
  126.  
  127.     @Override
  128.     public boolean canInteractWith(EntityPlayer playerIn) {
  129.         return true;
  130.     }
  131.    
  132.     public TileEntityBarrel getBarrelInventory () {
  133.         return this.inventory;
  134.     }
  135.    
  136.     @Override
  137.     public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) {
  138.         ItemStack itemstack = ItemStack.EMPTY;
  139.         Slot slot = inventorySlots.get(index);
  140.        
  141.         if (slot != null && slot.getHasStack()) {
  142.            
  143.                 ItemStack itemstack2 = slot.getStack();
  144.                 itemstack = itemstack2.copy();
  145.            
  146.                 int containerSlots = inventorySlots.size();
  147.            
  148.                 if (index < containerSlots) {
  149.                     if (!this.mergeItemStack(itemstack2, containerSlots, inventorySlots.size(), true)) {
  150.                         return ItemStack.EMPTY;
  151.                     }
  152.                 } else if (!this.mergeItemStack(itemstack2, 0, containerSlots, false)) {
  153.                     return ItemStack.EMPTY;
  154.                 }
  155.                
  156.                 if (itemstack2.getCount() == 0) {
  157.                     slot.putStack(ItemStack.EMPTY);
  158.                 } else {
  159.                     slot.onSlotChanged();
  160.                 }
  161.                
  162.                 if (itemstack2.getCount() == itemstack.getCount()) {
  163.                     return ItemStack.EMPTY;
  164.                 }
  165.            
  166.                 slot.onTake(playerIn, itemstack2);
  167.             }
  168.         return ItemStack.EMPTY;
  169.     }
  170.    
  171.  
  172.  
  173. }
Advertisement
Add Comment
Please, Sign In to add comment