Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.IInventory;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.*;
- import net.minecraft.tileentity.TileEntity;
- public class TileEntityVendingMachine extends TileEntity implements IInventory {
- private ItemStack[] items;
- public TileEntityVendingMachine() {
- items = new ItemStack[ 20 ];
- }
- @Override
- public int getSizeInventory() {
- return items.length;
- }
- @Override
- public ItemStack getStackInSlot( int slot ) {
- return items[ slot ];
- }
- @Override
- public ItemStack decrStackSize( int slot, int count ) {
- ItemStack itemStack = getStackInSlot( slot );
- if( itemStack != null ) {
- if( itemStack.stackSize <= count ) {
- setInventorySlotContents( slot, null );
- } else {
- itemStack.splitStack( count );
- onInventoryChanged();
- }
- }
- return itemStack;
- }
- @Override
- public ItemStack getStackInSlotOnClosing( int slot ) {
- ItemStack itemStack = getStackInSlot( slot );
- setInventorySlotContents( slot, null );
- return itemStack;
- }
- @Override
- public void setInventorySlotContents( int slot, ItemStack itemStack ) {
- items[ slot ] = itemStack;
- onInventoryChanged();
- }
- @Override
- public String getInvName() {
- return "Vending Machine";
- }
- @Override
- public boolean isInvNameLocalized() {
- return false;
- }
- @Override
- public int getInventoryStackLimit() {
- return 64;
- }
- @Override
- public boolean isUseableByPlayer( EntityPlayer entityplayer ) {
- return entityplayer.getDistanceSq( xCoord + 0.5, yCoord + 0.5, zCoord + 0.5 ) <= 64;
- }
- @Override
- public void openChest() {
- }
- @Override
- public void closeChest() {
- }
- @Override
- public boolean isItemValidForSlot( int slot, ItemStack itemStack ) {
- ItemStack sellStack = getStackInSlot( 18 );
- ItemStack buyStack = getStackInSlot( 19 );
- if( slot == 18 ) {
- return !( buyStack != null && itemStack.itemID == buyStack.itemID );
- } else if( slot == 19 ) {
- return !( sellStack != null && itemStack.itemID == sellStack.itemID );
- } else if( slot < 9 ) {
- return ( sellStack != null && itemStack.itemID == sellStack.itemID );
- } else if( slot >= 9 && slot <= 17 ) {
- return ( buyStack != null && itemStack.itemID == buyStack.itemID );
- }
- return false;
- }
- @Override
- public void writeToNBT( NBTTagCompound compound ) {
- super.writeToNBT( compound );
- NBTTagList items = new NBTTagList();
- for( int i = 0; i < this.items.length; i++ ) {
- ItemStack stack = getStackInSlot( i );
- if( stack != null ) {
- NBTTagCompound item = new NBTTagCompound();
- item.setByte( "slot", (byte)i );
- stack.writeToNBT( item );
- items.appendTag( item );
- }
- }
- compound.setTag( "items", items );
- }
- @Override
- public void readFromNBT( NBTTagCompound compound ) {
- super.readFromNBT( compound );
- NBTTagList items = compound.getTagList( "items" );
- for( int i = 0; i < items.tagCount(); i++ ) {
- NBTTagCompound item = (NBTTagCompound)items.tagAt( i );
- int slot = item.getByte( "slot" );
- if( slot >= 0 && slot < getSizeInventory() ) {
- setInventorySlotContents( slot, ItemStack.loadItemStackFromNBT( item ) );
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement