From 11715dc8b6d3ea418d247234ee35c19266ba2081 Mon Sep 17 00:00:00 2001
From: Sara Freimer <sara@freimer.com>
Date: Wed, 6 Mar 2024 16:19:08 -0600
Subject: [PATCH] Add crusher recipe for turning obsidian to dust in
 preparation of removing the enricher recipe for it. And add a crusher recipe
 to convert blaze rods into dust and bones into bone meal

---
 .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e      |  5 ++++-
 .../data/mekanism/recipes/crushing/blaze_rod.json | 12 ++++++++++++
 .../data/mekanism/recipes/crushing/bone.json      | 12 ++++++++++++
 .../recipes/crushing/obsidian_to_dust.json        | 12 ++++++++++++
 .../common/recipe/impl/CrusherRecipeProvider.java | 15 +++++++++++++++
 .../recipe/impl/EnrichingRecipeProvider.java      |  1 +
 6 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 src/datagen/generated/mekanism/data/mekanism/recipes/crushing/blaze_rod.json
 create mode 100644 src/datagen/generated/mekanism/data/mekanism/recipes/crushing/bone.json
 create mode 100644 src/datagen/generated/mekanism/data/mekanism/recipes/crushing/obsidian_to_dust.json

diff --git a/src/datagen/generated/mekanism/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/mekanism/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e
index 19040df8eb8..225a61eebbe 100644
--- a/src/datagen/generated/mekanism/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e
+++ b/src/datagen/generated/mekanism/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e
@@ -1,4 +1,4 @@
-// Recipes	2024-03-06T17:41:40.2126862	Recipes
+// Recipes	2024-03-06T16:12:03.3234324	Recipes
 b574fccc069b2808af98aa53c8b809e72bcd053d data/mekanism/recipes/antiprotonic_nucleosynthesizer.json
 6be89827224a18f3aef522df254ae09cfe93304f data/mekanism/recipes/atomic_disassembler.json
 2f33c48a639876d68a3a712c24540c3f78c5e86f data/mekanism/recipes/bin/advanced.json
@@ -3037,6 +3037,8 @@ f034bf685ae2fb5a3ee22c7ead29da785ea1de7f data/mekanism/recipes/crushing/blacksto
 55d18062992bf3139b1a2505ff71e49ec107344b data/mekanism/recipes/crushing/blackstone/polished_slabs_to_slabs.json
 ddb59264f7e8056a4783976bf5546eed7d3d4dd8 data/mekanism/recipes/crushing/blackstone/polished_stairs_to_stairs.json
 a2f66ac28eaee1bf6f2b22203f7a19c39fee7360 data/mekanism/recipes/crushing/blackstone/polished_wall_to_wall.json
+8734d4b17f6604a7a39c4b756cd10855b70c167a data/mekanism/recipes/crushing/blaze_rod.json
+96238696f3a62a892ea9656a500066cc5999d914 data/mekanism/recipes/crushing/bone.json
 ce0614c2ddd8632c0f7b70adc837f978b6e6db80 data/mekanism/recipes/crushing/break_disc_5.json
 384f82d6595c211e1714bcf6bc83874ce74d837d data/mekanism/recipes/crushing/charcoal_dust.json
 7abf14c63d3f603d7026221f65d697ed24beedf4 data/mekanism/recipes/crushing/chiseled_nether_bricks_to_nether_bricks.json
@@ -3103,6 +3105,7 @@ b38c396f4e563e008efaac90a1c9c5aec8940bf4 data/mekanism/recipes/crushing/diorite/
 60029d0b3925dc49a667e516ea51a01c7b8c2751 data/mekanism/recipes/crushing/gravel_to_sand.json
 b42d7660f545c9fa994ddea66d73785194127140 data/mekanism/recipes/crushing/mud_bricks_to_packed.json
 c81fa3b77d77f7ae8ba0792fdc11614616f5fffb data/mekanism/recipes/crushing/nether_bricks_to_cracked_nether_bricks.json
+e21a6bafa5b951290f872b34bfb63aa3d083067e data/mekanism/recipes/crushing/obsidian_to_dust.json
 77a500d34c66fa7105a4df70f9210bca3bc9709e data/mekanism/recipes/crushing/pointed_dripstone_from_block.json
 60474a225ae4801e93b56d5f78508e153f2b6135 data/mekanism/recipes/crushing/polished_or_smooth_basalt_to_basalt.json
 0f350a9d77ea9c0405d2c2a261973415d1311930 data/mekanism/recipes/crushing/prismarine/shard_from_block.json
