Guest User

Container Class

a guest
Dec 15th, 2014
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.23 KB | None | 0 0
  1. package net.stolenchristmas.mods.container;
  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.IInventory;
  7. import net.minecraft.inventory.InventoryCraftResult;
  8. import net.minecraft.inventory.InventoryCrafting;
  9. import net.minecraft.inventory.Slot;
  10. import net.minecraft.inventory.SlotCrafting;
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraft.world.World;
  13. import net.stolenchristmas.mods.stolenchristmas;
  14. import net.stolenchristmas.mods.crafting.WorkSurfaceCraftingManager;
  15.  
  16. public class ContainerWorkSurface extends Container{
  17.  
  18.     public InventoryCrafting craftMatrix;
  19.     public IInventory craftResult;
  20.     private World worldObj;
  21.     private int posX;
  22.     private int posY;
  23.     private int posZ;
  24.    
  25.     public ContainerWorkSurface(InventoryPlayer invPlayer, World world, int x, int y, int z) {
  26.         craftMatrix = new InventoryCrafting(this, 5, 5);
  27.         craftResult = new InventoryCraftResult();
  28.         worldObj = world;
  29.         posX = x;
  30.         posY = y;
  31.         posZ = z;
  32.        
  33.         this.addSlotToContainer(new SlotCrafting(invPlayer.player, craftMatrix, craftResult, 0, 141, 43));
  34.        
  35.         for (int i = 0; i < 5; i++) {
  36.             for(int k = 0; k < 5; k++) {
  37.                 this.addSlotToContainer(new Slot(craftMatrix, k + i * 5, 8 + k * 18, 7 + i * 18));
  38.             }
  39.         }
  40.        
  41.         for (int i = 0; i < 3; i++) {
  42.             for(int k = 0; k < 9; k++) {
  43.                 this.addSlotToContainer(new Slot(invPlayer, k + i * 9 + 9, 8 + k * 18, 106 + i * 18));
  44.             }
  45.         }
  46.        
  47.         for (int i = 0; i < 9; i++) {
  48.             this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 164));
  49.         }
  50.        
  51.         onCraftMatrixChanged(craftMatrix);
  52.     }
  53.    
  54.    
  55.     public void onCraftMatrixChanged(IInventory iiventory) {
  56.         craftResult.setInventorySlotContents(0, WorkSurfaceCraftingManager.getInstance().findMatchingRecipe(craftMatrix, worldObj));
  57.     }
  58.    
  59.    
  60.     @Override
  61.     public boolean canInteractWith(EntityPlayer player) {
  62.         if(worldObj.getBlock(posX, posY, posZ) != stolenchristmas.blockXmasTable) {
  63.             return false;
  64.         }else{
  65.             return player.getDistanceSq((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D) <= 64.0D;
  66.         }
  67.  
  68.     }
  69.    
  70.     public void onContainerClosed(EntityPlayer par1EntityPlayer) {
  71.         super.onContainerClosed(par1EntityPlayer);
  72.  
  73.         if (!this.worldObj.isRemote)
  74.         {
  75.             for (int i = 0; i < 9; ++i)
  76.             {
  77.                 ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
  78.  
  79.                 if (itemstack != null)
  80.                 {
  81.                     par1EntityPlayer.dropPlayerItemWithRandomChoice(itemstack, false);
  82.                 }
  83.             }
  84.         }
  85.     }
  86.  
  87.    
  88.     public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
  89.         ItemStack itemstack = null;
  90.         Slot slot = (Slot)this.inventorySlots.get(par2);
  91.  
  92.         if (slot != null && slot.getHasStack())
  93.         {
  94.             ItemStack itemstack1 = slot.getStack();
  95.             itemstack = itemstack1.copy();
  96.  
  97.             if (par2 == 0)
  98.             {
  99.                 if (!this.mergeItemStack(itemstack1, 10, 46, true))
  100.                 {
  101.                     return null;
  102.                 }
  103.  
  104.                 slot.onSlotChange(itemstack1, itemstack);
  105.             }
  106.             else if (par2 >= 10 && par2 < 37)
  107.             {
  108.                 if (!this.mergeItemStack(itemstack1, 37, 46, false))
  109.                 {
  110.                     return null;
  111.                 }
  112.             }
  113.             else if (par2 >= 37 && par2 < 46)
  114.             {
  115.                 if (!this.mergeItemStack(itemstack1, 10, 37, false))
  116.                 {
  117.                     return null;
  118.                 }
  119.             }
  120.             else if (!this.mergeItemStack(itemstack1, 10, 46, false))
  121.             {
  122.                 return null;
  123.             }
  124.  
  125.             if (itemstack1.stackSize == 0)
  126.             {
  127.                 slot.putStack((ItemStack)null);
  128.             }
  129.             else
  130.             {
  131.                 slot.onSlotChanged();
  132.             }
  133.  
  134.             if (itemstack1.stackSize == itemstack.stackSize)
  135.             {
  136.                 return null;
  137.             }
  138.  
  139.             slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
  140.         }
  141.  
  142.         return itemstack;
  143.     }
  144.  
  145. }
Advertisement
Add Comment
Please, Sign In to add comment