mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-15 06:43:40 +01:00
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:
parent
d0be7428aa
commit
2cfb84995f
54 changed files with 1091 additions and 215 deletions
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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é",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "加熱が必要",
|
||||
|
|
|
@ -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": "고온으로 가열됨",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "Нагрето",
|
||||
|
|
|
@ -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": "加热",
|
||||
|
|
|
@ -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": "普通加熱",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "create:item/lapis_sheet"
|
||||
"layer0": "create:item/clockwork_element"
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "create:item/integrated_circuit"
|
||||
"layer0": "create:item/incomplete_clockwork_element"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:integrated_circuit"
|
||||
"item": "create:clockwork_element"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"item": "create:integrated_circuit"
|
||||
"item": "create:clockwork_element"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:brass_casing"
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"type": "create:pressing",
|
||||
"ingredients": [
|
||||
{
|
||||
"item": "minecraft:lapis_block"
|
||||
}
|
||||
],
|
||||
"results": [
|
||||
{
|
||||
"item": "create:lapis_sheet"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -4,7 +4,6 @@
|
|||
"create:copper_sheet",
|
||||
"create:brass_sheet",
|
||||
"create:iron_sheet",
|
||||
"create:golden_sheet",
|
||||
"create:lapis_sheet"
|
||||
"create:golden_sheet"
|
||||
]
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:lapis_sheet"
|
||||
]
|
||||
}
|
|
@ -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();
|
||||
|
|
|
@ -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),
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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("");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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()))
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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", );
|
||||
|
|
|
@ -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 |
Loading…
Reference in a new issue