Guest User

Untitled

a guest
Jun 25th, 2017
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.08 KB | None | 0 0
  1. package com.walkingdead.walkingdeadmod.items.backpack;
  2.  
  3.  
  4.  
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.entity.player.InventoryPlayer;
  7. import net.minecraft.inventory.ClickType;
  8. import net.minecraft.inventory.Container;
  9. import net.minecraft.inventory.InventoryBasic;
  10. import net.minecraft.inventory.Slot;
  11. import net.minecraft.item.ItemStack;
  12.  
  13. public class ContainerModTileEntity extends Container{
  14.  
  15.     public static int GUIID = 2;
  16.     public final InventoryItem inventory;
  17.     private static final int INV_START = InventoryItem.INV_SIZE, INV_END = INV_START+26,
  18.             HOTBAR_START = INV_END+1, HOTBAR_END = HOTBAR_START+8;
  19.    
  20.         public ContainerModTileEntity(EntityPlayer par1Player, InventoryPlayer inventoryPlayer, InventoryItem inventoryItem) {
  21.            
  22.         this.inventory = inventoryItem;
  23.        
  24.         int i;
  25.        
  26.         InventoryBasic backpackgui = new InventoryBasic("backpackgui", true, 9);       
  27.        
  28.        
  29.         for (int y = 0; y < 3; ++y) {
  30.             for (int x = 0; x < 3; ++x) {
  31.                 this.addSlotToContainer(new SingleItemSlot(this.inventory, x + y * 3, 62 + x * 18, 17 + y * 18));
  32.             }
  33.         }
  34.        
  35.        
  36.         for (i = 0; i < 3; ++i)
  37.         {
  38.             for (int j = 0; j < 9; ++j)
  39.             {
  40.                 this.addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
  41.             }
  42.         }
  43.  
  44.        
  45.         for (i = 0; i < 9; ++i)
  46.         {
  47.             this.addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
  48.         }
  49.  
  50.     }
  51.    
  52.    
  53.  
  54.     @Override
  55.     public boolean canInteractWith(EntityPlayer player) {
  56.         return inventory.isUsableByPlayer(player);
  57.     }
  58.  
  59.  
  60.  
  61.     public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int index)
  62.     {
  63.         ItemStack itemstack = null;
  64.         Slot slot = (Slot) this.inventorySlots.get(index);
  65.  
  66.         if (slot != null && slot.getHasStack())
  67.         {
  68.             ItemStack itemstack1 = slot.getStack();
  69.             itemstack = itemstack1.copy();
  70.  
  71.             if (index < INV_START)
  72.             {
  73.                 if (!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END+1, true))
  74.                 {
  75.                     return null;
  76.                 }
  77.  
  78.                 slot.onSlotChange(itemstack1, itemstack);
  79.             }
  80.             else
  81.             {
  82.                 if (index >= INV_START)
  83.                 {
  84.                     if (!this.mergeItemStack(itemstack1, 0, INV_START, false))
  85.                     {
  86.                         return null;
  87.                     }
  88.                 }
  89.                
  90.                 else if (index >= HOTBAR_START && index < HOTBAR_END+1)
  91.                 {
  92.                     if (!this.mergeItemStack(itemstack1, INV_START, INV_END+1, false))
  93.                     {
  94.                         return null;
  95.                     }
  96.                 }
  97.             }
  98.  
  99.             if (itemstack1.getCount() == 0)
  100.             {
  101.                 slot.putStack((ItemStack) null);
  102.             }
  103.             else
  104.             {
  105.                 slot.onSlotChanged();
  106.             }
  107.  
  108.             if (itemstack1.getCount() == itemstack.getCount())
  109.             {
  110.                 return null;
  111.             }
  112.  
  113.         }
  114.  
  115.         return itemstack;
  116.     }
  117.     @Override
  118.     public ItemStack slotClick(int slot, int button, ClickType clickTypeIn, EntityPlayer player) {
  119.         if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItemMainhand()) {
  120.             return null;
  121.         }
  122.         return super.slotClick(slot, button, clickTypeIn, player);
  123.     }
  124.    
  125.  
  126.  
  127.     @Override
  128.     protected boolean mergeItemStack(ItemStack stack, int start, int end, boolean backwards)
  129.     {
  130.         boolean flag1 = false;
  131.         int k = (backwards ? end - 1 : start);
  132.         Slot slot;
  133.         ItemStack itemstack1;
  134.  
  135.         if (stack.isStackable())
  136.         {
  137.             while (stack.getCount() > 0 && (!backwards && k < end || backwards && k >= start))
  138.             {
  139.                 slot = (Slot) inventorySlots.get(k);
  140.                 itemstack1 = slot.getStack();
  141.  
  142.                 if (!slot.isItemValid(stack)) {
  143.                     k += (backwards ? -1 : 1);
  144.                     continue;
  145.                 }
  146.  
  147.                 if (itemstack1 != null && itemstack1.getItem() == stack.getItem() &&
  148.                         (!stack.getHasSubtypes() || stack.getItemDamage() == itemstack1.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, itemstack1))
  149.                 {
  150.                     int l = itemstack1.getCount() + stack.getCount();
  151.  
  152.                     if (l <= stack.getMaxStackSize() && l <= slot.getSlotStackLimit()) {
  153.                         stack.setCount(0);;
  154.                         itemstack1.setCount(l);
  155.                         inventory.markDirty();
  156.                         flag1 = true;
  157.                     } else if (itemstack1.getCount() < stack.getMaxStackSize() && l < slot.getSlotStackLimit()) {
  158.                         stack.setCount(stack.getCount() - stack.getMaxStackSize() - itemstack1.getCount());
  159.                         itemstack1.setCount(stack.getMaxStackSize());
  160.                         inventory.markDirty();
  161.                         flag1 = true;
  162.                     }
  163.                 }
  164.  
  165.                 k += (backwards ? -1 : 1);
  166.             }
  167.         }
  168.         if (stack.getCount() > 0)
  169.         {
  170.             k = (backwards ? end - 1 : start);
  171.             while (!backwards && k < end || backwards && k >= start) {
  172.                 slot = (Slot) inventorySlots.get(k);
  173.                 itemstack1 = slot.getStack();
  174.  
  175.                 if (!slot.isItemValid(stack)) {
  176.                     k += (backwards ? -1 : 1);
  177.                     continue;
  178.                 }
  179.  
  180.                 if (itemstack1 == null) {
  181.                     int l = stack.getCount();
  182.                     if (l <= slot.getSlotStackLimit()) {
  183.                         slot.putStack(stack.copy());
  184.                         stack.setCount(0);
  185.                         inventory.markDirty();
  186.                         flag1 = true;
  187.                         break;
  188.                     } else {
  189.                         putStackInSlot(k, new ItemStack(stack.getItem(), slot.getSlotStackLimit(), stack.getItemDamage()));
  190.                         stack.setCount(stack.getCount() - slot.getSlotStackLimit());
  191.                         inventory.markDirty();
  192.                         flag1 = true;
  193.                     }
  194.                 }
  195.  
  196.                 k += (backwards ? -1 : 1);
  197.             }
  198.         }
  199.  
  200.         return flag1;
  201.     }
  202. }
Add Comment
Please, Sign In to add comment