Not enough datagen

- Expanded the RecipeProvider infrastructure
- Migrated mechanical crafting recipes to generated
- Migrated cooking recipes to generated
- Fixed missing particles on vertical motor model
- Adjusted a few recipes
This commit is contained in:
simibubi 2020-09-04 12:20:19 +02:00
parent 213b504854
commit 00a9b1c6c7
82 changed files with 1743 additions and 233 deletions

View file

@ -1444,6 +1444,15 @@ e4e3c1bd7ecf501b40cffc26d8ad145ab4e89118 data/create/advancements/deployer.json
a135eec618e448f440d9f42cc7a3e6c63fc45a71 data/create/advancements/overstressed.json
72025d8bf73ab8096c29f12d0c8d9a346f09cd64 data/create/advancements/polished_rose_quartz.json
1e3cd82e36fd4bcd053d652a0eead4458ed7f315 data/create/advancements/press.json
e525d8eda8d0aac6791ae935ed4f3f75cc521460 data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json
295c5a61d6f175a65d25e19cbd7ca90d3b4a93b2 data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json
d192e3f2185ad3cd8cd64f639dd6395aaec89563 data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json
98fe15c805f1d228f1db6a2b35426ef01e9747a8 data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json
9db50289b778cbcdfd9cd8589361924a0f1bebad data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json
9b7a18a8697ef7ea09538909df640af53d0b6ca7 data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json
c368cadffa9177fefb9e92ff4453b40bc8dd670d data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json
8fffce2a5c5dd88d52e3b006fa92fb18cf2f1571 data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json
4bb60ef5e186f12a9d52e61319db8c78300c64ab data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json
dd487f98c411f1ff22cb7fc208b8cc24b27deb2f data/create/advancements/recipes/create.base/crafting/appliances/dough.json
51cdcf168087f47e4458eed7543d227da1ee5ca0 data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json
eba09a9ca1c5c249517da9b3a883479fd6480ac6 data/create/advancements/recipes/create.base/crafting/curiosities/deforester.json
@ -1587,6 +1596,11 @@ ae3abb1234ff2bb373ddb660e2df99e4fb2fffbd data/create/advancements/recipes/create
403de5e01d5f572d16d3de3ba42f24ee76d0d9d3 data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json
25ba269db29f030757c53fb1772615c247da3c1e data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json
da116aef3364263674f94aa84eeefda64f3b49fc data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json
890cba273d0f5d5cb753dc8e8e27a8a5e4cbebca data/create/advancements/recipes/create.base/smelting/brass_ingot_from_crushed.json
2b7693b9eb1c8b9e34a8aa2d08bcf0e2083883b8 data/create/advancements/recipes/create.base/smelting/copper_ingot_from_crushed.json
3dc1433ffd2a3b5520ed7728ad7dadc560c39d98 data/create/advancements/recipes/create.base/smelting/copper_ingot_from_ore.json
f2e1b12251a989b895642694054fabaad99094e4 data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json
16e52ba04279bcf803c5f6be46550ba5d81be1a3 data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json
909345eb2f5541a2be592a52800319a8765ca345 data/create/advancements/recipes/create.palettes/acacia_window.json
73f99cd857b056da5e19ff8304a4f5eeacc4f8cd data/create/advancements/recipes/create.palettes/acacia_window_pane.json
06479f24d7b2655ee590b5314861a3c9c422ebbe data/create/advancements/recipes/create.palettes/andesite_bricks_from_andesite_stonecutting.json
@ -1939,6 +1953,10 @@ a43d45efa0fb0d3eaace93c18d80a14d4dcddf38 data/create/advancements/recipes/create
e340721aa78f260c2666214aa149241a37de216e data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json
53cc5b006a19158e04094308accb66a7c35d2b26 data/create/advancements/recipes/create.palettes/scoria_pillar.json
53712a9ae59976dece952bea7ecaf73b679448f0 data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json
6b148def2f8789f9ff1d41bb71ab3608438a7207 data/create/advancements/recipes/create.palettes/smelting/dolomite.json
070720cc271767b26ad51fa089b4cf2a64d309be data/create/advancements/recipes/create.palettes/smelting/gabbro.json
9a2901f6b918468b0034a8942178d6f3c82aeb6e data/create/advancements/recipes/create.palettes/smelting/limestone.json
c8fb5d555eacec479af4fa6b9042656f1fe49a2e data/create/advancements/recipes/create.palettes/smelting/scoria.json
459538728b06d4c72d7e65d8f7c98a75a48f3a52 data/create/advancements/recipes/create.palettes/spruce_window.json
6aaf96cdaa845b63ab67ba4b968ea4d811e2fef5 data/create/advancements/recipes/create.palettes/spruce_window_pane.json
ab0cacba05f8def9cc91b993d464c297babf6fc3 data/create/advancements/recipes/create.palettes/tiled_glass_from_glass_colorless_stonecutting.json
@ -1961,7 +1979,18 @@ b77c5aecd0b6dd37a0c69431ab7a4a40fe0770eb data/create/advancements/recipes/create
e548127075559307b767b802f4809ed52eedd543 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json
23ba836640a4d543db6f1cb72cc86a6543fe2fbe data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json
9790a16fd56e47cb5abbfad4062672303c224d9f data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
e00155bcd00f50750e2cc4d6aa30c2f2d6e62922 data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json
bf9131527df4ad259b5a509753ba66417d764da2 data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json
1b1517afa209c8db70eade588f4f08039c4d6b72 data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json
71f2e99c69a6ca1c9752355a2801c932d5266451 data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json
d7755c3882f6e59bedd81c8395416df62b271337 data/create/advancements/recipes/food/campfire_cooking/bread.json
ecfec2e105e00a9bd7f28e9228660ee00b0749b5 data/create/advancements/recipes/food/smelting/bread.json
795700a15d24438ba83cd1888393a32ab884d34d data/create/advancements/recipes/food/smoking/bread.json
b2bf6f04c1090e761d899fb6c16c91c6e71dad1d data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json
808e5f83586c280c44e02f95902ca85f085bfa0d data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json
cc2fb476dcd5ba27b56b7f9fd2ebb9ef142cdc60 data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json
ea72626febe23b0c8c6e03518a9486ce94c88b12 data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json
3b6f22b5731000f48963044fb2ac6f9af6f9a883 data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json
c8a2f6594042a3205e675349ccef97873a9e91b2 data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json
e35aa0e435dc3640c78c4687dd7130fe62c55ea3 data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json
e0b9edc5e59647e7dd99be17369b263dadf407d4 data/create/advancements/refined_radiance.json
@ -2358,6 +2387,14 @@ a961cdd11e807bc4658bbdba6c278801b5981234 data/create/recipes/andesite_pillar.jso
dcdad7a04838ef202b42f84a15243e3d2472b14e data/create/recipes/andesite_pillar_from_andesite_stonecutting.json
2b291b77860254b7ba8500cf2199a04ca1fca7b5 data/create/recipes/birch_window.json
288d80210f7efb4664e2e9c9d9111049863e5f60 data/create/recipes/birch_window_pane.json
adb384440f91411692689707d5c767c1065ac06c data/create/recipes/blasting/brass_ingot_from_crushed.json
c21420fbf2080dba5f95bdc9a19743ba09e1f1c9 data/create/recipes/blasting/copper_ingot_from_crushed.json
c6f0509618f703f1a48313e46d934bd862096699 data/create/recipes/blasting/copper_ingot_from_ore.json
d9021504be855cd2d4d91503a82b84233052adb0 data/create/recipes/blasting/gold_ingot_from_crushed.json
69cda0f54c47cd44c296608cc379db855602410f data/create/recipes/blasting/iron_ingot_from_crushed.json
70b58fa5ee4ca088f5cd9d4bce2853b1bbf98780 data/create/recipes/blasting/zinc_ingot_from_crushed.json
397a2b5d5d3b072066c3d7a9546769560e4674a3 data/create/recipes/blasting/zinc_ingot_from_ore.json
339bcf4a9c4e7b36c15970aa671af8620703b23e data/create/recipes/campfire_cooking/bread.json
8851b4a339f22bed4da120c3e34d1f32120d0d66 data/create/recipes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json
66937d62734328f4bff6254e6755b3490d4dfa16 data/create/recipes/chiseled_dolomite_from_dolomite_stonecutting.json
74f565a44400c4abd7b5d6073830b9b46dd71fc6 data/create/recipes/chiseled_gabbro_from_gabbro_stonecutting.json
@ -2737,6 +2774,13 @@ bbf64f7eb3868e354756e57348493e2b1ae6b0d9 data/create/recipes/limestone_cobblesto
88fa2b1ab746d5e13a8afd6e7e7d80ad843e0016 data/create/recipes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json
327bb8a6535b60bb65d0dda9d5205e988bc82526 data/create/recipes/limestone_pillar.json
c2e15ac0c9109bad3face6d13efc32d7116b4c25 data/create/recipes/limestone_pillar_from_limestone_stonecutting.json
88173753ceaf121c5430bbf928a40e3c046dbfe0 data/create/recipes/mechanical_crafting/crushing_wheel.json
357cb3a50ebedcc347396c5cb26a04eb4bd96fea data/create/recipes/mechanical_crafting/extendo_grip.json
de7fea84434753873dfa2b929d9b5f5f86ac6a5c data/create/recipes/mechanical_crafting/flywheel.json
e491fd8a8873308270f9dc2a57ac8f2c70431dcc data/create/recipes/mechanical_crafting/furnace_engine.json
ce17f8ab6e051f45a12e55f1642ad1b8a0f8510f data/create/recipes/mechanical_crafting/integrated_circuit.json
fc380bc241f3233700e91fe2947e1a5d6c70e7db data/create/recipes/mechanical_crafting/mechanical_arm.json
23bd72789e7be894c4ee8927a171c721afcc2084 data/create/recipes/mechanical_crafting/nixie_tube.json
9d637c3c552840bd79ccfac57b1508e21146de49 data/create/recipes/milling/allium.json
7823440a3707ab2ea41d8dae214b11364a53e290 data/create/recipes/milling/andesite.json
ac3f1c92115a113a1ea7e5543c1e061e3d2a0b36 data/create/recipes/milling/azure_bluet.json
@ -2944,6 +2988,27 @@ f7b7ff190929ae525297fecb3c116f32fc05fd88 data/create/recipes/scoria_cobblestone_
a9096822db9d12b6014d6d34e52de5821305c03f data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json
a513468ce4d55fe3b3919bd76ba2bd5b6fac4d4e data/create/recipes/scoria_pillar.json
2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data/create/recipes/scoria_pillar_from_scoria_stonecutting.json
ae90f50589bc06b44765ac8cbb9fbdc2b58fdb32 data/create/recipes/smelting/brass_ingot_from_crushed.json
64cbf425effba00ff2e31d95cffc2be2e0191932 data/create/recipes/smelting/bread.json
68aae31e827e192e28e1f950b0bfdeb4ec1860c7 data/create/recipes/smelting/copper_ingot_from_crushed.json
7fab4012e343cc14137f02f2a051deb813ffacf6 data/create/recipes/smelting/copper_ingot_from_ore.json
c460e8e09340ff3f5b61cfd99137ea3a69de3079 data/create/recipes/smelting/dolomite.json
5cccc708796df044fdd4ed03a12b0432c75af971 data/create/recipes/smelting/gabbro.json
11857aff0104cce17a318e440b6b38cf414f7174 data/create/recipes/smelting/glass_from_framed_glass.json
8097d4c4c67188e48306b3bc26c95813bb66f970 data/create/recipes/smelting/glass_from_horizontal_framed_glass.json
4a370d04bc50fd081fbb33b3de029b92c2c6e9f3 data/create/recipes/smelting/glass_from_tiled_glass.json
28717c180696abf7f57c10b3ba424a4e492ec39e data/create/recipes/smelting/glass_from_vertical_framed_glass.json
daaa640dbfaa86685de636b89afe2fdd74cd0cf9 data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json
3a9d729f22b603f9149d2da78e3eb66c4135a7e2 data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json
48bdeff8ca1ae7bf732fc870fb0fa294de56188a data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json
7035be7cce5a38c794d9cc872801329af81bac46 data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json
b032c79090adad2262ae94609e0b3747327d51a2 data/create/recipes/smelting/gold_ingot_from_crushed.json
fe3e4c244c34aa6948243fabd6b42f04f80d4992 data/create/recipes/smelting/iron_ingot_from_crushed.json
bf0e5df5a88e583e39a4e14b006cbf33b99611e1 data/create/recipes/smelting/limestone.json
2c230522bb0946bde6a51442cb15c5efeea99b15 data/create/recipes/smelting/scoria.json
a5d23be4cc959eb47d84b210190abaafcf41f022 data/create/recipes/smelting/zinc_ingot_from_crushed.json
2d8e448bbe841871c5d9a022149c5f34fd5c0df1 data/create/recipes/smelting/zinc_ingot_from_ore.json
ce7c3c6e1da9d6684c9537d1a558423925d89f33 data/create/recipes/smoking/bread.json
60ee56b41a279124ff59724794c80da7e8cc81e4 data/create/recipes/splashing/black_concrete_powder.json
59ce20e3f4193a6e28cde2d46c008afe5d53c67f data/create/recipes/splashing/blue_concrete_powder.json
6d69b04151846675b5b9d1de3374f0168bcdc20b data/create/recipes/splashing/brown_concrete_powder.json
@ -3002,6 +3067,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone
246ee2ec4e778e38a362f319506564886d4e0e76 data/create/tags/blocks/fan_heaters.json
798ef82869dbe22682121504a372e95607a785dc data/create/tags/blocks/fan_transparent.json
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json
7fa13854a216ee49c0ae3b1e0e23c4cd1fbc4859 data/create/tags/blocks/windmill_sails.json
081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json
d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data/create/tags/items/crushed_ores.json
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_from_framed_glass"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_from_framed_glass"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_from_horizontal_framed_glass"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:horizontal_framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_from_horizontal_framed_glass"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_from_tiled_glass"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:tiled_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_from_tiled_glass"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_from_vertical_framed_glass"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:vertical_framed_glass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_from_vertical_framed_glass"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/brass_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_brass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/brass_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/copper_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_copper_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/copper_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/copper_ingot_from_ore"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:ores/copper"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/copper_ingot_from_ore"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/zinc_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_zinc_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/zinc_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/zinc_ingot_from_ore"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:ores/zinc"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/zinc_ingot_from_ore"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/brass_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_brass"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/brass_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/copper_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_copper_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/copper_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/copper_ingot_from_ore"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:ores/copper"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/copper_ingot_from_ore"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/zinc_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_zinc_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/zinc_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/zinc_ingot_from_ore"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "forge:ores/zinc"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/zinc_ingot_from_ore"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/dolomite"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:diorite"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/dolomite"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/gabbro"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:granite"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/gabbro"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/limestone"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:limesand"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/limestone"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/scoria"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:soul_sand"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/scoria"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_pane_from_framed_glass_pane"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:framed_glass_pane"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_pane_from_framed_glass_pane"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_pane_from_horizontal_framed_glass_pane"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:horizontal_framed_glass_pane"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_pane_from_horizontal_framed_glass_pane"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_pane_from_tiled_glass_pane"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:tiled_glass_pane"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_pane_from_tiled_glass_pane"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/glass_pane_from_vertical_framed_glass_pane"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:vertical_framed_glass_pane"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/glass_pane_from_vertical_framed_glass_pane"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:campfire_cooking/bread"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:dough"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:campfire_cooking/bread"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/bread"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:dough"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/bread"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smoking/bread"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:dough"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smoking/bread"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/gold_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_gold_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/gold_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:blasting/iron_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_iron_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:blasting/iron_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/gold_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_gold_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/gold_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"create:smelting/iron_ingot_from_crushed"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "create:crushed_iron_ore"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "create:smelting/iron_ingot_from_crushed"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View file