diff --git a/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/blaze_rod.json b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/blaze_rod.json
new file mode 100644
index 00000000000..720ed66ee14
--- /dev/null
+++ b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/blaze_rod.json
@@ -0,0 +1,12 @@
+{
+  "type": "mekanism:crushing",
+  "input": {
+    "ingredient": {
+      "tag": "forge:rods/blaze"
+    }
+  },
+  "output": {
+    "count": 4,
+    "item": "minecraft:blaze_powder"
+  }
+}
\ No newline at end of file
diff --git a/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/bone.json b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/bone.json
new file mode 100644
index 00000000000..b9e93baf5fd
--- /dev/null
+++ b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/bone.json
@@ -0,0 +1,12 @@
+{
+  "type": "mekanism:crushing",
+  "input": {
+    "ingredient": {
+      "item": "minecraft:bone"
+    }
+  },
+  "output": {
+    "count": 6,
+    "item": "minecraft:bone_meal"
+  }
+}
\ No newline at end of file
diff --git a/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/obsidian_to_dust.json b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/obsidian_to_dust.json
new file mode 100644
index 00000000000..3b444927359
--- /dev/null
+++ b/src/datagen/generated/mekanism/data/mekanism/recipes/crushing/obsidian_to_dust.json
@@ -0,0 +1,12 @@
+{
+  "type": "mekanism:crushing",
+  "input": {
+    "ingredient": {
+      "tag": "forge:obsidian"
+    }
+  },
+  "output": {
+    "count": 4,
+    "item": "mekanism:dust_obsidian"
+  }
+}
\ No newline at end of file
diff --git a/src/datagen/main/java/mekanism/common/recipe/impl/CrusherRecipeProvider.java b/src/datagen/main/java/mekanism/common/recipe/impl/CrusherRecipeProvider.java
index 8a785e782bf..cffa123ea16 100644
--- a/src/datagen/main/java/mekanism/common/recipe/impl/CrusherRecipeProvider.java
+++ b/src/datagen/main/java/mekanism/common/recipe/impl/CrusherRecipeProvider.java
@@ -73,6 +73,21 @@ public void addRecipes(RecipeOutput consumer) {
               IngredientCreatorAccess.item().from(Items.MUSIC_DISC_5),
               new ItemStack(Items.DISC_FRAGMENT_5, 9)
         ).build(consumer, Mekanism.rl(basePath + "break_disc_5"));
+        //Obsidian -> obsidian dust
+        ItemStackToItemStackRecipeBuilder.crushing(
+              IngredientCreatorAccess.item().from(Tags.Items.OBSIDIAN),
+              MekanismItems.OBSIDIAN_DUST.getItemStack(4)
+        ).build(consumer, Mekanism.rl(basePath + "obsidian_to_dust"));
+        //Blaze Rod -> blaze powder
+        ItemStackToItemStackRecipeBuilder.crushing(
+              IngredientCreatorAccess.item().from(Tags.Items.RODS_BLAZE),
+              new ItemStack(Items.BLAZE_POWDER, 4)
+        ).build(consumer, Mekanism.rl(basePath + "blaze_rod"));
+        //Bone -> bone meal
+        ItemStackToItemStackRecipeBuilder.crushing(
+              IngredientCreatorAccess.item().from(Items.BONE),
+              new ItemStack(Items.BONE_MEAL, 6)
+        ).build(consumer, Mekanism.rl(basePath + "bone"));
         //TODO: Do we just want to make a clear and red tag for sandstone?
         //Red Sandstone -> Sand
         RecipeProviderUtil.addSandStoneToSandRecipe(consumer, basePath + "red_sandstone_to_sand", null, Blocks.RED_SAND, Blocks.RED_SANDSTONE,
diff --git a/src/datagen/main/java/mekanism/common/recipe/impl/EnrichingRecipeProvider.java b/src/datagen/main/java/mekanism/common/recipe/impl/EnrichingRecipeProvider.java
index e44b1e7a0fd..b5025296140 100644
--- a/src/datagen/main/java/mekanism/common/recipe/impl/EnrichingRecipeProvider.java
+++ b/src/datagen/main/java/mekanism/common/recipe/impl/EnrichingRecipeProvider.java
@@ -109,6 +109,7 @@ private void addEnrichingConversionRecipes(RecipeOutput consumer, String basePat
               new ItemStack(Items.GUNPOWDER)
         ).build(consumer, Mekanism.rl(basePath + "sulfur_to_gunpowder"));
         //Obsidian -> obsidian dust
+        //TODO - 1.20.5: Remove this recipe in favor of the crushing version
         ItemStackToItemStackRecipeBuilder.enriching(
               IngredientCreatorAccess.item().from(Tags.Items.OBSIDIAN),
               MekanismItems.OBSIDIAN_DUST.getItemStack(4)