Advertisement
Raevox

TileEntityVendingMachine

Feb 22nd, 2014
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.73 KB | None | 0 0
  1. import net.minecraft.entity.player.EntityPlayer;
  2. import net.minecraft.inventory.IInventory;
  3. import net.minecraft.item.ItemStack;
  4. import net.minecraft.nbt.*;
  5. import net.minecraft.tileentity.TileEntity;
  6.  
  7. public class TileEntityVendingMachine extends TileEntity implements IInventory {
  8.     private ItemStack[] items;
  9.  
  10.     public TileEntityVendingMachine() {
  11.         items = new ItemStack[ 20 ];
  12.     }
  13.  
  14.     @Override
  15.     public int getSizeInventory() {
  16.         return items.length;
  17.     }
  18.  
  19.     @Override
  20.     public ItemStack getStackInSlot( int slot ) {
  21.         return items[ slot ];
  22.     }
  23.  
  24.     @Override
  25.     public ItemStack decrStackSize( int slot, int count ) {
  26.         ItemStack itemStack = getStackInSlot( slot );
  27.         if( itemStack != null ) {
  28.             if( itemStack.stackSize <= count ) {
  29.                 setInventorySlotContents( slot, null );
  30.             } else {
  31.                 itemStack.splitStack( count );
  32.                 onInventoryChanged();
  33.             }
  34.         }
  35.         return itemStack;
  36.     }
  37.  
  38.     @Override
  39.     public ItemStack getStackInSlotOnClosing( int slot ) {
  40.         ItemStack itemStack = getStackInSlot( slot );
  41.         setInventorySlotContents( slot, null );
  42.         return itemStack;
  43.     }
  44.  
  45.     @Override
  46.     public void setInventorySlotContents( int slot, ItemStack itemStack ) {
  47.         items[ slot ] = itemStack;
  48.         onInventoryChanged();
  49.     }
  50.  
  51.     @Override
  52.     public String getInvName() {
  53.         return "Vending Machine";
  54.     }
  55.  
  56.     @Override
  57.     public boolean isInvNameLocalized() {
  58.         return false;
  59.     }
  60.  
  61.     @Override
  62.     public int getInventoryStackLimit() {
  63.         return 64;
  64.     }
  65.  
  66.     @Override
  67.     public boolean isUseableByPlayer( EntityPlayer entityplayer ) {
  68.         return entityplayer.getDistanceSq( xCoord + 0.5, yCoord + 0.5, zCoord + 0.5 ) <= 64;
  69.     }
  70.  
  71.     @Override
  72.     public void openChest() {
  73.     }
  74.  
  75.     @Override
  76.     public void closeChest() {
  77.     }
  78.  
  79.     @Override
  80.     public boolean isItemValidForSlot( int slot, ItemStack itemStack ) {
  81.         ItemStack sellStack = getStackInSlot( 18 );
  82.         ItemStack buyStack = getStackInSlot( 19 );
  83.         if( slot == 18 ) {
  84.             return !( buyStack != null && itemStack.itemID == buyStack.itemID );
  85.         } else if( slot == 19 ) {
  86.             return !( sellStack != null && itemStack.itemID == sellStack.itemID );
  87.         } else if( slot < 9 ) {
  88.             return ( sellStack != null && itemStack.itemID == sellStack.itemID );
  89.         } else if( slot >= 9 && slot <= 17 ) {
  90.             return ( buyStack != null && itemStack.itemID == buyStack.itemID );
  91.         }
  92.         return false;
  93.     }
  94.  
  95.     @Override
  96.     public void writeToNBT( NBTTagCompound compound ) {
  97.         super.writeToNBT( compound );
  98.         NBTTagList items = new NBTTagList();
  99.         for( int i = 0; i < this.items.length; i++ ) {
  100.             ItemStack stack = getStackInSlot( i );
  101.             if( stack != null ) {
  102.                 NBTTagCompound item = new NBTTagCompound();
  103.                 item.setByte( "slot", (byte)i );
  104.                 stack.writeToNBT( item );
  105.                 items.appendTag( item );
  106.             }
  107.         }
  108.         compound.setTag( "items", items );
  109.     }
  110.  
  111.     @Override
  112.     public void readFromNBT( NBTTagCompound compound ) {
  113.         super.readFromNBT( compound );
  114.         NBTTagList items = compound.getTagList( "items" );
  115.         for( int i = 0; i < items.tagCount(); i++ ) {
  116.             NBTTagCompound item = (NBTTagCompound)items.tagAt( i );
  117.             int slot = item.getByte( "slot" );
  118.             if( slot >= 0 && slot < getSizeInventory() ) {
  119.                 setInventorySlotContents( slot, ItemStack.loadItemStackFromNBT( item ) );
  120.             }
  121.         }
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement