Recipes in Recipe Recipes

- Added the Clockwork Element
- Added the Sequenced Assembly recipe type (needs JEI)
- Added cascaded datagen for assembly sequence and each of its available processing types
- Temporary test recipe
- Added support for Sequenced Assembly to Press, Deployer, Spout and Saw
- Removed Integrated Circuits
- Removed Lapis sheets
This commit is contained in:
simibubi 2021-06-28 04:00:24 +02:00
parent d0be7428aa
commit 2cfb84995f
54 changed files with 1091 additions and 215 deletions

View file

@ -409,21 +409,21 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
e6152504e06696dd5e67fc7711c8a35a0e89adc1 assets/create/lang/en_ud.json
4d7ec7006116a592c33b7b7af0993928c85d3943 assets/create/lang/en_us.json
584ba74d18b1bdd51f943c2ef90ceac25df60b4b assets/create/lang/unfinished/de_de.json
18a8e656082e0f34f313d551e32ed57a8f42f5ba assets/create/lang/unfinished/es_es.json
88da824ad125a1a6914b1e945d17485f97ea1543 assets/create/lang/unfinished/es_mx.json
790f6fafb21a2290adbe6da075c9894b4cd9ce9e assets/create/lang/unfinished/fr_fr.json
b3801b0e37c3a93014d0b209b3c20d0eb4982550 assets/create/lang/unfinished/it_it.json
190bf21a8e82f264db0e1aa32f0516e43725e725 assets/create/lang/unfinished/ja_jp.json
bb68c5668957aeb7feff85c64adb7ee1beecd076 assets/create/lang/unfinished/ko_kr.json
4857d98dd044d09780c1dfad653ba62cb1db7c1e assets/create/lang/unfinished/nl_nl.json
e96765630f6aa460142ac9d59c0ded91e2bb3264 assets/create/lang/unfinished/pl_pl.json
a758699740d59f90dab2858f767d8c170cb1b2c8 assets/create/lang/unfinished/pt_br.json
a13cf78eaae1cd494dd350b46753e833e5a85f50 assets/create/lang/unfinished/ru_ru.json
77bdd9d870abb3933eec633c454ff2b5b920802d assets/create/lang/unfinished/zh_cn.json
ea1f932652bd254a592af703801dd3501407277c assets/create/lang/unfinished/zh_tw.json
2626f0a81bf46ad7942d84d0a94ff38c38cae7ec assets/create/lang/en_ud.json
e2b7f06324073f1a6430698d12b759537839cb8a assets/create/lang/en_us.json
8ecb996989b291467854a8eb24a32f79e9bd52d4 assets/create/lang/unfinished/de_de.json
4d8bd237b0281fa91fc3618870374c41ea1a1a8d assets/create/lang/unfinished/es_es.json
c8215e68e7b41cf8855c3578db086575199f7204 assets/create/lang/unfinished/es_mx.json
38ab225118de9c3ede262e422d6a6975e7f7a21d assets/create/lang/unfinished/fr_fr.json
41c15915d496290757e9d35ef822f658b0eb0361 assets/create/lang/unfinished/it_it.json
45f277289f0dc7a36649fe2b6c58b8d8e1ee0f80 assets/create/lang/unfinished/ja_jp.json
446293adc386e71fa586307edaefde3748940be8 assets/create/lang/unfinished/ko_kr.json
50571ba0179b9651590a396b0dd16f96530d9831 assets/create/lang/unfinished/nl_nl.json
e7d28deed74d79691bbfbd6f3517945b94e90fc7 assets/create/lang/unfinished/pl_pl.json
dbe11c5ee7978249d2dbccb34a84713f991f3c95 assets/create/lang/unfinished/pt_br.json
dd9c142126fab8dd08d13a7076911a7c9822b8c1 assets/create/lang/unfinished/ru_ru.json
3c5d4c3d9bc15a77a7f2451b2b3647e295e94454 assets/create/lang/unfinished/zh_cn.json
acc2c8397c7da902634dc4c732c82a260eed46f5 assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1260,6 +1260,7 @@ a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets/create/models/item/chiseled_scor
fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets/create/models/item/chute.json
6680a68526576ded5dac2aa3bc9fb9de3e744146 assets/create/models/item/cinder_flour.json
c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bearing.json
f738744ce542e8f38eb043d609bc01bf0043837b assets/create/models/item/clockwork_element.json
0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json
dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json
7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json
@ -1422,12 +1423,11 @@ f0d5af58e23e2705b3ef675c30bdf85ed9567c57 assets/create/models/item/honey_bucket.
955e8accadb47f9b360e5fd48cd959c507b00f2d assets/create/models/item/horizontal_framed_glass.json
f0e3b2b8a553b6e61746c922c27302dabfff71b6 assets/create/models/item/horizontal_framed_glass_pane.json
ff92f6a9dfb73a6ee1eaaed3279c89390ff04a80 assets/create/models/item/hose_pulley.json
d9f222e963f8f8910ca9dbc3c31842ef149f7a1f assets/create/models/item/integrated_circuit.json
93bd17bd2beb5db7f750151bc2c21256d70de5a0 assets/create/models/item/incomplete_clockwork_element.json
9d605ce0da83a73b535bce45c107e604364e2b20 assets/create/models/item/iron_sheet.json
52e435014cb03e93411666c4799ebff206e55fc9 assets/create/models/item/item_drain.json
83fa8699318e51f838b483b40b3e897c34ed53d1 assets/create/models/item/jungle_window.json
766323f6026c3505a75db2dee2996d342370d9c2 assets/create/models/item/jungle_window_pane.json
fe89522b2bd9b4393b8afa2a97f6db4277a8a4b4 assets/create/models/item/lapis_sheet.json
bcaaf60d9a853cce90169dabcb36d29a3ce19e18 assets/create/models/item/large_cogwheel.json
281e2b055c6eb6994ca306c8957fc80a98fb5473 assets/create/models/item/layered_andesite.json
7afeb6170b37cb464ea91be18928d21970d556d3 assets/create/models/item/layered_dark_scoria.json
@ -1700,8 +1700,8 @@ ea0f8acb7c3692b569269e62927725d968a65251 data/create/advancements/hose_pulley.js
9f642faf92b75a28c564e90be8448b9a4328af5e data/create/advancements/infinite_chocolate.json
a933fa5e7217e2ffe123ae035cfbc9210ba69fd5 data/create/advancements/infinite_lava.json
a8ab0e4ffba358d23f9efaa9f51245b6d490a8be data/create/advancements/infinite_water.json
9beb622c79e9f5ce2397c22222cac0faf272f388 data/create/advancements/integrated_circuit.json
316bed3d8985d0a371200967d7edd2936f1b9f94 data/create/advancements/integrated_circuit_eob.json
5937ff2cb0d480c15fe093304c8533afc9934378 data/create/advancements/integrated_circuit.json
acf44f38768c711ddd34067518e2b52104d4b97d data/create/advancements/integrated_circuit_eob.json
4d7cb129877d6cd68fda66159818e47ca44db078 data/create/advancements/item_drain.json
b61d958815f1c2530c11c88c9081d5c794d7f807 data/create/advancements/its_alive.json
9d68fed495a37fc78184e43e432c3181da84d19c data/create/advancements/lava_wheel.json
@ -2982,7 +2982,7 @@ af84b939ced1c0254a27469f857f571afbadc4f6 data/create/recipes/crafting/kinetics/r
0827e86e4b5f9d7023ccc19922bcbbaefd5b42d8 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json
5a10019d23726940152e26af3239d55d16bc7880 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json
af525e135eb927b64462120d201ecae7a7ec61ed data/create/recipes/crafting/kinetics/rope_pulley.json
e9f1597d40f62c2247b319303f375f0da271346f data/create/recipes/crafting/kinetics/rotation_speed_controller.json
cd7f75ef1162578432b49cfcf635f13a03ad3073 data/create/recipes/crafting/kinetics/rotation_speed_controller.json
d0d7fb94621f6f02fa3137666f20e677022d9d5b data/create/recipes/crafting/kinetics/sail_frame.json
66922e18791c87fadb7629cdf32d3dd2f50ccd13 data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json
a17db27e61baa45f8a6ecb46a6d2a5a464704f8b data/create/recipes/crafting/kinetics/sequenced_gearshift.json
@ -3326,7 +3326,6 @@ c2e15ac0c9109bad3face6d13efc32d7116b4c25 data/create/recipes/limestone_pillar_fr
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
98f877bf8f3f8a686fc6cf7479a0fba5744248ce data/create/recipes/milling/allium.json
8c7e1cbc87c7ca7df2bf949957e89422fef8ad94 data/create/recipes/milling/aluminum_ore.json
bcff4d30ae09a0729bce8b2dbde4ddd6719a998b data/create/recipes/milling/andesite.json
@ -3529,7 +3528,6 @@ eae06580a0a5f486cde35426716d50fcb3ba5bb3 data/create/recipes/polished_weathered_
4a51cb6066e87613c13bdc6d3427929080ef1def data/create/recipes/pressing/copper_ingot.json
0fa8386648398724f6fd373178b706c6b11ddefc data/create/recipes/pressing/gold_ingot.json
a104ef6eb8872a40ea7b2ef67ae54cec943162f0 data/create/recipes/pressing/iron_ingot.json
7f9e72ec02a9926656744a95066f8aa304514565 data/create/recipes/pressing/lapis_block.json
b472136cdc8e87fa65a812a359542bdc484f27ec data/create/recipes/pressing/path.json
bd57ccc8eb4357b4a5af021db7b806b514cd2558 data/create/recipes/pressing/sugar_cane.json
141173778757d87e7f2e9466bdab6ff1263c8e98 data/create/recipes/sandpaper_polishing/rose_quartz.json
@ -3550,6 +3548,7 @@ 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
cc2ef00aa42ad8fb2d5533b318e238e0c977a718 data/create/recipes/sequenced_assembly/test.json
4e817b521623966fa24186731a70f0e14c03168e data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json
ae90f50589bc06b44765ac8cbb9fbdc2b58fdb32 data/create/recipes/smelting/brass_ingot_from_crushed.json
64cbf425effba00ff2e31d95cffc2be2e0191932 data/create/recipes/smelting/bread.json
@ -3723,12 +3722,11 @@ cc82188fe8d986f4457301ed4f75ae833d263601 data/forge/tags/items/nuggets/brass.jso
4b700ee8aa748c2ec70c29ef1589844879c0deae data/forge/tags/items/ores.json
4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data/forge/tags/items/ores/copper.json
d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/items/ores/zinc.json
0ecf8a5392faf244b8cab3c7ddd45d5b34954050 data/forge/tags/items/plates.json
5d5ec04a61ff2b1ad19210e2859a9c96cc246ef8 data/forge/tags/items/plates.json
39f0d70ec10597e85df7c4783bbc5e0e4a5ffb80 data/forge/tags/items/plates/brass.json
c3dab5fe379bc1b7b10d4a0ba7009eee1b75a27c data/forge/tags/items/plates/copper.json
fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json
04d947ed7a5066f3cfe75a8dc564fe2dca8a9c93 data/forge/tags/items/plates/iron.json
4d598b23d07b6a0bfd89da11a30ce119a8660632 data/forge/tags/items/plates/lapis_lazuli.json
508730d3822c54d355329bf6a33d58071653afad data/forge/tags/items/storage_blocks.json
ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json
f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/copper.json

View file

@ -436,6 +436,7 @@
"item.create.chocolate_glazed_berries": "s\u01DD\u0131\u0279\u0279\u01DD\u15FA p\u01DDz\u0250\u05DF\u2141 \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186",
"item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186",
"item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186",
"item.create.clockwork_element": "\u0287u\u01DD\u026F\u01DD\u05DF\u018E \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186",
"item.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186",
"item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186",
"item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186",
@ -470,9 +471,8 @@
"item.create.handheld_worldshaper": "\u0279\u01DDd\u0250\u0265sp\u05DF\u0279oM \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186",
"item.create.honey_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u028E\u01DDuoH",
"item.create.honeyed_apple": "\u01DD\u05DFdd\u2C6F p\u01DD\u028E\u01DDuoH",
"item.create.integrated_circuit": "\u0287\u0131n\u0254\u0279\u0131\u0186 p\u01DD\u0287\u0250\u0279b\u01DD\u0287uI",
"item.create.incomplete_clockwork_element": "\u0287u\u01DD\u026F\u01DD\u05DF\u018E \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186 \u01DD\u0287\u01DD\u05DFd\u026Fo\u0254uI",
"item.create.iron_sheet": "\u0287\u01DD\u01DD\u0265S uo\u0279I",
"item.create.lapis_sheet": "\u0287\u01DD\u01DD\u0265S s\u0131d\u0250\uA780",
"item.create.linked_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 p\u01DD\u029Eu\u0131\uA780",
"item.create.minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",
"item.create.minecart_coupling": "bu\u0131\u05DFdno\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",

View file

@ -442,6 +442,7 @@
"item.create.chocolate_glazed_berries": "Chocolate Glazed Berries",
"item.create.chromatic_compound": "Chromatic Compound",
"item.create.cinder_flour": "Cinder Flour",
"item.create.clockwork_element": "Clockwork Element",
"item.create.copper_backtank": "Copper Backtank",
"item.create.copper_ingot": "Copper Ingot",
"item.create.copper_nugget": "Copper Nugget",
@ -476,9 +477,8 @@
"item.create.handheld_worldshaper": "Creative Worldshaper",
"item.create.honey_bucket": "Honey Bucket",
"item.create.honeyed_apple": "Honeyed Apple",
"item.create.integrated_circuit": "Integrated Circuit",
"item.create.incomplete_clockwork_element": "Incomplete Clockwork Element",
"item.create.iron_sheet": "Iron Sheet",
"item.create.lapis_sheet": "Lapis Sheet",
"item.create.linked_controller": "Linked Controller",
"item.create.minecart_contraption": "Minecart Contraption",
"item.create.minecart_coupling": "Minecart Coupling",
@ -712,6 +712,12 @@
"create.recipe.mystery_conversion": "Mysterious Conversion",
"create.recipe.spout_filling": "Filling by Spout",
"create.recipe.draining": "Item Draining",
"create.recipe.sequenced_assembly": "Sequenced Assembly",
"create.recipe.assembly.next": "Next: %1$s",
"create.recipe.assembly.pressing": "Process in Press",
"create.recipe.assembly.spout_filling_fluid": "Spout %1$s",
"create.recipe.assembly.deploying_item": "Deploy %1$s",
"create.recipe.assembly.cutting": "Cut with Saw",
"create.recipe.processing.chance": "%1$s%% Chance",
"create.recipe.heat_requirement.none": "No Heating Required",
"create.recipe.heat_requirement.heated": "Heated",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1073",
"_": "Missing Localizations: 1081",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "Schokoladenglasierte Beeren",
"item.create.chromatic_compound": "Chromatische Verbindung",
"item.create.cinder_flour": "Aschenmehl",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Kupferbarren",
"item.create.copper_nugget": "Kupferklumpen",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Geländeformer",
"item.create.honey_bucket": "Honigeimer",
"item.create.honeyed_apple": "Honigapfel",
"item.create.integrated_circuit": "Integrierter Schaltkreis",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Eisenblech",
"item.create.lapis_sheet": "Lapislazuliblech",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Loren Vorrichtung",
"item.create.minecart_coupling": "Lorenkupplung",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Mysteriöse Konvertierung",
"create.recipe.spout_filling": "Befüllung per Ausguss",
"create.recipe.draining": "Gegenstandsablassung",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "Chance: %1$s%%",
"create.recipe.heat_requirement.none": "Keine Hitze benötigt",
"create.recipe.heat_requirement.heated": "Wenig Hitze benötigt",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 834",
"_": "Missing Localizations: 842",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "Compuesto cromático",
"item.create.cinder_flour": "Harina de ceniza",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Lingote de cobre",
"item.create.copper_nugget": "Pepita de cobre",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Worldshaper",
"item.create.honey_bucket": "Cubo de miel",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "Chip de circuito integrado",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Lámina de hierro",
"item.create.lapis_sheet": "Lámina de lapislázuli",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Artilugio de vagoneta",
"item.create.minecart_coupling": "Acoplamiento de vagoneta",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Conversión misteriosa",
"create.recipe.spout_filling": "Llenar por el pico",
"create.recipe.draining": "Drenador de elementos",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% Chance",
"create.recipe.heat_requirement.none": "No es necesario calentar",
"create.recipe.heat_requirement.heated": "Calentado",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1440",
"_": "Missing Localizations: 1448",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "Compuesto Cromático",
"item.create.cinder_flour": "Ceniza Molida",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Lingote de Cobre",
"item.create.copper_nugget": "Pepita de Cobre",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Pistola de Manipulación de Mundo",
"item.create.honey_bucket": "Cubeta de Miel",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "Circuito Integrado",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Lámina de Hierro",
"item.create.lapis_sheet": "Lámina de Lapislázuli",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Artefacto de Vagón",
"item.create.minecart_coupling": "Acoplamiento de Vagonetas",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion",
"create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout",
"create.recipe.draining": "UNLOCALIZED: Item Draining",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance",
"create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required",
"create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1325",
"_": "Missing Localizations: 1333",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "Composé chromatique",
"item.create.cinder_flour": "Farine de braise",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Lingot de cuivre",
"item.create.copper_nugget": "Pépite de cuivre",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Térraformeur portable",
"item.create.honey_bucket": "Seau de miel",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "Circuit intégré",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Plaque de Fer",
"item.create.lapis_sheet": "Feuille de lapis",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Engin de wagonnet",
"item.create.minecart_coupling": "Lien pour wagonnet",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Métamorphose chromatique",
"create.recipe.spout_filling": "Remplissage par un bec verseur",
"create.recipe.draining": "UNLOCALIZED: Item Draining",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% de chance",
"create.recipe.heat_requirement.none": "Pas de chauffage requis",
"create.recipe.heat_requirement.heated": "Chauffé",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 851",
"_": "Missing Localizations: 859",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "Composto cromatico",
"item.create.cinder_flour": "Cenere farinosa",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Lingotto di rame",
"item.create.copper_nugget": "Pepita di rame",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Plasmatore del mondo portatile",
"item.create.honey_bucket": "Secchio di miele",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "Circuito integrato",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Lamiera di ferro",
"item.create.lapis_sheet": "Lamiera di lapislazzuli",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Contrazione per carrello da miniera",
"item.create.minecart_coupling": "Aggancio per carrelli da miniera",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Metamorfosi cromatica",
"create.recipe.spout_filling": "Riempimento da spruzzo",
"create.recipe.draining": "Drenaggio di oggetti",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% di probabilità",
"create.recipe.heat_requirement.none": "Nessun riscaldamento",
"create.recipe.heat_requirement.heated": "Riscaldamento",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 217",
"_": "Missing Localizations: 225",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー",
"item.create.chromatic_compound": "色彩の化合物",
"item.create.cinder_flour": "ネザーラックの粉",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "銅インゴット",
"item.create.copper_nugget": "銅塊",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "携帯型ワールドシェーパー",
"item.create.honey_bucket": "ハチミツ入りバケツ",
"item.create.honeyed_apple": "リンゴのハチミツかけ",
"item.create.integrated_circuit": "集積回路",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "鉄板",
"item.create.lapis_sheet": "ラピスラズリ板",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "からくり付きトロッコ",
"item.create.minecart_coupling": "トロッコ連結器",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "神秘の変転",
"create.recipe.spout_filling": "アイテム注液口による注入",
"create.recipe.draining": "アイテムから排液",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%%チャンス",
"create.recipe.heat_requirement.none": "加熱不要",
"create.recipe.heat_requirement.heated": "加熱が必要",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 904",
"_": "Missing Localizations: 912",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "색채 혼합물",
"item.create.cinder_flour": "잿가루",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "구리 주괴",
"item.create.copper_nugget": "구리 조각",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "휴대용 세계편집기",
"item.create.honey_bucket": "꿀 양동이",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "집적 회로",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "철 판",
"item.create.lapis_sheet": "청금석 판",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "광산 수레 장치",
"item.create.minecart_coupling": "광산 수레 커플링",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "?",
"create.recipe.spout_filling": "채우기",
"create.recipe.draining": "배수",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% 확률",
"create.recipe.heat_requirement.none": "열이 필요하지 않음",
"create.recipe.heat_requirement.heated": "고온으로 가열됨",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1708",
"_": "Missing Localizations: 1714",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound",
"item.create.cinder_flour": "UNLOCALIZED: Cinder Flour",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Koperstaaf",
"item.create.copper_nugget": "Koper klompje",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper",
"item.create.honey_bucket": "UNLOCALIZED: Honey Bucket",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "IJzeren Platen",
"item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion",
"create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout",
"create.recipe.draining": "UNLOCALIZED: Item Draining",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% Kans",
"create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required",
"create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 193",
"_": "Missing Localizations: 201",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "Jagody w czekoladzie",
"item.create.chromatic_compound": "Związek chromatyczny",
"item.create.cinder_flour": "Rozżarzona mąka",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "Miedziany zbiornik w plecaku",
"item.create.copper_ingot": "Sztabka miedzi",
"item.create.copper_nugget": "Bryłka miedzi",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Ręczny kształter",
"item.create.honey_bucket": "Wiadro miodu",
"item.create.honeyed_apple": "Jabłko w miodzie",
"item.create.integrated_circuit": "Układ scalony",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Arkusz żelaza",
"item.create.lapis_sheet": "Arkusz lazurytu",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Maszyna w wagoniku",
"item.create.minecart_coupling": "Łącznik wagoników",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Tajemnicza przemiana",
"create.recipe.spout_filling": "Wypełnianie",
"create.recipe.draining": "Osuszanie",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% szans",
"create.recipe.heat_requirement.none": "Nie wymaga podgrzewania",
"create.recipe.heat_requirement.heated": "Podrzewane",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1749",
"_": "Missing Localizations: 1755",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries",
"item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound",
"item.create.cinder_flour": "UNLOCALIZED: Cinder Flour",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "UNLOCALIZED: Copper Ingot",
"item.create.copper_nugget": "UNLOCALIZED: Copper Nugget",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper",
"item.create.honey_bucket": "UNLOCALIZED: Honey Bucket",
"item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple",
"item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Placas de Ferro",
"item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion",
"create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout",
"create.recipe.draining": "UNLOCALIZED: Item Draining",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% de chance",
"create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required",
"create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 750",
"_": "Missing Localizations: 758",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури",
"item.create.chromatic_compound": "Хроматический компаунд",
"item.create.cinder_flour": "Незераковая пыль",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "Медный слиток",
"item.create.copper_nugget": "Кусочек меди",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "Ручной редактор мира",
"item.create.honey_bucket": "Ведро мёда",
"item.create.honeyed_apple": "Яблоко в меду",
"item.create.integrated_circuit": "Интегральная схема",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "Железный лист",
"item.create.lapis_sheet": "Лазуритовый лист",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "Вагонеточная штуковина",
"item.create.minecart_coupling": "Связыватель вагонеток",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "Хроматический метаморфоз",
"create.recipe.spout_filling": "Заполнение дозатором",
"create.recipe.draining": "Осушение предметов",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%% шанса",
"create.recipe.heat_requirement.none": "Не требует нагрева",
"create.recipe.heat_requirement.heated": "Нагрето",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 234",
"_": "Missing Localizations: 242",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "巧克力包层浆果",
"item.create.chromatic_compound": "异彩化合物",
"item.create.cinder_flour": "下界面粉",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "铜锭",
"item.create.copper_nugget": "铜粒",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "手持式环境塑形器",
"item.create.honey_bucket": "蜂蜜桶",
"item.create.honeyed_apple": "蜜渍苹果",
"item.create.integrated_circuit": "集成电路板",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "铁板",
"item.create.lapis_sheet": "青金石板",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "装配过的矿车",
"item.create.minecart_coupling": "矿车连轴器",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "神秘转化",
"create.recipe.spout_filling": "注液",
"create.recipe.draining": "分液",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%%概率",
"create.recipe.heat_requirement.none": "无需加热",
"create.recipe.heat_requirement.heated": "加热",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 229",
"_": "Missing Localizations: 237",
"_": "->------------------------] Game Elements [------------------------<-",
@ -443,6 +443,7 @@
"item.create.chocolate_glazed_berries": "巧克力甜莓",
"item.create.chromatic_compound": "異彩化合物",
"item.create.cinder_flour": "地獄麵粉",
"item.create.clockwork_element": "UNLOCALIZED: Clockwork Element",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_ingot": "銅錠",
"item.create.copper_nugget": "銅粒",
@ -477,9 +478,8 @@
"item.create.handheld_worldshaper": "地形雕塑器",
"item.create.honey_bucket": "蜂蜜桶",
"item.create.honeyed_apple": "蜂蜜蘋果",
"item.create.integrated_circuit": "IC板",
"item.create.incomplete_clockwork_element": "UNLOCALIZED: Incomplete Clockwork Element",
"item.create.iron_sheet": "鐵板",
"item.create.lapis_sheet": "青金石板",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.minecart_contraption": "裝修過的礦車",
"item.create.minecart_coupling": "礦車連結器",
@ -713,6 +713,12 @@
"create.recipe.mystery_conversion": "神秘轉化",
"create.recipe.spout_filling": "注液",
"create.recipe.draining": "分液",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.processing.chance": "%1$s%%概率",
"create.recipe.heat_requirement.none": "不需要加熱",
"create.recipe.heat_requirement.heated": "普通加熱",

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "create:item/lapis_sheet"
"layer0": "create:item/clockwork_element"
}
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "create:item/integrated_circuit"
"layer0": "create:item/incomplete_clockwork_element"
}
}

View file

@ -2,7 +2,7 @@
"parent": "create:crafter",
"display": {
"icon": {
"item": "create:integrated_circuit"
"item": "create:clockwork_element"
},
"title": {
"translate": "advancement.create.integrated_circuit"
@ -21,7 +21,7 @@
"conditions": {
"items": [
{
"item": "create:integrated_circuit"
"item": "create:clockwork_element"
}
]
}

View file

@ -21,7 +21,7 @@
"conditions": {
"items": [
{
"item": "create:integrated_circuit"
"item": "create:clockwork_element"
}
]
}

View file

@ -6,7 +6,7 @@
],
"key": {
"B": {
"item": "create:integrated_circuit"
"item": "create:clockwork_element"
},
"C": {
"item": "create:brass_casing"

View file

@ -1,25 +0,0 @@
{
"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

@ -1,13 +0,0 @@
{
"type": "create:pressing",
"ingredients": [
{
"item": "minecraft:lapis_block"
}
],
"results": [
{
"item": "create:lapis_sheet"
}
]
}

View file

@ -0,0 +1,123 @@
{
"type": "create:sequenced_assembly",
"ingredient": {
"tag": "forge:plates/gold"
},
"transitionalItem": {
"item": "create:incomplete_clockwork_element"
},
"sequence": [
{
"type": "create:deploying",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
},
{
"item": "create:cogwheel"
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
]
},
{
"type": "create:pressing",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
]
},
{
"type": "create:deploying",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
},
{
"item": "create:large_cogwheel"
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
]
},
{
"type": "create:filling",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
},
{
"fluid": "minecraft:water",
"nbt": {},
"amount": 100
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
]
},
{
"type": "create:deploying",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
},
{
"item": "create:shaft"
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
]
},
{
"type": "create:cutting",
"ingredients": [
{
"item": "create:incomplete_clockwork_element"
}
],
"results": [
{
"item": "create:incomplete_clockwork_element"
}
],
"processingTime": 100
}
],
"results": [
{
"item": "create:clockwork_element",
"chance": 10.0
},
{
"item": "create:golden_sheet",
"chance": 5.0
},
{
"item": "create:andesite_alloy",
"chance": 2.0
},
{
"item": "create:cogwheel"
}
],
"averageSteps": 20,
"maxSteps": 30
}

