From c2022a72088375e7275328e9def265cb560e7849 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 --- build.gradle | 3 +- src/main/java/appeng/core/RecipeLoader.java | 8 +- .../recipes/loader/RecipeResourceCopier.java | 60 ++++- .../oredict/vanilla.oredict | 11 - .../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 | 50 +--- .../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 -------------- .../ae2.oredict => recipes/oredict.recipe} | 14 +- .../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 - 103 files changed, 1598 insertions(+), 1646 deletions(-) delete mode 100644 src/main/resources/assets/appliedenergistics2/oredict/vanilla.oredict 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 rename src/main/resources/assets/appliedenergistics2/{oredict/ae2.oredict => recipes/oredict.recipe} (50%) 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/build.gradle b/build.gradle index c800e027..767f48d9 100644 --- a/build.gradle +++ b/build.gradle @@ -98,9 +98,8 @@ sourceSets { resources { srcDir "src/main/resources/" - include "assets/appliedenergistics2/recipes/*.recipe", + include "assets/appliedenergistics2/recipes/**/*.recipe", "assets/appliedenergistics2/recipes/README.html", - "assets/appliedenergistics2/oredict/*.oredict", "assets/appliedenergistics2/lang/*.lang", "assets/appliedenergistics2/textures/blocks/*", "assets/appliedenergistics2/textures/guis/*", diff --git a/src/main/java/appeng/core/RecipeLoader.java b/src/main/java/appeng/core/RecipeLoader.java index 93745144..b5668e50 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 com.google.common.base.Preconditions; @@ -29,7 +30,6 @@ import com.google.common.base.Preconditions; import org.apache.commons.io.FileUtils; import appeng.api.recipes.IRecipeHandler; -import appeng.api.recipes.IRecipeLoader; import appeng.recipes.loader.ConfigLoader; import appeng.recipes.loader.JarLoader; import appeng.recipes.loader.RecipeResourceCopier; @@ -69,11 +69,7 @@ public class RecipeLoader implements Runnable final File readmeGenDest = new File( generatedRecipesDir, "README.html" ); final File readmeUserDest = new File( userRecipesDir, "README.html" ); - final IRecipeLoader oreDictLoader = new JarLoader( "/assets/appliedenergistics2/oredict/" ); - this.handler.parseRecipes( oreDictLoader, "vanilla.oredict" ); - this.handler.parseRecipes( oreDictLoader, "ae2.oredict" ); - - // 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 80973c9b..f2151ef7 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/oredict/vanilla.oredict b/src/main/resources/assets/appliedenergistics2/oredict/vanilla.oredict deleted file mode 100644 index 0b396528..00000000 --- a/src/main/resources/assets/appliedenergistics2/oredict/vanilla.oredict +++ /dev/null @@ -1,11 +0,0 @@ -# Forge Ore Dictionary -# logWood, slabWood, stairWood, treeSapling, treeLeaves, -# oreGold, oreIron, oreLapis, oreDiamond, oreRedstone, oreEmerald, oreQuartz, oreCoal, -# stone, cobblestone, record, stickWood, plankWood, -# dyeBlack, dyeRed, dyeGreen, dyeBrown, dyeBlue, dyePurple, dyeCyan, dyeLightGray, dyeGray, dyePink, dyeLime, dyeYellow, dyeLightBlue, dyeMagenta, dyeOrange, dyeWhite - -# Minecraft Ore Dict Entries -# Renamed for less clashing -ore=mc:quartz -> crystalNetherQuartz -ore=mc:wool:* -> blockWool -ore=mc:stained_hardened_clay:* -> blockStainedHardenedClay diff --git a/src/main/resources/assets/appliedenergistics2/recipes/README.html b/src/main/resources/assets/appliedenergistics2/recipes/README.html index 6266574c..662caf1c 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/README.html +++ b/src/main/resources/assets/appliedenergistics2/recipes/README.html @@ -328,6 +328,7 @@

Import