package advancedsystemsmanager.recipes; import advancedsystemsmanager.registry.ClusterRegistry; import advancedsystemsmanager.tileentities.TileEntityQuantumCable; import net.minecraft.init.Items; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class QuantumCraftingRecipe implements IRecipe { @Override public boolean matches(InventoryCrafting inventoryCrafting, World world) { int enderPearl = 0; int enderEye = 0; boolean hasCable = false; ItemStack cable = ClusterRegistry.CABLE.getItemStack(); for (int i = 0; i < inventoryCrafting.getSizeInventory(); i++) { ItemStack item = inventoryCrafting.getStackInSlot(i); if (item != null) { if (item.isItemEqual(cable)) { if (hasCable) return false; else hasCable = true; } else if (item.getItem() == Items.ender_pearl) { enderPearl++; } else if (item.getItem() == Items.ender_eye) { enderEye++; } else { return false; } } } return hasCable && enderEye + enderPearl > 0; } @Override public ItemStack getCraftingResult(InventoryCrafting inventoryCrafting) { int enderPearl = 0; int enderEye = 0; boolean hasCable = false; ItemStack cable = ClusterRegistry.CABLE.getItemStack(); for (int i = 0; i < inventoryCrafting.getSizeInventory(); i++) { ItemStack item = inventoryCrafting.getStackInSlot(i); if (item != null) { if (item.isItemEqual(cable)) { if (hasCable) return null; else hasCable = true; } else if (item.getItem() == Items.ender_pearl) { enderPearl++; } else if (item.getItem() == Items.ender_eye) { enderEye++; } else { return null; } } } int quantumRange = enderEye < 8 ? enderPearl + enderEye : 9; if (quantumRange == 0) { return null; } ItemStack result = ClusterRegistry.QUANTUM.getItemStack(); result.stackSize = 2; NBTTagCompound tagCompound = new NBTTagCompound(); tagCompound.setInteger(TileEntityQuantumCable.NBT_QUANTUM_RANGE, quantumRange); result.setTagCompound(tagCompound); return result; } @Override public int getRecipeSize() { return 9; } @Override public ItemStack getRecipeOutput() { return ClusterRegistry.QUANTUM.getItemStack(); } }