I moved everything down to getRecipeOutput, but it's still not working. Any ideas?
public class Destack implements IRecipe {
public final ItemStack recipeInput;
public Destack () {
ItemStack inStack = new ItemStack(DenseCraft.stackOf);
inStack.stackTagCompound = new NBTTagCompound();
this.recipeInput = inStack;
}
@Override
public boolean matches(InventoryCrafting crafting, World world) {
int numberOfItemsInGrid = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
ItemStack item = crafting.getStackInRowAndColumn(i, j);
if (item != null) {
numberOfItemsInGrid++;
}
}
}
if (numberOfItemsInGrid == 1) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
ItemStack item = crafting.getStackInRowAndColumn(i, j);
if (item != null) {
return (item == recipeInput);
}
}
}
}
return false;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting crafting) {
return getRecipeOutput().copy();
}
@Override
public int getRecipeSize() {
return 1;
}
@Override
public ItemStack getRecipeOutput() {
ItemStack inStack = this.recipeInput;
ItemStack outStack = new ItemStack(DenseCraft.stackOf);
outStack.stackTagCompound = new NBTTagCompound();
if (inStack.stackTagCompound.getInteger("iterations") > 1) {
outStack.stackTagCompound.setInteger("iterations", inStack.stackTagCompound.getInteger("iterations")-1);
outStack.stackTagCompound.setInteger("itemid", inStack.stackTagCompound.getInteger("itemid"));
return outStack;
} else if (inStack.stackTagCompound.getInteger("iterations") == 1) {
return new ItemStack(
Item.getItemById(inStack.stackTagCompound.getInteger("itemid")),
new ItemStack(Item.getItemById(inStack.stackTagCompound.getInteger("itemid"))).getMaxStackSize()
);
} else {
return inStack;
}
}
}