From 84fa5a38e0ac996778a8465a33739e33d118c705 Mon Sep 17 00:00:00 2001 From: yueh Date: Sat, 15 Aug 2015 17:19:56 +0200 Subject: [PATCH] Reorganizes the recipes in a more reasonable way. The recipes are now structured into multipe subfolder and split into more distinct files, so the names are more appropriate and are better at hinting which items the actually contain. It also extends the RecipeResourceCopier to now handle the folder recursively and extract all subdirectories and their files. "import=" is currently requiring a relative path to the root directory of the recipes. This would require a larger rewrite/refactoring, thus it is kept for now until a potentially later changer. This reverts splitting the oredict entries into their own directory and moves them back into the recipes folder, as it currently is causing a couple of issues like not being able to resolve the aliases or is not working indev. But to keep it seperate it is now its own recipe file. Fixes #1791 Reverts #1635 --- src/main/java/appeng/core/RecipeLoader.java | 3 +- .../recipes/loader/RecipeResourceCopier.java | 60 ++++- .../appliedenergistics2/recipes/README.html | 1 + .../recipes/aliases.recipe | 2 + .../recipes/crafting.recipe | 69 ----- .../recipes/decorative/certus.recipe | 8 + .../recipes/decorative/crystals.recipe | 30 +++ .../recipes/decorative/fixtures.recipe | 7 + .../recipes/decorative/index.recipe | 7 + .../recipes/decorative/quartzglass.recipe | 9 + .../recipes/decorative/skystone.recipe | 11 + .../recipes/{ => decorative}/slabs.recipe | 0 .../recipes/{ => decorative}/stairs.recipe | 0 .../recipes/dyes_covered.recipe | 96 ------- .../recipes/dyes_dense.recipe | 96 ------- .../recipes/dyes_glass.recipe | 96 ------- .../recipes/dyes_smart.recipe | 96 ------- .../appliedenergistics2/recipes/groups.recipe | 21 ++ .../recipes/hightech.recipe | 14 -- .../appliedenergistics2/recipes/index.recipe | 69 +---- .../recipes/materials/cards.recipe | 35 +++ .../recipes/materials/circuits.recipe | 15 ++ .../recipes/materials/cores.recipe | 7 + .../recipes/materials/index.recipe | 5 + .../recipes/materials/presses.recipe | 15 ++ .../recipes/materials/processors.recipe | 11 + .../recipes/misc/chests.recipe | 11 + .../recipes/misc/deconstruction.recipe | 15 ++ .../recipes/misc/fluixpearl.recipe | 5 + .../recipes/misc/grindstone.recipe | 17 ++ .../recipes/misc/index.recipe | 8 + .../recipes/misc/meteors.recipe | 5 + .../recipes/misc/seeds.recipe | 3 + .../recipes/misc/tinytnt.recipe | 4 + .../recipes/misc/vanilla.recipe | 21 ++ .../network/blocks/cellworkbench.recipe | 5 + .../recipes/network/blocks/controller.recipe | 5 + .../network/blocks/crystal-processing.recipe | 11 + .../recipes/network/blocks/energy.recipe | 23 ++ .../recipes/network/blocks/index.recipe | 11 + .../recipes/network/blocks/inscribers.recipe | 5 + .../recipes/network/blocks/interfaces.recipe | 13 + .../recipes/network/blocks/io.recipe | 11 + .../recipes/network/blocks/quantum.recipe | 13 + .../recipes/network/blocks/security.recipe | 5 + .../recipes/network/blocks/spatial-io.recipe | 11 + .../recipes/network/blocks/storage.recipe | 11 + .../recipes/network/cables/covered.recipe | 104 ++++++++ .../recipes/network/cables/dense.recipe | 104 ++++++++ .../recipes/network/cables/glass.recipe | 103 ++++++++ .../recipes/network/cables/index.recipe | 4 + .../recipes/network/cables/smart.recipe | 104 ++++++++ .../recipes/network/cells/empty.recipe | 5 + .../recipes/network/cells/index.recipe | 6 + .../network/cells/spatial-componets.recipe | 17 ++ .../recipes/network/cells/spatial.recipe | 26 ++ .../network/cells/storage-components.recipe | 23 ++ .../recipes/network/cells/storage.recipe | 35 +++ .../recipes/network/cells/view.recipe | 8 + .../recipes/network/crafting/assembler.recipe | 5 + .../recipes/network/crafting/cpu.recipe | 37 +++ .../recipes/network/crafting/index.recipe | 3 + .../recipes/network/crafting/patterns.recipe | 5 + .../recipes/network/index.recipe | 6 + .../recipes/network/parts/cable-anchor.recipe | 3 + .../recipes/network/parts/emitters.recipe | 3 + .../recipes/network/parts/index.recipe | 10 + .../recipes/network/parts/io-buses.recipe | 13 + .../recipes/network/parts/monitors.recipe | 7 + .../recipes/network/parts/panels.recipe | 17 ++ .../recipes/network/parts/planes.recipe | 25 ++ .../recipes/network/parts/quartz-fiber.recipe | 5 + .../recipes/network/parts/terminals.recipe | 15 ++ .../recipes/network/parts/toggle-buses.recipe | 13 + .../recipes/network/parts/tunnels.recipe | 5 + .../recipes/network/wireless.recipe | 22 ++ .../appliedenergistics2/recipes/new.recipe | 189 -------------- .../recipes/oredict.recipe | 29 +++ .../recipes/paint_balls.recipe | 195 -------------- .../appliedenergistics2/recipes/port.recipe | 238 ------------------ .../recipes/process.recipe | 232 ----------------- .../recipes/processing/factorization.recipe | 9 + .../recipes/processing/grind.recipe | 4 + .../recipes/processing/hydraulicraft.recipe | 9 + .../recipes/processing/ic2.recipe | 9 + .../recipes/processing/index.recipe | 8 + .../recipes/processing/mekanism.recipe | 9 + .../recipes/processing/rotarycraft.recipe | 9 + .../recipes/processing/te.recipe | 9 + .../recipes/processing/vanilla.recipe | 8 + .../recipes/storagecells.recipe | 133 ---------- .../appliedenergistics2/recipes/tools.recipe | 88 ------- .../recipes/tools/certus-quartz.recipe | 41 +++ .../recipes/tools/index.recipe | 6 + .../recipes/tools/matter-cannon.recipe | 5 + .../recipes/tools/misctools.recipe | 11 + .../recipes/tools/nether-quartz.recipe | 41 +++ .../recipes/tools/network.recipe | 23 ++ .../recipes/tools/paintballs.recipe | 191 ++++++++++++++ .../recipes/unsorted.recipe | 22 -- .../recipes/vanilla_enhance.recipe | 12 - 101 files changed, 1613 insertions(+), 1646 deletions(-) create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/aliases.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/crafting.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/certus.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/crystals.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/fixtures.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/quartzglass.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/decorative/skystone.recipe rename src/main/resources/assets/appliedenergistics2/recipes/{ => decorative}/slabs.recipe (100%) rename src/main/resources/assets/appliedenergistics2/recipes/{ => decorative}/stairs.recipe (100%) delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/dyes_covered.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/dyes_dense.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/dyes_glass.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/dyes_smart.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/groups.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/hightech.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/cards.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/circuits.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/cores.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/presses.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/processors.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/chests.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/deconstruction.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/fluixpearl.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/grindstone.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/meteors.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/seeds.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/tinytnt.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/misc/vanilla.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/cellworkbench.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/controller.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/crystal-processing.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/energy.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/inscribers.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/interfaces.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/io.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/quantum.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/security.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/spatial-io.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/blocks/storage.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cables/covered.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cables/dense.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cables/glass.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cables/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cables/smart.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/empty.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/spatial-componets.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/spatial.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage-components.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/cells/view.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/crafting/assembler.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/crafting/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/crafting/patterns.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/cable-anchor.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/emitters.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/io-buses.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/monitors.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/panels.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/planes.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/quartz-fiber.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/toggle-buses.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/tunnels.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/wireless.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/new.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/oredict.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/paint_balls.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/port.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/process.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/factorization.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/grind.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/hydraulicraft.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/ic2.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/mekanism.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/rotarycraft.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/te.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/processing/vanilla.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/storagecells.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/certus-quartz.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/index.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/matter-cannon.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/misctools.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/nether-quartz.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/network.recipe create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/tools/paintballs.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/unsorted.recipe delete mode 100644 src/main/resources/assets/appliedenergistics2/recipes/vanilla_enhance.recipe diff --git a/src/main/java/appeng/core/RecipeLoader.java b/src/main/java/appeng/core/RecipeLoader.java index b49336026..c7235cc5f 100644 --- a/src/main/java/appeng/core/RecipeLoader.java +++ b/src/main/java/appeng/core/RecipeLoader.java @@ -22,6 +22,7 @@ package appeng.core; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; + import javax.annotation.Nonnull; import org.apache.commons.io.FileUtils; @@ -68,7 +69,7 @@ public class RecipeLoader implements Runnable final File readmeGenDest = new File( generatedRecipesDir, "README.html" ); final File readmeUserDest = new File( userRecipesDir, "README.html" ); - // generates generated and user recipes dir + // generates generated and user recipes dir // will clean the generated every time to keep it up to date // copies over the recipes in the jar over to the generated folder // copies over the readmes diff --git a/src/main/java/appeng/recipes/loader/RecipeResourceCopier.java b/src/main/java/appeng/recipes/loader/RecipeResourceCopier.java index b2e5ff119..94fd5fee9 100644 --- a/src/main/java/appeng/recipes/loader/RecipeResourceCopier.java +++ b/src/main/java/appeng/recipes/loader/RecipeResourceCopier.java @@ -88,22 +88,60 @@ public class RecipeResourceCopier Preconditions.checkNotNull( destination ); Preconditions.checkArgument( destination.isDirectory() ); - final String[] listing = this.getResourceListing( this.getClass(), this.root ); + this.copyTo( destination, this.root ); + } + + /** + * @see {RecipeResourceCopier#copyTo(File)} + * + * @param destination destination folder to which the recipes are copied to + * @param directory the folder to copy. + * + * @throws URISyntaxException {@see #getResourceListing} + * @throws IOException {@see #getResourceListing} and if copying the detected resource to file is not possible + */ + private void copyTo( File destination, String directory ) throws URISyntaxException, IOException + { + assert destination != null; + assert directory != null; + + final String[] listing = this.getResourceListing( this.getClass(), directory ); for( String list : listing ) { if( list.endsWith( ".recipe" ) || list.endsWith( ".html" ) ) { - final InputStream inStream = this.getClass().getResourceAsStream( '/' + this.root + list ); - final File outFile = new File( destination, list ); - if( !outFile.exists() ) - { - if( inStream != null ) - { - FileUtils.copyInputStreamToFile( inStream, outFile ); - inStream.close(); - } - } + this.copyFile( destination, directory, list ); } + else if( !list.contains( "." ) ) + { + final File subDirectory = new File( destination, list ); + FileUtils.forceMkdir( subDirectory ); + this.copyTo( subDirectory, directory + list + "/" ); + } + } + } + + /** + * Copies a single file inside a folder to the destination. + * + * @param destination folder to which the file is copied to + * @param directory the directory containing the file + * @param fileName the fily to copy + * + * @throws IOException if copying the file is not possible + */ + private void copyFile( File destination, String directory, String fileName ) throws IOException + { + assert destination != null; + assert fileName != null; + + final InputStream inStream = this.getClass().getResourceAsStream( '/' + directory + fileName ); + final File outFile = new File( destination, fileName ); + + if( !outFile.exists() && inStream != null ) + { + FileUtils.copyInputStreamToFile( inStream, outFile ); + inStream.close(); } } diff --git a/src/main/resources/assets/appliedenergistics2/recipes/README.html b/src/main/resources/assets/appliedenergistics2/recipes/README.html index 6266574c3..662caf1ce 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/README.html +++ b/src/main/resources/assets/appliedenergistics2/recipes/README.html @@ -328,6 +328,7 @@

Import