View file

@ -4,7 +4,6 @@
"create:copper_sheet",
"create:brass_sheet",
"create:iron_sheet",
"create:golden_sheet",
"create:lapis_sheet"
"create:golden_sheet"
]
}

View file

@ -1,6 +0,0 @@
{
"replace": false,
"values": [
"create:lapis_sheet"
]
}

View file

@ -79,8 +79,12 @@ public class AllItems {
CINDER_FLOUR = ingredient("cinder_flour"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"),
ROSE_QUARTZ = ingredient("rose_quartz"), POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"),
PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"),
CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube"),
INTEGRATED_CIRCUIT = ingredient("integrated_circuit");
CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube");
public static final ItemEntry<HiddenIngredientItem> INCOMPLETE_CLOCKWORK_ELEMENT =
hiddenIngredient("incomplete_clockwork_element");
public static final ItemEntry<Item> CLOCKWORK_ELEMENT = ingredient("clockwork_element");
public static final ItemEntry<HiddenIngredientItem> BLAZE_CAKE_BASE =
REGISTRATE.item("blaze_cake_base", HiddenIngredientItem::new)
@ -152,7 +156,6 @@ public class AllItems {
BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), PLATES.tag),
IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), PLATES.tag),
GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag, ItemTags.PIGLIN_LOVED),
LAPIS_SHEET = taggedIngredient("lapis_sheet", forgeItemTag("plates/lapis_lazuli"), PLATES.tag),
CRUSHED_IRON = taggedIngredient("crushed_iron_ore", CRUSHED_ORES.tag),
CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag, ItemTags.PIGLIN_LOVED),
@ -219,6 +222,24 @@ public class AllItems {
.model(AssetLookup.itemModelWithPartials())
.register();
public static final ItemEntry<MinecartContraptionItem> MINECART_CONTRAPTION =
REGISTRATE.item("minecart_contraption", MinecartContraptionItem::rideable)
.register();
public static final ItemEntry<MinecartContraptionItem> FURNACE_MINECART_CONTRAPTION =
REGISTRATE.item("furnace_minecart_contraption", MinecartContraptionItem::furnace)
.register();
public static final ItemEntry<MinecartContraptionItem> CHEST_MINECART_CONTRAPTION =
REGISTRATE.item("chest_minecart_contraption", MinecartContraptionItem::chest)
.register();
// Curiosities
static {
REGISTRATE.startSection(CURIOSITIES);
}
public static final ItemEntry<ExtendoGripItem> EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new)
.transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new))
.model(AssetLookup.itemModelWithPartials())
@ -251,39 +272,6 @@ public class AllItems {
.model(AssetLookup.itemModelWithPartials())
.register();
public static final ItemEntry<MinecartContraptionItem> MINECART_CONTRAPTION =
REGISTRATE.item("minecart_contraption", MinecartContraptionItem::rideable)
.register();
public static final ItemEntry<MinecartContraptionItem> FURNACE_MINECART_CONTRAPTION =
REGISTRATE.item("furnace_minecart_contraption", MinecartContraptionItem::furnace)
.register();
public static final ItemEntry<MinecartContraptionItem> CHEST_MINECART_CONTRAPTION =
REGISTRATE.item("chest_minecart_contraption", MinecartContraptionItem::chest)
.register();
// Logistics
static {
REGISTRATE.startSection(LOGISTICS);
}
public static final ItemEntry<FilterItem> FILTER = REGISTRATE.item("filter", FilterItem::regular)
.model(AssetLookup.existingItemModel())
.register();
public static final ItemEntry<FilterItem> ATTRIBUTE_FILTER =
REGISTRATE.item("attribute_filter", FilterItem::attribute)
.model(AssetLookup.existingItemModel())
.register();
// Curiosities
static {
REGISTRATE.startSection(CURIOSITIES);
}
public static final ItemEntry<? extends CopperArmorItem>
COPPER_BACKTANK =
@ -302,6 +290,21 @@ public class AllItems {
REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new)
.register();
// Logistics
static {
REGISTRATE.startSection(LOGISTICS);
}
public static final ItemEntry<FilterItem> FILTER = REGISTRATE.item("filter", FilterItem::regular)
.model(AssetLookup.existingItemModel())
.register();
public static final ItemEntry<FilterItem> ATTRIBUTE_FILTER =
REGISTRATE.item("attribute_filter", FilterItem::attribute)
.model(AssetLookup.existingItemModel())
.register();
// Schematics
static {
@ -328,7 +331,6 @@ public class AllItems {
.register();
}
@SuppressWarnings("unused")
private static ItemEntry<HiddenIngredientItem> hiddenIngredient(String name) {
return REGISTRATE.item(name, HiddenIngredientItem::new)
.register();

View file

@ -14,6 +14,7 @@ import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe;
import com.simibubi.create.content.contraptions.components.press.PressingRecipe;
import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe;
import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipeSerializer;
import com.simibubi.create.content.contraptions.processing.BasinRecipe;
import com.simibubi.create.content.contraptions.processing.EmptyingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
@ -48,6 +49,7 @@ public enum AllRecipeTypes {
DEPLOYING(processingSerializer(DeployerApplicationRecipe::new)),
FILLING(processingSerializer(FillingRecipe::new)),
EMPTYING(processingSerializer(EmptyingRecipe::new)),
SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new),
;

View file

@ -26,6 +26,7 @@ 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.SequencedAssemblyRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.worldgen.AllWorldFeatures;
@ -132,6 +133,7 @@ public class Create {
gen.addProvider(AllSoundEvents.provider(gen));
gen.addProvider(new StandardRecipeGen(gen));
gen.addProvider(new MechanicalCraftingRecipeGen(gen));
gen.addProvider(new SequencedAssemblyRecipeGen(gen));
ProcessingRecipeGen.registerAll(gen);
}

View file

@ -45,11 +45,11 @@ public class DeployingCategory extends CreateRecipeCategory<DeployerApplicationR
@Override
public void setRecipe(IRecipeLayout recipeLayout, DeployerApplicationRecipe recipe, IIngredients ingredients) {
IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
itemStacks.init(0, true, 50, 4);
itemStacks.set(0, Arrays.asList(recipe.getRequiredHeldItem()
itemStacks.init(0, true, 26, 50);
itemStacks.set(0, Arrays.asList(recipe.getProcessedItem()
.getMatchingStacks()));
itemStacks.init(1, true, 26, 50);
itemStacks.set(1, Arrays.asList(recipe.getProcessedItem()
itemStacks.init(1, true, 50, 4);
itemStacks.set(1, Arrays.asList(recipe.getRequiredHeldItem()
.getMatchingStacks()));
itemStacks.init(2, false, 131, 50);
itemStacks.set(2, recipe.getRecipeOutput());

View file

@ -9,10 +9,17 @@ import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.wrapper.RecipeWrapper;
public class DeployerApplicationRecipe extends ProcessingRecipe<RecipeWrapper> {
@ -42,25 +49,40 @@ public class DeployerApplicationRecipe extends ProcessingRecipe<RecipeWrapper> {
public Ingredient getRequiredHeldItem() {
if (ingredients.isEmpty())
throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no tool!");
return ingredients.get(0);
return ingredients.get(1);
}
public Ingredient getProcessedItem() {
if (ingredients.size() < 2)
throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no ingredient!");
return ingredients.get(1);
return ingredients.get(0);
}
public static List<DeployerApplicationRecipe> convert(List<IRecipe<?>> sandpaperRecipes) {
return sandpaperRecipes.stream()
.map(r -> new ProcessingRecipeBuilder<>(DeployerApplicationRecipe::new, Create.asResource(r.getId()
.getPath() + "_using_deployer"))
.getPath() + "_using_deployer")).require(r.getIngredients()
.get(0))
.require(Ingredient.fromItems(AllItems.SAND_PAPER.get(), AllItems.RED_SAND_PAPER.get()))
.require(r.getIngredients()
.get(0))
.output(r.getRecipeOutput())
.build())
.collect(Collectors.toList());
}
@Override
public boolean supportsAssembly() {
return true;
}
@Override
@OnlyIn(Dist.CLIENT)
public ITextComponent getDescriptionForAssembly() {
ItemStack[] matchingStacks = ingredients.get(1)
.getMatchingStacks();
if (matchingStacks.length == 0)
return new StringTextComponent("Invalid");
return Lang.translate("recipe.assembly.deploying_item",
new TranslationTextComponent(matchingStacks[0].getTranslationKey()).getString());
}
}

View file

@ -4,6 +4,7 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable;
@ -12,6 +13,7 @@ import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.curiosities.tools.SandPaperItem;
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe.SandPaperInv;
import com.simibubi.create.foundation.advancement.AllTriggers;
@ -448,8 +450,14 @@ public class DeployerTileEntity extends KineticTileEntity {
return AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, world)
.orElse(null);
}
recipeInv.setInventorySlotContents(0, heldItemMainhand);
recipeInv.setInventorySlotContents(1, stack);
recipeInv.setInventorySlotContents(0, stack);
recipeInv.setInventorySlotContents(1, heldItemMainhand);
Optional<DeployerApplicationRecipe> assemblyRecipe = SequencedAssemblyRecipe.getRecipe(world, recipeInv,
AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class);
if (assemblyRecipe.isPresent())
return assemblyRecipe.get();
return AllRecipeTypes.DEPLOYING.find(recipeInv, world)
.orElse(null);
}

View file

@ -8,6 +8,7 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity;
import com.simibubi.create.content.contraptions.processing.BasinTileEntity;
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
@ -325,6 +326,11 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity {
private static final RecipeWrapper pressingInv = new RecipeWrapper(new ItemStackHandler(1));
public Optional<PressingRecipe> getRecipe(ItemStack item) {
Optional<PressingRecipe> assemblyRecipe =
SequencedAssemblyRecipe.getRecipe(world, item, AllRecipeTypes.PRESSING.getType(), PressingRecipe.class);
if (assemblyRecipe.isPresent())
return assemblyRecipe;
pressingInv.setInventorySlotContents(0, item);
return AllRecipeTypes.PRESSING.find(pressingInv, world);
}

View file

@ -5,8 +5,12 @@ import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.wrapper.RecipeWrapper;
@ParametersAreNonnullByDefault
@ -28,9 +32,21 @@ public class PressingRecipe extends ProcessingRecipe<RecipeWrapper> {
protected int getMaxInputCount() {
return 1;
}
@Override
protected int getMaxOutputCount() {
return 2;
}
@Override
public boolean supportsAssembly() {
return true;
}
@Override
@OnlyIn(Dist.CLIENT)
public ITextComponent getDescriptionForAssembly() {
return Lang.translate("recipe.assembly.pressing");
}
}

View file

@ -5,8 +5,12 @@ import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.wrapper.RecipeWrapper;
@ParametersAreNonnullByDefault
@ -33,5 +37,16 @@ public class CuttingRecipe extends ProcessingRecipe<RecipeWrapper> {
protected int getMaxOutputCount() {
return 4;
}
@Override
public boolean supportsAssembly() {
return true;
}
@Override
@OnlyIn(Dist.CLIENT)
public ITextComponent getDescriptionForAssembly() {
return Lang.translate("recipe.assembly.cutting");
}
}

View file

@ -3,16 +3,19 @@ package com.simibubi.create.content.contraptions.components.saw;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.annotation.ParametersAreNonnullByDefault;
import com.google.common.collect.ImmutableList;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingInventory;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.item.ItemHelper;
@ -208,6 +211,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
boolean changed = false;
if (!behaviour.canInsertFromSide(itemMovementFacing))
return;
if (world.isRemote && !isVirtual())
return;
for (int slot = 0; slot < inventory.getSlots(); slot++) {
ItemStack stack = inventory.getStackInSlot(slot);
if (stack.isEmpty())
@ -320,14 +325,11 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
}
private List<? extends IRecipe<?>> getRecipes() {
/*
* Predicate<IRecipe<?>> types =
* AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ?
* RecipeConditions.isOfType(IRecipeType.STONECUTTING,
* AllRecipeTypes.CUTTING.getType()) :
* RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType());
*
*/
Optional<CuttingRecipe> assemblyRecipe = SequencedAssemblyRecipe.getRecipe(world, inventory.getStackInSlot(0),
AllRecipeTypes.CUTTING.getType(), CuttingRecipe.class);
if (assemblyRecipe.isPresent() && filtering.test(assemblyRecipe.get()
.getRecipeOutput()))
return ImmutableList.of(assemblyRecipe.get());
Predicate<IRecipe<?>> types = RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType(),
AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ? IRecipeType.STONECUTTING : null,

View file

@ -1,8 +1,10 @@
package com.simibubi.create.content.contraptions.fluids.actors;
import java.util.List;
import java.util.Optional;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.foundation.fluid.FluidIngredient;
import net.minecraft.item.ItemStack;
@ -18,6 +20,12 @@ public class FillingBySpout {
public static boolean canItemBeFilled(World world, ItemStack stack) {
wrapper.setInventorySlotContents(0, stack);
Optional<FillingRecipe> assemblyRecipe =
SequencedAssemblyRecipe.getRecipe(world, wrapper, AllRecipeTypes.FILLING.getType(), FillingRecipe.class);
if (assemblyRecipe.isPresent())
return true;
if (AllRecipeTypes.FILLING.find(wrapper, world)
.isPresent())
return true;
@ -26,6 +34,16 @@ public class FillingBySpout {
public static int getRequiredAmountForItem(World world, ItemStack stack, FluidStack availableFluid) {
wrapper.setInventorySlotContents(0, stack);
Optional<FillingRecipe> assemblyRecipe =
SequencedAssemblyRecipe.getRecipe(world, wrapper, AllRecipeTypes.FILLING.getType(), FillingRecipe.class);
if (assemblyRecipe.isPresent()) {
FluidIngredient requiredFluid = assemblyRecipe.get()
.getRequiredFluid();
if (requiredFluid.test(availableFluid))
return requiredFluid.getRequiredAmount();
}
for (IRecipe<RecipeWrapper> recipe : world.getRecipeManager()
.getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe;
@ -41,18 +59,29 @@ public class FillingBySpout {
toFill.setAmount(requiredAmount);
wrapper.setInventorySlotContents(0, stack);
for (IRecipe<RecipeWrapper> recipe : world.getRecipeManager()
.getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) {
FillingRecipe fillingRecipe = (FillingRecipe) recipe;
FluidIngredient requiredFluid = fillingRecipe.getRequiredFluid();
if (requiredFluid.test(toFill)) {
List<ItemStack> results = fillingRecipe.rollResults();
availableFluid.shrink(requiredAmount);
stack.shrink(1);
return results.isEmpty() ? ItemStack.EMPTY : results.get(0);
}
FillingRecipe fillingRecipe =
SequencedAssemblyRecipe.getRecipe(world, wrapper, AllRecipeTypes.FILLING.getType(), FillingRecipe.class)
.filter(fr -> fr.getRequiredFluid()
.test(toFill))
.orElseGet(() -> {
for (IRecipe<RecipeWrapper> recipe : world.getRecipeManager()
.getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) {
FillingRecipe fr = (FillingRecipe) recipe;
FluidIngredient requiredFluid = fr.getRequiredFluid();
if (requiredFluid.test(toFill))
return fr;
}
return null;
});
if (fillingRecipe != null) {
List<ItemStack> results = fillingRecipe.rollResults();
availableFluid.shrink(requiredAmount);
stack.shrink(1);
return results.isEmpty() ? ItemStack.EMPTY : results.get(0);
}
return GenericItemFilling.fillItem(world, requiredAmount, stack, availableFluid);
}

View file

@ -1,11 +1,20 @@
package com.simibubi.create.content.contraptions.fluids.actors;
import java.util.List;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.foundation.fluid.FluidIngredient;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.wrapper.RecipeWrapper;
public class FillingRecipe extends ProcessingRecipe<RecipeWrapper> {
@ -16,7 +25,8 @@ public class FillingRecipe extends ProcessingRecipe<RecipeWrapper> {
@Override
public boolean matches(RecipeWrapper inv, World p_77569_2_) {
return ingredients.get(0).test(inv.getStackInSlot(0));
return ingredients.get(0)
.test(inv.getStackInSlot(0));
}
@Override
@ -28,16 +38,33 @@ public class FillingRecipe extends ProcessingRecipe<RecipeWrapper> {
protected int getMaxOutputCount() {
return 1;
}
@Override
protected int getMaxFluidInputCount() {
return 1;
}
public FluidIngredient getRequiredFluid() {
if (fluidIngredients.isEmpty())
throw new IllegalStateException("Filling Recipe: " + id.toString() + " has no fluid ingredient!");
return fluidIngredients.get(0);
}
@Override
public boolean supportsAssembly() {
return true;
}
@Override
@OnlyIn(Dist.CLIENT)
public ITextComponent getDescriptionForAssembly() {
List<FluidStack> matchingFluidStacks = fluidIngredients.get(0)
.getMatchingFluidStacks();
if (matchingFluidStacks.size() == 0)
return new StringTextComponent("Invalid");
return Lang.translate("recipe.assembly.spout_filling_fluid",
new TranslationTextComponent(matchingFluidStacks.get(0)
.getTranslationKey()).getString());
}
}

View file

@ -0,0 +1,204 @@
package com.simibubi.create.content.contraptions.itemAssembly;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.client.Minecraft;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.RecipeWrapper;
public class SequencedAssemblyRecipe implements IRecipe<RecipeWrapper> {
ResourceLocation id;
SequencedAssemblyRecipeSerializer serializer;
Ingredient ingredient;
List<SequencedRecipe<?>> sequence;
int averageSteps;
int maxSteps;
ProcessingOutput transitionalItem;
List<ProcessingOutput> resultPool;
public SequencedAssemblyRecipe(ResourceLocation recipeId, SequencedAssemblyRecipeSerializer serializer) {
this.id = recipeId;
this.serializer = serializer;
sequence = new ArrayList<>();
resultPool = new ArrayList<>();
averageSteps = 16;
maxSteps = 32;
}
public static <C extends IInventory, R extends ProcessingRecipe<C>> Optional<R> getRecipe(World world, C inv,
IRecipeType<R> type, Class<R> recipeClass) {
return getRecipe(world, inv.getStackInSlot(0), type, recipeClass).filter(r -> r.matches(inv, world));
}
public static <R extends ProcessingRecipe<?>> Optional<R> getRecipe(World world, ItemStack item,
IRecipeType<R> type, Class<R> recipeClass) {
List<SequencedAssemblyRecipe> all = world.getRecipeManager()
.<RecipeWrapper, SequencedAssemblyRecipe>listAllOfType(AllRecipeTypes.SEQUENCED_ASSEMBLY.getType());
for (SequencedAssemblyRecipe sequencedAssemblyRecipe : all) {
if (!sequencedAssemblyRecipe.appliesTo(item))
continue;
SequencedRecipe<?> nextRecipe = sequencedAssemblyRecipe.getNextRecipe(item);
if (nextRecipe.wrapped.getType() != type || !recipeClass.isInstance(nextRecipe.wrapped))
continue;
nextRecipe.wrapped.enforceNextResult(() -> sequencedAssemblyRecipe.advance(item));
return Optional.of(recipeClass.cast(nextRecipe.wrapped));
}
return Optional.empty();
}
private ItemStack advance(ItemStack input) {
int step = getStep(input);
if (step >= sequence.size()) {
float chance = 1f / (averageSteps - sequence.size());
if (step >= maxSteps || Create.RANDOM.nextFloat() < chance)
return rollResult();
}
ItemStack advancedItem = ItemHandlerHelper.copyStackWithSize(transitionalItem.getStack(), 1);
CompoundNBT itemTag = advancedItem.getOrCreateTag();
CompoundNBT tag = new CompoundNBT();
tag.putString("id", id.toString());
tag.putInt("Step", step + 1);
itemTag.put("SequencedAssembly", tag);
advancedItem.setTag(itemTag);
return advancedItem;
}
private ItemStack rollResult() {
float totalWeight = 0;
for (ProcessingOutput entry : resultPool)
totalWeight += entry.getChance();
float number = Create.RANDOM.nextFloat() * totalWeight;
for (ProcessingOutput entry : resultPool) {
number -= entry.getChance();
if (number < 0)
return entry.getStack()
.copy();
}
return ItemStack.EMPTY;
}
private boolean appliesTo(ItemStack input) {
if (ingredient.test(input))
return true;
return input.hasTag() && transitionalItem.getStack()
.getItem() == input.getItem() && input.getTag()
.contains("SequencedAssembly")
&& input.getTag()
.getCompound("SequencedAssembly")
.getString("id")
.equals(id.toString());
}
private SequencedRecipe<?> getNextRecipe(ItemStack input) {
return sequence.get(getStep(input) % sequence.size());
}
private int getStep(ItemStack input) {
if (!input.hasTag())
return 0;
CompoundNBT tag = input.getTag();
if (!tag.contains("SequencedAssembly"))
return 0;
int step = tag.getCompound("SequencedAssembly")
.getInt("Step");
return step;
}
@Override
public boolean matches(RecipeWrapper inv, World p_77569_2_) {
return false;
}
@Override
public ItemStack getCraftingResult(RecipeWrapper p_77572_1_) {
return ItemStack.EMPTY;
}
@Override
public boolean canFit(int p_194133_1_, int p_194133_2_) {
return false;
}
@Override
public ItemStack getRecipeOutput() {
return resultPool.get(0)
.getStack();
}
@Override
public ResourceLocation getId() {
return id;
}
@Override
public IRecipeSerializer<?> getSerializer() {
return serializer;
}
@Override
public IRecipeType<?> getType() {
return AllRecipeTypes.SEQUENCED_ASSEMBLY.getType();
}
@OnlyIn(Dist.CLIENT)
public static void addToTooltip(List<ITextComponent> toolTip, ItemStack stack) {
if (!stack.hasTag() || !stack.getTag()
.contains("SequencedAssembly"))
return;
CompoundNBT compound = stack.getTag()
.getCompound("SequencedAssembly");
ResourceLocation resourceLocation = new ResourceLocation(compound.getString("id"));
Optional<? extends IRecipe<?>> recipe = Minecraft.getInstance().world.getRecipeManager()
.getRecipe(resourceLocation);
if (!recipe.isPresent())
return;
IRecipe<?> iRecipe = recipe.get();
if (!(iRecipe instanceof SequencedAssemblyRecipe))
return;
SequencedAssemblyRecipe sequencedAssemblyRecipe = (SequencedAssemblyRecipe) iRecipe;
toolTip.add(new StringTextComponent(""));
toolTip.add(Lang.translate("recipe.sequenced_assembly")
.formatted(TextFormatting.GRAY));
int step = sequencedAssemblyRecipe.getStep(stack);
for (int i = 0; i < sequencedAssemblyRecipe.sequence.size(); i++) {
SequencedRecipe<?> sequencedRecipe =
sequencedAssemblyRecipe.sequence.get((i + step) % sequencedAssemblyRecipe.sequence.size());
ITextComponent textComponent = sequencedRecipe.wrapped.getDescriptionForAssembly();
if (i == 0)
toolTip.add(Lang.translate("recipe.assembly.next", textComponent)
.formatted(TextFormatting.AQUA));
else
toolTip.add(new StringTextComponent("-> ").append(textComponent)
.formatted(TextFormatting.DARK_AQUA));
}
}
}

View file

@ -0,0 +1,141 @@
package com.simibubi.create.content.contraptions.itemAssembly;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.UnaryOperator;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeFactory;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.data.IFinishedRecipe;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tags.ITag;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.common.crafting.conditions.ICondition;
public class SequencedAssemblyRecipeBuilder {
private SequencedAssemblyRecipe recipe;
protected List<ICondition> recipeConditions;
public SequencedAssemblyRecipeBuilder(ResourceLocation id) {
recipeConditions = new ArrayList<>();
this.recipe = new SequencedAssemblyRecipe(id,
(SequencedAssemblyRecipeSerializer) AllRecipeTypes.SEQUENCED_ASSEMBLY.serializer);
}
public <T extends ProcessingRecipe<?>> SequencedAssemblyRecipeBuilder addStep(ProcessingRecipeFactory<T> factory,
UnaryOperator<ProcessingRecipeBuilder<T>> builder) {
ProcessingRecipeBuilder<T> recipeBuilder =
new ProcessingRecipeBuilder<>(factory, new ResourceLocation("dummy"));
Item placeHolder = recipe.transitionalItem.getStack()
.getItem();
recipe.sequence.add(new SequencedRecipe<>(builder.apply(recipeBuilder.require(placeHolder)
.output(placeHolder))
.build()));
return this;
}
public SequencedAssemblyRecipeBuilder require(IItemProvider ingredient) {
return require(Ingredient.fromItems(ingredient));
}
public SequencedAssemblyRecipeBuilder require(ITag.INamedTag<Item> tag) {
return require(Ingredient.fromTag(tag));
}
public SequencedAssemblyRecipeBuilder require(Ingredient ingredient) {
recipe.ingredient = ingredient;
return this;
}
public SequencedAssemblyRecipeBuilder transitionTo(IItemProvider item) {
recipe.transitionalItem = new ProcessingOutput(new ItemStack(item), 1);
return this;
}
public SequencedAssemblyRecipeBuilder expectedSteps(int average) {
return expectedStepsAndMax(average, (int) (average * 1.5));
}
public SequencedAssemblyRecipeBuilder expectedStepsAndMax(int average, int max) {
recipe.averageSteps = average;
recipe.maxSteps = max;
return this;
}
public SequencedAssemblyRecipeBuilder addOutput(IItemProvider item, float weight) {
return addOutput(new ItemStack(item), weight);
}
public SequencedAssemblyRecipeBuilder addOutput(ItemStack item, float weight) {
recipe.resultPool.add(new ProcessingOutput(item, weight));
return this;
}
public void build(Consumer<IFinishedRecipe> consumer) {
consumer.accept(new DataGenResult(recipe, recipeConditions));
}
public static class DataGenResult implements IFinishedRecipe {
private List<ICondition> recipeConditions;
private SequencedAssemblyRecipeSerializer serializer;
private ResourceLocation id;
private SequencedAssemblyRecipe recipe;
public DataGenResult(SequencedAssemblyRecipe recipe, List<ICondition> recipeConditions) {
this.recipeConditions = recipeConditions;
this.recipe = recipe;
this.id = Create.asResource(Lang.asId(AllRecipeTypes.SEQUENCED_ASSEMBLY.name()) + "/" + recipe.getId()
.getPath());
this.serializer = (SequencedAssemblyRecipeSerializer) recipe.getSerializer();
}
@Override
public void serialize(JsonObject json) {
serializer.write(json, recipe);
if (recipeConditions.isEmpty())
return;
JsonArray conds = new JsonArray();
recipeConditions.forEach(c -> conds.add(CraftingHelper.serialize(c)));
json.add("conditions", conds);
}
@Override
public ResourceLocation getID() {
return id;
}
@Override
public IRecipeSerializer<?> getSerializer() {
return serializer;
}
@Override
public JsonObject getAdvancementJson() {
return null;
}
@Override
public ResourceLocation getAdvancementID() {
return null;
}
}
}

View file

@ -0,0 +1,96 @@
package com.simibubi.create.content.contraptions.itemAssembly;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.JSONUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.registries.ForgeRegistryEntry;
public class SequencedAssemblyRecipeSerializer extends ForgeRegistryEntry<IRecipeSerializer<?>>
implements IRecipeSerializer<SequencedAssemblyRecipe> {
public SequencedAssemblyRecipeSerializer() {}
protected void writeToJson(JsonObject json, SequencedAssemblyRecipe recipe) {
JsonArray nestedRecipes = new JsonArray();
JsonArray results = new JsonArray();
json.add("ingredient", recipe.ingredient.serialize());
recipe.sequence.forEach(i -> nestedRecipes.add(i.toJson()));
recipe.resultPool.forEach(p -> results.add(p.serialize()));
json.add("transitionalItem", recipe.transitionalItem.serialize());
json.add("sequence", nestedRecipes);
json.add("results", results);
json.addProperty("averageSteps", recipe.averageSteps);
json.addProperty("maxSteps", recipe.maxSteps);
}
protected SequencedAssemblyRecipe readFromJson(ResourceLocation recipeId, JsonObject json) {
SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(recipeId, this);
recipe.ingredient = Ingredient.deserialize(json.get("ingredient"));
recipe.transitionalItem = ProcessingOutput.deserialize(JSONUtils.getJsonObject(json, "transitionalItem"));
int i = 0;
for (JsonElement je : JSONUtils.getJsonArray(json, "sequence"))
recipe.sequence.add(SequencedRecipe.fromJson(je.getAsJsonObject(), recipe, i++));
for (JsonElement je : JSONUtils.getJsonArray(json, "results"))
recipe.resultPool.add(ProcessingOutput.deserialize(je));
if (JSONUtils.hasField(json, "averageSteps")) {
recipe.averageSteps = JSONUtils.getInt(json, "averageSteps");
recipe.maxSteps = (int) (recipe.averageSteps * 1.5f);
}
if (JSONUtils.hasField(json, "maxSteps"))
recipe.maxSteps = JSONUtils.getInt(json, "maxSteps");
return recipe;
}
protected void writeToBuffer(PacketBuffer buffer, SequencedAssemblyRecipe recipe) {
recipe.ingredient.write(buffer);
buffer.writeVarInt(recipe.sequence.size());
recipe.sequence.forEach(sr -> sr.writeToBuffer(buffer));
buffer.writeVarInt(recipe.resultPool.size());
recipe.resultPool.forEach(sr -> sr.write(buffer));
recipe.transitionalItem.write(buffer);
buffer.writeInt(recipe.averageSteps);
buffer.writeInt(recipe.maxSteps);
}
protected SequencedAssemblyRecipe readFromBuffer(ResourceLocation recipeId, PacketBuffer buffer) {
SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(recipeId, this);
recipe.ingredient = Ingredient.read(buffer);
int size = buffer.readVarInt();
for (int i = 0; i < size; i++)
recipe.sequence.add(SequencedRecipe.readFromBuffer(buffer));
size = buffer.readVarInt();
for (int i = 0; i < size; i++)
recipe.resultPool.add(ProcessingOutput.read(buffer));
recipe.transitionalItem = ProcessingOutput.read(buffer);
recipe.averageSteps = buffer.readInt();
recipe.maxSteps = buffer.readInt();
return recipe;
}
public final void write(JsonObject json, SequencedAssemblyRecipe recipe) {
writeToJson(json, recipe);
}
@Override
public final SequencedAssemblyRecipe read(ResourceLocation id, JsonObject json) {
return readFromJson(id, json);
}
@Override
public final void write(PacketBuffer buffer, SequencedAssemblyRecipe recipe) {
writeToBuffer(buffer, recipe);
}
@Override
public final SequencedAssemblyRecipe read(ResourceLocation id, PacketBuffer buffer) {
return readFromBuffer(id, buffer);
}
}

View file

@ -0,0 +1,71 @@
package com.simibubi.create.content.contraptions.itemAssembly;
import com.google.common.collect.ImmutableList;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.item.crafting.RecipeManager;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.registries.ForgeRegistries;
public class SequencedRecipe<T extends ProcessingRecipe<?>> {
T wrapped;
public SequencedRecipe(T wrapped) {
this.wrapped = wrapped;
}
public JsonObject toJson() {
@SuppressWarnings("unchecked")
ProcessingRecipeSerializer<T> serializer = (ProcessingRecipeSerializer<T>) wrapped.getSerializer();
JsonObject json = new JsonObject();
json.addProperty("type", ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer)
.toString());
serializer.write(json, wrapped);
return json;
}
public static SequencedRecipe<?> fromJson(JsonObject json, SequencedAssemblyRecipe parent, int index) {
ResourceLocation parentId = parent.getId();
IRecipe<?> recipe = RecipeManager.deserializeRecipe(
new ResourceLocation(parentId.getNamespace(), parentId.getPath() + "_step_" + index), json);
if (recipe instanceof ProcessingRecipe<?>) {
ProcessingRecipe<?> processingRecipe = (ProcessingRecipe<?>) recipe;
if (processingRecipe.supportsAssembly()) {
Ingredient transit = Ingredient.fromStacks(parent.transitionalItem.getStack());
processingRecipe.getIngredients()
.set(0, index == 0 ? Ingredient.merge(ImmutableList.of(transit, parent.ingredient)) : transit);
SequencedRecipe<?> sequencedRecipe = new SequencedRecipe<>(processingRecipe);
return sequencedRecipe;
}
}
throw new JsonParseException("Not a supported recipe type");
}
public void writeToBuffer(PacketBuffer buffer) {
@SuppressWarnings("unchecked")
ProcessingRecipeSerializer<T> serializer = (ProcessingRecipeSerializer<T>) wrapped.getSerializer();
buffer.writeResourceLocation(ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer));
buffer.writeResourceLocation(wrapped.getId());
serializer.write(buffer, wrapped);
}
public static SequencedRecipe<?> readFromBuffer(PacketBuffer buffer) {
ResourceLocation resourcelocation = buffer.readResourceLocation();
ResourceLocation resourcelocation1 = buffer.readResourceLocation();
IRecipeSerializer<?> serializer = ForgeRegistries.RECIPE_SERIALIZERS.getValue(resourcelocation);
if (!(serializer instanceof ProcessingRecipeSerializer))
throw new JsonParseException("Not a supported recipe type");
@SuppressWarnings("rawtypes")
ProcessingRecipe recipe = (ProcessingRecipe) serializer.read(resourcelocation1, buffer);
return new SequencedRecipe<>(recipe);
}
}

View file

@ -2,6 +2,8 @@ package com.simibubi.create.content.contraptions.processing;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import javax.annotation.ParametersAreNonnullByDefault;
@ -25,6 +27,10 @@ import net.minecraft.item.crafting.Ingredient;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidStack;
@MethodsReturnNonnullByDefault
@ -42,9 +48,11 @@ public abstract class ProcessingRecipe<T extends IInventory> implements IRecipe<
private IRecipeType<?> type;
private IRecipeSerializer<?> serializer;
private AllRecipeTypes enumType;
private Optional<Supplier<ItemStack>> forcedResult;
public ProcessingRecipe(AllRecipeTypes recipeType, ProcessingRecipeParams params) {
this.forcedResult = Optional.empty();
this.enumType = recipeType;
this.processingDuration = params.processingDuration;
this.fluidIngredients = params.fluidIngredients;
@ -91,11 +99,11 @@ public abstract class ProcessingRecipe<T extends IInventory> implements IRecipe<
if (ingredientCount > getMaxInputCount())
logger.warn(messageHeader + " has more item inputs (" + ingredientCount + ") than supported ("
+ getMaxInputCount() + ").");
+ getMaxInputCount() + ").");
if (outputCount > getMaxOutputCount())
logger.warn(messageHeader + " has more item outputs (" + outputCount + ") than supported ("
+ getMaxOutputCount() + ").");
+ getMaxOutputCount() + ").");
if (processingDuration > 0 && !canSpecifyDuration())
logger.warn(messageHeader + " specified a duration. Durations have no impact on this type of recipe.");
@ -139,10 +147,17 @@ public abstract class ProcessingRecipe<T extends IInventory> implements IRecipe<
.collect(Collectors.toList());
}
public void enforceNextResult(Supplier<ItemStack> stack) {
forcedResult = Optional.of(stack);
}
public List<ItemStack> rollResults() {
List<ItemStack> results = new ArrayList<>();
for (ProcessingOutput output : getRollableResults()) {
ItemStack stack = output.rollOutput();
NonNullList<ProcessingOutput> rollableResults = getRollableResults();
for (int i = 0; i < rollableResults.size(); i++) {
ProcessingOutput output = rollableResults.get(i);
ItemStack stack = i == 0 && forcedResult.isPresent() ? forcedResult.get()
.get() : output.rollOutput();
if (!stack.isEmpty())
results.add(stack);
}
@ -215,5 +230,14 @@ public abstract class ProcessingRecipe<T extends IInventory> implements IRecipe<
public AllRecipeTypes getEnumType() {
return enumType;
}
public boolean supportsAssembly() {
return false;
}
@OnlyIn(Dist.CLIENT)
public ITextComponent getDescriptionForAssembly() {
return new StringTextComponent("");
}
}

View file

@ -23,6 +23,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra
import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler;
import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler;
import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer;
import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer;
@ -264,6 +265,7 @@ public class ClientEvents {
}
PonderTooltipHandler.addToTooltip(event.getToolTip(), stack);
SequencedAssemblyRecipe.addToTooltip(event.getToolTip(), stack);
}
@SubscribeEvent

View file

@ -335,11 +335,11 @@ public class AllAdvancements implements IDataProvider {
.register(t, id + ":overstress_flywheel");
Advancement integrated_circuit =
itemAdvancement("integrated_circuit", AllItems.INTEGRATED_CIRCUIT, TaskType.NORMAL).withParent(crafter)
itemAdvancement("integrated_circuit", AllItems.CLOCKWORK_ELEMENT, TaskType.NORMAL).withParent(crafter)
.register(t, id + ":integrated_circuit");
Advancement integrated_circuit_eob = deadEnd().withParent(integrated_circuit)
.withCriterion("0", itemGathered(AllItems.INTEGRATED_CIRCUIT.get()))
.withCriterion("0", itemGathered(AllItems.CLOCKWORK_ELEMENT.get()))
.register(t, id + ":integrated_circuit_eob");
Advancement speed_controller =

View file

@ -78,6 +78,10 @@ public abstract class CreateRecipeProvider extends RecipeProvider {
static IItemProvider cog() {
return AllBlocks.COGWHEEL.get();
}
static IItemProvider largeCog() {
return AllBlocks.LARGE_COGWHEEL.get();
}
static IItemProvider andesiteCasing() {
return AllBlocks.ANDESITE_CASING.get();
@ -112,7 +116,7 @@ public abstract class CreateRecipeProvider extends RecipeProvider {
}
static IItemProvider circuit() {
return AllItems.INTEGRATED_CIRCUIT.get();
return AllItems.CLOCKWORK_ELEMENT.get();
}
static ITag.INamedTag<Item> copperBlock() {

View file

@ -29,15 +29,6 @@ public class MechanicalCraftingRecipeGen extends CreateRecipeProvider {
.patternLine("AAPAA")
.patternLine(" AAA ")),
INTEGRATED_CIRCUIT = create(AllItems.INTEGRATED_CIRCUIT::get).returns(1)
.recipe(b -> b.key('L', AllItems.LAPIS_SHEET.get())
.key('R', Ingredient.fromTag(I.redstone()))
.key('Q', AllItems.POLISHED_ROSE_QUARTZ.get())
.key('C', Ingredient.fromTag(Tags.Items.NUGGETS_GOLD))
.patternLine(" L ")
.patternLine("RRQRR")
.patternLine(" CCC ")),
EXTENDO_GRIP = create(AllItems.EXTENDO_GRIP::get).returns(1)
.recipe(b -> b.key('L', Ingredient.fromTag(I.brass()))
.key('R', I.cog())

View file

@ -3,7 +3,6 @@ package com.simibubi.create.foundation.data.recipe;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllRecipeTypes;
import net.minecraft.block.Blocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
@ -23,8 +22,6 @@ public class PressingRecipeGen extends ProcessingRecipeGen {
.output(AllItems.GOLDEN_SHEET.get())),
COPPER = create("copper_ingot", b -> b.require(I.copper())
.output(AllItems.COPPER_SHEET.get())),
LAPIS = create("lapis_block", b -> b.require(Blocks.LAPIS_BLOCK)
.output(AllItems.LAPIS_SHEET.get())),
BRASS = create("brass_ingot", b -> b.require(I.brass())
.output(AllItems.BRASS_SHEET.get()))

View file

@ -0,0 +1,53 @@
package com.simibubi.create.foundation.data.recipe;
import java.util.function.UnaryOperator;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe;
import com.simibubi.create.content.contraptions.components.press.PressingRecipe;
import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe;
import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipeBuilder;
import net.minecraft.data.DataGenerator;
import net.minecraft.fluid.Fluids;
public class SequencedAssemblyRecipeGen extends CreateRecipeProvider {
GeneratedRecipe
TEST = create("test", b -> b.require(I.goldSheet())
.transitionTo(AllItems.INCOMPLETE_CLOCKWORK_ELEMENT.get())
.addOutput(AllItems.CLOCKWORK_ELEMENT.get(), 10)
.addOutput(AllItems.GOLDEN_SHEET.get(), 5)
.addOutput(AllItems.ANDESITE_ALLOY.get(), 2)
.addOutput(AllBlocks.COGWHEEL.get(), 1)
.expectedSteps(20)
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(I.cog()))
.addStep(PressingRecipe::new, rb -> rb)
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(I.largeCog()))
.addStep(FillingRecipe::new, rb -> rb.require(Fluids.WATER, 100))
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(I.shaft()))
.addStep(CuttingRecipe::new, rb -> rb.averageProcessingDuration()))
;
public SequencedAssemblyRecipeGen(DataGenerator p_i48262_1_) {
super(p_i48262_1_);
}
protected GeneratedRecipe create(String name, UnaryOperator<SequencedAssemblyRecipeBuilder> transform) {
GeneratedRecipe generatedRecipe =
c -> transform.apply(new SequencedAssemblyRecipeBuilder(Create.asResource(name)))
.build(c);
all.add(generatedRecipe);
return generatedRecipe;
}
@Override
public String getName() {
return "Create's Sequenced Assembly Recipes";
}
}

View file

@ -58,10 +58,7 @@ public abstract class CreateItemGroupBase extends ItemGroup {
continue;
ItemStack stack = new ItemStack(item);
IBakedModel model = itemRenderer.getItemModelWithOverrides(stack, world, null);
if (AllSections.of(stack) != AllSections.KINETICS) {
if (specialItems)
continue;
} else if (model.isGui3d() != specialItems)
if (model.isGui3d() != specialItems)
continue;
item.fillItemGroup(this, items);
}

View file

@ -29,7 +29,6 @@ import static com.simibubi.create.AllItems.CRUSHED_GOLD;
import static com.simibubi.create.AllItems.CRUSHED_IRON;
import static com.simibubi.create.AllItems.CRUSHED_ZINC;
import static com.simibubi.create.AllItems.GOLDEN_SHEET;
import static com.simibubi.create.AllItems.LAPIS_SHEET;
import static com.simibubi.create.AllItems.POWDERED_OBSIDIAN;
import static com.simibubi.create.AllItems.SCHEMATIC;
import static com.simibubi.create.AllItems.SCHEMATIC_AND_QUILL;
@ -158,7 +157,6 @@ public class RemapHelper {
reMap.put("piston_pole", PISTON_EXTENSION_POLE.getId());
// reMap.put("shadow_steel_sword", );
reMap.put("lapis_plate", LAPIS_SHEET.getId());
reMap.put("crushed_copper", CRUSHED_COPPER.getId());
reMap.put("empty_blueprint", SCHEMATIC.getId());
// reMap.put("shadow_steel_mattock", );

View file

@ -47,6 +47,13 @@
"create.recipe.spout_filling": "Filling by Spout",
"create.recipe.draining": "Item Draining",
"create.recipe.sequenced_assembly": "Sequenced Assembly",
"create.recipe.assembly.next": "Next: %1$s",
"create.recipe.assembly.pressing": "Process in Press",
"create.recipe.assembly.spout_filling_fluid": "Spout %1$s",
"create.recipe.assembly.deploying_item": "Deploy %1$s",
"create.recipe.assembly.cutting": "Cut with Saw",
"create.recipe.processing.chance": "%1$s%% Chance",
"create.recipe.heat_requirement.none": "No Heating Required",
"create.recipe.heat_requirement.heated": "Heated",

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B