@Nullable public static RecipePair<IFabricatorRecipe> findMatchingRecipe(ItemStack plan, IInventory resources) { ItemStack[][] gridResources = RecipeUtil.getResources(resources); for (IFabricatorRecipe recipe : recipes) { if (!recipe.getPlan().isEmpty() && !ItemStackUtil.isCraftingEquivalent(recipe.getPlan(), plan)) { continue; } String[][] oreDicts = RecipeUtil.matches(recipe.getIngredients(), recipe.getOreDicts(), recipe.getWidth(), recipe.getHeight(), gridResources); if (oreDicts != null) { return new RecipePair<>(recipe, oreDicts); } } return RecipePair.EMPTY; }