@ -5,5 +5,5 @@
},
"result": "create:brass_ingot",
"experience": 0.1,
"cookingtime": 50
"cookingtime": 100
}

View file

@ -5,5 +5,5 @@
},
"result": "create:copper_ingot",
"experience": 0.1,
"cookingtime": 50
"cookingtime": 100
}

View file

@ -5,5 +5,5 @@
},
"result": "minecraft:gold_ingot",
"experience": 0.1,
"cookingtime": 50
"cookingtime": 100
}

View file

@ -5,5 +5,5 @@
},
"result": "minecraft:iron_ingot",
"experience": 0.1,
"cookingtime": 50
"cookingtime": 100
}

View file

@ -5,5 +5,5 @@
},
"result": "create:zinc_ingot",
"experience": 0.1,
"cookingtime": 50
"cookingtime": 100
}

View file

@ -0,0 +1,9 @@
{
"type": "minecraft:campfire_cooking",
"ingredient": {
"item": "create:dough"
},
"result": "minecraft:bread",
"experience": 0.0,
"cookingtime": 600
}

View file

@ -0,0 +1,25 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" AAA ",
"AAPAA",
"APSPA",
"AAPAA",
" AAA "
],
"key": {
"P": {
"tag": "minecraft:planks"
},
"S": {
"tag": "forge:stone"
},
"A": {
"item": "create:andesite_alloy"
}
},
"result": {
"item": "create:crushing_wheel",
"count": 2
}
}

