@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;
}