Guest User

TileEntityNano.java

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