From b4377fde80d45779875d67ad0812d4487061c1b5 Mon Sep 17 00:00:00 2001
From: CannoliCatfish <CosmicDarkrai@gmail.com>
Date: Sat, 24 Apr 2021 13:51:16 -0400
Subject: [PATCH] Critical multiplayer bug fix, evap tower "boiler" JEI,
 various advancements, tag fix

---
 .../rankine/ProjectRankine.java               |  10 +----
 .../rankine/init/ClientProxy.java             |   8 ++++
 .../rankine/init/RankineRecipes.java          |  12 +++++-
 src/main/resources/META-INF/mods.toml         |   2 +-
 .../resources/assets/rankine/lang/en_us.json  |  14 ++++++-
 .../textures/item/maple_sap_bucket.png        | Bin 396 -> 291 bytes
 .../forge/tags/blocks/stone_bricks_slabs.json |   1 +
 .../tags/blocks/stone_bricks_stairs.json      |   1 +
 .../blocks/stone_bricks_vertical_slabs.json   |   4 ++
 .../forge/tags/items/stone_bricks_slabs.json  |   1 +
 .../forge/tags/items/stone_bricks_stairs.json |   1 +
 .../items/stone_bricks_vertical_slabs.json    |   4 ++
 .../minecraft/tags/blocks/stone_bricks.json   |   4 ++
 .../minecraft/tags/items/stone_bricks.json    |   4 ++
 .../challenges/make_pancake_breakfast.json    |  35 ++++++++++++++++++
 .../advancements/story/make_bandage.json      |  35 ++++++++++++++++++
 .../advancements/story/make_herbicide.json    |  35 ++++++++++++++++++
 .../rankine/advancements/story/make_pulp.json |  35 ++++++++++++++++++
 .../advancements/story/make_trampoline.json   |  35 ++++++++++++++++++
 .../advancements/story/make_tree_tap.json     |  35 ++++++++++++++++++
 .../rankine/recipes/polished_troctolite.json  |  16 ++++++++
 ...roctolite_from_troctolite_stonecutter.json |   8 ++++
 .../rankine/recipes/troctolite_bricks.json    |  20 ++++++++++
 ...te_bricks_from_troctolite_stonecutter.json |   8 ++++
 24 files changed, 316 insertions(+), 12 deletions(-)
 create mode 100644 src/main/resources/data/rankine/advancements/challenges/make_pancake_breakfast.json
 create mode 100644 src/main/resources/data/rankine/advancements/story/make_bandage.json
 create mode 100644 src/main/resources/data/rankine/advancements/story/make_herbicide.json
 create mode 100644 src/main/resources/data/rankine/advancements/story/make_pulp.json
 create mode 100644 src/main/resources/data/rankine/advancements/story/make_trampoline.json
 create mode 100644 src/main/resources/data/rankine/advancements/story/make_tree_tap.json
 create mode 100644 src/main/resources/data/rankine/recipes/polished_troctolite.json
 create mode 100644 src/main/resources/data/rankine/recipes/polished_troctolite_from_troctolite_stonecutter.json
 create mode 100644 src/main/resources/data/rankine/recipes/troctolite_bricks.json
 create mode 100644 src/main/resources/data/rankine/recipes/troctolite_bricks_from_troctolite_stonecutter.json

diff --git a/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java b/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java
index 84167b457e..868bc77e0c 100644
--- a/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java
+++ b/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java
@@ -37,14 +37,12 @@
 import com.cannolicatfish.rankine.util.colors.SGVDItemColor;
 import com.cannolicatfish.rankine.util.colors.TemplateItemColor;
 import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.block.WoodType;
 import net.minecraft.enchantment.Enchantment;
 import net.minecraft.entity.EntityType;
 import net.minecraft.entity.merchant.villager.VillagerProfession;
 import net.minecraft.fluid.Fluid;
 import net.minecraft.inventory.EquipmentSlotType;
 import net.minecraft.inventory.container.ContainerType;
-import net.minecraft.item.ItemModelsProperties;
 import net.minecraft.item.crafting.IRecipeSerializer;
 import net.minecraft.potion.Effect;
 import net.minecraft.potion.Potion;
@@ -121,13 +119,7 @@ private void CommonSetup(final FMLCommonSetupEvent event)
 
     private void ClientSetup(FMLClientSetupEvent event) {
         LOGGER.debug("Rankine: \"ClientSetup Event\" Starting...");
-        event.enqueueWork(() ->
-                ItemModelsProperties.registerProperty(RankineItems.SHULKER_GAS_VACUUM.get(),
-                        new ResourceLocation(ProjectRankine.MODID, "gas_held"), (stack, world, living) ->
-                                stack.getTag() != null && !stack.getTag().getString("gas").isEmpty() ? 1.0F : 0.0F));
-                WoodType.register(WoodType.create("cedar"));
-                WoodType.register(WoodType.create("white_birch"));
-                WoodType.register(WoodType.create("yellow_birch"));
+        event.enqueueWork(ClientProxy::registerItemProperties);
         LOGGER.info("Rankine: \"ClientSetup\" Event Complete!");
     }
 
diff --git a/src/main/java/com/cannolicatfish/rankine/init/ClientProxy.java b/src/main/java/com/cannolicatfish/rankine/init/ClientProxy.java
index 6714542e26..c4d75fc52d 100644
--- a/src/main/java/com/cannolicatfish/rankine/init/ClientProxy.java
+++ b/src/main/java/com/cannolicatfish/rankine/init/ClientProxy.java
@@ -1,5 +1,6 @@
 package com.cannolicatfish.rankine.init;
 
+import com.cannolicatfish.rankine.ProjectRankine;
 import com.cannolicatfish.rankine.blocks.alloyfurnace.AlloyFurnaceScreen;
 import com.cannolicatfish.rankine.blocks.crucible.CrucibleScreen;
 import com.cannolicatfish.rankine.blocks.evaporationtower.EvaporationTowerScreen;
@@ -16,6 +17,8 @@
 import net.minecraft.client.renderer.RenderType;
 import net.minecraft.client.renderer.RenderTypeLookup;
 import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.item.ItemModelsProperties;
+import net.minecraft.util.ResourceLocation;
 import net.minecraft.world.World;
 
 import java.util.Arrays;
@@ -42,6 +45,11 @@ public static void addTranslucent(List<Block> blockList) {
         }
     }
 
+    public static void registerItemProperties() {
+        ItemModelsProperties.registerProperty(RankineItems.SHULKER_GAS_VACUUM.get(),
+                new ResourceLocation(ProjectRankine.MODID, "gas_held"), (stack, world, living) ->
+                        stack.getTag() != null && !stack.getTag().getString("gas").isEmpty() ? 1.0F : 0.0F);
+    }
     @Override
     public void init() {
         ScreenManager.registerFactory(RankineBlocks.ALLOY_FURNACE_CONTAINER, AlloyFurnaceScreen::new);
diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineRecipes.java b/src/main/java/com/cannolicatfish/rankine/init/RankineRecipes.java
index 17aa9eadc7..e77a87046e 100644
--- a/src/main/java/com/cannolicatfish/rankine/init/RankineRecipes.java
+++ b/src/main/java/com/cannolicatfish/rankine/init/RankineRecipes.java
@@ -419,6 +419,10 @@ public static List<IEvaporationRecipe> getEvaporationRecipes()
         recipes.add(evaporationRecipe("groundwater_evaporation", RankineItems.BIOME_INDICATOR_GENERIC.get(), EvaporationTowerTile.returnGroundwaterCollection()));
         recipes.add(evaporationRecipe("ocean_evaporation", RankineItems.BIOME_INDICATOR_OCEAN.get(), EvaporationTowerTile.returnOceanCollection()));
         recipes.add(evaporationRecipe("river_evaporation", RankineItems.BIOME_INDICATOR_RIVER.get(), EvaporationTowerTile.returnRiverCollection()));
+        recipes.add(evaporationRecipeSimple("latex", RankineItems.LATEX_BUCKET.get(), RankineItems.DRY_RUBBER.get()));
+        recipes.add(evaporationRecipeSimple("resin", RankineItems.RESIN_BUCKET.get(), RankineItems.AMBER.get()));
+        recipes.add(evaporationRecipeSimple("sap", RankineItems.SAP_BUCKET.get(), Items.SUGAR));
+        recipes.add(evaporationRecipeSimple("maple_sap", RankineItems.MAPLE_SAP_BUCKET.get(), RankineItems.MAPLE_SYRUP.get()));
         return recipes;
     }
 
@@ -479,7 +483,13 @@ public static IEvaporationRecipe evaporationRecipe(String registry, Item input,
                 Ingredient.fromStacks(new ItemStack(input)),weights);
     }
 
-
+    public static IEvaporationRecipe evaporationRecipeSimple(String registry, Item input, Item col)
+    {
+        List<ItemStack> output = Collections.singletonList(new ItemStack(col));
+        List<Float> weights = Collections.singletonList(1f);
+        return new IEvaporationRecipe(new ResourceLocation(ProjectRankine.MODID,registry),output,
+                Ingredient.fromStacks(new ItemStack(input)),weights);
+    }
 
     public static List<PeriodicTableUtils.Element> getElements(String c)
     {
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index 898da529b7..2cd9384def 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -16,7 +16,7 @@ issueTrackerURL="http://my.issue.tracker/" #optional
 # The modid of the mod
 modId="rankine" #mandatory
 # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
-version="1.2.1" #mandatory
+version="1.2.2" #mandatory
  # A display name for the mod
 displayName="Project Rankine" #mandatory
 # A URL to query for updates for this mod. See the JSON update specification <here>
diff --git a/src/main/resources/assets/rankine/lang/en_us.json b/src/main/resources/assets/rankine/lang/en_us.json
index 915c25024f..ffb0676fcd 100644
--- a/src/main/resources/assets/rankine/lang/en_us.json
+++ b/src/main/resources/assets/rankine/lang/en_us.json
@@ -2428,8 +2428,18 @@
   "rankine.advancements.story.find_ironstone.description": "Find ironstone under the sands of a desert or mesa",
   "rankine.advancements.story.make_cast_iron_alloy.title": "Cooking Time",
   "rankine.advancements.story.make_cast_iron_alloy.description": "Make cast iron alloy by using a form of carbon and pig iron",
+  "rankine.advancements.story.make_tree_tap.title": "Flowing Phloem",
+  "rankine.advancements.story.make_tree_tap.description": "Make a tree tap to begin extracting liquids from trees",
+  "rankine.advancements.story.make_bandage.title": "Quick Healing",
+  "rankine.advancements.story.make_bandage.description": "Heal some minor damage with a bandage",
+  "rankine.advancements.story.make_trampoline.title": "Boing!",
+  "rankine.advancements.story.make_trampoline.description": "Make a trampoline to launch high into the air",
+  "rankine.advancements.story.make_herbicide.title": "Weedkiller",
+  "rankine.advancements.story.make_herbicide.description": "Produce herbicide from juglone to clear patches of grass and other plants",
   "rankine.advancements.story.make_piston_crusher.title": "Automatic Labor",
   "rankine.advancements.story.make_piston_crusher.description": "Make a piston crusher to automate crushing",
+  "rankine.advancements.story.make_pulp.title": "Crushed to a Pulp",
+  "rankine.advancements.story.make_pulp.description": "Make pulp from crushed logs",
   "rankine.advancements.story.make_quartz.title": "Overworld Quartz",
   "rankine.advancements.story.make_quartz.description": "Find or make quartz by crushing stones",
   "rankine.advancements.story.make_glass_cutter.title": "Transparent Carving",
@@ -2475,7 +2485,7 @@
   "rankine.advancements.story.make_gyratory_crusher.title": "Pressing Issue",
   "rankine.advancements.story.make_gyratory_crusher.description": "Make a Gyratory Crusher to automate crushing further",
   "rankine.advancements.story.make_rankine_box.title": "Atomic Dissonance",
-  "rankine.advancements.story.make_rankine_box.description": "Make a Rankine Box to transmute the elements",
+  "rankine.advancements.story.make_rankine_box.description": "Make a Rankine Box to transmute elements",
   "rankine.advancements.story.make_laser_quarry.title": "Excavation Invigoration",
   "rankine.advancements.story.make_laser_quarry.description": "Construct a Laser Quarry to mine out large chunks of the world",
   "rankine.advancements.story.make_thorium_arrow.title": "Sounds of Thunder",
@@ -2506,6 +2516,8 @@
   "rankine.advancements.challenges.pewter_enchant.description": "Make a Pewter Sword with an Enchantability greater than or equal to 14",
   "rankine.advancements.challenges.colored_gold_netherite.title": "Gold Standard",
   "rankine.advancements.challenges.colored_gold_netherite.description": "Make a Colored Gold tool using Netherite instead of Gold",
+  "rankine.advancements.challenges.make_pancake_breakfast.title": "Fulfilling",
+  "rankine.advancements.challenges.make_pancake_breakfast.description": "Make a Pancake Breakfast",
   "rankine.advancements.challenges.find_meteoric_materials.title": "Stellar Performance",
   "rankine.advancements.challenges.find_meteoric_materials.description": "Find all the forms of meteoric iron"
 }