View file

@ -0,0 +1,27 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" L ",
" R ",
"SSS",
"SSS",
" H "
],
"key": {
"L": {
"tag": "forge:ingots/brass"
},
"R": {
"item": "create:cogwheel"
},
"H": {
"item": "create:brass_hand"
},
"S": {
"tag": "forge:rods/wooden"
}
},
"result": {
"item": "create:extendo_grip"
}
}

View file

@ -0,0 +1,19 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" BBB",
"CB B",
" BBB"
],
"key": {
"B": {
"tag": "forge:ingots/brass"
},
"C": {
"item": "create:brass_casing"
}
},
"result": {
"item": "create:flywheel"
}
}

View file

@ -0,0 +1,30 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"PPB",
"PCI",
"PPB"
],
"key": {
"P": {
"tag": "forge:plates/brass"
},
"B": {
"tag": "forge:ingots/brass"
},
"I": [
{
"item": "minecraft:piston"
},
{
"item": "minecraft:sticky_piston"
}
],
"C": {
"item": "create:brass_casing"
}
},
"result": {
"item": "create:furnace_engine"
}
}

View file

@ -0,0 +1,25 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" L ",
"RRQRR",
" CCC "
],
"key": {
"L": {
"item": "create:lapis_sheet"
},
"R": {
"tag": "forge:dusts/redstone"
},
"Q": {
"item": "create:polished_rose_quartz"
},
"C": {
"tag": "forge:nuggets/gold"
}
},
"result": {
"item": "create:integrated_circuit"
}
}

