/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.carts;
import mods.railcraft.common.util.crafting.DyeHelper;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;
import mods.railcraft.common.util.inventory.InvTools;
import mods.railcraft.common.util.misc.EnumColor;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class LocomotivePaintingRecipe implements IRecipe {
private final ItemStack locomotive;
public LocomotivePaintingRecipe(ItemStack locomotive) {
this.locomotive = locomotive;
InvTools.addNBTTag(locomotive, "gregfix", "get the hell off my lawn!");
}
private boolean isDye(ItemStack stack) {
return getDye(stack) != -1;
}
private int getDye(ItemStack stack) {
for (EnumColor color : EnumColor.VALUES) {
if (InvTools.isItemEqual(stack, DyeHelper.getDyes().get(color)))
return color.ordinal();
}
return -1;
}
private boolean isLocomotive(ItemStack loco) {
return InvTools.isItemEqualIgnoreNBT(this.locomotive, loco);
}
@Override
public boolean matches(InventoryCrafting craftingGrid, World var2) {
if (craftingGrid.getSizeInventory() < getRecipeSize())
return false;
ItemStack dyePrimary = craftingGrid.getStackInRowAndColumn(1, 0);
if (!isDye(dyePrimary))
return false;
ItemStack cart = craftingGrid.getStackInRowAndColumn(1, 1);
if (!isLocomotive(cart))
return false;
ItemStack dyeSecondary = craftingGrid.getStackInRowAndColumn(1, 2);
return isDye(dyeSecondary);
}
@Override
public ItemStack getCraftingResult(InventoryCrafting craftingGrid) {
ItemStack dyePrimary = craftingGrid.getStackInRowAndColumn(1, 0);
ItemStack loco = craftingGrid.getStackInRowAndColumn(1, 1);
ItemStack dyeSecondary = craftingGrid.getStackInRowAndColumn(1, 2);
if (loco == null)
return null;
ItemStack result = loco.copy();
ItemLocomotive.setItemColorData(result, getDye(dyePrimary), getDye(dyeSecondary));
return result;
}
@Override
public int getRecipeSize() {
return 9;
}
@Override
public ItemStack getRecipeOutput() {
return locomotive;
}
}