Advertisement
dragonfreak1000

Container

Jan 28th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.26 KB | None | 0 0
  1. package net.codepixl.BitsAndBobs.TileEntity;
  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.ICrafting;
  7. import net.minecraft.inventory.Slot;
  8. import net.minecraft.inventory.SlotFurnace;
  9. import net.minecraft.item.ItemStack;
  10. import net.minecraft.item.crafting.FurnaceRecipes;
  11. import cpw.mods.fml.relauncher.Side;
  12. import cpw.mods.fml.relauncher.SideOnly;
  13.  
  14. public class Container3DPrinter extends Container{
  15.     /** How long this furnace will continue to burn for (fuel) */
  16.     public int lastBurnTime;
  17.     /** The start time for this fuel */
  18.     public int lastItemBurnTime;
  19.     /** How long time left before cooked */
  20.     public int lastCookTime;
  21.     /** The 3D Printer **/
  22.     private TileEntity3DPrinter printer;
  23.    
  24.     public Container3DPrinter(InventoryPlayer inv, TileEntity3DPrinter printer){
  25.         this.printer = printer;
  26.         this.addSlotToContainer(new Slot(printer, 0, 56, 17));
  27.         this.addSlotToContainer(new Slot(printer, 1, 56, 53));
  28.         this.addSlotToContainer(new SlotFurnace(inv.player, printer, 2, 116, 35));
  29.         for (int i = 0; i < 3; i++) {
  30.             for (int j = 0; j < 9; j++) {
  31.                 this.addSlotToContainer(new Slot(inv, j + i*9 + 9, 8 + 18*j, 84 + i*18));
  32.             }
  33.         }
  34.         for(int i = 0; i < 9; i++){
  35.             this.addSlotToContainer(new Slot(inv, i, 8 + i*18, 142));
  36.         }
  37.     }
  38.    
  39.     @Override
  40.     public boolean canInteractWith(EntityPlayer p) {
  41.         return this.printer.isUseableByPlayer(p);
  42.     }
  43.    
  44.     public void addCraftingToCrafters(ICrafting icrafting){
  45.         super.addCraftingToCrafters(icrafting);
  46.         icrafting.sendProgressBarUpdate(this, 0, this.printer.cookTime);
  47.         icrafting.sendProgressBarUpdate(this, 1, this.printer.burnTime);
  48.         icrafting.sendProgressBarUpdate(this, 2, this.printer.currentBurnTime);
  49.     }
  50.     @Override
  51.     public void updateProgressBar(int slot, int newValue){
  52.         if(slot == 0) this.printer.cookTime = newValue;
  53.         if(slot == 1) this.printer.burnTime = newValue;
  54.         if(slot == 2) this.printer.currentBurnTime = newValue;
  55.     }
  56.    
  57.     public ItemStack transferStackInSlot(EntityPlayer player, int clickedSlotNumber){
  58.         ItemStack itemstack = null;
  59.         Slot slot = (Slot)this.inventorySlots.get(clickedSlotNumber);
  60.        
  61.         if(slot != null && slot.getHasStack()){
  62.             ItemStack itemstack1 = slot.getStack();
  63.             itemstack = itemstack1.copy();
  64.            
  65.             if(clickedSlotNumber == 2){
  66.                 if(!this.mergeItemStack(itemstack1, 3, 39, true)){
  67.                     return null;
  68.                 }
  69.                
  70.                 slot.onSlotChange(itemstack1, itemstack);
  71.             }else if(clickedSlotNumber != 1 && clickedSlotNumber != 0){
  72.                 if(FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null){
  73.                     if(!this.mergeItemStack(itemstack1, 0, 1, false)){
  74.                         return null;
  75.                     }
  76.                 }else if(TileEntity3DPrinter.isItemFuel(itemstack1)){
  77.                     if(!this.mergeItemStack(itemstack1, 1, 2, false)){
  78.                         return null;
  79.                     }
  80.                 }else if(clickedSlotNumber >= 3 && clickedSlotNumber < 30){
  81.                     if(!this.mergeItemStack(itemstack1, 30, 39, false)){
  82.                         return null;
  83.                     }
  84.                 }else if(clickedSlotNumber >= 30 && clickedSlotNumber < 39){
  85.                     if(!this.mergeItemStack(itemstack1, 3, 30, false)){
  86.                         return null;
  87.                     }
  88.                 }
  89.             }else if(!this.mergeItemStack(itemstack1, 3, 39, false)){
  90.                 return null;
  91.             }
  92.            
  93.             if(itemstack1.stackSize == 0){
  94.                 slot.putStack((ItemStack)null);
  95.             }else{
  96.                 slot.onSlotChanged();
  97.             }
  98.            
  99.             if(itemstack1.stackSize == itemstack.stackSize){
  100.                 return null;
  101.             }
  102.            
  103.             slot.onPickupFromSlot(player, itemstack1);
  104.         }
  105.        
  106.         return itemstack;
  107.     }
  108.  
  109.     public void detectAndSaveChanges(){
  110.         super.detectAndSendChanges();
  111.         for(int i = 0; i < this.crafters.size(); i++){
  112.             ICrafting icrafting = (ICrafting) this.crafters.get(i);
  113.            
  114.             if(this.lastCookTime != this.printer.cookTime){
  115.                 icrafting.sendProgressBarUpdate(this, 0, this.printer.cookTime);
  116.             }
  117.            
  118.             if(this.lastBurnTime != this.printer.burnTime){
  119.                 icrafting.sendProgressBarUpdate(this, 1, this.printer.burnTime);
  120.             }
  121.            
  122.             if(this.lastItemBurnTime != this.printer.currentBurnTime){
  123.                 icrafting.sendProgressBarUpdate(this, 2, this.printer.currentBurnTime);
  124.             }
  125.         }
  126.        
  127.         this.lastCookTime = this.printer.cookTime;
  128.         this.lastBurnTime = this.printer.burnTime;
  129.         this.lastItemBurnTime = this.printer.currentBurnTime;
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement