package mods.ocminecart.common.recipe; import mods.ocminecart.common.items.ItemComputerCart; import mods.ocminecart.common.items.ModItems; import mods.ocminecart.common.util.ComputerCartData; import mods.railcraft.api.core.items.IToolCrowbar; import mods.railcraft.common.emblems.EmblemToolsServer; import mods.railcraft.common.emblems.ItemEmblem; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; public class EmblemCrafting implements IRecipe { @Override public boolean matches(InventoryCrafting grid, World p_77569_2_) { int e = findEmblem(grid); int c = findCrowbar(grid); return (findResult(grid)!=-1 && ((e!=-1 && c==-1) || (e==-1 && c!=-1))); } @Override public ItemStack getCraftingResult(InventoryCrafting grid) { if(!matches(grid,null)) return null; int e = findEmblem(grid); int c = findCrowbar(grid); int r = findResult(grid); ItemStack res = grid.getStackInSlot(r).copy(); ComputerCartData data = ItemComputerCart.getData(res); if(data==null) data = new ComputerCartData(); if(c!=-1) data.setEmblem(""); else if(e!=-1){ String emid = EmblemToolsServer.getEmblemIdentifier(grid.getStackInSlot(e)); data.setEmblem(emid); } ItemComputerCart.setData(res, data); return res; } @Override public int getRecipeSize() { return 2; } @Override public ItemStack getRecipeOutput() { return new ItemStack(ModItems.item_ComputerCart,1); } private int findEmblem(InventoryCrafting grid){ int size = grid.getSizeInventory(); for(int i=0; i<size; i+=1){ ItemStack stack = grid.getStackInSlot(i); if(stack!=null && stack.getItem() == ItemEmblem.item) return i; } return -1; } private int findCrowbar(InventoryCrafting grid){ int size = grid.getSizeInventory(); for(int i=0; i<size; i+=1){ ItemStack stack = grid.getStackInSlot(i); if(stack!=null && (stack.getItem() instanceof IToolCrowbar)) return i; } return -1; } private int findResult(InventoryCrafting grid){ int size = grid.getSizeInventory(); for(int i=0; i<size; i+=1){ ItemStack stack = grid.getStackInSlot(i); if(stack!=null && stack.getItem() == ModItems.item_ComputerCart) return i; } return -1; } }