tobast

[Forge] TileEntityMachine.java

Aug 5th, 2014
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.22 KB | None | 0 0
  1. package testing.base;
  2.  
  3. import ic2.api.energy.prefab.BasicSink;
  4. import net.minecraft.entity.player.EntityPlayer;
  5. import net.minecraft.inventory.IInventory;
  6. import net.minecraft.item.ItemStack;
  7. import net.minecraft.nbt.NBTTagCompound;
  8. import net.minecraft.nbt.NBTTagList;
  9. import net.minecraft.tileentity.TileEntity;
  10. import net.minecraft.world.World;
  11.  
  12. public class TileEntityMachine extends TileEntity implements IInventory {
  13.     private ItemStack[] inv;
  14.     private BasicSink sink = new BasicSink(this, 1000, 1);
  15.    
  16.     public TileEntityMachine() {
  17.         inv = new ItemStack[9];
  18.     }
  19.    
  20.     @Override
  21.     public void writeToNBT(NBTTagCompound tag) {
  22.         super.writeToNBT(tag);
  23.         sink.writeToNBT(tag);
  24.        
  25.         NBTTagList tagList = new NBTTagList();
  26.         for(int i=0; i < inv.length; i++) {
  27.             ItemStack stack = inv[i];
  28.             if(stack != null) {
  29.                 NBTTagCompound slotTag = new NBTTagCompound();
  30.                 slotTag.setByte("slot", (byte) i);
  31.                 stack.writeToNBT(slotTag);
  32.                 tagList.appendTag(slotTag);
  33.             }
  34.         }
  35.         tag.setTag("inventory", tagList);
  36.     }
  37.    
  38.     @Override
  39.     public void readFromNBT(NBTTagCompound tag) {
  40.         super.readFromNBT(tag);
  41.         sink.readFromNBT(tag);
  42.        
  43.         NBTTagList tagList = tag.getTagList("inventory");
  44.         for(int i=0; i < tagList.tagCount(); i++) {
  45.             NBTTagCompound slotTag = (NBTTagCompound) tagList.tagAt(i);
  46.             byte slot = slotTag.getByte("slot");
  47.             if(slot >= 0 && slot < getSizeInventory())
  48.                 inv[slot] = ItemStack.loadItemStackFromNBT(slotTag);
  49.         }
  50.     }
  51.  
  52.     @Override
  53.     public int getSizeInventory() {
  54.         return inv.length;
  55.     }
  56.  
  57.     @Override
  58.     public ItemStack getStackInSlot(int i) {
  59.         if(i > 3 || i < 0)
  60.             return null;
  61.         return inv[i];
  62.     }
  63.  
  64.     @Override
  65.     public ItemStack decrStackSize(int slot, int nbItems) {
  66.         ItemStack stack = getStackInSlot(slot);
  67.         if(stack != null) {
  68.             if(nbItems >= stack.stackSize)
  69.                 setInventorySlotContents(slot,null);
  70.             else
  71.                 stack = stack.splitStack(nbItems);
  72.         }
  73.         return stack;
  74.     }
  75.  
  76.     @Override
  77.     public ItemStack getStackInSlotOnClosing(int slot) {
  78.         ItemStack stack = getStackInSlot(slot);
  79.         if(stack != null)
  80.             setInventorySlotContents(slot,null);
  81.         return stack;
  82.     }
  83.  
  84.     @Override
  85.     public void setInventorySlotContents(int slot, ItemStack stack) {
  86.         inv[slot]=stack;
  87.         if(stack != null && stack.stackSize > getInventoryStackLimit())
  88.             stack.stackSize = getInventoryStackLimit();
  89.     }
  90.  
  91.     @Override
  92.     public String getInvName() {
  93.         return "testing.base.tileentitymachine";
  94.     }
  95.  
  96.     @Override
  97.     public boolean isInvNameLocalized() {
  98.         return false;
  99.     }
  100.  
  101.     @Override
  102.     public int getInventoryStackLimit() {
  103.         return 64;
  104.     }
  105.  
  106.     @Override
  107.     public boolean isUseableByPlayer(EntityPlayer entityplayer) {
  108.         return true;
  109.     }
  110.  
  111.     @Override
  112.     public void openChest() {}
  113.  
  114.     @Override
  115.     public void closeChest() {}
  116.    
  117.     @Override
  118.     public void invalidate() {
  119.         sink.invalidate();
  120.         super.invalidate();
  121.     }
  122.    
  123.     @Override
  124.     public void onChunkUnload() {
  125.         sink.onChunkUnload();
  126.     }
  127.    
  128.     @Override
  129.     public void updateEntity() {
  130.         worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
  131.         sink.updateEntity();
  132. //      System.out.println(sink.getEnergyStored());
  133.         //TODO
  134.     }
  135.    
  136.  
  137.     @Override
  138.     public boolean isItemValidForSlot(int i, ItemStack itemstack) {
  139.         return true; // TODO enhance this filter.
  140.     }
  141.    
  142.     public double getEnergyStored() {
  143.         return sink.getEnergyStored();
  144.     }
  145.     public double getEnergyCapacity() {
  146.         return sink.getCapacity();
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment