package mods.ocminecart.common.recipe.event; import li.cil.oc.api.Items; import mods.ocminecart.common.items.ItemComputerCart; import mods.ocminecart.common.items.ModItems; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ComputerCartRomCrafting implements ICraftingToolHandler{ @Override public boolean match(IInventory grid, ItemStack result) { return this.findResult(grid)!=-1 && this.findRom(grid)!=-1 && !this.hasUselessItem(grid) && result!=null && result.getItem() == ModItems.item_ComputerCart; } @Override public List<ItemStack> getItems(IInventory grid, ItemStack result) { ArrayList<ItemStack> list = new ArrayList<ItemStack>(); Map<Integer,ItemStack> comp = ((ItemComputerCart) ModItems.item_ComputerCart).getComponentList(grid.getStackInSlot(this.findResult(grid))); if(comp.containsKey(ItemComputerCart.SLOT_ROM)){ ItemStack rom = comp.get(ItemComputerCart.SLOT_ROM); rom.stackSize = 1; list.add(rom); } return list; } private int findRom(IInventory grid){ int size = grid.getSizeInventory(); for(int i=0; i<size; i+=1){ ItemStack stack = grid.getStackInSlot(i); if(stack!=null && Items.get(stack) == Items.get("eeprom")) return i; } return -1; } private int findResult(IInventory 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; } private boolean hasUselessItem(IInventory grid){ int rom = this.findRom(grid); int res = this.findResult(grid); int size = grid.getSizeInventory(); for(int i=0; i<size; i+=1){ ItemStack stack = grid.getStackInSlot(i); if(stack != null && i != rom && i !=res) return true; } return false; } }