From 279349a37a39866d4878d28f34a13979d71bef84 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 16 May 2022 17:47:55 +0200 Subject: [PATCH] Just encase - Added a new recipe type for manual item on block interaction - Changed casing recipes - Added the #create:casing tag --- src/generated/resources/.cache/cache | 54 +++---- .../resources/assets/create/lang/en_us.json | 4 +- .../assets/create/lang/unfinished/de_de.json | 6 +- .../assets/create/lang/unfinished/es_cl.json | 4 +- .../assets/create/lang/unfinished/es_es.json | 4 +- .../assets/create/lang/unfinished/fr_fr.json | 6 +- .../assets/create/lang/unfinished/it_it.json | 6 +- .../assets/create/lang/unfinished/ja_jp.json | 4 +- .../assets/create/lang/unfinished/ko_kr.json | 4 +- .../assets/create/lang/unfinished/nl_nl.json | 6 +- .../assets/create/lang/unfinished/pl_pl.json | 4 +- .../assets/create/lang/unfinished/pt_br.json | 4 +- .../assets/create/lang/unfinished/pt_pt.json | 6 +- .../assets/create/lang/unfinished/ro_ro.json | 4 +- .../assets/create/lang/unfinished/ru_ru.json | 4 +- .../assets/create/lang/unfinished/zh_cn.json | 4 +- .../assets/create/lang/unfinished/zh_tw.json | 4 +- .../crafting/materials/andesite_casing.json | 34 ----- .../crafting/materials/brass_casing.json | 32 ----- .../crafting/materials/copper_casing.json | 34 ----- .../materials/refined_radiance_casing.json | 34 ----- .../materials/shadow_steel_casing.json | 34 ----- .../crafting/materials/andesite_casing.json | 23 --- .../crafting/materials/brass_casing.json | 23 --- .../crafting/materials/copper_casing.json | 23 --- .../materials/refined_radiance_casing.json | 23 --- .../materials/shadow_steel_casing.json | 23 --- .../andesite_casing_from_log.json | 16 +++ .../andesite_casing_from_wood.json | 16 +++ .../brass_casing_from_log.json | 16 +++ .../brass_casing_from_wood.json | 16 +++ .../copper_casing_from_log.json | 16 +++ .../copper_casing_from_wood.json | 16 +++ .../data/create/tags/blocks/casing.json | 10 ++ .../data/create/tags/items/casing.json | 10 ++ .../tags/items/vanilla_stripped_logs.json | 13 ++ .../tags/items/vanilla_stripped_wood.json | 13 ++ .../data/forge/tags/items/stripped_logs.json | 6 + .../data/forge/tags/items/stripped_wood.json | 6 + .../com/simibubi/create/AllRecipeTypes.java | 2 + .../java/com/simibubi/create/AllTags.java | 34 +++-- .../simibubi/create/compat/jei/CreateJEI.java | 9 ++ .../jei/category/CreateRecipeCategory.java | 10 ++ .../jei/category/ItemApplicationCategory.java | 96 +++++++++++++ .../deployer/BeltDeployerCallbacks.java | 6 +- .../deployer/DeployerApplicationRecipe.java | 79 ++--------- .../deployer/DeployerTileEntity.java | 7 +- .../deployer/ManualApplicationRecipe.java | 134 ++++++++++++++++++ .../processing/InWorldProcessing.java | 12 +- .../processing/ItemApplicationRecipe.java | 81 +++++++++++ .../processing/ProcessingRecipe.java | 7 +- .../processing/ProcessingRecipeBuilder.java | 9 +- .../ProcessingRecipeSerializer.java | 20 ++- .../create/foundation/config/CRecipes.java | 2 + .../foundation/data/BuilderTransformers.java | 10 +- .../data/recipe/ItemApplicationRecipeGen.java | 47 ++++++ .../data/recipe/LogStrippingFakeRecipes.java | 68 +++++++++ .../data/recipe/ProcessingRecipeGen.java | 1 + .../data/recipe/StandardRecipeGen.java | 45 ------ .../assets/create/lang/default/interface.json | 4 +- 60 files changed, 760 insertions(+), 488 deletions(-) delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json delete mode 100644 src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json delete mode 100644 src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json delete mode 100644 src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json delete mode 100644 src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json delete mode 100644 src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json create mode 100644 src/generated/resources/data/create/recipes/item_application/andesite_casing_from_log.json create mode 100644 src/generated/resources/data/create/recipes/item_application/andesite_casing_from_wood.json create mode 100644 src/generated/resources/data/create/recipes/item_application/brass_casing_from_log.json create mode 100644 src/generated/resources/data/create/recipes/item_application/brass_casing_from_wood.json create mode 100644 src/generated/resources/data/create/recipes/item_application/copper_casing_from_log.json create mode 100644 src/generated/resources/data/create/recipes/item_application/copper_casing_from_wood.json create mode 100644 src/generated/resources/data/create/tags/blocks/casing.json create mode 100644 src/generated/resources/data/create/tags/items/casing.json create mode 100644 src/generated/resources/data/create/tags/items/vanilla_stripped_logs.json create mode 100644 src/generated/resources/data/create/tags/items/vanilla_stripped_wood.json create mode 100644 src/generated/resources/data/forge/tags/items/stripped_logs.json create mode 100644 src/generated/resources/data/forge/tags/items/stripped_wood.json create mode 100644 src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/processing/ItemApplicationRecipe.java create mode 100644 src/main/java/com/simibubi/create/foundation/data/recipe/ItemApplicationRecipeGen.java create mode 100644 src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 9fed67eb5..6254645f8 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -544,22 +544,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json df56b5a55feb05caf63e59d7473c814cc212c593 assets/create/lang/en_ud.json -16081fd6f3e8241aa3c4f3bd6d867d8555478787 assets/create/lang/en_us.json -e61667043280cfb4414f063dd70761ea801e3129 assets/create/lang/unfinished/de_de.json -5ff1e28fe23bf3dacce2210cb3ca67a6a4f38b31 assets/create/lang/unfinished/es_cl.json -803bb955aba9425dcf77d5137fe58318524aeb42 assets/create/lang/unfinished/es_es.json -3134fecc8a92c44a0643fb89110987c4a57868a1 assets/create/lang/unfinished/fr_fr.json -7078cfddbdf73f65c89f8634e7d5979842ca34bb assets/create/lang/unfinished/it_it.json -4bb376849f661b658fd941a2407b0f78158cc0d4 assets/create/lang/unfinished/ja_jp.json -03db667e726d137a5daaa320b7d5801640173951 assets/create/lang/unfinished/ko_kr.json -0d5a2352092fa0218ffd3e35500ae47dec2306bc assets/create/lang/unfinished/nl_nl.json -67e8e20aaa1cad67581c9b7f6cd1b505c589e08a assets/create/lang/unfinished/pl_pl.json -7be5d96ae1d40b99f98594cd2140a111462514f9 assets/create/lang/unfinished/pt_br.json -428afed80b16e6def974b4d31d6609a14477cdcf assets/create/lang/unfinished/pt_pt.json -39219ca58890611aef68ee5d713614c4a8eaaf8e assets/create/lang/unfinished/ro_ro.json -5de2edb9239c491fdcfe51ee45c8206f16b3d4d3 assets/create/lang/unfinished/ru_ru.json -5db28a284f52b3b6d7f33bbba8542e3aeb49e0c3 assets/create/lang/unfinished/zh_cn.json -9c1d56dec09913608536eecbfecc0276bedf658c assets/create/lang/unfinished/zh_tw.json +99c8b4f8ebb8184a24293a3b2de2a1635ebc1e7e assets/create/lang/en_us.json +4affec8c0528a7704d8801faa62cce3e98b4f1ef assets/create/lang/unfinished/de_de.json +ce1f1c8dcf2e1059e65fe43f5b7c46b2d3501cb4 assets/create/lang/unfinished/es_cl.json +3cf9394de670cd73ee3e0de94daf866e854f6721 assets/create/lang/unfinished/es_es.json +dd63f8c280bd44163e726e027e6fef488803f9ab assets/create/lang/unfinished/fr_fr.json +1374e2cdaaedbb6ba1e663fbf2b077298dfef2a6 assets/create/lang/unfinished/it_it.json +3e49953d1ad799a38128a6724c022b92808bcd63 assets/create/lang/unfinished/ja_jp.json +08c2e857d98e7f5946672be533781412ea305b4e assets/create/lang/unfinished/ko_kr.json +94b8c296349c6e58e85716c8bb25fa660f08177f assets/create/lang/unfinished/nl_nl.json +1bb858c04a0052949c66b5d7852eca0e9785cf64 assets/create/lang/unfinished/pl_pl.json +ca2573e3dd5dae6c0dd39a227e7e105bee524409 assets/create/lang/unfinished/pt_br.json +f82850935227af35505d3e6caf6d0b708dc21bfd assets/create/lang/unfinished/pt_pt.json +f7833b62a0abe1d567b6fa1504cb5bc2fdb72deb assets/create/lang/unfinished/ro_ro.json +4fa955a914facda1b4530bf9371d7be373cbe3f0 assets/create/lang/unfinished/ru_ru.json +37fa33bef9352201f10889fb80f601c41d6ae388 assets/create/lang/unfinished/zh_cn.json +9258763a4c46a0983276035aeb01323bc4311d3e 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 @@ -2474,22 +2474,17 @@ b9b0a8bfff61a89149d4fcadf679f753385212d0 data/create/advancements/recipes/create 675c980c5b9088233b8d777fa03aba4c44650c4e data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json 8e137e9ad4870708d4c015400f91d78cb37b4a92 data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json 6ad84f6f8b4ef85e67ebcc68c5326a22b59bc81a data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json -4c947a5af4362a52b64a6a72d23c6767a2f76627 data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json a7d9a6dda3049332f04f4db027340070e1a9e597 data/create/advancements/recipes/create.base/crafting/materials/brass_block_from_compacting.json -37691ebd182e09b5c41fbeeb15ca31fda0cf8ca9 data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json 7716dae5a22a02fa9ea129985eb14639811c2045 data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json 906a26d805d46f44ce094a14ce138a6ce14431fa data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json 90d4658a26a32bfdade4573797ea4d913151c707 data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json -e0493cc058cc7dc647b4147dabedae9aa61bc9e3 data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json dbfba4474ce5229205245d46680a651754a593ce data/create/advancements/recipes/create.base/crafting/materials/copper_nugget.json a8a032b40204919242bf5043d2920627cd28d348 data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json 121f9d02b1405327ff01113e32c1a1019f9b2f35 data/create/advancements/recipes/create.base/crafting/materials/raw_zinc.json 433e9dae24a4167b2cbd23e37e59bc84cfe352e5 data/create/advancements/recipes/create.base/crafting/materials/raw_zinc_block.json 2d875ed3e78b4840863f2188aea2b9dd23304512 data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json -984fedbd1e66dd2730d50a9b0b171df6ba03bacc data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json bc58b9bec08df3ae2ba9aa871097f0113e4f9075 data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json 75cbc691e7443b566c1639d0c77c96cab66677c8 data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json -c645e7d65da663f2bdf1ceab4fca9853a3177798 data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json d8a83ace588c01d781fea3e62fa3762ee04e0250 data/create/advancements/recipes/create.base/crafting/materials/zinc_block_from_compacting.json 827269a9749c37af9221d27281a85de09942fa2a data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json b15e93ea48cc71a78dca4d5fa5738d5354a3a944 data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json @@ -4097,23 +4092,18 @@ bc511f7c225750743ae3e985502fa65beb1e7b8d data/create/recipes/crafting/logistics/ 10b16358664f2bb8a11589ef8ba3d69ee8d3b9fc data/create/recipes/crafting/logistics/stockpile_switch.json 0dc99b8a8c68d6a9250c3a1167ffb565be9622ec data/create/recipes/crafting/materials/andesite_alloy.json 8bb306454795fd6a2066152717c169e0e8aaf480 data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json -1e54883620660cb5562d8354de0e49bcca81e470 data/create/recipes/crafting/materials/andesite_casing.json fa23f8ff9f43ed39a70a86d0c9080102d57d14b6 data/create/recipes/crafting/materials/brass_block_from_compacting.json -94bbe2869e4926d7b8df8a73f3cd41e86d0da6b0 data/create/recipes/crafting/materials/brass_casing.json 6a7d69e7e6abeb643f3158c575061e3edac01421 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json 7e10c06f4d77b17efb03252801d9fe189de8aefe data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json 49c263368f8c02509332654c0ce97b7472d45cd3 data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json -9ef75592334f5c72c889cdeb5280b6b9220b6d45 data/create/recipes/crafting/materials/copper_casing.json 62ce480f3b5a2f9de27858fdde4f48cf8b91fe2c data/create/recipes/crafting/materials/copper_ingot.json 9a8cef55dc3b7cecef500bad0c7bbb86c51f4b5f data/create/recipes/crafting/materials/copper_nugget.json 7cd3500890430496381cb56c432a233f78b21a25 data/create/recipes/crafting/materials/electron_tube.json e73e4abd1306e2bfeb59ab5ca2d804c23fc66f7e data/create/recipes/crafting/materials/raw_zinc.json cc167074d22aff7ba824ec738653e84f131a1bf0 data/create/recipes/crafting/materials/raw_zinc_block.json 9c9e40ffd41ce46c65113080a92ff9b4f27e5fab data/create/recipes/crafting/materials/red_sand_paper.json -7ff4df8c25b7647463a88dfd5d750a5562d5015c data/create/recipes/crafting/materials/refined_radiance_casing.json 7eb292bc564de70227f4bf947050bcdbfc5a8d67 data/create/recipes/crafting/materials/rose_quartz.json 5ca47ec1bca9a5ce28aabd9868b74b71c829ca07 data/create/recipes/crafting/materials/sand_paper.json -12c6ce7a1d229575fefffc449907fd285a6acecd data/create/recipes/crafting/materials/shadow_steel_casing.json e1ac783d1f8fd96a1dd1088cf736e95ee3f7b025 data/create/recipes/crafting/materials/zinc_block_from_compacting.json 06cc0ec46bc5a7d2e98dbd4ece82d451c5f79de9 data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json fe1d69b1e33d5748eb3c0ea732b8d67e2d612203 data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json @@ -4661,6 +4651,12 @@ c0aab10c6c323b92931e8b59bf9902a47165b263 data/create/recipes/haunting/soul_soil. a6c387d19c357d7c89aa44a10b9deb9e93b6c614 data/create/recipes/haunting/warped_fungus.json 05908d48b6ac0c117da0b4b9ae4ae5e933ed900e data/create/recipes/horizontal_framed_glass_from_glass_colorless_stonecutting.json 4e8d49934f9899f788d45d4347bfc085b2836699 data/create/recipes/horizontal_framed_glass_pane.json +1f14e213ce80509fe51d76016d0c9707d3ad12b8 data/create/recipes/item_application/andesite_casing_from_log.json +ec1cd543397750e5f74a78d1f79d49dafdd46460 data/create/recipes/item_application/andesite_casing_from_wood.json +b6b72466615bcce50e31238ee78b7f6dcee1bbfe data/create/recipes/item_application/brass_casing_from_log.json +62eb2897c263fdf2d2d24e5279f8b4c0f9acd101 data/create/recipes/item_application/brass_casing_from_wood.json +320cf6df9446236f42799aafbfad7a46cd425cb3 data/create/recipes/item_application/copper_casing_from_log.json +4cf9c45c5ffae0600d3c305818aa05e7ecf7b7b1 data/create/recipes/item_application/copper_casing_from_wood.json c3ccd16b7fe9878cc734d699b4c8b219ad556f46 data/create/recipes/jungle_window.json 76dab06d0bda78c4247f76d6a849e1aa083fceb1 data/create/recipes/jungle_window_pane.json fc00b0e336c45698df1f94ad470f9941e19b0e24 data/create/recipes/layered_andesite_from_andesite_stonecutting.json @@ -5235,6 +5231,7 @@ d79c82bc6cf59b073b2f51f5fea9c98e81d14b68 data/create/recipes/weathered_copper_ti ac265a674626e0e832330086fd18fe0be37fc327 data/create/recipes/weathered_copper_tile_stairs.json 5942a571f79c40524bbf408775cf91de4715f2b6 data/create/recipes/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json 2d549ea56fb226c0e31e66c0391996093f8bece9 data/create/tags/blocks/brittle.json +f6fd40f3697b4ffa0bf45cd3bda8cdf5fab536f7 data/create/tags/blocks/casing.json 330bfb3850ba3964b10b1bccbc3cbb9b012cae54 data/create/tags/blocks/fan_heaters.json 57b942386a15c874d1ca9cd6a8032c11a5599fc2 data/create/tags/blocks/fan_transparent.json 10781e8cfcbb3486327aace3aa00e437fb44b331 data/create/tags/blocks/ore_override_stone.json @@ -5250,6 +5247,7 @@ a8bdc387cfa6296ebcc4af14323e2ddb632234dc data/create/tags/fluids/bottomless/allo 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/fluids/bottomless/deny.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/items/blaze_burner_fuel/regular.json 97061ef67cac1fafd869493d06115b968bcb99bf data/create/tags/items/blaze_burner_fuel/special.json +f6fd40f3697b4ffa0bf45cd3bda8cdf5fab536f7 data/create/tags/items/casing.json 5212172aee2239136c94f9868ad39ec2e17cf1c6 data/create/tags/items/create_ingots.json 4480f211f4a37bfee193eba945bc9f5a8d2c6e34 data/create/tags/items/crushed_ores.json bce28787b0271382842823d04a977912a88b01c2 data/create/tags/items/sandpaper.json @@ -5271,6 +5269,8 @@ ed2d9221e4101a572b86187bfa5e49f6b72dce2c data/create/tags/items/stone_types/scor d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/items/toolboxes.json 2f4044c2989b9a8aa394c88617d67a6a310e6b1b data/create/tags/items/upright_on_belt.json 50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json +f8d83f446d0a2071dca4481251339c4249b2fd3f data/create/tags/items/vanilla_stripped_logs.json +f3e20d8b3ca5652d3975da680740cc36326fdfc9 data/create/tags/items/vanilla_stripped_wood.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json 81d3eb40b048160fcc2d6bb7ff12b49276297efd data/forge/tags/blocks/glass_panes.json 6eec92869baa44d3ac53aec6a7a92c15147b59f0 data/forge/tags/blocks/ores.json @@ -5311,6 +5311,8 @@ dc96331cded39b2d2f24853f4dd6c1f6f3863115 data/forge/tags/items/raw_materials/zin ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json 823d05187626797205381d4620a84abda3bc8f89 data/forge/tags/items/storage_blocks/raw_zinc.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json +4853a67b18e1fbfc8f60b5ce6c386b05e40c9942 data/forge/tags/items/stripped_logs.json +4efc25d146ac84be29a702b3f6490a367695242a data/forge/tags/items/stripped_wood.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/azalea_root_replaceable.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/minecraft/tags/blocks/beacon_base_blocks.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 7683d3d12..294426d51 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -857,7 +857,9 @@ "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.item_application": "Manual Item Application", + "create.recipe.item_application.any_axe": "Any Axe", + "create.recipe.sequenced_assembly": "Recipe Sequence", "create.recipe.assembly.next": "Next: %1$s", "create.recipe.assembly.step": "Step %1$s:", "create.recipe.assembly.progress": "Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index c74ec6d7c..0773a03a0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1537", + "_": "Missing Localizations: 1539", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,7 +858,9 @@ "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.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Recipe Sequence", "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index dd455bf57..c6e442dcf 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 559", + "_": "Missing Localizations: 561", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Conversión Misteriosa", "create.recipe.spout_filling": "Llenado por Surtidor", "create.recipe.draining": "Drenaje de Objeto", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Ensamblaje Secuenciado", "create.recipe.assembly.next": "Siguiente: %1$s", "create.recipe.assembly.step": "Paso %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 7ce9b1c44..bba1afe28 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 230", + "_": "Missing Localizations: 232", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Conversión misteriosa", "create.recipe.spout_filling": "Llenar por el pico", "create.recipe.draining": "Drenador de objetos", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Montaje secuenciado", "create.recipe.assembly.next": "Siguiente: %1$s", "create.recipe.assembly.step": "Fase %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 9d6bb7663..49f1121b3 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1799", + "_": "Missing Localizations: 1801", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,7 +858,9 @@ "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.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Recipe Sequence", "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 689e41cfa..00f6392f8 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1488", + "_": "Missing Localizations: 1490", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,7 +858,9 @@ "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.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Recipe Sequence", "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index ad31b4faf..1dc68eed4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 225", + "_": "Missing Localizations: 227", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "神秘の変転", "create.recipe.spout_filling": "アイテムへの注液", "create.recipe.draining": "アイテムからの排液", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index c1cde6479..c2e11dc7f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 225", + "_": "Missing Localizations: 227", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "?", "create.recipe.spout_filling": "채우기", "create.recipe.draining": "배수", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "순서 조립", "create.recipe.assembly.next": "다음 단계: %1$s", "create.recipe.assembly.step": "단계 %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 44415d732..3e2e9669e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2151", + "_": "Missing Localizations: 2153", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,7 +858,9 @@ "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.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Recipe Sequence", "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index 9bfc4bf3e..f4fc41a0f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 598", + "_": "Missing Localizations: 600", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Tajemnicza przemiana", "create.recipe.spout_filling": "Napełnianie", "create.recipe.draining": "Osuszanie", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Składanie", "create.recipe.assembly.next": "Następnie: %1$s", "create.recipe.assembly.step": "Krok %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index a67ec32cd..959f12a4c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1399", + "_": "Missing Localizations: 1401", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Conversão misteriosa", "create.recipe.spout_filling": "Preenchimento com bica", "create.recipe.draining": "Drenação de item", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Montagem sequenciada", "create.recipe.assembly.next": "Proximo: %1$s", "create.recipe.assembly.step": "Passo %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 9136e1d33..5a10a8d7f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1771", + "_": "Missing Localizations: 1773", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,7 +858,9 @@ "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.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Recipe Sequence", "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 2a30f5140..4e18a17e2 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 226", + "_": "Missing Localizations: 228", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Conversie Misterioasă", "create.recipe.spout_filling": "Umplere prin Duză", "create.recipe.draining": "Drenaj De Obiecte", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Asamblare Secvențială", "create.recipe.assembly.next": "Următorul: %1$s", "create.recipe.assembly.step": "Pasul %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index a6ce7a74d..51d9ef43b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 603", + "_": "Missing Localizations: 605", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "Хроматический метаморфоз", "create.recipe.spout_filling": "Заполнение дозатором", "create.recipe.draining": "Осушение предметов", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "Последовательная сборка", "create.recipe.assembly.next": "Следующее: %1$s", "create.recipe.assembly.step": "Шаг %1$s:", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index a31c106e6..d4fd943d7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 225", + "_": "Missing Localizations: 227", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "神秘转化", "create.recipe.spout_filling": "注液", "create.recipe.draining": "分液", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "序列组装", "create.recipe.assembly.next": "下一步:%1$s", "create.recipe.assembly.step": "第%1$s步:", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 5528fc503..8949ec0d4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 617", + "_": "Missing Localizations: 619", "_": "->------------------------] Game Elements [------------------------<-", @@ -858,6 +858,8 @@ "create.recipe.mystery_conversion": "神秘轉化", "create.recipe.spout_filling": "注液", "create.recipe.draining": "分液", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.sequenced_assembly": "排序中的步驟", "create.recipe.assembly.next": "下一步:%1$s", "create.recipe.assembly.step": "步驟 %1$s:", diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json deleted file mode 100644 index d13c70aa6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/andesite_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:andesite_alloy" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/andesite_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json deleted file mode 100644 index 120f69022..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json deleted file mode 100644 index bebda2bed..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:copper_ingot" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json deleted file mode 100644 index 161f39ea9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/refined_radiance_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:refined_radiance" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/refined_radiance_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json deleted file mode 100644 index 470e581bb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/shadow_steel_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:shadow_steel" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/shadow_steel_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json deleted file mode 100644 index 3be156c26..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:andesite_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json deleted file mode 100644 index 84f2ef071..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "tag": "forge:plates/brass" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:brass_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json deleted file mode 100644 index 066726dce..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "tag": "forge:plates/copper" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:copper_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json deleted file mode 100644 index fea94b570..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:refined_radiance" - }, - "S": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:refined_radiance_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json deleted file mode 100644 index 1357fa397..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:shadow_steel" - }, - "S": { - "tag": "forge:obsidian" - } - }, - "result": { - "item": "create:shadow_steel_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_log.json b/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_log.json new file mode 100644 index 000000000..b565be1bc --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_log.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_logs" + }, + { + "item": "create:andesite_alloy" + } + ], + "results": [ + { + "item": "create:andesite_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_wood.json b/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_wood.json new file mode 100644 index 000000000..c7af60108 --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/andesite_casing_from_wood.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_wood" + }, + { + "item": "create:andesite_alloy" + } + ], + "results": [ + { + "item": "create:andesite_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/brass_casing_from_log.json b/src/generated/resources/data/create/recipes/item_application/brass_casing_from_log.json new file mode 100644 index 000000000..67274b3a1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/brass_casing_from_log.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_logs" + }, + { + "tag": "forge:plates/brass" + } + ], + "results": [ + { + "item": "create:brass_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/brass_casing_from_wood.json b/src/generated/resources/data/create/recipes/item_application/brass_casing_from_wood.json new file mode 100644 index 000000000..12dd83afe --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/brass_casing_from_wood.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_wood" + }, + { + "tag": "forge:plates/brass" + } + ], + "results": [ + { + "item": "create:brass_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/copper_casing_from_log.json b/src/generated/resources/data/create/recipes/item_application/copper_casing_from_log.json new file mode 100644 index 000000000..f3caf5ef1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/copper_casing_from_log.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_logs" + }, + { + "tag": "forge:plates/copper" + } + ], + "results": [ + { + "item": "create:copper_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/item_application/copper_casing_from_wood.json b/src/generated/resources/data/create/recipes/item_application/copper_casing_from_wood.json new file mode 100644 index 000000000..58838f8a3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/item_application/copper_casing_from_wood.json @@ -0,0 +1,16 @@ +{ + "type": "create:item_application", + "ingredients": [ + { + "tag": "forge:stripped_wood" + }, + { + "tag": "forge:plates/copper" + } + ], + "results": [ + { + "item": "create:copper_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/casing.json b/src/generated/resources/data/create/tags/blocks/casing.json new file mode 100644 index 000000000..29240a39b --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/casing.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "create:andesite_casing", + "create:brass_casing", + "create:copper_casing", + "create:shadow_steel_casing", + "create:refined_radiance_casing" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/casing.json b/src/generated/resources/data/create/tags/items/casing.json new file mode 100644 index 000000000..29240a39b --- /dev/null +++ b/src/generated/resources/data/create/tags/items/casing.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "create:andesite_casing", + "create:brass_casing", + "create:copper_casing", + "create:shadow_steel_casing", + "create:refined_radiance_casing" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/vanilla_stripped_logs.json b/src/generated/resources/data/create/tags/items/vanilla_stripped_logs.json new file mode 100644 index 000000000..cd4c7d943 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/vanilla_stripped_logs.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:stripped_acacia_log", + "minecraft:stripped_birch_log", + "minecraft:stripped_crimson_stem", + "minecraft:stripped_dark_oak_log", + "minecraft:stripped_jungle_log", + "minecraft:stripped_oak_log", + "minecraft:stripped_spruce_log", + "minecraft:stripped_warped_stem" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/vanilla_stripped_wood.json b/src/generated/resources/data/create/tags/items/vanilla_stripped_wood.json new file mode 100644 index 000000000..d3b364689 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/vanilla_stripped_wood.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:stripped_acacia_wood", + "minecraft:stripped_birch_wood", + "minecraft:stripped_crimson_hyphae", + "minecraft:stripped_dark_oak_wood", + "minecraft:stripped_jungle_wood", + "minecraft:stripped_oak_wood", + "minecraft:stripped_spruce_wood", + "minecraft:stripped_warped_hyphae" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/stripped_logs.json b/src/generated/resources/data/forge/tags/items/stripped_logs.json new file mode 100644 index 000000000..4dfb9e490 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/stripped_logs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#create:vanilla_stripped_logs" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/stripped_wood.json b/src/generated/resources/data/forge/tags/items/stripped_wood.json new file mode 100644 index 000000000..67843f515 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/stripped_wood.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#create:vanilla_stripped_wood" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index a15df4a6a..6b9c33f42 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -9,6 +9,7 @@ import com.simibubi.create.compat.jei.ConversionRecipe; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.crusher.CrushingRecipe; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; +import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; import com.simibubi.create.content.contraptions.components.fan.HauntingRecipe; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.components.millstone.MillingRecipe; @@ -54,6 +55,7 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { DEPLOYING(DeployerApplicationRecipe::new), FILLING(FillingRecipe::new), EMPTYING(EmptyingRecipe::new), + ITEM_APPLICATION(ManualApplicationRecipe::new), MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new), diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 02b14a225..14b938181 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -38,8 +38,10 @@ public class AllTags { private static final CreateRegistrate REGISTRATE = Create.registrate() .creativeModeTab(() -> Create.BASE_CREATIVE_TAB); - public static > TagKey optionalTag(IForgeRegistry registry, ResourceLocation id) { - return registry.tags().createOptionalTagKey(id, Collections.emptySet()); + public static > TagKey optionalTag(IForgeRegistry registry, + ResourceLocation id) { + return registry.tags() + .createOptionalTagKey(id, Collections.emptySet()); } public static > TagKey forgeTag(IForgeRegistry registry, String path) { @@ -85,9 +87,7 @@ public class AllTags { public enum NameSpace { - MOD(Create.ID, false, true), - FORGE("forge"), - TIC("tconstruct") + MOD(Create.ID, false, true), FORGE("forge"), TIC("tconstruct") ; @@ -120,9 +120,10 @@ public class AllTags { WINDMILL_SAILS, WINDOWABLE, WRENCH_PICKUP, + CASING, PASSIVE_BOILER_HEATERS, - + RELOCATION_NOT_SUPPORTED(FORGE), WG_STONE(FORGE), @@ -162,7 +163,8 @@ public class AllTags { @SuppressWarnings("deprecation") public boolean matches(Block block) { - return block.builtInRegistryHolder().is(tag); + return block.builtInRegistryHolder() + .is(tag); } public boolean matches(BlockState state) { @@ -201,7 +203,12 @@ public class AllTags { TOOLBOXES, UPRIGHT_ON_BELT, VALVE_HANDLES, + VANILLA_STRIPPED_LOGS, + VANILLA_STRIPPED_WOOD, + CASING, + STRIPPED_LOGS(FORGE), + STRIPPED_WOOD(FORGE), BEACON_PAYMENT(FORGE), PLATES(FORGE) @@ -239,7 +246,8 @@ public class AllTags { @SuppressWarnings("deprecation") public boolean matches(Item item) { - return item.builtInRegistryHolder().is(tag); + return item.builtInRegistryHolder() + .is(tag); } public boolean matches(ItemStack stack) { @@ -339,6 +347,16 @@ public class AllTags { public static void register() { AllFluidTags.BOTTOMLESS_ALLOW.add(Fluids.WATER, Fluids.LAVA); + AllItemTags.VANILLA_STRIPPED_LOGS.add(Items.STRIPPED_ACACIA_LOG, Items.STRIPPED_BIRCH_LOG, + Items.STRIPPED_CRIMSON_STEM, Items.STRIPPED_DARK_OAK_LOG, Items.STRIPPED_JUNGLE_LOG, Items.STRIPPED_OAK_LOG, + Items.STRIPPED_SPRUCE_LOG, Items.STRIPPED_WARPED_STEM); + AllItemTags.VANILLA_STRIPPED_LOGS.includeIn(AllItemTags.STRIPPED_LOGS); + + AllItemTags.VANILLA_STRIPPED_WOOD.add(Items.STRIPPED_ACACIA_WOOD, Items.STRIPPED_BIRCH_WOOD, + Items.STRIPPED_CRIMSON_HYPHAE, Items.STRIPPED_DARK_OAK_WOOD, Items.STRIPPED_JUNGLE_WOOD, + Items.STRIPPED_OAK_WOOD, Items.STRIPPED_SPRUCE_WOOD, Items.STRIPPED_WARPED_HYPHAE); + AllItemTags.VANILLA_STRIPPED_WOOD.includeIn(AllItemTags.STRIPPED_WOOD); + AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.BEACON_PAYMENT); AllItemTags.CREATE_INGOTS.includeIn(Tags.Items.INGOTS); diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 31ecb312c..cd5825397 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -27,6 +27,7 @@ import com.simibubi.create.compat.jei.category.FanBlastingCategory; import com.simibubi.create.compat.jei.category.FanHauntingCategory; import com.simibubi.create.compat.jei.category.FanSmokingCategory; import com.simibubi.create.compat.jei.category.FanWashingCategory; +import com.simibubi.create.compat.jei.category.ItemApplicationCategory; import com.simibubi.create.compat.jei.category.ItemDrainCategory; import com.simibubi.create.compat.jei.category.MechanicalCraftingCategory; import com.simibubi.create.compat.jei.category.MillingCategory; @@ -41,6 +42,7 @@ import com.simibubi.create.compat.jei.category.SequencedAssemblyCategory; import com.simibubi.create.compat.jei.category.SpoutCategory; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; +import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; @@ -52,6 +54,7 @@ import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CRecipes; import com.simibubi.create.foundation.config.ConfigBase.ConfigBool; +import com.simibubi.create.foundation.data.recipe.LogStrippingFakeRecipes; import com.simibubi.create.foundation.gui.container.AbstractSimiContainerScreen; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; @@ -190,8 +193,14 @@ public class CreateJEI implements IModPlugin { .catalyst(AllItems.RED_SAND_PAPER::get) .build(), + item_application = register("item_application", ItemApplicationCategory::new) + .addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION) + .addRecipes(LogStrippingFakeRecipes::createRecipes) + .build(), + deploying = register("deploying", DeployingCategory::new).addTypedRecipes(AllRecipeTypes.DEPLOYING) .addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING::getType, DeployerApplicationRecipe::convert) + .addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION::getType, ManualApplicationRecipe::asDeploying) .catalyst(AllBlocks.DEPLOYER::get) .catalyst(AllBlocks.DEPOT::get) .catalyst(AllItems.BELT_CONNECTOR::get) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index 3e7a4afe1..c853ffef8 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.utility.Lang; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.gui.ingredient.IRecipeSlotTooltipCallback; import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -115,6 +116,15 @@ public abstract class CreateRecipeCategory> implements IReci }); } + public static IRecipeSlotTooltipCallback addStochasticTooltip(ProcessingOutput output) { + return (view, tooltip) -> { + float chance = output.getChance(); + if (chance != 1) + tooltip.add(1, Lang.translate("recipe.processing.chance", chance < 0.01 ? "<1" : (int) (chance * 100)) + .withStyle(ChatFormatting.GOLD)); + }; + } + public static List withImprovedVisibility(List stacks) { return stacks.stream() .map(CreateRecipeCategory::withImprovedVisibility) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java new file mode 100644 index 000000000..ed62882d1 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java @@ -0,0 +1,96 @@ +package com.simibubi.create.compat.jei.category; + +import java.util.Arrays; +import java.util.Optional; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; +import com.simibubi.create.AllItems; +import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; +import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; +import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.utility.Lang; + +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import net.minecraft.ChatFormatting; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; + +public class ItemApplicationCategory extends CreateRecipeCategory { + + public ItemApplicationCategory() { + super(itemIcon(AllItems.BRASS_HAND.get()), emptyBackground(177, 60)); + } + + @Override + public Class getRecipeClass() { + return ItemApplicationRecipe.class; + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, ItemApplicationRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 27, 38) + .addItemStacks(Arrays.asList(recipe.getProcessedItem() + .getItems())); + + builder.addSlot(RecipeIngredientRole.INPUT, 51, 5) + .addItemStacks(Arrays.asList(recipe.getRequiredHeldItem() + .getItems())) + .addTooltipCallback( + recipe.shouldKeepHeldItem() + ? (view, tooltip) -> tooltip.add(1, Lang.translate("recipe.deploying.not_consumed") + .withStyle(ChatFormatting.GOLD)) + : (view, tooltip) -> { + }); + + builder.addSlot(RecipeIngredientRole.OUTPUT, 132, 38) + .addItemStack(recipe.getResultItem()) + .addTooltipCallback(addStochasticTooltip(recipe.getRollableResults() + .get(0))); + } + + @Override + public void draw(ItemApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack matrixStack, + double mouseX, double mouseY) { + AllGuiTextures.JEI_SLOT.render(matrixStack, 50, 4); + AllGuiTextures.JEI_SLOT.render(matrixStack, 26, 37); + getRenderedSlot(recipe, 0).render(matrixStack, 131, 37); + AllGuiTextures.JEI_SHADOW.render(matrixStack, 62, 47); + AllGuiTextures.JEI_DOWN_ARROW.render(matrixStack, 74, 10); + + Optional displayedIngredient = recipeSlotsView.getSlotViews() + .get(0) + .getDisplayedIngredient(VanillaTypes.ITEM); + if (displayedIngredient.isEmpty()) + return; + + Item item = displayedIngredient.get() + .getItem(); + if (!(item instanceof BlockItem blockItem)) + return; + + BlockState state = blockItem.getBlock() + .defaultBlockState(); + + matrixStack.pushPose(); + matrixStack.translate(74, 51, 100); + matrixStack.mulPose(Vector3f.XP.rotationDegrees(-15.5f)); + matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f)); + int scale = 20; + + GuiGameElement.of(state) + .lighting(AnimatedKinetics.DEFAULT_LIGHTING) + .scale(scale) + .render(matrixStack); + + matrixStack.popPose(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java index 6f7613ba7..edf9e26fa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java @@ -10,6 +10,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.State; import com.simibubi.create.content.contraptions.processing.InWorldProcessing; +import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; @@ -122,11 +123,12 @@ public class BeltDeployerCallbacks { boolean unbreakable = heldItem.hasTag() && heldItem.getTag() .getBoolean("Unbreakable"); boolean keepHeld = - recipe instanceof DeployerApplicationRecipe && ((DeployerApplicationRecipe) recipe).shouldKeepHeldItem(); + recipe instanceof ItemApplicationRecipe && ((ItemApplicationRecipe) recipe).shouldKeepHeldItem(); if (!unbreakable && !keepHeld) { if (heldItem.isDamageableItem()) - heldItem.hurtAndBreak(1, deployerTileEntity.player, s -> s.broadcastBreakEvent(InteractionHand.MAIN_HAND)); + heldItem.hurtAndBreak(1, deployerTileEntity.player, + s -> s.broadcastBreakEvent(InteractionHand.MAIN_HAND)); else heldItem.shrink(1); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java index 33a01e405..8a7251ace 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java @@ -4,52 +4,31 @@ import java.util.List; import java.util.Set; import java.util.function.Supplier; -import com.google.gson.JsonObject; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory; import com.simibubi.create.content.contraptions.itemAssembly.IAssemblyRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; +import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; 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.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.wrapper.RecipeWrapper; -public class DeployerApplicationRecipe extends ProcessingRecipe implements IAssemblyRecipe { - - private boolean keepHeldItem; +public class DeployerApplicationRecipe extends ItemApplicationRecipe implements IAssemblyRecipe { public DeployerApplicationRecipe(ProcessingRecipeParams params) { super(AllRecipeTypes.DEPLOYING, params); - keepHeldItem = params.keepHeldItem; - } - - @Override - public boolean matches(RecipeWrapper inv, Level p_77569_2_) { - return ingredients.get(0) - .test(inv.getItem(0)) - && ingredients.get(1) - .test(inv.getItem(1)); - } - - @Override - protected int getMaxInputCount() { - return 2; } @Override @@ -57,31 +36,16 @@ public class DeployerApplicationRecipe extends ProcessingRecipe i return 2; } - public boolean shouldKeepHeldItem() { - return keepHeldItem; - } - - public Ingredient getRequiredHeldItem() { - if (ingredients.isEmpty()) - throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no tool!"); - return ingredients.get(1); - } - - public Ingredient getProcessedItem() { - if (ingredients.size() < 2) - throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no ingredient!"); - return ingredients.get(0); - } - public static DeployerApplicationRecipe convert(Recipe sandpaperRecipe) { return new ProcessingRecipeBuilder<>(DeployerApplicationRecipe::new, - new ResourceLocation(sandpaperRecipe.getId().getNamespace(), - sandpaperRecipe.getId().getPath() + "_using_deployer")) - .require(sandpaperRecipe.getIngredients() + new ResourceLocation(sandpaperRecipe.getId() + .getNamespace(), + sandpaperRecipe.getId() + .getPath() + "_using_deployer")).require(sandpaperRecipe.getIngredients() .get(0)) - .require(AllItemTags.SANDPAPER.tag) - .output(sandpaperRecipe.getResultItem()) - .build(); + .require(AllItemTags.SANDPAPER.tag) + .output(sandpaperRecipe.getResultItem()) + .build(); } @Override @@ -89,31 +53,6 @@ public class DeployerApplicationRecipe extends ProcessingRecipe i list.add(ingredients.get(1)); } - @Override - public void readAdditional(JsonObject json) { - super.readAdditional(json); - keepHeldItem = GsonHelper.getAsBoolean(json, "keepHeldItem", false); - } - - @Override - public void writeAdditional(JsonObject json) { - super.writeAdditional(json); - if (keepHeldItem) - json.addProperty("keepHeldItem", keepHeldItem); - } - - @Override - public void readAdditional(FriendlyByteBuf buffer) { - super.readAdditional(buffer); - keepHeldItem = buffer.readBoolean(); - } - - @Override - public void writeAdditional(FriendlyByteBuf buffer) { - super.writeAdditional(buffer); - buffer.writeBoolean(keepHeldItem); - } - @Override @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index b67b30405..114bd2667 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -456,11 +456,9 @@ public class DeployerTileEntity extends KineticTileEntity { @Nullable public Recipe getRecipe(ItemStack stack) { - // safety checks if (player == null || level == null) return null; - // sandpaper = op ItemStack heldItemMainhand = player.getMainHandItem(); if (heldItemMainhand.getItem() instanceof SandPaperItem) { sandpaperInv.setItem(0, stack); @@ -468,19 +466,16 @@ public class DeployerTileEntity extends KineticTileEntity { .orElse(null); } - // inventory recipeInv.setItem(0, stack); recipeInv.setItem(1, heldItemMainhand); - // event nonsense DeployerRecipeSearchEvent event = new DeployerRecipeSearchEvent(this, recipeInv); - // creates deployer recipes event.addRecipe(() -> SequencedAssemblyRecipe.getRecipe(level, event.getInventory(), AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class), 100); event.addRecipe(() -> AllRecipeTypes.DEPLOYING.find(event.getInventory(), level), 50); + event.addRecipe(() -> AllRecipeTypes.ITEM_APPLICATION.find(event.getInventory(), level), 50); - // post the event, get result MinecraftForge.EVENT_BUS.post(event); return event.getRecipe(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java new file mode 100644 index 000000000..fb2cd7527 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java @@ -0,0 +1,134 @@ +package com.simibubi.create.content.contraptions.components.deployer; + +import java.util.List; +import java.util.Optional; + +import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; +import com.simibubi.create.content.contraptions.processing.ProcessingOutput; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; +import com.simibubi.create.foundation.utility.BlockHelper; + +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +@EventBusSubscriber +public class ManualApplicationRecipe extends ItemApplicationRecipe { + + @SubscribeEvent + public static void manualApplicationRecipesApplyInWorld(PlayerInteractEvent.RightClickBlock event) { + Level level = event.getWorld(); + ItemStack heldItem = event.getItemStack(); + BlockPos pos = event.getPos(); + BlockState blockState = level.getBlockState(pos); + + if (level.isClientSide()) + return; + if (heldItem.isEmpty()) + return; + if (blockState.isAir()) + return; + if (event.isCanceled()) + return; + + RecipeType> type = AllRecipeTypes.ITEM_APPLICATION.getType(); + Optional> foundRecipe = level.getRecipeManager() + .getAllRecipesFor(type) + .stream() + .filter(r -> { + ManualApplicationRecipe mar = (ManualApplicationRecipe) r; + return mar.testBlock(blockState) && mar.ingredients.get(1) + .test(heldItem); + }) + .findFirst(); + + if (foundRecipe.isEmpty()) + return; + + level.playSound(null, pos, SoundEvents.COPPER_BREAK, SoundSource.PLAYERS, 1, 1.45f); + ManualApplicationRecipe recipe = (ManualApplicationRecipe) foundRecipe.get(); + level.destroyBlock(pos, false); + level.setBlock(pos, recipe.transformBlock(blockState), 3); + recipe.rollResults() + .forEach(stack -> Block.popResource(level, pos, stack)); + + boolean unbreakable = heldItem.hasTag() && heldItem.getTag() + .getBoolean("Unbreakable"); + boolean keepHeld = recipe.shouldKeepHeldItem(); + + if (!unbreakable && !keepHeld) { + if (heldItem.isDamageableItem()) + heldItem.hurtAndBreak(1, event.getPlayer(), s -> s.broadcastBreakEvent(InteractionHand.MAIN_HAND)); + else + heldItem.shrink(1); + } + + event.setCancellationResult(InteractionResult.SUCCESS); + event.setCanceled(true); + } + + public ManualApplicationRecipe(ProcessingRecipeParams params) { + super(AllRecipeTypes.ITEM_APPLICATION, params); + } + + public static DeployerApplicationRecipe asDeploying(Recipe recipe) { + ManualApplicationRecipe mar = (ManualApplicationRecipe) recipe; + ProcessingRecipeBuilder builder = + new ProcessingRecipeBuilder<>(DeployerApplicationRecipe::new, + new ResourceLocation(mar.id.getNamespace(), mar.id.getPath() + "_using_deployer")) + .require(mar.ingredients.get(0)) + .require(mar.ingredients.get(1)); + for (ProcessingOutput output : mar.results) + builder.output(output); + if (mar.shouldKeepHeldItem()) + builder.toolNotConsumed(); + return builder.build(); + } + + public boolean testBlock(BlockState in) { + return ingredients.get(0) + .test(new ItemStack(in.getBlock() + .asItem())); + } + + public BlockState transformBlock(BlockState in) { + ProcessingOutput mainOutput = results.get(0); + ItemStack output = mainOutput.rollOutput(); + if (output.getItem()instanceof BlockItem bi) + return BlockHelper.copyProperties(in, bi.getBlock() + .defaultBlockState()); + return Blocks.AIR.defaultBlockState(); + } + + @Override + public List rollResults() { + return rollResults(getRollableResultsExceptBlock()); + } + + public List getRollableResultsExceptBlock() { + ProcessingOutput mainOutput = results.get(0); + if (mainOutput.getStack() + .getItem() instanceof BlockItem) + return results.subList(1, results.size()); + return results; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java b/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java index dc8899c45..fae2e39b2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java @@ -10,6 +10,7 @@ import java.util.Optional; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; import com.simibubi.create.content.contraptions.components.fan.HauntingRecipe; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; @@ -237,11 +238,12 @@ public class InWorldProcessing { public static List applyRecipeOn(ItemStack stackIn, Recipe recipe) { List stacks; - if (recipe instanceof ProcessingRecipe) { + if (recipe instanceof ProcessingRecipe pr) { stacks = new ArrayList<>(); for (int i = 0; i < stackIn.getCount(); i++) { - List rollResults = ((ProcessingRecipe) recipe).rollResults(); - for (ItemStack stack : rollResults) { + List outputs = + pr instanceof ManualApplicationRecipe mar ? mar.getRollableResults() : pr.getRollableResults(); + for (ItemStack stack : pr.rollResults(outputs)) { for (ItemStack previouslyRolled : stacks) { if (stack.isEmpty()) continue; @@ -472,8 +474,8 @@ public class InWorldProcessing { .map(flame -> flame == LitBlazeBurnerBlock.FlameType.SOUL) .orElse(false)) return Type.HAUNTING; - if (block == Blocks.FIRE || blockState.is(BlockTags.CAMPFIRES) - && blockState.getOptionalValue(CampfireBlock.LIT) + if (block == Blocks.FIRE + || blockState.is(BlockTags.CAMPFIRES) && blockState.getOptionalValue(CampfireBlock.LIT) .orElse(false) || AllBlocks.LIT_BLAZE_BURNER.has(blockState) && blockState.getOptionalValue(LitBlazeBurnerBlock.FLAME_TYPE) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ItemApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ItemApplicationRecipe.java new file mode 100644 index 000000000..a1fe53f37 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ItemApplicationRecipe.java @@ -0,0 +1,81 @@ +package com.simibubi.create.content.contraptions.processing; + +import com.google.gson.JsonObject; +import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +public class ItemApplicationRecipe extends ProcessingRecipe { + + private boolean keepHeldItem; + + public ItemApplicationRecipe(AllRecipeTypes type, ProcessingRecipeParams params) { + super(type, params); + keepHeldItem = params.keepHeldItem; + } + + @Override + public boolean matches(RecipeWrapper inv, Level p_77569_2_) { + return ingredients.get(0) + .test(inv.getItem(0)) + && ingredients.get(1) + .test(inv.getItem(1)); + } + + @Override + protected int getMaxInputCount() { + return 2; + } + + @Override + protected int getMaxOutputCount() { + return 9; + } + + public boolean shouldKeepHeldItem() { + return keepHeldItem; + } + + public Ingredient getRequiredHeldItem() { + if (ingredients.isEmpty()) + throw new IllegalStateException("Item Application Recipe: " + id.toString() + " has no tool!"); + return ingredients.get(1); + } + + public Ingredient getProcessedItem() { + if (ingredients.size() < 2) + throw new IllegalStateException("Item Application Recipe: " + id.toString() + " has no ingredient!"); + return ingredients.get(0); + } + + @Override + public void readAdditional(JsonObject json) { + super.readAdditional(json); + keepHeldItem = GsonHelper.getAsBoolean(json, "keepHeldItem", false); + } + + @Override + public void writeAdditional(JsonObject json) { + super.writeAdditional(json); + if (keepHeldItem) + json.addProperty("keepHeldItem", keepHeldItem); + } + + @Override + public void readAdditional(FriendlyByteBuf buffer) { + super.readAdditional(buffer); + keepHeldItem = buffer.readBoolean(); + } + + @Override + public void writeAdditional(FriendlyByteBuf buffer) { + super.writeAdditional(buffer); + buffer.writeBoolean(keepHeldItem); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java index d5ca2c70b..bc00c5b57 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java @@ -126,7 +126,7 @@ public abstract class ProcessingRecipe implements Recipe return fluidIngredients; } - public NonNullList getRollableResults() { + public List getRollableResults() { return results; } @@ -145,8 +145,11 @@ public abstract class ProcessingRecipe implements Recipe } public List rollResults() { + return rollResults(this.getRollableResults()); + } + + public List rollResults(List rollableResults) { List results = new ArrayList<>(); - NonNullList rollableResults = getRollableResults(); for (int i = 0; i < rollableResults.size(); i++) { ProcessingOutput output = rollableResults.get(i); ItemStack stack = i == 0 && forcedResult != null ? forcedResult.get() : output.rollOutput(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java index 4d5ab1e33..658cc21c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java @@ -150,12 +150,15 @@ public class ProcessingRecipeBuilder> { } public ProcessingRecipeBuilder output(float chance, ItemStack output) { - params.results.add(new ProcessingOutput(output, chance)); - return this; + return output(new ProcessingOutput(output, chance)); } public ProcessingRecipeBuilder output(float chance, ResourceLocation registryName, int amount) { - params.results.add(new ProcessingOutput(Pair.of(registryName, amount), chance)); + return output(new ProcessingOutput(Pair.of(registryName, amount), chance)); + } + + public ProcessingRecipeBuilder output(ProcessingOutput output) { + params.results.add(output); return this; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java index 4f67209ac..17444bb20 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java @@ -34,15 +34,11 @@ public class ProcessingRecipeSerializer> extends F JsonArray jsonIngredients = new JsonArray(); JsonArray jsonOutputs = new JsonArray(); - recipe.getIngredients() - .forEach(i -> jsonIngredients.add(i.toJson())); - recipe.getFluidIngredients() - .forEach(i -> jsonIngredients.add(i.serialize())); + recipe.ingredients.forEach(i -> jsonIngredients.add(i.toJson())); + recipe.fluidIngredients.forEach(i -> jsonIngredients.add(i.serialize())); - recipe.getRollableResults() - .forEach(o -> jsonOutputs.add(o.serialize())); - recipe.getFluidResults() - .forEach(o -> jsonOutputs.add(FluidHelper.serializeFluidStack(o))); + recipe.results.forEach(o -> jsonOutputs.add(o.serialize())); + recipe.fluidResults.forEach(o -> jsonOutputs.add(FluidHelper.serializeFluidStack(o))); json.add("ingredients", jsonIngredients); json.add("results", jsonOutputs); @@ -96,10 +92,10 @@ public class ProcessingRecipeSerializer> extends F } protected void writeToBuffer(FriendlyByteBuf buffer, T recipe) { - NonNullList ingredients = recipe.getIngredients(); - NonNullList fluidIngredients = recipe.getFluidIngredients(); - NonNullList outputs = recipe.getRollableResults(); - NonNullList fluidOutputs = recipe.getFluidResults(); + NonNullList ingredients = recipe.ingredients; + NonNullList fluidIngredients = recipe.fluidIngredients; + NonNullList outputs = recipe.results; + NonNullList fluidOutputs = recipe.fluidResults; buffer.writeVarInt(ingredients.size()); ingredients.forEach(i -> i.toNetwork(buffer)); diff --git a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java index 8175e6b68..ec35f974f 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java @@ -13,6 +13,7 @@ public class CRecipes extends ConfigBase { public final ConfigBool allowStonecuttingOnSaw = b(true, "allowStonecuttingOnSaw", Comments.allowStonecuttingOnSaw); public final ConfigBool allowWoodcuttingOnSaw = b(true, "allowWoodcuttingOnSaw", Comments.allowWoodcuttingOnSaw); public final ConfigBool allowCastingBySpout = b(true, "allowCastingBySpout", Comments.allowCastingBySpout); + public final ConfigBool displayLogStrippingRecipes = b(true, "displayLogStrippingRecipes", Comments.displayLogStrippingRecipes); public final ConfigInt lightSourceCountForRefinedRadiance = i(10, 1, "lightSourceCountForRefinedRadiance", Comments.refinedRadiance); public final ConfigBool enableRefinedRadianceRecipe = @@ -45,6 +46,7 @@ public class CRecipes extends ConfigBase { "The amount of Light sources destroyed before Chromatic Compound turns into Refined Radiance."; static String refinedRadianceRecipe = "Allow the standard in-world Refined Radiance recipes."; static String shadowSteelRecipe = "Allow the standard in-world Shadow Steel recipe."; + static String displayLogStrippingRecipes = "Display vanilla Log-stripping interactions in JEI."; } } diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 1cff31e69..5df33a437 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -73,7 +73,7 @@ public class BuilderTransformers { .getExistingFile(p.modLoc("block/track/bogey/top")))) .onRegister(block -> IBogeyBlock.register(block.getRegistryName())); } - + public static NonNullUnaryOperator> encasedCogwheel( String casing, Supplier casingShift) { return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get(), false); @@ -90,8 +90,7 @@ public class BuilderTransformers { String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : ""); String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel"; String wood = casing.equals("brass") ? "dark_oak" : "spruce"; - return encasedBase(b, drop) - .addLayer(() -> RenderType::cutoutMipped) + return encasedBase(b, drop).addLayer(() -> RenderType::cutoutMipped) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS) && !s.getValue(f.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT @@ -155,7 +154,10 @@ public class BuilderTransformers { .blockstate((c, p) -> p.simpleBlock(c.get())) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(ct.get()))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct.get()))) - .simpleItem(); + .tag(AllBlockTags.CASING.tag) + .item() + .tag(AllItemTags.CASING.tag) + .build(); } public static NonNullUnaryOperator> beltTunnel( diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ItemApplicationRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ItemApplicationRecipeGen.java new file mode 100644 index 000000000..7a07e787d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/ItemApplicationRecipeGen.java @@ -0,0 +1,47 @@ +package com.simibubi.create.foundation.data.recipe; + +import java.util.function.Supplier; + +import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.AllTags.AllItemTags; + +import net.minecraft.data.DataGenerator; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; + +public class ItemApplicationRecipeGen extends ProcessingRecipeGen { + + GeneratedRecipe ANDESITE = woodCasing("andesite", I::andesite, I::andesiteCasing); + GeneratedRecipe COPPER = woodCasingTag("copper", I::copperSheet, I::copperCasing); + GeneratedRecipe BRASS = woodCasingTag("brass", I::brassSheet, I::brassCasing); + + protected GeneratedRecipe woodCasing(String type, Supplier ingredient, Supplier output) { + return woodCasingIngredient(type, () -> Ingredient.of(ingredient.get()), output); + } + + protected GeneratedRecipe woodCasingTag(String type, Supplier> ingredient, Supplier output) { + return woodCasingIngredient(type, () -> Ingredient.of(ingredient.get()), output); + } + + protected GeneratedRecipe woodCasingIngredient(String type, Supplier ingredient, + Supplier output) { + create(type + "_casing_from_log", b -> b.require(AllItemTags.STRIPPED_LOGS.tag) + .require(ingredient.get()) + .output(output.get())); + return create(type + "_casing_from_wood", b -> b.require(AllItemTags.STRIPPED_WOOD.tag) + .require(ingredient.get()) + .output(output.get())); + } + + public ItemApplicationRecipeGen(DataGenerator p_i48262_1_) { + super(p_i48262_1_); + } + + @Override + protected AllRecipeTypes getRecipeType() { + return AllRecipeTypes.ITEM_APPLICATION; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java new file mode 100644 index 000000000..6f549196d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java @@ -0,0 +1,68 @@ +package com.simibubi.create.foundation.data.recipe; + +import java.util.ArrayList; +import java.util.List; + +import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStack.TooltipPart; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.tags.ITagManager; + +/** + * Just in case players don't know about that vanilla feature + */ +public class LogStrippingFakeRecipes { + + public static List createRecipes() { + List recipes = new ArrayList<>(); + if (!AllConfigs.SERVER.recipes.displayLogStrippingRecipes.get()) + return recipes; + + ItemStack axe = new ItemStack(Items.IRON_AXE); + axe.hideTooltipPart(TooltipPart.MODIFIERS); + axe.setHoverName(Lang.translate("recipe.item_application.any_axe") + .withStyle(style -> style.withItalic(false))); + ITagManager tags = ForgeRegistries.ITEMS.tags(); + tags.getTag(ItemTags.LOGS) + .forEach(stack -> process(stack, recipes, axe)); + return recipes; + } + + private static void process(Item item, List list, ItemStack axe) { + if (!(item instanceof BlockItem blockItem)) + return; + BlockState state = blockItem.getBlock() + .defaultBlockState(); + BlockState strippedState = AxeItem.getAxeStrippingState(state); + if (strippedState == null) + return; + Item resultItem = strippedState.getBlock() + .asItem(); + if (resultItem == null) + return; + list.add(create(item, resultItem, axe)); + } + + private static ManualApplicationRecipe create(Item fromItem, Item toItem, ItemStack axe) { + ResourceLocation rn = toItem.getRegistryName(); + return new ProcessingRecipeBuilder<>(ManualApplicationRecipe::new, + new ResourceLocation(rn.getNamespace(), rn.getPath() + "_via_vanilla_stripping")).require(fromItem) + .require(Ingredient.of(axe)) + .output(toItem) + .build(); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java index 9f7f67e95..71a9f20a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java @@ -39,6 +39,7 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { GENERATORS.add(new FillingRecipeGen(gen)); GENERATORS.add(new EmptyingRecipeGen(gen)); GENERATORS.add(new HauntingRecipeGen(gen)); + GENERATORS.add(new ItemApplicationRecipeGen(gen)); gen.addProvider(new DataProvider() { diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 937f48edc..9e1c46f87 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -112,51 +112,6 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("BA") .pattern("AB")), - ANDESITE_CASING = create(AllBlocks.ANDESITE_CASING).returns(4) - .unlockedBy(I::andesite) - .viaShaped(b -> b.define('A', ItemTags.PLANKS) - .define('C', I.andesite()) - .define('S', ItemTags.LOGS) - .pattern("AAA") - .pattern("CSC") - .pattern("AAA")), - - BRASS_CASING = create(AllBlocks.BRASS_CASING).returns(4) - .unlockedByTag(I::brass) - .viaShaped(b -> b.define('A', ItemTags.PLANKS) - .define('C', I.brassSheet()) - .define('S', ItemTags.LOGS) - .pattern("AAA") - .pattern("CSC") - .pattern("AAA")), - - COPPER_CASING = create(AllBlocks.COPPER_CASING).returns(4) - .unlockedBy(I::copper) - .viaShaped(b -> b.define('A', ItemTags.PLANKS) - .define('C', I.copperSheet()) - .define('S', ItemTags.LOGS) - .pattern("AAA") - .pattern("CSC") - .pattern("AAA")), - - RADIANT_CASING = create(AllBlocks.REFINED_RADIANCE_CASING).returns(4) - .unlockedBy(I::refinedRadiance) - .viaShaped(b -> b.define('A', ItemTags.PLANKS) - .define('C', I.refinedRadiance()) - .define('S', Tags.Items.GLASS_COLORLESS) - .pattern("AAA") - .pattern("CSC") - .pattern("AAA")), - - SHADOW_CASING = create(AllBlocks.SHADOW_STEEL_CASING).returns(4) - .unlockedBy(I::shadowSteel) - .viaShaped(b -> b.define('A', ItemTags.PLANKS) - .define('C', I.shadowSteel()) - .define('S', Tags.Items.OBSIDIAN) - .pattern("AAA") - .pattern("CSC") - .pattern("AAA")), - ELECTRON_TUBE = create(AllItems.ELECTRON_TUBE).unlockedBy(AllItems.ROSE_QUARTZ::get) .viaShaped(b -> b.define('L', AllItems.POLISHED_ROSE_QUARTZ.get()) .define('R', Items.REDSTONE_TORCH) diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index f6dd52929..f3ac26bcc 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -56,8 +56,10 @@ "create.recipe.mystery_conversion": "Mysterious Conversion", "create.recipe.spout_filling": "Filling by Spout", "create.recipe.draining": "Item Draining", + "create.recipe.item_application": "Manual Item Application", + "create.recipe.item_application.any_axe": "Any Axe", - "create.recipe.sequenced_assembly": "Sequenced Assembly", + "create.recipe.sequenced_assembly": "Recipe Sequence", "create.recipe.assembly.next": "Next: %1$s", "create.recipe.assembly.step": "Step %1$s:", "create.recipe.assembly.progress": "Progress: %1$s/%2$s",