Got imprinter to not crash

This commit is contained in:
Henry Mao 2013-02-02 16:34:58 +08:00
parent 39aa469436
commit f9eb91bbbe
3 changed files with 59 additions and 55 deletions

View file

@ -9,6 +9,7 @@ import assemblyline.common.AssemblyLine;
public class ContainerImprinter extends Container implements ISlotWatcher
{
private InventoryPlayer inventoryPlayer;
public TileEntityImprinter tileEntity;
@ -24,7 +25,7 @@ public class ContainerImprinter extends Container implements ISlotWatcher
{
for (int y = 0; y < 3; y++)
{
this.addSlotToContainer(new Slot(this.tileEntity, y + x, 9 + y * 18, 16 + x * 18));
this.addSlotToContainer(new Slot(this.tileEntity, y + x * 3, 9 + y * 18, 16 + x * 18));
}
}
@ -36,11 +37,11 @@ public class ContainerImprinter extends Container implements ISlotWatcher
this.addSlotToContainer(new SlotCraftingResult(this, this.tileEntity, TileEntityImprinter.IMPRINTER_MATRIX_START + 2, 148, 34));
// Imprinter Inventory
for (int i = 0; i < 9; i++)
for (int ii = 0; ii < 2; ii++)
{
for (int ii = 0; ii < 2; ii++)
for (int i = 0; i < 9; i++)
{
this.addSlotToContainer(new WatchedSlot(this.tileEntity, i + this.tileEntity.imprinterMatrix.length - 1, 8 + i * 18, 80 + ii * 18, this));
this.addSlotToContainer(new WatchedSlot(this.tileEntity, (i + ii * 9) + this.tileEntity.INVENTORY_START, 8 + i * 18, 80 + ii * 18, this));
}
}

View file

@ -1,14 +0,0 @@
package assemblyline.common.machine.imprinter;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.InventoryCrafting;
public class InventoryImprinterCrafting extends InventoryCrafting
{
public InventoryImprinterCrafting(Container par1Container, int par2, int par3)
{
super(par1Container, par2, par3);
}
}

View file

@ -34,7 +34,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
/**
* 9 slots for crafting, 1 slot for an imprint, 1 slot for an item
*/
public InventoryImprinterCrafting craftingMatrix = new InventoryImprinterCrafting(null, 3, 3);
public ItemStack[] craftingMatrix = new ItemStack[9];
public ItemStack[] imprinterMatrix = new ItemStack[3];
@ -67,18 +67,47 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
@Override
public int getSizeInventory()
{
return this.imprinterMatrix.length + this.containingItems.length;
return this.craftingMatrix.length + this.imprinterMatrix.length + this.containingItems.length;
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
*/
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack)
{
if (slot < this.getSizeInventory())
{
if (slot < IMPRINTER_MATRIX_START)
{
this.craftingMatrix[slot] = itemStack;
}
else if (slot < INVENTORY_START)
{
this.imprinterMatrix[slot - IMPRINTER_MATRIX_START] = itemStack;
}
else
{
this.containingItems[slot - INVENTORY_START] = itemStack;
}
}
}
@Override
public ItemStack getStackInSlot(int slot)
{
if (slot < 9)
if (slot < IMPRINTER_MATRIX_START)
{
return this.craftingMatrix.getStackInSlot(slot);
return this.craftingMatrix[slot];
}
else if (slot < INVENTORY_START)
{
return this.imprinterMatrix[slot - IMPRINTER_MATRIX_START];
}
else
{
return this.containingItems[slot - INVENTORY_START];
}
else if (slot < 11) { return this.imprinterMatrix[slot - IMPRINTER_MATRIX_START]; }
return this.containingItems[slot - IMPRINTER_MATRIX_START];
}
/**
@ -87,23 +116,23 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
@Override
public ItemStack decrStackSize(int i, int amount)
{
if (this.containingItems[i] != null)
if (this.getStackInSlot(i) != null)
{
ItemStack var3;
if (this.containingItems[i].stackSize <= amount)
if (this.getStackInSlot(i).stackSize <= amount)
{
var3 = this.containingItems[i];
this.containingItems[i] = null;
var3 = this.getStackInSlot(i);
this.setInventorySlotContents(i, null);
return var3;
}
else
{
var3 = this.containingItems[i].splitStack(amount);
var3 = this.getStackInSlot(i).splitStack(amount);
if (this.containingItems[i].stackSize == 0)
if (this.getStackInSlot(i).stackSize == 0)
{
this.containingItems[i] = null;
this.setInventorySlotContents(i, null);
}
return var3;
@ -121,10 +150,10 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
@Override
public ItemStack getStackInSlotOnClosing(int slot)
{
if (this.containingItems[slot] != null && slot != 2)
if (this.getStackInSlot(slot) != null && slot != 2)
{
ItemStack var2 = this.containingItems[slot];
this.containingItems[slot] = null;
ItemStack var2 = this.getStackInSlot(slot);
this.setInventorySlotContents(slot, null);
return var2;
}
else
@ -133,18 +162,6 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
}
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
*/
@Override
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
if (par1 < this.containingItems.length)
{
this.containingItems[par1] = par2ItemStack;
}
}
@Override
public String getInvName()
{
@ -405,14 +422,14 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
this.containingItems = new ItemStack[this.getSizeInventory()];
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
for (int i = 0; i < var2.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) var2.tagAt(var3);
NBTTagCompound var4 = (NBTTagCompound) var2.tagAt(i);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < this.containingItems.length)
if (var5 >= 0 && var5 < this.getSizeInventory())
{
this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4);
this.setInventorySlotContents(i, ItemStack.loadItemStackFromNBT(var4));
}
}
}
@ -427,13 +444,13 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
NBTTagList var2 = new NBTTagList();
for (int var3 = 0; var3 < this.containingItems.length; ++var3)
for (int i = 0; i < this.getSizeInventory(); ++i)
{
if (this.containingItems[var3] != null)
if (this.getStackInSlot(i) != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte) var3);
this.containingItems[var3].writeToNBT(var4);
var4.setByte("Slot", (byte) i);
this.getStackInSlot(i).writeToNBT(var4);
var2.appendTag(var4);
}
}