13
0
geforkt von Mirrors/Paper
Paper/src/main/java/net/minecraft/server/InventoryPlayer.java
2011-01-14 13:31:10 +00:00

343 Zeilen
7.9 KiB
Java

package net.minecraft.server;
public class InventoryPlayer implements IInventory {
public ItemStack a[];
public ItemStack b[];
public int c;
private EntityPlayer e;
private ItemStack f;
public boolean d;
// CraftBukkit start
public ItemStack[] getContents() {
return a;
}
public ItemStack[] getArmorContents() {
return b;
}
// CraftBukkit end
public InventoryPlayer(EntityPlayer entityplayer) {
a = new ItemStack[36];
b = new ItemStack[4];
c = 0;
d = false;
e = entityplayer;
}
public ItemStack e() {
return a[c];
}
private int d(int k) {
for (int l = 0; l < a.length; l++) {
if (a[l] != null && a[l].c == k) {
return l;
}
}
return -1;
}
private int c(ItemStack itemstack) {
for (int k = 0; k < a.length; k++) {
if (a[k] != null && a[k].c == itemstack.c && a[k].c() && a[k].a < a[k].b() && a[k].a < c() && (!a[k].e() || a[k].h() == itemstack.h())) {
return k;
}
}
return -1;
}
private int j() {
for (int k = 0; k < a.length; k++) {
if (a[k] == null) {
return k;
}
}
return -1;
}
private int d(ItemStack itemstack) {
int k = itemstack.c;
int l = itemstack.a;
int i1 = c(itemstack);
if (i1 < 0) {
i1 = j();
}
if (i1 < 0) {
return l;
}
if (a[i1] == null) {
a[i1] = new ItemStack(k, 0, itemstack.h());
}
int j1 = l;
if (j1 > a[i1].b() - a[i1].a) {
j1 = a[i1].b() - a[i1].a;
}
if (j1 > c() - a[i1].a) {
j1 = c() - a[i1].a;
}
if (j1 == 0) {
return l;
} else {
l -= j1;
a[i1].a += j1;
a[i1].b = 5;
return l;
}
}
public void f() {
for (int k = 0; k < a.length; k++) {
if (a[k] != null && a[k].b > 0) {
a[k].b--;
}
}
}
public boolean b(int k) {
int l = d(k);
if (l < 0) {
return false;
}
if (--a[l].a <= 0) {
a[l] = null;
}
return true;
}
public boolean a(ItemStack itemstack) {
if (!itemstack.f()) {
itemstack.a = d(itemstack);
if (itemstack.a == 0) {
return true;
}
}
int k = j();
if (k >= 0) {
a[k] = itemstack;
a[k].b = 5;
return true;
} else {
return false;
}
}
public ItemStack b(int k, int l) {
ItemStack aitemstack[] = a;
if (k >= a.length) {
aitemstack = b;
k -= a.length;
}
if (aitemstack[k] != null) {
if (aitemstack[k].a <= l) {
ItemStack itemstack = aitemstack[k];
aitemstack[k] = null;
return itemstack;
}
ItemStack itemstack1 = aitemstack[k].a(l);
if (aitemstack[k].a == 0) {
aitemstack[k] = null;
}
return itemstack1;
} else {
return null;
}
}
public void a(int k, ItemStack itemstack) {
ItemStack aitemstack[] = a;
if (k >= aitemstack.length) {
k -= aitemstack.length;
aitemstack = b;
}
aitemstack[k] = itemstack;
}
public float a(Block block) {
float f1 = 1.0F;
if (a[c] != null) {
f1 *= a[c].a(block);
}
return f1;
}
public NBTTagList a(NBTTagList nbttaglist) {
for (int k = 0; k < a.length; k++) {
if (a[k] != null) {
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.a("Slot", (byte) k);
a[k].a(nbttagcompound);
nbttaglist.a(((NBTBase) (nbttagcompound)));
}
}
for (int l = 0; l < b.length; l++) {
if (b[l] != null) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.a("Slot", (byte) (l + 100));
b[l].a(nbttagcompound1);
nbttaglist.a(((NBTBase) (nbttagcompound1)));
}
}
return nbttaglist;
}
public void b(NBTTagList nbttaglist) {
a = new ItemStack[36];
b = new ItemStack[4];
for (int k = 0; k < nbttaglist.b(); k++) {
NBTTagCompound nbttagcompound = (NBTTagCompound) nbttaglist.a(k);
int l = nbttagcompound.b("Slot") & 0xff;
ItemStack itemstack = new ItemStack(nbttagcompound);
if (itemstack.a() == null) {
continue;
}
if (l >= 0 && l < a.length) {
a[l] = itemstack;
}
if (l >= 100 && l < b.length + 100) {
b[l - 100] = itemstack;
}
}
}
public int h_() {
return a.length + 4;
}
public ItemStack a(int k) {
ItemStack aitemstack[] = a;
if (k >= aitemstack.length) {
k -= aitemstack.length;
aitemstack = b;
}
return aitemstack[k];
}
public String b() {
return "Inventory";
}
public int c() {
return 64;
}
public int a(Entity entity) {
ItemStack itemstack = a(c);
if (itemstack != null) {
return itemstack.a(entity);
} else {
return 1;
}
}
public boolean b(Block block) {
if (block.bt != Material.d && block.bt != Material.e && block.bt != Material.t && block.bt != Material.s) {
return true;
}
ItemStack itemstack = a(c);
if (itemstack != null) {
return itemstack.b(block);
} else {
return false;
}
}
public int g() {
int k = 0;
int l = 0;
int i1 = 0;
for (int j1 = 0; j1 < b.length; j1++) {
if (b[j1] != null && (b[j1].a() instanceof ItemArmor)) {
int k1 = b[j1].i();
int l1 = b[j1].g();
int i2 = k1 - l1;
l += i2;
i1 += k1;
int j2 = ((ItemArmor) b[j1].a()).bh;
k += j2;
}
}
if (i1 == 0) {
return 0;
} else {
return ((k - 1) * l) / i1 + 1;
}
}
public void c(int k) {
for (int l = 0; l < b.length; l++) {
if (b[l] == null || !(b[l].a() instanceof ItemArmor)) {
continue;
}
b[l].b(k);
if (b[l].a == 0) {
b[l].a(e);
b[l] = null;
}
}
}
public void h() {
for (int k = 0; k < a.length; k++) {
if (a[k] != null) {
e.a(a[k], true);
a[k] = null;
}
}
for (int l = 0; l < b.length; l++) {
if (b[l] != null) {
e.a(b[l], true);
b[l] = null;
}
}
}
public void d() {
d = true;
}
public void b(ItemStack itemstack) {
f = itemstack;
e.a(itemstack);
}
public ItemStack i() {
return f;
}
public boolean a_(EntityPlayer entityplayer) {
if (e.G) {
return false;
}
return entityplayer.b(((Entity) (e))) <= 64D;
}
}