Advertisement
wenkai31

TileEntityCocoaExtractor.java

Oct 7th, 2011
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.39 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. public class TileEntityCocoaExtractor extends TileEntity
  4.     implements IInventory
  5. {
  6.  
  7.     public TileEntityCocoaExtractor()
  8.     {
  9.         cocoaExtractorItemStacks = new ItemStack[3];
  10.         extractingTime = 0;
  11.         currentItemBurnTime = 0;
  12.         extractTime = 0;
  13.     }
  14.  
  15.     public int getSizeInventory()
  16.     {
  17.         return cocoaExtractorItemStacks.length;
  18.     }
  19.  
  20.     public ItemStack getStackInSlot(int i)
  21.     {
  22.         return cocoaExtractorItemStacks[i];
  23.     }
  24.  
  25.     public ItemStack decrStackSize(int i, int j)
  26.     {
  27.         if(cocoaExtractorItemStacks[i] != null)
  28.         {
  29.             if(cocoaExtractorItemStacks[i].stackSize <= j)
  30.             {
  31.                 ItemStack itemstack = cocoaExtractorItemStacks[i];
  32.                 cocoaExtractorItemStacks[i] = null;
  33.                 return itemstack;
  34.             }
  35.             ItemStack itemstack1 = cocoaExtractorItemStacks[i].splitStack(j);
  36.             if(cocoaExtractorItemStacks[i].stackSize == 0)
  37.             {
  38.                 cocoaExtractorItemStacks[i] = null;
  39.             }
  40.             return itemstack1;
  41.         } else
  42.         {
  43.             return null;
  44.         }
  45.     }
  46.  
  47.     public void readFromNBT(NBTTagCompound nbttagcompound)
  48.     {
  49.         super.readFromNBT(nbttagcompound);
  50.         NBTTagList nbttaglist = nbttagcompound.getTagList("Items");
  51.         cocoaExtractorItemStacks = new ItemStack[getSizeInventory()];
  52.         for(int i = 0; i < nbttaglist.tagCount(); i++)
  53.         {
  54.             NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i);
  55.             int j = nbttagcompound1.getByte("Slot") & 0xff;
  56.             if(j >= 0 && j < cocoaExtractorItemStacks.length)
  57.             {
  58.                 cocoaExtractorItemStacks[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
  59.             }
  60.         }
  61.        
  62.         extractingTime = nbttagcompound.getShort("BurnTime");
  63.         extractTime = nbttagcompound.getShort("CookTime");
  64.         currentItemBurnTime = getItemBurnTime(cocoaExtractorItemStacks[1]);
  65.  
  66.     }
  67.  
  68.     public void writeToNBT(NBTTagCompound nbttagcompound)
  69.     {
  70.         super.writeToNBT(nbttagcompound);
  71.         nbttagcompound.setShort("BurnTime", (short)extractingTime);
  72.         nbttagcompound.setShort("CookTime", (short)extractTime);
  73.         NBTTagList nbttaglist = new NBTTagList();
  74.         for(int i = 0; i < cocoaExtractorItemStacks.length; i++)
  75.         {
  76.             if(cocoaExtractorItemStacks[i] != null)
  77.             {
  78.                 NBTTagCompound nbttagcompound1 = new NBTTagCompound();
  79.                 nbttagcompound1.setByte("Slot", (byte)i);
  80.                 cocoaExtractorItemStacks[i].writeToNBT(nbttagcompound1);
  81.                 nbttaglist.setTag(nbttagcompound1);
  82.             }
  83.         }
  84.  
  85.         nbttagcompound.setTag("Items", nbttaglist);
  86.     }
  87.    
  88.     public void setInventorySlotContents(int i, ItemStack itemstack)
  89.     {
  90.         cocoaExtractorItemStacks[i] = itemstack;
  91.         if(itemstack != null && itemstack.stackSize > getInventoryStackLimit())
  92.         {
  93.             itemstack.stackSize = getInventoryStackLimit();
  94.         }
  95.     }
  96.  
  97.     public String getInvName()
  98.     {
  99.         return "cocoaextractorBlock";
  100.     }
  101.  
  102.     public int getInventoryStackLimit()
  103.     {
  104.         return 64;
  105.     }
  106.  
  107.     public int getCookProgressScaled(int i)
  108.     {
  109.         return (extractTime * i) / 200;
  110.     }
  111.  
  112.     public int getBurnTimeRemainingScaled(int i)
  113.     {
  114.         if(currentItemBurnTime == 0)
  115.         {
  116.             currentItemBurnTime = 200;
  117.         }
  118.         return (extractingTime * i) / currentItemBurnTime;
  119.     }
  120.  
  121.     public boolean isBurning()
  122.     {
  123.         return extractingTime > 0;
  124.     }
  125.  
  126.     public void updateEntity()
  127.     {
  128.         boolean flag = extractingTime > 0;
  129.         boolean flag1 = false;
  130.         if(extractingTime > 0)
  131.         {
  132.             extractingTime--;
  133.         }
  134.         if(!worldObj.multiplayerWorld)
  135.         {
  136.             if(extractingTime == 0 && canSmelt())
  137.             {
  138.                 currentItemBurnTime = extractingTime = getItemBurnTime(cocoaExtractorItemStacks[1]);
  139.                 if(extractingTime > 0)
  140.                 {
  141.                     flag1 = true;
  142.                     if(cocoaExtractorItemStacks[1] != null)
  143.                     {
  144.                         if(cocoaExtractorItemStacks[1].getItem().hasContainerItem())
  145.                         {
  146.                             cocoaExtractorItemStacks[1] = new ItemStack(cocoaExtractorItemStacks[1].getItem().getContainerItem());
  147.                         } else
  148.                         {
  149.                             cocoaExtractorItemStacks[1].stackSize--;
  150.                         }
  151.                         if(cocoaExtractorItemStacks[1].stackSize == 0)
  152.                         {
  153.                             cocoaExtractorItemStacks[1] = null;
  154.                         }
  155.                     }
  156.                 }
  157.             }
  158.             if(isBurning() && canSmelt())
  159.             {
  160.                 extractTime++;
  161.                 if(extractTime == 200)
  162.                 {
  163.                     extractTime = 0;
  164.                     smeltItem();
  165.                     flag1 = true;
  166.                 }
  167.             } else
  168.             {
  169.                 extractTime = 0;
  170.             }
  171.             if(flag != (extractingTime > 0))
  172.             {
  173.                 flag1 = true;
  174.                 BlockCocoaExtractor.updateCocoaExtractorBlockState(extractingTime > 0, worldObj, xCoord, yCoord, zCoord);
  175.             }
  176.         }
  177.         if(flag1)
  178.         {
  179.             onInventoryChanged();
  180.         }
  181.     }
  182.  
  183.     private boolean canSmelt()
  184.     {
  185.         if(cocoaExtractorItemStacks[0] == null)
  186.         {
  187.             return false;
  188.         }
  189.         ItemStack itemstack = CocoaExtractorRecipes.smelting().getSmeltingResult(cocoaExtractorItemStacks[0].getItem().shiftedIndex);
  190.         if(itemstack == null)
  191.         {
  192.             return false;
  193.         }
  194.         if(cocoaExtractorItemStacks[2] == null)
  195.         {
  196.             return true;
  197.         }
  198.         if(!cocoaExtractorItemStacks[2].isItemEqual(itemstack))
  199.         {
  200.             return false;
  201.         }
  202.         if(cocoaExtractorItemStacks[2].stackSize < getInventoryStackLimit() && cocoaExtractorItemStacks[2].stackSize < cocoaExtractorItemStacks[2].getMaxStackSize())
  203.         {
  204.             return true;
  205.         }
  206.         return cocoaExtractorItemStacks[2].stackSize < itemstack.getMaxStackSize();
  207.     }
  208.  
  209.    
  210.  
  211.     public void smeltItem()
  212.     {
  213.         if(!canSmelt())
  214.         {
  215.             return;
  216.         }
  217.         ItemStack itemstack = CocoaExtractorRecipes.smelting().getSmeltingResult(cocoaExtractorItemStacks[0].getItem().shiftedIndex);
  218.         if(cocoaExtractorItemStacks[2] == null)
  219.         {
  220.             cocoaExtractorItemStacks[2] = itemstack.copy();
  221.         } else
  222.         if(cocoaExtractorItemStacks[2].itemID == itemstack.itemID)
  223.         {
  224.             cocoaExtractorItemStacks[2].stackSize++;
  225.         }
  226.         if(cocoaExtractorItemStacks[0].getItem().hasContainerItem())
  227.         {
  228.             cocoaExtractorItemStacks[0] = new ItemStack(cocoaExtractorItemStacks[0].getItem().getContainerItem());
  229.         } else
  230.         {
  231.             cocoaExtractorItemStacks[0].stackSize--;
  232.         }
  233.         if(cocoaExtractorItemStacks[0].stackSize <= 0)
  234.         {
  235.             cocoaExtractorItemStacks[0] = null;
  236.         }
  237.     }
  238.     private int getItemBurnTime(ItemStack itemstack)
  239.     {
  240.         if(itemstack == null)
  241.         {
  242.             return 0;
  243.         }
  244.         int i = itemstack.getItem().shiftedIndex;
  245.         if(i == Item.coal.shiftedIndex)
  246.         {
  247.             return 2400;
  248.         }
  249.         if(i < 256 && Block.blocksList[i].blockMaterial == Material.wood)
  250.         {
  251.             return 300;
  252.         }
  253.         else
  254.         {
  255.             return 0;
  256.         }
  257.     }
  258.  
  259.     public boolean canInteractWith(EntityPlayer entityplayer)
  260.     {
  261.         if(worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this)
  262.         {
  263.             return false;
  264.         }
  265.         return entityplayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64D;
  266.     }
  267.    
  268.     public void onInventoryChanged()
  269.     {
  270.     }
  271.  
  272.     public void openChest()
  273.     {
  274.     }
  275.  
  276.     public void closeChest()
  277.    
  278.     {      
  279.     }
  280.  
  281.     private ItemStack cocoaExtractorItemStacks[];
  282.     public int extractingTime;
  283.     public int currentItemBurnTime;
  284.     public int extractTime;
  285.    
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement