diff --git a/.idea/icon.png b/.idea/icon.png index 428b63e991..63aabf0ae5 100644 Binary files a/.idea/icon.png and b/.idea/icon.png differ diff --git a/gradle.properties b/gradle.properties index 1b3fd95e26..8fcd9c1696 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ loader_version = 0.15.7 fabric_version = 0.77.0+1.18.2 # Mod Properties -mod_version = 0.5.1-f +mod_version = 0.5.1-g maven_group = com.simibubi.create # Dependencies diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 8c94f023b5..5b780e0a6a 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -1289,6 +1289,7 @@ "create.item_attributes.smokable.inverted": "p\u01DD\u029Eo\u026FS \u01DDq \u0287ouu\u0250\u0254", "create.item_attributes.washable": "p\u01DD\u0265s\u0250M \u01DDq u\u0250\u0254", "create.item_attributes.washable.inverted": "p\u01DD\u0265s\u0250M \u01DDq \u0287ouu\u0250\u0254", + "create.keyinfo.ponder": "\u0279\u01DDpuo\u0500", "create.keyinfo.scrolldown": ")p\u05DF\u0279o\u028Du\u0131( u\u028Do\u15E1 \u05DF\u01DD\u01DD\u0265\u028D\u01DDsnoW \u01DD\u0287\u0250\u05DFn\u026F\u0131S", "create.keyinfo.scrollup": ")p\u05DF\u0279o\u028Du\u0131( d\u2229 \u05DF\u01DD\u01DD\u0265\u028D\u01DDsnoW \u01DD\u0287\u0250\u05DFn\u026F\u0131S", "create.keyinfo.toolbelt": "s\u01DDxoq\u05DFoo\u27D8 \u028Eq\u0279\u0250\u01DDN ss\u01DD\u0254\u0254\u2C6F", @@ -1781,7 +1782,7 @@ "create.ponder.mechanical_arm_redstone.text_1": "\u01DD\u0287\u0250\u028C\u0131\u0287\u0254\u0250 \u0287ou \u05DF\u05DF\u0131\u028D s\u026F\u0279\u2C6F \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW '\u01DDuo\u0287sp\u01DD\u1D1A \u028Eq p\u01DD\u0279\u01DD\u028Dod u\u01DD\u0265M", "create.ponder.mechanical_arm_redstone.text_2": "s\u01DD\u05DF\u0254\u028E\u0254 p\u01DD\u0287\u0279\u0250\u0287s \u028Eu\u0250 \u0265s\u0131u\u0131\u025F \u05DF\u05DF\u0131\u028D \u0287\u0131 'bu\u0131ddo\u0287s \u01DD\u0279o\u025F\u01DD\u15FA", "create.ponder.mechanical_arm_redstone.text_3": "\u01DD\u05DF\u0254\u028E\u0254 uo\u0131\u0287\u0250\u028C\u0131\u0287\u0254\u0250 \u01DDuo \u028E\u05DF\u0287\u0254\u0250x\u01DD \u0279\u01DDbb\u0131\u0279\u0287 o\u0287 p\u01DDsn \u01DDq u\u0250\u0254 \u01DDs\u05DFnd \u01DD\u028C\u0131\u0287\u0250b\u01DDu \u0250 'sn\u0265\u27D8", - "create.ponder.mechanical_bearing.header": "bu\u0131\u0279\u0250\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW \u01DD\u0265\u0287 bu\u0131sn s\u01DD\u0279n\u0287\u0254n\u0279\u0287S sbu\u0131\u028CoW", + "create.ponder.mechanical_bearing.header": "bu\u0131\u0279\u0250\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW \u01DD\u0265\u0287 bu\u0131sn s\u01DD\u0279n\u0287\u0254n\u0279\u0287S bu\u0131\u028CoW", "create.ponder.mechanical_bearing.text_1": "\u026F\u01DD\u0265\u0287 \u025Fo \u0287uo\u0279\u025F u\u0131 \u029E\u0254o\u05DFq \u01DD\u0265\u0287 o\u0287 \u0265\u0254\u0250\u0287\u0287\u0250 sbu\u0131\u0279\u0250\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", "create.ponder.mechanical_bearing.text_2": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 bu\u0131\u0287\u0250\u0287o\u1D1A \u0250 o\u0287u\u0131 \u0287\u0131 \u01DD\u05DFq\u026F\u01DDss\u0250 \u05DF\u05DF\u0131\u028D \u0287\u0131 '\u01DD\u0254\u0279o\u2132 \u05DF\u0250uo\u0131\u0287\u0250\u0287o\u1D1A bu\u0131\u028C\u0131\u01DD\u0254\u01DD\u0279 uod\u2229", "create.ponder.mechanical_crafter.header": "s\u0279\u01DD\u0287\u025F\u0250\u0279\u0186 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW dn bu\u0131\u0287\u0287\u01DDS", @@ -2519,6 +2520,7 @@ "create.subtitle.schematicannon_launch_block": "s\u01DD\u0279\u0131\u025F uouu\u0250\u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S", "create.subtitle.scroll_value": "s\u029E\u0254\u0131\u05DF\u0254 \u0287ndu\u0131-\u05DF\u05DFo\u0279\u0254S", "create.subtitle.slime_added": "s\u01DD\u0265s\u0131nbs \u01DD\u026F\u0131\u05DFS", + "create.subtitle.spout": "s\u0287\u0279nds \u0287nodS", "create.subtitle.steam": "s\u01DDs\u0131ou \u026F\u0250\u01DD\u0287S", "create.subtitle.train": "\u01DD\u05DFq\u026Fn\u0279 s\u05DF\u01DD\u01DD\u0265\u028D \u028E\u01DDbo\u15FA", "create.subtitle.train3": "p\u01DD\u05DF\u025F\u025Fn\u026F \u01DD\u05DFq\u026Fn\u0279 s\u05DF\u01DD\u01DD\u0265\u028D \u028E\u01DDbo\u15FA", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 7a4897b0f6..6d60cb33ba 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1289,6 +1289,7 @@ "create.item_attributes.smokable.inverted": "cannot be Smoked", "create.item_attributes.washable": "can be Washed", "create.item_attributes.washable.inverted": "cannot be Washed", + "create.keyinfo.ponder": "Ponder", "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", "create.keyinfo.toolbelt": "Access Nearby Toolboxes", @@ -1781,7 +1782,7 @@ "create.ponder.mechanical_arm_redstone.text_1": "When powered by Redstone, Mechanical Arms will not activate", "create.ponder.mechanical_arm_redstone.text_2": "Before stopping, it will finish any started cycles", "create.ponder.mechanical_arm_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle", - "create.ponder.mechanical_bearing.header": "Movings Structures using the Mechanical Bearing", + "create.ponder.mechanical_bearing.header": "Moving Structures using the Mechanical Bearing", "create.ponder.mechanical_bearing.text_1": "Mechanical Bearings attach to the block in front of them", "create.ponder.mechanical_bearing.text_2": "Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", "create.ponder.mechanical_crafter.header": "Setting up Mechanical Crafters", @@ -2519,6 +2520,7 @@ "create.subtitle.schematicannon_launch_block": "Schematicannon fires", "create.subtitle.scroll_value": "Scroll-input clicks", "create.subtitle.slime_added": "Slime squishes", + "create.subtitle.spout": "Spout spurts", "create.subtitle.steam": "Steam noises", "create.subtitle.train": "Bogey wheels rumble", "create.subtitle.train3": "Bogey wheels rumble muffled", diff --git a/src/generated/resources/assets/create/sounds.json b/src/generated/resources/assets/create/sounds.json index 1ac3fd7f15..8cc0f85a78 100644 --- a/src/generated/resources/assets/create/sounds.json +++ b/src/generated/resources/assets/create/sounds.json @@ -16,6 +16,22 @@ } ] }, + "clipboard_check": { + "sounds": [ + { + "name": "create:clipboard_check", + "type": "file" + } + ] + }, + "clipboard_erase": { + "sounds": [ + { + "name": "create:clipboard_erase", + "type": "file" + } + ] + }, "cogs": { "sounds": [ { @@ -388,6 +404,27 @@ ], "subtitle": "create.subtitle.slime_added" }, + "spout": { + "sounds": [ + { + "name": "create:spout", + "type": "file" + }, + { + "name": "create:spout_1", + "type": "file" + }, + { + "name": "create:spout_2", + "type": "file" + }, + { + "name": "create:spout_3", + "type": "file" + } + ], + "subtitle": "create.subtitle.spout" + }, "steam": { "sounds": [ { diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_ic2.json new file mode 100644 index 0000000000..8d7973e25f --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_aluminum_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_aluminum" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_aluminum_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_ic2.json new file mode 100644 index 0000000000..aa10091337 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_silver_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_silver_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_ic2.json new file mode 100644 index 0000000000..05cf29bc20 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_tin_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_tin" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_tin_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_ic2.json new file mode 100644 index 0000000000..74f39ade13 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_uranium_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_uranium" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_uranium_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_oreganized.json new file mode 100644 index 0000000000..470677cf6e --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_oreganized.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/lead_ingot_compat_oreganized" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_lead" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/lead_ingot_compat_oreganized" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_galosphere.json new file mode 100644 index 0000000000..e467055ac7 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_galosphere.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/silver_ingot_compat_galosphere" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/silver_ingot_compat_galosphere" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json new file mode 100644 index 0000000000..1de079c85c --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/silver_ingot_compat_iceandfire" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/silver_ingot_compat_iceandfire" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_oreganized.json new file mode 100644 index 0000000000..bd890e4783 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_oreganized.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/silver_ingot_compat_oreganized" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/silver_ingot_compat_oreganized" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_ic2.json new file mode 100644 index 0000000000..abf18f1400 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_aluminum_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_aluminum" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_aluminum_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_ic2.json new file mode 100644 index 0000000000..9b2b7665e3 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_silver_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_silver_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_ic2.json new file mode 100644 index 0000000000..0f9bc1e88c --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_tin_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_tin" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_tin_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_ic2.json new file mode 100644 index 0000000000..1b7c115149 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_ic2.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_uranium_compat_ic2" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_uranium" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_uranium_compat_ic2" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_oreganized.json new file mode 100644 index 0000000000..dd81cc4479 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_oreganized.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/lead_ingot_compat_oreganized" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_lead" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/lead_ingot_compat_oreganized" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_galosphere.json new file mode 100644 index 0000000000..172f0db60a --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_galosphere.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/silver_ingot_compat_galosphere" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/silver_ingot_compat_galosphere" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json new file mode 100644 index 0000000000..ea4f6baff5 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/silver_ingot_compat_iceandfire" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/silver_ingot_compat_iceandfire" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_oreganized.json new file mode 100644 index 0000000000..c06096bb36 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_oreganized.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/silver_ingot_compat_oreganized" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:crushed_raw_silver" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/silver_ingot_compat_oreganized" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearbox.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearbox.json new file mode 100644 index 0000000000..8b4f25fccf --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearbox.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/vertical_gearbox" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:cogwheel" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/vertical_gearbox" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/tree_fertilizer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/tree_fertilizer.json new file mode 100644 index 0000000000..e67e55551e --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/tree_fertilizer.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting///tree_fertilizer" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "minecraft:bone_meal" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting///tree_fertilizer" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/track_0.json b/src/generated/resources/data/create/advancements/track_0.json index da39724f57..dea88be451 100644 --- a/src/generated/resources/data/create/advancements/track_0.json +++ b/src/generated/resources/data/create/advancements/track_0.json @@ -22,9 +22,7 @@ "conditions": { "items": [ { - "items": [ - "create:track" - ] + "tag": "create:tracks" } ] } diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json index 9083fd8b27..f06a7a3214 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json +++ b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json @@ -8,18 +8,14 @@ { "type": "minecraft:item", "functions": [ - { - "function": "minecraft:copy_name", - "source": "block_entity" - }, { "function": "minecraft:copy_nbt", "source": "block_entity", "ops": [ { - "source": "Air", - "target": "Air", - "op": "replace" + "source": "VanillaTag", + "target": "{}", + "op": "merge" } ] }, @@ -28,8 +24,8 @@ "source": "block_entity", "ops": [ { - "source": "Enchantments", - "target": "Enchantments", + "source": "Air", + "target": "Air", "op": "replace" } ] diff --git a/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json index 4418da818f..337fb1e516 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json +++ b/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json @@ -8,18 +8,14 @@ { "type": "minecraft:item", "functions": [ - { - "function": "minecraft:copy_name", - "source": "block_entity" - }, { "function": "minecraft:copy_nbt", "source": "block_entity", "ops": [ { - "source": "Air", - "target": "Air", - "op": "replace" + "source": "VanillaTag", + "target": "{}", + "op": "merge" } ] }, @@ -28,8 +24,8 @@ "source": "block_entity", "ops": [ { - "source": "Enchantments", - "target": "Enchantments", + "source": "Air", + "target": "Air", "op": "replace" } ] diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_ic2.json b/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_ic2.json new file mode 100644 index 0000000000..326a583690 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_aluminum" + }, + "result": "ic2:ingot_aluminum", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_ic2.json new file mode 100644 index 0000000000..280c7a061c --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "ic2:ingot_silver", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_ic2.json new file mode 100644 index 0000000000..1cd2b71f59 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_tin" + }, + "result": "ic2:ingot_tin", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_ic2.json new file mode 100644 index 0000000000..796748e1d4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_uranium" + }, + "result": "ic2:ingot_uranium", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_oreganized.json new file mode 100644 index 0000000000..521b92f53d --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_oreganized.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_lead" + }, + "result": "oreganized:lead_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_galosphere.json new file mode 100644 index 0000000000..17dec218de --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_galosphere.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "galosphere:silver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json new file mode 100644 index 0000000000..4e57772f0a --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "iceandfire:silver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "iceandfire", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_oreganized.json new file mode 100644 index 0000000000..5834315899 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_oreganized.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "oreganized:silver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/ice.json b/src/generated/resources/data/create/recipes/compacting/ice.json new file mode 100644 index 0000000000..ea1ca1d6c9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/compacting/ice.json @@ -0,0 +1,37 @@ +{ + "type": "create:compacting", + "ingredients": [ + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + }, + { + "item": "minecraft:snow_block" + } + ], + "results": [ + { + "item": "minecraft:ice" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearbox.json b/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearbox.json new file mode 100644 index 0000000000..41ca8a86ff --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearbox.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "C C", + " B ", + "C C" + ], + "key": { + "C": { + "item": "create:cogwheel" + }, + "B": { + "item": "create:andesite_casing" + } + }, + "result": { + "item": "create:vertical_gearbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/tree_fertilizer.json b/src/generated/resources/data/create/recipes/crafting/tree_fertilizer.json new file mode 100644 index 0000000000..677a99daaf --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/tree_fertilizer.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "minecraft:small_flowers" + }, + { + "tag": "minecraft:small_flowers" + }, + { + "tag": "create:upgrade_aquatic/coral" + }, + { + "item": "minecraft:bone_meal" + } + ], + "result": { + "item": "create:tree_fertilizer", + "count": 2 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/ae2/deepslate_quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/ae2/deepslate_quartz_ore.json new file mode 100644 index 0000000000..8cc21a0849 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/ae2/deepslate_quartz_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "ae2:deepslate_quartz_ore" + } + ], + "results": [ + { + "item": "ae2:certus_quartz_crystal" + }, + { + "item": "ae2:certus_quartz_dust", + "count": 4 + }, + { + "item": "ae2:certus_quartz_dust", + "chance": 0.5 + }, + { + "item": "minecraft:cobbled_deepslate", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "ae2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/ae2/quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/ae2/quartz_ore.json new file mode 100644 index 0000000000..264dfb9d90 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/ae2/quartz_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "ae2:quartz_ore" + } + ], + "results": [ + { + "item": "ae2:certus_quartz_crystal" + }, + { + "item": "ae2:certus_quartz_dust", + "count": 4 + }, + { + "item": "ae2:certus_quartz_dust", + "chance": 0.5 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "ae2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/aether/ambrosium_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/aether/ambrosium_ore.json new file mode 100644 index 0000000000..1625491e0f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/aether/ambrosium_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "aether:ambrosium_ore" + } + ], + "results": [ + { + "item": "aether:ambrosium_shard" + }, + { + "item": "aether:ambrosium_shard", + "chance": 0.75 + }, + { + "item": "aether:holystone", + "chance": 0.125 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 150, + "conditions": [ + { + "modid": "aether", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/aether/zanite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/aether/zanite_ore.json new file mode 100644 index 0000000000..fc7a90ad3b --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/aether/zanite_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "aether:zanite_ore" + } + ], + "results": [ + { + "item": "aether:zanite_gemstone" + }, + { + "item": "aether:zanite_gemstone", + "chance": 0.75 + }, + { + "item": "aether:holystone", + "chance": 0.125 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "aether", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/ametrine_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/ametrine_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/ametrine_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/ametrine_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/anthracite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/anthracite_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/anthracite_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/anthracite_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_gold_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/blue_nether_gold_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_gold_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/blue_nether_gold_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/blue_nether_quartz_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_quartz_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/blue_nether_quartz_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_gold_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/brimstone_nether_gold_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_gold_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/brimstone_nether_gold_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/brimstone_nether_quartz_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_quartz_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/brimstone_nether_quartz_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/cryptic_redstone_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/cryptic_redstone_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/cryptic_redstone_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/cryptic_redstone_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/emeraldite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/emeraldite_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/emeraldite_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/emeraldite_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/lignite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/lignite_ore.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/lignite_ore.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/lignite_ore.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/pervaded_netherrack.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/pervaded_netherrack.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/pervaded_netherrack.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/pervaded_netherrack.json diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/red_rock.json b/src/generated/resources/data/create/recipes/crushing/compat/byg/red_rock.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/crushing/red_rock.json rename to src/generated/resources/data/create/recipes/crushing/compat/byg/red_rock.json diff --git a/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/amber_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/amber_ore.json new file mode 100644 index 0000000000..419d99716b --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/amber_ore.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:amber_ore" + } + ], + "results": [ + { + "item": "druidcraft:amber", + "count": 2 + }, + { + "item": "druidcraft:amber", + "chance": 0.5 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "druidcraft", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/fiery_glass_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/fiery_glass_ore.json new file mode 100644 index 0000000000..1326c84282 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/fiery_glass_ore.json @@ -0,0 +1,30 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:fiery_glass_ore" + } + ], + "results": [ + { + "item": "druidcraft:fiery_glass", + "count": 8 + }, + { + "item": "druidcraft:fiery_glass", + "count": 6, + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "druidcraft", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/moonstone_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/moonstone_ore.json new file mode 100644 index 0000000000..cf53f1fb6a --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/druidcraft/moonstone_ore.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:moonstone_ore" + } + ], + "results": [ + { + "item": "druidcraft:moonstone", + "count": 2 + }, + { + "item": "druidcraft:moonstone", + "chance": 0.5 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "druidcraft", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_end.json new file mode 100644 index 0000000000..928632ca1c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_end.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_coal_end" + } + ], + "results": [ + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:coal", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_nether.json new file mode 100644 index 0000000000..f2a163ab79 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_coal_nether.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_coal_nether" + } + ], + "results": [ + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:coal", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_end.json new file mode 100644 index 0000000000..a777714be3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_end.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_copper_end" + } + ], + "results": [ + { + "item": "create:crushed_raw_copper", + "count": 5 + }, + { + "item": "create:crushed_raw_copper", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_nether.json new file mode 100644 index 0000000000..e5d275f9f3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_copper_nether.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_copper_nether" + } + ], + "results": [ + { + "item": "create:crushed_raw_copper", + "count": 5 + }, + { + "item": "create:crushed_raw_copper", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_end.json new file mode 100644 index 0000000000..45f8444863 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_end.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_diamond_end" + } + ], + "results": [ + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_nether.json new file mode 100644 index 0000000000..1f78300083 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_diamond_nether.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_diamond_nether" + } + ], + "results": [ + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_end.json new file mode 100644 index 0000000000..f8bceb5201 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_end.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_emerald_end" + } + ], + "results": [ + { + "item": "minecraft:emerald" + }, + { + "item": "minecraft:emerald", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_nether.json new file mode 100644 index 0000000000..ef12e83693 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_emerald_nether.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_emerald_nether" + } + ], + "results": [ + { + "item": "minecraft:emerald" + }, + { + "item": "minecraft:emerald", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ender_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ender_end.json new file mode 100644 index 0000000000..160ab56ab8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ender_end.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_ender_end" + } + ], + "results": [ + { + "item": "minecraft:ender_pearl" + }, + { + "item": "minecraft:ender_pearl", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ghast_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ghast_nether.json new file mode 100644 index 0000000000..c504fd0668 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_ghast_nether.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_ghast_nether" + } + ], + "results": [ + { + "item": "minecraft:ghast_tear" + }, + { + "item": "minecraft:ghast_tear", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_end.json new file mode 100644 index 0000000000..1a7d32f75f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_end.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_iron_end" + } + ], + "results": [ + { + "item": "create:crushed_raw_iron" + }, + { + "item": "create:crushed_raw_iron", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_nether.json new file mode 100644 index 0000000000..c17b5db9e2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_iron_nether.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_iron_nether" + } + ], + "results": [ + { + "item": "create:crushed_raw_iron" + }, + { + "item": "create:crushed_raw_iron", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_end.json new file mode 100644 index 0000000000..590bc6445c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_end.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_lapis_end" + } + ], + "results": [ + { + "item": "minecraft:lapis_lazuli", + "count": 10 + }, + { + "item": "minecraft:lapis_lazuli", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_nether.json new file mode 100644 index 0000000000..4d70b0e4ab --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_lapis_nether.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_lapis_nether" + } + ], + "results": [ + { + "item": "minecraft:lapis_lazuli", + "count": 10 + }, + { + "item": "minecraft:lapis_lazuli", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_end.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_end.json new file mode 100644 index 0000000000..32c726142d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_end.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_redstone_end" + } + ], + "results": [ + { + "item": "minecraft:redstone", + "count": 6 + }, + { + "item": "minecraft:redstone", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_nether.json b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_nether.json new file mode 100644 index 0000000000..73bf79fc30 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/elementaryores/ore_redstone_nether.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "elementaryores:ore_redstone_nether" + } + ], + "results": [ + { + "item": "minecraft:redstone", + "count": 6 + }, + { + "item": "minecraft:redstone", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "elementaryores", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/andesite.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/andesite.json new file mode 100644 index 0000000000..1fc99378a7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/andesite.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:andesite" + } + ], + "results": [ + { + "item": "exnihilosequentia:crushed_andesite" + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_diorite.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_diorite.json new file mode 100644 index 0000000000..fb0e7c501d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_diorite.json @@ -0,0 +1,21 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "exnihilosequentia:crushed_diorite" + } + ], + "results": [ + { + "item": "minecraft:quartz", + "chance": 0.25 + } + ], + "processingTime": 100, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_netherrack.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_netherrack.json new file mode 100644 index 0000000000..7d53bbd979 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/crushed_netherrack.json @@ -0,0 +1,24 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "exnihilosequentia:crushed_netherrack" + } + ], + "results": [ + { + "item": "create:cinder_flour" + }, + { + "item": "create:cinder_flour", + "chance": 0.5 + } + ], + "processingTime": 100, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/diorite.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/diorite.json new file mode 100644 index 0000000000..6483a15d34 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/diorite.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:diorite" + } + ], + "results": [ + { + "item": "exnihilosequentia:crushed_diorite" + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/dust.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/dust.json new file mode 100644 index 0000000000..a4abc6835f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/dust.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:sand" + } + ], + "results": [ + { + "item": "exnihilosequentia:dust" + } + ], + "processingTime": 200, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/end_stone.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/end_stone.json new file mode 100644 index 0000000000..6eba474f14 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/end_stone.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:end_stone" + } + ], + "results": [ + { + "item": "exnihilosequentia:crushed_end_stone" + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/granite.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/granite.json new file mode 100644 index 0000000000..34647501f6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/granite.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:granite" + } + ], + "results": [ + { + "item": "exnihilosequentia:crushed_granite" + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/netherrack.json b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/netherrack.json new file mode 100644 index 0000000000..46146e939a --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/exnihilosequentia/netherrack.json @@ -0,0 +1,20 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:netherrack" + } + ], + "results": [ + { + "item": "exnihilosequentia:crushed_netherrack" + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/crushing/compat/galosphere/allurite.json b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/allurite.json new file mode 100644 index 0000000000..422a1e8e2a --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/allurite.json @@ -0,0 +1,22 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "create:stone_types/galosphere/allurite" + } + ], + "results": [ + { + "item": "galosphere:allurite_shard", + "count": 4, + "chance": 0.8 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/galosphere/amethyst.json b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/amethyst.json new file mode 100644 index 0000000000..86ef2160e0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/amethyst.json @@ -0,0 +1,22 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "create:stone_types/galosphere/amethyst" + } + ], + "results": [ + { + "item": "minecraft:amethyst_shard", + "count": 4, + "chance": 0.8 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/galosphere/lumiere.json b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/lumiere.json new file mode 100644 index 0000000000..4eb20d8436 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/galosphere/lumiere.json @@ -0,0 +1,22 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "create:stone_types/galosphere/lumiere" + } + ], + "results": [ + { + "item": "galosphere:lumiere_shard", + "count": 4, + "chance": 0.8 + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/neapolitan/crushing/ice.json b/src/generated/resources/data/create/recipes/crushing/compat/neapolitan/ice.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/neapolitan/crushing/ice.json rename to src/generated/resources/data/create/recipes/crushing/compat/neapolitan/ice.json diff --git a/src/generated/resources/data/create/recipes/crushing/compat/quark/moss_block.json b/src/generated/resources/data/create/recipes/crushing/compat/quark/moss_block.json new file mode 100644 index 0000000000..f735e9387f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/quark/moss_block.json @@ -0,0 +1,25 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:moss_block" + } + ], + "results": [ + { + "item": "quark:moss_paste", + "count": 2 + }, + { + "item": "quark:moss_paste", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "quark", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/agate_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/agate_ore.json new file mode 100644 index 0000000000..535ba5e9bc --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/agate_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:agate_ore" + } + ], + "results": [ + { + "item": "silentgems:agate", + "count": 2 + }, + { + "item": "silentgems:agate", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/alexandrite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/alexandrite_ore.json new file mode 100644 index 0000000000..d1628a85db --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/alexandrite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:alexandrite_ore" + } + ], + "results": [ + { + "item": "silentgems:alexandrite", + "count": 2 + }, + { + "item": "silentgems:alexandrite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amber_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amber_ore.json new file mode 100644 index 0000000000..0ba1bc1fed --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amber_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:amber_ore" + } + ], + "results": [ + { + "item": "silentgems:amber", + "count": 2 + }, + { + "item": "silentgems:amber", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amethyst_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amethyst_ore.json new file mode 100644 index 0000000000..3c5eadff07 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/amethyst_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:amethyst_ore" + } + ], + "results": [ + { + "item": "silentgems:amethyst", + "count": 2 + }, + { + "item": "silentgems:amethyst", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ametrine_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ametrine_ore.json new file mode 100644 index 0000000000..70b5960fb3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ametrine_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:ametrine_ore" + } + ], + "results": [ + { + "item": "silentgems:ametrine", + "count": 2 + }, + { + "item": "silentgems:ametrine", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ammolite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ammolite_ore.json new file mode 100644 index 0000000000..6020df5e99 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ammolite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:ammolite_ore" + } + ], + "results": [ + { + "item": "silentgems:ammolite", + "count": 2 + }, + { + "item": "silentgems:ammolite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/apatite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/apatite_ore.json new file mode 100644 index 0000000000..12ee14c298 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/apatite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:apatite_ore" + } + ], + "results": [ + { + "item": "silentgems:apatite", + "count": 2 + }, + { + "item": "silentgems:apatite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/aquamarine_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/aquamarine_ore.json new file mode 100644 index 0000000000..bc22ed7599 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/aquamarine_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:aquamarine_ore" + } + ], + "results": [ + { + "item": "silentgems:aquamarine", + "count": 2 + }, + { + "item": "silentgems:aquamarine", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/beniotite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/beniotite_ore.json new file mode 100644 index 0000000000..51fd9bfe85 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/beniotite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:beniotite_ore" + } + ], + "results": [ + { + "item": "silentgems:beniotite", + "count": 2 + }, + { + "item": "silentgems:beniotite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/black_diamond_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/black_diamond_ore.json new file mode 100644 index 0000000000..a2c97e413f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/black_diamond_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:black_diamond_ore" + } + ], + "results": [ + { + "item": "silentgems:black_diamond", + "count": 2 + }, + { + "item": "silentgems:black_diamond", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/carnelian_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/carnelian_ore.json new file mode 100644 index 0000000000..59ee7c8c3c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/carnelian_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:carnelian_ore" + } + ], + "results": [ + { + "item": "silentgems:carnelian", + "count": 2 + }, + { + "item": "silentgems:carnelian", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/cats_eye_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/cats_eye_ore.json new file mode 100644 index 0000000000..33126e8117 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/cats_eye_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:cats_eye_ore" + } + ], + "results": [ + { + "item": "silentgems:cats_eye", + "count": 2 + }, + { + "item": "silentgems:cats_eye", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/chrysoprase_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/chrysoprase_ore.json new file mode 100644 index 0000000000..4c58848ac0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/chrysoprase_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:chrysoprase_ore" + } + ], + "results": [ + { + "item": "silentgems:chrysoprase", + "count": 2 + }, + { + "item": "silentgems:chrysoprase", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/citrine_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/citrine_ore.json new file mode 100644 index 0000000000..98007f8063 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/citrine_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:citrine_ore" + } + ], + "results": [ + { + "item": "silentgems:citrine", + "count": 2 + }, + { + "item": "silentgems:citrine", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/coral_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/coral_ore.json new file mode 100644 index 0000000000..7f9fa9d792 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/coral_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:coral_ore" + } + ], + "results": [ + { + "item": "silentgems:coral", + "count": 2 + }, + { + "item": "silentgems:coral", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/eculase_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/eculase_ore.json new file mode 100644 index 0000000000..cbac3ea8bf --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/eculase_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:eculase_ore" + } + ], + "results": [ + { + "item": "silentgems:eculase", + "count": 2 + }, + { + "item": "silentgems:eculase", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/flourite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/flourite_ore.json new file mode 100644 index 0000000000..f6c049906c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/flourite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:flourite_ore" + } + ], + "results": [ + { + "item": "silentgems:flourite", + "count": 2 + }, + { + "item": "silentgems:flourite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/garnet_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/garnet_ore.json new file mode 100644 index 0000000000..289cf2e1bb --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/garnet_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:garnet_ore" + } + ], + "results": [ + { + "item": "silentgems:garnet", + "count": 2 + }, + { + "item": "silentgems:garnet", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/green_sapphire_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/green_sapphire_ore.json new file mode 100644 index 0000000000..2eb5dbc1b6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/green_sapphire_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:green_sapphire_ore" + } + ], + "results": [ + { + "item": "silentgems:green_sapphire", + "count": 2 + }, + { + "item": "silentgems:green_sapphire", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/helidor_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/helidor_ore.json new file mode 100644 index 0000000000..66dbce6e46 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/helidor_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:helidor_ore" + } + ], + "results": [ + { + "item": "silentgems:helidor", + "count": 2 + }, + { + "item": "silentgems:helidor", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/iolite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/iolite_ore.json new file mode 100644 index 0000000000..6753b7848d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/iolite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:iolite_ore" + } + ], + "results": [ + { + "item": "silentgems:iolite", + "count": 2 + }, + { + "item": "silentgems:iolite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jade_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jade_ore.json new file mode 100644 index 0000000000..4173354c23 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jade_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:jade_ore" + } + ], + "results": [ + { + "item": "silentgems:jade", + "count": 2 + }, + { + "item": "silentgems:jade", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jasper_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jasper_ore.json new file mode 100644 index 0000000000..3945f1002b --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/jasper_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:jasper_ore" + } + ], + "results": [ + { + "item": "silentgems:jasper", + "count": 2 + }, + { + "item": "silentgems:jasper", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kunzite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kunzite_ore.json new file mode 100644 index 0000000000..0e0d0232ab --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kunzite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:kunzite_ore" + } + ], + "results": [ + { + "item": "silentgems:kunzite", + "count": 2 + }, + { + "item": "silentgems:kunzite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kyanite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kyanite_ore.json new file mode 100644 index 0000000000..2d58ef943f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/kyanite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:kyanite_ore" + } + ], + "results": [ + { + "item": "silentgems:kyanite", + "count": 2 + }, + { + "item": "silentgems:kyanite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/lepidolite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/lepidolite_ore.json new file mode 100644 index 0000000000..32fa6590c1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/lepidolite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:lepidolite_ore" + } + ], + "results": [ + { + "item": "silentgems:lepidolite", + "count": 2 + }, + { + "item": "silentgems:lepidolite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/malachite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/malachite_ore.json new file mode 100644 index 0000000000..3213671592 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/malachite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:malachite_ore" + } + ], + "results": [ + { + "item": "silentgems:malachite", + "count": 2 + }, + { + "item": "silentgems:malachite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moldavite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moldavite_ore.json new file mode 100644 index 0000000000..39420f11ad --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moldavite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:moldavite_ore" + } + ], + "results": [ + { + "item": "silentgems:moldavite", + "count": 2 + }, + { + "item": "silentgems:moldavite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moonstone_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moonstone_ore.json new file mode 100644 index 0000000000..302310c3ca --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/moonstone_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:moonstone_ore" + } + ], + "results": [ + { + "item": "silentgems:moonstone", + "count": 2 + }, + { + "item": "silentgems:moonstone", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/morganite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/morganite_ore.json new file mode 100644 index 0000000000..0cf3de529c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/morganite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:morganite_ore" + } + ], + "results": [ + { + "item": "silentgems:morganite", + "count": 2 + }, + { + "item": "silentgems:morganite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/onyx_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/onyx_ore.json new file mode 100644 index 0000000000..0808eea0a0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/onyx_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:onyx_ore" + } + ], + "results": [ + { + "item": "silentgems:onyx", + "count": 2 + }, + { + "item": "silentgems:onyx", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/opal_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/opal_ore.json new file mode 100644 index 0000000000..9d229db43b --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/opal_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:opal_ore" + } + ], + "results": [ + { + "item": "silentgems:opal", + "count": 2 + }, + { + "item": "silentgems:opal", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pearl_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pearl_ore.json new file mode 100644 index 0000000000..133730ce02 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pearl_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:pearl_ore" + } + ], + "results": [ + { + "item": "silentgems:pearl", + "count": 2 + }, + { + "item": "silentgems:pearl", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/peridot_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/peridot_ore.json new file mode 100644 index 0000000000..91f431a1a2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/peridot_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:peridot_ore" + } + ], + "results": [ + { + "item": "silentgems:peridot", + "count": 2 + }, + { + "item": "silentgems:peridot", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/phosphophyllite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/phosphophyllite_ore.json new file mode 100644 index 0000000000..97e982ad94 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/phosphophyllite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:phosphophyllite_ore" + } + ], + "results": [ + { + "item": "silentgems:phosphophyllite", + "count": 2 + }, + { + "item": "silentgems:phosphophyllite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pyrope_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pyrope_ore.json new file mode 100644 index 0000000000..ec5c332792 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/pyrope_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:pyrope_ore" + } + ], + "results": [ + { + "item": "silentgems:pyrope", + "count": 2 + }, + { + "item": "silentgems:pyrope", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/rose_quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/rose_quartz_ore.json new file mode 100644 index 0000000000..59ef24790e --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/rose_quartz_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:rose_quartz_ore" + } + ], + "results": [ + { + "item": "silentgems:rose_quartz", + "count": 2 + }, + { + "item": "silentgems:rose_quartz", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ruby_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ruby_ore.json new file mode 100644 index 0000000000..006b8b4d31 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/ruby_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:ruby_ore" + } + ], + "results": [ + { + "item": "silentgems:ruby", + "count": 2 + }, + { + "item": "silentgems:ruby", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sapphire_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sapphire_ore.json new file mode 100644 index 0000000000..7be3ba406f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sapphire_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:sapphire_ore" + } + ], + "results": [ + { + "item": "silentgems:sapphire", + "count": 2 + }, + { + "item": "silentgems:sapphire", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sodalite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sodalite_ore.json new file mode 100644 index 0000000000..7749e67f24 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sodalite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:sodalite_ore" + } + ], + "results": [ + { + "item": "silentgems:sodalite", + "count": 2 + }, + { + "item": "silentgems:sodalite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/spinel_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/spinel_ore.json new file mode 100644 index 0000000000..4f6e537bad --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/spinel_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:spinel_ore" + } + ], + "results": [ + { + "item": "silentgems:spinel", + "count": 2 + }, + { + "item": "silentgems:spinel", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sunstone_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sunstone_ore.json new file mode 100644 index 0000000000..4e3224b027 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/sunstone_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:sunstone_ore" + } + ], + "results": [ + { + "item": "silentgems:sunstone", + "count": 2 + }, + { + "item": "silentgems:sunstone", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tanzite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tanzite_ore.json new file mode 100644 index 0000000000..3fd2d45fb7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tanzite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:tanzite_ore" + } + ], + "results": [ + { + "item": "silentgems:tanzite", + "count": 2 + }, + { + "item": "silentgems:tanzite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tektite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tektite_ore.json new file mode 100644 index 0000000000..e59d8e176d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/tektite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:tektite_ore" + } + ], + "results": [ + { + "item": "silentgems:tektite", + "count": 2 + }, + { + "item": "silentgems:tektite", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/topaz_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/topaz_ore.json new file mode 100644 index 0000000000..5e9eeca721 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/topaz_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:topaz_ore" + } + ], + "results": [ + { + "item": "silentgems:topaz", + "count": 2 + }, + { + "item": "silentgems:topaz", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/turquoise_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/turquoise_ore.json new file mode 100644 index 0000000000..cdbbb93dcd --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/turquoise_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:turquoise_ore" + } + ], + "results": [ + { + "item": "silentgems:turquoise", + "count": 2 + }, + { + "item": "silentgems:turquoise", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/yellow_diamond_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/yellow_diamond_ore.json new file mode 100644 index 0000000000..60bb329106 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/yellow_diamond_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:yellow_diamond_ore" + } + ], + "results": [ + { + "item": "silentgems:yellow_diamond", + "count": 2 + }, + { + "item": "silentgems:yellow_diamond", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:end_stone", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/silentgems/zircon_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/zircon_ore.json new file mode 100644 index 0000000000..375d854b26 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/silentgems/zircon_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "silentgems:zircon_ore" + } + ], + "results": [ + { + "item": "silentgems:zircon", + "count": 2 + }, + { + "item": "silentgems:zircon", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.12 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "silentgems", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/barley.json b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/barley.json new file mode 100644 index 0000000000..7a14b7b15a --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/barley.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "simplefarming:barley" + } + ], + "results": [ + { + "item": "create:wheat_flour" + }, + { + "item": "create:wheat_flour", + "count": 2, + "chance": 0.25 + }, + { + "item": "simplefarming:barley_seeds", + "chance": 0.25 + } + ], + "processingTime": 150, + "conditions": [ + { + "modid": "simplefarming", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/oat.json b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/oat.json new file mode 100644 index 0000000000..ef35be6420 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/oat.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "simplefarming:oat" + } + ], + "results": [ + { + "item": "create:wheat_flour" + }, + { + "item": "create:wheat_flour", + "count": 2, + "chance": 0.25 + }, + { + "item": "simplefarming:oat_seeds", + "chance": 0.25 + } + ], + "processingTime": 150, + "conditions": [ + { + "modid": "simplefarming", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rice.json b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rice.json new file mode 100644 index 0000000000..f21f5455b0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rice.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "simplefarming:rice" + } + ], + "results": [ + { + "item": "create:wheat_flour" + }, + { + "item": "create:wheat_flour", + "count": 2, + "chance": 0.25 + }, + { + "item": "simplefarming:rice_seeds", + "chance": 0.25 + } + ], + "processingTime": 150, + "conditions": [ + { + "modid": "simplefarming", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rye.json b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rye.json new file mode 100644 index 0000000000..21a0c2cd32 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/simplefarming/rye.json @@ -0,0 +1,29 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "simplefarming:rye" + } + ], + "results": [ + { + "item": "create:wheat_flour" + }, + { + "item": "create:wheat_flour", + "count": 2, + "chance": 0.25 + }, + { + "item": "simplefarming:rye_seeds", + "chance": 0.25 + } + ], + "processingTime": 150, + "conditions": [ + { + "modid": "simplefarming", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/thermal/apatite_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/thermal/apatite_ore.json new file mode 100644 index 0000000000..6360c7a660 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/thermal/apatite_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "thermal:apatite_ore" + } + ], + "results": [ + { + "item": "thermal:apatite", + "count": 2 + }, + { + "item": "thermal:apatite", + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "thermal", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/thermal/cinnabar_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/thermal/cinnabar_ore.json new file mode 100644 index 0000000000..fdecce39e5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/thermal/cinnabar_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "thermal:cinnabar_ore" + } + ], + "results": [ + { + "item": "thermal:cinnabar", + "count": 2 + }, + { + "item": "thermal:cinnabar", + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "thermal", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/thermal/niter_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/thermal/niter_ore.json new file mode 100644 index 0000000000..3511d29ce8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/thermal/niter_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "thermal:niter_ore" + } + ], + "results": [ + { + "item": "thermal:niter", + "count": 2 + }, + { + "item": "thermal:niter", + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "thermal", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/compat/thermal/sulfur_ore.json b/src/generated/resources/data/create/recipes/crushing/compat/thermal/sulfur_ore.json new file mode 100644 index 0000000000..cde72e2aa9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/compat/thermal/sulfur_ore.json @@ -0,0 +1,33 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "thermal:sulfur_ore" + } + ], + "results": [ + { + "item": "thermal:sulfur", + "count": 2 + }, + { + "item": "thermal:sulfur", + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.12 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + } + ], + "processingTime": 350, + "conditions": [ + { + "modid": "thermal", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/deepslate_coal_ore.json b/src/generated/resources/data/create/recipes/crushing/deepslate_coal_ore.json index 1a7b72c05b..6cf1a77d84 100644 --- a/src/generated/resources/data/create/recipes/crushing/deepslate_coal_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/deepslate_coal_ore.json @@ -7,11 +7,12 @@ ], "results": [ { - "item": "minecraft:coal" + "item": "minecraft:coal", + "count": 2 }, { "item": "minecraft:coal", - "chance": 0.75 + "chance": 0.25 }, { "item": "create:experience_nugget", @@ -22,5 +23,5 @@ "chance": 0.125 } ], - "processingTime": 250 + "processingTime": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/diorite.json b/src/generated/resources/data/create/recipes/crushing/diorite.json index d24a98f385..88030ecc16 100644 --- a/src/generated/resources/data/create/recipes/crushing/diorite.json +++ b/src/generated/resources/data/create/recipes/crushing/diorite.json @@ -11,5 +11,14 @@ "chance": 0.25 } ], - "processingTime": 350 + "processingTime": 350, + "conditions": [ + { + "value": { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/gilded_blackstone.json b/src/generated/resources/data/create/recipes/crushing/gilded_blackstone.json new file mode 100644 index 0000000000..df163c327f --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/gilded_blackstone.json @@ -0,0 +1,23 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:gilded_blackstone" + } + ], + "results": [ + { + "item": "minecraft:gold_nugget", + "count": 18 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:blackstone", + "chance": 0.125 + } + ], + "processingTime": 400 +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/netherrack.json b/src/generated/resources/data/create/recipes/crushing/netherrack.json index ec9af51d60..527b64dc65 100644 --- a/src/generated/resources/data/create/recipes/crushing/netherrack.json +++ b/src/generated/resources/data/create/recipes/crushing/netherrack.json @@ -14,5 +14,14 @@ "chance": 0.5 } ], - "processingTime": 250 + "processingTime": 250, + "conditions": [ + { + "value": { + "modid": "exnihilosequentia", + "type": "forge:mod_loaded" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_log.json new file mode 100644 index 0000000000..28b3954dcf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:aspen_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_aspen_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_wood.json new file mode 100644 index 0000000000..ab270d62c0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/aspen_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:aspen_wood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_aspen_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood.json new file mode 100644 index 0000000000..2dcf3f8021 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:grimwood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_grimwood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood_log.json new file mode 100644 index 0000000000..6000928a6b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/grimwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:grimwood_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_grimwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_log.json new file mode 100644 index 0000000000..1159dcfca6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:kousa_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_kousa_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_wood.json new file mode 100644 index 0000000000..8eee1b4de7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/kousa_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:kousa_wood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_kousa_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_log.json new file mode 100644 index 0000000000..f9b2df8db1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:morado_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_morado_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_wood.json new file mode 100644 index 0000000000..ffa5fe1087 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/morado_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:morado_wood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_morado_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood.json new file mode 100644 index 0000000000..40fffeab9d --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:rosewood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_rosewood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood_log.json new file mode 100644 index 0000000000..35cc1699e8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/rosewood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:rosewood_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_rosewood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_aspen_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_aspen_log.json diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_aspen_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_aspen_wood.json new file mode 100644 index 0000000000..22a22393d9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_aspen_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_aspen_wood" + } + ], + "results": [ + { + "item": "atmospheric:aspen_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_grimwood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_grimwood.json new file mode 100644 index 0000000000..9b0abf3a69 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_grimwood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_grimwood" + } + ], + "results": [ + { + "item": "atmospheric:grimwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_grimwood_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_grimwood_log.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_kousa_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_kousa_log.json diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_kousa_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_kousa_wood.json new file mode 100644 index 0000000000..39c6afc9cc --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_kousa_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_kousa_wood" + } + ], + "results": [ + { + "item": "atmospheric:kousa_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_log.json new file mode 100644 index 0000000000..5c0a326494 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_morado_log" + } + ], + "results": [ + { + "item": "atmospheric:morado_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_wood.json new file mode 100644 index 0000000000..ea23d27205 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_morado_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_morado_wood" + } + ], + "results": [ + { + "item": "atmospheric:morado_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_rosewood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_rosewood.json new file mode 100644 index 0000000000..6462b8b4fa --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_rosewood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_rosewood" + } + ], + "results": [ + { + "item": "atmospheric:rosewood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_rosewood_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_rosewood_log.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_yucca_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_yucca_log.json diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_yucca_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_yucca_wood.json new file mode 100644 index 0000000000..aa5a135e4e --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/stripped_yucca_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_yucca_wood" + } + ], + "results": [ + { + "item": "atmospheric:yucca_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_log.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_log.json new file mode 100644 index 0000000000..ed93153b04 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:yucca_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_yucca_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_wood.json new file mode 100644 index 0000000000..877a80d3bf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/atmospheric/yucca_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:yucca_wood" + } + ], + "results": [ + { + "item": "atmospheric:stripped_yucca_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_log.json new file mode 100644 index 0000000000..33516ee37b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:maple_log" + } + ], + "results": [ + { + "item": "autumnity:stripped_maple_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "autumnity", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_wood.json new file mode 100644 index 0000000000..5a7789243d --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/maple_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:maple_wood" + } + ], + "results": [ + { + "item": "autumnity:stripped_maple_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "autumnity", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_log.json new file mode 100644 index 0000000000..c178118143 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:sappy_maple_log" + } + ], + "results": [ + { + "item": "autumnity:maple_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "autumnity", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_wood.json new file mode 100644 index 0000000000..f0f9e3b836 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/sappy_maple_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:sappy_maple_wood" + } + ], + "results": [ + { + "item": "autumnity:sappy_maple_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "autumnity", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/stripped_maple_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/autumnity/stripped_maple_log.json diff --git a/src/generated/resources/data/create/recipes/cutting/compat/autumnity/stripped_maple_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/stripped_maple_wood.json new file mode 100644 index 0000000000..5551156173 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/autumnity/stripped_maple_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:stripped_maple_wood" + } + ], + "results": [ + { + "item": "autumnity:maple_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "autumnity", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/endergetic/poise_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/endergetic/poise_stem.json new file mode 100644 index 0000000000..e6dbc20cee --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/endergetic/poise_stem.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "endergetic:poise_stem" + } + ], + "results": [ + { + "item": "endergetic:stripped_poise_stem" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "endergetic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/endergetic/stripped_poise_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/endergetic/stripped_poise_stem.json new file mode 100644 index 0000000000..261256d561 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/endergetic/stripped_poise_stem.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "endergetic:stripped_poise_stem" + } + ], + "results": [ + { + "item": "endergetic:poise_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "endergetic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log.json b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log.json similarity index 75% rename from src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log.json index d0ebc340e2..3b566f4661 100644 --- a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log.json +++ b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log.json @@ -2,12 +2,12 @@ "type": "create:cutting", "ingredients": [ { - "item": "hexcasting:akashic_log" + "item": "hexcasting:edified_log" } ], "results": [ { - "item": "hexcasting:akashic_log_stripped" + "item": "hexcasting:edified_log_stripped" } ], "processingTime": 50, diff --git a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log_stripped.json b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log_stripped.json similarity index 75% rename from src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log_stripped.json rename to src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log_stripped.json index e8a973d1f9..e341558c15 100644 --- a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_log_stripped.json +++ b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_log_stripped.json @@ -2,12 +2,12 @@ "type": "create:cutting", "ingredients": [ { - "item": "hexcasting:akashic_log_stripped" + "item": "hexcasting:edified_log_stripped" } ], "results": [ { - "item": "hexcasting:akashic_planks", + "item": "hexcasting:edified_planks", "count": 6 } ], diff --git a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood.json similarity index 74% rename from src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood.json rename to src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood.json index 152fcf11a8..f6c44bef3c 100644 --- a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood.json +++ b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood.json @@ -2,12 +2,12 @@ "type": "create:cutting", "ingredients": [ { - "item": "hexcasting:akashic_wood" + "item": "hexcasting:edified_wood" } ], "results": [ { - "item": "hexcasting:akashic_wood_stripped" + "item": "hexcasting:edified_wood_stripped" } ], "processingTime": 50, diff --git a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood_stripped.json b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood_stripped.json similarity index 75% rename from src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood_stripped.json rename to src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood_stripped.json index fb6efc0afe..a6b4feaaff 100644 --- a/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/akashic_wood_stripped.json +++ b/src/generated/resources/data/create/recipes/cutting/compat/hexcasting/edified_wood_stripped.json @@ -2,12 +2,12 @@ "type": "create:cutting", "ingredients": [ { - "item": "hexcasting:akashic_wood_stripped" + "item": "hexcasting:edified_wood_stripped" } ], "results": [ { - "item": "hexcasting:akashic_planks", + "item": "hexcasting:edified_planks", "count": 6 } ], diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/jabuticaba_log.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/jabuticaba_log.json new file mode 100644 index 0000000000..428cfc79bd --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/jabuticaba_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:jabuticaba_log" + } + ], + "results": [ + { + "item": "nethers_exoticism:stripped_jabuticaba_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_log.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_log.json new file mode 100644 index 0000000000..509943e3f4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:ramboutan_log" + } + ], + "results": [ + { + "item": "nethers_exoticism:stripped_ramboutan_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_wood.json new file mode 100644 index 0000000000..75d1c92094 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/ramboutan_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:ramboutan_wood" + } + ], + "results": [ + { + "item": "nethers_exoticism:stripped_ramboutan_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_jabuticaba_log.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_jabuticaba_log.json new file mode 100644 index 0000000000..8fea283062 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_jabuticaba_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:stripped_jabuticaba_log" + } + ], + "results": [ + { + "item": "nethers_exoticism:jabuticaba_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_log.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_log.json new file mode 100644 index 0000000000..e935ed6725 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:stripped_ramboutan_log" + } + ], + "results": [ + { + "item": "nethers_exoticism:ramboutan_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_wood.json new file mode 100644 index 0000000000..4af3706dd1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/nethers_exoticism/stripped_ramboutan_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "nethers_exoticism:stripped_ramboutan_wood" + } + ], + "results": [ + { + "item": "nethers_exoticism:ramboutan_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "nethers_exoticism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/aspen_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/aspen_log.json new file mode 100644 index 0000000000..2fe214a227 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/aspen_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:aspen_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_aspen_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/baobab_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/baobab_log.json new file mode 100644 index 0000000000..eed49cc92d --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/baobab_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:baobab_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_baobab_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/cottonwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/cottonwood_log.json new file mode 100644 index 0000000000..9a8fb6ec70 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/cottonwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:cottonwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_cottonwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/fir_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/fir_log.json new file mode 100644 index 0000000000..3b3204b50c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/fir_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:fir_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_fir_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/juniper_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/juniper_log.json new file mode 100644 index 0000000000..f0700b661e --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/juniper_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:juniper_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_juniper_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/mangrove_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/mangrove_log.json new file mode 100644 index 0000000000..bc87e37d0f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/mangrove_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:mangrove_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_mangrove_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/maple_log.json new file mode 100644 index 0000000000..928c84fa70 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/maple_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:maple_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_maple_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/palm_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/palm_log.json new file mode 100644 index 0000000000..bd64d0154b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/palm_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:palm_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_palm_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/pine_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/pine_log.json new file mode 100644 index 0000000000..5c17e4e0a7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/pine_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:pine_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_pine_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/redwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/redwood_log.json new file mode 100644 index 0000000000..9cc20183b2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/redwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:redwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_redwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_aspen_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_aspen_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_baobab_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_baobab_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_cottonwood_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_cottonwood_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_fir_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_fir_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_juniper_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_juniper_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_mangrove_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_mangrove_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_maple_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_maple_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_palm_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_palm_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_pine_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_pine_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_redwood_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_redwood_log.json diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_willow_log.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json rename to src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/stripped_willow_log.json diff --git a/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/willow_log.json b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/willow_log.json new file mode 100644 index 0000000000..ccd26205f6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/projectvibrantjourneys/willow_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:willow_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_willow_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "projectvibrantjourneys", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/alpha_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/alpha_wood.json new file mode 100644 index 0000000000..42bc43d551 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/alpha_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:alpha_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:alpha_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_log.json new file mode 100644 index 0000000000..4a3364d1ce --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:ashen_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_dead_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_wood.json new file mode 100644 index 0000000000..1699ae8333 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/ashen_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:ashen_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_dead_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_log.json new file mode 100644 index 0000000000..3f276ffcf1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:baobab_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_baobab_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_wood.json new file mode 100644 index 0000000000..97ceba001b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/baobab_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:baobab_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_baobab_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_log.json new file mode 100644 index 0000000000..97fdb8ad76 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:blackwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_blackwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_wood.json new file mode 100644 index 0000000000..d5cd7c1ccf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blackwood_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:blackwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_blackwood_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_hyphae.json new file mode 100644 index 0000000000..ef20788269 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_hyphae.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:blue_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_blue_bioshroom_hyphae" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_stem.json new file mode 100644 index 0000000000..6224bbe101 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/blue_bioshroom_stem.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:blue_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_blue_bioshroom_stem" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log.json new file mode 100644 index 0000000000..4b31b024bb --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:brimwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_brimwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log_magma.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log_magma.json new file mode 100644 index 0000000000..0a8443fd7c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_log_magma.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:brimwood_log_magma" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_brimwood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_wood.json new file mode 100644 index 0000000000..0cb8e1f4e1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/brimwood_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:brimwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_brimwood_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_log.json new file mode 100644 index 0000000000..290ea0c8c3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:cobalt_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_cobalt_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_wood.json new file mode 100644 index 0000000000..0ee1628d22 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cobalt_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:cobalt_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_cobalt_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_log.json new file mode 100644 index 0000000000..0a38fa8f26 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:cypress_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_cypress_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_wood.json new file mode 100644 index 0000000000..55216f001c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/cypress_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:cypress_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_cypress_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_log.json new file mode 100644 index 0000000000..9ba4b6ceb8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:dead_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_dead_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_wood.json new file mode 100644 index 0000000000..2c6f177a5c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/dead_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:dead_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_dead_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_log.json new file mode 100644 index 0000000000..49e50f634f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:eucalyptus_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_eucalyptus_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_wood.json new file mode 100644 index 0000000000..b1f1cb8f05 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/eucalyptus_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:eucalyptus_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_eucalyptus_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_hyphae.json new file mode 100644 index 0000000000..17a4a1d2b3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_hyphae.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:green_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_green_bioshroom_hyphae" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_stem.json new file mode 100644 index 0000000000..64e52ff454 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/green_bioshroom_stem.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:green_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_green_bioshroom_stem" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_log.json new file mode 100644 index 0000000000..a7ddaec093 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:joshua_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_joshua_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_wood.json new file mode 100644 index 0000000000..9e02c10264 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/joshua_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:joshua_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_joshua_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_log.json new file mode 100644 index 0000000000..7d26cfe8a3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:kapok_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_kapok_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_wood.json new file mode 100644 index 0000000000..d72558ea37 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/kapok_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:kapok_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_kapok_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_log.json new file mode 100644 index 0000000000..a0461120d4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:larch_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_larch_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_wood.json new file mode 100644 index 0000000000..9fbd19c64c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/larch_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:larch_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_larch_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_log.json new file mode 100644 index 0000000000..9b301698d8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:magnolia_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_magnolia_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_wood.json new file mode 100644 index 0000000000..f27d994164 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/magnolia_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:magnolia_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_magnolia_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_log.json new file mode 100644 index 0000000000..cd1901990d --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:maple_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_maple_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_wood.json new file mode 100644 index 0000000000..4cf656812b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/maple_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:maple_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_maple_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_log.json new file mode 100644 index 0000000000..1da1e48992 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:mauve_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_mauve_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_wood.json new file mode 100644 index 0000000000..d6cb3bf093 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/mauve_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:mauve_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_mauve_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_log.json new file mode 100644 index 0000000000..bbd28f7ff0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:palm_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_palm_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_wood.json new file mode 100644 index 0000000000..ed30ba3c50 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/palm_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:palm_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_palm_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_log.json new file mode 100644 index 0000000000..f210e9b4ba --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:pine_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_pine_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_wood.json new file mode 100644 index 0000000000..3dc121545c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pine_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:pine_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_pine_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_hyphae.json new file mode 100644 index 0000000000..7c5f01dfa6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_hyphae.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:pink_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_pink_bioshroom_hyphae" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_stem.json new file mode 100644 index 0000000000..84758d52cd --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/pink_bioshroom_stem.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:pink_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_pink_bioshroom_stem" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_log.json new file mode 100644 index 0000000000..6f3e438441 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:redwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_redwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_wood.json new file mode 100644 index 0000000000..430e162fc6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/redwood_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:redwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_redwood_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_log.json new file mode 100644 index 0000000000..b5c0550646 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:silver_birch_log" + } + ], + "results": [ + { + "item": "minecraft:stripped_birch_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_wood.json new file mode 100644 index 0000000000..ee4495f0e4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/silver_birch_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:silver_birch_wood" + } + ], + "results": [ + { + "item": "minecraft:stripped_birch_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_log.json new file mode 100644 index 0000000000..9ccdf97c72 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:socotra_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_socotra_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_wood.json new file mode 100644 index 0000000000..e0d717e9a0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/socotra_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:socotra_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_socotra_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_log.json new file mode 100644 index 0000000000..fa426e2ef7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_baobab_log" + } + ], + "results": [ + { + "item": "regions_unexplored:baobab_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_wood.json new file mode 100644 index 0000000000..783f9152c3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_baobab_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_baobab_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:baobab_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_log.json new file mode 100644 index 0000000000..b8c004f513 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_blackwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:blackwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_wood.json new file mode 100644 index 0000000000..8dc02e87b1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blackwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_blackwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:blackwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_hyphae.json new file mode 100644 index 0000000000..0b9a0aacef --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_hyphae.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_blue_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:blue_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_stem.json new file mode 100644 index 0000000000..33c8c67611 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_blue_bioshroom_stem.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_blue_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:blue_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_log.json new file mode 100644 index 0000000000..3c72877cb9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_brimwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:brimwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_wood.json new file mode 100644 index 0000000000..6bff33d6bf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_brimwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_brimwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:brimwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_log.json new file mode 100644 index 0000000000..f91785ecb6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_cobalt_log" + } + ], + "results": [ + { + "item": "regions_unexplored:cobalt_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_wood.json new file mode 100644 index 0000000000..6732aa3630 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cobalt_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_cobalt_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:cobalt_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_log.json new file mode 100644 index 0000000000..d8b7d5b6ab --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_cypress_log" + } + ], + "results": [ + { + "item": "regions_unexplored:cypress_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_wood.json new file mode 100644 index 0000000000..e165924897 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_cypress_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_cypress_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:cypress_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_log.json new file mode 100644 index 0000000000..b58f0333a9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_dead_log" + } + ], + "results": [ + { + "item": "regions_unexplored:dead_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_wood.json new file mode 100644 index 0000000000..79651478fc --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_dead_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_dead_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:dead_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_log.json new file mode 100644 index 0000000000..2679ffeef7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_eucalyptus_log" + } + ], + "results": [ + { + "item": "regions_unexplored:eucalyptus_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_wood.json new file mode 100644 index 0000000000..b78ad569d7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_eucalyptus_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_eucalyptus_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:eucalyptus_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_hyphae.json new file mode 100644 index 0000000000..b8647ac064 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_hyphae.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_green_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:green_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_stem.json new file mode 100644 index 0000000000..e015a7d0fa --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_green_bioshroom_stem.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_green_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:green_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_log.json new file mode 100644 index 0000000000..26cb44decf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_joshua_log" + } + ], + "results": [ + { + "item": "regions_unexplored:joshua_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_wood.json new file mode 100644 index 0000000000..e4dd489884 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_joshua_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_joshua_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:joshua_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_log.json new file mode 100644 index 0000000000..f4d4a4fc1a --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_kapok_log" + } + ], + "results": [ + { + "item": "regions_unexplored:kapok_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_wood.json new file mode 100644 index 0000000000..3057bdb799 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_kapok_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_kapok_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:kapok_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_log.json new file mode 100644 index 0000000000..be56ea94a5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_larch_log" + } + ], + "results": [ + { + "item": "regions_unexplored:larch_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_wood.json new file mode 100644 index 0000000000..3c255fc0f2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_larch_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_larch_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:larch_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_log.json new file mode 100644 index 0000000000..0e4f115b2e --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_magnolia_log" + } + ], + "results": [ + { + "item": "regions_unexplored:magnolia_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_wood.json new file mode 100644 index 0000000000..fe4f41aecf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_magnolia_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_magnolia_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:magnolia_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_log.json new file mode 100644 index 0000000000..4aaa7cdf00 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_maple_log" + } + ], + "results": [ + { + "item": "regions_unexplored:maple_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_wood.json new file mode 100644 index 0000000000..34f49205a0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_maple_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_maple_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:maple_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_log.json new file mode 100644 index 0000000000..a4d7e25767 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_mauve_log" + } + ], + "results": [ + { + "item": "regions_unexplored:mauve_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_wood.json new file mode 100644 index 0000000000..ddb0e8534a --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_mauve_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_mauve_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:mauve_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_log.json new file mode 100644 index 0000000000..172bbc8b32 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_palm_log" + } + ], + "results": [ + { + "item": "regions_unexplored:palm_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_wood.json new file mode 100644 index 0000000000..36807179fe --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_palm_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_palm_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:palm_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_log.json new file mode 100644 index 0000000000..c8fa745e06 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_pine_log" + } + ], + "results": [ + { + "item": "regions_unexplored:pine_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_wood.json new file mode 100644 index 0000000000..10c2976c5f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pine_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_pine_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:pine_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_hyphae.json new file mode 100644 index 0000000000..44e4305c84 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_hyphae.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_pink_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:pink_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_stem.json new file mode 100644 index 0000000000..3bdb23d9fb --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_pink_bioshroom_stem.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_pink_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:pink_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_log.json new file mode 100644 index 0000000000..38e8b55767 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_redwood_log" + } + ], + "results": [ + { + "item": "regions_unexplored:redwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_wood.json new file mode 100644 index 0000000000..6ecbf37e9d --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_redwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_redwood_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:redwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_log.json new file mode 100644 index 0000000000..f0fd3dcfbf --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_socotra_log" + } + ], + "results": [ + { + "item": "regions_unexplored:socotra_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_wood.json new file mode 100644 index 0000000000..5610f03a8f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_socotra_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_socotra_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:socotra_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_log.json new file mode 100644 index 0000000000..b7028f6254 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_willow_log" + } + ], + "results": [ + { + "item": "regions_unexplored:willow_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_wood.json new file mode 100644 index 0000000000..059c1e4b7f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_willow_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_willow_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:willow_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_hyphae.json new file mode 100644 index 0000000000..9b8c757a2a --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_hyphae.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_yellow_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:yellow_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_stem.json new file mode 100644 index 0000000000..db57578e31 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/stripped_yellow_bioshroom_stem.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:stripped_yellow_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:yellow_bioshroom_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_log.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_log.json new file mode 100644 index 0000000000..f7c7924b35 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:willow_log" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_willow_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_wood.json new file mode 100644 index 0000000000..d39fa6873f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/willow_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:willow_wood" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_willow_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_hyphae.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_hyphae.json new file mode 100644 index 0000000000..449dad58f3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_hyphae.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:yellow_bioshroom_hyphae" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_yellow_bioshroom_hyphae" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_stem.json b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_stem.json new file mode 100644 index 0000000000..cb6d486d1f --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/regions_unexplored/yellow_bioshroom_stem.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "regions_unexplored:yellow_bioshroom_stem" + } + ], + "results": [ + { + "item": "regions_unexplored:stripped_yellow_bioshroom_stem" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/chromatic_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/chromatic_log.json new file mode 100644 index 0000000000..2249bb5445 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/chromatic_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:chromatic_log" + } + ], + "results": [ + { + "item": "the_vault:stripped_chromatic_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/driftwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/driftwood_log.json new file mode 100644 index 0000000000..6ffeecebfc --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/driftwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:driftwood_log" + } + ], + "results": [ + { + "item": "the_vault:stripped_driftwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/overgrown_wooden_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/overgrown_wooden_log.json new file mode 100644 index 0000000000..7a7ced6873 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/overgrown_wooden_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:overgrown_wooden_log" + } + ], + "results": [ + { + "item": "the_vault:stripped_overgrown_wooden_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_chromatic_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_chromatic_log.json new file mode 100644 index 0000000000..93bfeee022 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_chromatic_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:stripped_chromatic_log" + } + ], + "results": [ + { + "item": "the_vault:chromatic_planks", + "count": 4 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_driftwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_driftwood_log.json new file mode 100644 index 0000000000..8c8a47c014 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_driftwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:stripped_driftwood_log" + } + ], + "results": [ + { + "item": "the_vault:driftwood_planks", + "count": 4 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_overgrown_wooden_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_overgrown_wooden_log.json new file mode 100644 index 0000000000..846fb6197c --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_overgrown_wooden_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:stripped_overgrown_wooden_log" + } + ], + "results": [ + { + "item": "the_vault:overgrown_wooden_planks", + "count": 4 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_wooden_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_wooden_log.json new file mode 100644 index 0000000000..69a63dd637 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/stripped_wooden_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:stripped_wooden_log" + } + ], + "results": [ + { + "item": "the_vault:wooden_planks", + "count": 4 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/the_vault/wooden_log.json b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/wooden_log.json new file mode 100644 index 0000000000..03feae10f5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/the_vault/wooden_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "the_vault:wooden_log" + } + ], + "results": [ + { + "item": "the_vault:stripped_wooden_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood.json new file mode 100644 index 0000000000..c3427257df --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:driftwood" + } + ], + "results": [ + { + "item": "upgrade_aquatic:strippped_driftwood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood_log.json new file mode 100644 index 0000000000..3b92ae899b --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/driftwood_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:driftwood_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:stripped_driftwood_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_log.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_log.json new file mode 100644 index 0000000000..607247ca63 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_log.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:river_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:stripped_river_log" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_wood.json new file mode 100644 index 0000000000..c1705b7306 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/river_wood.json @@ -0,0 +1,20 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:river_wood" + } + ], + "results": [ + { + "item": "upgrade_aquatic:stripped_river_wood" + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_driftwood_log.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_driftwood_log.json new file mode 100644 index 0000000000..697b686f87 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_driftwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:stripped_driftwood_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:driftwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_log.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_log.json new file mode 100644 index 0000000000..87aa21420e --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_log.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:stripped_river_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:river_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_wood.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_wood.json new file mode 100644 index 0000000000..2feba89851 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/stripped_river_wood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:stripped_river_wood" + } + ], + "results": [ + { + "item": "upgrade_aquatic:river_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/strippped_driftwood.json b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/strippped_driftwood.json new file mode 100644 index 0000000000..1ca0391df6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/cutting/compat/upgrade_aquatic/strippped_driftwood.json @@ -0,0 +1,21 @@ +{ + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:strippped_driftwood" + } + ], + "results": [ + { + "item": "upgrade_aquatic:driftwood_planks", + "count": 6 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "upgrade_aquatic", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/alexsmobs/emptying/lava_bottle.json b/src/generated/resources/data/create/recipes/emptying/compat/alexsmobs/lava_bottle.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/alexsmobs/emptying/lava_bottle.json rename to src/generated/resources/data/create/recipes/emptying/compat/alexsmobs/lava_bottle.json diff --git a/src/main/resources/data/create/recipes/compat/neapolitan/emptying/milk_bottle.json b/src/generated/resources/data/create/recipes/emptying/compat/neapolitan/milk_bottle.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/neapolitan/emptying/milk_bottle.json rename to src/generated/resources/data/create/recipes/emptying/compat/neapolitan/milk_bottle.json diff --git a/src/generated/resources/data/create/recipes/filling/compat/aether/aether_grass_block.json b/src/generated/resources/data/create/recipes/filling/compat/aether/aether_grass_block.json new file mode 100644 index 0000000000..06ca0805a9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/compat/aether/aether_grass_block.json @@ -0,0 +1,24 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "aether:aether_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 500 + } + ], + "results": [ + { + "item": "aether:aether_grass_block" + } + ], + "conditions": [ + { + "modid": "aether", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/alexsmobs/filling/lava_bottle.json b/src/generated/resources/data/create/recipes/filling/compat/alexsmobs/lava_bottle.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/alexsmobs/filling/lava_bottle.json rename to src/generated/resources/data/create/recipes/filling/compat/alexsmobs/lava_bottle.json diff --git a/src/main/resources/data/create/recipes/compat/byg/filling/lush_grass_block.json b/src/generated/resources/data/create/recipes/filling/compat/byg/lush_grass_block.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/filling/lush_grass_block.json rename to src/generated/resources/data/create/recipes/filling/compat/byg/lush_grass_block.json diff --git a/src/main/resources/data/create/recipes/compat/neapolitan/filling/milk_bottle.json b/src/generated/resources/data/create/recipes/filling/compat/neapolitan/milk_bottle.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/neapolitan/filling/milk_bottle.json rename to src/generated/resources/data/create/recipes/filling/compat/neapolitan/milk_bottle.json diff --git a/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/peat_grass_block.json b/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/peat_grass_block.json new file mode 100644 index 0000000000..d69767b750 --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/peat_grass_block.json @@ -0,0 +1,24 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "regions_unexplored:peat_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 500 + } + ], + "results": [ + { + "item": "regions_unexplored:peat_grass_block" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/silt_grass_block.json b/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/silt_grass_block.json new file mode 100644 index 0000000000..6f681657d1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/compat/regions_unexplored/silt_grass_block.json @@ -0,0 +1,24 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "regions_unexplored:silt_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 500 + } + ], + "results": [ + { + "item": "regions_unexplored:silt_grass_block" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/compat/vampirism/cursed_grass_block.json b/src/generated/resources/data/create/recipes/filling/compat/vampirism/cursed_grass_block.json new file mode 100644 index 0000000000..401d1a5973 --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/compat/vampirism/cursed_grass_block.json @@ -0,0 +1,24 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "vampirism:cursed_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 500 + } + ], + "results": [ + { + "item": "vampirism:cursed_grass_block" + } + ], + "conditions": [ + { + "modid": "vampirism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/farmersdelight/haunting/rotten_tomato.json b/src/generated/resources/data/create/recipes/haunting/compat/farmersdelight/rotten_tomato.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/farmersdelight/haunting/rotten_tomato.json rename to src/generated/resources/data/create/recipes/haunting/compat/farmersdelight/rotten_tomato.json diff --git a/src/generated/resources/data/create/recipes/haunting/compat/hauntedharvest/rotten_apple.json b/src/generated/resources/data/create/recipes/haunting/compat/hauntedharvest/rotten_apple.json new file mode 100644 index 0000000000..2d9a654562 --- /dev/null +++ b/src/generated/resources/data/create/recipes/haunting/compat/hauntedharvest/rotten_apple.json @@ -0,0 +1,19 @@ +{ + "type": "create:haunting", + "ingredients": [ + { + "item": "minecraft:apple" + } + ], + "results": [ + { + "item": "hauntedharvest:rotten_apple" + } + ], + "conditions": [ + { + "modid": "hauntedharvest", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/ae2/certus_quartz.json b/src/generated/resources/data/create/recipes/milling/compat/ae2/certus_quartz.json new file mode 100644 index 0000000000..de64385bc1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/ae2/certus_quartz.json @@ -0,0 +1,20 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:gems/certus_quartz" + } + ], + "results": [ + { + "item": "ae2:certus_quartz_dust" + } + ], + "processingTime": 200, + "conditions": [ + { + "modid": "ae2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/ae2/ender_pearl.json b/src/generated/resources/data/create/recipes/milling/compat/ae2/ender_pearl.json new file mode 100644 index 0000000000..7fe7e65904 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/ae2/ender_pearl.json @@ -0,0 +1,20 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ender_pearls" + } + ], + "results": [ + { + "item": "ae2:ender_dust" + } + ], + "processingTime": 100, + "conditions": [ + { + "modid": "ae2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json b/src/generated/resources/data/create/recipes/milling/compat/ae2/fluix_crystal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json rename to src/generated/resources/data/create/recipes/milling/compat/ae2/fluix_crystal.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/ae2/sky_stone_block.json b/src/generated/resources/data/create/recipes/milling/compat/ae2/sky_stone_block.json new file mode 100644 index 0000000000..5a67bbfdb8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/ae2/sky_stone_block.json @@ -0,0 +1,20 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "ae2:sky_stone_block" + } + ], + "results": [ + { + "item": "ae2:sky_dust" + } + ], + "processingTime": 300, + "conditions": [ + { + "modid": "ae2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/gilia.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json rename to src/generated/resources/data/create/recipes/milling/compat/atmospheric/gilia.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/hot_monkey_brush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json rename to src/generated/resources/data/create/recipes/milling/compat/atmospheric/hot_monkey_brush.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/scalding_monkey_brush.json similarity index 68% rename from src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json rename to src/generated/resources/data/create/recipes/milling/compat/atmospheric/scalding_monkey_brush.json index b148e8af25..0443b4538a 100644 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json +++ b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/scalding_monkey_brush.json @@ -1,12 +1,4 @@ { - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], "type": "create:milling", "ingredients": [ { @@ -25,9 +17,14 @@ }, { "item": "minecraft:orange_dye", - "count": 1, "chance": 0.1 } ], - "processingTime": 50 -} + "processingTime": 50, + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/warm_monkey_brush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json rename to src/generated/resources/data/create/recipes/milling/compat/atmospheric/warm_monkey_brush.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json b/src/generated/resources/data/create/recipes/milling/compat/atmospheric/yucca_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/atmospheric/yucca_flower.json diff --git a/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json b/src/generated/resources/data/create/recipes/milling/compat/autumnity/autumn_crocus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json rename to src/generated/resources/data/create/recipes/milling/compat/autumnity/autumn_crocus.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/blue_hydrangea.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/blue_hydrangea.json new file mode 100644 index 0000000000..6c74380e18 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/blue_hydrangea.json @@ -0,0 +1,31 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:blue_hydrangea" + } + ], + "results": [ + { + "item": "minecraft:light_blue_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:light_blue_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/burning_blossom.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/burning_blossom.json new file mode 100644 index 0000000000..bfec7d0b23 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/burning_blossom.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:burning_blossom" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/glowflower.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/glowflower.json new file mode 100644 index 0000000000..8e1e8e166a --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/glowflower.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:glowflower" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/lavender.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/lavender.json new file mode 100644 index 0000000000..ff07dc4156 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/lavender.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:lavender" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/orange_cosmos.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/orange_cosmos.json new file mode 100644 index 0000000000..f61693e811 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/orange_cosmos.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:orange_cosmos" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_daffodil.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_daffodil.json new file mode 100644 index 0000000000..bbb41514b2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_daffodil.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:pink_daffodil" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "chance": 0.25 + }, + { + "item": "minecraft:cyan_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_hibiscus.json new file mode 100644 index 0000000000..2f765dc2af --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/pink_hibiscus.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:pink_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.25 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/rose.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/rose.json new file mode 100644 index 0000000000..3de4c3e0c7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/rose.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:rose" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/violet.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/violet.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/wildflower.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/wildflower.json new file mode 100644 index 0000000000..b5c2cf9d63 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/wildflower.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "biomesoplenty:wildflower" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "biomesoplenty", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json b/src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/wilted_lily.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/biomesoplenty/wilted_lily.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/black_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/black_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/blue_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/blue_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/brown_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/brown_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/cyan_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/cyan_petal.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/botania/gray_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/gray_petal.json new file mode 100644 index 0000000000..8262838dfa --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/botania/gray_petal.json @@ -0,0 +1,14 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/gray" + } + ], + "results": [ + { + "item": "minecraft:gray_dye" + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/green_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/green_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/light_blue_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/light_blue_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/light_gray_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/light_gray_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/lime_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/lime_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/magenta_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/magenta_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/orange_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/orange_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/pink_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/pink_petal.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/botania/purple_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/purple_petal.json new file mode 100644 index 0000000000..60c45cf52a --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/botania/purple_petal.json @@ -0,0 +1,14 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/purple" + } + ], + "results": [ + { + "item": "minecraft:purple_dye" + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/red_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/red_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/white_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/white_petal.json diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json b/src/generated/resources/data/create/recipes/milling/compat/botania/yellow_petal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json rename to src/generated/resources/data/create/recipes/milling/compat/botania/yellow_petal.json diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/buttercup.json b/src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/buttercup.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/buzzier_bees/milling/buttercup.json rename to src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/buttercup.json diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json b/src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/pink_clover.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json rename to src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/pink_clover.json diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json b/src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/white_clover.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json rename to src/generated/resources/data/create/recipes/milling/compat/buzzier_bees/white_clover.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/allium_flower_bush.json b/src/generated/resources/data/create/recipes/milling/compat/byg/allium_flower_bush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/allium_flower_bush.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/allium_flower_bush.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/alpine_bellflower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/alpine_bellflower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/alpine_bellflower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/alpine_bellflower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/amaranth.json b/src/generated/resources/data/create/recipes/milling/compat/byg/amaranth.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/amaranth.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/amaranth.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/angelica.json b/src/generated/resources/data/create/recipes/milling/compat/byg/angelica.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/angelica.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/angelica.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/begonia.json b/src/generated/resources/data/create/recipes/milling/compat/byg/begonia.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/begonia.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/begonia.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/bistort.json b/src/generated/resources/data/create/recipes/milling/compat/byg/bistort.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/bistort.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/bistort.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/black_rose.json b/src/generated/resources/data/create/recipes/milling/compat/byg/black_rose.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/black_rose.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/black_rose.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/blue_sage.json b/src/generated/resources/data/create/recipes/milling/compat/byg/blue_sage.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/blue_sage.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/blue_sage.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/california_poppy.json b/src/generated/resources/data/create/recipes/milling/compat/byg/california_poppy.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/california_poppy.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/california_poppy.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_sage.json b/src/generated/resources/data/create/recipes/milling/compat/byg/compat/byg/white_sage.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/white_sage.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/compat/byg/white_sage.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_cyclamen.json b/src/generated/resources/data/create/recipes/milling/compat/byg/compat/byg/winter_cyclamen.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/winter_cyclamen.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/compat/byg/winter_cyclamen.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/crocus.json b/src/generated/resources/data/create/recipes/milling/compat/byg/crocus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/crocus.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/crocus.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_amaranth.json b/src/generated/resources/data/create/recipes/milling/compat/byg/cyan_amaranth.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/cyan_amaranth.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/cyan_amaranth.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_rose.json b/src/generated/resources/data/create/recipes/milling/compat/byg/cyan_rose.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/cyan_rose.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/cyan_rose.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_tulip.json b/src/generated/resources/data/create/recipes/milling/compat/byg/cyan_tulip.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/cyan_tulip.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/cyan_tulip.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/daffodil.json b/src/generated/resources/data/create/recipes/milling/compat/byg/daffodil.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/daffodil.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/daffodil.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/delphinium.json b/src/generated/resources/data/create/recipes/milling/compat/byg/delphinium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/delphinium.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/delphinium.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/fairy_slipper.json b/src/generated/resources/data/create/recipes/milling/compat/byg/fairy_slipper.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/fairy_slipper.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/fairy_slipper.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/firecracker_flower_bush.json b/src/generated/resources/data/create/recipes/milling/compat/byg/firecracker_flower_bush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/firecracker_flower_bush.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/firecracker_flower_bush.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/foxglove.json b/src/generated/resources/data/create/recipes/milling/compat/byg/foxglove.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/foxglove.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/foxglove.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/green_tulip.json b/src/generated/resources/data/create/recipes/milling/compat/byg/green_tulip.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/green_tulip.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/green_tulip.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/byg/guzmania.json b/src/generated/resources/data/create/recipes/milling/compat/byg/guzmania.json new file mode 100644 index 0000000000..035af24ef6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/byg/guzmania.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "byg:guzmania" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "chance": 0.25 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.25 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "byg", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/hydrangea_bush.json b/src/generated/resources/data/create/recipes/milling/compat/byg/hydrangea_bush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/hydrangea_bush.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/hydrangea_bush.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/incan_lily.json b/src/generated/resources/data/create/recipes/milling/compat/byg/incan_lily.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/incan_lily.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/incan_lily.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/iris.json b/src/generated/resources/data/create/recipes/milling/compat/byg/iris.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/iris.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/iris.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/kovan_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/kovan_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/kovan_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/kovan_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/lazarus_bellflower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/lazarus_bellflower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/lazarus_bellflower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/lazarus_bellflower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/lollipop_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/lolipop_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/lollipop_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/lolipop_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/magenta_amaranth.json b/src/generated/resources/data/create/recipes/milling/compat/byg/magenta_amaranth.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/magenta_amaranth.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/magenta_amaranth.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/magenta_tulip.json b/src/generated/resources/data/create/recipes/milling/compat/byg/magenta_tulip.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/magenta_tulip.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/magenta_tulip.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/orange_amaranth.json b/src/generated/resources/data/create/recipes/milling/compat/byg/orange_amaranth.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/orange_amaranth.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/orange_amaranth.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/orange_daisy.json b/src/generated/resources/data/create/recipes/milling/compat/byg/orange_daisy.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/orange_daisy.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/orange_daisy.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/japanese_orchid.json b/src/generated/resources/data/create/recipes/milling/compat/byg/orchid.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/japanese_orchid.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/orchid.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/byg/osiria_rose.json b/src/generated/resources/data/create/recipes/milling/compat/byg/osiria_rose.json new file mode 100644 index 0000000000..24b9529172 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/byg/osiria_rose.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "byg:osiria_rose" + } + ], + "results": [ + { + "item": "minecraft:black_dye", + "count": 2 + }, + { + "item": "minecraft:black_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "byg", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/peach_leather_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/peach_leather_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/peach_leather_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/peach_leather_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium.json b/src/generated/resources/data/create/recipes/milling/compat/byg/pink_allium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/pink_allium.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/pink_allium.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium_flower_bush.json b/src/generated/resources/data/create/recipes/milling/compat/byg/pink_allium_flower_bush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/pink_allium_flower_bush.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/pink_allium_flower_bush.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_anemone.json b/src/generated/resources/data/create/recipes/milling/compat/byg/pink_anemone.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/pink_anemone.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/pink_anemone.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_daffodil.json b/src/generated/resources/data/create/recipes/milling/compat/byg/pink_daffodil.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/pink_daffodil.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/pink_daffodil.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/protea_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/protea_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/protea_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/protea_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_amaranth.json b/src/generated/resources/data/create/recipes/milling/compat/byg/purple_amaranth.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/purple_amaranth.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/purple_amaranth.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_sage.json b/src/generated/resources/data/create/recipes/milling/compat/byg/purple_rose.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/purple_sage.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/purple_rose.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_tulip.json b/src/generated/resources/data/create/recipes/milling/compat/byg/purple_tulip.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/purple_tulip.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/purple_tulip.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/byg/richea.json b/src/generated/resources/data/create/recipes/milling/compat/byg/richea.json new file mode 100644 index 0000000000..808f22b666 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/byg/richea.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "byg:richea" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "chance": 0.1 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "byg", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/rose.json b/src/generated/resources/data/create/recipes/milling/compat/byg/rose.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/rose.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/rose.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/silver_vase_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/silver_vase_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/silver_vase_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/silver_vase_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/snowdrops.json b/src/generated/resources/data/create/recipes/milling/compat/byg/snowdrops.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/snowdrops.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/snowdrops.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/tall_allium.json b/src/generated/resources/data/create/recipes/milling/compat/byg/tall_allium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/tall_allium.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/tall_allium.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/tall_pink_allium.json b/src/generated/resources/data/create/recipes/milling/compat/byg/tall_pink_allium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/tall_pink_allium.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/tall_pink_allium.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/torch_ginger.json b/src/generated/resources/data/create/recipes/milling/compat/byg/torch_ginger.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/torch_ginger.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/torch_ginger.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/violet_leather_flower.json b/src/generated/resources/data/create/recipes/milling/compat/byg/violet_leather_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/violet_leather_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/violet_leather_flower.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_anemone.json b/src/generated/resources/data/create/recipes/milling/compat/byg/white_anemone.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/white_anemone.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/white_anemone.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_puffball_cap.json b/src/generated/resources/data/create/recipes/milling/compat/byg/white_puffball_cap.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/white_puffball_cap.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/white_puffball_cap.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_rose.json b/src/generated/resources/data/create/recipes/milling/compat/byg/winter_rose.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/winter_rose.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/winter_rose.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_scilla.json b/src/generated/resources/data/create/recipes/milling/compat/byg/winter_scilla.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/winter_scilla.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/winter_scilla.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/yellow_daffodil.json b/src/generated/resources/data/create/recipes/milling/compat/byg/yellow_daffodil.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/yellow_daffodil.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/yellow_daffodil.json diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/yellow_tulip.json b/src/generated/resources/data/create/recipes/milling/compat/byg/yellow_tulip.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/yellow_tulip.json rename to src/generated/resources/data/create/recipes/milling/compat/byg/yellow_tulip.json diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json b/src/generated/resources/data/create/recipes/milling/compat/druidcraft/lavender.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json rename to src/generated/resources/data/create/recipes/milling/compat/druidcraft/lavender.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/bird_of_paradise.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/bird_of_paradise.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/bird_of_paradise.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/bird_of_paradise.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/blue_delphinium.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/blue_delphinium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/blue_delphinium.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/blue_delphinium.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/bluebell.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/bluebell.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/bluebell.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/bluebell.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/cartwheel.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/cartwheel.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/cartwheel.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/cartwheel.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/dianthus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/dianthus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/dianthus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/dianthus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/magenta_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/magenta_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/magenta_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/magenta_hibiscus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/orange_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/orange_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/orange_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/orange_hibiscus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/pink_delphinium.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/pink_delphinium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/pink_delphinium.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/pink_delphinium.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/pink_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/pink_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/pink_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/pink_hibiscus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/purple_delphinium.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/purple_delphinium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/purple_delphinium.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/purple_delphinium.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/purple_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/purple_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/purple_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/purple_hibiscus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/red_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/red_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/red_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/red_hibiscus.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/red_lotus_flower.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/red_lotus_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/red_lotus_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/red_lotus_flower.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/violet.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/violet.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/violet.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/violet.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/white_delphinium.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/white_delphinium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/white_delphinium.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/white_delphinium.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/white_lotus_flower.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/white_lotus_flower.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/white_lotus_flower.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/white_lotus_flower.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/milling/yellow_hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/environmental/yellow_hibiscus.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/milling/yellow_hibiscus.json rename to src/generated/resources/data/create/recipes/milling/compat/environmental/yellow_hibiscus.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_dandelion.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_dandelion.json new file mode 100644 index 0000000000..7939280bed --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_dandelion.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:alpha_dandelion" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_rose.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_rose.json new file mode 100644 index 0000000000..6a321880f4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/alpha_rose.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:alpha_rose" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/aster.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/aster.json new file mode 100644 index 0000000000..c207a40e55 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/aster.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:aster" + } + ], + "results": [ + { + "item": "minecraft:light_blue_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.2 + }, + { + "item": "minecraft:light_gray_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/black_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/black_snowbelle.json new file mode 100644 index 0000000000..026149e591 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/black_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:black_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:black_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/bleeding_heart.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/bleeding_heart.json new file mode 100644 index 0000000000..09bdd0bc74 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/bleeding_heart.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:bleeding_heart" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_lupine.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_lupine.json new file mode 100644 index 0000000000..a3ee1b6ca4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_lupine.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:blue_lupine" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_snowbelle.json new file mode 100644 index 0000000000..2f86b728db --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/blue_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:blue_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/brown_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/brown_snowbelle.json new file mode 100644 index 0000000000..b55e035260 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/brown_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:brown_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:brown_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cactus_flower.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cactus_flower.json new file mode 100644 index 0000000000..2ddad8fee5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cactus_flower.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:cactus_flower" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "chance": 0.2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cyan_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cyan_snowbelle.json new file mode 100644 index 0000000000..1aae8cadc5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/cyan_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:cyan_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/daisy.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/daisy.json new file mode 100644 index 0000000000..f57ece8082 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/daisy.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:daisy" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/guzmania.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/day_lily.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/guzmania.json rename to src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/day_lily.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/dorcel.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/dorcel.json new file mode 100644 index 0000000000..d6694147aa --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/dorcel.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:dorcel" + } + ], + "results": [ + { + "item": "minecraft:black_dye", + "count": 2 + }, + { + "item": "minecraft:brown_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/felicia_daisy.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/felicia_daisy.json new file mode 100644 index 0000000000..16d1ad21c3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/felicia_daisy.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:felicia_daisy" + } + ], + "results": [ + { + "item": "minecraft:light_blue_dye", + "count": 2 + }, + { + "item": "minecraft:blue_dye", + "chance": 0.2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/fireweed.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/fireweed.json new file mode 100644 index 0000000000..7037cd5c41 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/fireweed.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:fireweed" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/glistering_bloom.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/glistering_bloom.json new file mode 100644 index 0000000000..c5d82c6265 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/glistering_bloom.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:glistering_bloom" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "chance": 0.25 + }, + { + "item": "minecraft:light_blue_dye", + "chance": 0.25 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/gray_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/gray_snowbelle.json new file mode 100644 index 0000000000..67abef9b3b --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/gray_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:gray_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:gray_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/green_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/green_snowbelle.json new file mode 100644 index 0000000000..c740d9cfdb --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/green_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:green_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:green_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hibiscus.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hibiscus.json new file mode 100644 index 0000000000..23be998ea9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hibiscus.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:hibiscus" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "chance": 0.2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hyssop.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hyssop.json new file mode 100644 index 0000000000..bda103b6e8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/hyssop.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:hyssop" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "chance": 0.1 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_blue_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_blue_snowbelle.json new file mode 100644 index 0000000000..09deee9bca --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_blue_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:light_blue_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:light_blue_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_gray_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_gray_snowbelle.json new file mode 100644 index 0000000000..dbd7cb7b55 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/light_gray_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:light_gray_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/lime_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/lime_snowbelle.json new file mode 100644 index 0000000000..55bbeb417b --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/lime_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:lime_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:lime_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/magenta_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/magenta_snowbelle.json new file mode 100644 index 0000000000..d54072f95b --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/magenta_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:magenta_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/mallow.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/mallow.json new file mode 100644 index 0000000000..0d6dedd806 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/mallow.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:mallow" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_coneflower.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_coneflower.json new file mode 100644 index 0000000000..dfcb4ca430 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_coneflower.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:orange_coneflower" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_snowbelle.json new file mode 100644 index 0000000000..26d250def3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/orange_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:orange_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_lupine.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_lupine.json new file mode 100644 index 0000000000..4aca199341 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_lupine.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:pink_lupine" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_snowbelle.json new file mode 100644 index 0000000000..01000c3460 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/pink_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:pink_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/poppy_bush.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/poppy_bush.json new file mode 100644 index 0000000000..5df59b6194 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/poppy_bush.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:poppy_bush" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_coneflower.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_coneflower.json new file mode 100644 index 0000000000..34bf978273 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_coneflower.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:purple_coneflower" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_lupine.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_lupine.json new file mode 100644 index 0000000000..fdc9295f8e --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_lupine.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:purple_lupine" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_snowbelle.json new file mode 100644 index 0000000000..1f5a5baaf4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/purple_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:purple_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_lupine.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_lupine.json new file mode 100644 index 0000000000..a8c45dd765 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_lupine.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:red_lupine" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_snowbelle.json new file mode 100644 index 0000000000..adc63cee02 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/red_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:red_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/osiria_rose.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/salmon_poppy_bush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/osiria_rose.json rename to src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/salmon_poppy_bush.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tassel.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tassel.json new file mode 100644 index 0000000000..261851fd13 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tassel.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:tassel" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tsubaki.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tsubaki.json new file mode 100644 index 0000000000..553993d878 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/tsubaki.json @@ -0,0 +1,25 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:tsubaki" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/waratah.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/waratah.json new file mode 100644 index 0000000000..30b87485f9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/waratah.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:waratah" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "chance": 0.2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_snowbelle.json new file mode 100644 index 0000000000..590c1073d2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:white_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_trillium.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_trillium.json new file mode 100644 index 0000000000..1305036314 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/white_trillium.json @@ -0,0 +1,29 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:white_trillium" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.05 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/richea.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/wilting_trillium.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/milling/richea.json rename to src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/wilting_trillium.json diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_lupine.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_lupine.json new file mode 100644 index 0000000000..414119b958 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_lupine.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:yellow_lupine" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_snowbelle.json b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_snowbelle.json new file mode 100644 index 0000000000..ee798ad4cd --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/compat/regions_unexplored/yellow_snowbelle.json @@ -0,0 +1,21 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "item": "regions_unexplored:yellow_snowbelle" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + } + ], + "processingTime": 50, + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/supplementaries/milling/flax.json b/src/generated/resources/data/create/recipes/milling/compat/supplementaries/flax.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/supplementaries/milling/flax.json rename to src/generated/resources/data/create/recipes/milling/compat/supplementaries/flax.json diff --git a/src/main/resources/data/create/recipes/compat/tconstruct/milling/necrotic_bone.json b/src/generated/resources/data/create/recipes/milling/compat/tconstruct/nercotic_bone.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/tconstruct/milling/necrotic_bone.json rename to src/generated/resources/data/create/recipes/milling/compat/tconstruct/nercotic_bone.json diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json b/src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/flowering_rush.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json rename to src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/flowering_rush.json diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/pink_searocket.json b/src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/pink_searocket.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/pink_searocket.json rename to src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/pink_searocket.json diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/white_searocket.json b/src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/white_searocket.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/white_searocket.json rename to src/generated/resources/data/create/recipes/milling/compat/upgrade_aquatic/white_searocket.json diff --git a/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json b/src/generated/resources/data/create/recipes/mixing/compat/ae2/fluix_crystal.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json rename to src/generated/resources/data/create/recipes/mixing/compat/ae2/fluix_crystal.json diff --git a/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/peat_mud.json b/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/peat_mud.json new file mode 100644 index 0000000000..aaf21424a0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/peat_mud.json @@ -0,0 +1,24 @@ +{ + "type": "create:mixing", + "ingredients": [ + { + "item": "regions_unexplored:peat_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 250 + } + ], + "results": [ + { + "item": "regions_unexplored:peat_mud" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/silt_mud.json b/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/silt_mud.json new file mode 100644 index 0000000000..a55bdd6a67 --- /dev/null +++ b/src/generated/resources/data/create/recipes/mixing/compat/regions_unexplored/silt_mud.json @@ -0,0 +1,24 @@ +{ + "type": "create:mixing", + "ingredients": [ + { + "item": "regions_unexplored:silt_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 250 + } + ], + "results": [ + { + "item": "regions_unexplored:silt_mud" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/aether_dirt_path.json b/src/generated/resources/data/create/recipes/pressing/aether_dirt_path.json new file mode 100644 index 0000000000..539af6bc17 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/aether_dirt_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "aether:aether_dirt" + } + ], + "results": [ + { + "item": "aether:aether_dirt_path" + } + ], + "conditions": [ + { + "modid": "aether", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/aether_dirt_path_from_grass.json b/src/generated/resources/data/create/recipes/pressing/aether_dirt_path_from_grass.json new file mode 100644 index 0000000000..b9f4e2cb00 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/aether_dirt_path_from_grass.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "aether:aether_grass_block" + } + ], + "results": [ + { + "item": "aether:aether_dirt_path" + } + ], + "conditions": [ + { + "modid": "aether", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/pressing/crustose_path.json b/src/generated/resources/data/create/recipes/pressing/compat/atmospheric/crustose_path.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/atmospheric/pressing/crustose_path.json rename to src/generated/resources/data/create/recipes/pressing/compat/atmospheric/crustose_path.json diff --git a/src/generated/resources/data/create/recipes/pressing/compat/betterendforge/end_myclium_path.json b/src/generated/resources/data/create/recipes/pressing/compat/betterendforge/end_myclium_path.json new file mode 100644 index 0000000000..3f2420f3a2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/betterendforge/end_myclium_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "betterendforge:end_myclium" + } + ], + "results": [ + { + "item": "betterendforge:end_myclium_path" + } + ], + "conditions": [ + { + "modid": "betterendforge", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/generated/resources/data/create/recipes/pressing/compat/byg/lush_grass_path.json b/src/generated/resources/data/create/recipes/pressing/compat/byg/lush_grass_path.json new file mode 100644 index 0000000000..ecd3d6cc2a --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/byg/lush_grass_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "byg:lush_grass" + } + ], + "results": [ + { + "item": "byg:lush_grass_path" + } + ], + "conditions": [ + { + "modid": "byg", + "type": "forge:mod_loaded" + } + ] +} diff --git a/src/main/resources/data/create/recipes/compat/environmental/pressing/mycelium_path.json b/src/generated/resources/data/create/recipes/pressing/compat/environmental/mycelium_path.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/pressing/mycelium_path.json rename to src/generated/resources/data/create/recipes/pressing/compat/environmental/mycelium_path.json diff --git a/src/main/resources/data/create/recipes/compat/environmental/pressing/podzol_path.json b/src/generated/resources/data/create/recipes/pressing/compat/environmental/podzol_path.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/environmental/pressing/podzol_path.json rename to src/generated/resources/data/create/recipes/pressing/compat/environmental/podzol_path.json diff --git a/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/crimson_nylium_path.json b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/crimson_nylium_path.json new file mode 100644 index 0000000000..dc085f16f5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/crimson_nylium_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "minecraft:crimson_nylium" + } + ], + "results": [ + { + "item": "infernalexp:crimson_nylium_path" + } + ], + "conditions": [ + { + "modid": "infernalexp", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/soul_soil_path.json b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/soul_soil_path.json new file mode 100644 index 0000000000..0ebd6ebf7c --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/soul_soil_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "minecraft:soul_soil" + } + ], + "results": [ + { + "item": "infernalexp:soul_soil_path" + } + ], + "conditions": [ + { + "modid": "infernalexp", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/warped_nylium_path.json b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/warped_nylium_path.json new file mode 100644 index 0000000000..3ea86bc0bd --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/infernalexp/warped_nylium_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "minecraft:warped_nylium" + } + ], + "results": [ + { + "item": "infernalexp:warped_nylium_path" + } + ], + "conditions": [ + { + "modid": "infernalexp", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/compat/vampirism/cursed_earth_path.json b/src/generated/resources/data/create/recipes/pressing/compat/vampirism/cursed_earth_path.json new file mode 100644 index 0000000000..52a06247c0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/compat/vampirism/cursed_earth_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "vampirism:cursed_earth" + } + ], + "results": [ + { + "item": "vampirism:cursed_earth_path" + } + ], + "conditions": [ + { + "modid": "vampirism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/cursed_earth_path_from_grass.json b/src/generated/resources/data/create/recipes/pressing/cursed_earth_path_from_grass.json new file mode 100644 index 0000000000..0386173478 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/cursed_earth_path_from_grass.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "regions_unexplored:cursed_grass" + } + ], + "results": [ + { + "item": "vampirism:cursed_earth_path" + } + ], + "conditions": [ + { + "modid": "vampirism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/peat_dirt_path.json b/src/generated/resources/data/create/recipes/pressing/peat_dirt_path.json new file mode 100644 index 0000000000..dd1acb1de6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/peat_dirt_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "regions_unexplored:peat_dirt" + } + ], + "results": [ + { + "item": "regions_unexplored:peat_dirt_path" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/peat_dirt_path_from_grass.json b/src/generated/resources/data/create/recipes/pressing/peat_dirt_path_from_grass.json new file mode 100644 index 0000000000..605869d02b --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/peat_dirt_path_from_grass.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "regions_unexplored:peat_grass_block" + } + ], + "results": [ + { + "item": "regions_unexplored:peat_dirt_path" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/silt_dirt_path.json b/src/generated/resources/data/create/recipes/pressing/silt_dirt_path.json new file mode 100644 index 0000000000..fa82adabeb --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/silt_dirt_path.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "regions_unexplored:silt_dirt" + } + ], + "results": [ + { + "item": "regions_unexplored:silt_dirt_path" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/silt_dirt_path_from_grass.json b/src/generated/resources/data/create/recipes/pressing/silt_dirt_path_from_grass.json new file mode 100644 index 0000000000..06033bf913 --- /dev/null +++ b/src/generated/resources/data/create/recipes/pressing/silt_dirt_path_from_grass.json @@ -0,0 +1,19 @@ +{ + "type": "create:pressing", + "ingredients": [ + { + "item": "regions_unexplored:silt_grass_block" + } + ], + "results": [ + { + "item": "regions_unexplored:silt_dirt_path" + } + ], + "conditions": [ + { + "modid": "regions_unexplored", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/sequenced_assembly/sturdy_sheet.json b/src/generated/resources/data/create/recipes/sequenced_assembly/sturdy_sheet.json index 2c42829f32..52ec62751e 100644 --- a/src/generated/resources/data/create/recipes/sequenced_assembly/sturdy_sheet.json +++ b/src/generated/resources/data/create/recipes/sequenced_assembly/sturdy_sheet.json @@ -1,7 +1,7 @@ { "type": "create:sequenced_assembly", "ingredient": { - "item": "create:powdered_obsidian" + "tag": "forge:dusts/obsidian" }, "transitionalItem": { "item": "create:unprocessed_obsidian_sheet" diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_ic2.json b/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_ic2.json new file mode 100644 index 0000000000..6fb0e09de3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_aluminum" + }, + "result": "ic2:ingot_aluminum", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_ic2.json new file mode 100644 index 0000000000..b2e76d845e --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "ic2:ingot_silver", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_ic2.json new file mode 100644 index 0000000000..3e7020f576 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_tin" + }, + "result": "ic2:ingot_tin", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_ic2.json new file mode 100644 index 0000000000..0e3b3c7fd5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_ic2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_uranium" + }, + "result": "ic2:ingot_uranium", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_oreganized.json new file mode 100644 index 0000000000..2b950f8930 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_oreganized.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_lead" + }, + "result": "oreganized:lead_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_galosphere.json new file mode 100644 index 0000000000..2f15f46f55 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_galosphere.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "galosphere:silver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json new file mode 100644 index 0000000000..e94ea309cf --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "iceandfire:silver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "iceandfire", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_oreganized.json new file mode 100644 index 0000000000..01b5543aef --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_oreganized.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_raw_silver" + }, + "result": "oreganized:silver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/atmospheric/arid_sand.json b/src/generated/resources/data/create/recipes/splashing/atmospheric/arid_sand.json new file mode 100644 index 0000000000..25464f8169 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/atmospheric/arid_sand.json @@ -0,0 +1,24 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "atmospheric:arid_sand" + } + ], + "results": [ + { + "item": "minecraft:clay_ball", + "chance": 0.25 + }, + { + "item": "atmospheric:aloe_kernels", + "chance": 0.05 + } + ], + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/atmospheric/red_arid_sand.json b/src/generated/resources/data/create/recipes/splashing/atmospheric/red_arid_sand.json new file mode 100644 index 0000000000..c97051fd0d --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/atmospheric/red_arid_sand.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "atmospheric:red_arid_sand" + } + ], + "results": [ + { + "item": "minecraft:clay_ball", + "count": 4, + "chance": 0.125 + }, + { + "item": "atmospheric:aloe_kernels", + "chance": 0.05 + } + ], + "conditions": [ + { + "modid": "atmospheric", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/splashing/cryptic_magma_block.json b/src/generated/resources/data/create/recipes/splashing/byg/cryptic_magma_block.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/byg/splashing/cryptic_magma_block.json rename to src/generated/resources/data/create/recipes/splashing/byg/cryptic_magma_block.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock_block.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock_block.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock_block.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock_block.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock_crown.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock_crown.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_end_corrock_crown.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_end_corrock_crown.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock_block.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock_block.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock_block.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock_block.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock_crown.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock_crown.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_nether_corrock_crown.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_nether_corrock_crown.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock_block.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock_block.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock_block.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock_block.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock_crown.json b/src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock_crown.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/endergetic/splashing/petrified_overworld_corrock_crown.json rename to src/generated/resources/data/create/recipes/splashing/endergetic/petrified_overworld_corrock_crown.json diff --git a/src/generated/resources/data/create/recipes/splashing/galosphere/crushed_raw_silver.json b/src/generated/resources/data/create/recipes/splashing/galosphere/crushed_raw_silver.json new file mode 100644 index 0000000000..22f0dce5c4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/galosphere/crushed_raw_silver.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_silver" + } + ], + "results": [ + { + "item": "galosphere:silver_nugget", + "count": 9 + } + ], + "conditions": [ + { + "modid": "galosphere", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_aluminum.json b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_aluminum.json new file mode 100644 index 0000000000..26e5bbfd33 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_aluminum.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_aluminum" + } + ], + "results": [ + { + "item": "ic2:nugget_aluminum", + "count": 9 + } + ], + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_silver.json b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_silver.json new file mode 100644 index 0000000000..d984bccb7d --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_silver.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_silver" + } + ], + "results": [ + { + "item": "ic2:nugget_silver", + "count": 9 + } + ], + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_tin.json b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_tin.json new file mode 100644 index 0000000000..164e56ef7b --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_tin.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_tin" + } + ], + "results": [ + { + "item": "ic2:nugget_tin", + "count": 9 + } + ], + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_uranium.json b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_uranium.json new file mode 100644 index 0000000000..94787e0ccc --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/ic2/crushed_raw_uranium.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_uranium" + } + ], + "results": [ + { + "item": "ic2:nugget_uranium", + "count": 9 + } + ], + "conditions": [ + { + "modid": "ic2", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_raw_silver.json b/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_raw_silver.json new file mode 100644 index 0000000000..e8129d1e6c --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_raw_silver.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_silver" + } + ], + "results": [ + { + "item": "iceandfire:silver_nugget", + "count": 9 + } + ], + "conditions": [ + { + "modid": "iceandfire", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_lead.json b/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_lead.json new file mode 100644 index 0000000000..55f0a5b7ac --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_lead.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_lead" + } + ], + "results": [ + { + "item": "oreganized:lead_nugget", + "count": 9 + } + ], + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_silver.json b/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_silver.json new file mode 100644 index 0000000000..e0ca24f0ae --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/oreganized/crushed_raw_silver.json @@ -0,0 +1,20 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_raw_silver" + } + ], + "results": [ + { + "item": "oreganized:silver_nugget", + "count": 9 + } + ], + "conditions": [ + { + "modid": "oreganized", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/quark/rusty_iron_plate.json b/src/generated/resources/data/create/recipes/splashing/quark/rusty_iron_plate.json new file mode 100644 index 0000000000..6f9f2f3aeb --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/quark/rusty_iron_plate.json @@ -0,0 +1,19 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "quark:iron_plate" + } + ], + "results": [ + { + "item": "quark:rusty_iron_plate" + } + ], + "conditions": [ + { + "modid": "quark", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/supplementaries/splashing/blackboard.json b/src/generated/resources/data/create/recipes/splashing/supplementaries/blackboard.json similarity index 100% rename from src/main/resources/data/create/recipes/compat/supplementaries/splashing/blackboard.json rename to src/generated/resources/data/create/recipes/splashing/supplementaries/blackboard.json diff --git a/src/generated/resources/data/create/recipes/splashing/the_vault/ornate_chain_rusty.json b/src/generated/resources/data/create/recipes/splashing/the_vault/ornate_chain_rusty.json new file mode 100644 index 0000000000..b06c5fd98d --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/the_vault/ornate_chain_rusty.json @@ -0,0 +1,19 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "the_vault:ornate_chain" + } + ], + "results": [ + { + "item": "the_vault:ornate_chain_rusty" + } + ], + "conditions": [ + { + "modid": "the_vault", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json index f3f1628a37..fe99c490c4 100644 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -28,6 +28,18 @@ "minecraft:bell", "minecraft:cocoa", "minecraft:flower_pot", + "minecraft:moss_carpet", + "minecraft:bamboo_sapling", + "minecraft:big_dripleaf", + "minecraft:vine", + "minecraft:twisting_vines_plant", + "minecraft:twisting_vines", + "minecraft:weeping_vines_plant", + "minecraft:weeping_vines", + "minecraft:cake", + "#create:corals", + "#minecraft:cave_vines", + "#minecraft:banners", "#minecraft:beds", "#minecraft:doors" ] diff --git a/src/generated/resources/data/create/tags/blocks/corals.json b/src/generated/resources/data/create/tags/blocks/corals.json new file mode 100644 index 0000000000..34ac4de416 --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/corals.json @@ -0,0 +1,35 @@ +{ + "replace": false, + "values": [ + "minecraft:dead_tube_coral", + "minecraft:dead_brain_coral", + "minecraft:dead_bubble_coral", + "minecraft:dead_fire_coral", + "minecraft:dead_horn_coral", + "minecraft:tube_coral", + "minecraft:brain_coral", + "minecraft:bubble_coral", + "minecraft:fire_coral", + "minecraft:horn_coral", + "minecraft:dead_tube_coral_fan", + "minecraft:dead_brain_coral_fan", + "minecraft:dead_bubble_coral_fan", + "minecraft:dead_fire_coral_fan", + "minecraft:dead_horn_coral_fan", + "minecraft:tube_coral_fan", + "minecraft:brain_coral_fan", + "minecraft:bubble_coral_fan", + "minecraft:fire_coral_fan", + "minecraft:horn_coral_fan", + "minecraft:dead_tube_coral_wall_fan", + "minecraft:dead_brain_coral_wall_fan", + "minecraft:dead_bubble_coral_wall_fan", + "minecraft:dead_fire_coral_wall_fan", + "minecraft:dead_horn_coral_wall_fan", + "minecraft:tube_coral_wall_fan", + "minecraft:brain_coral_wall_fan", + "minecraft:bubble_coral_wall_fan", + "minecraft:fire_coral_wall_fan", + "minecraft:horn_coral_wall_fan" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/movable_empty_collider.json b/src/generated/resources/data/create/tags/blocks/movable_empty_collider.json index 527ad16b92..a37632572c 100644 --- a/src/generated/resources/data/create/tags/blocks/movable_empty_collider.json +++ b/src/generated/resources/data/create/tags/blocks/movable_empty_collider.json @@ -5,6 +5,15 @@ "minecraft:powder_snow", "minecraft:tripwire", "minecraft:tripwire_hook", - "#minecraft:fence_gates" + "minecraft:bamboo_sapling", + "minecraft:vine", + "minecraft:twisting_vines_plant", + "minecraft:twisting_vines", + "minecraft:weeping_vines_plant", + "minecraft:weeping_vines", + "#create:corals", + "#minecraft:cave_vines", + "#minecraft:fence_gates", + "#minecraft:banners" ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/modded_stripped_logs.json b/src/generated/resources/data/create/tags/items/modded_stripped_logs.json index 4b1ac1f8cc..28710b7ae7 100644 --- a/src/generated/resources/data/create/tags/items/modded_stripped_logs.json +++ b/src/generated/resources/data/create/tags/items/modded_stripped_logs.json @@ -349,6 +349,90 @@ "id": "biomemakeover:stripped_ancient_oak_log", "required": false }, + { + "id": "regions_unexplored:stripped_alpha_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_ashen_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_baobab_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_blackwood_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_brimwood_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_cobalt_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_cypress_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_dead_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_eucalyptus_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_joshua_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_kapok_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_larch_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_magnolia_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_maple_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_mauve_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_palm_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_pine_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_redwood_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_socotra_log", + "required": false + }, + { + "id": "regions_unexplored:stripped_willow_log", + "required": false + }, + { + "id": "autumnity:maple", + "required": false + }, { "id": "infernalexp:stripped_luminous_stem", "required": false @@ -356,6 +440,26 @@ { "id": "byg:stripped_bulbis_stem", "required": false + }, + { + "id": "regions_unexplored:stripped_blue_bioshroom_stem", + "required": false + }, + { + "id": "regions_unexplored:stripped_green_bioshroom_stem", + "required": false + }, + { + "id": "regions_unexplored:stripped_pink_bioshroom_stem", + "required": false + }, + { + "id": "regions_unexplored:stripped_yellow_bioshroom_stem", + "required": false + }, + { + "id": "regions_unexplored:brimwood_log_magma", + "required": false } ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/modded_stripped_wood.json b/src/generated/resources/data/create/tags/items/modded_stripped_wood.json index 629db0fcea..7529c6f877 100644 --- a/src/generated/resources/data/create/tags/items/modded_stripped_wood.json +++ b/src/generated/resources/data/create/tags/items/modded_stripped_wood.json @@ -349,6 +349,86 @@ "id": "biomemakeover:stripped_ancient_oak_wood", "required": false }, + { + "id": "regions_unexplored:stripped_alpha_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_ashen_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_baobab_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_blackwood_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_brimwood_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_cobalt_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_cypress_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_dead_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_eucalyptus_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_joshua_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_kapok_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_larch_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_magnolia_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_maple_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_mauve_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_palm_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_pine_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_redwood_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_socotra_wood", + "required": false + }, + { + "id": "regions_unexplored:stripped_willow_wood", + "required": false + }, { "id": "infernalexp:stripped_luminous_hyphae", "required": false @@ -356,6 +436,22 @@ { "id": "byg:stripped_bulbis_wood", "required": false + }, + { + "id": "regions_unexplored:stripped_blue_bioshroom_hyphae", + "required": false + }, + { + "id": "regions_unexplored:stripped_green_bioshroom_hyphae", + "required": false + }, + { + "id": "regions_unexplored:stripped_pink_bioshroom_hyphae", + "required": false + }, + { + "id": "regions_unexplored:stripped_yellow_bioshroom_hyphae", + "required": false } ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/stone_types/galosphere/allurite.json b/src/generated/resources/data/create/tags/items/stone_types/galosphere/allurite.json new file mode 100644 index 0000000000..2bbe91cdce --- /dev/null +++ b/src/generated/resources/data/create/tags/items/stone_types/galosphere/allurite.json @@ -0,0 +1,45 @@ +{ + "replace": false, + "values": [ + { + "id": "galosphere:allurite_block", + "required": false + }, + { + "id": "galosphere:allurite_stairs", + "required": false + }, + { + "id": "galosphere:allurite_slab", + "required": false + }, + { + "id": "galosphere:smooth_allurite", + "required": false + }, + { + "id": "galosphere:smooth_allurite_stairs", + "required": false + }, + { + "id": "galosphere:smooth_allurite_slab", + "required": false + }, + { + "id": "galosphere:allurite_bricks", + "required": false + }, + { + "id": "galosphere:allurite_brick_stairs", + "required": false + }, + { + "id": "galosphere:allurite_brick_slab", + "required": false + }, + { + "id": "galosphere:chiseled_allurite", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/stone_types/galosphere/amethyst.json b/src/generated/resources/data/create/tags/items/stone_types/galosphere/amethyst.json new file mode 100644 index 0000000000..c15c61c835 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/stone_types/galosphere/amethyst.json @@ -0,0 +1,45 @@ +{ + "replace": false, + "values": [ + { + "id": "galosphere:amethyst_block", + "required": false + }, + { + "id": "galosphere:amethyst_stairs", + "required": false + }, + { + "id": "galosphere:amethyst_slab", + "required": false + }, + { + "id": "galosphere:smooth_amethyst", + "required": false + }, + { + "id": "galosphere:smooth_amethyst_stairs", + "required": false + }, + { + "id": "galosphere:smooth_amethyst_slab", + "required": false + }, + { + "id": "galosphere:amethyst_bricks", + "required": false + }, + { + "id": "galosphere:amethyst_brick_stairs", + "required": false + }, + { + "id": "galosphere:amethyst_brick_slab", + "required": false + }, + { + "id": "galosphere:chiseled_amethyst", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/stone_types/galosphere/lumiere.json b/src/generated/resources/data/create/tags/items/stone_types/galosphere/lumiere.json new file mode 100644 index 0000000000..d654a12ba4 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/stone_types/galosphere/lumiere.json @@ -0,0 +1,45 @@ +{ + "replace": false, + "values": [ + { + "id": "galosphere:lumiere_block", + "required": false + }, + { + "id": "galosphere:lumiere_stairs", + "required": false + }, + { + "id": "galosphere:lumiere_slab", + "required": false + }, + { + "id": "galosphere:smooth_lumiere", + "required": false + }, + { + "id": "galosphere:smooth_lumiere_stairs", + "required": false + }, + { + "id": "galosphere:smooth_lumiere_slab", + "required": false + }, + { + "id": "galosphere:lumiere_bricks", + "required": false + }, + { + "id": "galosphere:lumiere_brick_stairs", + "required": false + }, + { + "id": "galosphere:lumiere_brick_slab", + "required": false + }, + { + "id": "galosphere:chiseled_lumiere", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/tags/items/head/face.json b/src/generated/resources/data/create/tags/items/tracks.json similarity index 63% rename from src/main/resources/data/trinkets/tags/items/head/face.json rename to src/generated/resources/data/create/tags/items/tracks.json index 635bc6fe73..ef33e72efb 100644 --- a/src/main/resources/data/trinkets/tags/items/head/face.json +++ b/src/generated/resources/data/create/tags/items/tracks.json @@ -1,6 +1,6 @@ { "replace": false, "values": [ - "create:goggles" + "create:track" ] -} +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/upgrade_aquatic/coral.json b/src/generated/resources/data/create/tags/items/upgrade_aquatic/coral.json new file mode 100644 index 0000000000..2826d42552 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/upgrade_aquatic/coral.json @@ -0,0 +1,45 @@ +{ + "replace": false, + "values": [ + { + "id": "upgrade_aquatic:acan_coral", + "required": false + }, + { + "id": "upgrade_aquatic:finger_coral", + "required": false + }, + { + "id": "upgrade_aquatic:star_coral", + "required": false + }, + { + "id": "upgrade_aquatic:moss_coral", + "required": false + }, + { + "id": "upgrade_aquatic:petal_coral", + "required": false + }, + { + "id": "upgrade_aquatic:branch_coral", + "required": false + }, + { + "id": "upgrade_aquatic:rock_coral", + "required": false + }, + { + "id": "upgrade_aquatic:pillow_coral", + "required": false + }, + { + "id": "upgrade_aquatic:chrome_coral", + "required": false + }, + { + "id": "upgrade_aquatic:silk_coral", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dusts/obsidian.json b/src/generated/resources/data/forge/tags/items/dusts/obsidian.json new file mode 100644 index 0000000000..547c14cadb --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/dusts/obsidian.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "create:powdered_obsidian" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 8e5f03e255..1d0b58346b 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1533,6 +1533,7 @@ public class AllBlocks { .tag(AllBlockTags.GIRDABLE_TRACKS.tag) .lang("Train Track") .item(TrackBlockItem::new) + .tag(AllItemTags.TRACKS.tag) .model((c, p) -> p.generated(c, Create.asResource("item/" + c.getName()))) .build() .register(); diff --git a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java index 2d5de52146..18f012bf3d 100644 --- a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java +++ b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java @@ -5,6 +5,8 @@ import net.minecraft.core.Registry; +import com.simibubi.create.content.contraptions.behaviour.FenceGateMovingInteraction; + import org.jetbrains.annotations.Nullable; import com.simibubi.create.content.contraptions.behaviour.DoorMovingInteraction; @@ -76,6 +78,15 @@ static void registerDefaults() { } return null; }); + + FenceGateMovingInteraction fenceGateBehavior = new FenceGateMovingInteraction(); + registerBehaviourProvider(state -> { + if (state.is(BlockTags.FENCE_GATES)) { + return fenceGateBehavior; + } + return null; + }); + } public interface BehaviourProvider { diff --git a/src/main/java/com/simibubi/create/AllKeys.java b/src/main/java/com/simibubi/create/AllKeys.java index 1762b0297b..7a0bd232e1 100644 --- a/src/main/java/com/simibubi/create/AllKeys.java +++ b/src/main/java/com/simibubi/create/AllKeys.java @@ -9,11 +9,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; +import org.lwjgl.opengl.GL; + public enum AllKeys { TOOL_MENU("toolmenu", GLFW.GLFW_KEY_LEFT_ALT), ACTIVATE_TOOL("", GLFW.GLFW_KEY_LEFT_CONTROL), TOOLBELT("toolbelt", GLFW.GLFW_KEY_LEFT_ALT), + PONDER("ponder", GLFW.GLFW_KEY_W) ; diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 1ba6f5bd79..580e939916 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -1,6 +1,7 @@ package com.simibubi.create; import java.util.Optional; +import java.util.function.Predicate; import java.util.function.Supplier; import org.jetbrains.annotations.Nullable; @@ -61,6 +62,10 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false); + public static final Predicate> CAN_BE_AUTOMATED = r -> !r.getId() + .getPath() + .endsWith("_manual_only"); + private final ResourceLocation id; private final RecipeSerializer serializerObject; @Nullable @@ -130,13 +135,11 @@ public > Optional find(C inv, Level return world.getRecipeManager() .getRecipeFor(getType(), inv, world); } - + public static boolean shouldIgnoreInAutomation(Recipe recipe) { RecipeSerializer serializer = recipe.getSerializer(); if (serializer != null && AllTags.AllRecipeSerializerTags.AUTOMATION_IGNORE.matches(serializer)) return true; - return recipe.getId() - .getPath() - .endsWith("_manual_only"); + return !CAN_BE_AUTOMATED.test(recipe); } } diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index 4539e706bd..66787a8114 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -88,6 +88,13 @@ public class AllSoundEvents { .category(SoundSource.BLOCKS) .build(), + SPOUTING = create("spout").subtitle("Spout spurts") + .addVariant("spout_1") + .addVariant("spout_2") + .addVariant("spout_3") + .category(SoundSource.BLOCKS) + .build(), + CRANKING = create("cranking").subtitle("Hand Crank turns") .playExisting(SoundEvents.WOOD_PLACE, .075f, .5f) .playExisting(SoundEvents.WOODEN_BUTTON_CLICK_OFF, .025f, .5f) @@ -297,6 +304,14 @@ public class AllSoundEvents { .build(), HAUNTED_BELL_USE = create("haunted_bell_use").subtitle("Haunted Bell tolls") + .category(SoundSource.BLOCKS) + .build(), + + CLIPBOARD_CHECKMARK = create("clipboard_check").noSubtitle() + .category(SoundSource.BLOCKS) + .build(), + + CLIPBOARD_ERASE = create("clipboard_erase").noSubtitle() .category(SoundSource.BLOCKS) .build(); diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 7659709fc7..f52cd1009a 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -1,5 +1,6 @@ package com.simibubi.create; +import static com.simibubi.create.AllTags.NameSpace.CURIOS; import static com.simibubi.create.AllTags.NameSpace.FORGE; import static com.simibubi.create.AllTags.NameSpace.MOD; import static com.simibubi.create.AllTags.NameSpace.QUARK; @@ -49,7 +50,9 @@ public enum NameSpace { MOD(Create.ID, false, true), FORGE("c"), TIC("tconstruct"), - QUARK("quark") + QUARK("quark"), + GS("galosphere"), + CURIOS("curios") ; @@ -94,6 +97,8 @@ public enum AllBlockTags { WINDMILL_SAILS, WRENCH_PICKUP, + CORALS, + RELOCATION_NOT_SUPPORTED(FORGE), WG_STONE(FORGE), @@ -161,6 +166,7 @@ public enum AllItemTags { SEATS, SLEEPERS, TOOLBOXES, + TRACKS, UPRIGHT_ON_BELT, VALVE_HANDLES, VANILLA_STRIPPED_LOGS, @@ -169,7 +175,15 @@ public enum AllItemTags { STRIPPED_LOGS(FORGE), STRIPPED_WOOD(FORGE), PLATES(FORGE), - WRENCH(FORGE, "wrenches") + OBSIDIAN_DUST(FORGE,"dusts/obsidian"), + WRENCH(FORGE, "wrenches"), + + ALLURITE(MOD,"stone_types/galosphere/allurite"), + AMETHYST(MOD,"stone_types/galosphere/amethyst"), + LUMIERE(MOD, "stone_types/galosphere/lumiere"), + + UA_CORAL(MOD, "upgrade_aquatic/coral"), + CURIOS_HEAD(CURIOS, "head") ; diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index ec9a384c60..5b3296fa9b 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -63,7 +63,7 @@ public class Create implements ModInitializer { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.5.1f"; + public static final String VERSION = "0.5.1g"; public static final Logger LOGGER = LogUtils.getLogger(); diff --git a/src/main/java/com/simibubi/create/compat/Mods.java b/src/main/java/com/simibubi/create/compat/Mods.java index c2e6153396..769360cf1f 100644 --- a/src/main/java/com/simibubi/create/compat/Mods.java +++ b/src/main/java/com/simibubi/create/compat/Mods.java @@ -8,6 +8,8 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; /** @@ -18,11 +20,16 @@ public enum Mods { CONNECTIVITY, CURIOS, DYNAMICTREES, + FUNCTIONALSTORAGE, OCCULTISM, PACKETFIXER, + SOPHISTICATEDBACKPACKS, + SOPHISTICATEDSTORAGE, STORAGEDRAWERS, TCONSTRUCT, + FRAMEDBLOCKS, XLPACKETS, + MODERNUI, // fabric mods SANDWICHABLE, @@ -55,6 +62,19 @@ public Block getBlock(String id) { return Registry.BLOCK.get(rl(id)); } + public Item getItem(String id) { + return ForgeRegistries.ITEMS.getValue(rl(id)); + } + + public boolean contains(ItemLike entry) { + if (!isLoaded()) + return false; + Item asItem = entry.asItem(); + return asItem != null && asItem.getRegistryName() + .getNamespace() + .equals(id); + } + /** * @return a boolean of whether the mod is loaded or not based on mod id */ diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java index 1700adbca1..25846a1b3a 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java @@ -150,6 +150,13 @@ public final CreateLuaTable getSchedule() throws LuaException { @LuaFunction(mainThread = true) public final void setSchedule(IArguments arguments) throws LuaException { + if (arguments.getTable(0).size() != 2) + throw new LuaException("Not a valid schedule"); + + Object entries = arguments.getTable(0).get("entries"); + if (entries instanceof Map map && map.isEmpty()) + throw new LuaException("Schedule must have at least one entry"); + Train train = getTrainOrThrow(); Schedule schedule = Schedule.fromTag(toCompoundTag(new CreateLuaTable(arguments.getTable(0)))); boolean autoSchedule = train.runtime.getSchedule() == null || train.runtime.isAutoSchedule; @@ -232,8 +239,9 @@ else if (value instanceof Number v) { return StringTag.valueOf(v); else if (value instanceof Map v && v.containsKey(1.0)) { // List ListTag list = new ListTag(); - for (Object o : v.values()) { - list.add(toNBTTag(null, o)); + for (double i = 1; i <= v.size(); i++) { + if (v.get(i) != null) + list.add(toNBTTag(null, v.get(i))); } return list; diff --git a/src/main/java/com/simibubi/create/compat/curios/Curios.java b/src/main/java/com/simibubi/create/compat/curios/Curios.java new file mode 100644 index 0000000000..7adbb59be4 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/curios/Curios.java @@ -0,0 +1,89 @@ +package com.simibubi.create.compat.curios; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllTags; +import com.simibubi.create.content.equipment.armor.BacktankUtil; +import com.simibubi.create.content.equipment.goggles.GogglesItem; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.InterModComms; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import top.theillusivec4.curios.api.CuriosCapability; +import top.theillusivec4.curios.api.SlotTypeMessage; +import top.theillusivec4.curios.api.SlotTypePreset; +import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; +import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler; + +public class Curios { + + /** + * Resolves the Stacks Handler Map given an Entity. + * It is recommended to then use a `.map(curiosMap -> curiosMap.get({key})`, + * which can be null and would therefore be caught by the Optional::map function. + * + * @param entity The entity which possibly has a Curio Inventory capability + * @return An optional of the Stacks Handler Map + */ + private static Optional> resolveCuriosMap(LivingEntity entity) { + return entity.getCapability(CuriosCapability.INVENTORY).map(ICuriosItemHandler::getCurios); + } + + public static void init(IEventBus modEventBus, IEventBus forgeEventBus) { + modEventBus.addListener(Curios::onInterModEnqueue); + modEventBus.addListener(Curios::onClientSetup); + + GogglesItem.addIsWearingPredicate(player -> resolveCuriosMap(player) + .map(curiosMap -> { + for (ICurioStacksHandler stacksHandler : curiosMap.values()) { + // Search all the curio slots for Goggles existing + int slots = stacksHandler.getSlots(); + for (int slot = 0; slot < slots; slot++) { + if (AllItems.GOGGLES.isIn(stacksHandler.getStacks().getStackInSlot(slot))) { + return true; + } + } + } + + return false; + }) + .orElse(false)); + + BacktankUtil.addBacktankSupplier(entity -> resolveCuriosMap(entity) + .map(curiosMap -> { + List stacks = new ArrayList<>(); + for (ICurioStacksHandler stacksHandler : curiosMap.values()) { + // Search all the curio slots for pressurized air sources, and add them to the list + int slots = stacksHandler.getSlots(); + for (int slot = 0; slot < slots; slot++) { + final ItemStack itemStack = stacksHandler.getStacks().getStackInSlot(slot); + if (AllTags.AllItemTags.PRESSURIZED_AIR_SOURCES.matches(itemStack)) + stacks.add(itemStack); + } + } + + return stacks; + }).orElse(new ArrayList<>())); + + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, + () -> () -> modEventBus.addListener(CuriosRenderers::onLayerRegister)); + } + + private static void onInterModEnqueue(final InterModEnqueueEvent event) { + InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.HEAD.getMessageBuilder() + .build()); + } + + private static void onClientSetup(final FMLClientSetupEvent event) { + CuriosRenderers.register(); + } +} diff --git a/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java b/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java index 080663c863..b1fbf7beda 100644 --- a/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java +++ b/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java @@ -4,32 +4,36 @@ import javax.annotation.Nullable; +import com.ferreusveritas.dynamictrees.api.TreeHelper; +import com.ferreusveritas.dynamictrees.block.branch.BranchBlock; +import com.ferreusveritas.dynamictrees.block.branch.TrunkShellBlock; +import com.ferreusveritas.dynamictrees.util.BranchDestructionData; import com.simibubi.create.foundation.utility.AbstractBlockBreakQueue; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; -// Commented until dynamic trees are updated public class DynamicTree extends AbstractBlockBreakQueue { - -// private BlockPos startCutPos; + + private BlockPos startCutPos; public DynamicTree(BlockPos startCutPos) { -// this.startCutPos = startCutPos; + this.startCutPos = startCutPos; } - + public static boolean isDynamicBranch(Block block) { - return false; // TreeHelper.isBranch(block) || block instanceof TrunkShellBlock; + return TreeHelper.isBranch(block) || block instanceof TrunkShellBlock; } - + @Override public void destroyBlocks(Level world, ItemStack toDamage, @Nullable Player playerEntity, BiConsumer drop) { - /* - + BranchBlock start = TreeHelper.getBranch(world.getBlockState(startCutPos)); if (start == null) //if start is null, it was not a branch start = setBranchToShellMuse(world, world.getBlockState(startCutPos)); //we check for a trunk shell instead @@ -39,20 +43,19 @@ public void destroyBlocks(Level world, ItemStack toDamage, @Nullable Player play // Play and render block break sound and particles world.levelEvent(null, 2001, startCutPos, Block.getId(world.getBlockState(startCutPos))); - // Actually breaks the tree + // Actually breaks the tree BranchDestructionData data = start.destroyBranchFromNode(world, startCutPos, Direction.DOWN, false, playerEntity); // Feed all the tree drops to drop bi-consumer data.leavesDrops.forEach(stackPos -> drop.accept(stackPos.pos.offset(startCutPos), stackPos.stack)); - start.getLogDrops(world, startCutPos, data.species, data.woodVolume).forEach(stack -> drop.accept(startCutPos, stack)); - - */ + start.getFamily().getCommonSpecies().getBranchesDrops(world, data.woodVolume).forEach(stack -> drop.accept(startCutPos, stack)); + } - /* - private BranchBlock setBranchToShellMuse(World world, BlockState state) { - + + private BranchBlock setBranchToShellMuse(Level world, BlockState state) { + Block block = state.getBlock(); if (block instanceof TrunkShellBlock){ TrunkShellBlock.ShellMuse muse = ((TrunkShellBlock)block).getMuse(world, startCutPos); @@ -61,10 +64,9 @@ private BranchBlock setBranchToShellMuse(World world, BlockState state) { return TreeHelper.getBranch(muse.state); } } - + return null; } - */ - + } diff --git a/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java b/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java new file mode 100644 index 0000000000..100a07e7e8 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java @@ -0,0 +1,71 @@ +package com.simibubi.create.compat.framedblocks; + +import java.util.ArrayList; +import java.util.List; + +import com.simibubi.create.compat.Mods; +import com.simibubi.create.content.schematics.requirement.ItemRequirement; +import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; +import com.simibubi.create.content.schematics.requirement.ItemRequirement.StackRequirement; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class FramedBlocksInSchematics { + + static final List KEYS_TO_RETAIN = + List.of("intangible", "glowing", "reinforced", "camo_stack", "camo_stack_two", "camo_state", "camo_state_two"); + + public static CompoundTag prepareBlockEntityData(BlockState blockState, BlockEntity blockEntity) { + CompoundTag data = null; + if (blockEntity == null) + return data; + + data = blockEntity.saveWithFullMetadata(); + + List keysToRemove = new ArrayList<>(); + for (String key : data.getAllKeys()) + if (!KEYS_TO_RETAIN.contains(key)) + keysToRemove.add(key); + for (String key : keysToRemove) + data.remove(key); + + return data; + } + + public static ItemRequirement getRequiredItems(BlockState blockState, BlockEntity blockEntity) { + if (blockEntity == null) + return ItemRequirement.NONE; + + CompoundTag data = blockEntity.saveWithFullMetadata(); + List list = new ArrayList<>(); + + if (data.getBoolean("intangible")) + list.add(new StackRequirement(new ItemStack(Items.PHANTOM_MEMBRANE), ItemUseType.CONSUME)); + + if (data.getBoolean("glowing")) + list.add(new StackRequirement(new ItemStack(Items.GLOWSTONE_DUST), ItemUseType.CONSUME)); + + if (data.getBoolean("reinforced")) + list.add(new StackRequirement(new ItemStack(Mods.FRAMEDBLOCKS.getItem("framed_reinforcement")), + ItemUseType.CONSUME)); + + if (data.contains("camo_stack")) + addCamoStack(data.getCompound("camo_stack"), list); + + if (data.contains("camo_stack_two")) + addCamoStack(data.getCompound("camo_stack_two"), list); + + return new ItemRequirement(list); + } + + private static void addCamoStack(CompoundTag tag, List list) { + ItemStack itemStack = ItemStack.of(tag); + if (!itemStack.isEmpty()) + list.add(new StackRequirement(itemStack, ItemUseType.CONSUME)); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 88ca407682..6f427a9718 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -145,6 +145,7 @@ private void loadCategories() { smoking = builder(SmokingRecipe.class) .addTypedRecipes(() -> RecipeType.SMOKING) + .removeNonAutomation() .catalystStack(ProcessingViaFanCategory.getFan("fan_smoking")) .doubleItemIcon(AllItems.PROPELLER.get(), Items.CAMPFIRE) .emptyBackground(178, 72) @@ -154,6 +155,7 @@ private void loadCategories() { .addTypedRecipesExcluding(() -> RecipeType.SMELTING, () -> RecipeType.BLASTING) .addTypedRecipes(() -> RecipeType.BLASTING) .removeRecipes(() -> RecipeType.SMOKING) + .removeNonAutomation() .catalystStack(ProcessingViaFanCategory.getFan("fan_blasting")) .doubleItemIcon(AllItems.PROPELLER.get(), Items.LAVA_BUCKET) .emptyBackground(178, 72) @@ -259,6 +261,7 @@ private void loadCategories() { .addTypedRecipes(AllRecipeTypes.DEPLOYING) .addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING::getType, DeployerApplicationRecipe::convert) .addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION::getType, ManualApplicationRecipe::asDeploying) + .removeNonAutomation() .catalyst(AllBlocks.DEPLOYER::get) .catalyst(AllBlocks.DEPOT::get) .catalyst(AllItems.BELT_CONNECTOR::get) @@ -466,6 +469,10 @@ public CategoryBuilder removeRecipes(Supplier> recipe }); } + public CategoryBuilder removeNonAutomation() { + return addRecipeListConsumer(recipes -> recipes.removeIf(AllRecipeTypes.CAN_BE_AUTOMATED.negate())); + } + public CategoryBuilder catalystStack(Supplier supplier) { catalysts.add(supplier); return this; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java index 2a9e4e5a2d..06d46c0288 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java @@ -48,7 +48,7 @@ public ItemDrainCategory(Info info) { public static void consumeRecipes(Consumer consumer, IIngredientManager ingredientManager) { for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM_STACK)) { - if (stack.getItem() instanceof PotionItem) { + if (PotionFluidHandler.isPotionItem(stack)) { FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); Ingredient potion = Ingredient.of(stack); consumer.accept(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, Create.asResource("potions")) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index 0b4a4e1ed6..74acc448da 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -99,16 +99,21 @@ public void draw(CraftingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, PoseS matrixStack.translate(getXPadding(recipe), getYPadding(recipe), 0); for (int row = 0; row < getHeight(recipe); row++) - for (int col = 0; col < getWidth(recipe); col++) - if (!recipe.getIngredients() - .get(row * getWidth(recipe) + col) - .isEmpty()) { - matrixStack.pushPose(); - matrixStack.translate(col * 19 * scale, row * 19 * scale, 0); - matrixStack.scale(scale, scale, scale); - AllGuiTextures.JEI_SLOT.render(matrixStack, 0, 0); - matrixStack.popPose(); - } + for (int col = 0; col < getWidth(recipe); col++) { + int pIndex = row * getWidth(recipe) + col; + if (pIndex >= recipe.getIngredients() + .size()) + break; + if (recipe.getIngredients() + .get(pIndex) + .isEmpty()) + continue; + matrixStack.pushPose(); + matrixStack.translate(col * 19 * scale, row * 19 * scale, 0); + matrixStack.scale(scale, scale, scale); + AllGuiTextures.JEI_SLOT.render(matrixStack, 0, 0); + matrixStack.popPose(); + } matrixStack.popPose(); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 3e9108316a..a3fe8df933 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -53,7 +53,7 @@ public SpoutCategory(Info info) { public static void consumeRecipes(Consumer consumer, IIngredientManager ingredientManager) { Collection fluidStacks = ingredientManager.getAllIngredients(FabricTypes.FLUID_STACK); for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM_STACK)) { - if (stack.getItem() instanceof PotionItem) { + if (PotionFluidHandler.isPotionItem(stack)) { FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); Ingredient bottle = Ingredient.of(Items.GLASS_BOTTLE); consumer.accept(new ProcessingRecipeBuilder<>(FillingRecipe::new, Create.asResource("potions")) diff --git a/src/main/java/com/simibubi/create/compat/storageDrawers/StorageDrawers.java b/src/main/java/com/simibubi/create/compat/storageDrawers/StorageDrawers.java deleted file mode 100644 index 045974a26f..0000000000 --- a/src/main/java/com/simibubi/create/compat/storageDrawers/StorageDrawers.java +++ /dev/null @@ -1,41 +0,0 @@ -//package com.simibubi.create.compat.storageDrawers; -// -//import com.simibubi.create.compat.Mods; -//import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; -// -//import net.minecraft.world.item.ItemStack; -//import net.minecraft.world.level.block.entity.BlockEntity; -//import net.minecraftforge.items.IItemHandler; -// -//public class StorageDrawers { -// -// public static boolean isDrawer(BlockEntity be) { -// return be != null && Mods.STORAGEDRAWERS.id() -// .equals(be.getType() -// .getRegistryName() -// .getNamespace()); -// } -// -// public static float getTrueFillLevel(IItemHandler inv, FilteringBehaviour filtering) { -// float occupied = 0; -// float totalSpace = 0; -// -// for (int slot = 1; slot < inv.getSlots(); slot++) { -// ItemStack stackInSlot = inv.getStackInSlot(slot); -// int space = inv.getSlotLimit(slot); -// int count = stackInSlot.getCount(); -// if (space == 0) -// continue; -// -// totalSpace += 1; -// if (filtering.test(stackInSlot)) -// occupied += count * (1f / space); -// } -// -// if (totalSpace == 0) -// return 0; -// -// return occupied / totalSpace; -// } -// -//} diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java new file mode 100644 index 0000000000..2ec66a9355 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java @@ -0,0 +1,22 @@ +package com.simibubi.create.compat.thresholdSwitch; + +import com.simibubi.create.compat.Mods; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.items.IItemHandler; + +public class FunctionalStorage implements ThresholdSwitchCompat { + + @Override + public boolean isFromThisMod(BlockEntity blockEntity) { + return blockEntity != null && Mods.FUNCTIONALSTORAGE.id() + .equals(blockEntity.getType() + .getRegistryName() + .getNamespace()); + } + + @Override + public long getSpaceInSlot(IItemHandler inv, int slot) { + return inv.getSlotLimit(slot); + } +} diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java new file mode 100644 index 0000000000..bc200b5982 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java @@ -0,0 +1,29 @@ +package com.simibubi.create.compat.thresholdSwitch; + +import com.simibubi.create.compat.Mods; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.items.IItemHandler; + +public class SophisticatedStorage implements ThresholdSwitchCompat { + + @Override + public boolean isFromThisMod(BlockEntity be) { + if (be == null) + return false; + + String namespace = be.getType() + .getRegistryName() + .getNamespace(); + + return + Mods.SOPHISTICATEDSTORAGE.id().equals(namespace) + || Mods.SOPHISTICATEDBACKPACKS.id().equals(namespace); + } + + @Override + public long getSpaceInSlot(IItemHandler inv, int slot) { + return ((long) inv.getSlotLimit(slot) * inv.getStackInSlot(slot).getMaxStackSize()) / 64; + } + +} diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java new file mode 100644 index 0000000000..a5055e017c --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java @@ -0,0 +1,25 @@ +package com.simibubi.create.compat.thresholdSwitch; + +import com.simibubi.create.compat.Mods; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.items.IItemHandler; + +public class StorageDrawers implements ThresholdSwitchCompat { + + @Override + public boolean isFromThisMod(BlockEntity blockEntity) { + return blockEntity != null && Mods.STORAGEDRAWERS.id() + .equals(blockEntity.getType() + .getRegistryName() + .getNamespace()); + } + + @Override + public long getSpaceInSlot(IItemHandler inv, int slot) { + if (slot == 0) + return 0; + + return inv.getSlotLimit(slot); + } +} diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/ThresholdSwitchCompat.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/ThresholdSwitchCompat.java new file mode 100644 index 0000000000..841769c34d --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/ThresholdSwitchCompat.java @@ -0,0 +1,12 @@ +package com.simibubi.create.compat.thresholdSwitch; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.items.IItemHandler; + +public interface ThresholdSwitchCompat { + + boolean isFromThisMod(BlockEntity blockEntity); + + long getSpaceInSlot(IItemHandler inv, int slot); + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java index 4b18d1d27a..0c3f069f43 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java @@ -219,14 +219,18 @@ public void positionRider(Entity passenger, MoveFunction callback) { Vec3 transformedVector = getPassengerPosition(passenger, 1); if (transformedVector == null) return; + + float offset = -1 / 8f; + if (passenger instanceof AbstractContraptionEntity) + offset = 0.0f; callback.accept(passenger, transformedVector.x, - transformedVector.y + SeatEntity.getCustomEntitySeatOffset(passenger) - 1 / 8f, transformedVector.z); + transformedVector.y + SeatEntity.getCustomEntitySeatOffset(passenger) + offset, transformedVector.z); } public Vec3 getPassengerPosition(Entity passenger, float partialTicks) { if (contraption == null) return null; - + UUID id = passenger.getUUID(); if (passenger instanceof OrientedContraptionEntity) { BlockPos localPos = contraption.getBearingPosOf(id); @@ -241,7 +245,7 @@ public Vec3 getPassengerPosition(Entity passenger, float partialTicks) { BlockPos seat = contraption.getSeatOf(id); if (seat == null) return null; - + Vec3 transformedVector = toGlobalVector(Vec3.atLowerCornerOf(seat) .add(.5, passenger.getMyRidingOffset() + ySize - .15f, .5), partialTicks) .add(VecHelper.getCenterOf(BlockPos.ZERO)) @@ -875,10 +879,11 @@ public boolean hasExactlyOnePlayerPassenger() { public static class ContraptionRotationState { public static final ContraptionRotationState NONE = new ContraptionRotationState(); - float xRotation = 0; - float yRotation = 0; - float zRotation = 0; - float secondYRotation = 0; + public float xRotation = 0; + public float yRotation = 0; + public float zRotation = 0; + public float secondYRotation = 0; + Matrix3d matrix; public Matrix3d asMatrix() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java index d22b272229..95418662e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java @@ -24,6 +24,8 @@ import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllInteractionBehaviours; @@ -56,7 +58,6 @@ import com.simibubi.create.content.contraptions.render.ContraptionLighter; import com.simibubi.create.content.contraptions.render.EmptyLighter; import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock; -import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import com.simibubi.create.content.kinetics.base.BlockBreakingMovementBehaviour; import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; @@ -65,7 +66,6 @@ import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; import com.simibubi.create.content.kinetics.steamEngine.PoweredShaftBlockEntity; import com.simibubi.create.content.logistics.crate.CreativeCrateBlockEntity; -import com.simibubi.create.content.logistics.vault.ItemVaultBlockEntity; import com.simibubi.create.content.redstone.contact.RedstoneContactBlock; import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer; @@ -152,6 +152,7 @@ public abstract class Contraption { protected Map seatMapping; protected Map stabilizedSubContraptions; protected MountedStorageManager storage; + protected Multimap capturedMultiblocks; private Set glueToRemove; private Map initialPassengers; @@ -184,6 +185,7 @@ public Contraption() { stabilizedSubContraptions = new HashMap<>(); simplifiedEntityColliders = Optional.empty(); storage = new MountedStorageManager(); + capturedMultiblocks = ArrayListMultimap.create(); } public ContraptionWorld getContraptionWorld() { @@ -643,6 +645,8 @@ protected void addBlock(BlockPos pos, Pair pair BlockEntity be = pair.getValue(); storage.addBlock(localPos, be); + captureMultiblock(localPos, structureBlockInfo, be); + if (AllMovementBehaviours.getBehaviour(captured.state) != null) actors.add(MutablePair.of(structureBlockInfo, null)); @@ -657,6 +661,25 @@ protected void addBlock(BlockPos pos, Pair pair hasUniversalCreativeCrate = true; } + protected void captureMultiblock(BlockPos localPos, StructureBlockInfo structureBlockInfo, BlockEntity be) { + if (!(be instanceof IMultiBlockEntityContainer multiBlockBE)) + return; + + CompoundTag nbt = structureBlockInfo.nbt; + BlockPos controllerPos = nbt.contains("Controller") ? + toLocalPos(NbtUtils.readBlockPos(nbt.getCompound("Controller"))) : + localPos; + nbt.put("Controller", NbtUtils.writeBlockPos(controllerPos)); + + if (multiBlockBE.isController() && multiBlockBE.getHeight() <= 1 && multiBlockBE.getWidth() <= 1) { + nbt.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + return; + } + + nbt.remove("LastKnownPos"); + capturedMultiblocks.put(controllerPos, structureBlockInfo); + } + @Nullable protected CompoundTag getBlockEntityNBT(Level world, BlockPos pos) { BlockEntity blockEntity = world.getBlockEntity(pos); @@ -667,11 +690,6 @@ protected CompoundTag getBlockEntityNBT(Level world, BlockPos pos) { nbt.remove("y"); nbt.remove("z"); - if ((blockEntity instanceof FluidTankBlockEntity || blockEntity instanceof ItemVaultBlockEntity) - && nbt.contains("Controller")) - nbt.put("Controller", - NbtUtils.writeBlockPos(toLocalPos(NbtUtils.readBlockPos(nbt.getCompound("Controller"))))); - return nbt; } @@ -695,11 +713,25 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { Tag blocks = nbt.get("Blocks"); // used to differentiate between the 'old' and the paletted serialization boolean usePalettedDeserialization = - blocks != null && blocks.getId() == 10 && ((CompoundTag) blocks).contains("Palette"); + blocks != null && blocks.getId() == Tag.TAG_COMPOUND && ((CompoundTag) blocks).contains("Palette"); readBlocksCompound(blocks, world, usePalettedDeserialization); + capturedMultiblocks.clear(); + nbt.getList("CapturedMultiblocks", Tag.TAG_COMPOUND).forEach(c -> { + CompoundTag tag = (CompoundTag) c; + if (!tag.contains("Controller", Tag.TAG_COMPOUND) && !tag.contains("Parts", Tag.TAG_LIST)) + return; + + BlockPos controllerPos = NbtUtils.readBlockPos(tag.getCompound("Controller")); + tag.getList("Parts", Tag.TAG_COMPOUND).forEach(part -> { + BlockPos partPos = NbtUtils.readBlockPos((CompoundTag) part); + StructureBlockInfo partInfo = this.blocks.get(partPos); + capturedMultiblocks.put(controllerPos, partInfo); + }); + }); + actors.clear(); - nbt.getList("Actors", 10) + nbt.getList("Actors", Tag.TAG_COMPOUND) .forEach(c -> { CompoundTag comp = (CompoundTag) c; StructureBlockInfo info = this.blocks.get(NbtUtils.readBlockPos(comp.getCompound("Pos"))); @@ -742,7 +774,7 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { storage.read(nbt, presentBlockEntities, spawnData); if (nbt.contains("BoundsFront")) - bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", 5)); + bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", Tag.TAG_FLOAT)); stalled = nbt.getBoolean("Stalled"); hasUniversalCreativeCrate = nbt.getBoolean("BottomlessSupply"); @@ -755,6 +787,19 @@ public CompoundTag writeNBT(boolean spawnPacket) { CompoundTag blocksNBT = writeBlocksCompound(); + ListTag multiblocksNBT = new ListTag(); + capturedMultiblocks.keySet().forEach(controllerPos -> { + CompoundTag tag = new CompoundTag(); + tag.put("Controller", NbtUtils.writeBlockPos(controllerPos)); + + Collection multiblockParts = capturedMultiblocks.get(controllerPos); + ListTag partsNBT = new ListTag(); + multiblockParts.forEach(info -> partsNBT.add(NbtUtils.writeBlockPos(info.pos))); + tag.put("Parts", partsNBT); + + multiblocksNBT.add(tag); + }); + ListTag actorsNBT = new ListTag(); for (MutablePair actor : getActors()) { MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(actor.left.state); @@ -805,6 +850,7 @@ public CompoundTag writeNBT(boolean spawnPacket) { nbt.put("Blocks", blocksNBT); nbt.put("Actors", actorsNBT); + nbt.put("CapturedMultiblocks", multiblocksNBT); nbt.put("DisabledActors", disabledActorsNBT); nbt.put("Interactors", interactorNBT); nbt.put("Superglue", superglueNBT); @@ -859,12 +905,12 @@ private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDe throw new IllegalStateException("Palette Map index exceeded maximum"); }); - ListTag list = c.getList("Palette", 10); + ListTag list = c.getList("Palette", Tag.TAG_COMPOUND); ((HashMapPaletteAccessor)palette).port_lib$getValues().clear(); for (int i = 0; i < list.size(); ++i) ((HashMapPaletteAccessor)palette).port_lib$getValues().add(NbtUtils.readBlockState(list.getCompound(i))); - blockList = c.getList("BlockList", 10); + blockList = c.getList("BlockList", Tag.TAG_COMPOUND); } else { blockList = (ListTag) compound; } @@ -1021,6 +1067,8 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { return; disassembled = true; + translateMultiblockControllers(transform); + for (boolean nonBrittles : Iterate.trueAndFalse) { for (StructureBlockInfo block : blocks.values()) { if (nonBrittles == BlockMovementChecks.isBrittle(block.state)) @@ -1076,7 +1124,7 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { CompoundTag tag = block.nbt; if (blockEntity != null) - tag = NBTProcessors.process(blockEntity, tag, false); + tag = NBTProcessors.process(state, blockEntity, tag, false); if (blockEntity != null && tag != null) { tag.putInt("x", targetPos.getX()); tag.putInt("y", targetPos.getY()); @@ -1087,8 +1135,11 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { tag.remove("InitialOffset"); } - if (blockEntity instanceof IMultiBlockEntityContainer && tag.contains("LastKnownPos")) - tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + if (blockEntity instanceof IMultiBlockEntityContainer) { + if (tag.contains("LastKnownPos") || capturedMultiblocks.isEmpty()) { + tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + } + } blockEntity.load(tag); storage.addStorageToWorld(block, blockEntity); @@ -1116,6 +1167,38 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { storage.clear(); } + protected void translateMultiblockControllers(StructureTransform transform) { + if (transform.rotationAxis != null && transform.rotationAxis != Axis.Y && transform.rotation != Rotation.NONE) { + capturedMultiblocks.values().forEach(info -> { + info.nbt.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + }); + return; + } + + capturedMultiblocks.keySet().forEach(controllerPos -> { + Collection multiblockParts = capturedMultiblocks.get(controllerPos); + Optional optionalBoundingBox = BoundingBox.encapsulatingPositions(multiblockParts.stream().map(info -> transform.apply(info.pos)).toList()); + if (optionalBoundingBox.isEmpty()) + return; + + BoundingBox boundingBox = optionalBoundingBox.get(); + BlockPos newControllerPos = new BlockPos(boundingBox.minX(), boundingBox.minY(), boundingBox.minZ()); + BlockPos newLocalPos = toLocalPos(newControllerPos); + BlockPos otherPos = transform.unapply(newControllerPos); + + multiblockParts.forEach(info -> info.nbt.put("Controller", NbtUtils.writeBlockPos(newControllerPos))); + + if (controllerPos.equals(newLocalPos)) + return; + + // swap nbt data to the new controller position + StructureBlockInfo prevControllerInfo = blocks.get(controllerPos); + StructureBlockInfo newControllerInfo = blocks.get(otherPos); + blocks.put(otherPos, new StructureBlockInfo(newControllerInfo.pos, newControllerInfo.state, prevControllerInfo.nbt)); + blocks.put(controllerPos, new StructureBlockInfo(prevControllerInfo.pos, prevControllerInfo.state, newControllerInfo.nbt)); + }); + } + public void addPassengersToWorld(Level world, StructureTransform transform, List seatedEntities) { for (Entity seatedEntity : seatedEntities) { if (getSeatMapping().isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java index c99054f416..983f67c373 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java @@ -22,15 +22,13 @@ default boolean addExceptionToTooltip(List tooltip) { if (!tooltip.isEmpty()) tooltip.add(Components.immutableEmpty()); - tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() - .append(Lang.translateDirect("gui.assembly.exception") - .withStyle(ChatFormatting.GOLD))); + Lang.translate("gui.assembly.exception").style(ChatFormatting.GOLD) + .forGoggles(tooltip); String text = e.component.getString(); Arrays.stream(text.split("\n")) .forEach(l -> TooltipHelper.cutStringTextComponent(l, Palette.GRAY_AND_WHITE) - .forEach(c -> tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() - .append(c)))); + .forEach(c -> Lang.text(c.getString()).forGoggles(tooltip))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java index 63e84c31f3..662b9ddf42 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions; import static com.simibubi.create.foundation.utility.AngleHelper.angleLerp; +import static com.simibubi.create.foundation.utility.AngleHelper.wrapAngle180; import java.util.Optional; import java.util.UUID; @@ -363,7 +364,7 @@ protected boolean updateOrientation(boolean rotationLock, boolean wasStalled, En return false; OrientedContraptionEntity parent = (OrientedContraptionEntity) riding; prevYaw = yaw; - yaw = -parent.getViewYRot(1); + yaw = wrapAngle180(getInitialYaw() - parent.getInitialYaw()) - parent.getViewYRot(1); return false; } @@ -581,7 +582,7 @@ private Vec3 getContraptionOffset(float partialTicks, Entity ridingEntity) { Vec3 passengerPosition = parent.getPassengerPosition(this, partialTicks); if (passengerPosition == null) return Vec3.ZERO; - + double x = passengerPosition.x - Mth.lerp(partialTicks, this.xOld, this.getX()); double y = passengerPosition.y - Mth.lerp(partialTicks, this.yOld, this.getY()); double z = passengerPosition.z - Mth.lerp(partialTicks, this.zOld, this.getZ()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java index 0a36efe854..198ae64ff0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java @@ -98,6 +98,16 @@ public Vec3 applyWithoutOffset(Vec3 localVec) { return vec; } + public Vec3 unapplyWithoutOffset(Vec3 globalVec) { + Vec3 vec = globalVec; + if (rotationAxis != null) + vec = VecHelper.rotateCentered(vec, -angle, rotationAxis); + if (mirror != null) + vec = VecHelper.mirrorCentered(vec, mirror); + + return vec; + } + public Vec3 apply(Vec3 localVec) { return applyWithoutOffset(localVec).add(Vec3.atLowerCornerOf(offset)); } @@ -110,6 +120,14 @@ public BlockPos apply(BlockPos localPos) { return applyWithoutOffset(localPos).offset(offset); } + public BlockPos unapply(BlockPos globalPos) { + return unapplyWithoutOffset(globalPos.subtract(offset)); + } + + public BlockPos unapplyWithoutOffset(BlockPos globalPos) { + return new BlockPos(unapplyWithoutOffset(VecHelper.getCenterOf(globalPos))); + } + public void apply(BlockEntity be) { if (be instanceof ITransformableBlockEntity) ((ITransformableBlockEntity) be).transform(this); diff --git a/src/main/java/com/simibubi/create/content/contraptions/TranslatingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/TranslatingContraption.java index e547f49f75..e995cba179 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/TranslatingContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/TranslatingContraption.java @@ -4,6 +4,8 @@ import java.util.HashSet; import java.util.Set; +import com.simibubi.create.infrastructure.config.AllConfigs; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -19,7 +21,7 @@ public Set getOrCreateColliders(Level world, Direction movementDirecti return Collections.emptySet(); if (cachedColliders == null || cachedColliderDirection != movementDirection) { cachedColliderDirection = movementDirection; - cachedColliders= createColliders(world, movementDirection); + cachedColliders = createColliders(world, movementDirection); } return cachedColliders; } @@ -51,7 +53,7 @@ public void removeBlocksFromWorld(Level world, BlockPos offset) { @Override public boolean canBeStabilized(Direction facing, BlockPos localPos) { - return false; + return AllConfigs.server().kinetics.stabiliseStableContraptions.get(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java index 3e451fdce0..4a9f8f07c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java @@ -12,6 +12,7 @@ import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTags; import com.simibubi.create.content.contraptions.actors.roller.RollerBlockEntity.RollingMode; import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.contraptions.pulley.PulleyContraption; @@ -109,7 +110,7 @@ public boolean canBreak(Level world, BlockPos breakingPos, BlockState state) { return false; return super.canBreak(world, breakingPos, state) && !state.getCollisionShape(world, breakingPos) - .isEmpty() && !AllBlocks.TRACK.has(state); + .isEmpty() && !AllTags.AllBlockTags.TRACKS.matches(state); } @Override @@ -195,7 +196,7 @@ protected List getPositionsToBreak(MovementContext context, BlockPos v int startingY = 1; if (!getStateToPaveWith(context).isAir()) { FilterItemStack filter = context.getFilterFromBE(); - if (!ItemHelper + if (!ItemHelper .extract(context.contraption.getSharedInventory(), stack -> filter.test(context.world, stack), 1, true) .isEmpty()) @@ -306,7 +307,7 @@ protected void triggerPaver(MovementContext context, BlockPos pos) { BlockState stateToPaveWith = getStateToPaveWith(context); BlockState stateToPaveWithAsSlab = getStateToPaveWithAsSlab(context); RollingMode mode = getMode(context); - + if (mode != RollingMode.TUNNEL_PAVE && stateToPaveWith.isAir()) return; @@ -470,9 +471,10 @@ protected PaveResult tryFill(MovementContext context, BlockPos targetPos, BlockS if (existing.is(toPlace.getBlock())) return PaveResult.PASS; if (!existing.is(BlockTags.LEAVES) && !existing.getMaterial() - .isReplaceable() - && !existing.getCollisionShape(level, targetPos) - .isEmpty()) + .isReplaceable() + && (!existing.getCollisionShape(level, targetPos) + .isEmpty() + || existing.is(BlockTags.PORTALS))) return PaveResult.FAIL; FilterItemStack filter = context.getFilterFromBE(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java new file mode 100644 index 0000000000..d5c81643cc --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java @@ -0,0 +1,71 @@ +package com.simibubi.create.content.contraptions.actors.seat; + +import com.simibubi.create.content.contraptions.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.AbstractContraptionEntity.ContraptionRotationState; +import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.infrastructure.config.AllConfigs; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; + +public class ContraptionPlayerPassengerRotation { + + static boolean active; + static int prevId; + static float prevYaw; + static float prevPitch; + + public static void tick() { + active = AllConfigs.client().rotateWhenSeated.get(); + } + + public static void frame() { + Player player = Minecraft.getInstance().player; + if (!active) + return; + if (player == null || !player.isPassenger()) { + prevId = 0; + return; + } + + Entity vehicle = player.getVehicle(); + if (!(vehicle instanceof AbstractContraptionEntity contraptionEntity)) + return; + + ContraptionRotationState rotationState = contraptionEntity.getRotationState(); + + float yaw = AngleHelper.wrapAngle180((contraptionEntity instanceof CarriageContraptionEntity cce) + ? cce.getViewYRot(AnimationTickHolder.getPartialTicks()) + : rotationState.yRotation); + + float pitch = (contraptionEntity instanceof CarriageContraptionEntity cce) + ? cce.getViewXRot(AnimationTickHolder.getPartialTicks()) + : 0; + + if (prevId != contraptionEntity.getId()) { + prevId = contraptionEntity.getId(); + prevYaw = yaw; + prevPitch = pitch; + } + + float yawDiff = AngleHelper.getShortestAngleDiff(yaw, prevYaw); + float pitchDiff = AngleHelper.getShortestAngleDiff(pitch, prevPitch); + + prevYaw = yaw; + prevPitch = pitch; + + float yawRelativeToTrain = Mth.abs(AngleHelper.getShortestAngleDiff(player.getYRot(), -yaw - 90)); + if (yawRelativeToTrain > 120) + pitchDiff *= -1; + else if (yawRelativeToTrain > 60) + pitchDiff *= 0; + + player.setYRot((float) (player.getYRot() + yawDiff)); + player.setXRot((float) (player.getXRot() + pitchDiff)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java new file mode 100644 index 0000000000..340dc0b568 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java @@ -0,0 +1,28 @@ +package com.simibubi.create.content.contraptions.behaviour; + +import com.simibubi.create.content.contraptions.Contraption; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.FenceGateBlock; +import net.minecraft.world.level.block.state.BlockState; + +public class FenceGateMovingInteraction extends SimpleBlockMovingInteraction { + + @Override + protected BlockState handle(Player player, Contraption contraption, BlockPos pos, BlockState currentState) { + SoundEvent sound = currentState.getValue(FenceGateBlock.OPEN) ? SoundEvents.FENCE_GATE_CLOSE + : SoundEvents.FENCE_GATE_OPEN; + float pitch = player.level.random.nextFloat() * 0.1F + 0.9F; + playSound(player, sound, pitch); + return currentState.cycle(FenceGateBlock.OPEN); + } + + @Override + protected boolean updateColliders() { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java index aba293cbca..abb7c2509f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java @@ -48,7 +48,7 @@ private void collectItems(MovementContext context) { .filter(itemStack -> !itemStack.isEmpty() && itemStack.getItem() != Items.AIR && itemStack.getMaxStackSize() > itemStack.getCount()) .forEach(itemStack -> itemStack.grow(ItemHelper - .extract(context.contraption.getSharedInventory(), itemStack::sameItem, + .extract(context.contraption.getSharedInventory(), (otherItemStack) -> ItemStack.isSameItemSameTags(itemStack, otherItemStack), ItemHelper.ExtractionCountMode.UPTO, itemStack.getMaxStackSize() - itemStack.getCount(), false) .getCount())); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactEditPacket.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactEditPacket.java index 81d331d54a..2a8a4487dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactEditPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactEditPacket.java @@ -27,14 +27,14 @@ public ElevatorContactEditPacket(FriendlyByteBuf buffer) { @Override protected void writeSettings(FriendlyByteBuf buffer) { buffer.writeUtf(shortName, 4); - buffer.writeUtf(longName, 30); + buffer.writeUtf(longName, 90); buffer.writeVarInt(doorControl.ordinal()); } @Override protected void readSettings(FriendlyByteBuf buffer) { shortName = buffer.readUtf(4); - longName = buffer.readUtf(30); + longName = buffer.readUtf(90); doorControl = DoorControl.values()[Mth.clamp(buffer.readVarInt(), 0, DoorControl.values().length)]; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java index f428fb3b3b..915be33bd9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java @@ -38,6 +38,7 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LightningBolt; +import net.minecraft.world.entity.Marker; import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; @@ -162,7 +163,13 @@ public boolean hurt(DamageSource source, float amount) { @Override public void tick() { - super.tick(); + xRotO = getXRot(); + yRotO = getYRot(); + walkDistO = walkDist; + xo = getX(); + yo = getY(); + zo = getZ(); + if (getBoundingBox().getXsize() == 0) discard(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java index e486a2b1cf..0860ea717b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java @@ -48,7 +48,8 @@ public static void forEachLoadedCoupling(Level world, Consumer cartsWithCoupling = CapabilityMinecartController.loadedMinecartsWithCoupling.get(world); if (cartsWithCoupling == null) return; - cartsWithCoupling.forEach(id -> { + + for (UUID id : cartsWithCoupling) { MinecartController controller = CapabilityMinecartController.getIfPresent(world, id); if (controller == null) return; @@ -59,7 +60,7 @@ public static void forEachLoadedCoupling(Level world, Consumer toRemove = new ArrayList<>(); Map carts = loadedMinecartsByUUID.get(world); List queued = queuedAdditions.get(world); List queuedRemovals = queuedUnloads.get(world); Set cartsWithCoupling = loadedMinecartsWithCoupling.get(world); Set keySet = carts.keySet(); - keySet.removeAll(queuedRemovals); - cartsWithCoupling.removeAll(queuedRemovals); + for (UUID removal : queuedRemovals) { + keySet.remove(removal); + cartsWithCoupling.remove(removal); + } for (AbstractMinecart cart : queued) { UUID uniqueID = cart.getUUID(); @@ -117,6 +118,8 @@ public static void tick(Level world) { queuedRemovals.clear(); queued.clear(); + List toRemove = new ArrayList<>(); + for (Entry entry : carts.entrySet()) { MinecartController controller = entry.getValue(); if (controller != null) { @@ -128,8 +131,10 @@ public static void tick(Level world) { toRemove.add(entry.getKey()); } - cartsWithCoupling.removeAll(toRemove); - keySet.removeAll(toRemove); + for (UUID uuid : toRemove) { + keySet.remove(uuid); + cartsWithCoupling.remove(uuid); + } } public static void onChunkUnloaded(Level world, LevelChunk chunk) { diff --git a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java index fc7a54abfd..5d5a782ff6 100644 --- a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java @@ -85,6 +85,10 @@ public BlockState removeBracket(boolean inOnReplacedContext) { public boolean isBracketPresent() { return bracket != null; } + + public boolean isBracketValid(BlockState bracketState) { + return bracketState.getBlock() instanceof BracketBlock; + } @Nullable public BlockState getBracket() { @@ -110,7 +114,7 @@ public boolean isSafeNBT() { @Override public void write(CompoundTag nbt, boolean clientPacket) { - if (isBracketPresent()) { + if (isBracketPresent() && isBracketValid(bracket)) { nbt.put("Bracket", NbtUtils.writeBlockState(bracket)); } if (clientPacket && reRender) { @@ -122,8 +126,12 @@ public void write(CompoundTag nbt, boolean clientPacket) { @Override public void read(CompoundTag nbt, boolean clientPacket) { - if (nbt.contains("Bracket")) - bracket = NbtUtils.readBlockState(nbt.getCompound("Bracket")); + if (nbt.contains("Bracket")) { + bracket = null; + BlockState readBlockState = NbtUtils.readBlockState(nbt.getCompound("Bracket")); + if (isBracketValid(readBlockState)) + bracket = readBlockState; + } if (clientPacket && nbt.contains("Redraw")) getWorld().sendBlockUpdated(getPos(), blockEntity.getBlockState(), blockEntity.getBlockState(), 16); super.read(nbt, clientPacket); diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java index 11af92da64..6d8954177f 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java @@ -4,8 +4,10 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.content.kinetics.steamEngine.PoweredShaftBlock; import com.simibubi.create.foundation.placement.IPlacementHelper; import com.simibubi.create.foundation.placement.PlacementHelpers; +import com.simibubi.create.foundation.placement.PlacementOffset; import com.simibubi.create.foundation.placement.PoleHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VoxelShaper; @@ -36,6 +38,8 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.NotNull; + public class CopycatStepBlock extends WaterloggedCopycatBlock { public static final EnumProperty HALF = BlockStateProperties.HALF; @@ -134,7 +138,7 @@ public boolean canFaceBeOccluded(BlockState state, Direction face) { return (state.getValue(HALF) == Half.TOP) == (face == Direction.UP); return state.getValue(FACING) == face; } - + @Override public boolean shouldFaceAlwaysRender(BlockState state, Direction face) { return canFaceBeOccluded(state, face.getOpposite()); @@ -222,10 +226,21 @@ public PlacementHelper() { } @Override - public Predicate getItemPredicate() { + public @NotNull Predicate getItemPredicate() { return AllBlocks.COPYCAT_STEP::isIn; } + @Override + public @NotNull PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { + PlacementOffset offset = super.getOffset(player, world, state, pos, ray); + + if (offset.isSuccessful()) + offset.withTransform(offset.getTransform() + .andThen(s -> s.setValue(HALF, state.getValue(HALF)))); + + return offset; + } } } diff --git a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java index 6c31ae78c1..d53cf96175 100644 --- a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java @@ -3,12 +3,14 @@ import java.util.List; import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -31,9 +33,16 @@ default InteractionResult tryEncase(BlockState state, Level level, BlockPos pos, return InteractionResult.SUCCESS; encased.handleEncasing(state, level, pos, heldItem, player, hand, ray); + playEncaseSound(level, pos); return InteractionResult.SUCCESS; } } return InteractionResult.PASS; } + + default void playEncaseSound(Level level, BlockPos pos) { + BlockState newState = level.getBlockState(pos); + SoundType soundType = newState.getSoundType(); + level.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F); + } } diff --git a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java index 7081b98aec..fe98850ea0 100644 --- a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java +++ b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java @@ -10,6 +10,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -33,8 +34,8 @@ protected void renderSafe(PlacardBlockEntity be, float partialTicks, PoseStack m ItemRenderer itemRenderer = Minecraft.getInstance() .getItemRenderer(); - boolean blockItem = itemRenderer.getModel(heldItem, null, null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(heldItem, null, null, 0); + boolean blockItem = bakedModel.isGui3d(); ms.pushPose(); TransformStack.cast(ms) @@ -46,7 +47,7 @@ protected void renderSafe(PlacardBlockEntity be, float partialTicks, PoseStack m .translate(0, 0, 4.5 / 16f) .scale(blockItem ? .5f : .375f); - itemRenderer.renderStatic(heldItem, TransformType.FIXED, light, overlay, ms, buffer, 0); + itemRenderer.render(heldItem, TransformType.FIXED, false, ms, buffer, light, overlay, bakedModel); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java index cf2b9e178a..3c7e558814 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java @@ -7,6 +7,8 @@ import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.block.IHaveBigOutline; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; @@ -34,7 +36,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class SlidingDoorBlock extends DoorBlock implements IWrenchable, IBE { +public class SlidingDoorBlock extends DoorBlock implements IWrenchable, IBE, IHaveBigOutline { public static final BooleanProperty VISIBLE = BooleanProperty.create("visible"); private boolean folds; diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java index c53012fff0..6290747909 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java @@ -113,8 +113,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak String[] pitches = Lang.translateDirect("generic.notes") .getString() .split(";"); - MutableComponent textComponent = Components.literal(spacing); - tooltip.add(textComponent.append(Lang.translateDirect("generic.pitch", pitches[pitch % pitches.length]))); + Lang.translate("generic.pitch", pitches[pitch % pitches.length]).forGoggles(tooltip); return true; } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java index 7bc864404d..53ace61169 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java @@ -1,11 +1,15 @@ package com.simibubi.create.content.equipment.armor; +import java.util.List; import java.util.Optional; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; +import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.content.schematics.requirement.ItemRequirement; +import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; @@ -13,8 +17,6 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; @@ -34,6 +36,7 @@ import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -41,12 +44,13 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class BacktankBlock extends HorizontalKineticBlock - implements IBE, SimpleWaterloggedBlock { +public class BacktankBlock extends HorizontalKineticBlock implements IBE, SimpleWaterloggedBlock, ISpecialBlockItemRequirement { public BacktankBlock(Properties properties) { super(properties); @@ -78,8 +82,8 @@ public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, - LevelAccessor world, BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, + BlockPos pos, BlockPos neighbourPos) { if (state.getValue(BlockStateProperties.WATERLOGGED)) world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; @@ -111,11 +115,10 @@ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEnt if (stack == null) return; withBlockEntityDo(worldIn, pos, be -> { - be.setCapacityEnchantLevel(EnchantmentHelper.getItemEnchantmentLevel(AllEnchantments.CAPACITY.get(), stack)); - be.setAirLevel(stack.getOrCreateTag() - .getInt("Air")); - if (stack.isEnchanted()) - be.setEnchantmentTag(stack.getEnchantmentTags()); + be.setCapacityEnchantLevel( + EnchantmentHelper.getItemEnchantmentLevel(AllEnchantments.CAPACITY.get(), stack)); + CompoundTag vanillaTag = stack.getOrCreateTag(); + be.setAirLevel(vanillaTag.getInt("Air")); if (stack.hasCustomHoverName()) be.setCustomName(stack.getHoverName()); // fabric: forge mangles item placement logic, so this isn't needed there. @@ -126,6 +129,33 @@ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEnt }); } + @Override + @SuppressWarnings("deprecation") + // Re-adding ForgeCaps to item here as there is no loot function that can modify + // outside of the vanilla tag + public List getDrops(BlockState pState, LootContext.Builder pBuilder) { + List lootDrops = super.getDrops(pState, pBuilder); + + BlockEntity blockEntity = pBuilder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); + if (!(blockEntity instanceof BacktankBlockEntity bbe)) + return lootDrops; + + CompoundTag forgeCapsTag = bbe.getForgeCapsTag(); + if (forgeCapsTag == null) + return lootDrops; + + return lootDrops.stream() + .map(stack -> { + if (!(stack.getItem() instanceof BacktankItem)) + return stack; + + ItemStack modifiedStack = new ItemStack(stack.getItem(), stack.getCount(), forgeCapsTag.copy()); + modifiedStack.setTag(stack.getTag()); + return modifiedStack; + }) + .toList(); + } + @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { @@ -152,30 +182,21 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player @Override public ItemStack getCloneItemStack(BlockGetter blockGetter, BlockPos pos, BlockState state) { Item item = asItem(); - if (item instanceof BacktankItem.BacktankBlockItem placeable) { + if (item instanceof BacktankItem.BacktankBlockItem placeable) item = placeable.getActualItem(); - } - ItemStack stack = new ItemStack(item); Optional blockEntityOptional = getBlockEntityOptional(blockGetter, pos); + CompoundTag forgeCapsTag = blockEntityOptional.map(BacktankBlockEntity::getForgeCapsTag) + .orElse(null); + CompoundTag vanillaTag = blockEntityOptional.map(BacktankBlockEntity::getVanillaTag) + .orElse(new CompoundTag()); int air = blockEntityOptional.map(BacktankBlockEntity::getAirLevel) .orElse(0); - CompoundTag tag = stack.getOrCreateTag(); - tag.putInt("Air", air); - - ListTag enchants = blockEntityOptional.map(BacktankBlockEntity::getEnchantmentTag) - .orElse(new ListTag()); - if (!enchants.isEmpty()) { - ListTag enchantmentTagList = stack.getEnchantmentTags(); - enchantmentTagList.addAll(enchants); - tag.put("Enchantments", enchantmentTagList); - } - Component customName = blockEntityOptional.map(BacktankBlockEntity::getCustomName) - .orElse(null); - if (customName != null) - stack.setHoverName(customName); + ItemStack stack = new ItemStack(item, 1, forgeCapsTag); + vanillaTag.putInt("Air", air); + stack.setTag(vanillaTag); return stack; } @@ -200,4 +221,12 @@ public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos return false; } + @Override + public ItemRequirement getRequiredItems(BlockState state, BlockEntity blockEntity) { + Item item = asItem(); + if (item instanceof BacktankItem.BacktankBlockItem placeable) + item = placeable.getActualItem(); + return new ItemRequirement(ItemUseType.CONSUME, item); + } + } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java index 20f3c45185..181e5b1bb3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java @@ -2,6 +2,8 @@ import java.util.List; +import javax.annotation.Nullable; + import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; @@ -16,8 +18,6 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.Nameable; @@ -35,20 +35,25 @@ public class BacktankBlockEntity extends KineticBlockEntity implements Nameable private Component customName; private int capacityEnchantLevel; - private ListTag enchantmentTag; + + private CompoundTag vanillaTag; + private CompoundTag forgeCapsTag; public BacktankBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); defaultName = getDefaultName(state); - enchantmentTag = new ListTag(); + vanillaTag = new CompoundTag(); + forgeCapsTag = null; } public static Component getDefaultName(BlockState state) { if (AllBlocks.NETHERITE_BACKTANK.has(state)) { - AllItems.NETHERITE_BACKTANK.get().getDescription(); + AllItems.NETHERITE_BACKTANK.get() + .getDescription(); } - return AllItems.COPPER_BACKTANK.get().getDescription(); + return AllItems.COPPER_BACKTANK.get() + .getDescription(); } @Override @@ -115,21 +120,29 @@ protected void write(CompoundTag compound, boolean clientPacket) { compound.putInt("Air", airLevel); compound.putInt("Timer", airLevelTimer); compound.putInt("CapacityEnchantment", capacityEnchantLevel); + if (this.customName != null) compound.putString("CustomName", Component.Serializer.toJson(this.customName)); - compound.put("Enchantments", enchantmentTag); + + compound.put("VanillaTag", vanillaTag); + if (forgeCapsTag != null) + compound.put("ForgeCapsTag", forgeCapsTag); } @Override protected void read(CompoundTag compound, boolean clientPacket) { super.read(compound, clientPacket); int prev = airLevel; - capacityEnchantLevel = compound.getInt("CapacityEnchantment"); airLevel = compound.getInt("Air"); airLevelTimer = compound.getInt("Timer"); - enchantmentTag = compound.getList("Enchantments", Tag.TAG_COMPOUND); + capacityEnchantLevel = compound.getInt("CapacityEnchantment"); + if (compound.contains("CustomName", 8)) this.customName = Component.Serializer.fromJson(compound.getString("CustomName")); + + vanillaTag = compound.getCompound("VanillaTag"); + forgeCapsTag = compound.contains("ForgeCapsTag") ? compound.getCompound("ForgeCapsTag") : null; + if (prev != 0 && prev != airLevel && airLevel == BacktankUtil.maxAir(capacityEnchantLevel) && clientPacket) playFilledEffect(); } @@ -149,8 +162,7 @@ protected void playFilledEffect() { @Override public Component getName() { - return this.customName != null ? this.customName - : defaultName; + return this.customName != null ? this.customName : defaultName; } public int getAirLevel() { @@ -166,20 +178,21 @@ public void setCustomName(Component customName) { this.customName = customName; } - public Component getCustomName() { - return customName; + public void setCapacityEnchantLevel(int capacityEnchantLevel) { + this.capacityEnchantLevel = capacityEnchantLevel; } - - public ListTag getEnchantmentTag() { - return enchantmentTag; + + public void setTags(CompoundTag vanillaTag, @Nullable CompoundTag forgeCapsTag) { + this.vanillaTag = vanillaTag; + this.forgeCapsTag = forgeCapsTag; } - public void setEnchantmentTag(ListTag enchantmentTag) { - this.enchantmentTag = enchantmentTag; + public CompoundTag getVanillaTag() { + return vanillaTag; } - - public void setCapacityEnchantLevel(int capacityEnchantLevel) { - this.capacityEnchantLevel = capacityEnchantLevel; + + public CompoundTag getForgeCapsTag() { + return forgeCapsTag; } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java index 48922b4dd9..7f05af4e3f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java @@ -6,7 +6,6 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterials; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -44,13 +43,13 @@ public static void onLivingEquipmentChange(LivingEntity entity, EquipmentSlot sl public static boolean isNetheriteDivingHelmet(ItemStack stack) { return stack.getItem() instanceof DivingHelmetItem && isNetheriteArmor(stack); } - + public static boolean isNetheriteBacktank(ItemStack stack) { return stack.is(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) && isNetheriteArmor(stack); } - + public static boolean isNetheriteArmor(ItemStack stack) { - return stack.getItem() instanceof ArmorItem armorItem && armorItem.getMaterial() == ArmorMaterials.NETHERITE; + return stack.getItem() instanceof ArmorItem armorItem && armorItem.isFireResistant(); } public static void setBit(LivingEntity entity, EquipmentSlot slot) { diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java index f47d8c318f..d27d4cd265 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java @@ -6,6 +6,12 @@ import javax.annotation.Nullable; +import com.simibubi.create.AllSoundEvents; + +import net.minecraft.client.Minecraft; + +import net.minecraft.client.resources.sounds.SimpleSoundInstance; + import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableInt; @@ -584,8 +590,11 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { if (hoveredEntry != -1) { if (hoveredCheck) { editingIndex = -1; - if (hoveredEntry < currentEntries.size()) + if (hoveredEntry < currentEntries.size()) { currentEntries.get(hoveredEntry).checked ^= true; + if (currentEntries.get(hoveredEntry).checked == true) Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(AllSoundEvents.CLIPBOARD_CHECKMARK.getMainEvent(), 0.95f + (float)Math.random() * 0.05f)); + else Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(AllSoundEvents.CLIPBOARD_ERASE.getMainEvent(), 0.90f + (float)Math.random() * 0.2f)); + } sendIfEditingBlock(); return true; } diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java index 977de8a137..cb0296fe21 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java @@ -59,7 +59,8 @@ public static boolean drawCustomBlockSelection(LevelRenderer context, Camera cam if (!smartBE.getAllBehaviours() .stream() .anyMatch(b -> b instanceof ClipboardCloneable cc - && cc.writeToClipboard(new CompoundTag(), target.getDirection()))) + && cc.writeToClipboard(new CompoundTag(), target.getDirection())) + && !(smartBE instanceof ClipboardCloneable)) return false; VoxelShape shape = blockstate.getShape(mc.level, pos); diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java index 17bb2d95ea..a88495e253 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java @@ -9,6 +9,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.CreateClient; +import com.simibubi.create.compat.Mods; import com.simibubi.create.content.contraptions.IDisplayAssemblyExceptions; import com.simibubi.create.content.contraptions.piston.MechanicalPistonBlock; import com.simibubi.create.content.contraptions.piston.PistonExtensionPoleBlock; @@ -17,6 +18,7 @@ import com.simibubi.create.foundation.gui.RemovedGuiUtils; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.mixin.accessor.MouseHandlerAccessor; import com.simibubi.create.foundation.outliner.Outline; import com.simibubi.create.foundation.outliner.Outliner.OutlineEntry; import com.simibubi.create.foundation.utility.Color; @@ -28,6 +30,7 @@ import io.github.fabricators_of_create.porting_lib.util.client.GuiUtils; import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -88,11 +91,16 @@ public static void renderOverlay(PoseStack poseStack, float partialTicks, Window boolean goggleAddedInformation = false; boolean hoverAddedInformation = false; + ItemStack item = AllItems.GOGGLES.asStack(); + List tooltip = new ArrayList<>(); if (hasGoggleInformation && wearingGoggles) { + boolean isShifting = mc.player.isShiftKeyDown(); + IHaveGoggleInformation gte = (IHaveGoggleInformation) be; - goggleAddedInformation = gte.addToGoggleTooltip(tooltip, mc.player.isShiftKeyDown()); + goggleAddedInformation = gte.addToGoggleTooltip(tooltip, isShifting); + item = gte.getIcon(isShifting); } if (hasHoveringInformation) { @@ -146,9 +154,8 @@ public static void renderOverlay(PoseStack poseStack, float partialTicks, Window if (!tooltip.isEmpty()) tooltip.add(Components.immutableEmpty()); - tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() - .append(Lang.translateDirect("gui.goggles.pole_length")) - .append(Components.literal(" " + poles))); + Lang.translate("gui.goggles.pole_length").text(" " + poles) + .forGoggles(tooltip); } if (tooltip.isEmpty()) { @@ -197,14 +204,44 @@ public static void renderOverlay(PoseStack poseStack, float partialTicks, Window colorBorderBot.scaleAlpha(fade); } - GuiUtils.drawHoveringText(poseStack, tooltip, posX, posY, mc.getWindow().getGuiScaledWidth(), mc.getWindow().getGuiScaledHeight(), -1, colorBackground.getRGB(), - colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); - - ItemStack item = AllItems.GOGGLES.asStack(); GuiGameElement.of(item) .at(posX + 10, posY - 16, 450) .render(poseStack); + + if (!Mods.MODERNUI.isLoaded()) { + // default tooltip rendering when modernUI is not loaded + RemovedGuiUtils.drawHoveringText(poseStack, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), + colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); + + poseStack.popPose(); + + return; + } + + /* + * special handling for modernUI + * + * their tooltip handler causes the overlay to jiggle each frame, + * if the mouse is moving, guiScale is anything but 1 and exactPositioning is enabled + * + * this is a workaround to fix this behavior + */ + MouseHandler mouseHandler = Minecraft.getInstance().mouseHandler; + Window window = Minecraft.getInstance().getWindow(); + double guiScale = window.getGuiScale(); + double cursorX = mouseHandler.xpos(); + double cursorY = mouseHandler.ypos(); + ((MouseHandlerAccessor) mouseHandler).create$setXPos(Math.round(cursorX / guiScale) * guiScale); + ((MouseHandlerAccessor) mouseHandler).create$setYPos(Math.round(cursorY / guiScale) * guiScale); + + RemovedGuiUtils.drawHoveringText(poseStack, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), + colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); + + ((MouseHandlerAccessor) mouseHandler).create$setXPos(cursorX); + ((MouseHandlerAccessor) mouseHandler).create$setYPos(cursorY); + poseStack.popPose(); + } public static BlockPos proxiedOverlayPosition(Level level, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/equipment/goggles/IHaveGoggleInformation.java index ec7b8dfd6e..d233c22ee7 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/IHaveGoggleInformation.java @@ -2,6 +2,7 @@ import java.util.List; +import com.simibubi.create.AllItems; import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.LangBuilder; @@ -46,6 +47,17 @@ default boolean addToGoggleTooltip(List tooltip, boolean isPlayerSnea return false; } + /** + * this method will be called when looking at a BlockEntity that implemented this + * interface + *

+ * return the item of your choosing after checking for any logic you wish, and the goggle on the goggle + * tooltip will be replaced with the item you have returned + */ + default ItemStack getIcon(boolean isPlayerSneaking) { + return AllItems.GOGGLES.asStack(); + } + default boolean containedFluidTooltip(List tooltip, boolean isPlayerSneaking, Storage handler) { if (handler == null) return false; diff --git a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java index 73e61afc21..8abcca7343 100644 --- a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java @@ -22,6 +22,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; public interface IWrenchable { @@ -54,16 +56,26 @@ default InteractionResult onSneakWrenched(BlockState state, UseOnContext context Level world = context.getLevel(); BlockPos pos = context.getClickedPos(); Player player = context.getPlayer(); - if (world instanceof ServerLevel) { - if (player != null && !player.isCreative()) - Block.getDrops(state, (ServerLevel) world, pos, world.getBlockEntity(pos), player, context.getItemInHand()) - .forEach(itemStack -> { - player.getInventory().placeItemBackInInventory(itemStack); - }); - state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); - world.destroyBlock(pos, false); - playRemoveSound(world, pos); + + if (!(world instanceof ServerLevel serverLevel)) + return InteractionResult.SUCCESS; + + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, world.getBlockState(pos), player); + MinecraftForge.EVENT_BUS.post(event); + if (event.isCanceled()) + return InteractionResult.SUCCESS; + + if (player != null && !player.isCreative()) { + Block.getDrops(state, serverLevel, pos, world.getBlockEntity(pos), player, context.getItemInHand()) + .forEach(itemStack -> { + player.getInventory() + .placeItemBackInInventory(itemStack); + }); } + + state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY); + world.destroyBlock(pos, false); + playRemoveSound(world, pos); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java index 40f1a3a7cd..e44abae99e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java @@ -236,7 +236,7 @@ public static void setBlockEntityData(Level world, BlockPos pos, BlockState stat if (data != null && AllBlockTags.SAFE_NBT.matches(state)) { BlockEntity blockEntity = world.getBlockEntity(pos); if (blockEntity != null) { - data = NBTProcessors.process(blockEntity, data, !player.isCreative()); + data = NBTProcessors.process(state, blockEntity, data, !player.isCreative()); if (data == null) return; data.putInt("x", pos.getX()); diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java index 60bac6af61..73e987a218 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java @@ -172,7 +172,7 @@ public static boolean isOpenEnd(BlockGetter reader, BlockPos pos, Direction side if (PumpBlock.isPump(connectedState) && connectedState.getValue(PumpBlock.FACING) .getAxis() == side.getAxis()) return false; - if (VanillaFluidTargets.shouldPipesConnectTo(connectedState)) + if (VanillaFluidTargets.canProvideFluidWithoutCapability(connectedState)) return true; if (BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite()) && !AllBlockTags.FAN_TRANSPARENT.matches(connectedState)) diff --git a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java index 0995dd3a52..6271ab9a96 100644 --- a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java @@ -20,6 +20,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; @@ -78,8 +79,8 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack .getItemRenderer(); int count = (int) (Mth.log2((int) (itemStack.getCount()))) / 2; boolean renderUpright = BeltHelper.isItemUpright(itemStack); - boolean blockItem = itemRenderer.getModel(itemStack, null, null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(itemStack, null, null, 0); + boolean blockItem = bakedModel.isGui3d(); if (renderUpright) ms.translate(0, 3 / 32d, 0); @@ -117,7 +118,7 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack ms.scale(.5f, .5f, .5f); if (!blockItem && !renderUpright) msr.rotateX(90); - itemRenderer.renderStatic(itemStack, TransformType.FIXED, light, overlay, ms, buffer, 0); + itemRenderer.render(itemStack, TransformType.FIXED, false, ms, buffer, light, overlay, bakedModel); ms.popPose(); if (!renderUpright) { diff --git a/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java b/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java index 93b144393a..6098f607b6 100644 --- a/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java +++ b/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.content.processing.basin.BasinBlockEntity; import com.simibubi.create.foundation.utility.VecHelper; import io.github.fabricators_of_create.porting_lib.util.FluidStack; @@ -56,7 +57,7 @@ public void tick() { : 1 / 8f * (1 - ((Math.abs(age - (lifetime / 2)) / (1f * lifetime)))); if (age % 2 == 0) { - if (!AllBlocks.BASIN.has(level.getBlockState(basinPos))) { + if (!AllBlocks.BASIN.has(level.getBlockState(basinPos)) && !BasinBlock.isBasin(level, basinPos)) { remove(); return; } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java index 8511ea7689..b42be7a98a 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java @@ -183,7 +183,7 @@ public static boolean canConnectTo(BlockAndTintGetter world, BlockPos neighbourP Direction direction) { if (FluidPropagator.hasFluidCapability(world, neighbourPos, direction.getOpposite())) return true; - if (VanillaFluidTargets.shouldPipesConnectTo(neighbour)) + if (VanillaFluidTargets.canProvideFluidWithoutCapability(neighbour)) return true; FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, neighbourPos, FluidTransportBehaviour.TYPE); BracketedBlockEntityBehaviour bracket = diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/VanillaFluidTargets.java b/src/main/java/com/simibubi/create/content/fluids/pipes/VanillaFluidTargets.java index 22debf8b63..28f2e019be 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/VanillaFluidTargets.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/VanillaFluidTargets.java @@ -11,19 +11,23 @@ import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants; import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext; import net.minecraft.core.BlockPos; -import net.minecraft.tags.BlockTags; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LayeredCauldronBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.Fluids; public class VanillaFluidTargets { - public static boolean shouldPipesConnectTo(BlockState state) { + public static boolean canProvideFluidWithoutCapability(BlockState state) { if (state.hasProperty(BlockStateProperties.LEVEL_HONEY)) return true; - if (state.is(BlockTags.CAULDRONS)) + if (state.is(Blocks.CAULDRON)) + return true; + if (state.is(Blocks.LAVA_CAULDRON)) + return true; + if (state.is(Blocks.WATER_CAULDRON)) return true; return false; } @@ -36,13 +40,15 @@ public static FluidStack drainBlock(Level level, BlockPos pos, BlockState state, .getSource(), FluidConstants.BOTTLE); } - if (state.getBlock() == Blocks.LAVA_CAULDRON) { + if (state.is(Blocks.LAVA_CAULDRON)) { ((LevelExtensions) level).updateSnapshots(ctx); level.setBlock(pos, Blocks.CAULDRON.defaultBlockState(), 3); return new FluidStack(Fluids.LAVA, FluidConstants.BUCKET); } - if (state.getBlock() == Blocks.WATER_CAULDRON) { + if (state.is(Blocks.WATER_CAULDRON) && state.getBlock() instanceof LayeredCauldronBlock lcb) { + if (!lcb.isFull(state)) + return FluidStack.EMPTY; ((LevelExtensions) level).updateSnapshots(ctx); level.setBlock(pos, Blocks.CAULDRON.defaultBlockState(), 3); return new FluidStack(Fluids.WATER, FluidConstants.BUCKET); diff --git a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java index aa8a23916a..80d0c28301 100644 --- a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java @@ -27,9 +27,11 @@ import net.minecraft.world.effect.MobEffectUtil; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.PotionItem; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.item.alchemy.Potions; @@ -38,6 +40,11 @@ public class PotionFluidHandler { + public static boolean isPotionItem(ItemStack stack) { + return stack.getItem() instanceof PotionItem && !(stack.getContainerItem() + .getItem() instanceof BucketItem); + } + public static Pair emptyPotion(ItemStack stack, boolean simulate) { FluidStack fluid = getFluidFromPotionItem(stack); if (!simulate) diff --git a/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java b/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java index 15bd3957fa..cdd743e036 100644 --- a/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java +++ b/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java @@ -107,10 +107,16 @@ private static List createRecipes() { FluidStack outputFluid = null; for (ItemStack stack : supportedContainerStacks) { if (input.test(stack)) { - FluidStack inputFluid = PotionFluidHandler.getFluidFromPotionItem(stack); + ItemStack[] stacks = input.getItems(); + if (stacks.length == 0){ + continue; + } + FluidStack inputFluid = PotionFluidHandler.getFluidFromPotionItem(stacks[0]); + inputFluid.setAmount(1000); if (outputFluid == null) { outputFluid = PotionFluidHandler.getFluidFromPotionItem(output); } + outputFluid.setAmount(1000); mixingRecipes.add(createRecipe("potion_mixing_modded_" + recipeIndex++, ingredient, inputFluid, outputFluid)); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java index c39d10ba4f..1730621a6d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java @@ -12,6 +12,7 @@ import org.jetbrains.annotations.Nullable; +import com.simibubi.create.AllSoundEvents; import com.simibubi.create.api.behaviour.BlockSpoutingBehaviour; import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; import com.simibubi.create.content.fluids.FluidFX; @@ -111,6 +112,7 @@ protected ProcessingResult whenItemHeld(TransportedItemStack transported, if (processingTicks == -1) { processingTicks = FILLING_TIME; notifyUpdate(); + AllSoundEvents.SPOUTING.playOnServer(level, worldPosition, 0.75f, 0.9f + 0.2f * (float)Math.random()); return HOLD; } @@ -232,9 +234,10 @@ public void tick() { } } - if (processingTicks >= 8 && level.isClientSide) + if (processingTicks >= 8 && level.isClientSide) { spawnProcessingParticles(tank.getPrimaryTank() - .getRenderedFluid()); + .getRenderedFluid()); + } } protected void spawnProcessingParticles(FluidStack fluid) { diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java index 1cf8d80720..b1897c50c5 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java @@ -152,20 +152,13 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak if (!isActive()) return false; - Component indent = Components.literal(IHaveGoggleInformation.spacing); - Component indent2 = Components.literal(IHaveGoggleInformation.spacing + " "); - calcMinMaxForSize(boilerSize); - tooltip.add(indent.plainCopy() - .append( - Lang.translateDirect("boiler.status", getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)))); - tooltip.add(indent2.plainCopy() - .append(getSizeComponent(true, false))); - tooltip.add(indent2.plainCopy() - .append(getWaterComponent(true, false))); - tooltip.add(indent2.plainCopy() - .append(getHeatComponent(true, false))); + Lang.translate("boiler.status", getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)) + .forGoggles(tooltip); + Lang.text(getSizeComponent(true, false).getString()).forGoggles(tooltip, 1); + Lang.text(getWaterComponent(true, false).getString()).forGoggles(tooltip, 1); + Lang.text(getHeatComponent(true, false).getString()).forGoggles(tooltip, 1); if (attachedEngines == 0) return true; diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java index 6303f80a1f..366b6751e0 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java @@ -3,6 +3,7 @@ import static java.lang.Math.abs; import java.util.List; +import java.util.Objects; import javax.annotation.Nullable; @@ -49,6 +50,7 @@ public class FluidTankBlockEntity extends SmartBlockEntity implements IHaveGoggl protected BlockPos controller; protected BlockPos lastKnownPos; protected boolean updateConnectivity; + protected boolean updateCapability; protected boolean window; protected int luminosity; protected int width; @@ -68,6 +70,7 @@ public FluidTankBlockEntity(BlockEntityType type, BlockPos pos, BlockState st tankInventory = createInventory(); forceFluidLevelUpdate = true; updateConnectivity = false; + updateCapability = false; window = true; height = 1; width = 1; @@ -104,6 +107,10 @@ else if (!lastKnownPos.equals(worldPosition) && worldPosition != null) { return; } + if (updateCapability) { + updateCapability = false; + refreshCapability(); + } if (updateConnectivity) updateConnectivity(); if (fluidLevel != null) @@ -434,11 +441,12 @@ protected void read(CompoundTag compound, boolean clientPacket) { fluidLevel = LerpedFloat.linear() .startWithValue(getFillState()); + updateCapability = true; + if (!clientPacket) return; - boolean changeOfController = - controllerBefore == null ? controller != null : !controllerBefore.equals(controller); + boolean changeOfController = !Objects.equals(controllerBefore, controller); if (changeOfController || prevSize != width || prevHeight != height) { if (hasLevel()) level.sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), 16); diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java index 3d82129283..a826bfa89d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java @@ -168,7 +168,7 @@ protected Fluid search(Fluid fluid, List frontier, Set BiConsumer add, boolean searchDownward) throws ChunkNotLoadedException { Level world = getWorld(); int maxBlocks = maxBlocks(); - int maxRange = canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2; + int maxRange = maxRange(); int maxRangeSq = maxRange * maxRange; int i; @@ -225,7 +225,7 @@ protected Fluid search(Fluid fluid, List frontier, Set protected void playEffect(Level world, BlockPos pos, Fluid fluid, boolean fillSound) { if (fluid == null) return; - + BlockPos splooshPos = pos == null ? blockEntity.getBlockPos() : pos; FluidVariant variant = FluidVariant.of(fluid); diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java index 035abdbd92..32bce224c2 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java @@ -27,7 +27,7 @@ public class GenericItemEmptying { private static final Container WRAPPER = new ItemStackHandlerContainer(1); public static boolean canItemBeEmptied(Level world, ItemStack stack) { - if (stack.getItem() instanceof PotionItem) + if (PotionFluidHandler.isPotionItem(stack)) return true; WRAPPER.setItem(0, stack); @@ -42,7 +42,7 @@ public static Pair emptyItem(Level world, ItemStack stack FluidStack resultingFluid = FluidStack.EMPTY; ItemStack resultingItem = ItemStack.EMPTY; - if (stack.getItem() instanceof PotionItem) + if (PotionFluidHandler.isPotionItem(stack)) return PotionFluidHandler.emptyPotion(stack, simulate); WRAPPER.setItem(0, stack); diff --git a/src/main/java/com/simibubi/create/content/kinetics/BlockStressDefaults.java b/src/main/java/com/simibubi/create/content/kinetics/BlockStressDefaults.java index 16fb0cd2ea..3b1db16a8d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/BlockStressDefaults.java +++ b/src/main/java/com/simibubi/create/content/kinetics/BlockStressDefaults.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.kinetics; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import com.simibubi.create.foundation.utility.Couple; @@ -20,9 +20,9 @@ public class BlockStressDefaults { */ public static final int FORCED_UPDATE_VERSION = 2; - public static final Map DEFAULT_IMPACTS = new HashMap<>(); - public static final Map DEFAULT_CAPACITIES = new HashMap<>(); - public static final Map>> GENERATOR_SPEEDS = new HashMap<>(); + public static final Map DEFAULT_IMPACTS = new ConcurrentHashMap<>(); + public static final Map DEFAULT_CAPACITIES = new ConcurrentHashMap<>(); + public static final Map>> GENERATOR_SPEEDS = new ConcurrentHashMap<>(); public static void setDefaultImpact(ResourceLocation blockId, double impact) { DEFAULT_IMPACTS.put(blockId, impact); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java index b14beff979..1b1e0dfd39 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java @@ -32,6 +32,7 @@ import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.tunnel.BrassTunnelBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.blockEntity.behaviour.inventory.VersionedInventoryTrackerBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; import com.tterrag.registrate.fabric.EnvExecutor; @@ -74,6 +75,7 @@ public class BeltBlockEntity extends KineticBlockEntity implements ItemTransfera protected BlockPos controller; protected BeltInventory inventory; protected Storage itemHandler; + public VersionedInventoryTrackerBehaviour invVersionTracker; public CompoundTag trackerUpdateTag; @@ -99,6 +101,7 @@ public void addBehaviours(List behaviours) { .setInsertionHandler(this::tryInsertingFromSide).considerOccupiedWhen(this::isOccupied)); behaviours.add(new TransportedItemStackHandlerBehaviour(this, this::applyToAllItems) .withStackPlacement(this::getWorldPositionOf)); + behaviours.add(invVersionTracker = new VersionedInventoryTrackerBehaviour(this)); } @Override @@ -463,7 +466,7 @@ private boolean canInsertFrom(Direction side) { return false; return getMovementFacing() != side.getOpposite(); } - + private boolean isOccupied(Direction side) { BeltBlockEntity nextBeltController = getControllerBE(); if (nextBeltController == null) diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java index 99e760a6af..3f8c5aa3a6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java @@ -32,6 +32,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; @@ -196,14 +197,12 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, boolean slopeAlongX = beltFacing .getAxis() == Axis.X; + Minecraft mc = Minecraft.getInstance(); + ItemRenderer itemRenderer = mc.getItemRenderer(); boolean onContraption = be.getLevel() instanceof WrappedWorld; for (TransportedItemStack transported : be.getInventory() .getTransportedItems()) { - ms.pushPose(); - TransformStack.cast(ms) - .nudge(transported.angle); - float offset; float sideOffset; float verticalMovement; @@ -230,6 +229,18 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, .getAxis() == Axis.Z); float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0; + Vec3 itemPos = beltStartOffset.add( + be.getBlockPos().getX(), + be.getBlockPos().getY(), + be.getBlockPos().getZ()) + .add(offsetVec); + + if (this.shouldCullItem(itemPos)) { + continue; + } + + ms.pushPose(); + TransformStack.cast(ms).nudge(transported.angle); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); boolean alongX = beltFacing @@ -240,15 +251,17 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); int stackLight = onContraption ? light : getPackedLight(be, offset); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + boolean renderUpright = BeltHelper.isItemUpright(transported.stack); - boolean blockItem = itemRenderer.getModel(transported.stack, be.getLevel(), null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(transported.stack, be.getLevel(), null, 0); + boolean blockItem = bakedModel.isGui3d(); + Boolean sandwich = Mods.SANDWICHABLE.runIfInstalled(() -> () -> transported.stack.is(ItemsRegistry.SANDWICH)).orElse(Boolean.FALSE); if (sandwich) blockItem = false; - int count = (int) (Mth.log2((int) (transported.stack.getCount()))) / 2; + int count = 0; + if (mc.player.getEyePosition(1.0F).distanceTo(itemPos) < 16) + count = (int) (Mth.log2((int) (transported.stack.getCount()))) / 2; Random r = new Random(transported.angle); boolean slopeShadowOnly = renderUpright && onSlope; @@ -269,7 +282,7 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, } if (renderUpright) { - Entity renderViewEntity = Minecraft.getInstance().cameraEntity; + Entity renderViewEntity = mc.cameraEntity; if (renderViewEntity != null) { Vec3 positionVec = renderViewEntity.position(); Vec3 vectorForOffset = BeltHelper.getVectorForOffset(be, offset); @@ -294,7 +307,7 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, } ms.scale(.5f, .5f, .5f); - itemRenderer.renderStatic(null, transported.stack, TransformType.FIXED, false, ms, buffer, be.getLevel(), stackLight, overlay, 0); + itemRenderer.render(transported.stack, TransformType.FIXED, false, ms, buffer, stackLight, overlay, bakedModel); ms.popPose(); if (!renderUpright) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java index b6de576222..8e15322450 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java @@ -46,7 +46,6 @@ public static boolean checkForFunnels(BeltInventory beltInventory, TransportedIt float funnelEntry = segment + .5f; if (funnelState.getValue(BeltFunnelBlock.SHAPE) == Shape.EXTENDED) funnelEntry += .499f * (beltMovementPositive ? -1 : 1); - boolean hasCrossed = nextOffset > funnelEntry && beltMovementPositive || nextOffset < funnelEntry && !beltMovementPositive; if (!hasCrossed) @@ -74,6 +73,9 @@ public static boolean checkForFunnels(BeltInventory beltInventory, TransportedIt else continue; + if(beltInventory.belt.invVersionTracker.stillWaiting(inserting)) + continue; + int amountToExtract = funnelBE.getAmountToExtract(); ExtractionCountMode modeToExtract = funnelBE.getModeToExtract(); @@ -93,14 +95,18 @@ public static boolean checkForFunnels(BeltInventory beltInventory, TransportedIt return true; else continue; + else + beltInventory.belt.invVersionTracker.awaitNewVersion(inserting); } ItemStack remainder = inserting.insert(toInsert); - if (ItemStackUtil.equals(remainder, toInsert, false)) + if (ItemStackUtil.equals(remainder, toInsert, false)) { + beltInventory.belt.invVersionTracker.awaitNewVersion(inserting); if (blocking) return true; else continue; + } int notFilled = currentItem.stack.getCount() - toInsert.getCount(); if (!remainder.isEmpty()) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java index f8e0d7c008..2b93bd0174 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java @@ -391,6 +391,8 @@ public TransportedItemStack getStackAtOffset(int offset) { float min = offset; float max = offset + 1; for (TransportedItemStack stack : items) { + if (toRemove.contains(stack)) + continue; if (stack.beltPosition > max) continue; if (stack.beltPosition > min) diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/ItemHandlerBeltSegment.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/ItemHandlerBeltSegment.java index 266a4f71f5..1ab2509148 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/ItemHandlerBeltSegment.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/ItemHandlerBeltSegment.java @@ -67,6 +67,22 @@ public ItemStack getStack() { TransportedItemStack transported = this.beltInventory.getStackAtOffset(offset); if (transported == null) return ItemStack.EMPTY; - return transported.stack.isEmpty() ? ItemStack.EMPTY : transported.stack; + + amount = Math.min(amount, transported.stack.getCount()); + ItemStack extracted = simulate ? transported.stack.copy() + .split(amount) : transported.stack.split(amount); + if (!simulate) { + if (transported.stack.isEmpty()) + beltInventory.toRemove.add(transported); + else + beltInventory.belt.notifyUpdate(); + } + + return extracted; + } + + @Override + public int getSlotLimit(int slot) { + return Math.min(getStackInSlot(slot).getMaxStackSize(), 64); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java index c4a5bd4bd5..c6cc3a2206 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java @@ -107,6 +107,7 @@ public static ProcessingResult whenItemHeld(TransportedItemStack s, TransportedI public static void activate(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, DeployerBlockEntity blockEntity, Recipe recipe) { + List collect = RecipeApplier.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(transported.stack, 1), recipe) .stream() @@ -125,6 +126,7 @@ public static void activate(TransportedItemStack transported, TransportedItemSta .collect(Collectors.toList()); blockEntity.award(AllAdvancements.DEPLOYER); + TransportedItemStack left = transported.copy(); blockEntity.player.spawnedItemEffects = transported.stack.copy(); left.stack.shrink(1); @@ -139,8 +141,9 @@ public static void activate(TransportedItemStack transported, TransportedItemSta } ItemStack heldItem = blockEntity.player.getMainHandItem(); - boolean unbreakable = heldItem.hasTag() && heldItem.getTag() - .getBoolean("Unbreakable"); + boolean unbreakable = heldItem.hasTag() && ( + heldItem.getTag().getBoolean("Unbreakable") || + heldItem.getTag().getString("Modifier").equals("forbidden_arcanus:eternal")); // Forbidden Arcanus Compat, See Creators-of-Create#6220 boolean keepHeld = recipe instanceof ItemApplicationRecipe && ((ItemApplicationRecipe) recipe).shouldKeepHeldItem(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java index 300497544c..bbc580f6e5 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.UUID; import javax.annotation.Nullable; @@ -57,6 +58,7 @@ import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.ClipContext.Block; import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -570,8 +572,7 @@ public Recipe getRecipe(ItemStack stack) { ItemStack heldItemMainhand = player.getMainHandItem(); if (heldItemMainhand.getItem() instanceof SandPaperItem) { sandpaperInv.setItem(0, stack); - return AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, level) - .orElse(null); + return checkRecipe(AllRecipeTypes.SANDPAPER_POLISHING, sandpaperInv, level).orElse(null); } recipeInv.setItem(0, stack); @@ -581,13 +582,17 @@ public Recipe getRecipe(ItemStack stack) { event.addRecipe(() -> SequencedAssemblyRecipe.getRecipe(level, event.getInventory(), AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class), 100); - event.addRecipe(() -> AllRecipeTypes.DEPLOYING.find(event.getInventory(), level), 50); - event.addRecipe(() -> AllRecipeTypes.ITEM_APPLICATION.find(event.getInventory(), level), 50); + event.addRecipe(() -> checkRecipe(AllRecipeTypes.DEPLOYING, event.getInventory(), level), 50); + event.addRecipe(() -> checkRecipe(AllRecipeTypes.ITEM_APPLICATION, event.getInventory(), level), 50); DeployerRecipeSearchEvent.EVENT.invoker().handle(event); return event.getRecipe(); } + private Optional> checkRecipe(AllRecipeTypes type, RecipeWrapper inv, Level level) { + return type.find(inv, level).filter(AllRecipeTypes.CAN_BE_AUTOMATED); + } + public DeployerFakePlayer getPlayer() { return player; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java index 007c957953..e28e45720f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java @@ -141,7 +141,8 @@ public static int deployerKillsDoNotSpawnXP(int i, Player player) { return i; } - public static void entitiesDontRetaliate(LivingEntityEvents.ChangeTarget.ChangeTargetEvent event) { + @SubscribeEvent + public static void entitiesDontRetaliate(LivingChangeTargetEvent event) { if (!(event.getOriginalTarget() instanceof DeployerFakePlayer)) return; LivingEntity entityLiving = (LivingEntity) event.getEntity(); @@ -150,16 +151,12 @@ public static void entitiesDontRetaliate(LivingEntityEvents.ChangeTarget.ChangeT CKinetics.DeployerAggroSetting setting = AllConfigs.server().kinetics.ignoreDeployerAttacks.get(); - switch (setting) { - case ALL: - event.setCanceled(true); - break; - case CREEPERS: - if (mob instanceof Creeper) - event.setCanceled(true); - break; - case NONE: - default: + switch(setting) { + case ALL -> event.setCanceled(true); + case CREEPERS -> { + if (mob instanceof Creeper) + event.setCanceled(true); + } } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java index 67745f23df..cbccdd20c3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java @@ -300,6 +300,9 @@ && safeOnUse(clickedState, world, clickedPos, player, hand, result).consumesActi return; if (useItem == null) return; + if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem) + && !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext))) + return; // Reposition fire placement for convenience if (item == Items.FLINT_AND_STEEL) { @@ -322,9 +325,6 @@ && safeOnUse(clickedState, world, clickedPos, player, hand, result).consumesActi return; } - if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem) - && !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext))) - return; if (item == Items.ENDER_PEARL) return; if (AllItemTags.DEPLOYABLE_DRINK.matches(item)) diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java index 3ce20684ff..031f162ce7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java @@ -34,6 +34,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -89,9 +90,8 @@ protected void renderItem(DeployerBlockEntity be, float partialTicks, PoseStack .getItemRenderer(); TransformType transform = TransformType.NONE; - boolean isBlockItem = (be.heldItem.getItem() instanceof BlockItem) - && itemRenderer.getModel(be.heldItem, be.getLevel(), null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(be.heldItem, be.getLevel(), null, 0); + boolean isBlockItem = (be.heldItem.getItem() instanceof BlockItem) && bakedModel.isGui3d(); if (displayMode) { float scale = isBlockItem ? 1.25f : 1; @@ -106,7 +106,7 @@ protected void renderItem(DeployerBlockEntity be, float partialTicks, PoseStack transform = punching ? TransformType.THIRD_PERSON_RIGHT_HAND : TransformType.FIXED; } - itemRenderer.renderStatic(be.heldItem, transform, light, overlay, ms, buffer, 0); + itemRenderer.render(be.heldItem, transform, false, ms, buffer, light, overlay, bakedModel); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java index e3786e2e75..4f520cf663 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java @@ -22,10 +22,7 @@ public ItemApplicationRecipe(AllRecipeTypes type, ProcessingRecipeParams params) @Override public boolean matches(Container inv, Level p_77569_2_) { - return ingredients.get(0) - .test(inv.getItem(0)) - && ingredients.get(1) - .test(inv.getItem(1)); + return getProcessedItem().test(inv.getItem(0)) && getRequiredHeldItem().test(inv.getItem(1)); } @Override @@ -43,13 +40,13 @@ public boolean shouldKeepHeldItem() { } public Ingredient getRequiredHeldItem() { - if (ingredients.isEmpty()) + if (ingredients.size() < 2) throw new IllegalStateException("Item Application Recipe: " + id.toString() + " has no tool!"); return ingredients.get(1); } public Ingredient getProcessedItem() { - if (ingredients.size() < 2) + if (ingredients.isEmpty()) throw new IllegalStateException("Item Application Recipe: " + id.toString() + " has no ingredient!"); return ingredients.get(0); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java index 2f34bcddb5..58c3c641bb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java @@ -164,14 +164,16 @@ public int getPriority() { public boolean canProcess(ItemStack stack, Level level) { RECIPE_WRAPPER.setItem(0, stack); Optional smeltingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMELTING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.SMELTING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (smeltingRecipe.isPresent()) return true; RECIPE_WRAPPER.setItem(0, stack); Optional blastingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.BLASTING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.BLASTING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (blastingRecipe.isPresent()) return true; @@ -185,11 +187,14 @@ public boolean canProcess(ItemStack stack, Level level) { public List process(ItemStack stack, Level level) { RECIPE_WRAPPER.setItem(0, stack); Optional smokingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); RECIPE_WRAPPER.setItem(0, stack); Optional smeltingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMELTING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.SMELTING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); + if (!smeltingRecipe.isPresent()) { RECIPE_WRAPPER.setItem(0, stack); smeltingRecipe = level.getRecipeManager() @@ -392,7 +397,9 @@ public int getPriority() { public boolean canProcess(ItemStack stack, Level level) { RECIPE_WRAPPER.setItem(0, stack); Optional recipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); + return recipe.isPresent(); } @@ -401,7 +408,8 @@ public boolean canProcess(ItemStack stack, Level level) { public List process(ItemStack stack, Level level) { RECIPE_WRAPPER.setItem(0, stack); Optional smokingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level); + .getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level) + .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (smokingRecipe.isPresent()) return RecipeApplier.applyRecipeOn(stack, smokingRecipe.get()); diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java index ced8abf126..43f99519eb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java @@ -48,7 +48,7 @@ public void tick() { @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translateDirect("gui.gauge.info_header"))); + Lang.translate("gui.gauge.info_header").forGoggles(tooltip); return true; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java index 636d3d38ba..ae822ee5dc 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java @@ -23,6 +23,7 @@ import com.simibubi.create.content.logistics.funnel.FunnelBlock; import com.simibubi.create.content.logistics.funnel.FunnelBlockEntity; import com.simibubi.create.content.logistics.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; @@ -92,7 +93,7 @@ public BasinType(ResourceLocation id) { @Override public boolean canCreatePoint(Level level, BlockPos pos, BlockState state) { - return AllBlocks.BASIN.has(state); + return BasinBlock.isBasin(level, pos); } @Override @@ -178,7 +179,7 @@ public boolean canCreatePoint(Level level, BlockPos pos, BlockState state) { @Override public ArmInteractionPoint createPoint(Level level, BlockPos pos, BlockState state) { - return new TopFaceArmInteractionPoint(this, level, pos, state); + return new CrushingWheelPoint(this, level, pos, state); } } @@ -698,4 +699,15 @@ public ItemStack insert(ItemStack stack, TransactionContext ctx) { } } + public static class CrushingWheelPoint extends DepositOnlyArmInteractionPoint { + public CrushingWheelPoint(ArmInteractionPointType type, Level level, BlockPos pos, BlockState state) { + super(type, level, pos, state); + } + + @Override + protected Vec3 getInteractionPositionVector() { + return Vec3.atLowerCornerOf(pos) + .add(.5f, 1, .5f); + } + } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java index 429cefa253..284f9c31b5 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java @@ -19,6 +19,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -45,9 +46,8 @@ protected void renderSafe(ArmBlockEntity be, float pt, PoseStack ms, MultiBuffer ItemRenderer itemRenderer = Minecraft.getInstance() .getItemRenderer(); - boolean isBlockItem = - hasItem && (item.getItem() instanceof BlockItem) && itemRenderer.getModel(item, be.getLevel(), null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(item, be.getLevel(), null, 0); + boolean isBlockItem = hasItem && (item.getItem() instanceof BlockItem) && bakedModel.isGui3d(); VertexConsumer builder = buffer.getBuffer(be.goggles ? RenderType.cutout() : RenderType.solid()); BlockState blockState = be.getBlockState(); @@ -102,7 +102,7 @@ protected void renderSafe(ArmBlockEntity be, float pt, PoseStack ms, MultiBuffer .multiply(msLocal.last() .pose()); - itemRenderer.renderStatic(item, TransformType.FIXED, light, overlay, ms, buffer, 0); + itemRenderer.render(item, TransformType.FIXED, false, ms, buffer, light, overlay, bakedModel); ms.popPose(); } @@ -141,13 +141,13 @@ private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, .renderInto(ms, builder); transformHead(msr, headAngle); - + if (inverted) msr.rotateZ(180); - + claw.transform(msLocal) .renderInto(ms, builder); - + if (inverted) msr.rotateZ(180); diff --git a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlock.java b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlock.java index 62d9870844..c57147dbaf 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlock.java @@ -1,10 +1,10 @@ package com.simibubi.create.content.kinetics.mixer; import com.simibubi.create.AllBlockEntityTypes; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.KineticBlock; import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; @@ -28,7 +28,7 @@ public MechanicalMixerBlock(Properties properties) { @Override public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { - return !AllBlocks.BASIN.has(worldIn.getBlockState(pos.below())); + return !BasinBlock.isBasin(worldIn, pos.below()); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlock.java b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlock.java index a951421627..c77c407784 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlock.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.kinetics.press; import com.simibubi.create.AllBlockEntityTypes; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; @@ -37,7 +37,7 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, @Override public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { - return !AllBlocks.BASIN.has(worldIn.getBlockState(pos.below())); + return !BasinBlock.isBasin(worldIn, pos.below()); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java index b889b20048..60908d0779 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java @@ -3,11 +3,11 @@ import java.util.ArrayList; import java.util.List; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.kinetics.belt.behaviour.BeltProcessingBehaviour; import com.simibubi.create.content.kinetics.belt.behaviour.TransportedItemStackHandlerBehaviour; import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; @@ -145,7 +145,7 @@ public void tick() { if (BlockEntityBehaviour.get(level, worldPosition.below(2), TransportedItemStackHandlerBehaviour.TYPE) != null) return; - if (AllBlocks.BASIN.has(level.getBlockState(worldPosition.below(2)))) + if (BasinBlock.isBasin(level, worldPosition.below(2))) return; for (ItemEntity itemEntity : level.getEntitiesOfClass(ItemEntity.class, diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java index 88d87fd32f..b2ef264d14 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java @@ -469,7 +469,7 @@ public void onBlockBroken(BlockState stateToBreak) { } super.onBlockBroken(stateToBreak); - TreeCutter.findTree(level, breakingPos) + TreeCutter.findTree(level, breakingPos, stateToBreak) .destroyBlocks(level, null, this::dropItemFromCutTree); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java index 2f39e9f8b3..6162249eb7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java @@ -74,7 +74,7 @@ protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState b return; } - TreeCutter.findTree(context.world, pos) + TreeCutter.findTree(context.world, pos, brokenState) .destroyBlocks(context.world, null, (stack, dropPos) -> dropItemFromCutTree(context, stack, dropPos)); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java index 4e0eab6041..8ee31202a7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java @@ -134,7 +134,7 @@ protected void renderItems(SawBlockEntity be, float partialTicks, PoseStack ms, if (alongZ) ms.mulPose(Vector3f.YP.rotationDegrees(90)); ms.mulPose(Vector3f.XP.rotationDegrees(90)); - itemRenderer.renderStatic(stack, ItemTransforms.TransformType.FIXED, light, overlay, ms, buffer, 0); + itemRenderer.render(stack, ItemTransforms.TransformType.FIXED, false, ms, buffer, light, overlay, modelWithOverrides); break; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java index a2dea6c3b8..82cd409ad6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java @@ -5,6 +5,8 @@ import java.util.Optional; import java.util.Random; +import javax.annotation.Nullable; + import com.jozufozu.flywheel.core.StitchedSprite; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllPartialModels; @@ -40,8 +42,6 @@ public class WaterWheelRenderer extends Kinetic public static final StitchedSprite OAK_LOG_TEMPLATE = new StitchedSprite(new ResourceLocation("block/oak_log")); public static final StitchedSprite OAK_LOG_TOP_TEMPLATE = new StitchedSprite(new ResourceLocation("block/oak_log_top")); - private static final String[] LOG_SUFFIXES = new String[] { "_log", "_stem" }; - protected final boolean large; public WaterWheelRenderer(Context context, boolean large) { @@ -94,28 +94,48 @@ public static BakedModel generateModel(WaterWheelModelKey key) { public static BakedModel generateModel(BakedModel template, BlockState planksBlockState) { Block planksBlock = planksBlockState.getBlock(); ResourceLocation id = RegisteredObjects.getKeyOrThrow(planksBlock); - String path = id.getPath(); + String wood = plankStateToWoodName(planksBlockState); - if (path.endsWith("_planks")) { - String namespace = id.getNamespace(); - String wood = path.substring(0, path.length() - 7); - BlockState logBlockState = getLogBlockState(namespace, wood); + if (wood == null) + return BakedModelHelper.generateModel(template, sprite -> null); - Map map = new Reference2ReferenceOpenHashMap<>(); - map.put(OAK_PLANKS_TEMPLATE.get(), getSpriteOnSide(planksBlockState, Direction.UP)); - map.put(OAK_LOG_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.SOUTH)); - map.put(OAK_LOG_TOP_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.UP)); + String namespace = id.getNamespace(); + BlockState logBlockState = getLogBlockState(namespace, wood); - return BakedModelHelper.generateModel(template, map::get); - } + Map map = new Reference2ReferenceOpenHashMap<>(); + map.put(OAK_PLANKS_TEMPLATE.get(), getSpriteOnSide(planksBlockState, Direction.UP)); + map.put(OAK_LOG_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.SOUTH)); + map.put(OAK_LOG_TOP_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.UP)); - return BakedModelHelper.generateModel(template, sprite -> null); + return BakedModelHelper.generateModel(template, map::get); } + @Nullable + private static String plankStateToWoodName(BlockState planksBlockState) { + Block planksBlock = planksBlockState.getBlock(); + ResourceLocation id = RegisteredObjects.getKeyOrThrow(planksBlock); + String path = id.getPath(); + + if (path.endsWith("_planks")) // Covers most wood types + return path.substring(0, path.length() - 7); + + if (path.contains("wood/planks/")) // TerraFirmaCraft + return path.substring(12); + + return null; + } + + private static final String[] LOG_LOCATIONS = new String[] { + + "x_log", "x_stem", // Covers most wood types + "wood/log/x" // TerraFirmaCraft + + }; + private static BlockState getLogBlockState(String namespace, String wood) { - for (String suffix : LOG_SUFFIXES) { + for (String location : LOG_LOCATIONS) { Optional state = - Registry.BLOCK.getHolder(ResourceKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(namespace, wood + suffix))) + Registry.BLOCK.getHolder(ResourceKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(namespace, location.replace("x", wood)))) .map(Holder::value) .map(Block::defaultBlockState); if (state.isPresent()) diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java index 50e94591fd..b15214802e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java @@ -205,4 +205,8 @@ public BlockPos getInformationSource(Level level, BlockPos pos, BlockState state return stillValid(level, pos, state, false) ? getMaster(level, pos, state) : pos; } + @Override + public boolean isFlammable(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { + return false; + } } diff --git a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java index a7e2743a7f..c0e9fc9d98 100644 --- a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java +++ b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java @@ -137,7 +137,7 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { BlockPos.MutableBlockPos testPos = new BlockPos.MutableBlockPos(entityX, Math.min(Mth.floor(entity.getY()), localWorldHeight), entityZ); - while (testPos.getY() > 0) { + while (testPos.getY() > minHeight) { testPos.move(Direction.DOWN); BlockState state = world.getBlockState(testPos); if (state.getLightBlock(world, testPos) >= 15 && state.getBlock() != Blocks.BEDROCK) diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java index 33f18d0ce0..e8a52cfca3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java @@ -234,7 +234,7 @@ private void findEntities(float itemSpeed) { // airCurrent.findEntities(); if (bottomPullDistance <= 0 && !getItem().isEmpty() || itemSpeed <= 0 || level == null || level.isClientSide) return; - if (!canCollectItemsFromBelow()) + if (!canActivate()) return; Vec3 center = VecHelper.getCenterOf(worldPosition); AABB searchArea = new AABB(center.add(0, -bottomPullDistance - 0.5, 0), center.add(0, -0.5, 0)).inflate(.45f); @@ -314,7 +314,7 @@ private void spawnParticles(float itemMotion) { if (!up && BlockHelper.noCollisionInSpace(level, worldPosition.below())) spawnAirFlow(0, -1, absMotion, .5f); - if (up && canCollectItemsFromBelow() && bottomPullDistance > 0) { + if (up && canActivate() && bottomPullDistance > 0) { spawnAirFlow(-bottomPullDistance, 0, absMotion, 2); spawnAirFlow(-bottomPullDistance, 0, absMotion, 2); } @@ -347,6 +347,8 @@ private void handleInputFromBelow() { private void handleInput(@Nullable Storage inv, float startLocation) { if (inv == null) return; + if (!canActivate()) + return; if (invVersionTracker.stillWaiting(inv)) return; Predicate canAccept = this::canAcceptItem; @@ -368,7 +370,7 @@ private boolean handleDownwardOutput(boolean simulate) { ChuteBlockEntity targetChute = getTargetChute(blockState); Direction direction = AbstractChuteBlock.getChuteFacing(blockState); - if (level == null || direction == null || !this.canOutputItems()) + if (level == null || direction == null || !this.canActivate()) return false; Storage inv = grabCapability(Direction.DOWN); if (inv != null) { @@ -433,7 +435,7 @@ private boolean handleDownwardOutput(boolean simulate) { private boolean handleUpwardOutput(boolean simulate) { BlockState stateAbove = level.getBlockState(worldPosition.above()); - if (level == null || !this.canOutputItems()) + if (level == null || !this.canActivate()) return false; if (AbstractChuteBlock.isOpenChute(getBlockState())) { @@ -517,11 +519,7 @@ protected ExtractionCountMode getExtractionMode() { return ExtractionCountMode.UPTO; } - protected boolean canCollectItemsFromBelow() { - return true; - } - - protected boolean canOutputItems() { + protected boolean canActivate() { return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java index 14fbec7adb..1fae21e829 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java @@ -22,7 +22,7 @@ public SmartChuteBlockEntity(BlockEntityType type, BlockPos pos, BlockState s @Override protected boolean canAcceptItem(ItemStack stack) { - return super.canAcceptItem(stack) && canCollectItemsFromBelow() && filtering.test(stack); + return super.canAcceptItem(stack) && canActivate() && filtering.test(stack); } @Override @@ -37,17 +37,11 @@ protected ExtractionCountMode getExtractionMode() { } @Override - protected boolean canCollectItemsFromBelow() { + protected boolean canActivate() { BlockState blockState = getBlockState(); return blockState.hasProperty(SmartChuteBlock.POWERED) && !blockState.getValue(SmartChuteBlock.POWERED); } - @Override - protected boolean canOutputItems() { - BlockState blockState = getBlockState(); - return blockState.hasProperty(SmartChuteBlock.POWERED) && !blockState.getValue(SmartChuteBlock.POWERED); - } - @Override public void addBehaviours(List behaviours) { behaviours.add(filtering = diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java b/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java index 5f830e91d9..3d53879fa7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java @@ -16,6 +16,7 @@ import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -104,8 +105,8 @@ public static void renderItem(PoseStack ms, MultiBufferSource buffer, int light, TransformStack msr = TransformStack.cast(ms); int count = (int) (Mth.log2((int) (itemStack.getCount()))) / 2; boolean renderUpright = BeltHelper.isItemUpright(itemStack); - boolean blockItem = itemRenderer.getModel(itemStack, null, null, 0) - .isGui3d(); + BakedModel bakedModel = itemRenderer.getModel(itemStack, null, null, 0); + boolean blockItem = bakedModel.isGui3d(); ms.pushPose(); msr.rotateY(angle); @@ -131,7 +132,7 @@ public static void renderItem(PoseStack ms, MultiBufferSource buffer, int light, ms.translate(0, -3 / 16f, 0); msr.rotateX(90); } - itemRenderer.renderStatic(itemStack, TransformType.FIXED, light, overlay, ms, buffer, 0); + itemRenderer.render(itemStack, TransformType.FIXED, false, ms, buffer, light, overlay, bakedModel); ms.popPose(); if (!renderUpright) { diff --git a/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java b/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java index f4908a50cc..b070a88d0c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java +++ b/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java @@ -130,7 +130,7 @@ protected ListFilterItemStack(ItemStack filter) { containedItems.add(FilterItemStack.of(stackInSlot)); } - shouldRespectNBT = !defaults ? false + shouldRespectNBT = defaults ? false : filter.getTag() .getBoolean("RespectNBT"); isBlacklist = defaults ? false diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java index f3c9aa8e9c..b7b9869465 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java @@ -75,8 +75,7 @@ private void extract(MovementContext context, BlockPos pos) { FilterItemStack filter = context.getFilterFromBE(); int filterAmount = context.blockEntityData.getInt("FilterAmount"); boolean upTo = context.blockEntityData.getBoolean("UpTo"); - if (filterAmount <= 0) - filterAmount = hasFilter ? 64 : 1; + filterAmount = hasFilter ? filterAmount : 1; ItemStack extract = ItemHelper.extract(context.contraption.getSharedInventory(), s -> filter.test(world, s), diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java index 10885eb592..50035015ef 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java @@ -805,20 +805,13 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak if (allStacks.isEmpty()) return false; - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.brass_tunnel.contains")) - .withStyle(ChatFormatting.WHITE)); + Lang.translate("tooltip.brass_tunnel.contains").style(ChatFormatting.WHITE).forGoggles(tooltip); for (ItemStack item : allStacks) { - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", - Components.translatable(item.getDescriptionId()) - .getString(), - item.getCount())) - .withStyle(ChatFormatting.GRAY)); + Lang.translate("tooltip.brass_tunnel.contains_entry", + Components.translatable(item.getDescriptionId()).getString(), item.getCount()) + .style(ChatFormatting.GRAY).forGoggles(tooltip); } - tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.brass_tunnel.retrieve")) - .withStyle(ChatFormatting.DARK_GRAY)); + Lang.translate("tooltip.brass_tunnel.retrieve").style(ChatFormatting.DARK_GRAY).forGoggles(tooltip); return true; } diff --git a/src/main/java/com/simibubi/create/content/processing/AssemblyOperatorBlockItem.java b/src/main/java/com/simibubi/create/content/processing/AssemblyOperatorBlockItem.java index 0538cb5f63..40bc2c7d73 100644 --- a/src/main/java/com/simibubi/create/content/processing/AssemblyOperatorBlockItem.java +++ b/src/main/java/com/simibubi/create/content/processing/AssemblyOperatorBlockItem.java @@ -3,12 +3,15 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.kinetics.belt.BeltBlock; import com.simibubi.create.content.kinetics.belt.BeltSlope; +import com.simibubi.create.content.processing.basin.BasinBlock; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -25,11 +28,11 @@ public InteractionResult place(BlockPlaceContext context) { BlockPos placedOnPos = context.getClickedPos() .relative(context.getClickedFace() .getOpposite()); - BlockState placedOnState = context.getLevel() + Level level = context.getLevel(); + BlockState placedOnState = level .getBlockState(placedOnPos); - if (operatesOn(placedOnState) && context.getClickedFace() == Direction.UP) { - if (context.getLevel() - .getBlockState(placedOnPos.above(2)) + if (operatesOn(level, placedOnPos, placedOnState) && context.getClickedFace() == Direction.UP) { + if (level.getBlockState(placedOnPos.above(2)) .getMaterial() .isReplaceable()) context = adjustContext(context, placedOnPos); @@ -45,10 +48,10 @@ protected BlockPlaceContext adjustContext(BlockPlaceContext context, BlockPos pl return new AssemblyOperatorUseContext(context.getLevel(), context.getPlayer(), context.getHand(), context.getItemInHand(), new BlockHitResult(new Vec3((double)up.getX() + 0.5D + (double) Direction.UP.getStepX() * 0.5D, (double)up.getY() + 0.5D + (double) Direction.UP.getStepY() * 0.5D, (double)up.getZ() + 0.5D + (double) Direction.UP.getStepZ() * 0.5D), Direction.UP, up, false)); } - protected boolean operatesOn(BlockState placedOnState) { + protected boolean operatesOn(LevelReader world, BlockPos pos, BlockState placedOnState) { if (AllBlocks.BELT.has(placedOnState)) return placedOnState.getValue(BeltBlock.SLOPE) == BeltSlope.HORIZONTAL; - return AllBlocks.BASIN.has(placedOnState) || AllBlocks.DEPOT.has(placedOnState) || AllBlocks.WEIGHTED_EJECTOR.has(placedOnState); + return BasinBlock.isBasin(world, pos) || AllBlocks.DEPOT.has(placedOnState) || AllBlocks.WEIGHTED_EJECTOR.has(placedOnState); } } diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java index 2ba172221f..4a311dada0 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java @@ -3,7 +3,6 @@ import java.util.List; import com.simibubi.create.AllBlockEntityTypes; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.Create; import com.simibubi.create.content.equipment.wrench.IWrenchable; @@ -63,6 +62,10 @@ public BasinBlock(Properties p_i48440_1_) { protected void createBlockStateDefinition(Builder p_206840_1_) { super.createBlockStateDefinition(p_206840_1_.add(FACING)); } + + public static boolean isBasin(LevelReader world, BlockPos pos) { + return world.getBlockEntity(pos) instanceof BasinBlockEntity; + } @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { @@ -122,7 +125,8 @@ public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Play @Override public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { super.updateEntityAfterFallOn(worldIn, entityIn); - if (!AllBlocks.BASIN.has(worldIn.getBlockState(entityIn.blockPosition()))) + if (!worldIn.getBlockState(entityIn.blockPosition()) + .is(this)) return; if (!(entityIn instanceof ItemEntity)) return; diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java index b8f25d2bc2..db93f8fbeb 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java @@ -426,6 +426,9 @@ private void tryClearingSpoutputOverflow() { inserter = BlockEntityBehaviour.get(level, be.getBlockPos(), InvManipulationBehaviour.TYPE); } + if (be instanceof BasinBlockEntity) + filter = null; // Do not test spout outputs against the recipe filter + Storage targetInv = getItemSpoutputOutput(direction); if (targetInv == null && inserter != null) targetInv = inserter.getInventory(); @@ -447,21 +450,24 @@ private void tryClearingSpoutputOverflow() { continue; } - if (targetInv == null) - break; - try (Transaction nested = t.openNested()) { - long inserted = targetInv.insert(ItemVariant.of(itemStack), itemStack.getCount(), nested); - if (itemStack.getCount() != inserted) - continue; - if (filter != null && !filter.test(itemStack)) - continue; + if (targetInv == null) + break; - update = true; - iterator.remove(); - visualizedOutputItems.add(LongAttached.withZero(itemStack)); - nested.commit(); - } - } + ItemStack remainder = ItemHandlerHelper.insertItemStacked(targetInv, itemStack, true); + if (remainder.getCount() == itemStack.getCount()) + continue; + if (filter != null && !filter.test(itemStack)) + continue; + + visualizedOutputItems.add(IntAttached.withZero(itemStack)); + update = true; + + remainder = ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), false); + if (remainder.isEmpty()) + iterator.remove(); + else + itemStack.setCount(remainder.getCount()); + } for (Iterator iterator = spoutputFluidBuffer.iterator(); iterator.hasNext();) { FluidStack fluidStack = iterator.next(); @@ -591,9 +597,9 @@ private boolean acceptOutputsInner(List outputItems, List return false; } - for (ItemStack itemStack : outputItems) { - spoutputBuffer.add(itemStack.copy()); - } + for (ItemStack itemStack : outputItems) + if (!itemStack.isEmpty()) + spoutputBuffer.add(itemStack.copy()); if (!externalTankNotPresent) for (FluidStack fluidStack : outputFluids) spoutputFluidBuffer.add(fluidStack.copy()); @@ -651,7 +657,9 @@ public void readOnlyItems(CompoundTag compound) { public static HeatLevel getHeatLevelOf(BlockState state) { if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL)) return state.getValue(BlazeBurnerBlock.HEAT_LEVEL); - return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; + return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state) + ? HeatLevel.SMOULDERING + : HeatLevel.NONE; } public Couple getTanks() { diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinInventory.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinInventory.java index e0156bc6e5..bec24a9fd2 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinInventory.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinInventory.java @@ -26,27 +26,25 @@ public SmartInventory whenContentsChanged(Runnable updateCallback) { } @Override - public long insert(ItemVariant resource, long maxAmount, TransactionContext transaction) { - StoragePreconditions.notBlankNotNegative(resource, maxAmount); - if (!insertionAllowed) - return 0; - // Only insert if no other slot already has a stack of this item - try (Transaction test = transaction.openNested()) { - long contained = this.extract(resource, Long.MAX_VALUE, test); - if (contained != 0) { - // already have this item. can we stack? - long maxStackSize = Math.min(stackSize, resource.getItem().getMaxStackSize()); - long space = Math.max(0, maxStackSize - contained); - if (space <= 0) { - // nope. - return 0; - } else { - // yes! - maxAmount = Math.min(space, maxAmount); - } - } + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + int firstFreeSlot = -1; + + for (int i = 0; i < getSlots(); i++) { + // Only insert if no other slot already has a stack of this item + if (i != slot && ItemHandlerHelper.canItemStacksStack(stack, inv.getStackInSlot(i))) + return stack; + if (inv.getStackInSlot(i) + .isEmpty() && firstFreeSlot == -1) + firstFreeSlot = i; } - return super.insert(resource, maxAmount, transaction); + + // Only insert if this is the first empty slot, prevents overfilling in the + // simulation pass + if (inv.getStackInSlot(slot) + .isEmpty() && firstFreeSlot != slot) + return stack; + + return super.insertItem(slot, stack, simulate); } @Override diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java index 135e2a897c..cc4e8e1923 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java @@ -137,13 +137,21 @@ private static boolean apply(BasinBlockEntity basin, Recipe recipe, boolean t if (recipe instanceof BasinRecipe basinRecipe) { recipeOutputItems.addAll(basinRecipe.rollResults()); - recipeOutputFluids.addAll(basinRecipe.getFluidResults()); - recipeOutputItems.addAll(basinRecipe.getRemainingItems(basin.getInputInventory())); + for (FluidStack fluidStack : basinRecipe.getFluidResults()) + if (!fluidStack.isEmpty()) + recipeOutputFluids.add(fluidStack); + for (ItemStack stack : basinRecipe.getRemainingItems(basin.getInputInventory())) + if (!stack.isEmpty()) + recipeOutputItems.add(stack); } else { recipeOutputItems.add(recipe.getResultItem()); - if (recipe instanceof CraftingRecipe craftingRecipe) { - recipeOutputItems.addAll(craftingRecipe.getRemainingItems(new DummyCraftingContainer(consumedItems))); + if (recipe instanceof CraftingRecipe craftingRecipe) { + for (ItemStack stack : craftingRecipe + .getRemainingItems(new DummyCraftingContainer(availableItems, extractedItemsFromSlot))) + if (!stack.isEmpty()) + recipeOutputItems.add(stack); + } } } diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java index 279dc3e3c3..020df1d4ba 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java @@ -3,10 +3,10 @@ import java.util.List; import java.util.Random; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.fluids.tank.FluidTankBlock; +import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; @@ -271,7 +271,7 @@ public boolean isValidBlockAbove() { if (isVirtual()) return false; BlockState blockState = level.getBlockState(worldPosition.above()); - return AllBlocks.BASIN.has(blockState) || blockState.getBlock() instanceof FluidTankBlock; + return BasinBlock.isBasin(level, worldPosition.above()) || blockState.getBlock() instanceof FluidTankBlock; } protected void playSound() { diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java index a90f89f142..5f635e2390 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java @@ -182,7 +182,9 @@ public ProcessingRecipeBuilder output(float chance, ItemStack output) { public ProcessingRecipeBuilder output(float chance, Mods mod, String id, int amount) { return output(new ProcessingOutput(Pair.of(mod.asResource(id), amount), chance)); } - +public ProcessingRecipeBuilder output(Mods mod, String id) { + return output(1, mod.asResource(id), 1); + } public ProcessingRecipeBuilder output(float chance, ResourceLocation registryName, int amount) { return output(new ProcessingOutput(Pair.of(registryName, amount), chance)); } diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java index 3902009ffd..53b0c6b837 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java @@ -79,7 +79,7 @@ public void changeState(boolean back) { @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - tooltip.add(componentSpacing.plainCopy().append(Lang.translateDirect("tooltip.analogStrength", this.state))); + Lang.translate("tooltip.analogStrength", this.state).forGoggles(tooltip); return true; } diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java index 661b7c37af..67e5a8116a 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java @@ -67,7 +67,7 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } public static void notifyGatherers(LevelAccessor level, BlockPos pos) { - forEachAttachedGatherer(level, pos, DisplayLinkBlockEntity::updateGatheredData); + forEachAttachedGatherer(level, pos, DisplayLinkBlockEntity::tickSource); } @SuppressWarnings("unchecked") diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java index 6331aa56bc..f5a8489769 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java @@ -28,7 +28,7 @@ public class LecternControllerBlockEntity extends SmartBlockEntity { - private ItemStack controller; + private ItemStack controller = ItemStack.EMPTY; private UUID user; private UUID prevUser; // used only on client private boolean deactivatedThisTick; // used only on server @@ -161,9 +161,9 @@ public void dropController(BlockState state) { stopUsing((Player) playerEntity); Direction dir = state.getValue(LecternControllerBlock.FACING); - double x = worldPosition.getX() + 0.5 + 0.25*dir.getStepX(); + double x = worldPosition.getX() + 0.5 + 0.25 * dir.getStepX(); double y = worldPosition.getY() + 1; - double z = worldPosition.getZ() + 0.5 + 0.25*dir.getStepZ(); + double z = worldPosition.getZ() + 0.5 + 0.25 * dir.getStepZ(); ItemEntity itementity = new ItemEntity(level, x, y, z, controller.copy()); itementity.setDefaultPickUpDelay(); level.addFreshEntity(itementity); @@ -172,8 +172,8 @@ public void dropController(BlockState state) { public static boolean playerInRange(Player player, Level world, BlockPos pos) { //double modifier = world.isRemote ? 0 : 1.0; - double reach = 0.4*ReachEntityAttributes.getReachDistance(player, player.isCreative() ? 5 : 4.5);// + modifier; - return player.distanceToSqr(Vec3.atCenterOf(pos)) < reach*reach; + double reach = 0.4 * ReachEntityAttributes.getReachDistance(player, player.isCreative() ? 5 : 4.5);// + modifier; + return player.distanceToSqr(Vec3.atCenterOf(pos)) < reach * reach; } } diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java index a0e12da4ef..3399191ddf 100644 --- a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java @@ -2,6 +2,10 @@ import java.util.List; +import com.simibubi.create.compat.thresholdSwitch.FunctionalStorage; +import com.simibubi.create.compat.thresholdSwitch.SophisticatedStorage; +import com.simibubi.create.compat.thresholdSwitch.StorageDrawers; +import com.simibubi.create.compat.thresholdSwitch.ThresholdSwitchCompat; import com.simibubi.create.content.redstone.DirectedDirectionalBlock; import com.simibubi.create.content.redstone.FilteredDetectorFilterSlot; import com.simibubi.create.content.redstone.displayLink.DisplayLinkBlock; @@ -44,6 +48,12 @@ public class ThresholdSwitchBlockEntity extends SmartBlockEntity { private TankManipulationBehaviour observedTank; private VersionedInventoryTrackerBehaviour invVersionTracker; + private static final List COMPAT = List.of( + new FunctionalStorage(), + new SophisticatedStorage(), + new StorageDrawers() + ); + public ThresholdSwitchBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); onWhenAbove = .75f; @@ -108,8 +118,6 @@ public void updateCurrentLevel() { if (targetBlockEntity instanceof ThresholdSwitchObservable observable) { currentLevel = observable.getPercent() / 100f; -// } else if (StorageDrawers.isDrawer(targetBlockEntity) && observedInventory.hasInventory()) { -// currentLevel = StorageDrawers.getTrueFillLevel(observedInventory.getInventory(), filtering); } else if (observedInventory.hasInventory() || observedTank.hasInventory()) { if (observedInventory.hasInventory()) { @@ -121,17 +129,24 @@ public void updateCurrentLevel() { } else { invVersionTracker.awaitNewVersion(inv); - try (Transaction t = TransferUtil.getTransaction()) { - for (StorageView view : inv.iterable(t)) { - long space = view.getCapacity(); - long count = view.getAmount(); - if (space == 0) - continue; - - totalSpace += 1; - if (filtering.test(view.getResource().toStack())) - occupied += count * (1f / space); - } + for (int slot = 0; slot < inv.getSlots(); slot++) { + ItemStack stackInSlot = inv.getStackInSlot(slot); + + int finalSlot = slot; + long space = COMPAT + .stream() + .filter(compat -> compat.isFromThisMod(targetBlockEntity)) + .map(compat -> compat.getSpaceInSlot(inv, finalSlot)) + .findFirst() + .orElseGet(() -> (long) Math.min(stackInSlot.getMaxStackSize(), inv.getSlotLimit(finalSlot))); + + int count = stackInSlot.getCount(); + if (space == 0) + continue; + + totalSpace += 1; + if (filtering.test(stackInSlot)) + occupied += count * (1f / space); } } } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java index 501e4be185..56e6bb85ae 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java @@ -176,6 +176,8 @@ private boolean onItemUse(Player player, InteractionHand hand) { if (!player.getItemInHand(hand) .hasTag()) return false; + if (!player.level.isClientSide()) + return true; EnvExecutor.runWhenOn(EnvType.CLIENT, () -> this::displayBlueprintScreen); return true; } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java index aea2d68394..2338123d24 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java @@ -36,7 +36,7 @@ public StructureTemplate.StructureBlockInfo processBlock(LevelReader world, Bloc if (info.nbt != null && info.state.hasBlockEntity()) { BlockEntity be = ((EntityBlock) info.state.getBlock()).newBlockEntity(info.pos, info.state); if (be != null) { - CompoundTag nbt = NBTProcessors.process(be, info.nbt, false); + CompoundTag nbt = NBTProcessors.process(info.state, be, info.nbt, false); if (nbt != info.nbt) return new StructureTemplate.StructureBlockInfo(info.pos, info.state, nbt); } diff --git a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java index 30ad8ec620..107280fc81 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java @@ -11,7 +11,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Stream; import com.simibubi.create.AllBlocks; @@ -25,6 +24,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.CSchematics; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.core.BlockPos; @@ -64,21 +64,25 @@ public String getSchematicPath() { return "schematics/uploaded"; } + private final ObjectArrayList deadEntries = ObjectArrayList.of(); + public void tick() { // Detect Timed out Uploads - Set deadEntries = new HashSet<>(); + int timeout = getConfig().schematicIdleTimeout.get(); for (String upload : activeUploads.keySet()) { SchematicUploadEntry entry = activeUploads.get(upload); - if (entry.idleTime++ > getConfig().schematicIdleTimeout.get()) { + if (entry.idleTime++ > timeout) { Create.LOGGER.warn("Schematic Upload timed out: " + upload); deadEntries.add(upload); } - } // Remove Timed out Uploads - deadEntries.forEach(this::cancelUpload); + for (String toRemove : deadEntries) { + this.cancelUpload(toRemove); + } + deadEntries.clear(); } public void shutdown() { diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java index 5ab76a2585..ab5ef6fece 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java @@ -95,7 +95,7 @@ public class SchematicannonBlockEntity extends SmartBlockEntity implements MenuP public MaterialChecklist checklist; // Gui information - public float fuelLevel; + public int remainingFuel; public float bookPrintingProgress; public float schematicProgress; public String statusMsg; @@ -162,7 +162,7 @@ protected void read(CompoundTag compound, boolean clientPacket) { statusMsg = compound.getString("Status"); schematicProgress = compound.getFloat("Progress"); bookPrintingProgress = compound.getFloat("PaperProgress"); - fuelLevel = compound.getFloat("Fuel"); + remainingFuel = compound.getInt("RemainingFuel"); String stateString = compound.getString("State"); state = stateString.isEmpty() ? State.STOPPED : State.valueOf(compound.getString("State")); blocksPlaced = compound.getInt("AmountPlaced"); @@ -236,7 +236,7 @@ public void write(CompoundTag compound, boolean clientPacket) { // Gui information compound.putFloat("Progress", schematicProgress); compound.putFloat("PaperProgress", bookPrintingProgress); - compound.putFloat("Fuel", fuelLevel); + compound.putInt("RemainingFuel", remainingFuel); compound.putString("Status", statusMsg); compound.putString("State", state.name()); compound.putInt("AmountPlaced", blocksPlaced); @@ -328,7 +328,7 @@ protected void tickPrinter() { return; } - if (state == State.PAUSED && !positionNotLoaded && missingItem == null && fuelLevel > getFuelUsageRate()) + if (state == State.PAUSED && !positionNotLoaded && missingItem == null && remainingFuel > 0) return; // Initialize Printer @@ -344,15 +344,18 @@ protected void tickPrinter() { } // Check Fuel - if (fuelLevel <= 0 && !hasCreativeCrate) { - fuelLevel = 0; - state = State.PAUSED; - statusMsg = "noGunpowder"; - sendUpdate = true; - return; + if (remainingFuel <= 0 && !hasCreativeCrate) { + refillFuelIfPossible(); + if (remainingFuel <= 0) { + state = State.PAUSED; + statusMsg = "noGunpowder"; + sendUpdate = true; + return; + } } if (hasCreativeCrate) { + remainingFuel = 0; if (missingItem != null) { missingItem = null; state = State.RUNNING; @@ -431,13 +434,13 @@ protected void tickPrinter() { }); printerCooldown = config().schematicannonDelay.get(); - fuelLevel -= getFuelUsageRate(); + remainingFuel -= 1; sendUpdate = true; missingItem = null; } - public double getFuelUsageRate() { - return hasCreativeCrate ? 0 : config().schematicannonFuelUsage.get() / 100f; + public int getShotsPerGunpowder() { + return hasCreativeCrate ? 0 : config().schematicannonShotsPerGunpowder.get(); } protected void initializePrinter(ItemStack blueprint) { @@ -646,15 +649,34 @@ protected void tickFlyingBlocks() { protected void refillFuelIfPossible() { if (hasCreativeCrate) return; - if (1 - fuelLevel + 1 / 128f < getFuelAddedByGunPowder()) + if (remainingFuel > getShotsPerGunpowder()) { + remainingFuel = getShotsPerGunpowder(); + sendUpdate = true; + return; + } + + if (remainingFuel > 0) return; - if (inventory.getStackInSlot(4) + + if (!inventory.getStackInSlot(4) .isEmpty()) - return; + inventory.getStackInSlot(4) + .shrink(1); + else { + boolean externalGunpowderFound = false; + for (LazyOptional cap : attachedInventories) { + IItemHandler itemHandler = cap.orElse(EmptyHandler.INSTANCE); + if (ItemHelper.extract(itemHandler, stack -> inventory.isItemValid(4, stack), 1, false) + .isEmpty()) + continue; + externalGunpowderFound = true; + break; + } + if (!externalGunpowderFound) + return; + } - inventory.getStackInSlot(4) - .shrink(1); - fuelLevel += getFuelAddedByGunPowder(); + remainingFuel += getShotsPerGunpowder(); if (statusMsg.equals("noGunpowder")) { if (blocksPlaced > 0) state = State.RUNNING; @@ -663,10 +685,6 @@ protected void refillFuelIfPossible() { sendUpdate = true; } - public double getFuelAddedByGunPowder() { - return config().schematicannonGunpowderWorth.get() / 100f; - } - protected void tickPaperPrinter() { int BookInput = 2; int BookOutput = 3; diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java index c0cc7369f2..e4024aa92f 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java @@ -283,7 +283,8 @@ protected void renderBg(PoseStack ms, float partialTicks, int mouseX, int mouseY SchematicannonBlockEntity be = menu.contentHolder; renderPrintingProgress(ms, x, y, be.schematicProgress); - renderFuelBar(ms, x, y, be.fuelLevel); + float amount = be.remainingFuel / (float) be.getShotsPerGunpowder(); + renderFuelBar(ms, x, y, amount); renderChecklistPrinterProgress(ms, x, y, be.bookPrintingProgress); if (!be.inventory.getStackInSlot(0) @@ -385,10 +386,9 @@ protected void renderForeground(PoseStack matrixStack, int mouseX, int mouseY, f } protected List getFuelLevelTooltip(SchematicannonBlockEntity be) { - double fuelUsageRate = be.getFuelUsageRate(); - int shotsLeft = (int) (be.fuelLevel / fuelUsageRate); - int shotsLeftWithItems = (int) (shotsLeft + be.inventory.getStackInSlot(4) - .getCount() * (be.getFuelAddedByGunPowder() / fuelUsageRate)); + int shotsLeft = be.remainingFuel; + int shotsLeftWithItems = shotsLeft + be.inventory.getStackInSlot(4) + .getCount() * be.getShotsPerGunpowder(); List tooltip = new ArrayList<>(); if (be.hasCreativeCrate) { @@ -400,7 +400,7 @@ protected List getFuelLevelTooltip(SchematicannonBlockEntity be) { return tooltip; } - int fillPercent = (int) (be.fuelLevel * 100); + int fillPercent = (int) ((be.remainingFuel / (float) be.getShotsPerGunpowder()) * 100); tooltip.add(Lang.translateDirect(_gunpowderLevel, fillPercent)); tooltip.add(Lang.translateDirect(_shotsRemaining, Components.literal(Integer.toString(shotsLeft)).withStyle(BLUE)) .withStyle(GRAY)); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index 61d7ec1f64..26a91fbd8b 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -160,6 +160,8 @@ private void setupRenderer() { try { schematic.placeInWorld(w, pos, pos, placementSettings, w.getRandom(), Block.UPDATE_CLIENTS); + for (BlockEntity blockEntity : w.getBlockEntities()) + blockEntity.setLevel(w); } catch (Exception e) { Minecraft.getInstance().player.displayClientMessage(Lang.translate("schematic.error") .component(), false); diff --git a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java index 89690a89bd..83585d6983 100644 --- a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java +++ b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java @@ -6,9 +6,12 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics; +import com.simibubi.create.foundation.data.recipe.Mods; import com.simibubi.create.foundation.utility.NBTProcessors; import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; +import net.minecraft.core.Registry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.decoration.ItemFrame; @@ -70,6 +73,9 @@ public static ItemRequirement of(BlockState state, BlockEntity be) { if (be instanceof ISpecialBlockEntityItemRequirement specialBE) requirement = requirement.union(specialBE.getRequiredItems(state)); + if (com.simibubi.create.compat.Mods.FRAMEDBLOCKS.contains(block)) + requirement = requirement.union(FramedBlocksInSchematics.getRequiredItems(state, be)); + return requirement; } @@ -95,10 +101,19 @@ private static ItemRequirement defaultOf(BlockState state, BlockEntity be) { if (block instanceof SnowLayerBlock) return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(item, state.getValue(SnowLayerBlock.LAYERS) .intValue())); + // FD's rich soil extends FarmBlock so this is to make sure the cost is correct (it should be rich soil not dirt) + if (block == Registry.BLOCK.get(Mods.FD.asResource("rich_soil_farmland"))) + return new ItemRequirement(ItemUseType.CONSUME, Registry.ITEM.get(Mods.FD.asResource("rich_soil"))); if (block instanceof FarmBlock || block instanceof DirtPathBlock) return new ItemRequirement(ItemUseType.CONSUME, Items.DIRT); if (block instanceof AbstractBannerBlock && be instanceof BannerBlockEntity bannerBE) return new ItemRequirement(new StrictNbtStackRequirement(bannerBE.getItem(), ItemUseType.CONSUME)); + // Tall grass doesnt exist as a block so use 2 grass blades + if (block == Blocks.TALL_GRASS) + return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(Items.GRASS, 2)); + // Large ferns don't exist as blocks so use 2 ferns instead + if (block == Blocks.LARGE_FERN) + return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(Items.FERN, 2)); return new ItemRequirement(ItemUseType.CONSUME, item); } diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java index b93cd6417c..43df6dc50c 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java @@ -228,15 +228,21 @@ public final InteractionResult use(BlockState state, Level level, BlockPos pos, sbbe.setBogeyData(sbbe.getBogeyData().merge(defaultData)); if (size == getSize()) { + if (state.getBlock() != style.getBlockOfSize(size)) { + CompoundTag oldData = sbbe.getBogeyData(); + level.setBlock(pos, copyProperties(state, getStateOfSize(sbbe, size)), Block.UPDATE_ALL); + if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity)) + return InteractionResult.FAIL; + bogeyBlockEntity.setBogeyData(oldData); + } player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style") .append(": ").append(style.displayName), true); } else { CompoundTag oldData = sbbe.getBogeyData(); - level.setBlock(pos, this.getStateOfSize(sbbe, size), 3); - BlockEntity newBlockEntity = level.getBlockEntity(pos); - if (!(newBlockEntity instanceof AbstractBogeyBlockEntity newBlockEntity1)) + level.setBlock(pos, this.getStateOfSize(sbbe, size), Block.UPDATE_ALL); + if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity)) return InteractionResult.FAIL; - newBlockEntity1.setBogeyData(oldData); + bogeyBlockEntity.setBogeyData(oldData); player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style_and_size") .append(": ").append(style.displayName), true); } @@ -313,18 +319,18 @@ private BlockState copyProperties(BlockState source, BlockState target) { return target; } - public BlockState getNextSize(AbstractBogeyBlockEntity sbte) { + public BlockState getNextSize(AbstractBogeyBlockEntity sbbe) { BogeySizes.BogeySize size = this.getSize(); - BogeyStyle style = sbte.getStyle(); + BogeyStyle style = sbbe.getStyle(); BlockState nextBlock = style.getNextBlock(size).defaultBlockState(); - nextBlock = copyProperties(sbte.getBlockState(), nextBlock); + nextBlock = copyProperties(sbbe.getBlockState(), nextBlock); return nextBlock; } - public BlockState getStateOfSize(AbstractBogeyBlockEntity sbte, BogeySizes.BogeySize size) { - BogeyStyle style = sbte.getStyle(); + public BlockState getStateOfSize(AbstractBogeyBlockEntity sbbe, BogeySizes.BogeySize size) { + BogeyStyle style = sbbe.getStyle(); BlockState state = style.getBlockOfSize(size).defaultBlockState(); - return copyProperties(sbte.getBlockState(), state); + return copyProperties(sbbe.getBlockState(), state); } public BogeyStyle getNextStyle(Level level, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java index a27a52b7c7..e0d7c475cc 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java @@ -264,9 +264,11 @@ public void tick(Level level) { double topSpeed = train.maxSpeed(); if (targetDistance < 10) { - double target = topSpeed * ((targetDistance) / 10); - if (target < Math.abs(train.speed)) { - train.speed += (target - Math.abs(train.speed)) * .5f * speedMod; + double maxApproachSpeed = topSpeed * ((targetDistance) / 10); + double speedRelativeToStation = train.speed * speedMod; + + if (speedRelativeToStation > maxApproachSpeed) { + train.speed += (maxApproachSpeed - Math.abs(train.speed)) * .5f * speedMod; return; } } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/trains/entity/Train.java index 44fbdae2c1..ee7756f599 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Train.java @@ -947,6 +947,9 @@ public void collectInitiallyOccupiedSignalBlocks() { TrackNode node1 = trailingPoint.node1; TrackNode node2 = trailingPoint.node2; TrackEdge edge = trailingPoint.edge; + + if (edge == null) return; + double position = trailingPoint.position; EdgeData signalData = edge.getEdgeData(); @@ -1207,20 +1210,19 @@ public int countPlayerPassengers() { public void determineHonk(Level level) { if (lowHonk != null) return; - for (int index = 0; index < carriages.size(); index++) { - Carriage carriage = carriages.get(index); - DimensionalCarriageEntity dimensional = carriage.getDimensionalIfPresent(level.dimension()); - if (dimensional == null) - return; - CarriageContraptionEntity entity = dimensional.entity.get(); - if (entity == null || !(entity.getContraption()instanceof CarriageContraption otherCC)) - break; - Pair first = otherCC.soundQueue.getFirstWhistle(entity); - if (first != null) { - lowHonk = first.getFirst(); - honkPitch = first.getSecond(); - } - } + for (Carriage carriage : carriages) { + DimensionalCarriageEntity dimensional = carriage.getDimensionalIfPresent(level.dimension()); + if (dimensional == null) + return; + CarriageContraptionEntity entity = dimensional.entity.get(); + if (entity == null || !(entity.getContraption() instanceof CarriageContraption otherCC)) + break; + Pair first = otherCC.soundQueue.getFirstWhistle(entity); + if (first != null) { + lowHonk = first.getFirst(); + honkPitch = first.getSecond(); + } + } } public float distanceToLocationSqr(Level level, Vec3 location) { diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java b/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java index 2ac9e964c3..ca786c05f5 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java @@ -40,28 +40,24 @@ public class TravellingPoint { public boolean blocked; public boolean upsideDown; - public static enum SteerDirection { + public enum SteerDirection { NONE(0), LEFT(-1), RIGHT(1); - float targetDot; + final float targetDot; - private SteerDirection(float targetDot) { + SteerDirection(float targetDot) { this.targetDot = targetDot; } } - public static interface ITrackSelector - extends BiFunction>>, Entry> { - }; + public interface ITrackSelector + extends BiFunction>>, Entry> { }; - public static interface IEdgePointListener extends BiPredicate>> { - }; + public interface IEdgePointListener extends BiPredicate>> { }; - public static interface ITurnListener extends BiConsumer { - }; + public interface ITurnListener extends BiConsumer { }; - public static interface IPortalListener extends Predicate> { - }; + public interface IPortalListener extends Predicate> { }; public TravellingPoint() {} @@ -78,8 +74,7 @@ public IEdgePointListener ignoreEdgePoints() { } public ITurnListener ignoreTurns() { - return (d, c) -> { - }; + return (d, c) -> { }; } public IPortalListener ignorePortals() { @@ -113,15 +108,14 @@ public ITrackSelector follow(TravellingPoint other, @Nullable Consumer Vector>> frontiers = new Vector<>(validTargets.size()); Vector> visiteds = new Vector<>(validTargets.size()); - for (int j = 0; j < validTargets.size(); j++) { - ArrayList> e = new ArrayList<>(); - Entry entry = validTargets.get(j); - e.add(entry); - frontiers.add(e); - HashSet e2 = new HashSet<>(); - e2.add(entry.getValue()); - visiteds.add(e2); - } + for (Entry validTarget : validTargets) { + ArrayList> e = new ArrayList<>(); + e.add(validTarget); + frontiers.add(e); + HashSet e2 = new HashSet<>(); + e2.add(validTarget.getValue()); + visiteds.add(e2); + } for (int i = 0; i < 20; i++) { for (int j = 0; j < validTargets.size(); j++) { @@ -233,7 +227,7 @@ public double travel(TrackGraph graph, double distance, ITrackSelector trackSele Double blockedLocation = edgeTraversedFrom(graph, forward, signalListener, turnListener, prevPos, collectedDistance); if (blockedLocation != null) { - position = blockedLocation.doubleValue(); + position = blockedLocation; traveled = position - prevPos; return traveled; } @@ -289,7 +283,7 @@ public double travel(TrackGraph graph, double distance, ITrackSelector trackSele if (blockedLocation != null) { traveled -= position; - position = blockedLocation.doubleValue(); + position = blockedLocation; traveled += position; break; } @@ -349,7 +343,7 @@ public double travel(TrackGraph graph, double distance, ITrackSelector trackSele if (blockedLocation != null) { traveled -= position; - position = blockedLocation.doubleValue(); + position = blockedLocation; traveled += position; break; } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java b/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java index 8e15284f62..221d0ece52 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java @@ -107,6 +107,8 @@ public UUID getGroupAtPosition(TrackGraph graph, double position) { if (!hasSignalBoundaries()) return getEffectiveEdgeGroupId(graph); SignalBoundary firstSignal = next(EdgePointType.SIGNAL, 0); + if (firstSignal == null) + return null; UUID currentGroup = firstSignal.getGroup(edge.node1); for (TrackEdgePoint trackEdgePoint : getPoints()) { diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java index 10cace626c..f72159062c 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java @@ -505,7 +505,7 @@ public void resolveIntersectingEdgeGroups(Level level) { SignalEdgeGroup group = Create.RAILWAYS.signalEdgeGroups.get(groupId); SignalEdgeGroup otherGroup = Create.RAILWAYS.signalEdgeGroups.get(otherGroupId); - if (group == null || otherGroup == null) + if (group == null || otherGroup == null || groupId == null || otherGroupId == null) continue; intersection.groupId = groupId; diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java index 78cbd0995f..f3bd382a8b 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java @@ -364,6 +364,10 @@ public boolean enterAssemblyMode(@Nullable ServerPlayer sender) { if (!tryEnterAssemblyMode()) return false; + //Check the station wasn't destroyed + if (!(level.getBlockState(worldPosition).getBlock() instanceof StationBlock)) + return true; + BlockState newState = getBlockState().setValue(StationBlock.ASSEMBLING, true); level.setBlock(getBlockPos(), newState, 3); refreshBlockState(); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java index b67316b130..366960048f 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java @@ -18,6 +18,8 @@ import java.util.Random; import java.util.Set; +import com.simibubi.create.foundation.block.IHaveBigOutline; + import org.jetbrains.annotations.Nullable; import com.google.common.base.Predicates; @@ -107,7 +109,7 @@ import net.minecraft.world.ticks.LevelTickAccess; public class TrackBlock extends Block implements IBE, IWrenchable, ITrackBlock, - ISpecialBlockItemRequirement, ProperWaterloggedBlock, ReducedDestroyEffects, CustomPathNodeTypeBlock, MultiPosDestructionHandler { + ISpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline, ReducedDestroyEffects, CustomPathNodeTypeBlock, MultiPosDestructionHandler { public static final EnumProperty SHAPE = EnumProperty.create("shape", TrackShape.class); public static final BooleanProperty HAS_BE = BooleanProperty.create("turn"); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java index 5f7cc5fda8..6474c20a0a 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java @@ -34,6 +34,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; +import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Inventory; @@ -508,8 +509,7 @@ private static PlacementInfo placeTracks(Level level, PlacementInfo info, BlockS // copy over all shared properties from the shaped state to the correct track material block BlockState toPlace = BlockHelper.copyProperties(state, info.trackMaterial.getBlock().defaultBlockState()); - boolean canPlace = stateAtPos.getMaterial() - .isReplaceable(); + boolean canPlace = stateAtPos.getMaterial().isReplaceable() || stateAtPos.is(BlockTags.FLOWERS); if (canPlace) info.requiredTracks++; if (simulate) diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index bef957bf25..ad1fbf5e16 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -23,6 +23,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllFluids; import com.simibubi.create.AllItems; +import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.foundation.advancement.CreateAdvancement.Builder; import net.minecraft.advancements.Advancement; @@ -328,7 +329,7 @@ public class AllAdvancements implements DataProvider { .description("Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout") .after(STEAM_ENGINE_MAXED) .special(EXPERT)), - + DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.NETHERITE_DIVING_HELMET) .title("Swimming with the Striders") .description("Attempt to take a dive in lava with your netherite diving gear") @@ -543,7 +544,7 @@ public class AllAdvancements implements DataProvider { TRAIN_TRACK = create("track_0", b -> b.icon(AllBlocks.TRACK) .title("A New Gauge") .description("Obtain some Train Tracks") - .whenIconCollected() + .whenItemCollected(AllItemTags.TRACKS.tag) .after(STURDY_SHEET)), TRAIN_WHISTLE = create("train_whistle", b -> b.icon(AllBlocks.STEAM_WHISTLE) diff --git a/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java b/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java index 1b705b7a45..5e47addda1 100644 --- a/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java +++ b/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.block; -import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock; -import com.simibubi.create.content.trains.track.TrackBlock; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.RaycastHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -17,8 +15,11 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -public class BigOutlines { +/** + * For mods wanting to use this take a look at {@link IHaveBigOutline} + */ +public class BigOutlines { static BlockHitResult result = null; public static void pick() { @@ -43,38 +44,38 @@ public static void pick() { MutableBlockPos p = BlockPos.ZERO.mutable(); for (int x = -1; x <= 1; x++) { - for (int z = -1; z <= 1; z++) { - p.set(pos.getX() + x, pos.getY(), pos.getZ() + z); - BlockState blockState = mc.level.getBlockState(p); - - // Could be a dedicated interface for big blocks - if (!(blockState.getBlock() instanceof TrackBlock) - && !(blockState.getBlock() instanceof SlidingDoorBlock)) - continue; - - BlockHitResult hit = blockState.getInteractionShape(mc.level, p) - .clip(origin, target, p.immutable()); - if (hit == null) - continue; - - if (result != null && Vec3.atCenterOf(p) - .distanceToSqr(origin) >= Vec3.atCenterOf(result.getBlockPos()) - .distanceToSqr(origin)) - continue; - - Vec3 vec = hit.getLocation(); - double interactionDist = vec.distanceToSqr(origin); - if (interactionDist >= maxRange) - continue; - - BlockPos hitPos = hit.getBlockPos(); - - // pacifies ServerGamePacketListenerImpl.handleUseItemOn - vec = vec.subtract(Vec3.atCenterOf(hitPos)); - vec = VecHelper.clampComponentWise(vec, 1); - vec = vec.add(Vec3.atCenterOf(hitPos)); - - result = new BlockHitResult(vec, hit.getDirection(), hitPos, hit.isInside()); + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + p.set(pos.getX() + x, pos.getY() + y, pos.getZ() + z); + BlockState blockState = mc.level.getBlockState(p); + + if (!(blockState.getBlock() instanceof IHaveBigOutline)) + continue; + + BlockHitResult hit = blockState.getInteractionShape(mc.level, p) + .clip(origin, target, p.immutable()); + if (hit == null) + continue; + + if (result != null && Vec3.atCenterOf(p) + .distanceToSqr(origin) >= Vec3.atCenterOf(result.getBlockPos()) + .distanceToSqr(origin)) + continue; + + Vec3 vec = hit.getLocation(); + double interactionDist = vec.distanceToSqr(origin); + if (interactionDist >= maxRange) + continue; + + BlockPos hitPos = hit.getBlockPos(); + + // pacifies ServerGamePacketListenerImpl.handleUseItemOn + vec = vec.subtract(Vec3.atCenterOf(hitPos)); + vec = VecHelper.clampComponentWise(vec, 1); + vec = vec.add(Vec3.atCenterOf(hitPos)); + + result = new BlockHitResult(vec, hit.getDirection(), hitPos, hit.isInside()); + } } } diff --git a/src/main/java/com/simibubi/create/foundation/block/IHaveBigOutline.java b/src/main/java/com/simibubi/create/foundation/block/IHaveBigOutline.java new file mode 100644 index 0000000000..60de01e5e0 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/IHaveBigOutline.java @@ -0,0 +1,15 @@ +package com.simibubi.create.foundation.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import com.simibubi.create.content.trains.track.TrackBlock; +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock; + +/** + * Implementing this interface will allow you to have bigger outlines when overriding {@link BlockBehaviour#getInteractionShape(BlockState, BlockGetter, BlockPos)} + *

+ * For examples look at {@link TrackBlock} and {@link SlidingDoorBlock} + */ +public interface IHaveBigOutline { } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/IMultiBlockEntityContainer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/IMultiBlockEntityContainer.java index 7a678ad59f..29d9e6b114 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/IMultiBlockEntityContainer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/IMultiBlockEntityContainer.java @@ -13,24 +13,25 @@ public interface IMultiBlockEntityContainer { BlockPos getController(); - T getControllerBE (); + T getControllerBE(); boolean isController(); void setController(BlockPos pos); - void removeController (boolean keepContents); + void removeController(boolean keepContents); BlockPos getLastKnownPos(); - void preventConnectivityUpdate (); - void notifyMultiUpdated (); + void preventConnectivityUpdate(); + void notifyMultiUpdated(); // only used for FluidTank windows at present. Might be useful for similar properties on other things? - default void setExtraData (@Nullable Object data) {} + default void setExtraData(@Nullable Object data) {} @Nullable - default Object getExtraData () { return null; } - default Object modifyExtraData (Object data) { return data; } + default Object getExtraData() { return null; } + default Object modifyExtraData(Object data) { return data; } // multiblock structural information Direction.Axis getMainConnectionAxis(); - default Direction.Axis getMainAxisOf (BlockEntity be) { // this feels redundant, but it gives us a default to use when defining ::getMainConnectionAxis + + default Direction.Axis getMainAxisOf(BlockEntity be) { // this feels redundant, but it gives us a default to use when defining ::getMainConnectionAxis BlockState state = be.getBlockState(); Direction.Axis axis; @@ -48,13 +49,13 @@ else if (state.hasProperty(BlockStateProperties.HORIZONTAL_FACING)) { return axis; } - int getMaxLength (Direction.Axis longAxis, int width); - int getMaxWidth (); + int getMaxLength(Direction.Axis longAxis, int width); + int getMaxWidth(); - int getHeight (); - void setHeight (int height); - int getWidth (); - void setWidth (int width); + int getHeight(); + void setHeight(int height); + int getWidth(); + void setWidth(int width); public interface Inventory extends IMultiBlockEntityContainer { default boolean hasInventory() { return false; } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java index af437b7347..c70b9468eb 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockFace; +import com.simibubi.create.foundation.utility.HashableNonNullConsumer; import io.github.fabricators_of_create.porting_lib.transfer.StorageProvider; import net.fabricmc.fabric.api.lookup.v1.block.BlockApiLookup; @@ -94,6 +95,26 @@ public ExtractionCountMode getModeFromFilter() { return mode; } + public void findNewCapability() { + Level world = getWorld(); + BlockFace targetBlockFace = target.getTarget(world, blockEntity.getBlockPos(), blockEntity.getBlockState()) + .getOpposite(); + BlockPos pos = targetBlockFace.getPos(); + + targetCapability = LazyOptional.empty(); + + if (!world.isLoaded(pos)) + return; + BlockEntity invBE = world.getBlockEntity(pos); + if (invBE == null) + return; + Capability capability = capability(); + targetCapability = + bypassSided ? invBE.getCapability(capability) : invBE.getCapability(capability, targetBlockFace.getFace()); + if (targetCapability.isPresent()) + targetCapability.addListener(new HashableNonNullConsumer<>(this::onHandlerInvalidated, this)); + } + @FunctionalInterface public interface InterfaceProvider { diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java index 1ecb77e29d..f26940d4cf 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java @@ -2,10 +2,14 @@ import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; public abstract class SafeBlockEntityRenderer implements BlockEntityRenderer { @Override @@ -23,4 +27,21 @@ public boolean isInvalid(T be) { return !be.hasLevel() || be.getBlockState() .getBlock() == Blocks.AIR; } + + public boolean shouldCullItem(Vec3 itemPos) { + Frustum frustum = Minecraft.getInstance().levelRenderer.capturedFrustum != null ? + Minecraft.getInstance().levelRenderer.capturedFrustum : + Minecraft.getInstance().levelRenderer.cullingFrustum; + + AABB itemBB = new AABB( + itemPos.x - 0.25, + itemPos.y - 0.25, + itemPos.z - 0.25, + itemPos.x + 0.25, + itemPos.y + 0.25, + itemPos.z + 0.25 + ); + + return !frustum.isVisible(itemBB); + } } diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index b705d87ed8..fa4c641f1d 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -434,11 +434,10 @@ public static NonNullUnaryOperator> back .when(survivesExplosion) .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(drop.get()) - .apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)) .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) - .copy("Air", "Air")) + .copy("VanillaTag", "{}", CopyNbtFunction.MergeStrategy.MERGE)) .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) - .copy("Enchantments", "Enchantments"))))); + .copy("Air", "Air"))))); }); } diff --git a/src/main/java/com/simibubi/create/foundation/data/TagGen.java b/src/main/java/com/simibubi/create/foundation/data/TagGen.java index 6468675124..c0810590f4 100644 --- a/src/main/java/com/simibubi/create/foundation/data/TagGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/TagGen.java @@ -18,6 +18,8 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; +import java.util.List; + public class TagGen { public static NonNullFunction, BlockBuilder> axeOrPickaxe() { return b -> b.tag(BlockTags.MINEABLE_WITH_AXE) @@ -49,7 +51,7 @@ public static > T addOptional(T appender, Mods mod, Str return appender; } - public static > T addOptional(T appender, Mods mod, String... ids) { + public static > T addOptional(T appender, Mods mod, List ids) { for (String id : ids) { appender.addOptional(mod.asResource(id)); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java index 87d18dbcfc..975a9202fa 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java @@ -43,7 +43,13 @@ public class CompactingRecipeGen extends ProcessingRecipeGen { .output(AllItems.BLAZE_CAKE_BASE.get(), 1)), HONEY = create("honey", b -> b.require(AllFluidTags.HONEY.tag, FluidConstants.BUCKET) - .output(Items.HONEY_BLOCK, 1)) + .output(Items.HONEY_BLOCK, 1)), + + ICE = create("ice", b -> b + .require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK) + .require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK) + .require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK).require(Blocks.SNOW_BLOCK) + .output(Blocks.ICE)) ; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CompatMetals.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CompatMetals.java index aed04f6ffd..6d254ffa8f 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CompatMetals.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CompatMetals.java @@ -1,19 +1,25 @@ package com.simibubi.create.foundation.data.recipe; -import static com.simibubi.create.foundation.data.recipe.Mods.*; +import static com.simibubi.create.foundation.data.recipe.Mods.GS; +import static com.simibubi.create.foundation.data.recipe.Mods.IC2; +import static com.simibubi.create.foundation.data.recipe.Mods.IE; +import static com.simibubi.create.foundation.data.recipe.Mods.IF; +import static com.simibubi.create.foundation.data.recipe.Mods.MEK; +import static com.simibubi.create.foundation.data.recipe.Mods.OREGANIZED; +import static com.simibubi.create.foundation.data.recipe.Mods.TH; import com.simibubi.create.foundation.utility.Lang; public enum CompatMetals { - ALUMINUM(IE), - LEAD(MEK, TH, IE, TR, MI), + ALUMINUM(IE, IC2), + LEAD(MEK, TH, IE, OREGANIZED, TR, MI), NICKEL(TH, IE, MI, ALG), OSMIUM(MEK, MTM), PLATINUM(MTM, MI), - QUICKSILVER, - SILVER(TH, IE, TR, MI, MTM), - TIN(TH, MEK, TR, MI, ALG, MTM), - URANIUM(MEK, IE, MI); + QUICKSILVER(), + SILVER(TH, IE, IC2, OREGANIZED, GS, IF, TR, MI, MTM), + TIN(TH, MEK, IC2, TR, MI, ALG, MTM), + URANIUM(MEK, IE, IC2, MI); private final Mods[] mods; private final String name; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java index 812317b02e..1c65ae2317 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java @@ -24,6 +24,7 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; import net.fabricmc.fabric.api.resource.conditions.v1.DefaultResourceConditions; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.util.Mth; import net.minecraft.world.item.Items; @@ -52,7 +53,7 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { .output(Items.STRING, 2) .output(.5f, Items.STRING)), - DIORITE = mineralRecycling(AllPaletteStoneTypes.DIORITE, b -> b.duration(350) + DIORITE = ensMineralRecycling(AllPaletteStoneTypes.DIORITE, b -> b.duration(350) .output(.25f, Items.QUARTZ, 1)), CRIMSITE = @@ -90,13 +91,15 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { DEEP_GOLD_ORE = deepslateOre(() -> Items.DEEPSLATE_GOLD_ORE, AllItems.CRUSHED_GOLD::get, 2.25f, 350), DEEP_DIAMOND_ORE = deepslateOre(() -> Items.DEEPSLATE_DIAMOND_ORE, () -> Items.DIAMOND, 2.25f, 450), DEEP_EMERALD_ORE = deepslateOre(() -> Items.DEEPSLATE_EMERALD_ORE, () -> Items.EMERALD, 2.25f, 450), - DEEP_COAL_ORE = deepslateOre(() -> Items.DEEPSLATE_COAL_ORE, () -> Items.COAL, 1.75f, 250), + DEEP_COAL_ORE = deepslateOre(() -> Items.DEEPSLATE_COAL_ORE, () -> Items.COAL, 2.25f, 300), DEEP_REDSTONE_ORE = deepslateOre(() -> Items.DEEPSLATE_REDSTONE_ORE, () -> Items.REDSTONE, 7.5f, 350), DEEP_LAPIS_ORE = deepslateOre(() -> Items.DEEPSLATE_LAPIS_ORE, () -> Items.LAPIS_LAZULI, 12.5f, 350), NETHER_GOLD_ORE = netherOre(() -> Items.NETHER_GOLD_ORE, () -> Items.GOLD_NUGGET, 18, 350), NETHER_QUARTZ_ORE = netherOre(() -> Items.NETHER_QUARTZ_ORE, () -> Items.QUARTZ, 2.25f, 350), + GILDED_BLACKSTONE = ore(Items.BLACKSTONE, () -> Items.GILDED_BLACKSTONE, () -> Items.GOLD_NUGGET, 18, 400), + RAW_COPPER_ORE = rawOre(() -> Items.RAW_COPPER, AllItems.CRUSHED_COPPER::get, 1), RAW_ZINC_ORE = rawOre(AllItems.RAW_ZINC::get, AllItems.CRUSHED_ZINC::get, 1), RAW_IRON_ORE = rawOre(() -> Items.RAW_IRON, AllItems.CRUSHED_IRON::get, 1), @@ -184,7 +187,245 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { NETHERRACK = create(() -> Blocks.NETHERRACK, b -> b.duration(250) .output(AllItems.CINDER_FLOUR.get()) - .output(.5f, AllItems.CINDER_FLOUR.get())) + .output(.5f, AllItems.CINDER_FLOUR.get()) + .whenModMissing(Mods.ENS.getId())), + + // AE2 + AE2_DEEPSLATE_ORE = create(Mods.AE2.recipeId("deepslate_quartz_ore"), b -> b.duration(300) + .require(Mods.AE2, "deepslate_quartz_ore") + .output(Mods.AE2, "certus_quartz_crystal") + .output(1f, Mods.AE2, "certus_quartz_dust", 4) + .output(.5f, Mods.AE2, "certus_quartz_dust", 1) + .output(.125f, Items.COBBLED_DEEPSLATE) + .whenModLoaded(Mods.AE2.getId())), + + AE2_ORE = create(Mods.AE2.recipeId("quartz_ore"), b -> b.duration(300) + .require(Mods.AE2, "quartz_ore") + .output(Mods.AE2, "certus_quartz_crystal") + .output(1f, Mods.AE2, "certus_quartz_dust", 4) + .output(.5f, Mods.AE2, "certus_quartz_dust", 1) + .output(.125f, Items.COBBLESTONE) + .whenModLoaded(Mods.AE2.getId())), + + // Oh The Biomes You'll Go + BYG_AMETRINE_ORE = create(Mods.BYG.recipeId("ametrine_ore"), b -> b.duration(500) + .require(AllTags.optionalTag(ForgeRegistries.ITEMS, + new ResourceLocation("forge", "ores/ametrine"))) + .output(1f, Mods.BYG, "ametrine_gems", 2) + .output(.25f, Mods.BYG, "ametrine_gems", 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "cobbled_ether_stone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_ANTHRACITE_ORE = create(Mods.BYG.recipeId("anthracite_ore"), b -> b.duration(150) + .require(AllTags.optionalTag(ForgeRegistries.ITEMS, + new ResourceLocation("forge", "ores/anthracite"))) + .output(1f, Mods.BYG, "anthracite", 2) + .output(.5f, Mods.BYG, "anthracite", 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "brimstone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_BLUE_GOLD_ORE = create(Mods.BYG.recipeId("blue_nether_gold_ore"), b -> b.duration(350) + .require(Mods.BYG, "blue_nether_gold_ore") + .output(1f, Items.GOLD_NUGGET, 18) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "blue_netherrack", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_BLUE_QUARTZ_ORE = create(Mods.BYG.recipeId("blue_nether_quartz_ore"), b -> b.duration(350) + .require(Mods.BYG, "blue_nether_quartz_ore") + .output(1f, Items.QUARTZ, 2) + .output(.25f, Items.QUARTZ, 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "blue_netherrack", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_BRIMSTONE_GOLD_ORE = create(Mods.BYG.recipeId("brimstone_nether_gold_ore"), b -> b.duration(350) + .require(Mods.BYG, "brimstone_nether_gold_ore") + .output(1f, Items.GOLD_NUGGET, 18) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "brimstone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_BRIMSTONE_QUARTZ_ORE = create(Mods.BYG.recipeId("brimstone_nether_quartz_ore"), b -> b.duration(350) + .require(Mods.BYG, "brimstone_nether_quartz_ore") + .output(1f, Items.QUARTZ, 2) + .output(.25f, Items.QUARTZ, 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "brimstone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_REDSTONE_ORE = create(Mods.BYG.recipeId("cryptic_redstone_ore"), b -> b.duration(250) + .require(Mods.BYG, "cryptic_redstone_ore") + .output(1f, Items.REDSTONE, 6) + .output(.5f, Items.REDSTONE, 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "cryptic_stone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_EMERALDITE_ORE = create(Mods.BYG.recipeId("emeraldite_ore"), b -> b.duration(500) + .require(AllTags.forgeItemTag("ores/emeraldite")) + .output(1f,Mods.BYG, "emeraldite_shards", 2) + .output(.25f, Mods.BYG, "emeraldite_shards", 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "scoria_cobblestone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_LIGNITE_ORE = create(Mods.BYG.recipeId("lignite_ore"), b -> b.duration(300) + .require(AllTags.forgeItemTag("ores/lignite")) + .output(1f,Mods.BYG, "lignite", 2) + .output(.5f, Mods.BYG, "lignite", 2) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Mods.BYG, "cobbled_ether_stone", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_NETHERRACK_ORE = create(Mods.BYG.recipeId("pervaded_netherrack"), b -> b.duration(150) + .require(AllTags.forgeItemTag("ores/emeraldite")) + .output(1f, Items.GLOWSTONE, 2) + .output(.5f, Items.GLOWSTONE, 1) + .output(.75f, AllItems.EXP_NUGGET.get(), 1) + .output(.125f, Items.NETHERRACK, 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_RED_ROCK_ORE = create(Mods.BYG.recipeId("red_rock"), b -> b.duration(150) + .require(Mods.BYG, "red_rock") + .output(1f, Items.RED_SAND, 1) + .whenModLoaded(Mods.BYG.getId())), + + // Druidcraft + + DC_AMBER_ORE = create(Mods.DRUIDCRAFT.recipeId("amber_ore"), b -> b.duration(300) + .require(Mods.DRUIDCRAFT, "amber_ore") + .output(1f, Mods.DRUIDCRAFT, "amber", 2) + .output(.5f, Mods.DRUIDCRAFT, "amber", 1) + .output(.125f, Items.COBBLESTONE, 1) + .whenModLoaded(Mods.DRUIDCRAFT.getId())), + + DC_FIERY_GLASS_ORE = create(Mods.DRUIDCRAFT.recipeId("fiery_glass_ore"), b -> b.duration(300) + .require(Mods.DRUIDCRAFT, "fiery_glass_ore") + .output(1f, Mods.DRUIDCRAFT, "fiery_glass", 8) + .output(.25f, Mods.DRUIDCRAFT, "fiery_glass", 6) + .output(.125f, Items.COBBLESTONE, 1) + .whenModLoaded(Mods.DRUIDCRAFT.getId())), + + DC_MOONSTONE_ORE = create(Mods.DRUIDCRAFT.recipeId("moonstone_ore"), b -> b.duration(300) + .require(Mods.DRUIDCRAFT, "moonstone_ore") + .output(1f, Mods.DRUIDCRAFT, "moonstone", 2) + .output(.5f, Mods.DRUIDCRAFT, "moonstone", 1) + .output(.125f, Items.COBBLESTONE, 1) + .whenModLoaded(Mods.DRUIDCRAFT.getId())), + + // Neapolitan + + NEA_ICE = create(Mods.NEA.recipeId("ice"), b -> b.duration(100) + .require(Items.ICE) + .output(1f, Mods.NEA, "ice_cubes", 3) + .output(.25f, Mods.NEA, "ice_cubes", 3) + .whenModLoaded(Mods.NEA.getId())), + + // Quark + + Q_MOSS = create(Mods.Q.recipeId("moss_block"), b -> b.duration(50) + .require(Items.MOSS_BLOCK) + .output(1f, Mods.Q, "moss_paste", 2) + .output(.1f, Mods.Q, "moss_paste", 1) + .whenModLoaded(Mods.Q.getId())), + + // Silent Gems + + SG_STONE = sgStoneOres("agate", "amber", "amethyst", "aquamarine", "garnet", "green_sapphire", + "helidor", "morganite", "onyx", "opal", "peridot", "phosphophyllite", "ruby", "sapphire", + "tanzite", "topaz"), + + SG_NETHER = sgNetherOres("alexandrite", "ametrine", "beniotite", "black_diamond", "carnelian", + "citrine", "eculase", "iolite", "jasper", "lepidolite", "malachite", "moldavite", "moonstone", + "spinel", "turquoise", "zircon"), + + SG_END = sgEndOres("ammolite", "apatite", "cats_eye", "chrysoprase", "coral", "flourite", + "jade", "kunzite", "kyanite", "pearl", "pyrope", "rose_quartz", "sodalite", "sunstone", + "tektite", "yellow_diamond"), + + // Simple Farming + + SF = sfPlants("barley", "oat", "rice", "rye"), + + // Thermal Expansion + + TH = thOres("apatite", "cinnabar", "niter", "sulfur"), + + //Galosphere + + GS_ALLURITE = create(Mods.GS.recipeId("allurite"), b -> b.duration(300) + .require(AllTags.AllItemTags.ALLURITE.tag) + .output(.8f, Mods.GS, "allurite_shard", 4) + .whenModLoaded(Mods.GS.getId())), + + GS_LUMIERE = create(Mods.GS.recipeId("lumiere"), b -> b.duration(300) + .require(AllTags.AllItemTags.LUMIERE.tag) + .output(.8f, Mods.GS, "lumiere_shard", 4) + .whenModLoaded(Mods.GS.getId())), + + GS_AMETHYST = create(Mods.GS.recipeId("amethyst"), b -> b.duration(300) + .require(AllTags.AllItemTags.AMETHYST.tag) + .output(.8f, Items.AMETHYST_SHARD, 4) + .whenModLoaded(Mods.GS.getId())), + + //Elementary Ores + EO_COAL_NETHER = eoNetherOre("coal", Items.COAL, 1), + EO_COPPER_NETHER = eoNetherOre("copper", AllItems.CRUSHED_COPPER.get(), 5), + EO_IRON_NETHER = eoNetherOre("iron", AllItems.CRUSHED_IRON.get(), 1), + EO_EMERALD_NETHER = eoNetherOre("emerald", Items.EMERALD, 1), + EO_LAPIS_NETHER = eoNetherOre("lapis", Items.LAPIS_LAZULI, 10), + EO_DIAMOND_NETHER = eoNetherOre("diamond", Items.DIAMOND, 1), + EO_REDSTONE_NETHER = eoNetherOre("redstone", Items.REDSTONE, 6), + EO_GHAST_NETHER = eoNetherOre("ghast", Items.GHAST_TEAR, 1), + EO_COAL_END = eoEndOre("coal", Items.COAL, 1), + EO_COPPER_END = eoEndOre("copper", AllItems.CRUSHED_COPPER.get(), 5), + EO_IRON_END = eoEndOre("iron", AllItems.CRUSHED_IRON.get(), 1), + EO_EMERALD_END = eoEndOre("emerald", Items.EMERALD, 1), + EO_LAPIS_END = eoEndOre("lapis", Items.LAPIS_LAZULI, 10), + EO_DIAMOND_END = eoEndOre("diamond", Items.DIAMOND, 1), + EO_REDSTONE_END = eoEndOre("redstone", Items.REDSTONE, 6), + EO_ENDER_END = eoEndOre("ender", Items.ENDER_PEARL, 1), + + // Ex Nihilo: Sequentia + + ENS_STONES = ensStones("andesite", "diorite", "end_stone", "granite", "netherrack"), + + ENS_DUST = create(Mods.ENS.recipeId("dust"), b -> b.duration(200) + .require(Blocks.SAND).output(Mods.ENS, "dust") + .whenModLoaded(Mods.ENS.getId())), + + ENS_NETHERRACK = create(Mods.ENS.recipeId("crushed_netherrack"), b -> b.duration(100) + .require(Mods.ENS, "crushed_netherrack") + .output(AllItems.CINDER_FLOUR.get()) + .output(.5f, AllItems.CINDER_FLOUR.get()) + .whenModLoaded(Mods.ENS.getId())), + + ENS_DIORITE = create(Mods.ENS.recipeId("crushed_diorite"), b -> b.duration(100) + .require(Mods.ENS, "crushed_diorite") + .output(.25f, Items.QUARTZ, 1) + .whenModLoaded(Mods.ENS.getId())), + + // Aether + + AET_ZANITE = create(Mods.AET.recipeId("zanite_ore"), b -> b.duration(350) + .require(Mods.AET, "zanite_ore") + .output(Mods.AET, "zanite_gemstone") + .output(0.75f, Mods.AET, "zanite_gemstone", 1) + .output(0.125f, Mods.AET, "holystone", 1) + .output(0.75f, AllItems.EXP_NUGGET.get()) + .whenModLoaded(Mods.AET.getId())), + + AET_AMBROSIUM = create(Mods.AET.recipeId("ambrosium_ore"), b -> b.duration(150) + .require(Mods.AET, "ambrosium_ore") + .output(Mods.AET, "ambrosium_shard") + .output(0.75f, Mods.AET, "ambrosium_shard", 1) + .output(0.125f, Mods.AET, "holystone", 1) + .output(0.75f, AllItems.EXP_NUGGET.get()) + .whenModLoaded(Mods.AET.getId())) + ; @@ -216,6 +457,12 @@ protected GeneratedRecipe mineralRecycling(AllPaletteStoneTypes type, return create(type.getBaseBlock()::get, transform); } + protected GeneratedRecipe ensMineralRecycling(AllPaletteStoneTypes type, + UnaryOperator>> transform) { + create(Lang.asId(type.name()) + "_recycling", b -> transform.apply(b.require(type.materialTag))); + return create(type.getBaseBlock()::get, b -> transform.apply(b.whenModMissing(Mods.ENS.getId()))); + } + protected GeneratedRecipe ore(ItemLike stoneType, Supplier ore, Supplier raw, float expectedAmount, int duration) { return create(ore, b -> { @@ -256,10 +503,107 @@ protected GeneratedRecipe moddedOre(CompatMetals metal, Supplier resul .require(AllTags.forgeItemTag(prefix + name)) .output(result.get(), 1) .output(.75f, result.get(), 1) - .output(.75f, AllItems.EXP_NUGGET.get(), 1); + .output(.75f, AllItems.EXP_NUGGET.get()); }); } + protected GeneratedRecipe sgStoneOres(String... types) { + for (String type : types) { + create(Mods.SILENT_GEMS.recipeId(type + "_ore"), b -> b.duration(350) + .require(Mods.SILENT_GEMS, type + "_ore") + .output(1f, Mods.SILENT_GEMS, type, 2) + .output(.25f, Mods.SILENT_GEMS, type, 1) + .output(.75f, AllItems.EXP_NUGGET.get()) + .output(.12f, Items.COBBLESTONE) + .whenModLoaded(Mods.SILENT_GEMS.getId())); + } + return null; + } + + protected GeneratedRecipe sgNetherOres(String... types) { + for (String type : types) { + create(Mods.SILENT_GEMS.recipeId(type + "_ore"), b -> b.duration(350) + .require(Mods.SILENT_GEMS, type + "_ore") + .output(1f, Mods.SILENT_GEMS, type, 2) + .output(.25f, Mods.SILENT_GEMS, type, 1) + .output(.75f, AllItems.EXP_NUGGET.get()) + .output(.12f, Items.NETHERRACK) + .whenModLoaded(Mods.SILENT_GEMS.getId())); + } + return null; + } + + protected GeneratedRecipe sgEndOres(String... types) { + for (String type : types) { + create(Mods.SILENT_GEMS.recipeId(type + "_ore"), b -> b.duration(350) + .require(Mods.SILENT_GEMS, type + "_ore") + .output(1f, Mods.SILENT_GEMS, type, 2) + .output(.25f, Mods.SILENT_GEMS, type, 1) + .output(.75f, AllItems.EXP_NUGGET.get()) + .output(.12f, Items.END_STONE) + .whenModLoaded(Mods.SILENT_GEMS.getId())); + } + return null; + } + + protected GeneratedRecipe sfPlants(String... types) { + for (String type : types) { + create(Mods.SF.recipeId(type), b -> b.duration(150) + .require(Mods.SF, type) + .output(1f, AllItems.WHEAT_FLOUR.get(), 1) + .output(.25f, AllItems.WHEAT_FLOUR.get(), 2) + .output(.25f, Mods.SF, type + "_seeds", 1) + .whenModLoaded(Mods.SF.getId())); + } + return null; + } + + protected GeneratedRecipe thOres(String... types) { + for (String type : types) { + create(Mods.TH.recipeId(type + "_ore"), b -> b.duration(350) + .require(Mods.TH, type + "_ore") + .output(1f, Mods.TH, type, 2) + .output(.25f, Mods.TH, type, 1) + .output(.12f, Items.COBBLESTONE) + .output(.75f, AllItems.EXP_NUGGET.get()) + .whenModLoaded(Mods.TH.getId())); + } + return null; + } + + protected GeneratedRecipe eoNetherOre(String material, ItemLike result, int count){ + String oreName = "ore_" + material + "_nether"; + return create(Mods.EO.recipeId(oreName), b -> b.duration(350) + .require(Mods.EO, oreName) + .output(1f, result, count) + .output(.25f, result) + .output(.75f, AllItems.EXP_NUGGET.get()) + .output(.12f, Items.NETHERRACK) + .whenModLoaded(Mods.EO.getId())); + } + + protected GeneratedRecipe eoEndOre(String material, ItemLike result, int count){ + String oreName = "ore_" + material + "_end"; + return create(Mods.EO.recipeId(oreName), b -> b.duration(350) + .require(Mods.EO, oreName) + .output(1f, result, count) + .output(.25f, result) + .output(.75f, AllItems.EXP_NUGGET.get()) + .output(.12f, Items.END_STONE) + .whenModLoaded(Mods.EO.getId())); + } + + protected GeneratedRecipe ensStones(String... stones) { + for (String stone : stones) { + String crushed = "crushed_" + stone; + create(Mods.ENS.recipeId(stone), b -> b.duration(350) + .require(Mods.MC, stone) + .output(Mods.ENS, crushed) + .whenModLoaded(Mods.ENS.getId())); + } + return null; + } + public CrushingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java index 2b0ad67cb3..831d1dc4f1 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java @@ -7,6 +7,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import java.util.Objects; + public class CuttingRecipeGen extends ProcessingRecipeGen { GeneratedRecipe @@ -54,7 +56,7 @@ public class CuttingRecipeGen extends ProcessingRecipeGen { FA = cuttingCompat(Mods.FA, "cherrywood", "mysterywood"), // Hexcasting (stripped is a suffix here) - HEX = cuttingCompat(Mods.HEX, "akashic"), + HEX = cuttingCompat(Mods.HEX, "edified"), // Integrated Dynamics (stripped is a suffix here also) ID = cuttingCompat(Mods.ID, "menril"), @@ -101,9 +103,56 @@ public class CuttingRecipeGen extends ProcessingRecipeGen { // Blue Skies (crystallized does not have stripped variants) BSK = cuttingCompat(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry"), BSK_2 = stripAndMakePlanks(Mods.BSK, null, "crystallized_log", "crystallized_planks"), - BSK_3 = stripAndMakePlanks(Mods.BSK, null, "crystallized_wood", "crystallized_planks") - - ; + BSK_3 = stripAndMakePlanks(Mods.BSK, null, "crystallized_wood", "crystallized_planks"), + + // Atmospheric + + ATM = cuttingCompat(Mods.ATM, "aspen", "kousa", "yucca", "morado"), + ATM_2 = stripAndMakePlanks(Mods.ATM, "grimwood", "stripped_grimwood", "grimwood_planks"), + ATM_3 = stripAndMakePlanks(Mods.ATM, "rosewood", "stripped_rosewood", "rosewood_planks"), + ATM_4 = cuttingCompatLogOnly(Mods.ATM, "grimwood", "rosewood"), + + // Autumnity + AUTUM = cuttingCompat(Mods.AUTUM, "maple"), + AUTUM_2 = stripAndMakePlanks(Mods.AUTUM, "sappy_maple_wood", "sappy_maple_log", "maple_planks"), + + // Endergetic + + ENDERGETIC = stripAndMakePlanks(Mods.ENDER, "poise_stem", "stripped_poise_stem", "poise_planks"), + + // Project Vibrant Journeys + PVJ = cuttingCompatLogOnly(Mods.PVJ,"aspen", "baobab", "cottonwood", "fir", "juniper", "mangrove", "maple", "palm", "pine", "redwood", "willow"), + + // Upgrade Aquatic + UA = cuttingCompat(Mods.UA, "river"), + UA_2 = stripAndMakePlanks(Mods.UA, "driftwood", "strippped_driftwood", "driftwood_planks"), + UA_3 = cuttingCompatLogOnly(Mods.UA, "driftwood"), + + //Vault Hunters + VH = cuttingCompatLogOnly(Mods.VH, "wooden", "overgrown_wooden", "driftwood", "chromatic"), + + // Nether's Exoticism + NE = cuttingCompat(Mods.NE, "ramboutan"), + NE_2 = cuttingCompatLogOnly(Mods.NE, "jabuticaba"), + + // Regions Unexplored + RU = cuttingCompat(Mods.RU, "baobab", "blackwood", "brimwood", "cobalt", "cypress", "dead", "eucalyptus", "joshua", + "kapok", "larch", "magnolia", "maple","mauve", "palm", "pine", "redwood", "socotra", "willow"), + RU_2 = stripAndMakePlanks(Mods.RU, "blue_bioshroom_stem", "stripped_blue_bioshroom_stem", "blue_bioshroom_planks"), + RU_3 = stripAndMakePlanks(Mods.RU, "blue_bioshroom_hyphae", "stripped_blue_bioshroom_hyphae", "blue_bioshroom_planks"), + RU_4 = stripAndMakePlanks(Mods.RU, "green_bioshroom_stem", "stripped_green_bioshroom_stem", "green_bioshroom_planks"), + RU_5 = stripAndMakePlanks(Mods.RU, "green_bioshroom_hyphae", "stripped_green_bioshroom_hyphae", "green_bioshroom_planks"), + RU_6 = stripAndMakePlanks(Mods.RU, "pink_bioshroom_stem", "stripped_pink_bioshroom_stem", "pink_bioshroom_planks"), + RU_7 = stripAndMakePlanks(Mods.RU, "pink_bioshroom_hyphae", "stripped_pink_bioshroom_hyphae", "pink_bioshroom_planks"), + RU_8 = stripAndMakePlanks(Mods.RU, "yellow_bioshroom_stem", "stripped_yellow_bioshroom_stem", "yellow_bioshroom_planks"), + RU_9 = stripAndMakePlanks(Mods.RU, "yellow_bioshroom_hyphae", "stripped_yellow_bioshroom_hyphae", "yellow_bioshroom_planks"), + RU_10 = stripAndMakePlanks(Mods.RU, null, "alpha_wood", "alpha_planks"), + RU_11 = stripAndMakePlanks(Mods.RU, "brimwood_log_magma", "stripped_brimwood", null), + RU_12 = stripAndMakePlanks(Mods.RU, "ashen_log", "stripped_dead_log", null), + RU_13 = stripAndMakePlanks(Mods.RU, "ashen_wood", "stripped_dead_wood", null), + RU_14 = stripOnlyDiffModId(Mods.RU, "silver_birch_log", Mods.MC, "stripped_birch_log"), + RU_15 = stripOnlyDiffModId(Mods.RU, "silver_birch_wood", Mods.MC, "stripped_birch_wood") + ; GeneratedRecipe stripAndMakePlanks(Block wood, Block stripped, Block planks) { create(() -> wood, b -> b.duration(50) @@ -129,6 +178,24 @@ GeneratedRecipe cuttingCompat(Mods mod, String... woodtypes) { return null; } + GeneratedRecipe cuttingCompatLogOnly(Mods mod, String... woodtypes) { + for (String type : woodtypes) { + String planks = type + "_planks"; + String strippedPre = mod.strippedIsSuffix ? "" : "stripped_"; + String strippedPost = mod.strippedIsSuffix ? "_stripped" : ""; + stripAndMakePlanks(mod, type + "_log", strippedPre + type + "_log" + strippedPost, planks); + } + return null; + } + + GeneratedRecipe stripOnlyDiffModId(Mods mod1, String wood, Mods mod2, String stripped) { + create("compat/" + mod1.getId() + "/" + wood, b -> b.duration(50) + .require(mod1, wood) + .output(1, mod2, stripped, 1) + .whenModLoaded(mod1.getId())); + return null; + } + GeneratedRecipe stripAndMakePlanks(Mods mod, String wood, String stripped, String planks) { if (wood != null) create("compat/" + mod.getId() + "/" + wood, b -> b.duration(50) @@ -136,10 +203,17 @@ GeneratedRecipe stripAndMakePlanks(Mods mod, String wood, String stripped, Strin .output(1, mod, stripped, 1) .whenModLoaded(mod.getId())); if (planks != null) - create("compat/" + mod.getId() + "/" + stripped, b -> b.duration(50) - .require(mod, stripped) - .output(1, mod, planks, 6) - .whenModLoaded(mod.getId())); + if (!Objects.equals(mod.getId(), Mods.VH.getId())) { + create("compat/" + mod.getId() + "/" + stripped, b -> b.duration(50) + .require(mod, stripped) + .output(1, mod, planks, 6) + .whenModLoaded(mod.getId())); + } else { + create("compat/" + mod.getId() + "/" + stripped, b -> b.duration(50) + .require(mod, stripped) + .output(1, mod, planks, 4) + .whenModLoaded(mod.getId())); + } return null; } @@ -151,5 +225,4 @@ public CuttingRecipeGen(FabricDataGenerator p_i48262_1_) { protected AllRecipeTypes getRecipeType() { return AllRecipeTypes.CUTTING; } - } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java index b9b05f1894..b4aceeae29 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java @@ -28,7 +28,17 @@ public class EmptyingRecipeGen extends ProcessingRecipeGen { FD_MILK = create(Mods.FD.recipeId("milk_bottle"), b -> b.require(Mods.FD, "milk_bottle") .output(Milk.FLOWING_MILK, FluidConstants.BOTTLE) .output(Items.GLASS_BOTTLE) - .whenModLoaded(Mods.FD.getId())) + .whenModLoaded(Mods.FD.getId())), + + AM_LAVA = create(Mods.AM.recipeId("lava_bottle"), b -> b.require(Mods.AM, "lava_bottle") + .output(Items.GLASS_BOTTLE) + .output(Fluids.LAVA, 250) + .whenModLoaded(Mods.AM.getId())), + + NEO_MILK = create(Mods.NEA.recipeId("milk_bottle"), b -> b.require(Mods.FD, "milk_bottle") + .output(ForgeMod.MILK.get(), 250) + .output(Items.GLASS_BOTTLE) + .whenModLoaded(Mods.NEA.getId())) ; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java index 424af4003d..3f34c1f7fe 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java @@ -60,10 +60,44 @@ public class FillingRecipeGen extends ProcessingRecipeGen { GLOWSTONE = create("glowstone", b -> b.require(PotionFluidHandler.potionIngredient(Potions.NIGHT_VISION, FluidConstants.BUCKET / 40)) .require(AllItems.CINDER_FLOUR.get()) - .output(Items.GLOWSTONE_DUST)) + .output(Items.GLOWSTONE_DUST)), + + + AM_LAVA = create(Mods.AM.recipeId("lava_bottle"), b -> b.require(Fluids.LAVA, 250) + .require(Items.GLASS_BOTTLE) + .output(1, Mods.AM, "lava_bottle", 1) + .whenModLoaded(Mods.AM.getId())), + + BYG_LUSH_GRASS = create(Mods.BYG.recipeId("lush_grass_block"), b -> b.require(Mods.BYG, "lush_dirt") + .require(Fluids.WATER, 500) + .output(Mods.BYG, "lush_grass_block") + .whenModLoaded(Mods.BYG.getId())), + + NEA_MILK = create(Mods.NEA.recipeId("milk_bottle"), b -> b.require(Tags.Fluids.MILK, 250) + .require(Items.GLASS_BOTTLE) + .output(1, Mods.NEA, "milk_bottle", 1) + .whenModLoaded(Mods.NEA.getId())), + + AET_GRASS = moddedGrass(Mods.AET, "aether"), + + RU_PEAT_GRAS = moddedGrass(Mods.RU, "peat"), + + RU_SILT_GRAS = moddedGrass(Mods.RU, "silt"), + + // Vampirism + + VMP_CURSED_GRASS = moddedGrass(Mods.VMP, "cursed") ; + public GeneratedRecipe moddedGrass(Mods mod, String name) { + String grass = name + "_grass_block"; + return create(mod.recipeId(grass), b -> b.require(Fluids.WATER, 500) + .require(mod, name + "_dirt") + .output(mod, grass) + .whenModLoaded(mod.getId())); + } + public FillingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java index 012eb89153..03627724b6 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java @@ -47,7 +47,17 @@ public class HauntingRecipeGen extends ProcessingRecipeGen { SOUL_DIRT = convert(() -> Ingredient.of(ItemTags.DIRT), () -> Blocks.SOUL_SOIL), BLACK_STONE = convert(() -> Ingredient.of(Tags.Items.COBBLESTONE), () -> Blocks.BLACKSTONE), CRIMSON_FUNGUS = convert(Items.RED_MUSHROOM, Items.CRIMSON_FUNGUS), - WARPED_FUNGUS = convert(Items.BROWN_MUSHROOM, Items.WARPED_FUNGUS); + WARPED_FUNGUS = convert(Items.BROWN_MUSHROOM, Items.WARPED_FUNGUS), + + // Farmer's Delight + FD = moddedConversion(Mods.FD, "tomato", "rotten_tomato"), + + // Haunted Harvest + HH = create(Mods.HH.recipeId("rotten_apple"), b -> b.require(Items.APPLE) + .output(Mods.HH, "rotten_apple") + .whenModLoaded(Mods.HH.getId())) + + ; public GeneratedRecipe convert(ItemLike input, ItemLike result) { return convert(() -> Ingredient.of(input), () -> result); @@ -61,6 +71,12 @@ public GeneratedRecipe convert(Supplier input, Supplier re .output(result.get())); } + public GeneratedRecipe moddedConversion(Mods mod, String input, String output) { + return create("compat/" + mod.getId() + "/" + output, p -> p.require(mod, input) + .output(mod, output) + .whenModLoaded(mod.getId())); + } + public HauntingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java index 08dd7c815c..3fb7ba2c7d 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java @@ -9,12 +9,16 @@ import net.fabricmc.fabric.api.resource.conditions.v1.DefaultResourceConditions; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import java.util.List; + +@SuppressWarnings("unused") public class MillingRecipeGen extends ProcessingRecipeGen { GeneratedRecipe @@ -187,7 +191,535 @@ public class MillingRecipeGen extends ProcessingRecipeGen { TALL_GRASS = create(() -> Blocks.TALL_GRASS, b -> b.duration(100) .output(.5f, Items.WHEAT_SEEDS)), GRASS = create(() -> Blocks.GRASS, b -> b.duration(50) - .output(.25f, Items.WHEAT_SEEDS)) + .output(.25f, Items.WHEAT_SEEDS)), + + // AE2 + + AE2_CERTUS = create(Mods.AE2.recipeId("certus_quartz"), b -> b.duration(200) + .require(AllTags.forgeItemTag("gems/certus_quartz")) + .output(Mods.AE2, "certus_quartz_dust") + .whenModLoaded(Mods.AE2.getId())), + + AE2_ENDER = create(Mods.AE2.recipeId("ender_pearl"), b -> b.duration(100) + .require(Tags.Items.ENDER_PEARLS) + .output(Mods.AE2, "ender_dust") + .whenModLoaded(Mods.AE2.getId())), + + AE2_FLUIX = create(Mods.AE2.recipeId("fluix_crystal"), b -> b.duration(200) + .require(Mods.AE2, "fluix_crystal") + .output(Mods.AE2, "fluix_dust") + .whenModLoaded(Mods.AE2.getId())), + + AE2_SKY_STONE = create(Mods.AE2.recipeId("sky_stone_block"), b -> b.duration(300) + .require(Mods.AE2, "sky_stone_block") + .output(Mods.AE2, "sky_dust") + .whenModLoaded(Mods.AE2.getId())), + + // Atmospheric + + ATMO_GILIA = create(Mods.ATM.recipeId("gilia"), b -> b.duration(50) + .require(Mods.ATM, "gilia") + .output(Items.PURPLE_DYE, 2) + .output(.1f, Items.MAGENTA_DYE, 2) + .output(.1f, Items.PINK_DYE) + .whenModLoaded(Mods.ATM.getId())), + + ATMO_HOT_BRUSH = create(Mods.ATM.recipeId("hot_monkey_brush"), b -> b.duration(50) + .require(Mods.ATM, "hot_monkey_brush") + .output(Items.ORANGE_DYE, 2) + .output(.05f, Items.RED_DYE) + .output(.05f, Items.YELLOW_DYE) + .whenModLoaded(Mods.ATM.getId())), + + ATMO_SCALDING_BRUSH = create(Mods.ATM.recipeId("scalding_monkey_brush"), b -> b.duration(50) + .require(Mods.ATM, "scalding_monkey_brush") + .output(Items.RED_DYE, 2) + .output(.1f, Items.RED_DYE, 2) + .output(.1f, Items.ORANGE_DYE) + .whenModLoaded(Mods.ATM.getId())), + + ATMO_WARM_BRUSH = create(Mods.ATM.recipeId("warm_monkey_brush"), b -> b.duration(50) + .require(Mods.ATM, "scalding_monkey_brush") + .output(Items.YELLOW_DYE, 2) + .output(.1f, Items.YELLOW_DYE, 2) + .output(.1f, Items.ORANGE_DYE) + .whenModLoaded(Mods.ATM.getId())), + + ATMO_YUCCA_FLOWER = create(Mods.ATM.recipeId("yucca_flower"), b -> b.duration(50) + .require(Mods.ATM, "yucca_flower") + .output(Items.LIGHT_GRAY_DYE, 2) + .output(.05f, Items.WHITE_DYE) + .whenModLoaded(Mods.ATM.getId())), + + // Autumnity + + AUTUM_CROCUS = create(Mods.AUTUM.recipeId("autumn_crocus"), b -> b.duration(50) + .require(Mods.AUTUM, "autumn_crocus") + .output(Items.MAGENTA_DYE, 2) + .output(.1f, Items.PINK_DYE, 2) + .output(.1f, Items.PURPLE_DYE) + .whenModLoaded(Mods.AUTUM.getId())), + + // Biomes O' Plenty + BOP_HYDRANGEA = bopFlower("blue_hydrangea", List.of(1f, .05f, .25f), + List.of(Items.LIGHT_BLUE_DYE, Items.GREEN_DYE, Items.LIGHT_BLUE_DYE), List.of(3,2,2)), + + BOP_BLOSSOM = bopFlower("burning_blossom", List.of(1f,.1f), + List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2,1)), + + BOP_GLOWFLOWER = bopFlower("glowflower", List.of(1f, .1f), + List.of(Items.CYAN_DYE, Items.WHITE_DYE), List.of(2,1)), + + BOP_LAVENDER = bopFlower("lavender", List.of(1f, .05f), + List.of(Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BOP_COSMOS = bopFlower("orange_cosmos", List.of(1f, .1f), + List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2,1)), + + BOP_DAFFODIL = bopFlower("pink_daffodil", List.of(1f, .25f, .05f), + List.of(Items.PINK_DYE, Items.MAGENTA_DYE, Items.CYAN_DYE), List.of(2,1,1)), + + BOP_HIBISCUS = bopFlower("pink_hibiscus", List.of(1f, .25f, .1f), + List.of(Items.PINK_DYE, Items.YELLOW_DYE, Items.GREEN_DYE), List.of(2,1,1)), + + BOP_ROSE = bopFlower("rose", List.of(1f, .05f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2,1)), + + BOP_VIOLET = bopFlower("violet", 1f, Items.PURPLE_DYE,2), + + BOP_WILDFLOWER = bopFlower("wildflower", List.of(1f, .1f), + List.of(Items.MAGENTA_DYE, Items.LIME_DYE), List.of(2,1)), + + BOP_LILY = bopFlower("wilted_lily", 1f, Items.GRAY_DYE,2), + + // Botania + BTN_PETALS = botaniaPetals("black", "blue", "brown", "cyan", "gray", "green", "light_blue", + "light_gray", "lime", "magenta", "orange", "pink", "purple", "red", "white", "yellow"), + + // Buzzier Bees + + BB_BUTTERCUP = create(Mods.BB.recipeId("buttercup"), b -> b.duration(50) + .require(Mods.BB, "buttercup") + .output(Items.YELLOW_DYE, 2) + .output(.1f, Items.LIME_DYE) + .whenModLoaded(Mods.BB.getId())), + + BB_PINK_CLOVER = create(Mods.BB.recipeId("pink_clover"), b -> b.duration(50) + .require(Mods.BB, "buttercup") + .output(Items.PINK_DYE, 2) + .output(.1f, Items.LIME_DYE) + .whenModLoaded(Mods.BB.getId())), + + BB_WHITE_CLOVER = create(Mods.BB.recipeId("white_clover"), b -> b.duration(50) + .require(Mods.BB, "buttercup") + .output(Items.WHITE_DYE, 2) + .output(.1f, Items.LIME_DYE) + .whenModLoaded(Mods.BB.getId())), + + // Oh The Biomes You'll Go + + BYG_ALLIUM_BUSH = bygFlower("allium_flower_bush", List.of(1f,.05f,.25f), + List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3,2,2)), + + BYG_BELLFLOWER = bygFlower("alpine_bellflower", List.of(1f,.1f,.1f), + List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.GREEN_DYE), List.of(2,2,1)), + + BYG_AMARANTH = bygFlower("amaranth", List.of(1f,.05f,.25f), + List.of(Items.RED_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3,2,2)), + + BYG_ANGELICA = bygFlower("angelica", List.of(1f,.1f), + List.of(Items.WHITE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_BEGONIA = bygFlower("begonia", List.of(1f,.1f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_BISTORT = bygFlower("bistort", List.of(1f,.1f,.1f), + List.of(Items.PINK_DYE, Items.RED_DYE, Items.GREEN_DYE), List.of(2,2,1)), + + BYG_BLACK_ROSE = bygFlower("black_rose", List.of(1f,.1f), + List.of(Items.BLACK_DYE, Items.BLACK_DYE), List.of(2,1)), + + BYG_BLUE_SAGE = bygFlower("blue_sage", List.of(1f,.1f,.1f), + List.of(Items.BLUE_DYE, Items.CYAN_DYE, Items.GREEN_DYE), List.of(2,2,1)), + + BYG_CALIFORNIA_POPPY = bygFlower("california_poppy", List.of(1f,.05f), + List.of(Items.ORANGE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_CROCUS = bygFlower("crocus", List.of(1f,.1f,.1f), + List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.GREEN_DYE), List.of(2,2,1)), + + BYG_CYAN_AMARANTH = bygFlower("cyan_amaranth", List.of(1f,.05f,.25f), + List.of(Items.RED_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3,2,2)), + + BYG_CYAN_ROSE = bygFlower("cyan_rose", List.of(1f,.1f), + List.of(Items.CYAN_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_CYAN_TULIP = bygFlower("cyan_tulip", List.of(1f,.1f), + List.of(Items.CYAN_DYE, Items.LIME_DYE), List.of(2,1)), + + BYG_DAFFODIL = bygFlower("daffodil", List.of(1f,.1f,.1f), + List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(2,1,1)), + + BYG_DELPHINIUM = bygFlower("delphinium", List.of(1f,.1f), + List.of(Items.BLUE_DYE, Items.BLUE_DYE), List.of(3,1)), + + BYG_FAIRY_SLIPPER = bygFlower("fairy_slipper", List.of(1f,.1f,.1f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2,2,1)), + + BYG_FIRECRACKER_BUSH = bygFlower("firecracker_flower_bush", List.of(1f,.05f,.25f), + List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3,2,2)), + + BYG_FOXGLOVE = bygFlower("foxglove", List.of(1f,.25f,.25f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2,1,1)), + + BYG_GREEN_TULIP = bygFlower("green_tulip", List.of(1f,.1f), + List.of(Items.LIME_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_GUZMANIA = bygFlower("guzmania", List.of(1f,.25f,.25f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2,1,1)), + + BYG_HYDRANGEA = bygFlower("hydrangea_bush", List.of(1f,.1f,.1f), + List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.WHITE_DYE), List.of(2,2,1)), + + BYG_INCAN_LILY = bygFlower("incan_lily", List.of(1f,.1f,.1f), + List.of(Items.ORANGE_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(2,1,1)), + + BYG_IRIS = bygFlower("iris", List.of(1f,.05f), + List.of(Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_ORCHID = bygFlower("orchid", List.of(1f,.05f), + List.of(Items.PINK_DYE, Items.WHITE_DYE), List.of(2,1)), + + BYG_KOVAN = bygFlower("kovan_flower", List.of(1f,.2f,.05f), + List.of(Items.RED_DYE, Items.LIME_DYE, Items.GREEN_DYE), List.of(2,1,1)), + + BYG_LAZARUS_BELLFLOWER = bygFlower("lazarus_bellflower", List.of(1f,.1f), + List.of(Items.MAGENTA_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_LOLIPOP = bygFlower("lolipop_flower", List.of(1f,.25f,.05f), + List.of(Items.YELLOW_DYE, Items.YELLOW_DYE, Items.GREEN_DYE), List.of(2,1,1)), + + BYG_MAGENTA_AMARANTH = bygFlower("magenta_amaranth", List.of(1f,.05f,.25f), + List.of(Items.MAGENTA_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3,2,2)), + + BYG_MAGENTA_TULIP = bygFlower("magenta_tulip", List.of(1f,.1f), + List.of(Items.MAGENTA_DYE, Items.LIME_DYE), List.of(2,1)), + + BYG_ORANGE_AMARANTH = bygFlower("orange_amaranth", List.of(1f,.05f,.25f), + List.of(Items.RED_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3,2,2)), + + BYG_DAISY = bygFlower("orange_daisy", List.of(1f,.2f,.05f), + List.of(Items.ORANGE_DYE, Items.YELLOW_DYE, Items.LIME_DYE), List.of(2,1,1)), + + BYG_OSIRIA_ROSE = bygFlower("osiria_rose", List.of(1f,.1f), + List.of(Items.BLACK_DYE, Items.BLACK_DYE), List.of(2,1)), + + BYG_PEACH_LEATHER = bygFlower("peach_leather_flower", List.of(1f,.25f), + List.of(Items.PINK_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_PINK_ALLIUM = bygFlower("pink_allium", List.of(1f,.1f,.1f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.PURPLE_DYE), List.of(2,2,1)), + + BYG_PINK_ALLIUM_BUSH = bygFlower("pink_allium_flower_bush", List.of(1f,.05f,.25f), + List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3,2,2)), + + BYG_PINK_ANEMONE = bygFlower("pink_anemone", List.of(1f,.1f), + List.of(Items.PINK_DYE, Items.PURPLE_DYE), List.of(2,2)), + + BYG_PINK_DAFODIL = bygFlower("pink_daffodil", List.of(1f,.1f,.1f), + List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.WHITE_DYE), List.of(2,1,1)), + + BYG_PROTEA = bygFlower("protea_flower", List.of(1f,.1f,.05f), + List.of(Items.MAGENTA_DYE, Items.LIME_DYE, Items.PURPLE_DYE), List.of(2,1,1)), + + BYG_PURPLE_AMARANTH = bygFlower("purple_amaranth", List.of(1f,.05f,.25f), + List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.PURPLE_DYE), List.of(3,2,2)), + + BYG_PURPLE_SAGE = bygFlower("purple_rose", List.of(1f,.1f), + List.of(Items.PURPLE_DYE, Items.MAGENTA_DYE), List.of(2,1)), + + BYG_PURPLE_TULIP = bygFlower("purple_tulip", List.of(1f,.1f), + List.of(Items.PURPLE_DYE, Items.LIME_DYE), List.of(2,1)), + + BYG_RICHEA = bygFlower("richea", List.of(1f,.1f,.05f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2,1,1)), + + BYG_ROSE = bygFlower("rose", List.of(1f,.1f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_SILVER_VASE = bygFlower("silver_vase_flower", List.of(1f,.1f,.05f), + List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.WHITE_DYE), List.of(2,1,1)), + + BYG_SNOWDROPS = bygFlower("snowdrops", List.of(1f,.1f,.1f), + List.of(Items.WHITE_DYE, Items.LIME_DYE, Items.WHITE_DYE), List.of(2,1,1)), + + BYG_TALL_ALLIUM = bygFlower("tall_allium", List.of(1f,.05f,.25f), + List.of(Items.PURPLE_DYE, Items.PURPLE_DYE, Items.MAGENTA_DYE), List.of(3,2,2)), + + BYG_TALL_PINK_ALLIUM = bygFlower("tall_pink_allium", List.of(1f,.05f,.25f), + List.of(Items.PINK_DYE, Items.PINK_DYE, Items.MAGENTA_DYE), List.of(3,2,2)), + + BYG_TORCH_GINGER = bygFlower("torch_ginger", List.of(1f,.1f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_VIOLET_LEATHER = bygFlower("violet_leather_flower", List.of(1f,.25f), + List.of(Items.BLUE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_WHITE_ANEMONE = bygFlower("white_anemone", List.of(1f,.1f), + List.of(Items.WHITE_DYE, Items.LIGHT_GRAY_DYE), List.of(2,2)), + + BYG_PUFFBALL = create(Mods.BYG.recipeId("white_puffball_cap"), b -> b.duration(150) + .require(Mods.BYG, "white_puffball_cap") + .output(.25f, Mods.BYG, "white_puffball_spores", 1) + .whenModLoaded(Mods.BYG.getId())), + + BYG_WHITE_SAGE = bygFlower(Mods.BYG.recipeId("white_sage"), List.of(1f, .1f), + List.of(Items.WHITE_DYE, Items.GRAY_DYE), List.of(2,1)), + + BYG_WINTER_CYCLAMEN = bygFlower(Mods.BYG.recipeId("winter_cyclamen"), List.of(1f, .1f), + List.of(Items.CYAN_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_WINTER_ROSE = bygFlower("winter_rose", List.of(1f,.1f), + List.of(Items.WHITE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_WINTER_SCILLA = bygFlower("winter_scilla", List.of(1f,.1f), + List.of(Items.LIGHT_BLUE_DYE, Items.GREEN_DYE), List.of(2,1)), + + BYG_YELLOW_DAFFODIL = bygFlower("yellow_daffodil", List.of(1f,.1f,.1f), + List.of(Items.YELLOW_DYE, Items.GREEN_DYE, Items.PINK_DYE), List.of(2,1,1)), + + BYG_YELLOW_TULIP = bygFlower("yellow_tulip", List.of(1f,.1f), + List.of(Items.YELLOW_DYE, Items.LIME_DYE), List.of(2,1)), + + // Environmental + + ENV_BIRD_OF_PARADISE = envFlower("bird_of_paradise", List.of(1f,.25f,.25f), + List.of(Items.ORANGE_DYE, Items.BLUE_DYE, Items.RED_DYE), List.of(3,1,1)), + + ENV_BLUE_DELPHINIUM = envFlower("blue_delphinium", List.of(1f,.1f), + List.of(Items.BLUE_DYE, Items.BLUE_DYE), List.of(3,1)), + + ENV_BLUEBELL = envFlower("bluebell", List.of(1f), + List.of(Items.BLUE_DYE), List.of(2)), + + ENV_CARTWHEEL = envFlower("cartwheel", List.of(1f,.1f), + List.of(Items.PINK_DYE, Items.ORANGE_DYE), List.of(2,1)), + + ENV_DIANTHUS = envFlower("dianthus", List.of(1f,.1f), + List.of(Items.GREEN_DYE, Items.GREEN_DYE), List.of(2,1)), + + ENV_MAGENTA_HIBISCUS = envFlower("magenta_hibiscus", List.of(1f,.1f), + List.of(Items.MAGENTA_DYE, Items.MAGENTA_DYE), List.of(2,1)), + + ENV_ORANGE_HIBISCUS = envFlower("orange_hibiscus", List.of(1f,.1f), + List.of(Items.ORANGE_DYE, Items.ORANGE_DYE), List.of(2,1)), + + ENV_PINK_DELPHINIUM = envFlower("pink_delphinium", List.of(1f,.1f), + List.of(Items.PINK_DYE, Items.PINK_DYE), List.of(3,1)), + + ENV_PINK_HIBISCUS = envFlower("pink_hibiscus", List.of(1f,.1f), + List.of(Items.PINK_DYE, Items.PINK_DYE), List.of(2,1)), + + ENV_PURPLE_DELPHINIUM = envFlower("purple_delphinium", List.of(1f,.1f), + List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(3,1)), + + ENV_PURPLE_HIBISCUS = envFlower("purple_hibiscus", List.of(1f,.1f), + List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(2,1)), + + ENV_RED_HIBISCUS = envFlower("red_hibiscus", List.of(1f,.1f), + List.of(Items.RED_DYE, Items.RED_DYE), List.of(2,1)), + + ENV_RED_LOTUS = envFlower("red_lotus_flower", List.of(1f,.1f), + List.of(Items.RED_DYE, Items.RED_DYE), List.of(2,1)), + + ENV_VIOLET = envFlower("violet", List.of(1f,.1f), + List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(2,1)), + + ENV_WHITE_DELPHINIUM = envFlower("white_delphinium", List.of(1f,.1f), + List.of(Items.WHITE_DYE, Items.WHITE_DYE), List.of(3,1)), + + ENV_WHITE_LOTUS_FLOWER = envFlower("white_lotus_flower", List.of(1f,.1f), + List.of(Items.WHITE_DYE, Items.LIME_DYE), List.of(2,1)), + + ENV_YELLOW_HIBISCUS = envFlower("yellow_hibiscus", List.of(1f,.1f), + List.of(Items.YELLOW_DYE, Items.YELLOW_DYE), List.of(2,1)), + + // Duidcraft + DC_LAVENDER = create(Mods.DRUIDCRAFT.recipeId("lavender"), b -> b.duration(50) + .require(Mods.DRUIDCRAFT, "lavender") + .output(Items.PURPLE_DYE, 2) + .output(.1f, Items.PURPLE_DYE) + .whenModLoaded(Mods.DRUIDCRAFT.getId())), + + // Supplementaries + SUP_FLAX = create(Mods.SUP.recipeId("flax"), b -> b.duration(150) + .require(Mods.SUP, "flax") + .output(Items.STRING) + .output(.25f, Items.STRING, 2) + .output(.25f, Mods.SUP, "flax_seeds", 1) + .whenModLoaded(Mods.SUP.getId())), + + // Tinkers' Construct + TIC_NERCOTIC_BONE = create(Mods.TIC.recipeId("nercotic_bone"), b -> b.duration(100) + .require(Mods.TIC, "necrotic_bone") + .output(Items.BONE_MEAL, 3) + .output(.25f, Items.BLACK_DYE) + .output(.25f, Items.BONE_MEAL, 3) + .whenModLoaded(Mods.TIC.getId())), + + // Upgrade Aquatic + + UA_FLOWERING_RUSH = create(Mods.UA.recipeId("flowering_rush"), b -> b.duration(50) + .require(Mods.UA, "flowering_rush") + .output(Items.PINK_DYE, 3) + .output(.25f, Items.PINK_DYE, 2) + .whenModLoaded(Mods.UA.getId())), + + UA_PINK_SEAROCKET = create(Mods.UA.recipeId("pink_searocket"), b -> b.duration(50) + .require(Mods.UA, "pink_searocket") + .output(Items.PINK_DYE, 2) + .output(.1f, Items.GREEN_DYE) + .whenModLoaded(Mods.UA.getId())), + + UA_WHITE_SEAROCKET = create(Mods.UA.recipeId("white_searocket"), b -> b.duration(50) + .require(Mods.UA, "white_searocket") + .output(Items.WHITE_DYE, 2) + .output(.1f, Items.GREEN_DYE) + .whenModLoaded(Mods.UA.getId())), + + // Regions Unexplored + + RU_ALPHA_DANDELION = ruFlower("alpha_dandelion", List.of(1f, 0.05f), + List.of(Items.YELLOW_DYE, Items.YELLOW_DYE), List.of(2, 1)), + + RU_ALPHA_ROSE = ruFlower("alpha_rose", List.of(1f, 0.05f), + List.of(Items.RED_DYE, Items.RED_DYE), List.of(2, 1)), + + RU_ASTER = ruFlower("aster", List.of(1f, 0.2f, 0.05f), + List.of(Items.LIGHT_BLUE_DYE, Items.WHITE_DYE, Items.LIGHT_GRAY_DYE), List.of(2, 1, 1)), + + RU_BLACK_SNOWBELLE = ruFlower("black_snowbelle", List.of(1f), + List.of(Items.BLACK_DYE), List.of(2)), + + RU_BLEEDING_HEART = ruFlower("bleeding_heart", List.of(1f, 0.1f), + List.of(Items.MAGENTA_DYE, Items.PINK_DYE), List.of(2, 1)), + + RU_BLUE_LUPINE = ruFlower("blue_lupine", List.of(1f), + List.of(Items.BLUE_DYE), List.of(2)), + + RU_BLUE_SNOWBELLE = ruFlower("blue_snowbelle", List.of(1f), + List.of(Items.BLUE_DYE), List.of(2)), + + RU_BROWN_SNOWBELLE = ruFlower("brown_snowbelle", List.of(1f), + List.of(Items.BROWN_DYE), List.of(2)), + + RU_CACTUS_FLOWER = ruFlower("cactus_flower", List.of(1f, 0.2f, 0.1f), + List.of(Items.MAGENTA_DYE, Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + + RU_CYAN_SNOWBELLE = ruFlower("cyan_snowbelle", List.of(1f), + List.of(Items.CYAN_DYE), List.of(2)), + + RU_DAISY = ruFlower("daisy", List.of(1f, 0.2f, 0.05f), + List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + + RU_DAY_LILY = ruFlower("day_lily", List.of(1f, 0.1f, 0.1f), + List.of(Items.ORANGE_DYE, Items.LIME_DYE, Items.RED_DYE), List.of(2, 1, 1)), + + RU_DORCEL = ruFlower("dorcel", List.of(1f, 0.1f), + List.of(Items.BLACK_DYE, Items.BROWN_DYE), List.of(2, 1)), + + RU_FELICIA_DAISY = ruFlower("felicia_daisy", List.of(1f, 0.2f, 0.05f), + List.of(Items.LIGHT_BLUE_DYE, Items.BLUE_DYE, Items.WHITE_DYE), List.of(2, 1, 1)), + + RU_FIREWEED = ruFlower("fireweed", List.of(1f), + List.of(Items.MAGENTA_DYE), List.of(2)), + + RU_GLITERING_BLOOM = ruFlower("glistering_bloom", List.of(1f, 0.25f, 0.25f), + List.of(Items.PINK_DYE, Items.MAGENTA_DYE, Items.LIGHT_BLUE_DYE), List.of(2, 1, 1)), + + RU_GRAY_SNOWBELLE = ruFlower("gray_snowbelle", List.of(1f), + List.of(Items.GRAY_DYE), List.of(2)), + + RU_GREEN_SNOWBELLE = ruFlower("green_snowbelle", List.of(1f), + List.of(Items.GREEN_DYE), List.of(2)), + + RU_HIBISCUS = ruFlower("hibiscus", List.of(1f, 0.2f), + List.of(Items.YELLOW_DYE, Items.RED_DYE), List.of(2, 1)), + + RU_HYSSOP = ruFlower("hyssop", List.of(1f, 0.1f, 0.1f), + List.of(Items.PURPLE_DYE, Items.MAGENTA_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + + RU_LIGHT_BLUE_SNOWBELLE = ruFlower("light_blue_snowbelle", List.of(1f), + List.of(Items.LIGHT_BLUE_DYE), List.of(2)), + + RU_LIGHT_GRAY_SNOWBELLE = ruFlower("light_gray_snowbelle", List.of(1f), + List.of(Items.LIGHT_GRAY_DYE), List.of(2)), + + RU_LIME_SNOWBELLE = ruFlower("lime_snowbelle", List.of(1f), + List.of(Items.LIME_DYE), List.of(2)), + + RU_MAGENTA_SNOWBELLE = ruFlower("magenta_snowbelle", List.of(1f), + List.of(Items.MAGENTA_DYE), List.of(2)), + + RU_MALLOW = ruFlower("mallow", List.of(1f, 0.1f), + List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2, 1)), + + RU_ORANGE_CONEFLOWER = ruFlower("orange_coneflower", List.of(1f), + List.of(Items.ORANGE_DYE), List.of(2)), + + RU_ORANGE_SNOWBELLE = ruFlower("orange_snowbelle", List.of(1f), + List.of(Items.ORANGE_DYE), List.of(2)), + + RU_PINK_LUPINE = ruFlower("pink_lupine", List.of(1f), + List.of(Items.PINK_DYE), List.of(2)), + + RU_PINK_SNOWBELLE = ruFlower("pink_snowbelle", List.of(1f), + List.of(Items.PINK_DYE), List.of(2)), + + RU_POPPY_BUSH = ruFlower("poppy_bush", List.of(1f, 0.1f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + + RU_PURPLE_CONEFLOWER = ruFlower("purple_coneflower", List.of(1f), + List.of(Items.PURPLE_DYE), List.of(2)), + + RU_PURPLE_LUPINE = ruFlower("purple_lupine", List.of(1f), + List.of(Items.PURPLE_DYE), List.of(2)), + + RU_PURPLE_SNOWBELLE = ruFlower("purple_snowbelle", List.of(1f), + List.of(Items.PURPLE_DYE), List.of(2)), + + RU_RED_LUPINE = ruFlower("red_lupine", List.of(1f), + List.of(Items.RED_DYE), List.of(2)), + + RU_RED_SNOWBELLE = ruFlower("red_snowbelle", List.of(1f), + List.of(Items.RED_DYE), List.of(2)), + + RU_SALMON_POPPY_BUSH = ruFlower("salmon_poppy_bush", List.of(1f, 0.1f), + List.of(Items.PINK_DYE, Items.GREEN_DYE), List.of(2, 1)), + + RU_TASSEL = ruFlower("tassel", List.of(1f, 0.2f, 0.05f), + List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + + RU_TSUBAKI = ruFlower("tsubaki", List.of(1f, 0.1f), + List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + + RU_WARATAH = ruFlower("waratah", List.of(1f, 0.2f, 0.1f), + List.of(Items.RED_DYE, Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + + RU_WHITE_SNOWBELLE = ruFlower("white_snowbelle", List.of(1f), + List.of(Items.WHITE_DYE), List.of(2)), + + RU_WHITE_TRILLIUM = ruFlower("white_trillium", List.of(1f, 0.2f, 0.05f), + List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + + RU_WILTING_TRILLIUM = ruFlower("wilting_trillium", List.of(1f, 0.1f), + List.of(Items.BROWN_DYE, Items.LIGHT_GRAY_DYE), List.of(2, 1)), + + RU_YELLOW_LUPINE = ruFlower("yellow_lupine", List.of(1f), + List.of(Items.YELLOW_DYE), List.of(2)), + + RU_YELLOW_SNOWBELLE = ruFlower("yellow_snowbelle", List.of(1f), + List.of(Items.YELLOW_DYE), List.of(2)) ; @@ -198,6 +730,123 @@ protected GeneratedRecipe metalOre(String name, ItemEntry crushe .output(crushed.get())); } + protected GeneratedRecipe bopFlower(String input, List chances, + List dyes, List amounts) { + if (chances.size() == 2) { + return create(Mods.BOP.recipeId(input), b -> b.duration(50) + .require(Mods.BOP, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .whenModLoaded(Mods.BOP.getId())); + } else if (chances.size() == 3) { + return create(Mods.BOP.recipeId(input), b -> b.duration(50) + .require(Mods.BOP, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .output(chances.get(2), dyes.get(2), amounts.get(2)) + .whenModLoaded(Mods.BOP.getId())); + } else if (chances.size() == 1) { + return create(Mods.BOP.recipeId(input), b -> b.duration(50) + .require(Mods.BOP, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .whenModLoaded(Mods.BOP.getId())); + } else { + return null; + } + } + + protected GeneratedRecipe bygFlower(String input, List chances, + List dyes, List amounts) { + if (chances.size() == 2) { + return create(Mods.BYG.recipeId(input), b -> b.duration(50) + .require(Mods.BYG, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .whenModLoaded(Mods.BYG.getId())); + } else if (chances.size() == 3) { + return create(Mods.BYG.recipeId(input), b -> b.duration(50) + .require(Mods.BYG, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .output(chances.get(2), dyes.get(2), amounts.get(2)) + .whenModLoaded(Mods.BYG.getId())); + } else if (chances.size() == 1) { + return create(Mods.BYG.recipeId(input), b -> b.duration(50) + .require(Mods.BYG, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .whenModLoaded(Mods.BYG.getId())); + } else { + return null; + } + } + + protected GeneratedRecipe envFlower(String input, List chances, + List dyes, List amounts) { + if (chances.size() == 2) { + return create(Mods.ENV.recipeId(input), b -> b.duration(50) + .require(Mods.ENV, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .whenModLoaded(Mods.ENV.getId())); + } else if (chances.size() == 3) { + return create(Mods.ENV.recipeId(input), b -> b.duration(50) + .require(Mods.ENV, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .output(chances.get(2), dyes.get(2), amounts.get(2)) + .whenModLoaded(Mods.ENV.getId())); + } else if (chances.size() == 1) { + return create(Mods.ENV.recipeId(input), b -> b.duration(50) + .require(Mods.ENV, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .whenModLoaded(Mods.ENV.getId())); + } else { + return null; + } + } + + protected GeneratedRecipe bopFlower(String input, Float chance, Item dye, int amount) { + return create(Mods.BOP.recipeId(input), b -> b.duration(50) + .require(Mods.BOP, input) + .output(chance, dye, amount) + .whenModLoaded(Mods.BOP.getId())); + } + + protected GeneratedRecipe botaniaPetals(String... colors) { + for (String color : colors) { + create(Mods.BTN.recipeId(color + "_petal"), b -> b.duration(50) + .require(AllTags.optionalTag(ForgeRegistries.ITEMS, + new ResourceLocation(Mods.BTN.getId(), "petals/" + color))) + .output(Mods.MC, color + "_dye")); + } + return null; + } + + protected GeneratedRecipe ruFlower(String input, List chances, + List dyes, List amounts) { + if (chances.size() == 2) { + return create(Mods.RU.recipeId(input), b -> b.duration(50) + .require(Mods.RU, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .whenModLoaded(Mods.RU.getId())); + } else if (chances.size() == 3) { + return create(Mods.RU.recipeId(input), b -> b.duration(50) + .require(Mods.RU, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .output(chances.get(1), dyes.get(1), amounts.get(1)) + .output(chances.get(2), dyes.get(2), amounts.get(2)) + .whenModLoaded(Mods.RU.getId())); + } else if (chances.size() == 1) { + return create(Mods.RU.recipeId(input), b -> b.duration(50) + .require(Mods.RU, input) + .output(chances.get(0), dyes.get(0), amounts.get(0)) + .whenModLoaded(Mods.RU.getId())); + } else { + return null; + } + } + public MillingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java index 0ed57a8c48..28bbb615dd 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java @@ -56,10 +56,32 @@ public class MixingRecipeGen extends ProcessingRecipeGen { ANDESITE_ALLOY_FROM_ZINC = create("andesite_alloy_from_zinc", b -> b.require(Blocks.ANDESITE) .require(I.zincNugget()) - .output(I.andesite(), 1)) + .output(I.andesite(), 1)), + + // AE2 + + AE2_FLUIX = create(Mods.AE2.recipeId("fluix_crystal"), b -> b.require(Tags.Items.DUSTS_REDSTONE) + .require(Fluids.WATER, 250) + .require(Mods.AE2, "charged_certus_quartz_crystal") + .require(Tags.Items.GEMS_QUARTZ) + .output(1f, Mods.AE2, "fluix_crystal", 2) + .whenModLoaded(Mods.AE2.getId())), + + // Regions Unexplored + + RU_PEAT_MUD = moddedMud(Mods.RU, "peat"), + RU_SILT_MUD = moddedMud(Mods.RU, "silt") ; + public GeneratedRecipe moddedMud(Mods mod, String name) { + String mud = name + "_mud"; + return create(mod.recipeId(mud), b -> b.require(Fluids.WATER, 250) + .require(mod, name + "_dirt") + .output(mod, mud) + .whenModLoaded(mod.getId())); + } + public MixingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java b/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java index 447c74e564..41b20ea5d3 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java @@ -9,7 +9,6 @@ public enum Mods { MEK("mekanism", b -> b.reverseMetalPrefix()), TH("thermal"), IE("immersiveengineering", b -> b.reverseMetalPrefix()), - FD("farmersdelight"), ARS_N("ars_nouveau"), BSK("blue_skies"), @@ -25,13 +24,38 @@ public enum Mods { BOP("biomesoplenty"), TF("twilightforest"), ECO("ecologics"), - - ENV("environmental"), + IC2("ic2", b -> b.reverseMetalPrefix()), ATM("atmospheric"), ATM_2("atmospheric", b -> b.omitWoodSuffix()), + AUTUM("autumnity"), + DRUIDCRAFT("druidcraft"), + ENDER("endergetic"), + PVJ("projectvibrantjourneys"), + UA("upgrade_aquatic"), + BEF("betterendforge"), + ENV("environmental"), + SUP("supplementaries"), + AM("alexsmobs"), + NEA("neapolitan"), + AE2("ae2"), + MC("minecraft"), + BB("buzzier_bees"), + SILENT_GEMS("silentgems"), + SF("simplefarming"), + OREGANIZED("oreganized"), + GS("galosphere"), + VH("the_vault"), IX("infernalexp"), GOOD("goodending"), BMK("biomemakeover"), + NE("nethers_exoticism"), + RU("regions_unexplored"), + EO("elementaryores"), + IF("iceandfire"), + ENS("exnihilosequentia"), + AET("aether"), + HH("hauntedharvest"), + VMP("vampirism"), // Fabric Mods TR("techreborn"), diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java index a58b557782..4026940c66 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java @@ -6,6 +6,7 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Blocks; public class PressingRecipeGen extends ProcessingRecipeGen { @@ -23,10 +24,92 @@ public class PressingRecipeGen extends ProcessingRecipeGen { COPPER = create("copper_ingot", b -> b.require(I.copper()) .output(AllItems.COPPER_SHEET.get())), BRASS = create("brass_ingot", b -> b.require(I.brass()) - .output(AllItems.BRASS_SHEET.get())) + .output(AllItems.BRASS_SHEET.get())), + + // Atmospheric + ATM = moddedPaths(Mods.ATM, "crustose"), + + // Better End Forge + + BEF = moddedPaths(Mods.BEF, "amber_moss", "cave_moss", "chorus_nylium", "crystal_moss", + "end_moss", "end_myclium", "jungle_moss", "pink_moss", "shadow_grass"), + // Environmental + ENV_MYCELIUM = create("compat/environmental/mycelium_path", b -> b.require(Blocks.MYCELIUM) + .output(Mods.ENV, "mycelium_path") + .whenModLoaded(Mods.ENV.getId())), + + ENV_PODZOL = create("compat/environmental/podzol_path", b -> b.require(Blocks.PODZOL) + .output(Mods.ENV, "podzol_path") + .whenModLoaded(Mods.ENV.getId())), + + // Oh The Biomes You'll Go + + BYG = moddedPaths(Mods.BYG, "lush_grass"), + + //Infernal Expansion + IX_CRIMSON_PATH = create(Mods.IX.recipeId("crimson_nylium_path"), b -> b.require(Blocks.CRIMSON_NYLIUM) + .output(Mods.IX, "crimson_nylium_path") + .whenModLoaded(Mods.IX.getId())), + + IX_WARPED_PATH = create(Mods.IX.recipeId("warped_nylium_path"), b -> b.require(Blocks.WARPED_NYLIUM) + .output(Mods.IX, "warped_nylium_path") + .whenModLoaded(Mods.IX.getId())), + IX_SOUL_PATH = create(Mods.IX.recipeId("soul_soil_path"), b -> b.require(Blocks.SOUL_SOIL) + .output(Mods.IX, "soul_soil_path") + .whenModLoaded(Mods.IX.getId())), + + // Aether + + AET_DIRT_PATH = create("aether_dirt_path", b -> b.require(Mods.AET, "aether_dirt") + .output(Mods.AET, "aether_dirt_path") + .whenModLoaded(Mods.AET.getId())), + + AET_DIRT_PATH_GRASS = create("aether_dirt_path_from_grass", b -> b.require(Mods.AET, "aether_grass_block") + .output(Mods.AET, "aether_dirt_path") + .whenModLoaded(Mods.AET.getId())), + + // Regions Unexplored + + RU_PEAT_PATH = create("peat_dirt_path", b -> b.require(Mods.RU, "peat_dirt") + .output(Mods.RU, "peat_dirt_path") + .whenModLoaded(Mods.RU.getId())), + + RU_PEAT_PATH_GRASS = create("peat_dirt_path_from_grass", b -> b.require(Mods.RU, "peat_grass_block") + .output(Mods.RU, "peat_dirt_path") + .whenModLoaded(Mods.RU.getId())), + + RU_SILT_PATH = create("silt_dirt_path", b -> b.require(Mods.RU, "silt_dirt") + .output(Mods.RU, "silt_dirt_path") + .whenModLoaded(Mods.RU.getId())), + + RU_SILT_PATH_GRASS = create("silt_dirt_path_from_grass", b -> b.require(Mods.RU, "silt_grass_block") + .output(Mods.RU, "silt_dirt_path") + .whenModLoaded(Mods.RU.getId())), + + // Vampirism + + VMP_CURSED_PATH = moddedPaths(Mods.VMP, "cursed_earth"), + + VMP_CURSED_PATH_GRASS = create("cursed_earth_path_from_grass", b -> b.require(Mods.RU, "cursed_grass") + .output(Mods.VMP, "cursed_earth_path") + .whenModLoaded(Mods.VMP.getId())) + ; + GeneratedRecipe moddedPaths(Mods mod, String... blocks) { + for(String block : blocks) { + moddedCompacting(mod, block, block + "_path"); + } + return null; + } + + GeneratedRecipe moddedCompacting(Mods mod, String input, String output) { + return create("compat/" + mod.getId() + "/" + output, b -> b.require(mod, input) + .output(mod, output) + .whenModLoaded(mod.getId())); + } + public PressingRecipeGen(FabricDataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java index a65a564992..01339bb1b1 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; +import com.simibubi.create.AllTags; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.Create; import com.simibubi.create.content.fluids.transfer.FillingRecipe; @@ -53,7 +54,7 @@ public class SequencedAssemblyRecipeGen extends CreateRecipeProvider { .addStep(DeployerApplicationRecipe::new, rb -> rb.require(I.largeCog())) .addStep(DeployerApplicationRecipe::new, rb -> rb.require(I.ironNugget()))), - REINFORCED_SHEET = create("sturdy_sheet", b -> b.require(AllItems.POWDERED_OBSIDIAN.get()) + REINFORCED_SHEET = create("sturdy_sheet", b -> b.require(AllItemTags.OBSIDIAN_DUST.tag) .transitionTo(AllItems.INCOMPLETE_REINFORCED_SHEET.get()) .addOutput(AllItems.STURDY_SHEET.get(), 1) .loops(1) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index ba6cff8844..396810a66e 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -800,6 +800,13 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("CBC") .pattern(" C ")), + VERTICAL_GEARBOX = create(AllItems.VERTICAL_GEARBOX).unlockedBy(I::cog) + .viaShaped(b -> b.define('C', I.cog()) + .define('B', I.andesiteCasing()) + .pattern("C C") + .pattern(" B ") + .pattern("C C")), + GEARBOX_CYCLE = conversionCycle(ImmutableList.of(AllBlocks.GEARBOX, AllItems.VERTICAL_GEARBOX)), MYSTERIOUS_CUCKOO_CLOCK = create(AllBlocks.MYSTERIOUS_CUCKOO_CLOCK).unlockedBy(AllBlocks.CUCKOO_CLOCK::get) @@ -1166,7 +1173,12 @@ public class StandardRecipeGen extends CreateRecipeProvider { RAW_ZINC_ORE = create(AllItems.ZINC_INGOT::get).withSuffix("_from_raw_ore") .viaCooking(AllItems.RAW_ZINC::get) .rewardXP(.7f) - .inBlastFurnace() + .inBlastFurnace(), + + UA_TREE_FERTILIZER = create(AllItems.TREE_FERTILIZER::get).returns(2) + .whenModLoaded(Mods.UA.getId()).unlockedBy(() -> Items.BONE_MEAL) + .viaShapeless(b -> b.requires(Ingredient.of(ItemTags.SMALL_FLOWERS), 2) + .requires(AllItemTags.UA_CORAL.tag).requires(Items.BONE_MEAL)) ; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java index 7ed4c83c4a..c80ba020bb 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java @@ -82,8 +82,44 @@ public class WashingRecipeGen extends ProcessingRecipeGen { BLACK_CONCRETE = convert(Blocks.BLACK_CONCRETE_POWDER, Blocks.BLACK_CONCRETE), FLOUR = create("wheat_flour", b -> b.require(I.wheatFlour()) - .output(AllItems.DOUGH.get())) + .output(AllItems.DOUGH.get())), + // Atmospheric + ATMO_SAND = create("atmospheric/arid_sand", b -> b.require(Mods.ATM, "arid_sand") + .output(.25f, Items.CLAY_BALL, 1) + .output(0.05f, Mods.ATM, "aloe_kernels", 1) + .whenModLoaded(Mods.ATM.getId())), + + ATMO_RED_SAND = create("atmospheric/red_arid_sand", b -> b.require(Mods.ATM, "red_arid_sand") + .output(.125f, Items.CLAY_BALL, 4) + .output(0.05f, Mods.ATM, "aloe_kernels", 1) + .whenModLoaded(Mods.ATM.getId())), + + // Oh The Biomes You'll Go + + BYG = create("byg/cryptic_magma_block", b -> b.require(Mods.BYG, "cryptic_magma_block") + .output(Blocks.OBSIDIAN).whenModLoaded(Mods.BYG.getId())), + + // Endergetic + + ENDER_END = simpleModded(Mods.ENDER, "end_corrock", "petrified_end_corrock"), + ENDER_END_BLOCK = simpleModded(Mods.ENDER, "end_corrock_block", "petrified_end_corrock_block"), + ENDER_END_CROWN = simpleModded(Mods.ENDER, "end_corrock_crown", "petrified_end_corrock_crown"), + ENDER_NETHER = simpleModded(Mods.ENDER, "nether_corrock", "petrified_nether_corrock"), + ENDER_NETHER_BLOCK = simpleModded(Mods.ENDER, "nether_corrock_block", "petrified_nether_corrock_block"), + ENDER_NETHER_CROWN = simpleModded(Mods.ENDER, "nether_corrock_crown", "petrified_nether_corrock_crown"), + ENDER_OVERWORLD = simpleModded(Mods.ENDER, "overworld_corrock", "petrified_overworld_corrock"), + ENDER_OVERWORLD_BLOCK = simpleModded(Mods.ENDER, "overworld_corrock_block", "petrified_overworld_corrock_block"), + ENDER_OVERWORLD_CROWN = simpleModded(Mods.ENDER, "overworld_corrock_crown", "petrified_overworld_corrock_crown"), + + // Quark + Q = simpleModded(Mods.Q, "iron_plate", "rusty_iron_plate"), + + // Supplementaries + SUP = simpleModded(Mods.SUP, "blackboard", "blackboard"), + + //Vault Hunters + VH = simpleModded(Mods.VH, "ornate_chain", "ornate_chain_rusty") ; public GeneratedRecipe convert(Block block, Block result) { @@ -109,6 +145,11 @@ public GeneratedRecipe moddedCrushedOre(ItemEntry crushed, Compa return null; } + public GeneratedRecipe simpleModded(Mods mod, String input, String output) { + return create(mod.getId() + "/" + output, b -> b.require(mod, input) + .output(mod, output).whenModLoaded(mod.getId())); + } + public WashingRecipeGen(FabricDataGenerator dataGenerator) { super(dataGenerator); } diff --git a/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java b/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java index e791199141..b07d54cc84 100644 --- a/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java @@ -14,6 +14,7 @@ import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.ContraptionHandler; import com.simibubi.create.content.contraptions.ContraptionHandlerClient; +import com.simibubi.create.content.contraptions.actors.seat.ContraptionPlayerPassengerRotation; import com.simibubi.create.content.contraptions.actors.trainControls.ControlsHandler; import com.simibubi.create.content.contraptions.chassis.ChassisRangeDisplay; import com.simibubi.create.content.contraptions.minecart.CouplingHandlerClient; @@ -195,6 +196,7 @@ public static void onTick(Minecraft client) { CreateClient.VALUE_SETTINGS_HANDLER.tick(); ScrollValueHandler.tick(); NetheriteBacktankFirstPersonRenderer.clientTick(); + ContraptionPlayerPassengerRotation.tick(); // fabric: see comment AllKeys.fixBinds(); } @@ -243,6 +245,8 @@ public static void onRenderWorld(WorldRenderContext event) { buffer.draw(); RenderSystem.enableCull(); ms.popPose(); + + ContraptionPlayerPassengerRotation.frame(); } public static boolean onCameraSetup(CameraInfo info) { diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java index e53067d144..578a4370b4 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java @@ -46,6 +46,14 @@ public static boolean isWater(Fluid fluid) { public static boolean isLava(Fluid fluid) { return convertToStill(fluid) == Fluids.LAVA; } + + public static boolean isSame(FluidStack fluidStack, FluidStack fluidStack2) { + return fluidStack.getFluid() == fluidStack2.getFluid(); + } + + public static boolean isSame(FluidStack fluidStack, Fluid fluid) { + return fluidStack.getFluid() == fluid; + } @SuppressWarnings("deprecation") public static boolean isTag(Fluid fluid, TagKey tag) { diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index bce5c341e1..44109ba223 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -155,8 +155,7 @@ void fixFlowing() { @Override protected boolean testInternal(FluidStack t) { - if (!t.getFluid() - .isSame(fluid)) + if (!FluidHelper.isSame(t, fluid)) return false; if (tagToMatch.isEmpty()) return true; @@ -204,17 +203,14 @@ public static class FluidTagIngredient extends FluidIngredient { protected TagKey tag; - @SuppressWarnings("deprecation") @Override protected boolean testInternal(FluidStack t) { - if (tag == null) { - for (FluidStack accepted : getMatchingFluidStacks()) - if (accepted.getFluid() - .isSame(t.getFluid())) - return true; - return false; - } - return t.getFluid().is(tag); + if (tag != null) + return FluidHelper.isTag(t, tag); + for (FluidStack accepted : getMatchingFluidStacks()) + if (FluidHelper.isSame(accepted, t)) + return true; + return false; } @Override diff --git a/src/main/java/com/simibubi/create/foundation/gui/RemovedGuiUtils.java b/src/main/java/com/simibubi/create/foundation/gui/RemovedGuiUtils.java index 3e34bc3dfe..381a134fe5 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/RemovedGuiUtils.java +++ b/src/main/java/com/simibubi/create/foundation/gui/RemovedGuiUtils.java @@ -1,15 +1,25 @@ package com.simibubi.create.foundation.gui; +import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import io.github.fabricators_of_create.porting_lib.util.client.GuiUtils; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.math.Matrix4f; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.network.chat.FormattedText; +import net.minecraft.network.chat.Style; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.event.RenderTooltipEvent; +import net.minecraftforge.client.gui.GuiUtils; +import net.minecraftforge.common.MinecraftForge; public class RemovedGuiUtils { @Nonnull @@ -48,171 +58,142 @@ public static void drawHoveringText(@Nonnull final ItemStack stack, PoseStack mS public static void drawHoveringText(@Nonnull final ItemStack stack, PoseStack pStack, List textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, int backgroundColor, int borderColorStart, int borderColorEnd, Font font) { - GuiUtils.drawHoveringText(stack, pStack, textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, backgroundColor, borderColorStart, borderColorEnd, font); -// if (textLines.isEmpty()) -// return; -// -// List list = ForgeHooksClient.gatherTooltipComponents(stack, textLines, -// stack.getTooltipImage(), mouseX, screenWidth, screenHeight, font, font); -// RenderTooltipEvent.Pre event = -// new RenderTooltipEvent.Pre(stack, pStack, mouseX, mouseY, screenWidth, screenHeight, font, list); -// if (MinecraftForge.EVENT_BUS.post(event)) -// return; - -// mouseX = event.getX(); -// mouseY = event.getY(); -// screenWidth = event.getScreenWidth(); -// screenHeight = event.getScreenHeight(); -// font = event.getFont(); + if (textLines.isEmpty()) + return; + + List list = ForgeHooksClient.gatherTooltipComponents(stack, textLines, + stack.getTooltipImage(), mouseX, screenWidth, screenHeight, font, font); + RenderTooltipEvent.Pre event = + new RenderTooltipEvent.Pre(stack, pStack, mouseX, mouseY, screenWidth, screenHeight, font, list); + if (MinecraftForge.EVENT_BUS.post(event)) + return; + + mouseX = event.getX(); + mouseY = event.getY(); + screenWidth = event.getScreenWidth(); + screenHeight = event.getScreenHeight(); + font = event.getFont(); // RenderSystem.disableRescaleNormal(); -// RenderSystem.disableDepthTest(); -// int tooltipTextWidth = 0; -// -// for (FormattedText textLine : textLines) { -// int textLineWidth = font.width(textLine); -// if (textLineWidth > tooltipTextWidth) -// tooltipTextWidth = textLineWidth; -// } -// -// boolean needsWrap = false; -// -// int titleLinesCount = 1; -// int tooltipX = mouseX + 12; -// if (tooltipX + tooltipTextWidth + 4 > screenWidth) { -// tooltipX = mouseX - 16 - tooltipTextWidth; -// if (tooltipX < 4) // if the tooltip doesn't fit on the screen -// { -// if (mouseX > screenWidth / 2) -// tooltipTextWidth = mouseX - 12 - 8; -// else -// tooltipTextWidth = screenWidth - 16 - mouseX; -// needsWrap = true; -// } -// } -// -// if (maxTextWidth > 0 && tooltipTextWidth > maxTextWidth) { -// tooltipTextWidth = maxTextWidth; -// needsWrap = true; -// } -// -// if (needsWrap) { -// int wrappedTooltipWidth = 0; -// List wrappedTextLines = new ArrayList<>(); -// for (int i = 0; i < textLines.size(); i++) { -// FormattedText textLine = textLines.get(i); -// List wrappedLine = font.getSplitter() -// .splitLines(textLine, tooltipTextWidth, Style.EMPTY); -// if (i == 0) -// titleLinesCount = wrappedLine.size(); -// -// for (FormattedText line : wrappedLine) { -// int lineWidth = font.width(line); -// if (lineWidth > wrappedTooltipWidth) -// wrappedTooltipWidth = lineWidth; -// wrappedTextLines.add(line); -// } -// } -// tooltipTextWidth = wrappedTooltipWidth; -// textLines = wrappedTextLines; -// -// if (mouseX > screenWidth / 2) -// tooltipX = mouseX - 16 - tooltipTextWidth; -// else -// tooltipX = mouseX + 12; -// } -// -// int tooltipY = mouseY - 12; -// int tooltipHeight = 8; -// -// if (textLines.size() > 1) { -// tooltipHeight += (textLines.size() - 1) * 10; -// if (textLines.size() > titleLinesCount) -// tooltipHeight += 2; // gap between title lines and next lines -// } -// -// if (tooltipY < 4) -// tooltipY = 4; -// else if (tooltipY + tooltipHeight + 4 > screenHeight) -// tooltipY = screenHeight - tooltipHeight - 4; -// -// final int zLevel = 400; -// RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, pStack, tooltipX, tooltipY, -// font, backgroundColor, borderColorStart, borderColorEnd, list); -// MinecraftForge.EVENT_BUS.post(colorEvent); -// backgroundColor = colorEvent.getBackgroundStart(); -// borderColorStart = colorEvent.getBorderStart(); -// borderColorEnd = colorEvent.getBorderEnd(); -// -// if (mouseX > screenWidth / 2) -// tooltipX = mouseX - 16 - tooltipTextWidth; -// else -// tooltipX = mouseX + 12; -// } -// -// int tooltipY = mouseY - 12; -// int tooltipHeight = 8; -// -// if (textLines.size() > 1) { -// tooltipHeight += (textLines.size() - 1) * 10; -// if (textLines.size() > titleLinesCount) -// tooltipHeight += 2; // gap between title lines and next lines -// } -// -// if (tooltipY < 4) -// tooltipY = 4; -// else if (tooltipY + tooltipHeight + 4 > screenHeight) -// tooltipY = screenHeight - tooltipHeight - 4; -// -// final int zLevel = 400; -// RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, pStack, tooltipX, tooltipY, -// font, backgroundColor, borderColorStart, borderColorEnd, list); -// MinecraftForge.EVENT_BUS.post(colorEvent); -// backgroundColor = colorEvent.getBackgroundStart(); -// borderColorStart = colorEvent.getBorderStart(); -// borderColorEnd = colorEvent.getBorderEnd(); -// -// pStack.pushPose(); -// Matrix4f mat = pStack.last() -// .pose(); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, -// tooltipY - 3, backgroundColor, backgroundColor); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, -// tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, -// tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, -// backgroundColor, backgroundColor); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, -// tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, -// tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, -// tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, -// tooltipY - 3 + 1, borderColorStart, borderColorStart); -// GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, -// tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd); -// -// MultiBufferSource.BufferSource renderType = MultiBufferSource.immediate(Tesselator.getInstance() -// .getBuilder()); -// pStack.translate(0.0D, 0.0D, zLevel); -// -// for (int lineNumber = 0; lineNumber < list.size(); ++lineNumber) { -// ClientTooltipComponent line = list.get(lineNumber); -// -// if (line != null) -// line.renderText(font, tooltipX, tooltipY, mat, renderType); -// -// if (lineNumber + 1 == titleLinesCount) -// tooltipY += 2; -// -// tooltipY += 10; -// } -// -// renderType.endBatch(); -// pStack.popPose(); -// -// RenderSystem.enableDepthTest(); + RenderSystem.disableDepthTest(); + int tooltipTextWidth = 0; + + for (FormattedText textLine : textLines) { + int textLineWidth = font.width(textLine); + if (textLineWidth > tooltipTextWidth) + tooltipTextWidth = textLineWidth; + } + + boolean needsWrap = false; + + int titleLinesCount = 1; + int tooltipX = mouseX + 12; + if (tooltipX + tooltipTextWidth + 4 > screenWidth) { + tooltipX = mouseX - 16 - tooltipTextWidth; + if (tooltipX < 4) // if the tooltip doesn't fit on the screen + { + if (mouseX > screenWidth / 2) + tooltipTextWidth = mouseX - 12 - 8; + else + tooltipTextWidth = screenWidth - 16 - mouseX; + needsWrap = true; + } + } + + if (maxTextWidth > 0 && tooltipTextWidth > maxTextWidth) { + tooltipTextWidth = maxTextWidth; + needsWrap = true; + } + + if (needsWrap) { + int wrappedTooltipWidth = 0; + List wrappedTextLines = new ArrayList<>(); + for (int i = 0; i < textLines.size(); i++) { + FormattedText textLine = textLines.get(i); + List wrappedLine = font.getSplitter() + .splitLines(textLine, tooltipTextWidth, Style.EMPTY); + if (i == 0) + titleLinesCount = wrappedLine.size(); + + for (FormattedText line : wrappedLine) { + int lineWidth = font.width(line); + if (lineWidth > wrappedTooltipWidth) + wrappedTooltipWidth = lineWidth; + wrappedTextLines.add(line); + } + } + tooltipTextWidth = wrappedTooltipWidth; + textLines = wrappedTextLines; + + if (mouseX > screenWidth / 2) + tooltipX = mouseX - 16 - tooltipTextWidth; + else + tooltipX = mouseX + 12; + } + + int tooltipY = mouseY - 12; + int tooltipHeight = 8; + + if (textLines.size() > 1) { + tooltipHeight += (textLines.size() - 1) * 10; + if (textLines.size() > titleLinesCount) + tooltipHeight += 2; // gap between title lines and next lines + } + + if (tooltipY < 4) + tooltipY = 4; + else if (tooltipY + tooltipHeight + 4 > screenHeight) + tooltipY = screenHeight - tooltipHeight - 4; + + final int zLevel = 400; + RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, pStack, tooltipX, tooltipY, + font, backgroundColor, borderColorStart, borderColorEnd, list); + MinecraftForge.EVENT_BUS.post(colorEvent); + backgroundColor = colorEvent.getBackgroundStart(); + borderColorStart = colorEvent.getBorderStart(); + borderColorEnd = colorEvent.getBorderEnd(); + + pStack.pushPose(); + Matrix4f mat = pStack.last() + .pose(); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, + tooltipY - 3, backgroundColor, backgroundColor); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, + tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, + tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, + backgroundColor, backgroundColor); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, + tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, + tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, + tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, + tooltipY - 3 + 1, borderColorStart, borderColorStart); + GuiUtils.drawGradientRect(mat, zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, + tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd); + + MultiBufferSource.BufferSource renderType = MultiBufferSource.immediate(Tesselator.getInstance() + .getBuilder()); + pStack.translate(0.0D, 0.0D, zLevel); + + for (int lineNumber = 0; lineNumber < list.size(); ++lineNumber) { + ClientTooltipComponent line = list.get(lineNumber); + + if (line != null) + line.renderText(font, tooltipX, tooltipY, mat, renderType); + + if (lineNumber + 1 == titleLinesCount) + tooltipY += 2; + + tooltipY += line == null ? 10 : line.getHeight(); + } + + renderType.endBatch(); + pStack.popPose(); + + RenderSystem.enableDepthTest(); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index 92bbe7e529..94f56545e4 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -6,7 +6,6 @@ import java.util.List; import com.google.common.base.Strings; -import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -30,15 +29,11 @@ public static MutableComponent holdShift(Palette palette, boolean highlighted) { } public static void addHint(List tooltip, String hintKey, Object... messageParams) { - Component spacing = IHaveGoggleInformation.componentSpacing; - tooltip.add(spacing.plainCopy() - .append(Lang.translateDirect(hintKey + ".title")) - .withStyle(ChatFormatting.GOLD)); + Lang.translate(hintKey + ".title").style(ChatFormatting.GOLD).forGoggles(tooltip); Component hint = Lang.translateDirect(hintKey); List cutComponent = cutTextComponent(hint, Palette.GRAY_AND_WHITE); for (Component component : cutComponent) - tooltip.add(spacing.plainCopy() - .append(component)); + Lang.text(component.getString()).forGoggles(tooltip); } public static String makeProgressBar(int length, int filledLength) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/MouseHandlerAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/MouseHandlerAccessor.java new file mode 100644 index 0000000000..d837c06f00 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/MouseHandlerAccessor.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.mixin.accessor; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.client.MouseHandler; + +@Mixin(MouseHandler.class) +public interface MouseHandlerAccessor { + + @Accessor("xpos") + void create$setXPos(double xPos); + + @Accessor("ypos") + void create$setYPos(double yPos); +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java index 94d0a7b59b..b538c91da3 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java @@ -8,7 +8,6 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.logging.log4j.util.TriConsumer; -import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -78,7 +77,7 @@ public abstract class EntityContraptionInteractionMixin { } @Unique - private void forCollision(Vec3 worldPos, TriConsumer action) { + private void create$forCollision(Vec3 worldPos, TriConsumer action) { create$getIntersectingContraptions().forEach(cEntity -> { Vec3 localPos = ContraptionCollider.worldToLocalPos(worldPos, cEntity); @@ -96,12 +95,12 @@ private void forCollision(Vec3 worldPos, TriConsumer { + create$forCollision(worldPos, (contraption, state, pos) -> { playStepSound(pos, state); stepped.setTrue(); }); @@ -151,7 +150,7 @@ private void forCollision(Vec3 worldPos, TriConsumer { + create$forCollision(worldPos, (contraption, state, pos) -> { boolean particles = state.getRenderShape() != RenderShape.INVISIBLE; if (state.getBlock() instanceof CustomRunningEffectsBlock custom && custom.addRunningEffects(state, self.level, pos, self)) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index d93728a0ed..77ee85c62c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -4,6 +4,7 @@ import com.google.common.base.Strings; import com.mojang.blaze3d.platform.InputConstants; +import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.ponder.ui.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.ui.PonderUI; @@ -29,7 +30,7 @@ public class PonderTooltipHandler { public static boolean enable = true; - static LerpedFloat holdWProgress = LerpedFloat.linear() + static LerpedFloat holdKeyProgress = LerpedFloat.linear() .startWithValue(0); static ItemStack hoveredStack = ItemStack.EMPTY; static ItemStack trackingStack = ItemStack.EMPTY; @@ -50,11 +51,11 @@ public static void deferredTick() { if (hoveredStack.isEmpty() || trackingStack.isEmpty()) { trackingStack = ItemStack.EMPTY; - holdWProgress.startWithValue(0); + holdKeyProgress.startWithValue(0); return; } - float value = holdWProgress.getValue(); + float value = holdKeyProgress.getValue(); int keyCode = KeyBindingHelper.getKeyCode(ponderKeybind()).getValue(); long window = instance.getWindow() .getWindow(); @@ -64,12 +65,12 @@ public static void deferredTick() { if (currentScreen instanceof NavigatableSimiScreen) ((NavigatableSimiScreen) currentScreen).centerScalingOnMouse(); ScreenOpener.transitionTo(PonderUI.of(trackingStack)); - holdWProgress.startWithValue(0); + holdKeyProgress.startWithValue(0); return; } - holdWProgress.setValue(Math.min(1, value + Math.max(.25f, value) * .25f)); + holdKeyProgress.setValue(Math.min(1, value + Math.max(.25f, value) * .25f)); } else - holdWProgress.setValue(Math.max(0, value - .05f)); + holdKeyProgress.setValue(Math.max(0, value - .05f)); hoveredStack = ItemStack.EMPTY; } @@ -90,7 +91,7 @@ public static void addToTooltip(ItemStack stack, List tooltip) { .getFrameTime(); Component component = subject ? Lang.translateDirect(SUBJECT) .withStyle(ChatFormatting.GREEN) - : makeProgressBar(Math.min(1, holdWProgress.getValue(renderPartialTicks) * 8 / 7f)); + : makeProgressBar(Math.min(1, holdKeyProgress.getValue(renderPartialTicks) * 8 / 7f)); if (tooltip.size() < 2) tooltip.add(component); else @@ -118,7 +119,7 @@ protected static void updateHovered(ItemStack stack) { return; if (prevStack.isEmpty() || !prevStack.sameItem(stack)) - holdWProgress.startWithValue(0); + holdKeyProgress.startWithValue(0); hoveredStack = stack; trackingStack = stack; @@ -127,13 +128,13 @@ protected static void updateHovered(ItemStack stack) { public static RenderTooltipBorderColorCallback.BorderColorEntry handleTooltipColor(ItemStack stack, int originalBorderColorStart, int originalBorderColorEn) { if (trackingStack != stack) return null; - if (holdWProgress.getValue() == 0) + if (holdKeyProgress.getValue() == 0) return null; float renderPartialTicks = Minecraft.getInstance() .getFrameTime(); int start = originalBorderColorStart; int end = originalBorderColorEn; - float progress = Math.min(1, holdWProgress.getValue(renderPartialTicks) * 8 / 7f); + float progress = Math.min(1, holdKeyProgress.getValue(renderPartialTicks) * 8 / 7f); start = getSmoothColorForProgress(progress); end = getSmoothColorForProgress((progress)); @@ -172,7 +173,7 @@ private static Component makeProgressBar(float progress) { } protected static KeyMapping ponderKeybind() { - return Minecraft.getInstance().options.keyUp; + return AllKeys.PONDER.getKeybind(); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java index 4c3715fb68..94a6391614 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java @@ -49,4 +49,7 @@ public static float getShortestAngleDiff(double current, double target, float hi return diff; } + public static float wrapAngle180(float angle) { + return (angle + 180) % 360 - 180; + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index d4826748f1..11b4a86837 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -6,6 +6,8 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllBlockTags; +import com.simibubi.create.compat.Mods; +import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; @@ -237,15 +239,18 @@ public static CompoundTag prepareBlockEntityData(BlockState blockState, BlockEnt CompoundTag data = null; if (blockEntity == null) return data; + if (AllBlockTags.SAFE_NBT.matches(blockState)) { data = blockEntity.saveWithFullMetadata(); - data = NBTProcessors.process(blockEntity, data, true); + } else if (blockEntity instanceof IPartialSafeNBT) { data = new CompoundTag(); ((IPartialSafeNBT) blockEntity).writeSafe(data); - data = NBTProcessors.process(blockEntity, data, true); - } - return data; + + } else if (Mods.FRAMEDBLOCKS.contains(blockState.getBlock())) + data = FramedBlocksInSchematics.prepareBlockEntityData(blockState, blockEntity); + + return NBTProcessors.process(blockState, blockEntity, data, true); } public static void placeSchematicBlock(Level world, BlockState state, BlockPos target, ItemStack stack, @@ -292,10 +297,12 @@ else if (state.is(BlockTags.CAULDRONS)) if (data != null) { if (existingBlockEntity instanceof IMergeableBE mergeable) { BlockEntity loaded = BlockEntity.loadStatic(target, state, data); - if (existingBlockEntity.getType() - .equals(loaded.getType())) { - mergeable.accept(loaded); - return; + if (loaded != null) { + if (existingBlockEntity.getType() + .equals(loaded.getType())) { + mergeable.accept(loaded); + return; + } } } BlockEntity blockEntity = world.getBlockEntity(target); diff --git a/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java b/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java new file mode 100644 index 0000000000..b44b5ef588 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java @@ -0,0 +1,35 @@ +package com.simibubi.create.foundation.utility; + +import java.util.Objects; + +import javax.annotation.Nonnull; + +import net.minecraftforge.common.util.NonNullConsumer; + +public class HashableNonNullConsumer implements NonNullConsumer { + private final NonNullConsumer consumer; + private final H hashKey; + + public HashableNonNullConsumer(NonNullConsumer consumer, H hashKey) { + this.consumer = consumer; + this.hashKey = hashKey; + } + + @Override + public void accept(@Nonnull T t) { + consumer.accept(t); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + HashableNonNullConsumer that = (HashableNonNullConsumer) o; + return Objects.equals(hashKey, that.hashKey); + } + + @Override + public int hashCode() { + return Objects.hash(hashKey); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java index 564b6131f4..161f52dd4b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java @@ -2,10 +2,15 @@ import java.util.List; +import com.simibubi.create.compat.Mods; + import joptsimple.internal.Strings; import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; public class LangBuilder { @@ -29,7 +34,7 @@ public LangBuilder newLine() { * Appends a localised component
* To add an independently formatted localised component, use add() and a nested * builder - * + * * @param langKey * @param args * @return @@ -40,7 +45,7 @@ public LangBuilder translate(String langKey, Object... args) { /** * Appends a text component - * + * * @param literalText * @return */ @@ -50,7 +55,7 @@ public LangBuilder text(String literalText) { /** * Appends a colored text component - * + * * @param format * @param literalText * @return @@ -61,7 +66,7 @@ public LangBuilder text(ChatFormatting format, String literalText) { /** * Appends a colored text component - * + * * @param color * @param literalText * @return @@ -72,7 +77,7 @@ public LangBuilder text(int color, String literalText) { /** * Appends the contents of another builder - * + * * @param otherBuilder * @return */ @@ -82,7 +87,7 @@ public LangBuilder add(LangBuilder otherBuilder) { /** * Appends a component - * + * * @param customComponent * @return */ @@ -95,7 +100,7 @@ public LangBuilder add(MutableComponent customComponent) { /** * Applies the format to all added components - * + * * @param format * @return */ @@ -107,7 +112,7 @@ public LangBuilder style(ChatFormatting format) { /** * Applies the color to all added components - * + * * @param color * @return */ @@ -150,11 +155,20 @@ public void forGoggles(List tooltip) { public void forGoggles(List tooltip, int indents) { tooltip.add(Lang.builder() - .text(Strings.repeat(' ', 4 + indents)) + .text(Strings.repeat(' ', getIndents(Minecraft.getInstance().font, 4 + indents))) .add(this) .component()); } + public static final float DEFAULT_SPACE_WIDTH = 4.0F; // space width in vanilla's default font + static int getIndents(Font font, int defaultIndents) { + int spaceWidth = font.width(" "); + if (DEFAULT_SPACE_WIDTH == spaceWidth) { + return defaultIndents; + } + return Mth.ceil(DEFAULT_SPACE_WIDTH * defaultIndents / spaceWidth); + } + // private void assertComponent() { @@ -162,4 +176,4 @@ private void assertComponent() { throw new IllegalStateException("No components were added to builder"); } -} \ No newline at end of file +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java index 971d0072ad..f685969c95 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java @@ -13,11 +13,13 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.tags.BlockTags; import net.minecraft.world.item.EnchantedBookItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; public final class NBTProcessors { @@ -34,13 +36,6 @@ public static synchronized void addSurvivalProcessor(BlockEntityType type, } static { - addProcessor(BlockEntityType.SIGN, data -> { - for (int i = 0; i < 4; ++i) { - if (textComponentHasClickEvent(data.getString("Text" + (i + 1)))) - return null; - } - return data; - }); addProcessor(BlockEntityType.LECTERN, data -> { if (!data.contains("Book", Tag.TAG_COMPOUND)) return data; @@ -63,6 +58,14 @@ public static synchronized void addSurvivalProcessor(BlockEntityType type, addProcessor(AllBlockEntityTypes.CREATIVE_CRATE.get(), itemProcessor("Filter")); addProcessor(AllBlockEntityTypes.PLACARD.get(), itemProcessor("Item")); } + + // Triggered by block tag, not BE type + private static final UnaryOperator signProcessor = data -> { + for (int i = 0; i < 4; ++i) + if (textComponentHasClickEvent(data.getString("Text" + (i + 1)))) + return null; + return data; + }; public static UnaryOperator itemProcessor(String tagKey) { return data -> { @@ -117,7 +120,7 @@ public static boolean textComponentHasClickEvent(String json) { private NBTProcessors() {} @Nullable - public static CompoundTag process(BlockEntity blockEntity, CompoundTag compound, boolean survival) { + public static CompoundTag process(BlockState blockState, BlockEntity blockEntity, CompoundTag compound, boolean survival) { if (compound == null) return null; BlockEntityType type = blockEntity.getType(); @@ -129,6 +132,8 @@ public static CompoundTag process(BlockEntity blockEntity, CompoundTag compound, .apply(compound); if (blockEntity instanceof SpawnerBlockEntity) return compound; + if (blockState.is(BlockTags.SIGNS)) + return signProcessor.apply(compound); if (blockEntity.onlyOpCanSetNbt()) return null; return compound; diff --git a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java b/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java index 9cfe0d88fa..4999f5a9f3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java @@ -55,15 +55,20 @@ public static Optional findDynamicTree(Block startBlock return Optional.empty(); } + @Deprecated(forRemoval = true) + public static Tree findTree(@Nullable BlockGetter reader, BlockPos pos) { + return findTree(reader, pos, Blocks.AIR.defaultBlockState()); + } + /** * Finds a tree at the given pos. Block at the position should be air * - * @param reader - * @param pos - * @return null if not found or not fully cut + * @param reader the level that will be searched for a tree + * @param pos position that the saw cut at + * @param brokenState block state what was broken by the saw */ @Nonnull - public static Tree findTree(@Nullable BlockGetter reader, BlockPos pos) { + public static Tree findTree(@Nullable BlockGetter reader, BlockPos pos, BlockState brokenState) { if (reader == null) return NO_TREE; @@ -72,11 +77,14 @@ public static Tree findTree(@Nullable BlockGetter reader, BlockPos pos) { Set visited = new HashSet<>(); List frontier = new LinkedList<>(); - // Bamboo, Sugar Cane, Cactus BlockState stateAbove = reader.getBlockState(pos.above()); - if (isVerticalPlant(stateAbove)) { + // Bamboo, Sugar Cane, Cactus + if (isVerticalPlant(brokenState)) { + if (!isVerticalPlant(stateAbove)) + return NO_TREE; + logs.add(pos.above()); - for (int i = 1; i < 256; i++) { + for (int i = 1; i < reader.getHeight(); i++) { BlockPos current = pos.above(i); if (!isVerticalPlant(reader.getBlockState(current))) break; @@ -87,7 +95,10 @@ public static Tree findTree(@Nullable BlockGetter reader, BlockPos pos) { } // Chorus - if (isChorus(stateAbove)) { + if (isChorus(brokenState)) { + if (!isChorus(stateAbove)) + return NO_TREE; + frontier.add(pos.above()); while (!frontier.isEmpty()) { BlockPos current = frontier.remove(0); diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CClient.java b/src/main/java/com/simibubi/create/infrastructure/config/CClient.java index fbf6694585..04a2520402 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CClient.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CClient.java @@ -34,6 +34,8 @@ public class CClient extends ConfigBase { Comments.ingameMenuConfigButtonOffsetX); public final ConfigBool ignoreFabulousWarning = b(false, "ignoreFabulousWarning", Comments.ignoreFabulousWarning); + public final ConfigBool rotateWhenSeated = b(true, "rotateWhenSeated", + Comments.rotatewhenSeated); // Fabric public final ConfigEnum fluidUnitType = e(FluidUnit.MILIBUCKETS, "fluidUnitType", Comments.fluidUnit); @@ -133,6 +135,7 @@ private static class Comments { "The sign (-/+) of this value determines what side of the row the button appears on (left/right)" }; static String ignoreFabulousWarning = "Setting this to true will prevent Create from sending you a warning when playing with Fabulous graphics enabled"; + static String rotatewhenSeated = "Disable to prevent being rotated while seated on a Moving Contraption"; static String overlay = "Settings for the Goggle Overlay"; static String overlayOffset = "Offset the overlay from goggle- and hover- information by this many pixels on the respective axis; Use /create overlay"; static String overlayCustomColor = "Enable this to use your custom colors for the Goggle- and Hover- Overlay"; diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java b/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java index 15168cee84..df3b971e85 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java @@ -48,6 +48,7 @@ public class CKinetics extends ConfigBase { public final ConfigBool harvesterReplants = b(true, "harvesterReplants", Comments.harvesterReplants); public final ConfigBool minecartContraptionInContainers = b(false, "minecartContraptionInContainers", Comments.minecartContraptionInContainers); + public final ConfigBool stabiliseStableContraptions = b(false, "stabiliseStableContraptions", Comments.stabiliseStableContraptions, "[Technical]"); public final ConfigGroup stats = group(1, "stats", Comments.stats); public final ConfigFloat mediumSpeed = f(30, 0, 4096, "mediumSpeed", Comments.rpm, Comments.mediumSpeed); @@ -116,6 +117,7 @@ private static class Comments { static String amethystMovement = "Configure how Budding Amethyst can be moved by contraptions."; static String obsidianMovement = "Configure how Obsidian blocks can be moved by contraptions."; static String minecartContraptionInContainers = "Whether minecart contraptions can be placed into container items."; + static String stabiliseStableContraptions = "Whether stabilised bearings create a separated entity even on non-rotating contraptions."; } public enum DeployerAggroSetting { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java b/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java index d047f20a2a..446b7e39e9 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java @@ -6,16 +6,14 @@ public class CSchematics extends ConfigBase { public final ConfigBool creativePrintIncludesAir = b(false, "creativePrintIncludesAir", Comments.creativePrintIncludesAir); public final ConfigInt maxSchematics = i(10, 1, "maxSchematics", Comments.maxSchematics); - public final ConfigInt maxTotalSchematicSize = i(256, 16, "maxSchematics", Comments.kb, Comments.maxSize); + public final ConfigInt maxTotalSchematicSize = i(256, 16, "maxTotalSchematicSize", Comments.kb, Comments.maxSize); public final ConfigInt maxSchematicPacketSize = i(1024, 256, 32767, "maxSchematicPacketSize", Comments.b, Comments.maxPacketSize); public final ConfigInt schematicIdleTimeout = i(600, 100, "schematicIdleTimeout", Comments.idleTimeout); public final ConfigGroup schematicannon = group(0, "schematicannon", "Schematicannon"); public final ConfigInt schematicannonDelay = i(10, 1, "schematicannonDelay", Comments.delay); - public final ConfigFloat schematicannonGunpowderWorth = - f(20, 0, 100, "schematicannonGunpowderWorth", Comments.gunpowderWorth); - public final ConfigFloat schematicannonFuelUsage = f(0.05f, 0, 100, "schematicannonFuelUsage", Comments.fuelUsage); + public final ConfigInt schematicannonShotsPerGunpowder = i(400, 1, "schematicannonShotsPerGunpowder", Comments.schematicannonShotsPerGunpowder); @Override public String getName() { @@ -32,8 +30,7 @@ private static class Comments { static String idleTimeout = "Amount of game ticks without new packets arriving until an active schematic upload process is discarded."; static String delay = "Amount of game ticks between shots of the cannon. Higher => Slower"; - static String gunpowderWorth = "% of Schematicannon's Fuel filled by 1 Gunpowder."; - static String fuelUsage = "% of Schematicannon's Fuel used for each fired block."; + static String schematicannonShotsPerGunpowder = "Amount of blocks a Schematicannon can print per Gunpowder item provided."; static String creativePrintIncludesAir = "Whether placing a Schematic directly in Creative Mode should replace world blocks with Air"; } diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java index 2161e10aa0..fd69fc3d71 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java @@ -1,5 +1,6 @@ package com.simibubi.create.infrastructure.data; +import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.AllTags.AllEntityTags; import com.simibubi.create.AllTags.AllFluidTags; @@ -34,7 +35,13 @@ public static void addGenerators() { private static void genBlockTags(RegistrateTagsProvider prov) { prov.tag(AllBlockTags.BRITTLE.tag) - .add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT) + .add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT, Blocks.MOSS_CARPET, Blocks.BAMBOO_SAPLING, + Blocks.BIG_DRIPLEAF, Blocks.VINE, Blocks.TWISTING_VINES_PLANT, Blocks.TWISTING_VINES, + Blocks.WEEPING_VINES_PLANT, Blocks.WEEPING_VINES, Blocks.CAKE + ) + .addTag(AllBlockTags.CORALS.tag) + .addTag(BlockTags.CAVE_VINES) + .addTag(BlockTags.BANNERS) .forceAddTag(BlockTags.BEDS) .forceAddTag(BlockTags.DOORS); @@ -61,8 +68,14 @@ private static void genBlockTags(RegistrateTagsProvider prov) { .forceAddTag(BlockTags.LEAVES); prov.tag(AllBlockTags.MOVABLE_EMPTY_COLLIDER.tag) - .add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK) - .forceAddTag(BlockTags.FENCE_GATES); + .add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.BAMBOO_SAPLING, + Blocks.VINE, Blocks.TWISTING_VINES_PLANT, Blocks.TWISTING_VINES, Blocks.WEEPING_VINES_PLANT, + Blocks.WEEPING_VINES + ) + .addTag(AllBlockTags.CORALS.tag) + .addTag(BlockTags.CAVE_VINES) + .forceAddTag(BlockTags.FENCE_GATES) + .addTag(BlockTags.BANNERS); prov.tag(AllBlockTags.ORE_OVERRIDE_STONE.tag) .forceAddTag(BlockTags.STONE_ORE_REPLACEABLES); @@ -90,13 +103,26 @@ private static void genBlockTags(RegistrateTagsProvider prov) { .forceAddTag(BlockTags.PRESSURE_PLATES) .forceAddTag(BlockTags.RAILS); + prov.tag(AllBlockTags.CORALS.tag) + .add(Blocks.DEAD_TUBE_CORAL, Blocks.DEAD_BRAIN_CORAL, Blocks.DEAD_BUBBLE_CORAL, Blocks.DEAD_FIRE_CORAL, + Blocks.DEAD_HORN_CORAL, Blocks.TUBE_CORAL, Blocks.BRAIN_CORAL, Blocks.BUBBLE_CORAL, + Blocks.FIRE_CORAL, Blocks.HORN_CORAL, Blocks.DEAD_TUBE_CORAL_FAN, + Blocks.DEAD_BRAIN_CORAL_FAN, Blocks.DEAD_BUBBLE_CORAL_FAN, Blocks.DEAD_FIRE_CORAL_FAN, + Blocks.DEAD_HORN_CORAL_FAN, Blocks.TUBE_CORAL_FAN, Blocks.BRAIN_CORAL_FAN, + Blocks.BUBBLE_CORAL_FAN, Blocks.FIRE_CORAL_FAN, Blocks.HORN_CORAL_FAN, + Blocks.DEAD_TUBE_CORAL_WALL_FAN, Blocks.DEAD_BRAIN_CORAL_WALL_FAN, + Blocks.DEAD_BUBBLE_CORAL_WALL_FAN, Blocks.DEAD_FIRE_CORAL_WALL_FAN, + Blocks.DEAD_HORN_CORAL_WALL_FAN, Blocks.TUBE_CORAL_WALL_FAN, Blocks.BRAIN_CORAL_WALL_FAN, + Blocks.BUBBLE_CORAL_WALL_FAN, Blocks.FIRE_CORAL_WALL_FAN, Blocks.HORN_CORAL_WALL_FAN + ); + // COMPAT - TagGen.addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE, + TagGen.addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE, List.of( "connector_lv", "connector_lv_relay", "connector_mv", "connector_mv_relay", "connector_hv", "connector_hv_relay", "connector_bundled", "connector_structural", "connector_redstone", "connector_probe", "breaker_switch") - .addOptional(Mods.BC.asResource("bits_block")); // fabric: Causes Problems last I checked. TODO: re-evaluate + .addOptional(Mods.BC.asResource("bits_block")); // // fabric: Causes Problems last I checked. TODO: re-evaluate // VALIDATE @@ -118,7 +144,6 @@ private static void genItemTags(RegistrateTagsProvider prov) { prov.tag(AllItemTags.STRIPPED_WOOD.tag) .forceAddTag(AllItemTags.VANILLA_STRIPPED_WOOD.tag) .forceAddTag(AllItemTags.MODDED_STRIPPED_WOOD.tag); - prov.tag(AllItemTags.DEPLOYABLE_DRINK.tag) .add(Items.MILK_BUCKET, Items.POTION); @@ -145,10 +170,24 @@ private static void genItemTags(RegistrateTagsProvider prov) { prov.tag(Tags.Items.INGOTS) .forceAddTag(AllItemTags.CREATE_INGOTS.tag); + prov.tag(AllItemTags.OBSIDIAN_DUST.tag).add(AllItems.POWDERED_OBSIDIAN.get()); + // COMPAT genStrippedWoodItemTags(prov); + prov.tag(AllItemTags.CURIOS_HEAD.tag).add(AllItems.GOGGLES.get()); + + TagGen.addOptional(prov.tag(AllItemTags.ALLURITE.tag), Mods.GS, gsPalette("allurite")); + + TagGen.addOptional(prov.tag(AllItemTags.LUMIERE.tag), Mods.GS, gsPalette("lumiere")); + + TagGen.addOptional(prov.tag(AllItemTags.AMETHYST.tag), Mods.GS, gsPalette("amethyst")); + + TagGen.addOptional(prov.tag(AllItemTags.UA_CORAL.tag), Mods.UA, List.of("acan_coral", + "finger_coral", "star_coral", "moss_coral", "petal_coral", "branch_coral", + "rock_coral", "pillow_coral", "chrome_coral", "silk_coral")); + // VALIDATE for (AllItemTags tag : AllItemTags.values()) { @@ -158,6 +197,21 @@ private static void genItemTags(RegistrateTagsProvider prov) { } } + private static ArrayList gsPalette(String material) { + ArrayList toReturn = new ArrayList<>(); + toReturn.add(material + "_block"); + toReturn.add(material + "_stairs"); + toReturn.add(material + "_slab"); + toReturn.add("smooth_" + material); + toReturn.add("smooth_" + material + "_stairs"); + toReturn.add("smooth_" + material + "_slab"); + toReturn.add(material + "_bricks"); + toReturn.add(material + "_brick_stairs"); + toReturn.add(material + "_brick_slab"); + toReturn.add("chiseled_" + material); + return toReturn; + } + private static void genStrippedWoodItemTags(RegistrateTagsProvider prov) { TagAppender logAppender = prov.tag(AllItemTags.MODDED_STRIPPED_LOGS.tag); TagAppender woodAppender = prov.tag(AllItemTags.MODDED_STRIPPED_WOOD.tag); @@ -187,11 +241,25 @@ private static void genStrippedWoodItemTags(RegistrateTagsProvider prov) { helper.add(Mods.ATM_2, "rosewood", "grimwood"); helper.add(Mods.GOOD, "muddy_oak", "cypress"); helper.add(Mods.BMK, "blighted_balsa", "willow", "swamp_cypress", "ancient_oak"); + helper.add(Mods.RU, "alpha", "ashen", "baobab", "blackwood", "brimwood", "cobalt", "cypress", "dead", "eucalyptus", "joshua", + "kapok", "larch", "magnolia", "maple","mauve", "palm", "pine", "redwood", "socotra", "willow"); + + TagGen.addOptional(logAppender, Mods.AUTUM, "maple"); TagGen.addOptional(logAppender, Mods.IX, "stripped_luminous_stem"); TagGen.addOptional(woodAppender, Mods.IX, "stripped_luminous_hyphae"); TagGen.addOptional(logAppender, Mods.BYG, "stripped_bulbis_stem"); TagGen.addOptional(woodAppender, Mods.BYG, "stripped_bulbis_wood"); + + TagGen.addOptional(logAppender, Mods.RU, "stripped_blue_bioshroom_stem"); + TagGen.addOptional(woodAppender, Mods.RU, "stripped_blue_bioshroom_hyphae"); + TagGen.addOptional(logAppender, Mods.RU, "stripped_green_bioshroom_stem"); + TagGen.addOptional(woodAppender, Mods.RU, "stripped_green_bioshroom_hyphae"); + TagGen.addOptional(logAppender, Mods.RU, "stripped_pink_bioshroom_stem"); + TagGen.addOptional(woodAppender, Mods.RU, "stripped_pink_bioshroom_hyphae"); + TagGen.addOptional(logAppender, Mods.RU, "stripped_yellow_bioshroom_stem"); + TagGen.addOptional(woodAppender, Mods.RU, "stripped_yellow_bioshroom_hyphae"); + TagGen.addOptional(logAppender, Mods.RU, "brimwood_log_magma"); } private static void genFluidTags(RegistrateTagsProvider prov) { diff --git a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java index b49f8678bf..2fa1cab6e3 100644 --- a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java +++ b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java @@ -86,6 +86,7 @@ public static List getServerInfo() { .put("Java Version", SystemReportAccessor.getJAVA_VERSION()) .put("JVM Flags", getMcSystemInfo("JVM Flags")) .put("Memory", () -> getMcSystemInfo("Memory")) + .put("Total Memory", getTotalRam()) .put("CPU", getCpuInfo()) .putAll(listAllGraphicsCards()) .buildTo(DebugInformation::registerBothInfo); @@ -130,6 +131,13 @@ public static Collection listAllGraphicsCards() { return cards.isEmpty() ? List.of(new InfoEntry("Graphics cards", "none")) : cards; } + public static String getTotalRam() { + long availableMemory = new SystemInfo().getHardware().getMemory().getAvailable(); + long totalMemory = new SystemInfo().getHardware().getMemory().getTotal(); + long usedMemory = totalMemory - availableMemory; + return String.format("%s bytes (%s MiB) / %s bytes (%s MiB)", usedMemory, usedMemory / 1049000, totalMemory, totalMemory / 1049000); + } + public static String getCpuInfo() { String name = tryTrim(getMcSystemInfo("Processor Name")); String freq = getMcSystemInfo("Frequency (GHz)"); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java index 7bbe0f216e..333d7c1f19 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java @@ -238,7 +238,7 @@ public static void windmillsAnyStructure(SceneBuilder scene, SceneBuildingUtil u } public static void mechanicalBearing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_bearing", "Movings Structures using the Mechanical Bearing"); + scene.title("mechanical_bearing", "Moving Structures using the Mechanical Bearing"); scene.configureBasePlate(1, 1, 5); scene.setSceneOffsetY(-1); scene.world.showSection(util.select.layer(0), Direction.UP); diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 3aa3fb67d9..287906fee8 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -143,7 +143,8 @@ "create.keyinfo.toolmenu": "Focus Schematic Overlay", "create.keyinfo.toolbelt": "Access Nearby Toolboxes", "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", + "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", + "create.keyinfo.ponder": "Ponder", "create.gui.scrollInput.defaultTitle": "Choose an Option:", "create.gui.scrollInput.scrollToModify": "Scroll to Modify", diff --git a/src/main/resources/assets/create/models/block/crushing_wheel/crushing_wheel.obj b/src/main/resources/assets/create/models/block/crushing_wheel/crushing_wheel.obj index 1c99aefe04..263c45f6c1 100644 --- a/src/main/resources/assets/create/models/block/crushing_wheel/crushing_wheel.obj +++ b/src/main/resources/assets/create/models/block/crushing_wheel/crushing_wheel.obj @@ -1,4 +1,4 @@ -# Blender 3.5.0 +# Blender 4.2.0 # www.blender.org mtllib crushing_wheel.mtl o Cube.004 @@ -13,10 +13,6 @@ v 0.625000 0.000000 0.375000 v 0.375000 0.000000 0.375000 v 0.625000 0.000000 0.625000 v 0.375000 0.000000 0.625000 -v 0.375000 0.495000 0.375000 -v 0.625000 0.495000 0.375000 -v 0.625000 0.495000 0.625000 -v 0.375000 0.495000 0.625000 v 1.423879 0.880000 0.500000 v 1.423880 0.880000 0.117317 v 0.853554 0.880000 -0.353553 @@ -248,32 +244,24 @@ v 0.882684 0.881000 -0.500000 v 0.063492 0.881000 -0.477705 v -0.500000 0.881000 0.117316 v -0.477705 0.881000 0.936509 -vn -0.5774 -0.5774 -0.5774 -vn 0.5774 -0.5774 -0.5774 -vn 0.5774 -0.5774 0.5774 -vn -0.5774 -0.5774 0.5774 -vn -0.7071 -0.0000 0.7071 -vn -0.7071 -0.0000 -0.7071 -vn 0.7071 -0.0000 0.7071 -vn 0.7071 -0.0000 -0.7071 -vn -0.5774 0.5774 -0.5774 -vn -0.5774 0.5774 0.5774 -vn 0.5774 0.5774 0.5774 -vn 0.5774 0.5774 -0.5774 -vn -1.0000 -0.0000 -0.0000 vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 vn -0.0000 1.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 -0.7071 vn -0.9239 -0.0000 0.3827 vn 0.3827 -0.0000 0.9239 -vn -0.0000 -0.0000 1.0000 -vn 1.0000 -0.0000 -0.0000 vn -0.7071 0.0001 0.7071 vn -0.3827 -0.0000 0.9239 vn 0.9239 -0.0000 0.3827 +vn 0.7071 -0.0000 0.7071 vn 0.9239 -0.0000 -0.3827 vn 0.3827 -0.0000 -0.9239 +vn 0.7071 -0.0000 -0.7071 vn -0.3827 -0.0000 -0.9239 -vn -0.0000 -0.0000 -1.0000 vn 0.7071 0.0001 0.7071 vn -0.9239 -0.0000 -0.3827 vn -0.0000 -0.0002 1.0000 @@ -281,922 +269,433 @@ vn -0.7071 -0.0001 0.7071 vn 0.7071 -0.0001 -0.7071 vn -0.0000 -0.0001 -1.0000 vn -0.7071 -0.0001 -0.7071 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.691341 0.961940 -vt 0.937500 0.125000 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 0.146447 0.146447 -vt 0.437500 0.000000 -vt 0.073223 0.676776 -vt 0.437500 0.000000 -vt 0.323223 0.926777 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 0.146446 0.853553 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.500000 1.000000 -vt 0.437500 0.125000 -vt 0.437500 0.000000 -vt 0.926777 0.676777 -vt 0.625000 0.375000 -vt 0.625000 0.000000 -vt 0.375000 0.000000 vt 0.375000 0.375000 -vt 0.375000 0.000000 -vt 0.625000 0.000000 -vt 0.625000 0.625000 -vt 0.625000 0.000000 -vt 0.375000 0.000000 -vt 0.375000 0.625000 -vt 0.625000 0.000000 -vt 0.375000 0.000000 -vt 0.375000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.375000 0.500000 -vt 0.625000 0.500000 -vt 0.375000 0.500000 -vt 0.625000 0.500000 -vt 0.375000 0.500000 -vt 0.961940 0.500000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.961940 0.308658 -vt 0.937500 0.875000 -vt 0.437500 0.937500 -vt 0.676777 0.073224 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.937500 0.875000 -vt 0.691342 0.038061 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.500000 0.000000 -vt 0.173359 0.173359 -vt 0.437500 0.937500 -vt 0.073223 0.676776 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.000000 0.500000 -vt 0.038060 0.500000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.937500 0.875000 -vt 0.038060 0.691341 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.937500 0.875000 -vt 0.308658 0.038060 -vt 0.437500 0.937500 -vt 0.073223 0.323223 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.937500 0.875000 -vt 0.038060 0.308658 vt 0.625000 0.375000 -vt 0.625000 0.000000 -vt 0.375000 0.000000 -vt 0.375000 0.375000 -vt 0.375000 0.000000 -vt 0.625000 0.000000 vt 0.625000 0.625000 -vt 0.625000 0.000000 -vt 0.375000 0.000000 vt 0.375000 0.625000 -vt 0.625000 0.000000 vt 0.375000 0.000000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.062500 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 0.000000 vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.308658 0.961939 -vt 0.937500 0.125000 -vt 0.500000 0.961940 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.500000 1.000000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.308658 0.961939 -vt 0.937500 0.875000 -vt 0.437500 0.937500 -vt 0.676776 0.926777 -vt 0.000000 1.000000 vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 vt 0.937500 0.875000 -vt 0.691341 0.961940 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 0.853553 0.853554 -vt 0.437500 0.062500 -vt 0.437500 0.125000 vt 0.937500 0.125000 -vt 0.961940 0.691342 -vt 0.826640 0.826641 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.853553 0.853554 -vt 0.437500 0.937500 -vt 0.926777 0.676777 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.961940 0.691342 -vt 0.937500 0.875000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.125000 +vt 0.961940 0.308659 +vt 0.826641 0.173360 vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 1.000000 0.500000 vt 0.437500 0.000000 -vt 0.926777 0.323224 vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.961940 0.308659 -vt 0.937500 0.125000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 +vt 0.000000 0.062500 vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 1.000000 0.500000 -vt 0.437500 0.875000 vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 0.853554 0.146447 -vt 0.437500 0.000000 -vt 0.676777 0.073224 -vt 0.000000 0.062500 -vt 1.000000 0.125000 +vt 0.437500 1.000000 +vt 0.437500 0.937500 vt 0.000000 0.125000 -vt 0.437500 0.062500 vt 0.437500 0.125000 -vt 0.691342 0.038061 -vt 0.937500 0.125000 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.826641 0.173359 +vt 0.437500 0.875000 vt 0.000000 0.875000 -vt 1.000000 0.875000 +vt 0.038060 0.308658 +vt 0.038060 0.500000 +vt 0.500000 0.000000 vt 0.500000 0.038061 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.000000 -vt 0.937500 0.125000 +vt 0.961940 0.691342 +vt 0.961940 0.500000 vt 0.500000 0.000000 -vt 0.437500 0.125000 -vt 0.437500 0.000000 +vt 0.691342 0.038061 +vt 0.073223 0.676776 +vt 0.173359 0.826640 +vt 0.038060 0.691342 +vt 0.676776 0.926777 +vt 0.500000 0.961940 +vt 0.500000 0.875000 +vt 0.655330 0.875000 +vt 0.500000 1.000000 +vt 0.073223 0.323223 +vt 0.926777 0.676777 +vt 0.826640 0.826641 +vt 0.765165 0.765165 +vt 0.875000 0.655330 +vt 0.853553 0.853554 vt 0.323224 0.073223 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.937500 0.125000 -vt 0.308658 0.038060 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 vt 0.173359 0.173359 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.437500 0.000000 -vt 0.073223 0.323223 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.038060 0.500000 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.038060 0.308658 -vt 0.937500 0.125000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.173359 0.826640 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.146446 0.853553 -vt 0.437500 0.937500 -vt 0.323223 0.926776 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.437500 0.000000 -vt 0.676776 0.926777 -vt 0.500000 0.500000 -vt 0.500000 0.961940 -vt 0.961940 0.500000 -vt 0.826641 0.173360 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.125000 -vt 0.000000 0.500000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.038060 0.691342 -vt 0.937500 0.125000 -vt 0.173359 0.826640 -vt 0.826640 0.826641 -vt 0.234835 0.234835 -vt 0.500000 0.875000 -vt 0.125000 0.655330 -vt 0.655330 0.875000 -vt 0.344670 0.875000 +vt 0.308658 0.038060 +vt 0.926777 0.323224 vt 0.875000 0.500000 -vt 0.500000 0.875000 -vt 0.500000 0.125000 -vt 0.500000 0.875000 -vt 0.234835 0.765165 -vt 0.500000 0.875000 -vt 0.655330 0.125000 -vt 0.655330 0.875000 -vt 0.344670 0.875000 -vt 0.765165 0.765165 -vt 0.500000 0.875000 -vt 0.655330 0.875000 -vt 0.125000 0.344670 -vt 0.344670 0.875000 -vt 0.875000 0.655330 -vt 0.344670 0.875000 -vt 0.655330 0.875000 -vt 0.655330 0.875000 -vt 0.344669 0.875000 -vt 0.765165 0.234835 -vt 0.500000 0.875000 -vt 0.655330 0.875000 -vt 0.344670 0.875000 vt 0.875000 0.344670 -vt 0.344669 0.875000 -vt 0.655330 0.875000 +vt 1.000000 0.500000 +vt 0.676777 0.073224 +vt 0.691342 0.038061 +vt 0.765165 0.234835 +vt 0.655330 0.125000 +vt 0.853554 0.146447 +vt 0.500000 0.125000 vt 0.344670 0.125000 -vt 0.344670 0.875000 -vt 0.655330 0.875000 +vt 0.234835 0.234835 +vt 0.125000 0.344670 +vt 0.146447 0.146447 +vt 0.691341 0.961940 vt 0.125000 0.500000 -vt 0.500000 0.875000 -vt 0.500000 0.875000 +vt 0.125000 0.655330 +vt 0.000000 0.500000 +vt 0.323223 0.926777 +vt 0.308658 0.961939 +vt 0.234835 0.765165 +vt 0.344669 0.875000 +vt 0.146446 0.853553 vt 0.500000 0.500000 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.146447 0.146446 -vt 0.437500 0.937500 -vt 0.323224 0.073223 -vt 0.437500 0.937500 -vt 0.926777 0.323224 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.437500 0.875000 -vt 0.853554 0.146447 -vt 0.500000 0.038061 -vt 0.875000 0.500000 -vt 0.500000 0.875000 -vt 0.765165 0.765165 -vt 0.500000 0.875000 +vt 0.301126 0.698874 +vt 0.218750 0.616497 +vt 0.698874 0.698874 +vt 0.616497 0.781250 +vt 0.500000 0.218750 +vt 0.616498 0.218750 +vt 0.218750 0.500000 +vt 0.218750 0.383502 vt 0.655330 0.875000 -vt 0.344669 0.875000 -vt 0.125000 0.344670 -vt 0.765165 0.234835 vt 0.500000 0.875000 +vt 0.500000 0.781250 +vt 0.616498 0.781250 vt 0.655330 0.875000 -vt 0.344669 0.875000 -vt 0.875000 0.344670 -vt 0.655330 0.875000 -vt 0.344670 0.875000 -vt 0.344670 0.125000 -vt 0.655330 0.875000 -vt 0.344670 0.875000 vt 0.500000 0.875000 -vt 0.250000 0.062500 -vt 0.750000 0.062500 -vt 0.750000 0.250000 -vt 0.750000 0.062500 -vt 0.250000 0.062500 -vt 0.250000 0.250000 -vt 0.750000 0.937500 -vt 0.250000 0.937500 -vt 0.250000 0.750000 -vt 0.250000 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.750000 -vt 0.250000 0.062500 -vt 0.750000 0.062500 -vt 0.750000 0.750000 -vt 0.250000 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.250000 -vt 0.250000 0.062500 -vt 0.750000 0.062500 -vt 0.250000 0.750000 -vt 0.250000 0.937500 -vt 0.750000 0.937500 -vt 0.250000 0.250000 -vt 0.383502 0.781250 -vt 0.616497 0.781250 -vt 0.781250 0.616498 -vt 0.698874 0.698874 -vt 0.500000 0.781250 vt 0.500000 0.781250 -vt 0.698874 0.301126 vt 0.616497 0.781250 +vt 0.500000 0.875000 +vt 0.344669 0.875000 vt 0.383502 0.781250 -vt 0.383502 0.781250 -vt 0.616498 0.781250 -vt 0.383502 0.218750 vt 0.500000 0.781250 +vt 0.344670 0.875000 vt 0.383502 0.781250 -vt 0.616497 0.781250 -vt 0.781250 0.383503 vt 0.500000 0.781250 -vt 0.301126 0.301126 +vt 0.655330 0.875000 +vt 0.500000 0.875000 vt 0.500000 0.781250 -vt 0.218750 0.500000 vt 0.616497 0.781250 -vt 0.218750 0.616497 -vt 0.383502 0.781250 -vt 0.500000 0.781250 -vt 0.781250 0.500000 -vt 0.301126 0.698874 +vt 0.655330 0.875000 vt 0.500000 0.781250 vt 0.616498 0.781250 -vt 0.383502 0.781250 -vt 0.218750 0.383502 -vt 0.500000 0.218750 +vt 0.655330 0.875000 +vt 0.500000 0.875000 vt 0.500000 0.781250 vt 0.616497 0.781250 vt 0.383502 0.781250 -vt 0.616497 0.781250 -vt 0.383502 0.781250 -vt 0.616498 0.218750 -vt 0.875000 0.655330 -vt 0.655330 0.875000 vt 0.344670 0.875000 -vt 0.500000 0.875000 -vt 0.125000 0.500000 -vt 0.500000 0.125000 -vt 0.500000 0.875000 -vt 0.234835 0.765165 -vt 0.500000 0.875000 +vt 0.383502 0.781250 vt 0.655330 0.875000 -vt 0.125000 0.655330 -vt 0.344670 0.875000 -vt 0.234835 0.234835 vt 0.500000 0.875000 -vt 0.655330 0.875000 -vt 0.344670 0.875000 -vt 0.344670 0.875000 -vt 0.655330 0.125000 +vt 0.500000 0.781250 +vt 0.616497 0.781250 vt 0.655330 0.875000 vt 0.616497 0.781250 -vt 0.383502 0.781250 +vt 0.073223 0.676776 +vt 0.038060 0.691341 +vt 0.500000 1.000000 +vt 0.038060 0.500000 +vt 0.323224 0.073223 +vt 0.308658 0.038060 +vt 0.173359 0.173359 +vt 0.961940 0.500000 +vt 0.676777 0.073224 +vt 0.655330 0.125000 +vt 0.826641 0.173359 +vt 0.961940 0.308658 +vt 0.146447 0.146446 +vt 0.125000 0.500000 +vt 0.000000 0.500000 +vt 0.323223 0.926776 +vt 0.250000 0.062500 +vt 0.750000 0.062500 +vt 0.750000 0.937500 +vt 0.250000 0.937500 +vt 0.250000 0.250000 +vt 0.750000 0.250000 +vt 0.750000 0.750000 +vt 0.250000 0.750000 +vt 0.383502 0.218750 vt 0.781250 0.616498 -vt 0.698874 0.698874 -vt 0.500000 0.781250 -vt 0.500000 0.781250 -vt 0.698874 0.301126 -vt 0.616497 0.781250 vt 0.383502 0.781250 +vt 0.344670 0.875000 vt 0.383502 0.781250 -vt 0.616498 0.781250 -vt 0.383502 0.218750 -vt 0.500000 0.781250 -vt 0.616497 0.781250 -vt 0.383502 0.781250 -vt 0.781250 0.383503 -vt 0.500000 0.781250 +vt 0.344670 0.875000 vt 0.301126 0.301126 -vt 0.500000 0.781250 -vt 0.218750 0.500000 -vt 0.616497 0.781250 -vt 0.218750 0.616497 -vt 0.383502 0.781250 -vt 0.500000 0.781250 +vt 0.781250 0.383503 vt 0.781250 0.500000 -vt 0.301126 0.698874 -vt 0.500000 0.781250 -vt 0.616498 0.781250 -vt 0.383502 0.781250 -vt 0.218750 0.383502 -vt 0.500000 0.218750 -vt 0.500000 0.781250 -vt 0.616497 0.781250 +vt 0.698874 0.301126 vt 0.383502 0.781250 -vt 0.616497 0.781250 +vt 0.344670 0.875000 vt 0.383502 0.781250 -vt 0.616498 0.218750 -vt 0.038060 0.308658 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.000000 -vt 0.038060 0.500000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.437500 0.062500 -vt 0.500000 1.000000 -vt 0.437500 0.125000 -vt 0.000000 0.000000 -vt 0.691341 0.961940 -vt 0.937500 0.125000 -vt 0.000000 0.062500 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.062500 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.146446 0.853553 -vt 0.000000 0.000000 -vt 0.038060 0.691342 -vt 0.937500 0.125000 -vt 0.437500 0.000000 -vt 0.173359 0.826640 -vt 0.937500 0.125000 -vt 0.961940 0.691342 -vt 0.000000 0.000000 -vt 0.437500 0.000000 -vt 0.961940 0.500000 -vt 0.961940 0.308659 -vt 0.000000 0.000000 -vt 0.937500 0.125000 -vt 0.437500 0.000000 -vt 0.826641 0.173360 -vt 0.437500 0.000000 -vt 0.500000 0.961940 -vt 0.437500 0.125000 -vt 0.437500 0.062500 -vt 1.000000 0.500000 -vt 0.937500 0.125000 -vt 0.000000 0.000000 -vt 0.308658 0.038060 -vt 0.437500 0.000000 -vt 0.173359 0.173359 -vt 0.437500 0.125000 -vt 0.437500 0.062500 -vt 0.146447 0.146447 -vt 0.000000 0.000000 -vt 0.308658 0.961939 -vt 0.937500 0.125000 -vt 0.437500 0.000000 -vt 0.826640 0.826641 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.853553 0.853554 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 0.000000 0.062500 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.853554 0.146447 -vt 0.000000 0.000000 -vt 0.691342 0.038061 -vt 0.937500 0.125000 -vt 0.437500 0.000000 -vt 0.500000 0.038061 -vt 0.000000 0.062500 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.500000 0.000000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.000000 0.500000 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.308658 0.038060 -vt 0.437500 0.937500 -vt 0.173359 0.173359 -vt 0.000000 0.937500 -vt 0.937500 0.875000 -vt 0.038060 0.308658 -vt 0.437500 0.937500 -vt 0.038060 0.500000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.000000 0.500000 -vt 0.000000 0.937500 -vt 0.308658 0.961939 -vt 0.937500 0.875000 -vt 0.437500 0.937500 -vt 0.500000 0.961940 -vt 0.000000 1.000000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.500000 1.000000 -vt 0.000000 1.000000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.437500 1.000000 -vt 1.000000 0.500000 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.146447 0.146446 -vt 0.937500 0.875000 -vt 0.691342 0.038061 -vt 0.000000 0.937500 -vt 0.500000 0.038061 -vt 0.437500 0.937500 -vt 0.500000 0.000000 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.000000 0.937500 -vt 0.961940 0.691342 -vt 0.937500 0.875000 -vt 0.437500 0.937500 -vt 0.961940 0.500000 -vt 0.937500 0.875000 -vt 0.000000 0.937500 -vt 0.038060 0.691341 -vt 0.437500 0.937500 -vt 0.173359 0.826640 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.146446 0.853553 -vt 0.937500 0.875000 -vt 0.000000 0.937500 -vt 0.691341 0.961940 -vt 0.437500 0.937500 -vt 0.826640 0.826641 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 1.000000 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.853553 0.853554 -vt 0.000000 0.937500 -vt 0.961940 0.308658 -vt 0.937500 0.875000 -vt 0.437500 0.937500 -vt 0.826641 0.173359 -vt 0.000000 1.000000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.437500 1.000000 -vt 0.437500 0.875000 -vt 0.853554 0.146447 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 1.000000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt 0.000000 1.000000 +vt 0.344670 0.875000 s 0 usemtl crushing_wheel_insert -f 57/163/5 100/266/5 197/503/5 196/499/5 -f 85/234/19 83/229/19 184/467/19 183/463/19 -f 20/57/13 126/327/13 228/587/13 229/589/13 -f 46/133/13 99/265/13 195/498/13 194/495/13 -f 69/195/13 71/200/13 212/542/13 210/538/13 -f 126/327/18 19/53/18 227/585/18 228/587/18 -f 3/10/14 103/275/14 102/273/14 -f 96/262/14 98/264/14 120/313/14 116/303/14 -f 98/264/14 96/262/14 6/19/14 -f 79/220/14 83/229/14 85/234/14 -f 7/22/14 104/276/14 111/291/14 113/296/14 -f 104/276/14 7/22/14 45/129/14 -f 72/203/14 77/216/14 74/210/14 -f 56/160/14 99/265/14 107/282/14 117/305/14 -f 99/265/14 56/160/14 55/158/14 -f 63/181/14 69/195/14 65/187/14 -f 63/181/14 100/266/14 115/301/14 110/288/14 -f 100/266/14 63/181/14 62/179/14 -f 56/160/14 100/266/14 57/163/14 -f 72/203/14 69/195/14 108/284/14 118/308/14 -f 69/195/14 72/203/14 71/200/14 -f 7/22/14 99/265/14 46/133/14 -f 79/220/14 77/216/14 105/277/14 112/294/14 -f 77/216/14 79/220/14 2/8/14 -f 96/262/14 104/276/14 1/3/14 -f 3/10/14 83/229/14 119/311/14 106/279/14 -f 83/229/14 3/10/14 101/270/14 -f 4/12/14 98/264/14 35/99/14 -f 4/12/14 103/275/14 109/286/14 114/300/14 -f 103/275/14 4/12/14 5/16/14 -f 97/263/14 154/395/14 152/391/14 -f 98/264/14 4/12/14 114/300/14 120/313/14 -f 97/263/14 144/373/14 146/377/14 -f 99/265/14 7/22/14 113/296/14 107/282/14 -f 100/266/14 56/160/14 117/305/14 115/301/14 -f 97/263/14 156/400/14 158/406/14 -f 77/216/14 72/203/14 118/308/14 105/277/14 -f 97/263/14 151/389/14 155/399/14 -f 112/293/14 105/278/14 150/386/14 155/397/14 -f 114/299/14 109/287/14 154/396/14 157/402/14 -f 106/279/14 109/286/14 103/275/14 3/10/14 -f 116/303/14 111/291/14 104/276/14 96/262/14 -f 115/302/14 117/306/14 149/383/14 145/375/14 -f 105/278/14 118/309/14 147/379/14 150/386/14 -f 116/303/14 120/313/14 148/382/14 146/377/14 -f 117/307/14 107/283/14 153/393/14 149/384/14 -f 118/310/14 108/285/14 156/401/14 147/380/14 -f 106/280/14 119/312/14 151/388/14 152/390/14 -f 120/313/14 114/300/14 157/403/14 148/382/14 -f 107/283/14 113/297/14 143/370/14 153/393/14 -f 110/288/14 108/284/14 69/195/14 63/181/14 -f 112/294/14 119/311/14 83/229/14 79/220/14 -f 113/298/14 111/292/14 144/374/14 143/371/14 -f 110/289/14 115/302/14 145/375/14 158/404/14 -f 22/60/15 25/69/15 91/249/15 -f 40/113/15 131/337/15 134/345/15 36/101/15 -f 36/101/15 38/107/15 40/113/15 -f 27/75/15 28/79/15 24/65/15 -f 50/142/15 159/407/15 128/330/15 47/134/15 -f 47/134/15 49/140/15 50/142/15 -f 123/320/15 26/73/15 21/58/15 -f 124/322/15 132/339/15 127/328/15 16/43/15 -f 16/43/15 59/169/15 124/322/15 -f 18/49/15 19/53/15 126/327/15 -f 18/49/15 166/424/15 130/335/15 67/192/15 -f 67/192/15 125/326/15 18/49/15 -f 124/322/15 17/46/15 67/192/15 -f 123/320/15 133/342/15 161/412/15 126/327/15 -f 126/327/15 20/57/15 123/320/15 -f 50/142/15 52/148/15 16/43/15 -f 27/75/15 129/334/15 164/419/15 21/58/15 -f 21/58/15 122/318/15 27/75/15 -f 40/113/15 42/120/15 47/134/15 -f 22/60/15 163/417/15 160/411/15 24/65/15 -f 24/65/15 23/64/15 22/60/15 -f 94/257/15 39/110/15 36/101/15 -f 94/257/15 165/422/15 162/414/15 91/249/15 -f 91/249/15 93/255/15 94/257/15 -f 131/337/15 128/331/15 178/452/15 181/458/15 -f 36/101/15 134/345/15 165/422/15 94/257/15 -f 163/416/15 162/415/15 168/430/15 167/426/15 -f 16/43/15 127/328/15 159/407/15 50/142/15 -f 67/192/15 130/335/15 132/339/15 124/322/15 -f 121/314/15 178/451/15 176/447/15 -f 21/58/15 164/419/15 133/342/15 123/320/15 -f 121/314/15 168/429/15 170/433/15 -f 130/336/15 166/423/15 171/435/15 174/442/15 -f 132/340/15 130/336/15 174/442/15 179/453/15 -f 163/417/15 22/60/15 91/249/15 162/414/15 -f 131/337/15 40/113/15 47/134/15 128/330/15 -f 129/332/15 160/410/15 177/449/15 173/439/15 -f 165/421/15 134/345/15 172/438/15 170/433/15 -f 133/343/15 164/420/15 169/431/15 182/460/15 -f 159/408/15 127/329/15 175/444/15 176/446/15 -f 121/314/15 180/456/15 182/462/15 -f 164/420/15 129/333/15 173/440/15 169/431/15 -f 160/410/15 163/418/15 167/427/15 177/449/15 -f 134/345/15 131/338/15 181/459/15 172/438/15 -f 166/424/15 18/49/15 126/327/15 161/412/15 -f 129/334/15 27/75/15 24/65/15 160/411/15 -f 121/314/15 175/445/15 179/455/15 -f 166/425/15 161/413/15 180/457/15 171/436/15 -f 146/377/14 148/382/14 97/263/14 -f 147/381/14 156/400/14 97/263/14 -f 148/382/14 157/403/14 97/263/14 -f 143/372/14 144/373/14 97/263/14 -f 158/405/14 156/401/14 108/285/14 110/290/14 -f 155/398/14 151/388/14 119/312/14 112/295/14 -f 157/403/14 154/395/14 97/263/14 -f 150/387/14 147/381/14 97/263/14 -f 149/385/14 153/394/14 97/263/14 -f 152/391/14 151/389/14 97/263/14 -f 153/394/14 143/372/14 97/263/14 -f 158/406/14 145/376/14 97/263/14 -f 152/392/14 154/396/14 109/287/14 106/281/14 -f 146/378/14 144/374/14 111/292/14 116/304/14 -f 155/399/14 150/387/14 97/263/14 -f 145/376/14 149/385/14 97/263/14 -f 170/433/15 172/438/15 121/314/15 -f 171/437/15 180/456/15 121/314/15 -f 172/438/15 181/459/15 121/314/15 -f 167/428/15 168/429/15 121/314/15 -f 182/461/15 180/457/15 161/413/15 133/344/15 -f 179/454/15 175/444/15 127/329/15 132/341/15 -f 181/459/15 178/451/15 121/314/15 -f 174/443/15 171/437/15 121/314/15 -f 173/441/15 177/450/15 121/314/15 -f 176/447/15 175/445/15 121/314/15 -f 177/450/15 167/428/15 121/314/15 -f 182/462/15 169/432/15 121/314/15 -f 176/448/15 178/452/15 128/331/15 159/409/15 -f 170/434/15 168/430/15 162/415/15 165/422/15 -f 179/455/15 174/443/15 121/314/15 -f 169/432/15 173/441/15 121/314/15 -f 83/229/18 101/270/18 214/550/18 184/467/18 -f 98/264/19 6/19/19 187/475/19 198/505/19 -f 35/99/26 98/264/26 198/505/26 203/518/26 -f 100/266/6 62/179/6 208/533/6 197/503/6 -f 99/265/26 55/158/26 199/508/26 195/498/26 -f 102/273/8 103/275/8 193/493/8 192/490/8 -f 1/3/6 104/276/6 204/521/6 188/478/6 -f 74/210/7 77/216/7 201/513/7 200/511/7 -f 65/187/18 69/195/18 210/538/18 209/535/18 -f 77/216/5 2/8/5 202/516/5 201/513/5 -f 104/276/8 45/129/8 205/524/8 204/521/8 -f 103/275/7 5/16/7 191/488/7 193/493/7 -f 49/140/31 47/134/31 236/609/31 238/615/31 -f 16/43/13 52/148/13 230/593/13 231/596/13 -f 91/249/8 25/69/8 232/599/8 233/601/8 -f 122/318/5 21/58/5 216/555/5 226/583/5 -f 59/169/32 16/43/32 231/596/32 225/579/32 -f 93/255/7 91/249/7 233/601/7 234/604/7 -f 67/192/5 17/46/5 239/617/5 240/620/5 -f 21/58/7 26/73/7 215/553/7 216/555/7 -f 36/101/26 39/110/26 220/565/26 221/568/26 -f 24/65/19 28/79/19 217/558/19 218/560/19 -f 23/64/18 24/65/18 218/560/18 219/563/18 -f 125/326/6 67/192/6 240/620/6 242/626/6 -f 47/134/33 42/120/33 235/607/33 236/609/33 -f 38/107/19 36/101/19 221/568/19 223/574/19 -s 1 +f 53/13/7 96/14/7 193/14/7 192/13/7 +f 81/27/3 79/28/3 180/28/3 179/27/3 +f 16/29/6 122/30/6 224/30/6 225/29/6 +f 42/31/6 95/32/6 191/32/6 190/31/6 +f 65/30/6 67/33/6 208/33/6 206/30/6 +f 122/30/2 15/34/2 223/34/2 224/30/2 +f 3/35/1 99/36/1 98/37/1 +f 92/38/1 94/39/1 116/40/1 112/41/1 +f 94/39/1 92/38/1 6/42/1 +f 75/43/1 79/28/1 81/27/1 +f 7/44/1 100/45/1 107/46/1 109/47/1 +f 100/45/1 7/44/1 41/48/1 +f 68/49/1 73/50/1 70/51/1 +f 52/52/1 95/32/1 103/53/1 113/54/1 +f 95/32/1 52/52/1 51/55/1 +f 59/56/1 65/30/1 61/57/1 +f 59/56/1 96/14/1 111/58/1 106/59/1 +f 96/14/1 59/56/1 58/60/1 +f 52/52/1 96/14/1 53/13/1 +f 68/49/1 65/30/1 104/61/1 114/62/1 +f 65/30/1 68/49/1 67/33/1 +f 7/44/1 95/32/1 42/31/1 +f 75/43/1 73/50/1 101/63/1 108/64/1 +f 73/50/1 75/43/1 2/65/1 +f 92/38/1 100/45/1 1/66/1 +f 3/35/1 79/28/1 115/67/1 102/68/1 +f 79/28/1 3/35/1 97/69/1 +f 4/70/1 94/39/1 31/71/1 +f 4/70/1 99/36/1 105/72/1 110/73/1 +f 99/36/1 4/70/1 5/74/1 +f 93/75/1 150/76/1 148/77/1 +f 94/39/1 4/70/1 110/73/1 116/40/1 +f 93/75/1 140/78/1 142/79/1 +f 95/32/1 7/44/1 109/47/1 103/53/1 +f 96/14/1 52/52/1 113/54/1 111/58/1 +f 93/75/1 152/80/1 154/81/1 +f 73/50/1 68/49/1 114/62/1 101/63/1 +f 93/75/1 147/82/1 151/83/1 +f 108/84/1 101/85/1 146/86/1 151/87/1 +f 110/88/1 105/89/1 150/90/1 153/91/1 +f 102/68/1 105/72/1 99/36/1 3/35/1 +f 112/41/1 107/46/1 100/45/1 92/38/1 +f 111/92/1 113/93/1 145/94/1 141/95/1 +f 101/85/1 114/96/1 143/97/1 146/86/1 +f 112/41/1 116/40/1 144/98/1 142/79/1 +f 113/99/1 103/100/1 149/101/1 145/102/1 +f 114/103/1 104/85/1 152/104/1 143/105/1 +f 102/106/1 115/107/1 147/108/1 148/109/1 +f 116/40/1 110/73/1 153/110/1 144/98/1 +f 103/100/1 109/111/1 139/112/1 149/101/1 +f 106/59/1 104/61/1 65/30/1 59/56/1 +f 108/64/1 115/67/1 79/28/1 75/43/1 +f 109/113/1 107/114/1 140/115/1 139/116/1 +f 106/117/1 111/92/1 141/95/1 154/118/1 +f 18/119/5 21/120/5 87/36/5 +f 36/38/5 127/41/5 130/40/5 32/39/5 +f 32/39/5 34/121/5 36/38/5 +f 23/43/5 24/27/5 20/122/5 +f 46/44/5 155/47/5 124/46/5 43/45/5 +f 43/45/5 45/48/5 46/44/5 +f 119/123/5 22/124/5 17/125/5 +f 120/52/5 128/54/5 123/53/5 12/126/5 +f 12/126/5 55/55/5 120/52/5 +f 14/127/5 15/34/5 122/30/5 +f 14/127/5 162/128/5 126/58/5 63/129/5 +f 63/129/5 121/60/5 14/127/5 +f 120/52/5 13/130/5 63/129/5 +f 119/123/5 129/62/5 157/61/5 122/30/5 +f 122/30/5 16/29/5 119/123/5 +f 46/44/5 48/31/5 12/126/5 +f 23/43/5 125/64/5 160/63/5 17/125/5 +f 17/125/5 118/131/5 23/43/5 +f 36/38/5 38/66/5 43/45/5 +f 18/119/5 159/68/5 156/132/5 20/122/5 +f 20/122/5 19/133/5 18/119/5 +f 90/134/5 35/71/5 32/39/5 +f 90/134/5 161/73/5 158/72/5 87/36/5 +f 87/36/5 89/74/5 90/134/5 +f 127/88/5 124/89/5 174/90/5 177/91/5 +f 32/39/5 130/40/5 161/73/5 90/134/5 +f 159/113/5 158/114/5 164/115/5 163/116/5 +f 12/126/5 123/53/5 155/47/5 46/44/5 +f 63/129/5 126/58/5 128/54/5 120/52/5 +f 117/75/5 174/76/5 172/77/5 +f 17/125/5 160/63/5 129/62/5 119/123/5 +f 117/75/5 164/78/5 166/79/5 +f 126/85/5 162/96/5 167/97/5 170/86/5 +f 128/84/5 126/85/5 170/86/5 175/87/5 +f 159/68/5 18/119/5 87/36/5 158/72/5 +f 127/41/5 36/38/5 43/45/5 124/46/5 +f 125/99/5 156/100/5 173/101/5 169/102/5 +f 161/41/5 130/40/5 168/98/5 166/79/5 +f 129/117/5 160/92/5 165/95/5 178/118/5 +f 155/106/5 123/107/5 171/108/5 172/109/5 +f 117/75/5 176/80/5 178/81/5 +f 160/92/5 125/93/5 169/94/5 165/95/5 +f 156/100/5 159/111/5 163/112/5 173/101/5 +f 130/40/5 127/73/5 177/110/5 168/98/5 +f 162/128/5 14/127/5 122/30/5 157/61/5 +f 125/64/5 23/43/5 20/122/5 156/132/5 +f 117/75/5 171/82/5 175/83/5 +f 162/103/5 157/85/5 176/104/5 167/105/5 +f 142/79/1 144/98/1 93/75/1 +f 143/143/1 152/80/1 93/75/1 +f 144/98/1 153/110/1 93/75/1 +f 139/144/1 140/78/1 93/75/1 +f 154/145/1 152/104/1 104/85/1 106/146/1 +f 151/147/1 147/108/1 115/107/1 108/148/1 +f 153/110/1 150/76/1 93/75/1 +f 146/149/1 143/143/1 93/75/1 +f 145/150/1 149/151/1 93/75/1 +f 148/77/1 147/82/1 93/75/1 +f 149/151/1 139/144/1 93/75/1 +f 154/81/1 141/152/1 93/75/1 +f 148/153/1 150/90/1 105/89/1 102/154/1 +f 142/155/1 140/115/1 107/114/1 112/156/1 +f 151/83/1 146/149/1 93/75/1 +f 141/152/1 145/150/1 93/75/1 +f 166/79/5 168/98/5 117/75/5 +f 167/143/5 176/80/5 117/75/5 +f 168/98/5 177/110/5 117/75/5 +f 163/144/5 164/78/5 117/75/5 +f 178/145/5 176/104/5 157/85/5 129/146/5 +f 175/147/5 171/108/5 123/107/5 128/148/5 +f 177/110/5 174/76/5 117/75/5 +f 170/149/5 167/143/5 117/75/5 +f 169/150/5 173/151/5 117/75/5 +f 172/77/5 171/82/5 117/75/5 +f 173/151/5 163/144/5 117/75/5 +f 178/81/5 165/152/5 117/75/5 +f 172/153/5 174/90/5 124/89/5 155/154/5 +f 166/155/5 164/115/5 158/114/5 161/156/5 +f 175/83/5 170/149/5 117/75/5 +f 165/152/5 169/150/5 117/75/5 +f 79/28/2 97/69/2 210/69/2 180/28/2 +f 94/39/3 6/42/3 183/42/3 194/39/3 +f 31/71/4 94/39/4 194/39/4 199/71/4 +f 96/14/8 58/60/8 204/60/8 193/14/8 +f 95/32/4 51/55/4 195/55/4 191/32/4 +f 98/37/17 99/36/17 189/36/17 188/37/17 +f 1/66/8 100/45/8 200/45/8 184/66/8 +f 70/51/14 73/50/14 197/50/14 196/51/14 +f 61/57/2 65/30/2 206/30/2 205/57/2 +f 73/50/7 2/65/7 198/65/7 197/50/7 +f 100/45/17 41/48/17 201/48/17 200/45/17 +f 99/36/14 5/74/14 187/74/14 189/36/14 +f 45/48/23 43/45/23 232/45/23 234/48/23 +f 12/126/6 48/31/6 226/31/6 227/126/6 +f 87/36/17 21/120/17 228/120/17 229/36/17 +f 118/131/7 17/125/7 212/125/7 222/131/7 +f 55/55/24 12/126/24 227/126/24 221/55/24 +f 89/74/14 87/36/14 229/36/14 230/74/14 +f 63/129/7 13/130/7 235/130/7 236/129/7 +f 17/125/14 22/124/14 211/124/14 212/125/14 +f 32/39/4 35/71/4 216/71/4 217/39/4 +f 20/122/3 24/27/3 213/27/3 214/122/3 +f 19/133/2 20/122/2 214/122/2 215/133/2 +f 121/60/8 63/129/8 236/129/8 238/60/8 +f 43/45/25 38/66/25 231/66/25 232/45/25 +f 34/121/3 32/39/3 217/39/3 219/121/3 usemtl m_axis -f 9/27/1 11/33/4 15/41/5 12/35/6 -f 11/34/4 10/30/3 14/39/7 15/42/5 -f 10/31/3 8/24/2 13/37/8 14/40/7 -f 8/25/2 9/28/1 12/36/6 13/38/8 -f 30/84/9 12/35/6 15/41/5 32/90/10 -f 32/91/10 15/42/5 14/39/7 31/87/11 -f 31/88/11 14/40/7 13/37/8 29/81/12 -f 29/82/12 13/38/8 12/36/6 30/85/9 +f 28/5/2 11/6/2 10/7/2 27/8/2 +f 27/5/3 10/6/3 8/7/3 25/8/3 +f 25/5/4 8/6/4 9/7/4 26/8/4 +f 26/5/6 9/6/6 11/7/6 28/8/6 usemtl m_axis_top -f 9/26/1 8/23/2 10/29/3 11/32/4 -f 30/83/9 32/89/10 31/86/11 29/80/12 -s 0 +f 9/1/1 8/2/1 10/3/1 11/4/1 +f 26/1/5 28/4/5 27/3/5 25/2/5 usemtl crushing_wheel_plates -f 33/93/13 37/103/13 39/111/13 35/100/13 -f 6/17/14 96/261/14 1/1/14 34/94/14 -f 25/68/6 92/250/6 246/636/6 232/597/6 -f 38/104/15 41/114/15 42/117/15 40/112/15 -f 34/95/16 41/115/16 38/105/16 6/18/16 -f 34/96/17 1/2/17 42/118/17 41/116/17 -f 6/20/18 38/106/18 37/102/18 33/92/18 -f 43/122/5 48/135/5 42/119/5 1/4/5 -f 45/126/14 7/21/14 46/130/14 44/123/14 -f 42/119/20 48/135/20 237/610/20 235/605/20 -f 49/137/15 51/143/15 52/146/15 50/141/15 -f 44/124/21 51/144/21 49/138/21 45/127/21 -f 44/125/22 46/131/22 52/147/22 51/145/22 -f 45/128/7 49/139/7 48/136/7 43/121/7 -f 54/153/18 58/165/18 52/149/18 46/132/18 -f 54/153/18 46/132/18 194/494/18 206/525/18 -f 55/155/14 56/159/14 57/161/14 53/150/14 -f 59/167/15 60/171/15 17/44/15 124/321/15 -f 53/151/17 60/172/17 59/168/17 55/156/17 -f 53/152/23 57/162/23 17/45/23 60/173/23 -f 55/157/19 59/170/19 58/166/19 54/154/19 -f 61/175/7 68/194/7 17/47/7 57/164/7 -f 55/157/19 54/154/19 206/526/19 199/506/19 -f 62/176/14 63/180/14 65/185/14 64/182/14 -f 19/52/19 75/211/19 243/627/19 227/584/19 -f 125/323/15 66/189/15 19/50/15 18/48/15 -f 64/183/22 66/190/22 125/324/22 62/177/22 -f 64/184/24 65/186/24 19/51/24 66/191/24 -f 62/178/8 125/325/8 68/193/8 61/174/8 -f 70/197/19 75/211/19 19/52/19 65/188/19 -f 71/198/14 72/202/14 74/207/14 73/204/14 -f 92/251/5 93/254/5 234/602/5 246/637/5 -f 20/54/15 76/213/15 26/70/15 123/319/15 -f 73/205/23 76/214/23 20/55/23 71/199/23 -f 73/206/25 74/208/25 26/71/25 76/215/25 -f 71/201/26 20/56/26 75/212/26 70/196/26 -f 78/217/8 81/225/8 26/72/8 74/209/8 -f 78/217/8 74/209/8 200/509/8 213/545/8 -f 2/5/14 79/219/14 85/232/14 80/221/14 -f 48/136/27 49/139/27 238/613/27 237/611/27 -f 122/315/15 82/226/15 28/76/15 27/74/15 -f 80/222/24 82/227/24 122/316/24 2/6/24 -f 80/223/28 85/233/28 28/77/28 82/228/28 -f 2/7/6 122/317/6 81/224/6 78/218/6 -f 84/230/26 87/240/26 28/78/26 85/235/26 -f 2/7/6 78/218/6 213/546/6 202/514/6 -f 101/267/14 3/9/14 102/271/14 86/236/14 -f 75/212/26 20/56/26 229/590/26 243/628/26 -f 23/61/15 88/241/15 25/66/15 22/59/15 -f 86/237/25 88/242/25 23/62/25 101/268/25 -f 86/238/16 102/272/16 25/67/16 88/243/16 -f 101/269/13 23/63/13 87/239/13 84/231/13 -f 89/244/6 92/250/6 25/68/6 102/274/6 -f 5/13/14 4/11/14 35/97/14 90/246/14 -f 93/252/15 95/258/15 39/108/15 94/256/15 -f 90/247/28 95/259/28 93/253/28 5/14/28 -f 90/248/21 35/98/21 39/109/21 95/260/21 -f 5/15/5 93/254/5 92/251/5 89/245/5 -f 203/517/14 198/504/14 187/474/14 186/471/14 -f 188/477/14 204/520/14 205/522/14 189/480/14 -f 194/496/14 195/497/14 199/507/14 206/527/14 -f 196/500/14 197/502/14 208/531/14 207/528/14 -f 209/534/14 210/537/14 212/543/14 211/539/14 -f 200/510/14 201/512/14 202/515/14 213/547/14 -f 183/464/14 184/466/14 214/548/14 185/468/14 -f 192/489/14 193/492/14 191/486/14 190/483/14 -f 84/230/26 85/235/26 183/465/26 185/469/26 -f 101/269/13 84/231/13 185/470/13 214/549/13 -f 62/178/8 61/174/8 207/529/8 208/532/8 -f 61/175/7 57/164/7 196/501/7 207/530/7 -f 6/20/29 33/92/29 186/472/29 187/476/29 -f 33/93/13 35/100/13 203/519/13 186/473/13 -f 89/244/6 102/274/6 192/491/6 190/484/6 -f 45/128/7 43/121/7 189/481/7 205/523/7 -f 43/122/5 1/4/5 188/479/5 189/482/5 -f 71/201/26 70/196/26 211/540/26 212/544/26 -f 70/197/19 65/188/19 209/536/19 211/541/19 -f 5/15/30 89/245/30 190/485/30 191/487/30 -f 220/564/15 222/569/15 223/572/15 221/567/15 -f 235/606/15 237/612/15 238/614/15 236/608/15 -f 230/592/15 224/575/15 225/578/15 231/595/15 -f 239/616/15 241/621/15 242/624/15 240/619/15 -f 227/586/15 243/629/15 229/591/15 228/588/15 -f 215/551/15 244/630/15 226/581/15 216/554/15 -f 217/556/15 245/633/15 219/561/15 218/559/15 -f 232/598/15 246/638/15 234/603/15 233/600/15 -f 81/224/6 122/317/6 226/582/6 244/631/6 -f 52/149/18 58/165/18 224/576/18 230/594/18 -f 26/72/8 81/225/8 244/632/8 215/552/8 -f 87/239/13 23/63/13 219/562/13 245/634/13 -f 58/166/19 59/170/19 225/580/19 224/577/19 -f 28/78/26 87/240/26 245/635/26 217/557/26 -f 68/193/8 125/325/8 242/625/8 241/622/8 -f 37/102/18 38/106/18 223/573/18 222/570/18 -f 17/47/7 68/194/7 241/623/7 239/618/7 -f 39/111/13 37/103/13 222/571/13 220/566/13 -s 1 +f 29/9/6 33/10/6 35/11/6 31/12/6 +f 6/15/1 92/16/1 1/17/1 30/18/1 +f 21/11/8 88/10/8 242/10/8 228/11/8 +f 34/19/5 37/20/5 38/21/5 36/22/5 +f 30/9/9 37/10/9 34/11/9 6/12/9 +f 30/23/10 1/24/10 38/25/10 37/26/10 +f 6/24/2 34/25/2 33/26/2 29/23/2 +f 39/9/7 44/10/7 38/11/7 1/12/7 +f 41/15/1 7/16/1 42/17/1 40/18/1 +f 38/11/11 44/10/11 233/10/11 231/11/11 +f 45/19/5 47/20/5 48/21/5 46/22/5 +f 40/9/12 47/10/12 45/11/12 41/12/12 +f 40/23/13 42/24/13 48/25/13 47/26/13 +f 41/24/14 45/25/14 44/26/14 39/23/14 +f 50/9/2 54/10/2 48/11/2 42/12/2 +f 50/9/2 42/12/2 190/12/2 202/9/2 +f 51/15/1 52/16/1 53/17/1 49/18/1 +f 55/19/5 56/20/5 13/21/5 120/22/5 +f 49/9/10 56/10/10 55/11/10 51/12/10 +f 49/23/15 53/24/15 13/25/15 56/26/15 +f 51/24/3 55/25/3 54/26/3 50/23/3 +f 57/9/14 64/10/14 13/11/14 53/12/14 +f 51/24/3 50/23/3 202/23/3 195/24/3 +f 58/15/1 59/16/1 61/17/1 60/18/1 +f 15/11/3 71/10/3 239/10/3 223/11/3 +f 121/19/5 62/20/5 15/21/5 14/22/5 +f 60/9/13 62/10/13 121/11/13 58/12/13 +f 60/23/16 61/24/16 15/25/16 62/26/16 +f 58/24/17 121/25/17 64/26/17 57/23/17 +f 66/9/3 71/10/3 15/11/3 61/12/3 +f 67/15/1 68/16/1 70/17/1 69/18/1 +f 88/26/7 89/25/7 230/25/7 242/26/7 +f 16/19/5 72/20/5 22/21/5 119/22/5 +f 69/9/15 72/10/15 16/11/15 67/12/15 +f 69/23/18 70/24/18 22/25/18 72/26/18 +f 67/24/4 16/25/4 71/26/4 66/23/4 +f 74/9/17 77/10/17 22/11/17 70/12/17 +f 74/9/17 70/12/17 196/12/17 209/9/17 +f 2/15/1 75/16/1 81/17/1 76/18/1 +f 44/26/19 45/25/19 234/25/19 233/26/19 +f 118/19/5 78/20/5 24/21/5 23/22/5 +f 76/9/16 78/10/16 118/11/16 2/12/16 +f 76/23/20 81/24/20 24/25/20 78/26/20 +f 2/24/8 118/25/8 77/26/8 74/23/8 +f 80/9/4 83/10/4 24/11/4 81/12/4 +f 2/24/8 74/23/8 209/23/8 198/24/8 +f 97/15/1 3/16/1 98/17/1 82/18/1 +f 71/26/4 16/25/4 225/25/4 239/26/4 +f 19/19/5 84/20/5 21/21/5 18/22/5 +f 82/9/18 84/10/18 19/11/18 97/12/18 +f 82/23/9 98/24/9 21/25/9 84/26/9 +f 97/24/6 19/25/6 83/26/6 80/23/6 +f 85/9/8 88/10/8 21/11/8 98/12/8 +f 5/15/1 4/16/1 31/17/1 86/18/1 +f 89/19/5 91/20/5 35/21/5 90/22/5 +f 86/9/20 91/10/20 89/11/20 5/12/20 +f 86/23/12 31/24/12 35/25/12 91/26/12 +f 5/24/7 89/25/7 88/26/7 85/23/7 +f 199/15/1 194/16/1 183/17/1 182/18/1 +f 184/15/1 200/16/1 201/17/1 185/18/1 +f 190/15/1 191/16/1 195/17/1 202/18/1 +f 192/15/1 193/16/1 204/17/1 203/18/1 +f 205/15/1 206/16/1 208/17/1 207/18/1 +f 196/15/1 197/16/1 198/17/1 209/18/1 +f 179/15/1 180/16/1 210/17/1 181/18/1 +f 188/15/1 189/16/1 187/17/1 186/18/1 +f 80/9/4 81/12/4 179/12/4 181/9/4 +f 97/24/6 80/23/6 181/23/6 210/24/6 +f 58/24/17 57/23/17 203/23/17 204/24/17 +f 57/9/14 53/12/14 192/12/14 203/9/14 +f 6/24/21 29/23/21 182/23/21 183/24/21 +f 29/9/6 31/12/6 199/12/6 182/9/6 +f 85/9/8 98/12/8 188/12/8 186/9/8 +f 41/24/14 39/23/14 185/23/14 201/24/14 +f 39/9/7 1/12/7 184/12/7 185/9/7 +f 67/24/4 66/23/4 207/23/4 208/24/4 +f 66/9/3 61/12/3 205/12/3 207/9/3 +f 5/24/22 85/23/22 186/23/22 187/24/22 +f 216/19/5 218/20/5 219/21/5 217/22/5 +f 231/19/5 233/20/5 234/21/5 232/22/5 +f 226/19/5 220/20/5 221/21/5 227/22/5 +f 235/19/5 237/20/5 238/21/5 236/22/5 +f 223/19/5 239/20/5 225/21/5 224/22/5 +f 211/19/5 240/20/5 222/21/5 212/22/5 +f 213/19/5 241/20/5 215/21/5 214/22/5 +f 228/19/5 242/20/5 230/21/5 229/22/5 +f 77/26/8 118/25/8 222/25/8 240/26/8 +f 48/11/2 54/10/2 220/10/2 226/11/2 +f 22/11/17 77/10/17 240/10/17 211/11/17 +f 83/26/6 19/25/6 215/25/6 241/26/6 +f 54/26/3 55/25/3 221/25/3 220/26/3 +f 24/11/4 83/10/4 241/10/4 213/11/4 +f 64/26/17 121/25/17 238/25/17 237/26/17 +f 33/26/2 34/25/2 219/25/2 218/26/2 +f 13/11/14 64/10/14 237/10/14 235/11/14 +f 35/11/6 33/10/6 218/10/6 216/11/6 usemtl m_spruce_log_top -f 135/346/11 136/349/10 137/352/4 138/355/3 -f 139/358/12 135/347/11 138/356/3 140/361/2 -f 141/364/9 139/359/12 140/362/2 142/367/1 -f 136/350/10 141/365/9 142/368/1 137/353/4 -f 142/369/1 140/363/2 138/357/3 137/354/4 -f 136/351/10 135/348/11 139/360/12 141/366/9 +f 131/135/2 132/136/2 133/137/2 134/138/2 +f 135/135/3 131/136/3 134/137/3 136/138/3 +f 137/135/4 135/136/4 136/137/4 138/138/4 +f 132/135/6 137/136/6 138/137/6 133/138/6 +f 138/139/1 136/140/1 134/141/1 133/142/1 +f 132/139/5 131/140/5 135/141/5 137/142/5 diff --git a/src/main/resources/assets/create/models/block/flywheel/flywheel.obj b/src/main/resources/assets/create/models/block/flywheel/flywheel.obj index 11392429ed..5daf26a413 100644 --- a/src/main/resources/assets/create/models/block/flywheel/flywheel.obj +++ b/src/main/resources/assets/create/models/block/flywheel/flywheel.obj @@ -1,4 +1,4 @@ -# Blender v3.2.0 OBJ File: 'engine.blend' +# Blender 4.2.0 # www.blender.org mtllib flywheel.mtl o cube.008_cube.006 @@ -260,26 +260,20 @@ v -0.873084 0.687500 1.068750 v -0.562500 0.687500 0.940102 v -0.068750 0.687500 1.873084 v 0.059898 0.687500 1.562499 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.7071 -0.0000 0.7071 vt 0.375000 0.000000 vt 0.625000 0.000000 vt 0.625000 1.000000 vt 0.375000 1.000000 -vt 0.375000 0.000000 -vt 0.625000 0.000000 -vt 0.625000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 0.000000 -vt 0.625000 0.000000 -vt 0.625000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 0.000000 -vt 0.625000 0.000000 -vt 0.625000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 0.375000 -vt 0.625000 0.375000 -vt 0.625000 0.625000 -vt 0.375000 0.625000 vt 0.375000 0.375000 vt 0.625000 0.375000 vt 0.625000 0.625000 @@ -291,197 +285,6 @@ vt 0.687500 0.687500 vt 0.812500 1.000000 vt 0.906250 0.781250 vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.906250 0.781250 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 vt 0.812500 0.937500 vt 0.812500 0.968750 vt 0.750000 0.968750 @@ -490,122 +293,9 @@ vt 0.812500 0.812500 vt 0.750000 0.812500 vt 0.750000 0.750000 vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 vt 0.687500 1.000000 vt 0.562500 1.000000 vt 0.812500 0.687500 -vt 0.812500 1.000000 vt 0.875000 0.531250 vt 0.937500 0.531250 vt 0.937500 0.593750 @@ -614,152 +304,16 @@ vt 0.218750 0.468750 vt 0.218750 0.375000 vt 0.468750 0.375000 vt 0.468750 0.468750 -vt 0.218750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.218750 0.468750 vt 0.468750 0.125000 vt 0.218750 0.125000 -vt 0.218750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.875000 0.531250 -vt 0.875000 0.593750 -vt 0.937500 0.593750 -vt 0.937500 0.531250 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.468750 0.125000 -vt 0.218750 0.125000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 -vt 0.125000 0.250000 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.031250 0.250000 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.125000 0.250000 -vt 0.031250 0.250000 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.125000 0.250000 -vt 0.031250 0.250000 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 vt 0.125000 0.250000 vt 0.125000 0.312500 vt 0.031250 0.312500 vt 0.031250 0.250000 vt 0.218750 0.250000 vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 vt 0.218750 0.406250 vt 0.125000 0.406250 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.062500 0.656250 -vt 0.500000 0.656250 -vt 0.562500 0.906250 -vt 0.000000 0.906250 vt 0.562500 0.812500 vt 0.000000 0.812500 vt 0.062500 0.656250 @@ -768,314 +322,201 @@ vt 0.562500 0.906250 vt 0.000000 0.906250 vt 0.062500 0.562500 vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.062500 0.562500 -vt 0.500000 0.562500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.000000 0.812500 -vn -1.0000 0.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -0.0000 1.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 -1.0000 -0.0000 -vn 0.7071 0.0000 0.7071 -vn 0.7071 -0.0000 -0.7071 -vn -0.7071 0.0000 -0.7071 -vn -0.7071 0.0000 0.7071 -vn -0.2554 -0.8881 0.3822 -vn -0.4509 -0.8881 0.0896 -vn 0.6066 -0.0001 0.7950 -vn -0.3699 0.2562 0.8930 -vn -0.3827 -0.0000 0.9239 -vn 0.3827 -0.0000 0.9239 -vn 0.0896 -0.8881 0.4509 -vn 0.9911 -0.0001 0.1332 -vn 0.9239 -0.0000 0.3827 -vn 0.3822 -0.8881 0.2554 -vn 0.7950 -0.0001 -0.6066 -vn 0.9239 0.0000 -0.3827 -vn 0.4509 -0.8881 -0.0896 -vn 0.1332 -0.0002 -0.9911 -vn 0.3827 0.0000 -0.9239 -vn 0.2554 -0.8881 -0.3822 -vn -0.6066 0.0000 -0.7950 -vn -0.3827 -0.0000 -0.9239 -vn -0.0896 -0.8881 -0.4509 -vn -0.9911 0.0000 -0.1332 -vn -0.9239 -0.0000 -0.3827 -vn -0.3822 -0.8881 -0.2554 -vn -0.7950 -0.0001 0.6066 -vn -0.9239 -0.0000 0.3827 -vn 0.0995 -0.2741 -0.9565 -vn 0.7468 -0.2741 -0.6060 -vn 0.8184 0.0000 -0.5746 -vn 0.3735 -0.2177 -0.9017 -vn 0.9565 -0.2741 0.0995 -vn 0.9850 0.0000 0.1724 -vn 0.6060 -0.2741 0.7468 -vn 0.5746 0.0000 0.8184 -vn -0.0995 -0.2741 0.9565 -vn -0.1724 -0.0001 0.9850 -vn -0.7468 -0.2741 0.6060 -vn -0.8184 0.0000 0.5746 -vn -0.9565 -0.2741 -0.0995 -vn -0.9850 0.0000 -0.1724 -vn -0.6060 -0.2741 -0.7468 -vn -0.5746 0.0000 -0.8184 -vn -0.2554 0.8881 0.3822 -vn -0.4509 0.8881 0.0896 -vn 0.0896 0.8881 0.4509 -vn 0.3822 0.8881 0.2554 -vn 0.4509 0.8881 -0.0896 -vn 0.2554 0.8881 -0.3822 -vn -0.0896 0.8881 -0.4509 -vn -0.3822 0.8881 -0.2554 -vn 0.0995 0.2741 -0.9565 -vn 0.7468 0.2741 -0.6060 -vn 0.9565 0.2741 0.0995 -vn 0.6060 0.2741 0.7468 -vn -0.0995 0.2741 0.9565 -vn -0.7468 0.2741 0.6060 -vn -0.9566 0.2739 -0.0994 -vn -0.6060 0.2741 -0.7468 +s 0 usemtl m_1 -s off f 203/1/1 204/2/1 206/3/1 205/4/1 -f 209/5/2 210/6/2 208/7/2 207/8/2 -f 205/9/3 209/10/3 207/11/3 203/12/3 -f 210/13/4 206/14/4 204/15/4 208/16/4 +f 209/1/2 210/2/2 208/3/2 207/4/2 +f 205/1/3 209/2/3 207/3/3 203/4/3 +f 210/1/4 206/2/4 204/3/4 208/4/4 usemtl m_2 -f 205/17/5 206/18/5 210/19/5 209/20/5 -f 207/21/6 208/22/6 204/23/6 203/24/6 +f 205/5/5 206/6/5 210/7/5 209/8/5 +f 207/5/6 208/6/6 204/7/6 203/8/6 usemtl m_0 -f 19/25/4 74/26/4 9/27/4 20/28/4 -f 9/29/6 41/30/6 20/31/6 -f 19/32/5 40/33/5 74/34/5 -f 18/35/7 19/36/7 20/37/7 21/38/7 -f 20/39/6 41/30/6 21/40/6 -f 18/41/5 40/33/5 19/42/5 -f 28/43/2 18/44/2 21/45/2 38/46/2 -f 21/47/6 41/30/6 38/48/6 -f 28/49/5 40/33/5 18/50/5 -f 37/51/8 28/52/8 38/53/8 39/54/8 -f 38/55/6 41/30/6 39/56/6 -f 37/57/5 40/33/5 28/58/5 -f 58/59/3 37/60/3 39/61/3 59/62/3 -f 39/63/6 41/30/6 59/64/6 -f 58/65/5 40/33/5 37/66/5 -f 65/67/9 58/68/9 59/69/9 60/70/9 -f 59/71/6 41/30/6 60/72/6 -f 65/73/5 40/33/5 58/74/5 -f 75/75/1 65/76/1 60/77/1 76/78/1 -f 60/79/6 41/30/6 76/80/6 -f 75/81/5 40/33/5 65/82/5 -f 74/83/10 75/84/10 76/85/10 9/86/10 -f 76/87/6 41/30/6 9/88/6 -f 74/89/5 40/33/5 75/90/5 -f 101/91/1 102/92/1 104/93/1 103/94/1 -f 103/95/5 104/96/5 108/97/5 107/98/5 -f 107/99/2 108/100/2 106/101/2 105/102/2 -f 105/103/6 106/104/6 102/105/6 101/106/6 -f 108/107/4 104/108/4 102/109/4 106/110/4 -f 116/111/2 118/112/2 119/113/2 117/114/2 -f 118/115/5 122/116/5 123/117/5 119/118/5 -f 122/119/1 120/120/1 121/121/1 123/122/1 -f 120/123/6 116/124/6 117/125/6 121/126/6 -f 123/127/4 121/128/4 117/129/4 119/130/4 -f 132/131/1 134/132/1 135/133/1 133/134/1 -f 134/135/6 138/136/6 139/137/6 135/138/6 -f 138/139/2 136/140/2 137/141/2 139/142/2 -f 136/143/5 132/144/5 133/145/5 137/146/5 -f 139/147/4 137/148/4 133/149/4 135/150/4 -f 148/151/2 149/152/2 151/153/2 150/154/2 -f 150/155/6 151/156/6 155/157/6 154/158/6 -f 154/159/1 155/160/1 153/161/1 152/162/1 -f 152/163/5 153/164/5 149/165/5 148/166/5 -f 155/167/4 151/168/4 149/169/4 153/170/4 -f 160/171/1 162/172/1 163/173/1 161/174/1 -f 162/175/5 166/176/5 167/177/5 163/178/5 -f 166/179/2 164/180/2 165/181/2 167/182/2 -f 164/183/6 160/184/6 161/185/6 165/186/6 -f 167/187/3 165/188/3 161/189/3 163/190/3 -f 172/191/2 173/192/2 175/193/2 174/194/2 -f 174/195/5 175/196/5 179/197/5 178/198/5 -f 178/199/1 179/200/1 177/201/1 176/202/1 -f 176/203/6 177/204/6 173/205/6 172/206/6 -f 179/207/3 175/208/3 173/209/3 177/210/3 -f 184/211/1 185/212/1 187/213/1 186/214/1 -f 186/215/6 187/216/6 191/217/6 190/218/6 -f 190/219/2 191/220/2 189/221/2 188/222/2 -f 188/223/5 189/224/5 185/225/5 184/226/5 -f 191/227/3 187/228/3 185/229/3 189/230/3 -f 195/231/2 197/232/2 198/233/2 196/234/2 -f 197/235/6 201/236/6 202/237/6 198/238/6 -f 201/239/1 199/240/1 200/241/1 202/242/1 -f 199/243/5 195/244/5 196/245/5 200/246/5 -f 202/247/3 200/248/3 196/249/3 198/250/3 -s 1 -f 8/251/6 2/252/6 1/253/6 7/254/6 -f 2/252/2 4/255/2 3/256/2 1/253/2 -f 4/257/5 6/258/5 5/259/5 3/260/5 -f 6/258/1 8/261/1 7/262/1 5/259/1 -f 17/263/6 11/264/6 10/265/6 16/266/6 -f 11/264/8 13/267/8 12/268/8 10/265/8 -f 13/269/5 15/270/5 14/271/5 12/272/5 -f 15/270/10 17/273/10 16/274/10 14/271/10 -f 27/275/6 169/276/6 22/277/6 26/278/6 -f 169/276/3 24/279/3 23/280/3 22/277/3 -f 24/281/5 141/282/5 25/283/5 23/284/5 -f 141/282/4 27/285/4 26/286/4 25/283/4 -f 36/287/6 30/288/6 29/289/6 35/290/6 -f 30/288/9 32/291/9 31/292/9 29/289/9 -f 32/293/5 34/294/5 33/295/5 31/296/5 -f 34/294/7 36/297/7 35/298/7 33/295/7 -f 49/299/6 43/300/6 42/301/6 48/302/6 -f 43/300/1 45/303/1 44/304/1 42/301/1 -f 45/305/5 47/306/5 46/307/5 44/308/5 -f 47/306/2 49/309/2 48/310/2 46/307/2 -f 57/311/6 51/312/6 50/313/6 56/314/6 -f 51/312/10 53/315/10 52/316/10 50/313/10 -f 53/317/5 55/318/5 54/319/5 52/320/5 -f 55/318/8 57/321/8 56/322/8 54/319/8 -f 157/323/6 94/324/6 61/325/6 64/326/6 -f 94/324/4 125/327/4 62/328/4 61/325/4 -f 125/329/5 181/330/5 63/331/5 62/332/5 -f 181/330/3 157/333/3 64/334/3 63/331/3 -f 73/335/6 67/336/6 66/337/6 72/338/6 -f 67/336/7 69/339/7 68/340/7 66/337/7 -f 69/341/5 71/342/5 70/343/5 68/344/5 -f 71/342/9 73/345/9 72/346/9 70/343/9 -f 78/347/5 80/348/5 79/349/5 77/350/5 -f 77/351/2 81/352/2 82/353/2 78/354/2 -f 79/355/4 83/356/4 81/357/4 77/358/4 -f 84/359/1 83/360/1 79/361/1 80/362/1 -f 82/363/6 81/357/6 83/356/6 84/364/6 -f 78/365/3 82/366/3 84/367/3 80/368/3 -f 86/369/6 85/370/6 87/371/6 88/372/6 -f 85/373/2 86/374/2 90/375/2 89/376/2 -f 87/377/4 85/378/4 89/379/4 91/380/4 -f 92/381/1 88/382/1 87/383/1 91/384/1 -f 90/385/5 92/386/5 91/380/5 89/379/5 -f 86/387/3 88/388/3 92/389/3 90/390/3 -f 99/391/1 96/392/1 94/393/1 97/394/1 -f 100/395/6 95/396/6 96/392/6 99/391/6 -f 94/397/4 96/398/4 95/399/4 93/400/4 -f 114/401/2 112/402/2 27/403/2 111/404/2 -f 115/405/6 114/401/6 111/404/6 110/406/6 -f 27/407/4 109/408/4 110/409/4 111/410/4 -f 130/411/1 128/412/1 125/413/1 127/414/1 -f 131/415/5 130/411/5 127/414/5 126/416/5 -f 125/417/4 124/418/4 126/419/4 127/420/4 -f 146/421/2 143/422/2 141/423/2 144/424/2 -f 147/425/5 142/426/5 143/422/5 146/421/5 -f 141/427/4 143/428/4 142/429/4 140/430/4 -f 99/391/1 97/394/1 157/431/1 159/432/1 -f 100/395/6 99/391/6 159/432/6 158/433/6 -f 157/434/3 156/435/3 158/436/3 159/437/3 -f 114/401/2 171/438/2 169/439/2 112/402/2 -f 115/405/6 170/440/6 171/438/6 114/401/6 -f 169/441/3 171/442/3 170/443/3 168/444/3 -f 130/411/1 183/445/1 181/446/1 128/412/1 -f 131/415/5 182/447/5 183/445/5 130/411/5 -f 181/448/3 183/449/3 182/450/3 180/451/3 -f 146/421/2 144/424/2 24/452/2 194/453/2 -f 147/425/5 146/421/5 194/453/5 193/454/5 -f 24/455/3 192/456/3 193/457/3 194/458/3 -f 211/459/11 225/460/12 226/461/6 212/462/6 -f 235/463/13 236/464/14 225/460/15 211/459/16 -f 213/465/17 211/466/11 212/467/6 214/468/6 -f 237/469/18 235/470/13 211/466/16 213/465/19 -f 215/471/20 213/472/17 214/473/6 216/474/6 -f 238/475/21 237/476/18 213/472/19 215/471/22 -f 217/477/23 215/478/20 216/479/6 218/480/6 -f 239/481/24 238/482/21 215/478/22 217/477/25 -f 219/483/26 217/484/23 218/485/6 220/486/6 -f 240/487/27 239/488/24 217/484/25 219/483/28 -f 221/489/29 219/490/26 220/491/6 222/492/6 -f 241/493/30 240/494/27 219/490/28 221/489/31 -f 223/495/32 221/496/29 222/497/6 224/498/6 -f 242/499/33 241/500/30 221/496/31 223/495/34 -f 225/501/12 223/502/32 224/503/6 226/504/6 -f 236/505/14 242/506/33 223/502/34 225/501/15 -f 226/504/35 224/503/36 234/507/37 228/508/38 -f 224/498/36 222/497/39 233/509/40 234/510/37 -f 222/492/39 220/491/41 232/511/42 233/512/40 -f 220/486/41 218/485/43 231/513/44 232/514/42 -f 218/480/43 216/479/45 230/515/46 231/516/44 -f 216/474/45 214/473/47 229/517/48 230/518/46 -f 214/468/47 212/467/49 227/519/50 229/520/48 -f 212/462/49 226/461/35 228/521/38 227/522/50 -f 243/523/51 244/524/5 258/525/5 257/526/52 -f 235/463/13 243/523/16 257/526/15 236/464/14 -f 245/527/53 246/528/5 244/529/5 243/530/51 -f 237/469/18 245/527/19 243/530/16 235/470/13 -f 247/531/54 248/532/5 246/533/5 245/534/53 -f 238/475/21 247/531/22 245/534/19 237/476/18 -f 249/535/55 250/536/5 248/537/5 247/538/54 -f 239/481/24 249/535/25 247/538/22 238/482/21 -f 251/539/56 252/540/5 250/541/5 249/542/55 -f 240/487/27 251/539/28 249/542/25 239/488/24 -f 253/543/57 254/544/5 252/545/5 251/546/56 -f 241/493/30 253/543/31 251/546/28 240/494/27 -f 255/547/58 256/548/5 254/549/5 253/550/57 -f 242/499/33 255/547/34 253/550/31 241/500/30 -f 257/551/52 258/552/5 256/553/5 255/554/58 -f 236/505/14 257/551/15 255/554/34 242/506/33 -f 258/552/59 228/508/38 234/507/37 256/553/60 -f 256/548/60 234/510/37 233/509/40 254/549/61 -f 254/544/61 233/512/40 232/511/42 252/545/62 -f 252/540/62 232/514/42 231/513/44 250/541/63 -f 250/536/63 231/516/44 230/515/46 248/537/64 -f 248/532/64 230/518/46 229/517/48 246/533/65 -f 246/528/65 229/520/48 227/519/50 244/529/66 -f 244/524/66 227/522/50 228/521/38 258/525/59 -l 100 98 +f 19/9/4 74/10/4 9/11/4 20/12/4 +f 9/13/6 41/14/6 20/15/6 +f 19/15/5 40/14/5 74/13/5 +f 18/9/7 19/10/7 20/11/7 21/12/7 +f 20/13/6 41/14/6 21/15/6 +f 18/15/5 40/14/5 19/13/5 +f 28/9/2 18/10/2 21/11/2 38/12/2 +f 21/13/6 41/14/6 38/15/6 +f 28/15/5 40/14/5 18/13/5 +f 37/9/8 28/10/8 38/11/8 39/12/8 +f 38/13/6 41/14/6 39/15/6 +f 37/15/5 40/14/5 28/13/5 +f 58/9/3 37/10/3 39/11/3 59/12/3 +f 39/13/6 41/14/6 59/15/6 +f 58/15/5 40/14/5 37/13/5 +f 65/9/9 58/10/9 59/11/9 60/12/9 +f 59/13/6 41/14/6 60/15/6 +f 65/15/5 40/14/5 58/13/5 +f 75/9/1 65/10/1 60/11/1 76/12/1 +f 60/13/6 41/14/6 76/15/6 +f 75/15/5 40/14/5 65/13/5 +f 74/9/10 75/10/10 76/11/10 9/12/10 +f 76/13/6 41/14/6 9/15/6 +f 74/15/5 40/14/5 75/13/5 +f 101/16/1 102/17/1 104/18/1 103/19/1 +f 103/16/5 104/17/5 108/18/5 107/19/5 +f 107/16/2 108/17/2 106/18/2 105/19/2 +f 105/16/6 106/17/6 102/18/6 101/19/6 +f 108/20/4 104/21/4 102/22/4 106/23/4 +f 116/16/2 118/19/2 119/18/2 117/17/2 +f 118/16/5 122/19/5 123/18/5 119/17/5 +f 122/16/1 120/19/1 121/18/1 123/17/1 +f 120/16/6 116/19/6 117/18/6 121/17/6 +f 123/20/4 121/23/4 117/22/4 119/21/4 +f 132/16/1 134/19/1 135/18/1 133/17/1 +f 134/16/6 138/19/6 139/18/6 135/17/6 +f 138/16/2 136/19/2 137/18/2 139/17/2 +f 136/16/5 132/19/5 133/18/5 137/17/5 +f 139/20/4 137/23/4 133/22/4 135/21/4 +f 148/16/2 149/17/2 151/18/2 150/19/2 +f 150/16/6 151/17/6 155/18/6 154/19/6 +f 154/16/1 155/17/1 153/18/1 152/19/1 +f 152/16/5 153/17/5 149/18/5 148/19/5 +f 155/20/4 151/21/4 149/22/4 153/23/4 +f 160/16/1 162/19/1 163/18/1 161/17/1 +f 162/16/5 166/19/5 167/18/5 163/17/5 +f 166/16/2 164/19/2 165/18/2 167/17/2 +f 164/16/6 160/19/6 161/18/6 165/17/6 +f 167/20/3 165/23/3 161/22/3 163/21/3 +f 172/16/2 173/17/2 175/18/2 174/19/2 +f 174/16/5 175/17/5 179/18/5 178/19/5 +f 178/16/1 179/17/1 177/18/1 176/19/1 +f 176/16/6 177/17/6 173/18/6 172/19/6 +f 179/20/3 175/21/3 173/22/3 177/23/3 +f 184/16/1 185/17/1 187/18/1 186/19/1 +f 186/16/6 187/17/6 191/18/6 190/19/6 +f 190/16/2 191/17/2 189/18/2 188/19/2 +f 188/16/5 189/17/5 185/18/5 184/19/5 +f 191/20/3 187/21/3 185/22/3 189/23/3 +f 195/16/2 197/19/2 198/18/2 196/17/2 +f 197/16/6 201/19/6 202/18/6 198/17/6 +f 201/16/1 199/19/1 200/18/1 202/17/1 +f 199/16/5 195/19/5 196/18/5 200/17/5 +f 202/20/3 200/23/3 196/22/3 198/21/3 +f 8/9/6 2/12/6 1/24/6 7/25/6 +f 2/12/2 4/26/2 3/13/2 1/24/2 +f 4/9/5 6/12/5 5/24/5 3/25/5 +f 6/12/1 8/26/1 7/13/1 5/24/1 +f 17/9/6 11/12/6 10/24/6 16/25/6 +f 11/12/8 13/26/8 12/13/8 10/24/8 +f 13/9/5 15/12/5 14/24/5 12/25/5 +f 15/12/10 17/26/10 16/13/10 14/24/10 +f 27/9/6 169/12/6 22/24/6 26/25/6 +f 169/12/3 24/26/3 23/13/3 22/24/3 +f 24/9/5 141/12/5 25/24/5 23/25/5 +f 141/12/4 27/26/4 26/13/4 25/24/4 +f 36/9/6 30/12/6 29/24/6 35/25/6 +f 30/12/9 32/26/9 31/13/9 29/24/9 +f 32/9/5 34/12/5 33/24/5 31/25/5 +f 34/12/7 36/26/7 35/13/7 33/24/7 +f 49/9/6 43/12/6 42/24/6 48/25/6 +f 43/12/1 45/26/1 44/13/1 42/24/1 +f 45/9/5 47/12/5 46/24/5 44/25/5 +f 47/12/2 49/26/2 48/13/2 46/24/2 +f 57/9/6 51/12/6 50/24/6 56/25/6 +f 51/12/10 53/26/10 52/13/10 50/24/10 +f 53/9/5 55/12/5 54/24/5 52/25/5 +f 55/12/8 57/26/8 56/13/8 54/24/8 +f 157/9/6 94/12/6 61/24/6 64/25/6 +f 94/12/4 125/26/4 62/13/4 61/24/4 +f 125/9/5 181/12/5 63/24/5 62/25/5 +f 181/12/3 157/26/3 64/13/3 63/24/3 +f 73/9/6 67/12/6 66/24/6 72/25/6 +f 67/12/7 69/26/7 68/13/7 66/24/7 +f 69/9/5 71/12/5 70/24/5 68/25/5 +f 71/12/9 73/26/9 72/13/9 70/24/9 +f 78/27/5 80/28/5 79/29/5 77/30/5 +f 77/31/2 81/32/2 82/33/2 78/34/2 +f 79/31/4 83/32/4 81/33/4 77/34/4 +f 84/32/1 83/33/1 79/34/1 80/31/1 +f 82/35/6 81/33/6 83/32/6 84/36/6 +f 78/31/3 82/32/3 84/33/3 80/34/3 +f 86/27/6 85/30/6 87/29/6 88/28/6 +f 85/31/2 86/34/2 90/33/2 89/32/2 +f 87/31/4 85/34/4 89/33/4 91/32/4 +f 92/32/1 88/31/1 87/34/1 91/33/1 +f 90/35/5 92/36/5 91/32/5 89/33/5 +f 86/31/3 88/34/3 92/33/3 90/32/3 +f 99/37/1 96/38/1 94/39/1 97/40/1 +f 100/41/6 95/42/6 96/38/6 99/37/6 +f 94/38/4 96/42/4 95/43/4 93/44/4 +f 114/37/2 112/40/2 27/39/2 111/38/2 +f 115/41/6 114/37/6 111/38/6 110/42/6 +f 27/38/4 109/44/4 110/43/4 111/42/4 +f 130/37/1 128/40/1 125/39/1 127/38/1 +f 131/41/5 130/37/5 127/38/5 126/42/5 +f 125/38/4 124/44/4 126/43/4 127/42/4 +f 146/37/2 143/38/2 141/39/2 144/40/2 +f 147/41/5 142/42/5 143/38/5 146/37/5 +f 141/38/4 143/42/4 142/43/4 140/44/4 +f 99/37/1 97/40/1 157/39/1 159/38/1 +f 100/41/6 99/37/6 159/38/6 158/42/6 +f 157/38/3 156/44/3 158/43/3 159/42/3 +f 114/37/2 171/38/2 169/39/2 112/40/2 +f 115/41/6 170/42/6 171/38/6 114/37/6 +f 169/38/3 171/42/3 170/43/3 168/44/3 +f 130/37/1 183/38/1 181/39/1 128/40/1 +f 131/41/5 182/42/5 183/38/5 130/37/5 +f 181/38/3 183/42/3 182/43/3 180/44/3 +f 146/37/2 144/40/2 24/39/2 194/38/2 +f 147/41/5 146/37/5 194/38/5 193/42/5 +f 24/38/3 192/44/3 193/43/3 194/42/3 +f 211/45/6 225/46/6 226/47/6 212/48/6 +f 235/49/4 236/50/4 225/46/4 211/45/4 +f 213/45/6 211/46/6 212/47/6 214/48/6 +f 237/49/7 235/50/7 211/46/7 213/45/7 +f 215/45/6 213/46/6 214/47/6 216/48/6 +f 238/49/2 237/50/2 213/46/2 215/45/2 +f 217/45/6 215/46/6 216/47/6 218/48/6 +f 239/49/8 238/50/8 215/46/8 217/45/8 +f 219/45/6 217/46/6 218/47/6 220/48/6 +f 240/49/3 239/50/3 217/46/3 219/45/3 +f 221/45/6 219/46/6 220/47/6 222/48/6 +f 241/49/9 240/50/9 219/46/9 221/45/9 +f 223/45/6 221/46/6 222/47/6 224/48/6 +f 242/49/1 241/50/1 221/46/1 223/45/1 +f 225/45/6 223/46/6 224/47/6 226/48/6 +f 236/49/10 242/50/10 223/46/10 225/45/10 +f 226/48/8 224/47/8 234/51/8 228/52/8 +f 224/48/2 222/47/2 233/51/2 234/52/2 +f 222/48/7 220/47/7 232/51/7 233/52/7 +f 220/48/4 218/47/4 231/51/4 232/52/4 +f 218/48/10 216/47/10 230/51/10 231/52/10 +f 216/48/1 214/47/1 229/51/1 230/52/1 +f 214/48/9 212/47/9 227/51/9 229/52/9 +f 212/48/3 226/47/3 228/51/3 227/52/3 +f 243/45/5 244/48/5 258/47/5 257/46/5 +f 235/49/4 243/45/4 257/46/4 236/50/4 +f 245/45/5 246/48/5 244/47/5 243/46/5 +f 237/49/7 245/45/7 243/46/7 235/50/7 +f 247/45/5 248/48/5 246/47/5 245/46/5 +f 238/49/2 247/45/2 245/46/2 237/50/2 +f 249/45/5 250/48/5 248/47/5 247/46/5 +f 239/49/8 249/45/8 247/46/8 238/50/8 +f 251/45/5 252/48/5 250/47/5 249/46/5 +f 240/49/3 251/45/3 249/46/3 239/50/3 +f 253/45/5 254/48/5 252/47/5 251/46/5 +f 241/49/9 253/45/9 251/46/9 240/50/9 +f 255/45/5 256/48/5 254/47/5 253/46/5 +f 242/49/1 255/45/1 253/46/1 241/50/1 +f 257/45/5 258/48/5 256/47/5 255/46/5 +f 236/49/10 257/45/10 255/46/10 242/50/10 +f 258/48/8 228/52/8 234/51/8 256/47/8 +f 256/48/2 234/52/2 233/51/2 254/47/2 +f 254/48/7 233/52/7 232/51/7 252/47/7 +f 252/48/4 232/52/4 231/51/4 250/47/4 +f 250/48/10 231/52/10 230/51/10 248/47/10 +f 248/48/1 230/52/1 229/51/1 246/47/1 +f 246/48/9 229/52/9 227/51/9 244/47/9 +f 244/48/3 227/52/3 228/51/3 258/47/3 +l 98 100 l 97 98 -l 115 113 +l 113 115 l 112 113 -l 131 129 +l 129 131 l 128 129 -l 147 145 +l 145 147 l 144 145 diff --git a/src/main/resources/assets/create/models/block/flywheel/flywheel_shaftless.obj b/src/main/resources/assets/create/models/block/flywheel/flywheel_shaftless.obj index d7db6e4bdd..06a7ec1dab 100644 --- a/src/main/resources/assets/create/models/block/flywheel/flywheel_shaftless.obj +++ b/src/main/resources/assets/create/models/block/flywheel/flywheel_shaftless.obj @@ -1,4 +1,4 @@ -# Blender v3.1.2 OBJ File: 'engine.blend' +# Blender 4.2.0 # www.blender.org mtllib flywheel.mtl o cube.007_cube.004 @@ -236,6 +236,16 @@ v 0.781250 0.781250 0.375000 v 0.781250 0.781250 0.312500 v 0.781250 0.656250 0.375000 v 0.781250 0.656250 0.312500 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.7071 -0.0000 0.7071 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.0000 -0.0000 -1.0000 +vn -0.7071 -0.0000 -0.7071 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.0000 0.7071 vt 0.562500 0.687500 vt 0.562500 0.500000 vt 0.687500 0.500000 @@ -243,197 +253,6 @@ vt 0.687500 0.687500 vt 0.812500 1.000000 vt 0.906250 0.781250 vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.906250 0.781250 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.562500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.812500 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.812500 1.000000 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.812500 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 -vt 0.812500 0.937500 -vt 0.812500 0.968750 -vt 0.750000 0.968750 -vt 0.750000 0.937500 vt 0.812500 0.937500 vt 0.812500 0.968750 vt 0.750000 0.968750 @@ -442,122 +261,9 @@ vt 0.812500 0.812500 vt 0.750000 0.812500 vt 0.750000 0.750000 vt 0.812500 0.750000 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.937500 -vt 0.750000 0.937500 -vt 0.750000 0.968750 -vt 0.812500 0.968750 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.750000 0.750000 -vt 0.750000 0.812500 -vt 0.562500 0.687500 -vt 0.687500 0.687500 vt 0.687500 1.000000 vt 0.562500 1.000000 vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 -vt 0.562500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 1.000000 -vt 0.562500 1.000000 -vt 0.812500 0.687500 -vt 0.812500 1.000000 vt 0.875000 0.531250 vt 0.937500 0.531250 vt 0.937500 0.593750 @@ -566,137 +272,14 @@ vt 0.218750 0.468750 vt 0.218750 0.375000 vt 0.468750 0.375000 vt 0.468750 0.468750 -vt 0.218750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.218750 0.468750 -vt 0.468750 0.125000 -vt 0.218750 0.125000 -vt 0.218750 0.468750 -vt 0.218750 0.375000 -vt 0.468750 0.375000 -vt 0.468750 0.468750 -vt 0.875000 0.531250 -vt 0.875000 0.593750 -vt 0.937500 0.593750 -vt 0.937500 0.531250 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.375000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 vt 0.468750 0.125000 vt 0.218750 0.125000 -vt 0.218750 0.468750 -vt 0.468750 0.468750 -vt 0.468750 0.375000 -vt 0.218750 0.375000 vt 0.500000 0.656250 vt 0.062500 0.656250 vt 0.062500 0.468750 vt 0.500000 0.468750 vt 0.000000 0.812500 vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 -vt 0.000000 1.000000 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.062500 0.468750 -vt 0.500000 0.468750 -vt 0.000000 0.812500 -vt 0.562500 0.812500 -vt 0.500000 0.656250 -vt 0.062500 0.656250 -vt 0.562500 0.812500 -vt 0.000000 0.812500 -vt 0.562500 1.000000 vt 0.000000 1.000000 vt 0.125000 0.250000 vt 0.125000 0.312500 @@ -704,290 +287,179 @@ vt 0.031250 0.312500 vt 0.031250 0.250000 vt 0.218750 0.250000 vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.125000 0.250000 -vt 0.031250 0.250000 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.125000 0.250000 -vt 0.031250 0.250000 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.125000 0.250000 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.031250 0.250000 -vt 0.218750 0.250000 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.218750 0.406250 -vt 0.125000 0.406250 -vt 0.125000 0.312500 -vt 0.031250 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 vt 0.218750 0.406250 vt 0.125000 0.406250 -vt 0.031250 0.312500 -vt 0.125000 0.312500 -vt 0.218750 0.312500 -vt 0.125000 0.312500 -vt 0.125000 0.406250 -vt 0.218750 0.406250 -vt 0.218750 0.312500 -vn 0.0000 0.0000 1.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.7071 0.0000 0.7071 -vn 1.0000 0.0000 -0.0000 -vn 0.7071 0.0000 -0.7071 -vn -0.0000 0.0000 -1.0000 -vn -0.7071 0.0000 -0.7071 -vn -1.0000 0.0000 0.0000 -vn -0.7071 0.0000 0.7071 -vn -0.6060 -0.2741 -0.7468 -vn 0.0995 -0.2741 -0.9565 -vn 0.3827 -0.0000 -0.9239 -vn -0.3827 -0.0000 -0.9239 -vn -0.3822 0.8881 -0.2554 -vn -0.0897 0.8881 -0.4509 -vn -0.2554 -0.8881 0.3822 -vn -0.4509 -0.8881 0.0896 -vn -0.0207 0.3739 0.9272 -vn -0.6703 0.3739 0.6410 -vn -0.3827 -0.0000 0.9239 -vn 0.3827 -0.0000 0.9239 -vn -0.9565 -0.2741 -0.0995 -vn -0.9239 -0.0000 -0.3827 -vn -0.4509 0.8881 0.0897 -vn 0.0896 -0.8881 0.4509 -vn 0.6410 0.3739 0.6703 -vn 0.9239 -0.0000 0.3827 -vn -0.7468 -0.2741 0.6060 -vn -0.9239 0.0000 0.3827 -vn -0.2554 0.8881 0.3822 -vn 0.3822 -0.8881 0.2554 -vn 0.9272 0.3739 0.0207 -vn 0.9239 0.0000 -0.3827 -vn -0.0995 -0.2741 0.9565 -vn 0.0897 0.8881 0.4509 -vn 0.4509 -0.8881 -0.0896 -vn 0.6703 0.3739 -0.6410 -vn 0.6060 -0.2741 0.7468 -vn 0.3822 0.8881 0.2554 -vn 0.2554 -0.8881 -0.3822 -vn 0.0207 0.3739 -0.9272 -vn 0.9565 -0.2741 0.0995 -vn 0.4509 0.8881 -0.0897 -vn -0.0896 -0.8881 -0.4509 -vn -0.6410 0.3739 -0.6703 -vn 0.7468 -0.2741 -0.6060 -vn 0.2554 0.8881 -0.3822 -vn -0.3822 -0.8881 -0.2554 -vn -0.9272 0.3739 -0.0207 +s 0 usemtl m_0 -s off f 19/1/1 74/2/1 9/3/1 20/4/1 f 9/5/2 41/6/2 20/7/2 -f 19/8/3 40/9/3 74/10/3 -f 18/11/4 19/12/4 20/13/4 21/14/4 -f 20/15/2 41/6/2 21/16/2 -f 18/17/3 40/9/3 19/18/3 -f 28/19/5 18/20/5 21/21/5 38/22/5 -f 21/23/2 41/6/2 38/24/2 -f 28/25/3 40/9/3 18/26/3 -f 37/27/6 28/28/6 38/29/6 39/30/6 -f 38/31/2 41/6/2 39/32/2 -f 37/33/3 40/9/3 28/34/3 -f 58/35/7 37/36/7 39/37/7 59/38/7 -f 39/39/2 41/6/2 59/40/2 -f 58/41/3 40/9/3 37/42/3 -f 65/43/8 58/44/8 59/45/8 60/46/8 -f 59/47/2 41/6/2 60/48/2 -f 65/49/3 40/9/3 58/50/3 -f 75/51/9 65/52/9 60/53/9 76/54/9 -f 60/55/2 41/6/2 76/56/2 -f 75/57/3 40/9/3 65/58/3 -f 74/59/10 75/60/10 76/61/10 9/62/10 -f 76/63/2 41/6/2 9/64/2 -f 74/65/3 40/9/3 75/66/3 -f 133/67/9 134/68/9 136/69/9 135/70/9 -f 135/71/3 136/72/3 140/73/3 139/74/3 -f 139/75/5 140/76/5 138/77/5 137/78/5 -f 137/79/2 138/80/2 134/81/2 133/82/2 -f 140/83/1 136/84/1 134/85/1 138/86/1 -f 148/87/5 150/88/5 151/89/5 149/90/5 -f 150/91/3 154/92/3 155/93/3 151/94/3 -f 154/95/9 152/96/9 153/97/9 155/98/9 -f 152/99/2 148/100/2 149/101/2 153/102/2 -f 155/103/1 153/104/1 149/105/1 151/106/1 -f 164/107/9 166/108/9 167/109/9 165/110/9 -f 166/111/2 170/112/2 171/113/2 167/114/2 -f 170/115/5 168/116/5 169/117/5 171/118/5 -f 168/119/3 164/120/3 165/121/3 169/122/3 -f 171/123/1 169/124/1 165/125/1 167/126/1 -f 180/127/5 181/128/5 183/129/5 182/130/5 -f 182/131/2 183/132/2 187/133/2 186/134/2 -f 186/135/9 187/136/9 185/137/9 184/138/9 -f 184/139/3 185/140/3 181/141/3 180/142/3 -f 187/143/1 183/144/1 181/145/1 185/146/1 -f 192/147/9 194/148/9 195/149/9 193/150/9 -f 194/151/3 198/152/3 199/153/3 195/154/3 -f 198/155/5 196/156/5 197/157/5 199/158/5 -f 196/159/2 192/160/2 193/161/2 197/162/2 -f 199/163/7 197/164/7 193/165/7 195/166/7 -f 204/167/5 205/168/5 207/169/5 206/170/5 -f 206/171/3 207/172/3 211/173/3 210/174/3 -f 210/175/9 211/176/9 209/177/9 208/178/9 -f 208/179/2 209/180/2 205/181/2 204/182/2 -f 211/183/7 207/184/7 205/185/7 209/186/7 -f 216/187/9 217/188/9 219/189/9 218/190/9 -f 218/191/2 219/192/2 223/193/2 222/194/2 -f 222/195/5 223/196/5 221/197/5 220/198/5 -f 220/199/3 221/200/3 217/201/3 216/202/3 -f 223/203/7 219/204/7 217/205/7 221/206/7 -f 227/207/5 229/208/5 230/209/5 228/210/5 -f 229/211/2 233/212/2 234/213/2 230/214/2 -f 233/215/9 231/216/9 232/217/9 234/218/9 -f 231/219/3 227/220/3 228/221/3 232/222/3 -f 234/223/7 232/224/7 228/225/7 230/226/7 -s 1 -f 8/227/2 2/228/2 1/229/2 7/230/2 -f 2/228/5 4/231/5 3/232/5 1/229/5 -f 4/233/3 6/234/3 5/235/3 3/236/3 -f 6/234/9 8/237/9 7/238/9 5/235/9 -f 17/239/2 11/240/2 10/241/2 16/242/2 -f 11/240/6 13/243/6 12/244/6 10/241/6 -f 13/245/3 15/246/3 14/247/3 12/248/3 -f 15/246/10 17/249/10 16/250/10 14/247/10 -f 27/251/2 201/252/2 22/253/2 26/254/2 -f 201/252/7 24/255/7 23/256/7 22/253/7 -f 24/257/3 173/258/3 25/259/3 23/260/3 -f 173/258/1 27/261/1 26/262/1 25/259/1 -f 36/263/2 30/264/2 29/265/2 35/266/2 -f 30/264/8 32/267/8 31/268/8 29/265/8 -f 32/269/3 34/270/3 33/271/3 31/272/3 -f 34/270/4 36/273/4 35/274/4 33/271/4 -f 49/275/2 43/276/2 42/277/2 48/278/2 -f 43/276/9 45/279/9 44/280/9 42/277/9 -f 45/281/3 47/282/3 46/283/3 44/284/3 -f 47/282/5 49/285/5 48/286/5 46/283/5 -f 57/287/2 51/288/2 50/289/2 56/290/2 -f 51/288/10 53/291/10 52/292/10 50/289/10 -f 53/293/3 55/294/3 54/295/3 52/296/3 -f 55/294/6 57/297/6 56/298/6 54/295/6 -f 189/299/2 126/300/2 61/301/2 64/302/2 -f 126/300/1 157/303/1 62/304/1 61/301/1 -f 157/305/3 213/306/3 63/307/3 62/308/3 -f 213/306/7 189/309/7 64/310/7 63/307/7 -f 73/311/2 67/312/2 66/313/2 72/314/2 -f 67/312/4 69/315/4 68/316/4 66/313/4 -f 69/317/3 71/318/3 70/319/3 68/320/3 -f 71/318/8 73/321/8 72/322/8 70/319/8 -f 78/323/3 80/324/3 79/325/3 77/326/3 -f 77/327/5 81/328/5 82/329/5 78/330/5 -f 79/331/1 83/332/1 81/333/1 77/334/1 -f 84/335/9 83/336/9 79/337/9 80/338/9 -f 82/339/2 81/333/2 83/332/2 84/340/2 -f 78/341/7 82/342/7 84/343/7 80/344/7 -f 86/345/2 85/346/2 87/347/2 88/348/2 -f 85/349/5 86/350/5 90/351/5 89/352/5 -f 87/353/1 85/354/1 89/355/1 91/356/1 -f 92/357/9 88/358/9 87/359/9 91/360/9 -f 90/361/3 92/362/3 91/356/3 89/355/3 -f 86/363/7 88/364/7 92/365/7 90/366/7 -f 95/367/11 123/368/12 124/369/13 96/370/14 -f 121/371/3 93/372/3 96/373/15 124/374/16 -f 94/375/17 122/376/18 123/368/2 95/367/2 -f 93/377/19 121/378/20 122/376/21 94/375/22 -f 99/379/23 95/380/11 96/381/14 100/382/24 -f 93/383/3 97/384/3 100/385/25 96/386/15 -f 98/387/26 94/388/17 95/380/2 99/379/2 -f 97/389/27 93/390/19 94/388/22 98/387/28 -f 103/391/29 99/392/23 100/393/24 104/394/30 -f 97/395/3 101/396/3 104/397/31 100/398/25 -f 102/399/32 98/400/26 99/392/2 103/391/2 -f 101/401/33 97/402/27 98/400/28 102/399/34 -f 107/403/35 103/404/29 104/405/30 108/406/21 -f 101/407/3 105/408/3 108/409/36 104/410/31 -f 106/411/37 102/412/32 103/404/2 107/403/2 -f 105/413/38 101/414/33 102/412/34 106/411/13 -f 111/415/39 107/416/35 108/417/21 112/418/22 -f 105/419/3 109/420/3 112/421/40 108/422/36 -f 110/423/41 106/424/37 107/416/2 111/415/2 -f 109/425/42 105/426/38 106/424/13 110/423/14 -f 115/427/43 111/428/39 112/429/22 116/430/28 -f 109/431/3 113/432/3 116/433/44 112/434/40 -f 114/435/45 110/436/41 111/428/2 115/427/2 -f 113/437/46 109/438/42 110/436/14 114/435/24 -f 119/439/47 115/440/43 116/441/28 120/442/34 -f 113/443/3 117/444/3 120/445/48 116/446/44 -f 118/447/49 114/448/45 115/440/2 119/439/2 -f 117/449/50 113/450/46 114/448/24 118/447/30 -f 123/451/12 119/452/47 120/453/34 124/454/13 -f 117/455/3 121/456/3 124/457/16 120/458/48 -f 122/459/18 118/460/49 119/452/2 123/451/2 -f 121/461/20 117/462/50 118/460/30 122/459/21 -f 131/463/9 128/464/9 126/465/9 129/466/9 -f 132/467/2 127/468/2 128/464/2 131/463/2 -f 126/469/1 128/470/1 127/471/1 125/472/1 -f 146/473/5 144/474/5 27/475/5 143/476/5 -f 147/477/2 146/473/2 143/476/2 142/478/2 -f 27/479/1 141/480/1 142/481/1 143/482/1 -f 162/483/9 160/484/9 157/485/9 159/486/9 -f 163/487/3 162/483/3 159/486/3 158/488/3 -f 157/489/1 156/490/1 158/491/1 159/492/1 -f 178/493/5 175/494/5 173/495/5 176/496/5 -f 179/497/3 174/498/3 175/494/3 178/493/3 -f 173/499/1 175/500/1 174/501/1 172/502/1 -f 131/463/9 129/466/9 189/503/9 191/504/9 -f 132/467/2 131/463/2 191/504/2 190/505/2 -f 189/506/7 188/507/7 190/508/7 191/509/7 -f 146/473/5 203/510/5 201/511/5 144/474/5 -f 147/477/2 202/512/2 203/510/2 146/473/2 -f 201/513/7 203/514/7 202/515/7 200/516/7 -f 162/483/9 215/517/9 213/518/9 160/484/9 -f 163/487/3 214/519/3 215/517/3 162/483/3 -f 213/520/7 215/521/7 214/522/7 212/523/7 -f 178/493/5 176/496/5 24/524/5 226/525/5 -f 179/497/3 178/493/3 226/525/3 225/526/3 -f 24/527/7 224/528/7 225/529/7 226/530/7 -l 132 130 +f 19/7/3 40/6/3 74/5/3 +f 18/1/4 19/2/4 20/3/4 21/4/4 +f 20/5/2 41/6/2 21/7/2 +f 18/7/3 40/6/3 19/5/3 +f 28/1/5 18/2/5 21/3/5 38/4/5 +f 21/5/2 41/6/2 38/7/2 +f 28/7/3 40/6/3 18/5/3 +f 37/1/6 28/2/6 38/3/6 39/4/6 +f 38/5/2 41/6/2 39/7/2 +f 37/7/3 40/6/3 28/5/3 +f 58/1/7 37/2/7 39/3/7 59/4/7 +f 39/5/2 41/6/2 59/7/2 +f 58/7/3 40/6/3 37/5/3 +f 65/1/8 58/2/8 59/3/8 60/4/8 +f 59/5/2 41/6/2 60/7/2 +f 65/7/3 40/6/3 58/5/3 +f 75/1/9 65/2/9 60/3/9 76/4/9 +f 60/5/2 41/6/2 76/7/2 +f 75/7/3 40/6/3 65/5/3 +f 74/1/10 75/2/10 76/3/10 9/4/10 +f 76/5/2 41/6/2 9/7/2 +f 74/7/3 40/6/3 75/5/3 +f 133/8/9 134/9/9 136/10/9 135/11/9 +f 135/8/3 136/9/3 140/10/3 139/11/3 +f 139/8/5 140/9/5 138/10/5 137/11/5 +f 137/8/2 138/9/2 134/10/2 133/11/2 +f 140/12/1 136/13/1 134/14/1 138/15/1 +f 148/8/5 150/11/5 151/10/5 149/9/5 +f 150/8/3 154/11/3 155/10/3 151/9/3 +f 154/8/9 152/11/9 153/10/9 155/9/9 +f 152/8/2 148/11/2 149/10/2 153/9/2 +f 155/12/1 153/15/1 149/14/1 151/13/1 +f 164/8/9 166/11/9 167/10/9 165/9/9 +f 166/8/2 170/11/2 171/10/2 167/9/2 +f 170/8/5 168/11/5 169/10/5 171/9/5 +f 168/8/3 164/11/3 165/10/3 169/9/3 +f 171/12/1 169/15/1 165/14/1 167/13/1 +f 180/8/5 181/9/5 183/10/5 182/11/5 +f 182/8/2 183/9/2 187/10/2 186/11/2 +f 186/8/9 187/9/9 185/10/9 184/11/9 +f 184/8/3 185/9/3 181/10/3 180/11/3 +f 187/12/1 183/13/1 181/14/1 185/15/1 +f 192/8/9 194/11/9 195/10/9 193/9/9 +f 194/8/3 198/11/3 199/10/3 195/9/3 +f 198/8/5 196/11/5 197/10/5 199/9/5 +f 196/8/2 192/11/2 193/10/2 197/9/2 +f 199/12/7 197/15/7 193/14/7 195/13/7 +f 204/8/5 205/9/5 207/10/5 206/11/5 +f 206/8/3 207/9/3 211/10/3 210/11/3 +f 210/8/9 211/9/9 209/10/9 208/11/9 +f 208/8/2 209/9/2 205/10/2 204/11/2 +f 211/12/7 207/13/7 205/14/7 209/15/7 +f 216/8/9 217/9/9 219/10/9 218/11/9 +f 218/8/2 219/9/2 223/10/2 222/11/2 +f 222/8/5 223/9/5 221/10/5 220/11/5 +f 220/8/3 221/9/3 217/10/3 216/11/3 +f 223/12/7 219/13/7 217/14/7 221/15/7 +f 227/8/5 229/11/5 230/10/5 228/9/5 +f 229/8/2 233/11/2 234/10/2 230/9/2 +f 233/8/9 231/11/9 232/10/9 234/9/9 +f 231/8/3 227/11/3 228/10/3 232/9/3 +f 234/12/7 232/15/7 228/14/7 230/13/7 +f 8/1/2 2/4/2 1/16/2 7/17/2 +f 2/4/5 4/18/5 3/5/5 1/16/5 +f 4/1/3 6/4/3 5/16/3 3/17/3 +f 6/4/9 8/18/9 7/5/9 5/16/9 +f 17/1/2 11/4/2 10/16/2 16/17/2 +f 11/4/6 13/18/6 12/5/6 10/16/6 +f 13/1/3 15/4/3 14/16/3 12/17/3 +f 15/4/10 17/18/10 16/5/10 14/16/10 +f 27/1/2 201/4/2 22/16/2 26/17/2 +f 201/4/7 24/18/7 23/5/7 22/16/7 +f 24/1/3 173/4/3 25/16/3 23/17/3 +f 173/4/1 27/18/1 26/5/1 25/16/1 +f 36/1/2 30/4/2 29/16/2 35/17/2 +f 30/4/8 32/18/8 31/5/8 29/16/8 +f 32/1/3 34/4/3 33/16/3 31/17/3 +f 34/4/4 36/18/4 35/5/4 33/16/4 +f 49/1/2 43/4/2 42/16/2 48/17/2 +f 43/4/9 45/18/9 44/5/9 42/16/9 +f 45/1/3 47/4/3 46/16/3 44/17/3 +f 47/4/5 49/18/5 48/5/5 46/16/5 +f 57/1/2 51/4/2 50/16/2 56/17/2 +f 51/4/10 53/18/10 52/5/10 50/16/10 +f 53/1/3 55/4/3 54/16/3 52/17/3 +f 55/4/6 57/18/6 56/5/6 54/16/6 +f 189/1/2 126/4/2 61/16/2 64/17/2 +f 126/4/1 157/18/1 62/5/1 61/16/1 +f 157/1/3 213/4/3 63/16/3 62/17/3 +f 213/4/7 189/18/7 64/5/7 63/16/7 +f 73/1/2 67/4/2 66/16/2 72/17/2 +f 67/4/4 69/18/4 68/5/4 66/16/4 +f 69/1/3 71/4/3 70/16/3 68/17/3 +f 71/4/8 73/18/8 72/5/8 70/16/8 +f 78/19/3 80/20/3 79/21/3 77/22/3 +f 77/23/5 81/24/5 82/25/5 78/26/5 +f 79/23/1 83/24/1 81/25/1 77/26/1 +f 84/24/9 83/25/9 79/26/9 80/23/9 +f 82/27/2 81/25/2 83/24/2 84/28/2 +f 78/23/7 82/24/7 84/25/7 80/26/7 +f 86/19/2 85/22/2 87/21/2 88/20/2 +f 85/23/5 86/26/5 90/25/5 89/24/5 +f 87/23/1 85/26/1 89/25/1 91/24/1 +f 92/24/9 88/23/9 87/26/9 91/25/9 +f 90/27/3 92/28/3 91/24/3 89/25/3 +f 86/23/7 88/26/7 92/25/7 90/24/7 +f 95/29/7 123/30/7 124/31/7 96/32/7 +f 121/33/3 93/34/3 96/29/3 124/30/3 +f 94/34/2 122/33/2 123/30/2 95/29/2 +f 93/17/1 121/35/1 122/33/1 94/34/1 +f 99/29/8 95/30/8 96/31/8 100/32/8 +f 93/33/3 97/34/3 100/29/3 96/30/3 +f 98/34/2 94/33/2 95/30/2 99/29/2 +f 97/17/4 93/35/4 94/33/4 98/34/4 +f 103/29/9 99/30/9 100/31/9 104/32/9 +f 97/33/3 101/34/3 104/29/3 100/30/3 +f 102/34/2 98/33/2 99/30/2 103/29/2 +f 101/17/5 97/35/5 98/33/5 102/34/5 +f 107/29/10 103/30/10 104/31/10 108/32/10 +f 101/33/3 105/34/3 108/29/3 104/30/3 +f 106/34/2 102/33/2 103/30/2 107/29/2 +f 105/17/6 101/35/6 102/33/6 106/34/6 +f 111/29/1 107/30/1 108/31/1 112/32/1 +f 105/33/3 109/34/3 112/29/3 108/30/3 +f 110/34/2 106/33/2 107/30/2 111/29/2 +f 109/17/7 105/35/7 106/33/7 110/34/7 +f 115/29/4 111/30/4 112/31/4 116/32/4 +f 109/33/3 113/34/3 116/29/3 112/30/3 +f 114/34/2 110/33/2 111/30/2 115/29/2 +f 113/17/8 109/35/8 110/33/8 114/34/8 +f 119/29/5 115/30/5 116/31/5 120/32/5 +f 113/33/3 117/34/3 120/29/3 116/30/3 +f 118/34/2 114/33/2 115/30/2 119/29/2 +f 117/17/9 113/35/9 114/33/9 118/34/9 +f 123/29/6 119/30/6 120/31/6 124/32/6 +f 117/33/3 121/34/3 124/29/3 120/30/3 +f 122/34/2 118/33/2 119/30/2 123/29/2 +f 121/17/10 117/35/10 118/33/10 122/34/10 +f 131/36/9 128/37/9 126/38/9 129/39/9 +f 132/40/2 127/41/2 128/37/2 131/36/2 +f 126/37/1 128/41/1 127/42/1 125/43/1 +f 146/36/5 144/39/5 27/38/5 143/37/5 +f 147/40/2 146/36/2 143/37/2 142/41/2 +f 27/37/1 141/43/1 142/42/1 143/41/1 +f 162/36/9 160/39/9 157/38/9 159/37/9 +f 163/40/3 162/36/3 159/37/3 158/41/3 +f 157/37/1 156/43/1 158/42/1 159/41/1 +f 178/36/5 175/37/5 173/38/5 176/39/5 +f 179/40/3 174/41/3 175/37/3 178/36/3 +f 173/37/1 175/41/1 174/42/1 172/43/1 +f 131/36/9 129/39/9 189/38/9 191/37/9 +f 132/40/2 131/36/2 191/37/2 190/41/2 +f 189/37/7 188/43/7 190/42/7 191/41/7 +f 146/36/5 203/37/5 201/38/5 144/39/5 +f 147/40/2 202/41/2 203/37/2 146/36/2 +f 201/37/7 203/41/7 202/42/7 200/43/7 +f 162/36/9 215/37/9 213/38/9 160/39/9 +f 163/40/3 214/41/3 215/37/3 162/36/3 +f 213/37/7 215/41/7 214/42/7 212/43/7 +f 178/36/5 176/39/5 24/38/5 226/37/5 +f 179/40/3 178/36/3 226/37/3 225/41/3 +f 24/37/7 224/43/7 225/42/7 226/41/7 +l 130 132 l 129 130 -l 147 145 +l 145 147 l 144 145 -l 163 161 +l 161 163 l 160 161 -l 179 177 +l 177 179 l 176 177 diff --git a/src/main/resources/assets/create/sounds/clipboard_check.ogg b/src/main/resources/assets/create/sounds/clipboard_check.ogg new file mode 100644 index 0000000000..33727db315 Binary files /dev/null and b/src/main/resources/assets/create/sounds/clipboard_check.ogg differ diff --git a/src/main/resources/assets/create/sounds/clipboard_erase.ogg b/src/main/resources/assets/create/sounds/clipboard_erase.ogg new file mode 100644 index 0000000000..c131fa419d Binary files /dev/null and b/src/main/resources/assets/create/sounds/clipboard_erase.ogg differ diff --git a/src/main/resources/assets/create/sounds/spout.ogg b/src/main/resources/assets/create/sounds/spout.ogg new file mode 100644 index 0000000000..9b8d356d4f Binary files /dev/null and b/src/main/resources/assets/create/sounds/spout.ogg differ diff --git a/src/main/resources/assets/create/sounds/spout_1.ogg b/src/main/resources/assets/create/sounds/spout_1.ogg new file mode 100644 index 0000000000..4d7ff0a0af Binary files /dev/null and b/src/main/resources/assets/create/sounds/spout_1.ogg differ diff --git a/src/main/resources/assets/create/sounds/spout_2.ogg b/src/main/resources/assets/create/sounds/spout_2.ogg new file mode 100644 index 0000000000..94938185a5 Binary files /dev/null and b/src/main/resources/assets/create/sounds/spout_2.ogg differ diff --git a/src/main/resources/assets/create/sounds/spout_3.ogg b/src/main/resources/assets/create/sounds/spout_3.ogg new file mode 100644 index 0000000000..757ad3aa2b Binary files /dev/null and b/src/main/resources/assets/create/sounds/spout_3.ogg differ diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index 908cc69b68..65191569fe 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -34,6 +34,7 @@ "accessor.AgeableListModelAccessor", "accessor.GameRendererAccessor", "accessor.HumanoidArmorLayerAccessor", + "accessor.MouseHandlerAccessor", "accessor.ParticleEngineAccessor", "client.BlockDestructionProgressMixin", "client.CameraMixin", diff --git a/src/main/resources/data/create/recipes/compat/ae2/crushing/deepslate_quartz_ore.json b/src/main/resources/data/create/recipes/compat/ae2/crushing/deepslate_quartz_ore.json deleted file mode 100644 index 11064dcb5d..0000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/crushing/deepslate_quartz_ore.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "ae2" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "ae2:deepslate_quartz_ore" - } - ], - "results": [ - { - "item": "ae2:certus_quartz_crystal", - "count": 1 - }, - { - "item": "ae2:certus_quartz_dust", - "count": 4 - }, - { - "item": "ae2:certus_quartz_dust", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobbled_deepslate", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/crushing/quartz_ore.json b/src/main/resources/data/create/recipes/compat/ae2/crushing/quartz_ore.json deleted file mode 100644 index 43e7c6bcbc..0000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/crushing/quartz_ore.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "ae2" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "c:certus_quartz_ores" - } - ], - "results": [ - { - "item": "ae2:certus_quartz_crystal", - "count": 1 - }, - { - "item": "ae2:certus_quartz_dust", - "count": 4 - }, - { - "item": "ae2:certus_quartz_dust", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json b/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json deleted file mode 100644 index 92b490468d..0000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "ae2" - ] - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "c:certus_quartz" - } - ], - "results": [ - { - "item": "ae2:certus_quartz_dust", - "count": 1 - } - ], - "processingTime": 200 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json b/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json deleted file mode 100644 index cd2f8389c7..0000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "ae2" - ] - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "c:ender_pearls" - } - ], - "results": [ - { - "item": "ae2:ender_dust", - "count": 1 - } - ], - "processingTime": 100 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json b/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json deleted file mode 100644 index 783574320b..0000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "ae2" - ] - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "ae2:sky_stone_block" - } - ], - "results": [ - { - "item": "ae2:sky_dust", - "count": 1 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json deleted file mode 100644 index 5bf9d3cda3..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:aspen_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_aspen_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json deleted file mode 100644 index e0c7b0ef42..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:grimwood_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_grimwood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json deleted file mode 100644 index 7b2c68dbd7..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:kousa_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_kousa_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json deleted file mode 100644 index b7ca2f3630..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:rosewood_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_rosewood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json deleted file mode 100644 index 8131ad66da..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:yucca_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_yucca_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json deleted file mode 100644 index 0d40953a61..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:splashing", - "ingredients": [ - { - "item": "atmospheric:arid_sand" - } - ], - "results": [ - { - "item": "minecraft:clay_ball", - "count": 1, - "chance": 0.25 - }, - { - "item": "atmospheric:aloe_kernels", - "count": 1, - "chance": 0.05 - } - ] -} diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json deleted file mode 100644 index 68f43ddebe..0000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "atmospheric" - ] - } - ], - "type": "create:splashing", - "ingredients": [ - { - "item": "atmospheric:red_arid_sand" - } - ], - "results": [ - { - "item": "minecraft:gold_nugget", - "count": 4, - "chance": 0.125 - }, - { - "item": "atmospheric:aloe_kernels", - "count": 1, - "chance": 0.05 - } - ] -} diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json deleted file mode 100644 index 182aefa9b5..0000000000 --- a/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "autumnity" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "autumnity:maple_log" - } - ], - "results": [ - { - "item": "autumnity:stripped_maple_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json b/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json deleted file mode 100644 index 00ec9efcf2..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:burning_blossom" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json deleted file mode 100644 index afc0801839..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:glowflower" - } - ], - "results": [ - { - "item": "minecraft:cyan_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json b/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json deleted file mode 100644 index a75c58c77f..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:goldenrod" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 3 - }, - { - "item": "minecraft:green_dye", - "count": 2, - "chance": 0.05 - }, - { - "item": "minecraft:yellow_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json b/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json deleted file mode 100644 index c0abf11dd8..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:lavender" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json b/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json deleted file mode 100644 index 67bac21db0..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:orange_cosmos" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json deleted file mode 100644 index 26b06cb5e5..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:pink_daffodil" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:magenta_dye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cyan_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json deleted file mode 100644 index 79d5ea822f..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:pink_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:yellow_dye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/rose.json b/src/main/resources/data/create/recipes/compat/bop/milling/rose.json deleted file mode 100644 index 04fcb548c0..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/rose.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:rose" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/violet.json b/src/main/resources/data/create/recipes/compat/bop/milling/violet.json deleted file mode 100644 index cec665f46f..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/violet.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:violet" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json deleted file mode 100644 index 6a001358a9..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:wildflower" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json b/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json deleted file mode 100644 index 07d2c1e529..0000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "biomesoplenty" - ] - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:wilted_lily" - } - ], - "results": [ - { - "item": "minecraft:gray_dye", - "count": 2 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json b/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json deleted file mode 100644 index 25a700f099..0000000000 --- a/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "byg" - ] - } - ], - "type": "create:pressing", - "ingredients": [ - [ - { - "item": "byg:lush_grass_block" - }, - { - "item": "byg:lush_dirt" - } - ] - ], - "results": [ - { - "item": "byg:lush_grass_path" - } - ] -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json deleted file mode 100644 index 1d5c92896a..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:amber_ore" - } - ], - "results": [ - { - "item": "druidcraft:amber", - "count": 2 - }, - { - "item": "druidcraft:amber", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json deleted file mode 100644 index 4251f84652..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:fiery_glass_ore" - } - ], - "results": [ - { - "item": "druidcraft:fiery_glass", - "count": 8 - }, - { - "item": "druidcraft:fiery_glass", - "count": 6, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json deleted file mode 100644 index a366430753..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:moonstone_ore" - } - ], - "results": [ - { - "item": "druidcraft:moonstone", - "count": 2 - }, - { - "item": "druidcraft:moonstone", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json deleted file mode 100644 index b7ae35d13f..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:darkwood_log" - } - ], - "results": [ - { - "item": "druidcraft:stripped_darkwood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json deleted file mode 100644 index bc176dda37..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:elder_log" - } - ], - "results": [ - { - "item": "druidcraft:stripped_elder_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json deleted file mode 100644 index 147165ab62..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:stripped_darkwood_log" - } - ], - "results": [ - { - "item": "druidcraft:darkwood_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json deleted file mode 100644 index ecbe757508..0000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "druidcraft" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:stripped_elder_log" - } - ], - "results": [ - { - "item": "druidcraft:elder_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json deleted file mode 100644 index afed9352de..0000000000 --- a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "endergetic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "endergetic:poise_stem" - } - ], - "results": [ - { - "item": "endergetic:stripped_poise_stem", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json deleted file mode 100644 index 429ecd9554..0000000000 --- a/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "endergetic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "endergetic:stripped_poise_stem" - } - ], - "results": [ - { - "item": "endergetic:poise_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json deleted file mode 100644 index a66ac73078..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:aspen_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_aspen_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json deleted file mode 100644 index 8f89f0df32..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:baobab_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_baobab_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json deleted file mode 100644 index efaadcad3c..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:cottonwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_cottonwood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json deleted file mode 100644 index 1fccda17b1..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:fir_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_fir_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json deleted file mode 100644 index 40952cc184..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:juniper_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_juniper_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json deleted file mode 100644 index c3d52108f2..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:mangrove_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_mangrove_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json deleted file mode 100644 index 43bbdcf6f0..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:maple_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_maple_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json deleted file mode 100644 index 4e00cb76cc..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:palm_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_palm_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json deleted file mode 100644 index cb7c8cb1a2..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:pine_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_pine_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json deleted file mode 100644 index 7f2f01ab0d..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:redwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_redwood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json deleted file mode 100644 index a2918108c2..0000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "projectvibrantjourneys" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:willow_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_willow_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/quark/crushing/moss_block.json b/src/main/resources/data/create/recipes/compat/quark/crushing/moss_block.json deleted file mode 100644 index ce6dcb570d..0000000000 --- a/src/main/resources/data/create/recipes/compat/quark/crushing/moss_block.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "quark" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "minecraft:moss_block" - } - ], - "results": [ - { - "item": "quark:moss_paste", - "count": 2 - }, - { - "item": "quark:moss_paste", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json b/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json deleted file mode 100644 index f6e3a45faf..0000000000 --- a/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "quark" - ] - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "quark:iron_plate" - } - ], - "results": [ - { - "item": "quark:rusty_iron_plate", - "count": 1 - } - ] -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json deleted file mode 100644 index fc0daaf330..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:agate_ore" - } - ], - "results": [ - { - "item": "silentgems:agate", - "count": 2 - }, - { - "item": "silentgems:agate", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json deleted file mode 100644 index 558c1217d8..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:alexandrite_ore" - } - ], - "results": [ - { - "item": "silentgems:alexandrite", - "count": 2 - }, - { - "item": "silentgems:alexandrite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json deleted file mode 100644 index 9c16e488c3..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:amber_ore" - } - ], - "results": [ - { - "item": "silentgems:amber", - "count": 2 - }, - { - "item": "silentgems:amber", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json deleted file mode 100644 index e420f26cf4..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:amethyst_ore" - } - ], - "results": [ - { - "item": "silentgems:amethyst", - "count": 2 - }, - { - "item": "silentgems:amethyst", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json deleted file mode 100644 index 98e914f5cb..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ametrine_ore" - } - ], - "results": [ - { - "item": "silentgems:ametrine", - "count": 2 - }, - { - "item": "silentgems:ametrine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json deleted file mode 100644 index 7a618a0229..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ammolite_ore" - } - ], - "results": [ - { - "item": "silentgems:ammolite", - "count": 2 - }, - { - "item": "silentgems:ammolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json deleted file mode 100644 index 835855bf27..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:apatite_ore" - } - ], - "results": [ - { - "item": "silentgems:apatite", - "count": 2 - }, - { - "item": "silentgems:apatite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json deleted file mode 100644 index a93cf17579..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:aquamarine_ore" - } - ], - "results": [ - { - "item": "silentgems:aquamarine", - "count": 2 - }, - { - "item": "silentgems:aquamarine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json deleted file mode 100644 index 2f091bf86b..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:benitoite_ore" - } - ], - "results": [ - { - "item": "silentgems:benitoite", - "count": 2 - }, - { - "item": "silentgems:benitoite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json deleted file mode 100644 index 95f1e926e2..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:black_diamond_ore" - } - ], - "results": [ - { - "item": "silentgems:black_diamond", - "count": 2 - }, - { - "item": "silentgems:black_diamond", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json deleted file mode 100644 index 96291ba2c0..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:carnelian_ore" - } - ], - "results": [ - { - "item": "silentgems:carnelian", - "count": 2 - }, - { - "item": "silentgems:carnelian", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json deleted file mode 100644 index f8dbbd703e..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:cats_eye_ore" - } - ], - "results": [ - { - "item": "silentgems:cats_eye", - "count": 2 - }, - { - "item": "silentgems:cats_eye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json deleted file mode 100644 index 41f8d4eeab..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:chrysoprase_ore" - } - ], - "results": [ - { - "item": "silentgems:chrysoprase", - "count": 2 - }, - { - "item": "silentgems:chrysoprase", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json deleted file mode 100644 index c552e9905d..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:citrine_ore" - } - ], - "results": [ - { - "item": "silentgems:citrine", - "count": 2 - }, - { - "item": "silentgems:citrine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json deleted file mode 100644 index 92014146e6..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:coral_ore" - } - ], - "results": [ - { - "item": "silentgems:coral", - "count": 2 - }, - { - "item": "silentgems:coral", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json deleted file mode 100644 index e3f6afbe63..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:euclase_ore" - } - ], - "results": [ - { - "item": "silentgems:euclase", - "count": 2 - }, - { - "item": "silentgems:euclase", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json deleted file mode 100644 index a8134f711e..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:fluorite_ore" - } - ], - "results": [ - { - "item": "silentgems:fluorite", - "count": 2 - }, - { - "item": "silentgems:fluorite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json deleted file mode 100644 index d1c24a0300..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:garnet_ore" - } - ], - "results": [ - { - "item": "silentgems:garnet", - "count": 2 - }, - { - "item": "silentgems:garnet", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json deleted file mode 100644 index b64a46a944..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:green_sapphire_ore" - } - ], - "results": [ - { - "item": "silentgems:green_sapphire", - "count": 2 - }, - { - "item": "silentgems:green_sapphire", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json deleted file mode 100644 index 0de41048c1..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:heliodor_ore" - } - ], - "results": [ - { - "item": "silentgems:heliodor", - "count": 2 - }, - { - "item": "silentgems:heliodor", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json deleted file mode 100644 index 9dc7280265..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:iolite_ore" - } - ], - "results": [ - { - "item": "silentgems:iolite", - "count": 2 - }, - { - "item": "silentgems:iolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json deleted file mode 100644 index 8386de55fc..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:jade_ore" - } - ], - "results": [ - { - "item": "silentgems:jade", - "count": 2 - }, - { - "item": "silentgems:jade", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json deleted file mode 100644 index 0510c0b4c6..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:jasper_ore" - } - ], - "results": [ - { - "item": "silentgems:jasper", - "count": 2 - }, - { - "item": "silentgems:jasper", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json deleted file mode 100644 index a2fb597a49..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:kunzite_ore" - } - ], - "results": [ - { - "item": "silentgems:kunzite", - "count": 2 - }, - { - "item": "silentgems:kunzite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json deleted file mode 100644 index 0234550cd6..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:kyanite_ore" - } - ], - "results": [ - { - "item": "silentgems:kyanite", - "count": 2 - }, - { - "item": "silentgems:kyanite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json deleted file mode 100644 index c07957d777..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:lepidolite_ore" - } - ], - "results": [ - { - "item": "silentgems:lepidolite", - "count": 2 - }, - { - "item": "silentgems:lepidolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json deleted file mode 100644 index 3c01c4e9cf..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:malachite_ore" - } - ], - "results": [ - { - "item": "silentgems:malachite", - "count": 2 - }, - { - "item": "silentgems:malachite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json deleted file mode 100644 index 181fe2f4e1..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:moldavite_ore" - } - ], - "results": [ - { - "item": "silentgems:moldavite", - "count": 2 - }, - { - "item": "silentgems:moldavite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json deleted file mode 100644 index 75ee7d5193..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:moonstone_ore" - } - ], - "results": [ - { - "item": "silentgems:moonstone", - "count": 2 - }, - { - "item": "silentgems:moonstone", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json deleted file mode 100644 index ba0c679880..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:morganite_ore" - } - ], - "results": [ - { - "item": "silentgems:morganite", - "count": 2 - }, - { - "item": "silentgems:morganite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json deleted file mode 100644 index bc772bdf1e..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:onyx_ore" - } - ], - "results": [ - { - "item": "silentgems:onyx", - "count": 2 - }, - { - "item": "silentgems:onyx", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json deleted file mode 100644 index cf3598928b..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:opal_ore" - } - ], - "results": [ - { - "item": "silentgems:opal", - "count": 2 - }, - { - "item": "silentgems:opal", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json deleted file mode 100644 index b14fb5ec2f..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:pearl_ore" - } - ], - "results": [ - { - "item": "silentgems:pearl", - "count": 2 - }, - { - "item": "silentgems:pearl", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json deleted file mode 100644 index 287df96e8d..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:peridot_ore" - } - ], - "results": [ - { - "item": "silentgems:peridot", - "count": 2 - }, - { - "item": "silentgems:peridot", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json deleted file mode 100644 index 2b179355cc..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:phosphophyllite_ore" - } - ], - "results": [ - { - "item": "silentgems:phosphophyllite", - "count": 2 - }, - { - "item": "silentgems:phosphophyllite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json deleted file mode 100644 index 33cd76e956..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:pyrope_ore" - } - ], - "results": [ - { - "item": "silentgems:pyrope", - "count": 2 - }, - { - "item": "silentgems:pyrope", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json deleted file mode 100644 index 2eefe7d94f..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:rose_quartz_ore" - } - ], - "results": [ - { - "item": "silentgems:rose_quartz", - "count": 2 - }, - { - "item": "silentgems:rose_quartz", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json deleted file mode 100644 index fedbc79689..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ruby_ore" - } - ], - "results": [ - { - "item": "silentgems:ruby", - "count": 2 - }, - { - "item": "silentgems:ruby", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json deleted file mode 100644 index 6db27078f8..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sapphire_ore" - } - ], - "results": [ - { - "item": "silentgems:sapphire", - "count": 2 - }, - { - "item": "silentgems:sapphire", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json deleted file mode 100644 index 17c098c347..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sodalite_ore" - } - ], - "results": [ - { - "item": "silentgems:sodalite", - "count": 2 - }, - { - "item": "silentgems:sodalite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json deleted file mode 100644 index 298e60b4f5..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:spinel_ore" - } - ], - "results": [ - { - "item": "silentgems:spinel", - "count": 2 - }, - { - "item": "silentgems:spinel", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json deleted file mode 100644 index 09526341fd..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sunstone_ore" - } - ], - "results": [ - { - "item": "silentgems:sunstone", - "count": 2 - }, - { - "item": "silentgems:sunstone", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json deleted file mode 100644 index 08e8c02450..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:tanzanite_ore" - } - ], - "results": [ - { - "item": "silentgems:tanzanite", - "count": 2 - }, - { - "item": "silentgems:tanzanite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json deleted file mode 100644 index cc5f5fee4d..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:tektite_ore" - } - ], - "results": [ - { - "item": "silentgems:tektite", - "count": 2 - }, - { - "item": "silentgems:tektite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json deleted file mode 100644 index c34fc1d84b..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:topaz_ore" - } - ], - "results": [ - { - "item": "silentgems:topaz", - "count": 2 - }, - { - "item": "silentgems:topaz", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json deleted file mode 100644 index b2a2794a07..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:turquoise_ore" - } - ], - "results": [ - { - "item": "silentgems:turquoise", - "count": 2 - }, - { - "item": "silentgems:turquoise", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json deleted file mode 100644 index ac7feb4b62..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:yellow_diamond_ore" - } - ], - "results": [ - { - "item": "silentgems:yellow_diamond", - "count": 2 - }, - { - "item": "silentgems:yellow_diamond", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json deleted file mode 100644 index 3fb413b024..0000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "silentgems" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:zircon_ore" - } - ], - "results": [ - { - "item": "silentgems:zircon", - "count": 2 - }, - { - "item": "silentgems:zircon", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json deleted file mode 100644 index 6225314397..0000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "simplefarming" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:barley" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:barley_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json deleted file mode 100644 index f97f182b25..0000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "simplefarming" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:oat" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:oat_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json deleted file mode 100644 index fae972ee84..0000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "simplefarming" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:rice" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:rice_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json deleted file mode 100644 index 269e71eaba..0000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "simplefarming" - ] - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:rye" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:rye_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json deleted file mode 100644 index 43c3754c45..0000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "thermal" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "c:apatite_ores" - } - ], - "results": [ - { - "item": "thermal:apatite", - "count": 2 - }, - { - "item": "thermal:apatite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json deleted file mode 100644 index 3566380ecd..0000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "thermal" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "c:cinnabar_ores" - } - ], - "results": [ - { - "item": "thermal:cinnabar", - "count": 2 - }, - { - "item": "thermal:cinnabar", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json deleted file mode 100644 index 1da7a56fe7..0000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "thermal" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "c:niter_ores" - } - ], - "results": [ - { - "item": "thermal:niter", - "count": 2 - }, - { - "item": "thermal:niter", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json deleted file mode 100644 index 0f28db335a..0000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "thermal" - ] - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "c:sulfur_ores" - } - ], - "results": [ - { - "item": "thermal:sulfur", - "count": 2 - }, - { - "item": "thermal:sulfur", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_log.json b/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_log.json deleted file mode 100644 index b62a74fe75..0000000000 --- a/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "traverse" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "traverse:fir_log" - } - ], - "results": [ - { - "item": "traverse:stripped_fir_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_wood.json b/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_wood.json deleted file mode 100644 index c4287d1ae9..0000000000 --- a/src/main/resources/data/create/recipes/compat/traverse/cutting/fir_wood.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "traverse" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "traverse:fir_wood" - } - ], - "results": [ - { - "item": "traverse:stripped_fir_wood", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_log.json b/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_log.json deleted file mode 100644 index c887244ff2..0000000000 --- a/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "traverse" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "traverse:stripped_fir_log" - } - ], - "results": [ - { - "item": "traverse:fir_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_wood.json b/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_wood.json deleted file mode 100644 index 31cc2c5bc6..0000000000 --- a/src/main/resources/data/create/recipes/compat/traverse/cutting/stripped_fir_wood.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "traverse" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "traverse:stripped_fir_wood" - } - ], - "results": [ - { - "item": "traverse:fir_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/crafting/tree_fertilizer.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/crafting/tree_fertilizer.json deleted file mode 100644 index 065f7c8226..0000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/crafting/tree_fertilizer.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "upgrade_aquatic" - ] - } - ], - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "minecraft:small_flowers" - }, - { - "tag": "minecraft:small_flowers" - }, - [ - { - "item": "upgrade_aquatic:acan_coral" - }, - { - "item": "upgrade_aquatic:finger_coral" - }, - { - "item": "upgrade_aquatic:star_coral" - }, - { - "item": "upgrade_aquatic:moss_coral" - }, - { - "item": "upgrade_aquatic:petal_coral" - }, - { - "item": "upgrade_aquatic:branch_coral" - }, - { - "item": "upgrade_aquatic:rock_coral" - }, - { - "item": "upgrade_aquatic:pillow_coral" - }, - { - "item": "upgrade_aquatic:chrome_coral" - }, - { - "item": "upgrade_aquatic:silk_coral" - } - ], - { - "item": "minecraft:bone_meal" - } - ], - "result": { - "item": "create:tree_fertilizer", - "count": 2 - } -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json deleted file mode 100644 index 082dcff6e6..0000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "upgrade_aquatic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:driftwood_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:stripped_driftwood_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json deleted file mode 100644 index e1c54bf39f..0000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "upgrade_aquatic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:river_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:stripped_river_log", - "count": 1 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json deleted file mode 100644 index 40782555e5..0000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "upgrade_aquatic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:stripped_driftwood_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:driftwood_planks", - "count": 6 - } - ], - "processingTime": 50 -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json deleted file mode 100644 index 33b54c5dfd..0000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -"fabric:load_conditions": [ - { - "condition": "fabric:all_mods_loaded", - "values": [ - "upgrade_aquatic" - ] - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:stripped_river_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:river_planks", - "count": 6 - } - ], - "processingTime": 50 -}