View file

@ -0,0 +1,30 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"LLA",
"L ",
"LL ",
" I ",
"RCR"
],
"key": {
"L": {
"tag": "forge:plates/brass"
},
"R": {
"item": "create:cogwheel"
},
"I": {
"item": "create:integrated_circuit"
},
"A": {
"item": "create:andesite_alloy"
},
"C": {
"item": "create:brass_casing"
}
},
"result": {
"item": "create:mechanical_arm"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"EBE"
],
"key": {
"E": {
"item": "create:electron_tube"
},
"B": {
"item": "create:brass_casing"
}
},
"result": {
"item": "create:nixie_tube"
}
}

View file

@ -4,6 +4,6 @@
"item": "create:dough"
},
"result": "minecraft:bread",
"experience": 0.1,
"experience": 0.0,
"cookingtime": 200
}

View file

@ -4,6 +4,6 @@
"item": "minecraft:diorite"
},
"result": "create:dolomite",
"experience": 0.1,
"experience": 0.0,
"cookingtime": 200
}

View file

@ -4,6 +4,6 @@
"item": "minecraft:granite"
},
"result": "create:gabbro",
"experience": 0.1,
"experience": 0.0,
"cookingtime": 200
}

View file

@ -4,5 +4,6 @@
"item": "create:framed_glass"
},
"result": "minecraft:glass",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:horizontal_framed_glass"
},
"result": "minecraft:glass",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:tiled_glass"
},
"result": "minecraft:glass",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:vertical_framed_glass"
},
"result": "minecraft:glass",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:framed_glass_pane"
},
"result": "minecraft:glass_pane",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:horizontal_framed_glass_pane"
},
"result": "minecraft:glass_pane",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:tiled_glass_pane"
},
"result": "minecraft:glass_pane",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,5 +4,6 @@
"item": "create:vertical_framed_glass_pane"
},
"result": "minecraft:glass_pane",
"cookingtime": 100
"experience": 0.0,
"cookingtime": 50
}

View file

@ -4,6 +4,6 @@
"item": "create:limesand"
},
"result": "create:limestone",
"experience": 0.1,
"experience": 0.0,
"cookingtime": 200
}

View file

@ -4,6 +4,6 @@
"item": "minecraft:soul_sand"
},
"result": "create:scoria",
"experience": 0.1,
"experience": 0.0,
"cookingtime": 200
}

View file

@ -0,0 +1,9 @@
{
"type": "minecraft:smoking",
"ingredient": {
"item": "create:dough"
},
"result": "minecraft:bread",
"experience": 0.0,
"cookingtime": 100
}

View file

@ -147,6 +147,8 @@ public class AllTags {
AllItemTags.UPRIGHT_ON_BELT.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION);
AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL);
AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS);
AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL);

View file

@ -17,6 +17,7 @@ import com.simibubi.create.foundation.command.ServerLagger;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.LangMerger;
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.networking.AllPackets;
@ -112,6 +113,7 @@ public class Create {
gen.addProvider(new LangMerger(gen));
gen.addProvider(AllSoundEvents.BLAZE_MUNCH.generator(gen));
gen.addProvider(new StandardRecipeGen(gen));
gen.addProvider(new MechanicalCraftingRecipeGen(gen));
ProcessingRecipeGen.registerAll(gen);
}

View file

