package openblocks.common.recipe;
import com.google.common.collect.Lists;
import java.util.List;
import net.minecraft.init.Items;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import openblocks.OpenBlocks;
import openblocks.common.item.ItemImaginary;
import openmods.utils.ItemUtils;
public class CrayonGlassesRecipe extends ShapelessRecipes {
private static List<ItemStack> createFakeIngredientsList() {
ItemStack block = new ItemStack(OpenBlocks.Blocks.imaginary, 1, ItemImaginary.DAMAGE_CRAYON);
ItemImaginary.setupValues(0x00FFFF, block);
return Lists.newArrayList(new ItemStack(Items.paper), block);
}
private static ItemStack createFakeResult() {
return OpenBlocks.Items.crayonGlasses.createCrayonGlasses(0x00FFFF);
}
public CrayonGlassesRecipe() {
super(createFakeResult(), createFakeIngredientsList()); // just for NEI
}
@Override
public boolean matches(InventoryCrafting inv, World world) {
boolean gotCrayon = false;
boolean gotPaper = false;
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack != null) {
if (stack.getItem() instanceof ItemImaginary) {
if (gotCrayon || ItemImaginary.getUses(stack) < ItemImaginary.CRAFTING_COST) return false;
gotCrayon = true;
} else if (stack.getItem() == Items.paper) {
if (gotPaper) return false;
gotPaper = true;
} else return false;
}
}
return gotCrayon && gotPaper;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting inv) {
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack != null && stack.getItem() instanceof ItemImaginary) {
NBTTagCompound tag = ItemUtils.getItemTag(stack);
int color = tag.getInteger(ItemImaginary.TAG_COLOR);
return OpenBlocks.Items.crayonGlasses.createCrayonGlasses(color);
}
}
return null;
}
@Override
public int getRecipeSize() {
return 2;
}
}