From 6b9b59db4e5b4e6012d66f13bcb951264c8260d0 Mon Sep 17 00:00:00 2001 From: Dinnerbone Date: Tue, 8 Feb 2011 14:22:52 +0000 Subject: [PATCH] Added getContents() to TileEntityDispenser to be compatible with InventoryChanged TileEntityDispenser to be built against latest mc-dev Merge branch 'merge-fork' of https://github.com/Hidendra/CraftBukkit --- .../minecraft/server/TileEntityDispenser.java | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 src/main/java/net/minecraft/server/TileEntityDispenser.java diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java new file mode 100644 index 0000000000..7c968fc88e --- /dev/null +++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java @@ -0,0 +1,120 @@ +package net.minecraft.server; + +import java.util.Random; + +public class TileEntityDispenser extends TileEntity implements IInventory { + + private ItemStack[] e = new ItemStack[9]; + private Random f = new Random(); + + // CraftBukkit start + public ItemStack[] getContents() { + return e; + } + // CraftBukkit end + + public TileEntityDispenser() {} + + public int h_() { + return 9; + } + + public ItemStack a(int i) { + return this.e[i]; + } + + public ItemStack b(int i, int j) { + if (this.e[i] != null) { + ItemStack itemstack; + + if (this.e[i].count <= j) { + itemstack = this.e[i]; + this.e[i] = null; + this.d(); + return itemstack; + } else { + itemstack = this.e[i].a(j); + if (this.e[i].count == 0) { + this.e[i] = null; + } + + this.d(); + return itemstack; + } + } else { + return null; + } + } + + public ItemStack e() { + int i = -1; + int j = 1; + + for (int k = 0; k < this.e.length; ++k) { + if (this.e[k] != null && this.f.nextInt(j) == 0) { + i = k; + ++j; + } + } + + if (i >= 0) { + return this.b(i, 1); + } else { + return null; + } + } + + public void a(int i, ItemStack itemstack) { + this.e[i] = itemstack; + if (itemstack != null && itemstack.count > this.c()) { + itemstack.count = this.c(); + } + + this.d(); + } + + public String b() { + return "Trap"; + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + NBTTagList nbttaglist = nbttagcompound.k("Items"); + + this.e = new ItemStack[this.h_()]; + + for (int i = 0; i < nbttaglist.b(); ++i) { + NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i); + int j = nbttagcompound1.b("Slot") & 255; + + if (j >= 0 && j < this.e.length) { + this.e[j] = new ItemStack(nbttagcompound1); + } + } + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + NBTTagList nbttaglist = new NBTTagList(); + + for (int i = 0; i < this.e.length; ++i) { + if (this.e[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound1.a("Slot", (byte) i); + this.e[i].a(nbttagcompound1); + nbttaglist.a((NBTBase) nbttagcompound1); + } + } + + nbttagcompound.a("Items", (NBTBase) nbttaglist); + } + + public int c() { + return 64; + } + + public boolean a_(EntityHuman entityhuman) { + return this.a.getTileEntity(this.b, this.c, this.d) != this ? false : entityhuman.d((double) this.b + 0.5D, (double) this.c + 0.5D, (double) this.d + 0.5D) <= 64.0D; + } +} \ No newline at end of file