@ -4,6 +4,9 @@ import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.gui.GuiGameElement;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.util.math.MathHelper;
public class AnimatedMixer extends AnimatedKinetics {
@ -16,31 +19,33 @@ public class AnimatedMixer extends AnimatedKinetics {
int scale = 23;
GuiGameElement.of(cogwheel())
.rotateBlock(0, getCurrentAngle() * 2, 0)
.atLocal(0, 0, 0)
.scale(scale)
.render();
.rotateBlock(0, getCurrentAngle() * 2, 0)
.atLocal(0, 0, 0)
.scale(scale)
.render();
GuiGameElement.of(AllBlocks.MECHANICAL_MIXER.getDefaultState())
.atLocal(0, 0, 0)
.scale(scale)
.render();
.atLocal(0, 0, 0)
.scale(scale)
.render();
float animation = ((MathHelper.sin(AnimationTickHolder.getRenderTick() / 32f) + 1) / 5) + .5f;
GuiGameElement.of(AllBlockPartials.MECHANICAL_MIXER_POLE)
.atLocal(0, 1, 0)
.scale(scale)
.render();
.atLocal(0, animation, 0)
.scale(scale)
.render();
GuiGameElement.of(AllBlockPartials.MECHANICAL_MIXER_HEAD)
.rotateBlock(0, getCurrentAngle() * 4, 0)
.atLocal(0, 1, 0)
.scale(scale)
.render();
.rotateBlock(0, getCurrentAngle() * 4, 0)
.atLocal(0, animation, 0)
.scale(scale)
.render();
GuiGameElement.of(AllBlocks.BASIN.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render();
.atLocal(0, 1.65, 0)
.scale(scale)
.render();
RenderSystem.popMatrix();
}

View file

@ -7,6 +7,7 @@ import java.util.function.Consumer;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllTags;
import com.simibubi.create.Create;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.IFinishedRecipe;
@ -27,6 +28,7 @@ public abstract class CreateRecipeProvider extends RecipeProvider {
@Override
protected void registerRecipes(Consumer<IFinishedRecipe> p_200404_1_) {
all.forEach(c -> c.register(p_200404_1_));
Create.logger.info(getName() + " registered " + all.size() + " recipes");
}
@FunctionalInterface

View file

@ -0,0 +1,204 @@
package com.simibubi.create.foundation.data.recipe;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Consumer;
import javax.annotation.Nullable;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.simibubi.create.AllRecipeTypes;
import net.minecraft.data.IFinishedRecipe;
import net.minecraft.item.Item;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tags.Tag;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.registries.ForgeRegistries;
public class MechanicalCraftingRecipeBuilder {
private final Item result;
private final int count;
private final List<String> pattern = Lists.newArrayList();
private final Map<Character, Ingredient> key = Maps.newLinkedHashMap();
public MechanicalCraftingRecipeBuilder(IItemProvider p_i48261_1_, int p_i48261_2_) {
result = p_i48261_1_.asItem();
count = p_i48261_2_;
}
/**
* Creates a new builder for a shaped recipe.
*/
public static MechanicalCraftingRecipeBuilder shapedRecipe(IItemProvider p_200470_0_) {
return shapedRecipe(p_200470_0_, 1);
}
/**
* Creates a new builder for a shaped recipe.
*/
public static MechanicalCraftingRecipeBuilder shapedRecipe(IItemProvider p_200468_0_, int p_200468_1_) {
return new MechanicalCraftingRecipeBuilder(p_200468_0_, p_200468_1_);
}
/**
* Adds a key to the recipe pattern.
*/
public MechanicalCraftingRecipeBuilder key(Character p_200469_1_, Tag<Item> p_200469_2_) {
return this.key(p_200469_1_, Ingredient.fromTag(p_200469_2_));
}
/**
* Adds a key to the recipe pattern.
*/
public MechanicalCraftingRecipeBuilder key(Character p_200462_1_, IItemProvider p_200462_2_) {
return this.key(p_200462_1_, Ingredient.fromItems(p_200462_2_));
}
/**
* Adds a key to the recipe pattern.
*/
public MechanicalCraftingRecipeBuilder key(Character p_200471_1_, Ingredient p_200471_2_) {
if (this.key.containsKey(p_200471_1_)) {
throw new IllegalArgumentException("Symbol '" + p_200471_1_ + "' is already defined!");
} else if (p_200471_1_ == ' ') {
throw new IllegalArgumentException("Symbol ' ' (whitespace) is reserved and cannot be defined");
} else {
this.key.put(p_200471_1_, p_200471_2_);
return this;
}
}
/**
* Adds a new entry to the patterns for this recipe.
*/
public MechanicalCraftingRecipeBuilder patternLine(String p_200472_1_) {
if (!this.pattern.isEmpty() && p_200472_1_.length() != this.pattern.get(0)
.length()) {
throw new IllegalArgumentException("Pattern must be the same width on every line!");
} else {
this.pattern.add(p_200472_1_);
return this;
}
}
/**
* Builds this recipe into an {@link IFinishedRecipe}.
*/
public void build(Consumer<IFinishedRecipe> p_200464_1_) {
this.build(p_200464_1_, ForgeRegistries.ITEMS.getKey(this.result));
}
/**
* Builds this recipe into an {@link IFinishedRecipe}. Use
* {@link #build(Consumer)} if save is the same as the ID for the result.
*/
public void build(Consumer<IFinishedRecipe> p_200466_1_, String p_200466_2_) {
ResourceLocation resourcelocation = ForgeRegistries.ITEMS.getKey(this.result);
if ((new ResourceLocation(p_200466_2_)).equals(resourcelocation)) {
throw new IllegalStateException("Shaped Recipe " + p_200466_2_ + " should remove its 'save' argument");
} else {
this.build(p_200466_1_, new ResourceLocation(p_200466_2_));
}
}
/**
* Builds this recipe into an {@link IFinishedRecipe}.
*/
public void build(Consumer<IFinishedRecipe> p_200467_1_, ResourceLocation p_200467_2_) {
validate(p_200467_2_);
p_200467_1_.accept(new MechanicalCraftingRecipeBuilder.Result(p_200467_2_, result, count, pattern, key));
}
/**
* Makes sure that this recipe is valid.
*/
private void validate(ResourceLocation p_200463_1_) {
if (pattern.isEmpty()) {
throw new IllegalStateException("No pattern is defined for shaped recipe " + p_200463_1_ + "!");
} else {
Set<Character> set = Sets.newHashSet(key.keySet());
set.remove(' ');
for (String s : pattern) {
for (int i = 0; i < s.length(); ++i) {
char c0 = s.charAt(i);
if (!key.containsKey(c0) && c0 != ' ')
throw new IllegalStateException(
"Pattern in recipe " + p_200463_1_ + " uses undefined symbol '" + c0 + "'");
set.remove(c0);
}
}
if (!set.isEmpty())
throw new IllegalStateException(
"Ingredients are defined but not used in pattern for recipe " + p_200463_1_);
}
}
public class Result implements IFinishedRecipe {
private final ResourceLocation id;
private final Item result;
private final int count;
private final List<String> pattern;
private final Map<Character, Ingredient> key;
public Result(ResourceLocation p_i48271_2_, Item p_i48271_3_, int p_i48271_4_, List<String> p_i48271_6_,
Map<Character, Ingredient> p_i48271_7_) {
this.id = p_i48271_2_;
this.result = p_i48271_3_;
this.count = p_i48271_4_;
this.pattern = p_i48271_6_;
this.key = p_i48271_7_;
}
public void serialize(JsonObject p_218610_1_) {
JsonArray jsonarray = new JsonArray();
for (String s : this.pattern)
jsonarray.add(s);
p_218610_1_.add("pattern", jsonarray);
JsonObject jsonobject = new JsonObject();
for (Entry<Character, Ingredient> entry : this.key.entrySet())
jsonobject.add(String.valueOf(entry.getKey()), entry.getValue()
.serialize());
p_218610_1_.add("key", jsonobject);
JsonObject jsonobject1 = new JsonObject();
jsonobject1.addProperty("item", ForgeRegistries.ITEMS.getKey(this.result)
.toString());
if (this.count > 1)
jsonobject1.addProperty("count", this.count);
p_218610_1_.add("result", jsonobject1);
}
public IRecipeSerializer<?> getSerializer() {
return AllRecipeTypes.MECHANICAL_CRAFTING.serializer;
}
public ResourceLocation getID() {
return this.id;
}
@Nullable
public JsonObject getAdvancementJson() {
return null;
}
@Nullable
public ResourceLocation getAdvancementID() {
return null;
}
}
}

View file

@ -0,0 +1,135 @@
package com.simibubi.create.foundation.data.recipe;
import java.util.function.UnaryOperator;
import com.google.common.base.Supplier;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import net.minecraft.block.Blocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tags.ItemTags;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.Tags;
public class MechanicalCraftingRecipeGen extends CreateRecipeProvider {
GeneratedRecipe
CRUSHING_WHEEL = create(AllBlocks.CRUSHING_WHEEL::get).returns(2)
.recipe(b -> b.key('P', ItemTags.PLANKS)
.key('S', I.stone())
.key('A', I.andesite())
.patternLine(" AAA ")
.patternLine("AAPAA")
.patternLine("APSPA")
.patternLine("AAPAA")
.patternLine(" AAA ")),
INTEGRATED_CIRCUIT = create(AllItems.INTEGRATED_CIRCUIT::get).returns(1)
.recipe(b -> b.key('L', AllItems.LAPIS_SHEET.get())
.key('R', I.redstone())
.key('Q', AllItems.POLISHED_ROSE_QUARTZ.get())
.key('C', Tags.Items.NUGGETS_GOLD)
.patternLine(" L ")
.patternLine("RRQRR")
.patternLine(" CCC ")),
EXTENDO_GRIP = create(AllItems.EXTENDO_GRIP::get).returns(1)
.recipe(b -> b.key('L', I.brass())
.key('R', I.cog())
.key('H', AllItems.BRASS_HAND.get())
.key('S', Tags.Items.RODS_WOODEN)
.patternLine(" L ")
.patternLine(" R ")
.patternLine("SSS")
.patternLine("SSS")
.patternLine(" H ")),
FURNACE_ENGINE = create(AllBlocks.FURNACE_ENGINE::get).returns(1)
.recipe(b -> b.key('P', I.brassSheet())
.key('B', I.brass())
.key('I', Ingredient.fromItems(Blocks.PISTON, Blocks.STICKY_PISTON))
.key('C', I.brassCasing())
.patternLine("PPB")
.patternLine("PCI")
.patternLine("PPB")),
FLYWHEEL = create(AllBlocks.FLYWHEEL::get).returns(1)
.recipe(b -> b.key('B', I.brass())
.key('C', I.brassCasing())
.patternLine(" BBB")
.patternLine("CB B")
.patternLine(" BBB")),
NIXIE_TUBE = create(AllBlocks.NIXIE_TUBE::get).returns(1)
.recipe(b -> b.key('E', I.electronTube())
.key('B', I.brassCasing())
.patternLine("EBE")),
MECHANICAL_ARM = create(AllBlocks.MECHANICAL_ARM::get).returns(1)
.recipe(b -> b.key('L', I.brassSheet())
.key('R', I.cog())
.key('I', I.circuit())
.key('A', I.andesite())
.key('C', I.brassCasing())
.patternLine("LLA")
.patternLine("L ")
.patternLine("LL ")
.patternLine(" I ")
.patternLine("RCR"))
;
public MechanicalCraftingRecipeGen(DataGenerator p_i48262_1_) {
super(p_i48262_1_);
}
GeneratedRecipeBuilder create(Supplier<IItemProvider> result) {
return new GeneratedRecipeBuilder(result);
}
class GeneratedRecipeBuilder {
private String suffix;
private Supplier<IItemProvider> result;
private int amount;
public GeneratedRecipeBuilder(Supplier<IItemProvider> result) {
this.suffix = "";
this.result = result;
this.amount = 1;
}
GeneratedRecipeBuilder returns(int amount) {
this.amount = amount;
return this;
}
GeneratedRecipeBuilder withSuffix(String suffix) {
this.suffix = suffix;
return this;
}
GeneratedRecipe recipe(UnaryOperator<MechanicalCraftingRecipeBuilder> builder) {
return register(consumer -> {
MechanicalCraftingRecipeBuilder b =
builder.apply(MechanicalCraftingRecipeBuilder.shapedRecipe(result.get(), amount));
ResourceLocation location = Create.asResource("mechanical_crafting/" + result.get()
.asItem()
.getRegistryName()
.getPath() + suffix);
b.build(consumer, location);
});
}
}
@Override
public String getName() {
return "Create's Mechanical Crafting Recipes";
}
}

View file

@ -12,15 +12,20 @@ import com.simibubi.create.Create;
import com.simibubi.create.content.AllSections;
import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.foundation.utility.Lang;
import com.tterrag.registrate.util.entry.BlockEntry;
import com.tterrag.registrate.util.entry.ItemProviderEntry;
import net.minecraft.advancements.criterion.ItemPredicate;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.data.CookingRecipeBuilder;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.ShapedRecipeBuilder;
import net.minecraft.data.ShapelessRecipeBuilder;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.CookingRecipeSerializer;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
@ -792,6 +797,41 @@ public class StandardRecipeGen extends CreateRecipeProvider {
;
private Marker COOKING = enterFolder("/");
GeneratedRecipe
DOUGH_TO_BREAD = create(() -> Items.BREAD).viaCooking(AllItems.DOUGH::get)
.inSmoker(),
LIMESAND = create(AllPaletteBlocks.LIMESTONE::get).viaCooking(AllPaletteBlocks.LIMESAND::get)
.inFurnace(),
SOUL_SAND = create(AllPaletteBlocks.SCORIA::get).viaCooking(() -> Blocks.SOUL_SAND)
.inFurnace(),
DIORITE = create(AllPaletteBlocks.DOLOMITE::get).viaCooking(() -> Blocks.DIORITE)
.inFurnace(),
GRANITE = create(AllPaletteBlocks.GABBRO::get).viaCooking(() -> Blocks.GRANITE)
.inFurnace(),
FRAMED_GLASS = recycleGlass(AllPaletteBlocks.FRAMED_GLASS),
TILED_GLASS = recycleGlass(AllPaletteBlocks.TILED_GLASS),
VERTICAL_FRAMED_GLASS = recycleGlass(AllPaletteBlocks.VERTICAL_FRAMED_GLASS),
HORIZONTAL_FRAMED_GLASS = recycleGlass(AllPaletteBlocks.HORIZONTAL_FRAMED_GLASS),
FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.FRAMED_GLASS_PANE),
TILED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.TILED_GLASS_PANE),
VERTICAL_FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.VERTICAL_FRAMED_GLASS_PANE),
HORIZONTAL_FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.HORIZONTAL_FRAMED_GLASS_PANE),
COPPER_ORE = blastMetalOre(AllItems.COPPER_INGOT::get, AllTags.forgeItemTag("ores/copper")),
ZINC_ORE = blastMetalOre(AllItems.ZINC_INGOT::get, AllTags.forgeItemTag("ores/zinc")),
CRUSHED_IRON = blastCrushedMetal(() -> Items.IRON_INGOT, AllItems.CRUSHED_IRON::get),
CRUSHED_GOLD = blastCrushedMetal(() -> Items.GOLD_INGOT, AllItems.CRUSHED_GOLD::get),
CRUSHED_COPPER = blastCrushedMetal(AllItems.COPPER_INGOT::get, AllItems.CRUSHED_COPPER::get),
CRUSHED_ZINC = blastCrushedMetal(AllItems.ZINC_INGOT::get, AllItems.CRUSHED_ZINC::get),
CRUSHED_BRASS = blastCrushedMetal(AllItems.BRASS_INGOT::get, AllItems.CRUSHED_BRASS::get)
;
/*
* End of recipe list
*/
@ -808,10 +848,43 @@ public class StandardRecipeGen extends CreateRecipeProvider {
return new Marker();
}
GeneratedRecipeBuilder create(Supplier<IItemProvider> result) {
return new GeneratedRecipeBuilder(currentFolder, result);
}
GeneratedRecipeBuilder create(ItemProviderEntry<? extends IItemProvider> result) {
return create(result::get);
}
GeneratedRecipe blastCrushedMetal(Supplier<? extends IItemProvider> result,
Supplier<? extends IItemProvider> ingredient) {
return create(result::get).withSuffix("_from_crushed").viaCooking(ingredient::get)
.rewardXP(.1f)
.inBlastFurnace();
}
GeneratedRecipe blastMetalOre(Supplier<? extends IItemProvider> result, Tag<Item> ore) {
return create(result::get).withSuffix("_from_ore").viaCookingTag(() -> ore)
.rewardXP(.1f)
.inBlastFurnace();
}
GeneratedRecipe recycleGlass(BlockEntry<? extends Block> ingredient) {
return create(() -> Blocks.GLASS).withSuffix("_from_" + ingredient.getId()
.getPath())
.viaCooking(ingredient::get)
.forDuration(50)
.inFurnace();
}
GeneratedRecipe recycleGlassPane(BlockEntry<? extends Block> ingredient) {
return create(() -> Blocks.GLASS_PANE).withSuffix("_from_" + ingredient.getId()
.getPath())
.viaCooking(ingredient::get)
.forDuration(50)
.inFurnace();
}
GeneratedRecipe metalCompacting(List<ItemProviderEntry<? extends IItemProvider>> variants,
List<Supplier<Tag<Item>>> ingredients) {
GeneratedRecipe result = null;
@ -848,19 +921,15 @@ public class StandardRecipeGen extends CreateRecipeProvider {
return result;
}
GeneratedRecipeBuilder create(Supplier<IItemProvider> result) {
return new GeneratedRecipeBuilder(currentFolder, result);
}
class GeneratedRecipeBuilder {
private String path;
private String suffix;
private Supplier<IItemProvider> result;
private Supplier<? extends IItemProvider> result;
private Supplier<ItemPredicate> unlockedBy;
private int amount;
public GeneratedRecipeBuilder(String path, Supplier<IItemProvider> result) {
public GeneratedRecipeBuilder(String path, Supplier<? extends IItemProvider> result) {
this.path = path;
this.suffix = "";
this.result = result;
@ -872,7 +941,7 @@ public class StandardRecipeGen extends CreateRecipeProvider {
return this;
}
GeneratedRecipeBuilder unlockedBy(Supplier<IItemProvider> item) {
GeneratedRecipeBuilder unlockedBy(Supplier<? extends IItemProvider> item) {
this.unlockedBy = () -> ItemPredicate.Builder.create()
.item(item.get())
.build();
@ -909,12 +978,99 @@ public class StandardRecipeGen extends CreateRecipeProvider {
});
}
private ResourceLocation createSimpleLocation(String recipeType) {
return Create.asResource(recipeType + "/" + result.get()
.asItem()
.getRegistryName()
.getPath() + suffix);
}
private ResourceLocation createLocation(String recipeType) {
return Create.asResource(recipeType + "/" + path + "/" + result.get()
.asItem()
.getRegistryName()
.getPath() + suffix);
}
GeneratedCookingRecipeBuilder viaCooking(Supplier<? extends IItemProvider> item) {
return unlockedBy(item).viaCookingIngredient(() -> Ingredient.fromItems(item.get()));
}
GeneratedCookingRecipeBuilder viaCookingTag(Supplier<Tag<Item>> tag) {
return unlockedByTag(tag).viaCookingIngredient(() -> Ingredient.fromTag(tag.get()));
}
GeneratedCookingRecipeBuilder viaCookingIngredient(Supplier<Ingredient> ingredient) {
return new GeneratedCookingRecipeBuilder(ingredient);
}
class GeneratedCookingRecipeBuilder {
private Supplier<Ingredient> ingredient;
private float exp;
private int cookingTime;
private final CookingRecipeSerializer<?> FURNACE = IRecipeSerializer.SMELTING,
SMOKER = IRecipeSerializer.SMOKING, BLAST = IRecipeSerializer.BLASTING,
CAMPFIRE = IRecipeSerializer.CAMPFIRE_COOKING;
GeneratedCookingRecipeBuilder(Supplier<Ingredient> ingredient) {
this.ingredient = ingredient;
cookingTime = 200;
exp = 0;
}
GeneratedCookingRecipeBuilder forDuration(int duration) {
cookingTime = duration;
return this;
}
GeneratedCookingRecipeBuilder rewardXP(float xp) {
exp = xp;
return this;
}
GeneratedRecipe inFurnace() {
return inFurnace(b -> b);
}
GeneratedRecipe inFurnace(UnaryOperator<CookingRecipeBuilder> builder) {
return create(FURNACE, builder, 1);
}
GeneratedRecipe inSmoker() {
return inSmoker(b -> b);
}
GeneratedRecipe inSmoker(UnaryOperator<CookingRecipeBuilder> builder) {
create(FURNACE, builder, 1);
create(CAMPFIRE, builder, 3);
return create(SMOKER, builder, .5f);
}
GeneratedRecipe inBlastFurnace() {
return inBlastFurnace(b -> b);
}
GeneratedRecipe inBlastFurnace(UnaryOperator<CookingRecipeBuilder> builder) {
create(FURNACE, builder, 1);
return create(BLAST, builder, .5f);
}
private GeneratedRecipe create(CookingRecipeSerializer<?> serializer,
UnaryOperator<CookingRecipeBuilder> builder, float cookingTimeModifier) {
return register(consumer -> {
CookingRecipeBuilder b = builder.apply(CookingRecipeBuilder.cookingRecipe(ingredient.get(),
result.get(), exp, (int) (cookingTime * cookingTimeModifier), serializer));
if (unlockedBy != null)
b.addCriterion("has_item", hasItem(unlockedBy.get()));
b.build(consumer, createSimpleLocation(serializer.getRegistryName()
.getPath()));
});
}
}
}
@Override

View file

@ -7,7 +7,7 @@
"7": "create:block/gearbox",
"8": "block/polished_andesite",
"9": "create:block/andesite_bricks",
"particle": "texture"
"particle": "#5"
},
"elements": [
{

View file

@ -1,28 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" PPP ",
"PSBSP",
"PBCBP",
"PSBSP",
" PPP "
],
"key": {
"P": {
"item": "create:andesite_alloy"
},
"S": {
"tag": "forge:rods/wooden"
},
"C": {
"item": "create:andesite_casing"
},
"B": {
"tag": "forge:stone"
}
},
"result": {
"item": "create:crushing_wheel",
"count": 2
}
}

View file

@ -1,28 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" L ",
" R ",
"SSS",
"SSS",
" H "
],
"key": {
"L": {
"tag": "forge:ingots/brass"
},
"R": {
"item": "create:cogwheel"
},
"S": {
"tag": "forge:rods/wooden"
},
"H": {
"item": "create:brass_hand"
}
},
"result": {
"item": "create:extendo_grip",
"count": 1
}
}

