public class OTileEntityFurnace extends OTileEntity implements OIInventory, Container<OItemStack> {
private OItemStack[] h = new OItemStack[3];
public int a = 0;
public int b = 0;
public int c = 0;
private String name = "Furnace";
public int q_() {
return h.length;
}
public OItemStack[] getContents() {
int size = getContentsSize();
OItemStack[] result = new OItemStack[size];
for (int i = 0; i < size; i++)
result[i] = getContentsAt(i);
return result;
}
public void setContents(OItemStack[] values) {
int size = getContentsSize();
for (int i = 0; i < size; i++)
setContentsAt(i, values[i]);
}
public OItemStack getContentsAt(int index) {
return c_(index);
}
public void setContentsAt(int index, OItemStack value) {
a(index, value);
}
public int getContentsSize() {
return q_();
}
public String getName() {
return name;
}
public void setName(String value) {
name = value;
}
public OItemStack c_(int paramInt) {
return h[paramInt];
}
public OItemStack a(int paramInt1, int paramInt2) {
if (h[paramInt1] != null) {
if (h[paramInt1].a <= paramInt2) {
OItemStack localOItemStack = h[paramInt1];
h[paramInt1] = null;
return localOItemStack;
}
OItemStack localOItemStack = h[paramInt1].a(paramInt2);
if (h[paramInt1].a == 0)
h[paramInt1] = null;
return localOItemStack;
}
return null;
}
public void a(int paramInt, OItemStack paramOItemStack) {
h[paramInt] = paramOItemStack;
if ((paramOItemStack != null) && (paramOItemStack.a > r_()))
paramOItemStack.a = r_();
}
public String c() {
return name;
}
@Override
public void a(ONBTTagCompound paramONBTTagCompound) {
super.a(paramONBTTagCompound);
ONBTTagList localONBTTagList = paramONBTTagCompound.l("Items");
h = new OItemStack[q_()];
for (int i = 0; i < localONBTTagList.c(); i++) {
ONBTTagCompound localONBTTagCompound = (ONBTTagCompound) localONBTTagList.a(i);
int j = localONBTTagCompound.c("Slot");
if ((j < 0) || (j >= h.length))
continue;
h[j] = new OItemStack(localONBTTagCompound);
}
a = paramONBTTagCompound.d("BurnTime");
c = paramONBTTagCompound.d("CookTime");
b = a(h[1]);
}
@Override
public void b(ONBTTagCompound paramONBTTagCompound) {
super.b(paramONBTTagCompound);
paramONBTTagCompound.a("BurnTime", (short) a);
paramONBTTagCompound.a("CookTime", (short) c);
ONBTTagList localONBTTagList = new ONBTTagList();
for (int i = 0; i < h.length; i++)
if (h[i] != null) {
ONBTTagCompound localONBTTagCompound = new ONBTTagCompound();
localONBTTagCompound.a("Slot", (byte) i);
h[i].a(localONBTTagCompound);
localONBTTagList.a(localONBTTagCompound);
}
paramONBTTagCompound.a("Items", localONBTTagList);
}
public int r_() {
return 64;
}
public boolean f() {
return a > 0;
}
@Override
public void i_() {
int i = a > 0 ? 1 : 0;
int j = 0;
if (a > 0)
a -= 1;
if (!d.t) {
if ((a == 0) && (h())) {
b = (a = a(h[1]));
if (a > 0) {
j = 1;
if (h[1] != null) {
h[1].a -= 1;
if (h[1].a == 0)
h[1] = null;
}
}
}
if ((f()) && (h())) {
c += 1;
if (c == 200) {
c = 0;
g();
j = 1;
}
} else
c = 0;
if (i != (a > 0 ? 1 : 0)) {
j = 1;
OBlockFurnace.a(a > 0, d, e, f, g);
}
}
if (j != 0)
i();
}
private boolean h() {
if (h[0] == null)
return false;
OItemStack localOItemStack = OFurnaceRecipes.a().a(h[0].a().bd);
if (localOItemStack == null)
return false;
if (h[2] == null)
return true;
if (!h[2].a(localOItemStack))
return false;
if ((h[2].a < r_()) && (h[2].a < h[2].b()))
return true;
return h[2].a < localOItemStack.b();
}
public void g() {
if (!h())
return;
OItemStack localOItemStack = OFurnaceRecipes.a().a(h[0].a().bd);
if (h[2] == null)
h[2] = localOItemStack.j();
else if (h[2].c == localOItemStack.c)
h[2].a += 1;
h[0].a -= 1;
if (h[0].a <= 0)
h[0] = null;
}
private int a(OItemStack paramOItemStack) {
if (paramOItemStack == null)
return 0;
int i = paramOItemStack.a().bd;
if ((i < 256) && (OBlock.m[i].bw == OMaterial.c))
return 300;
if (i == OItem.B.bd)
return 100;
if (i == OItem.k.bd)
return 1600;
if (i == OItem.aw.bd)
return 20000;
return 0;
}
public boolean a_(OEntityPlayer paramOEntityPlayer) {
if (d.m(e, f, g) != this)
return false;
return paramOEntityPlayer.d(e + 0.5D, f + 0.5D, g + 0.5D) <= 64.0D;
}
}