\ No newline at end of file
diff --git a/src/main/resources/assets/rankine/textures/item/maple_sap_bucket.png b/src/main/resources/assets/rankine/textures/item/maple_sap_bucket.png
index 689d0176ede352ec468555b5df5fe09a6c247841..9f59da91dfd6655a1d9edff0e8c751e80d6ac405 100644
GIT binary patch
delta 246
zcmeBSUd%K>l7pFnfk8u;KX{^|LcMN)Plzj!Z)$2<QBg5t#*DV|(%!n7xfA;)H8-xA
zH~Yqo8!J|<C@LzNHf`Gf|Nnt1?;9@I1f=*&g8YJkB1nMY%AFYtfl{0W9+AZi419+`
zm{C;2s{tsO;_2cTq7fW>-ka}$0td?lCqbR4_w~s!KQof%Ox<%r#pbaWlgp!*3=Kb`
zns^viZt&1-QR6$ZbyG-U6obPd9T8K$`EKf4_8nYw>o#M3limgCTWwo~RQc@GS2)@q
iNUitS(Qj>ZjOEyA&aU&uhckc{GI+ZBxvX<aXaWFTgJu%|

delta 352
zcmV-m0iXV(0*nKY83+ad001BJ|6!3KAb$yPNLh0L01m?d01m?e$8V@)0003YNkl<Z
zI8UXMzixv-491-*2vs?yDN8yf3`ndjj7)T_)F<N+5Ccz8sbiVgU|~h#8JLJF#E{Ca
z58<O7qWl(r_TlgT0{61vC<w#w%2H6*_3C?3(2a2%Q|`JhMNOKf6qiP`z-DZGRDT<=
zZ5s}UXSiGj8k?qx;y8}*JzSwEirM6WMi^{99$(;eKEwWL54)YBI_8#T(HMTSM67@%
zyuH7IQffB9l?=lGpC4b8BYFi}%9uRQp=laOl7uUgD2l-IJjk+)D~16Q1OXW#XomEC
z4_()hHW6o_@qM4w8pm;1{UQwXj7_&7463SP^*^|sC9?sZYFU<~+qR`>q7QKSkXC14
yZo{0>L>QnmUZH7%H}Kc&h<sMeEkDzp0Q>-6Q)@*U)=6Lh0000<MNUMnLSTYdHkt$g

diff --git a/src/main/resources/data/forge/tags/blocks/stone_bricks_slabs.json b/src/main/resources/data/forge/tags/blocks/stone_bricks_slabs.json
index be76e01684..f2bcd49348 100644
--- a/src/main/resources/data/forge/tags/blocks/stone_bricks_slabs.json
+++ b/src/main/resources/data/forge/tags/blocks/stone_bricks_slabs.json
@@ -4,6 +4,7 @@
     "rankine:granite_bricks_slab",
     "rankine:andesite_bricks_slab",
     "rankine:diorite_bricks_slab",
+    "rankine:basalt_bricks_slab",
     "rankine:gray_granite_bricks_slab",
     "rankine:granodiorite_bricks_slab",
     "rankine:hornblende_andesite_bricks_slab",
diff --git a/src/main/resources/data/forge/tags/blocks/stone_bricks_stairs.json b/src/main/resources/data/forge/tags/blocks/stone_bricks_stairs.json
index 998d185845..b13f6e0625 100644
--- a/src/main/resources/data/forge/tags/blocks/stone_bricks_stairs.json
+++ b/src/main/resources/data/forge/tags/blocks/stone_bricks_stairs.json
@@ -4,6 +4,7 @@
     "rankine:granite_bricks_stairs",
     "rankine:andesite_bricks_stairs",
     "rankine:diorite_bricks_stairs",
+    "rankine:basalt_bricks_stairs",
     "rankine:gray_granite_bricks_stairs",
     "rankine:granodiorite_bricks_stairs",
     "rankine:hornblende_andesite_bricks_stairs",
diff --git a/src/main/resources/data/forge/tags/blocks/stone_bricks_vertical_slabs.json b/src/main/resources/data/forge/tags/blocks/stone_bricks_vertical_slabs.json
index 518313856e..c776875311 100644
--- a/src/main/resources/data/forge/tags/blocks/stone_bricks_vertical_slabs.json
+++ b/src/main/resources/data/forge/tags/blocks/stone_bricks_vertical_slabs.json
@@ -1,6 +1,10 @@
 {
   "replace": false,
   "values": [
+    "rankine:granite_bricks_vertical_slab",
+    "rankine:diorite_bricks_vertical_slab",
+    "rankine:andesite_bricks_vertical_slab",
+    "rankine:basalt_bricks_vertical_slab",
     "rankine:gray_granite_bricks_vertical_slab",
     "rankine:granodiorite_bricks_vertical_slab",
     "rankine:hornblende_andesite_bricks_vertical_slab",
diff --git a/src/main/resources/data/forge/tags/items/stone_bricks_slabs.json b/src/main/resources/data/forge/tags/items/stone_bricks_slabs.json
index be76e01684..f2bcd49348 100644
--- a/src/main/resources/data/forge/tags/items/stone_bricks_slabs.json
+++ b/src/main/resources/data/forge/tags/items/stone_bricks_slabs.json
@@ -4,6 +4,7 @@
     "rankine:granite_bricks_slab",
     "rankine:andesite_bricks_slab",
     "rankine:diorite_bricks_slab",
+    "rankine:basalt_bricks_slab",
     "rankine:gray_granite_bricks_slab",
     "rankine:granodiorite_bricks_slab",
     "rankine:hornblende_andesite_bricks_slab",
diff --git a/src/main/resources/data/forge/tags/items/stone_bricks_stairs.json b/src/main/resources/data/forge/tags/items/stone_bricks_stairs.json
index 998d185845..b13f6e0625 100644
--- a/src/main/resources/data/forge/tags/items/stone_bricks_stairs.json
+++ b/src/main/resources/data/forge/tags/items/stone_bricks_stairs.json
@@ -4,6 +4,7 @@
     "rankine:granite_bricks_stairs",
     "rankine:andesite_bricks_stairs",
     "rankine:diorite_bricks_stairs",
+    "rankine:basalt_bricks_stairs",
     "rankine:gray_granite_bricks_stairs",
     "rankine:granodiorite_bricks_stairs",
     "rankine:hornblende_andesite_bricks_stairs",
diff --git a/src/main/resources/data/forge/tags/items/stone_bricks_vertical_slabs.json b/src/main/resources/data/forge/tags/items/stone_bricks_vertical_slabs.json
index 518313856e..c776875311 100644
--- a/src/main/resources/data/forge/tags/items/stone_bricks_vertical_slabs.json
+++ b/src/main/resources/data/forge/tags/items/stone_bricks_vertical_slabs.json
@@ -1,6 +1,10 @@
 {
   "replace": false,
   "values": [
+    "rankine:granite_bricks_vertical_slab",
+    "rankine:diorite_bricks_vertical_slab",
+    "rankine:andesite_bricks_vertical_slab",
+    "rankine:basalt_bricks_vertical_slab",
     "rankine:gray_granite_bricks_vertical_slab",
     "rankine:granodiorite_bricks_vertical_slab",
     "rankine:hornblende_andesite_bricks_vertical_slab",
diff --git a/src/main/resources/data/minecraft/tags/blocks/stone_bricks.json b/src/main/resources/data/minecraft/tags/blocks/stone_bricks.json
index 53d681ff3d..94abbc3173 100644
--- a/src/main/resources/data/minecraft/tags/blocks/stone_bricks.json
+++ b/src/main/resources/data/minecraft/tags/blocks/stone_bricks.json
@@ -5,6 +5,7 @@
     "rankine:granite_bricks",
     "rankine:andesite_bricks",
     "rankine:diorite_bricks",
+    "rankine:basalt_bricks",
     "rankine:gray_granite_bricks",
     "rankine:granodiorite_bricks",
     "rankine:hornblende_andesite_bricks",
@@ -17,6 +18,9 @@
     "rankine:red_porphyry_bricks",
     "rankine:purple_porphyry_bricks",
     "rankine:peridotite_bricks",
+    "rankine:comendite_bricks",
+    "rankine:troctolite_bricks",
+    "rankine:pegmatite_bricks",
     "rankine:kimberlite_bricks",
     "rankine:komatiite_bricks",
     "rankine:pumice_bricks",
diff --git a/src/main/resources/data/minecraft/tags/items/stone_bricks.json b/src/main/resources/data/minecraft/tags/items/stone_bricks.json
index 53d681ff3d..94abbc3173 100644
--- a/src/main/resources/data/minecraft/tags/items/stone_bricks.json
+++ b/src/main/resources/data/minecraft/tags/items/stone_bricks.json
@@ -5,6 +5,7 @@
     "rankine:granite_bricks",
     "rankine:andesite_bricks",
     "rankine:diorite_bricks",
+    "rankine:basalt_bricks",
     "rankine:gray_granite_bricks",
     "rankine:granodiorite_bricks",
     "rankine:hornblende_andesite_bricks",
@@ -17,6 +18,9 @@
     "rankine:red_porphyry_bricks",
     "rankine:purple_porphyry_bricks",
     "rankine:peridotite_bricks",
+    "rankine:comendite_bricks",
+    "rankine:troctolite_bricks",
+    "rankine:pegmatite_bricks",
     "rankine:kimberlite_bricks",
     "rankine:komatiite_bricks",
     "rankine:pumice_bricks",
diff --git a/src/main/resources/data/rankine/advancements/challenges/make_pancake_breakfast.json b/src/main/resources/data/rankine/advancements/challenges/make_pancake_breakfast.json
new file mode 100644
index 0000000000..3233fd7f15
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/challenges/make_pancake_breakfast.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:challenges/rankine_challenges",
+  "display": {
+    "icon": {
+      "item": "rankine:pancake_breakfast"
+    },
+    "title": {
+      "translate": "rankine.advancements.challenges.make_pancake_breakfast.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.challenges.make_pancake_breakfast.description"
+    },
+    "frame": "challenge",
+    "show_toast": true,
+    "announce_to_chat": true,
+    "hidden": false
+  },
+  "criteria": {
+    "rankine:pancake_breakfast": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:pancake_breakfast"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "rankine:pancake_breakfast"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/advancements/story/make_bandage.json b/src/main/resources/data/rankine/advancements/story/make_bandage.json
new file mode 100644
index 0000000000..f5cd69cc8c
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/story/make_bandage.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:story/make_tree_tap",
+  "display": {
+    "icon": {
+      "item": "rankine:bandage"
+    },
+    "title": {
+      "translate": "rankine.advancements.story.make_bandage.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.story.make_bandage.description"
+    },
+    "frame": "task",
+    "show_toast": true,
+    "announce_to_chat": false,
+    "hidden": false
+  },
+  "criteria": {
+    "bandage": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:bandage"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "bandage"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/advancements/story/make_herbicide.json b/src/main/resources/data/rankine/advancements/story/make_herbicide.json
new file mode 100644
index 0000000000..5041444066
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/story/make_herbicide.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:story/make_tree_tap",
+  "display": {
+    "icon": {
+      "item": "rankine:herbicide"
+    },
+    "title": {
+      "translate": "rankine.advancements.story.make_herbicide.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.story.make_herbicide.description"
+    },
+    "frame": "task",
+    "show_toast": true,
+    "announce_to_chat": false,
+    "hidden": false
+  },
+  "criteria": {
+    "herbicide": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:herbicide"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "herbicide"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/advancements/story/make_pulp.json b/src/main/resources/data/rankine/advancements/story/make_pulp.json
new file mode 100644
index 0000000000..1272ec7535
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/story/make_pulp.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:story/make_piston_crusher",
+  "display": {
+    "icon": {
+      "item": "rankine:pulp"
+    },
+    "title": {
+      "translate": "rankine.advancements.story.make_pulp.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.story.make_pulp.description"
+    },
+    "frame": "task",
+    "show_toast": true,
+    "announce_to_chat": false,
+    "hidden": false
+  },
+  "criteria": {
+    "pulp": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:pulp"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "pulp"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/advancements/story/make_trampoline.json b/src/main/resources/data/rankine/advancements/story/make_trampoline.json
new file mode 100644
index 0000000000..2e1bdb0cc6
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/story/make_trampoline.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:story/make_tree_tap",
+  "display": {
+    "icon": {
+      "item": "rankine:trampoline"
+    },
+    "title": {
+      "translate": "rankine.advancements.story.make_trampoline.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.story.make_trampoline.description"
+    },
+    "frame": "task",
+    "show_toast": true,
+    "announce_to_chat": false,
+    "hidden": false
+  },
+  "criteria": {
+    "trampoline": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:trampoline"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "trampoline"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/advancements/story/make_tree_tap.json b/src/main/resources/data/rankine/advancements/story/make_tree_tap.json
new file mode 100644
index 0000000000..c4bda56b61
--- /dev/null
+++ b/src/main/resources/data/rankine/advancements/story/make_tree_tap.json
@@ -0,0 +1,35 @@
+{
+  "parent": "rankine:story/make_cast_iron",
+  "display": {
+    "icon": {
+      "item": "rankine:tree_tap"
+    },
+    "title": {
+      "translate": "rankine.advancements.story.make_tree_tap.title"
+    },
+    "description": {
+      "translate": "rankine.advancements.story.make_tree_tap.description"
+    },
+    "frame": "task",
+    "show_toast": true,
+    "announce_to_chat": false,
+    "hidden": false
+  },
+  "criteria": {
+    "tree_tap": {
+      "trigger": "minecraft:inventory_changed",
+      "conditions": {
+        "items": [
+          {
+            "item": "rankine:tree_tap"
+          }
+        ]
+      }
+    }
+  },
+  "requirements": [
+    [
+      "tree_tap"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/recipes/polished_troctolite.json b/src/main/resources/data/rankine/recipes/polished_troctolite.json
new file mode 100644
index 0000000000..85e38f05c5
--- /dev/null
+++ b/src/main/resources/data/rankine/recipes/polished_troctolite.json
@@ -0,0 +1,16 @@
+{
+      "type": "minecraft:crafting_shaped",
+      "pattern": [
+        "##",
+        "##"
+      ],
+      "key": {
+        "#": {
+          "item": "rankine:troctolite"
+        }
+      },
+      "result": {
+        "item": "rankine:polished_troctolite",
+        "count": 4
+      }
+    }
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/recipes/polished_troctolite_from_troctolite_stonecutter.json b/src/main/resources/data/rankine/recipes/polished_troctolite_from_troctolite_stonecutter.json
new file mode 100644
index 0000000000..339f46dbd4
--- /dev/null
+++ b/src/main/resources/data/rankine/recipes/polished_troctolite_from_troctolite_stonecutter.json
@@ -0,0 +1,8 @@
+{
+      "type": "minecraft:stonecutting",
+      "ingredient": {
+          "item": "rankine:troctolite"
+      },
+      "result": "rankine:polished_troctolite",
+      "count": 1
+    }
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/recipes/troctolite_bricks.json b/src/main/resources/data/rankine/recipes/troctolite_bricks.json
new file mode 100644
index 0000000000..03263143ca
--- /dev/null
+++ b/src/main/resources/data/rankine/recipes/troctolite_bricks.json
@@ -0,0 +1,20 @@
+{
+      "type": "minecraft:crafting_shaped",
+      "pattern": [
+        "#m#",
+        "m#m",
+        "#m#"
+      ],
+      "key": {
+        "#": {
+          "item": "rankine:troctolite"
+        },
+        "m": {
+          "item": "rankine:mortar"
+        }
+      },
+      "result": {
+        "item": "rankine:troctolite_bricks",
+        "count": 6
+      }
+    }
\ No newline at end of file
diff --git a/src/main/resources/data/rankine/recipes/troctolite_bricks_from_troctolite_stonecutter.json b/src/main/resources/data/rankine/recipes/troctolite_bricks_from_troctolite_stonecutter.json
new file mode 100644
index 0000000000..8b9597b401
--- /dev/null
+++ b/src/main/resources/data/rankine/recipes/troctolite_bricks_from_troctolite_stonecutter.json
@@ -0,0 +1,8 @@
+{
+      "type": "minecraft:stonecutting",
+      "ingredient": {
+          "item": "rankine:troctolite"
+      },
+      "result": "rankine:troctolite_bricks",
+      "count": 1
+    }
\ No newline at end of file