View file

@ -1,28 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" PPP ",
"PSBSP",
"PBCBP",
"PSBSP",
" PPP "
],
"key": {
"P": {
"tag": "forge:plates/brass"
},
"S": {
"tag": "forge:rods/wooden"
},
"C": {
"item": "create:brass_casing"
},
"B": {
"tag": "forge:ingots/brass"
}
},
"result": {
"item": "create:flywheel",
"count": 1
}
}

View file

@ -1,29 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"PPB",
"DCA",
"PPB"
],
"key": {
"P": {
"tag": "forge:plates/brass"
},
"D": {
"tag": "forge:plates/copper"
},
"A": {
"item": "minecraft:piston"
},
"C": {
"item": "create:brass_casing"
},
"B": {
"tag": "forge:ingots/brass"
}
},
"result": {
"item": "create:furnace_engine",
"count": 1
}
}

View file

@ -1,27 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
" L ",
"RRR",
" C ",
"NNN"
],
"key": {
"L": {
"item": "create:lapis_sheet"
},
"R": {
"tag": "forge:dusts/redstone"
},
"C": {
"tag": "forge:plates/iron"
},
"N": {
"tag": "forge:nuggets/gold"
}
},
"result": {
"item": "create:integrated_circuit",
"count": 1
}
}

View file

@ -1,31 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"LLA",
"L ",
"LL ",
" I ",
"RCR"
],
"key": {
"L": {
"tag": "forge:plates/brass"
},
"R": {
"item": "create:cogwheel"
},
"A": {
"item": "create:andesite_alloy"
},
"C": {
"item": "create:brass_casing"
},
"I": {
"item": "create:integrated_circuit"
}
},
"result": {
"item": "create:mechanical_arm",
"count": 1
}
}

View file

@ -1,18 +0,0 @@
{
"type": "create:mechanical_crafting",
"pattern": [
"EBE"
],
"key": {
"B": {
"item": "create:brass_casing"
},
"E": {
"item": "create:electron_tube"
}
},
"result": {
"item": "create:nixie_tube",
"count": 1
}
}