package openblocks.common.recipe;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;
import openblocks.OpenBlocks.Blocks;
import openblocks.common.item.ItemImaginary;
import openmods.utils.ItemUtils;
public class CrayonMixingRecipe implements IRecipe {
@Override
public boolean matches(InventoryCrafting inv, World world) {
int count = 0;
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack == null) continue;
if (!(stack.getItem() instanceof ItemImaginary)
|| !ItemImaginary.isCrayon(stack))
return false;
if (ItemImaginary.getUses(stack) < ItemImaginary.CRAFTING_COST) continue;
count++;
}
return count > 1;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting inv) {
int count = 0;
float r = 0, g = 0, b = 0;
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack == null
|| (ItemImaginary.getUses(stack) < ItemImaginary.CRAFTING_COST))
continue;
count++;
int color = ItemUtils.getInt(stack, ItemImaginary.TAG_COLOR);
r += ((color >> 16) & 0xFF);
g += ((color >> 8) & 0xFF);
b += ((color >> 0) & 0xFF);
}
if (count < 2) return null;
int color = (int)(r / count);
color = (color << 8) + (int)(g / count);
color = (color << 8) + (int)(b / count);
return ItemImaginary.setupValues(color, new ItemStack(Blocks.imaginary), count * 0.9f);
}
@Override
public int getRecipeSize() {
return 9;
}
@Override
public ItemStack getRecipeOutput() {
return null;
}
}