diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 0bbde91c74..bd10bd0666 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -1334,7 +1334,7 @@ public class ForgeHooks return true; }, - true + true, true ); } } diff --git a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java index 0c4bdb819f..1650adda0f 100644 --- a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java +++ b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java @@ -726,16 +726,30 @@ public class CraftingHelper { IOUtils.closeQuietly(reader); } return true; - } + }, + true, true ); } - + /** + * @deprecated Use {@link CraftingHelper#findFiles(ModContainer, String, Function, BiFunction, boolean, boolean)} instead. + */ + @Deprecated public static boolean findFiles(ModContainer mod, String base, Function preprocessor, BiFunction processor) { - return findFiles(mod, base, preprocessor, processor, false); + return findFiles(mod, base, preprocessor, processor, false, false); } + + /** + * @deprecated Use {@link CraftingHelper#findFiles(ModContainer, String, Function, BiFunction, boolean, boolean)} instead. + */ + @Deprecated public static boolean findFiles(ModContainer mod, String base, Function preprocessor, BiFunction processor, boolean defaultUnfoundRoot) + { + return findFiles(mod, base, preprocessor, processor, defaultUnfoundRoot, false); + } + + public static boolean findFiles(ModContainer mod, String base, Function preprocessor, BiFunction processor, boolean defaultUnfoundRoot, boolean visitAllFiles) { FileSystem fs = null; try @@ -788,6 +802,8 @@ public class CraftingHelper { return false; } + boolean success = true; + if (processor != null) { Iterator itr = null; @@ -804,12 +820,19 @@ public class CraftingHelper { while (itr != null && itr.hasNext()) { Boolean cont = processor.apply(root, itr.next()); - if (cont == null || !cont.booleanValue()) + + if (visitAllFiles) + { + success &= cont != null && cont; + } + else if (cont == null || !cont) + { return false; + } } } - return true; + return success; } finally { diff --git a/src/test/resources/assets/crafting_system_test/recipes/oak_planks_from_logs.json b/src/test/resources/assets/crafting_system_test/recipes/oak_planks_from_logs.json new file mode 100644 index 0000000000..9c4f51ddbd --- /dev/null +++ b/src/test/resources/assets/crafting_system_test/recipes/oak_planks_from_logs.json @@ -0,0 +1,22 @@ +{ + "_comment": [ + "Cut an Oak Log into two Oak Planks with a Wooden Axe" + ], + "type": "minecraft:crafting_shapeless", + "group": "minecraft:planks", + "ingredients": [ + { + "item": "minecraft:wooden_axe", + "data": 32767 + }, + { + "item": "minecraft:log", + "data": 0 + } + ], + "result": { + "item": "minecraft:planks", + "data": 0, + "count": 2 + } +}