From f3109b28abfdb54c31ee7508f4354e6890039812 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 21 Nov 2021 22:03:38 +0100 Subject: [PATCH] Back on Patch - Fixed Crafters voiding any inserted items after being moved on a contraption - Fixed Crafters crashing the game after being placed by a Schematicannon - A couple of two-ingredient recipes have been made shapeless - Improved piston/pulley contraption collision with blocks in the world - Fixed pistons/pulley contraptions merging into world blocks when disassembling shortly after loaded in - Added jei support for toolbox colouring recipes - Disabled item shadows on belts - Toolbox radial can now be navigated using hotbar shortcuts - Toolbox radial now steps back when right-clicked - Toolbox radial now immediately opens the multi-toolbox view when right-clicking the central "unequip" button - Fixed hidden slots visible in toolbox screen in some gui scales - Toolbox sorting in the radial menu is now deterministic - Fixed Toolboxes not always updating their inventory state to clients - Shulker boxes can no longer be placed inside toolboxes - Fixed potion fluids not displaying their full name in jei - Fixed JEI showing all potion recipes when looking up a specific one --- src/generated/resources/.cache/cache | 134 +++---- .../assets/create/lang/unfinished/de_de.json | 338 +++++++++--------- .../loot_tables/blocks/black_toolbox.json | 11 + .../loot_tables/blocks/blue_toolbox.json | 11 + .../loot_tables/blocks/brown_toolbox.json | 11 + .../loot_tables/blocks/cyan_toolbox.json | 11 + .../loot_tables/blocks/gray_toolbox.json | 11 + .../loot_tables/blocks/green_toolbox.json | 11 + .../blocks/light_blue_toolbox.json | 11 + .../blocks/light_gray_toolbox.json | 11 + .../loot_tables/blocks/lime_toolbox.json | 11 + .../loot_tables/blocks/magenta_toolbox.json | 11 + .../loot_tables/blocks/orange_toolbox.json | 11 + .../loot_tables/blocks/pink_toolbox.json | 11 + .../loot_tables/blocks/purple_toolbox.json | 11 + .../loot_tables/blocks/red_toolbox.json | 11 + .../loot_tables/blocks/white_toolbox.json | 11 + .../loot_tables/blocks/yellow_toolbox.json | 11 + .../recipes/crafting/kinetics/black_seat.json | 14 +- .../kinetics/black_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/blue_seat.json | 14 +- .../kinetics/blue_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/brown_seat.json | 14 +- .../kinetics/brown_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/cyan_seat.json | 14 +- .../kinetics/cyan_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/depot.json | 14 +- .../recipes/crafting/kinetics/gray_seat.json | 14 +- .../kinetics/gray_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/green_seat.json | 14 +- .../kinetics/green_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/light_blue_seat.json | 14 +- .../light_blue_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/light_gray_seat.json | 14 +- .../light_gray_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/lime_seat.json | 14 +- .../kinetics/lime_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/magenta_seat.json | 14 +- .../magenta_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/mechanical_pump.json | 14 +- .../crafting/kinetics/orange_seat.json | 14 +- .../kinetics/orange_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/pink_seat.json | 14 +- .../kinetics/pink_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/purple_seat.json | 14 +- .../kinetics/purple_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/red_seat.json | 14 +- .../kinetics/red_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/white_seat.json | 14 +- .../kinetics/white_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/yellow_seat.json | 14 +- .../kinetics/yellow_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../java/com/simibubi/create/AllBlocks.java | 43 ++- .../simibubi/create/compat/jei/CreateJEI.java | 26 +- .../jei/PotionFluidSubtypeInterpreter.java | 44 +++ .../jei/ToolboxColoringRecipeMaker.java | 52 +++ .../crafter/ConnectedInputHandler.java | 6 + .../crafter/MechanicalCrafterTileEntity.java | 11 + .../ControlledContraptionEntity.java | 5 - .../IControlContraption.java | 2 - .../structureMovement/MountedStorage.java | 6 +- .../bearing/ClockworkBearingTileEntity.java | 3 - .../bearing/MechanicalBearingTileEntity.java | 3 - .../piston/LinearActuatorTileEntity.java | 51 +-- .../piston/MechanicalPistonTileEntity.java | 6 +- .../pulley/PulleyTileEntity.java | 2 +- .../fluids/potion/PotionFluid.java | 7 + .../relays/belt/BeltRenderer.java | 8 +- .../toolbox/RadialToolboxMenu.java | 92 ++++- .../curiosities/toolbox/ToolboxBlock.java | 23 +- .../curiosities/toolbox/ToolboxContainer.java | 2 +- .../toolbox/ToolboxHandlerClient.java | 16 +- .../curiosities/toolbox/ToolboxInventory.java | 9 + .../toolbox/ToolboxTileEntity.java | 17 + .../block/depot/EjectorTileEntity.java | 21 +- .../logistics/block/depot/EntityLauncher.java | 9 +- .../data/recipe/StandardRecipeGen.java | 12 +- 93 files changed, 1016 insertions(+), 808 deletions(-) create mode 100644 src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java create mode 100644 src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index b43c2f8b2..73e99b76d 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -443,7 +443,7 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 5ae77ed97ee05a7ed98999178677e576c1140007 assets/create/lang/en_ud.json 5a7c0c3ea8d5fe01289b4eb2ea4f175bad825672 assets/create/lang/en_us.json -474dbefbecbec7e8e5969d7226a8c8a0c7a75325 assets/create/lang/unfinished/de_de.json +c7c1900b9a88af98d3af131dae5f1e2263c86635 assets/create/lang/unfinished/de_de.json 800b427fc2e4f3b71df9c6295e500d77e8c1d486 assets/create/lang/unfinished/es_es.json 5ad47cb60df592b461672e224dfb89167f8861e1 assets/create/lang/unfinished/fr_fr.json 216065d27084497ffed7cacddfe86cab542643d9 assets/create/lang/unfinished/it_it.json @@ -2510,13 +2510,13 @@ bf1d5843f93533f84bc4adec5b77da2114fa2025 data/create/loot_tables/blocks/birch_wi d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/black_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/black_sail.json cccc209d172cc7bac76f1b4ac79085ee90742ab2 data/create/loot_tables/blocks/black_seat.json -c51ad9a71e41bb3ffa807b441ebd1946ea226a68 data/create/loot_tables/blocks/black_toolbox.json +384e1f701f29851edd148d29e8160a492f6f90b4 data/create/loot_tables/blocks/black_toolbox.json f3573f47b8a914aa222633893e158f84fcd6f3d8 data/create/loot_tables/blocks/black_valve_handle.json a2313c9b7d114396fca3c86a740d23fce3873679 data/create/loot_tables/blocks/blaze_burner.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/blue_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/blue_sail.json 3834f7ac2bbc42cead02d4973842adb9ad97e6bf data/create/loot_tables/blocks/blue_seat.json -dc8e1f43464c5a9b28d4cbd37203682fc2a9621f data/create/loot_tables/blocks/blue_toolbox.json +27c64f035b10ac05d829ff84f57cba859de54dc6 data/create/loot_tables/blocks/blue_toolbox.json fcddccd1bf45c2f4ad5f1520e209a4f04487274a data/create/loot_tables/blocks/blue_valve_handle.json 1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_belt_funnel.json 70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data/create/loot_tables/blocks/brass_block.json @@ -2527,7 +2527,7 @@ b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/brass_en d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/brown_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/brown_sail.json d415862a0abe20e8c5c2c8125bb672065330a9bc data/create/loot_tables/blocks/brown_seat.json -be90d95c41b95c30243b26f462cb51b33400ba26 data/create/loot_tables/blocks/brown_toolbox.json +f8c67f9e19b2852ce38ca46404025b2e556b9d51 data/create/loot_tables/blocks/brown_toolbox.json fedfe922f568c06adc2dfdd641b9abc90ba5af8a data/create/loot_tables/blocks/brown_valve_handle.json 0be542fef3bc0e1a0d556883568a1400a8b97df1 data/create/loot_tables/blocks/cart_assembler.json ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data/create/loot_tables/blocks/chiseled_dark_scoria.json @@ -2560,7 +2560,7 @@ d370ee874b5b6b98e9a8c368218fe61f644d956d data/create/loot_tables/blocks/cuckoo_c d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/cyan_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/cyan_sail.json 49a14b9e93abdf02a7aef9c0c4085ac89617fae4 data/create/loot_tables/blocks/cyan_seat.json -6b4281aa990a190722d56c32bd03e21b508f5f49 data/create/loot_tables/blocks/cyan_toolbox.json +cc182db248509db7d98fa44bbbbf62d95c75bec5 data/create/loot_tables/blocks/cyan_toolbox.json fe24fd296812fea3f838defa2ca6270523d9d48e data/create/loot_tables/blocks/cyan_valve_handle.json fd309e1d39dcbcb25c3361edecd8c9afa0f847d0 data/create/loot_tables/blocks/dark_oak_window.json 58e6307ba0efa65a0715662a391fe7dc6fba0c68 data/create/loot_tables/blocks/dark_oak_window_pane.json @@ -2668,12 +2668,12 @@ feca8a1f62e0e13fcb2252d5f782d74938b84431 data/create/loot_tables/blocks/granite_ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/gray_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/gray_sail.json d014357b3a467b23473c8223f32471a04a9ff94c data/create/loot_tables/blocks/gray_seat.json -bfe072e94774289c9d011d68b1cea04cf740fc75 data/create/loot_tables/blocks/gray_toolbox.json +6de2bd9b109e4d396ce20c346d315a06804a5c2c data/create/loot_tables/blocks/gray_toolbox.json 35f916fd0f8465a070270615dbddd716ff68d5bb data/create/loot_tables/blocks/gray_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/green_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/green_sail.json a71599eecd3f1179e3d0367623460e798828aa6d data/create/loot_tables/blocks/green_seat.json -7f0179039e85cb61f60aa1db49bb8c45ce58207d data/create/loot_tables/blocks/green_toolbox.json +751b7548e1ce94770a4fd09fb148567936b6aef7 data/create/loot_tables/blocks/green_toolbox.json 865ebead9601b29e6326dc9e1d4c1ca92f3b7a3b data/create/loot_tables/blocks/green_valve_handle.json 9bdc47ea3ffc52f037f12f40f387e6b72a352c4e data/create/loot_tables/blocks/hand_crank.json c61b386376d19aaf89df3447a26b976a672efec5 data/create/loot_tables/blocks/haunted_bell.json @@ -2697,17 +2697,17 @@ fa8a5922f7346a15a80b5c7e5dfc26d24ea98728 data/create/loot_tables/blocks/layered_ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/light_blue_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_blue_sail.json b403848d3a4b4ad7a048e70c21e200e40d0c67e3 data/create/loot_tables/blocks/light_blue_seat.json -f99311437dd0ba8b13dee786bf10a50879386981 data/create/loot_tables/blocks/light_blue_toolbox.json +8278917f506837483c1e22f6f098e11497150301 data/create/loot_tables/blocks/light_blue_toolbox.json 32afe3fff74ccda4151567961fa6c0b8e3735358 data/create/loot_tables/blocks/light_blue_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/light_gray_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_gray_sail.json 0cc2b20cb6e2dae6cf9d759c85926663f6066c99 data/create/loot_tables/blocks/light_gray_seat.json -21bd11fba85a8dc66f6c97df3863ccc496602fde data/create/loot_tables/blocks/light_gray_toolbox.json +3abcbeb2dcec021626923ed92ff78774965144f6 data/create/loot_tables/blocks/light_gray_toolbox.json 8cc64a1dfb7ce7be2c063248d912c68ad2fe999c data/create/loot_tables/blocks/light_gray_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/lime_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/lime_sail.json f7893090c6ecb4862c90c408b7f9ce8316f8b608 data/create/loot_tables/blocks/lime_seat.json -a9ea20a8dce75489356e0124c218dce0c25dd1fc data/create/loot_tables/blocks/lime_toolbox.json +b3c6fa642315e930308e5d77363b61309b9f34a3 data/create/loot_tables/blocks/lime_toolbox.json cae6d16c8967164698efbce3b91018a8e79a81e9 data/create/loot_tables/blocks/lime_valve_handle.json 7dfd638cc6f0d22bbc8fcbdb7212a3bfc8c85223 data/create/loot_tables/blocks/limesand.json d476eed7b5f0c7438d2e517fc60cd23f19234056 data/create/loot_tables/blocks/limestone.json @@ -2725,7 +2725,7 @@ aa751d2e8a7889907c08c4bec6f6ca266230b6d7 data/create/loot_tables/blocks/linear_c d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/magenta_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/magenta_sail.json 9e5e017cd3b4f544f487a5ca22ef610a4addc8ec data/create/loot_tables/blocks/magenta_seat.json -66271e9a73981cfa07b3aa5abae845670f37afa4 data/create/loot_tables/blocks/magenta_toolbox.json +5ef413eccbc3b5bb7408ec76938a5d22dc016907 data/create/loot_tables/blocks/magenta_toolbox.json 517e983d7387ec0d86845d4cf3deaa6d68c71170 data/create/loot_tables/blocks/magenta_valve_handle.json e64c32da44b7e92dbef36fcb448c42b9bd9ae47c data/create/loot_tables/blocks/mechanical_arm.json 90ddf7b5c3b61758a4ad12a1e6ef16fe6ebf7794 data/create/loot_tables/blocks/mechanical_bearing.json @@ -2759,7 +2759,7 @@ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/nixie_tu 90cc4d5857f47c48e2b82f394de9567023c5c8ce data/create/loot_tables/blocks/oak_window_pane.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/orange_sail.json 2333aaea940816b6bc8454ba24e0c9f52af94ac0 data/create/loot_tables/blocks/orange_seat.json -de05f444ab1776b77e4d9e50411feb26530f2473 data/create/loot_tables/blocks/orange_toolbox.json +a7afe3ca51fb2d6986521c13a9180466791861fb data/create/loot_tables/blocks/orange_toolbox.json 13338687962ef5b48dd9d142a2a862637d5c6953 data/create/loot_tables/blocks/orange_valve_handle.json 267e9e24fac93e3496a80fcb6ed8e9d1c329d2d2 data/create/loot_tables/blocks/ornate_iron_window.json 1fe77a16f4c86993b5fb30f1f48362787fd7cd0b data/create/loot_tables/blocks/ornate_iron_window_pane.json @@ -2812,7 +2812,7 @@ d3e4ab984aef19ee21a1c5b868eb3fde96c05afd data/create/loot_tables/blocks/paved_we d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/pink_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/pink_sail.json 6f32e1217986407e41358e9417de63602c78e810 data/create/loot_tables/blocks/pink_seat.json -0185cbfd1e039a2c7c1b625561049706adf02931 data/create/loot_tables/blocks/pink_toolbox.json +144ff16d50db20e2696cdfaacac88a4ca186b4cc data/create/loot_tables/blocks/pink_toolbox.json d85b09659f08a73513c57b1b2e5ec7fc4b6f340a data/create/loot_tables/blocks/pink_valve_handle.json 1087b6c6d88dc7c71ed81e1d3e180fe065e6d098 data/create/loot_tables/blocks/piston_extension_pole.json 05302657546d8d410e367e84d4d5e01f01523236 data/create/loot_tables/blocks/polished_dark_scoria.json @@ -2848,13 +2848,13 @@ e8fb62c91226ac107dee45c5ebc54c8dd0aee224 data/create/loot_tables/blocks/pulse_re d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/purple_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/purple_sail.json d7f6caa568e6508177a644fb78dc18ce26c9b2c0 data/create/loot_tables/blocks/purple_seat.json -06c233a9a1aeec64fbd41d3134555ebc535de965 data/create/loot_tables/blocks/purple_toolbox.json +da0e4ad8e4f0eef1a1bcbbf8f2a982ee8ba8b2c7 data/create/loot_tables/blocks/purple_toolbox.json 773e4dc856044dabfe9d2323cbda0460dfb626ee data/create/loot_tables/blocks/purple_valve_handle.json 768420dab8785909891e52c4d77a182d99ba11d3 data/create/loot_tables/blocks/radial_chassis.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/red_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/red_sail.json 71b0fa3b174efe94a2a735ab2426c376c0ef674a data/create/loot_tables/blocks/red_seat.json -2f15d3f98121a4a1348bd3c44c59cbb52619b12e data/create/loot_tables/blocks/red_toolbox.json +e98fa3371baa09502f414deef8a51813db6261f9 data/create/loot_tables/blocks/red_toolbox.json 59ee0fd35978068fbce0882e0b207db7eeb202c0 data/create/loot_tables/blocks/red_valve_handle.json f5907a694206facc01f61f3428f72488486761c7 data/create/loot_tables/blocks/redstone_contact.json 886a0c1386fb12104b736a15689030aaff771270 data/create/loot_tables/blocks/redstone_link.json @@ -2912,14 +2912,14 @@ e3969f1c5966c4992b3280a06e1d6c5000c37df5 data/create/loot_tables/blocks/weighted d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/white_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/white_sail.json 969eda31556feb5a68e350762848d17453275fee data/create/loot_tables/blocks/white_seat.json -7c210ac011b1eda2255773278ae7daa59b1576aa data/create/loot_tables/blocks/white_toolbox.json +4fa07ea92bc0adff6bfddc2d106ca2ee405e9347 data/create/loot_tables/blocks/white_toolbox.json 79fe374f8e677088f928a3a49ff5eeed6128d165 data/create/loot_tables/blocks/white_valve_handle.json 941ea78ea7c0f0061c3d3569ecea333ae6a16bf1 data/create/loot_tables/blocks/windmill_bearing.json 728c8719e653825c030913df94ce845fdc6d79b7 data/create/loot_tables/blocks/wooden_bracket.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/yellow_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/yellow_sail.json 37ead431a278928a09b260ae06a448e2c791a73e data/create/loot_tables/blocks/yellow_seat.json -cbe175f9036f0de82d4f8a03aa0e932a37d25ea3 data/create/loot_tables/blocks/yellow_toolbox.json +66df605afd40132f19f08b0a7f98c32596ba1ce7 data/create/loot_tables/blocks/yellow_toolbox.json 899bb208908a2f9bec5e544ff47526f3e24db720 data/create/loot_tables/blocks/yellow_valve_handle.json 94661e726b3d19271550359ae898a5590939512e data/create/loot_tables/blocks/zinc_block.json 37248ca92d474e440b91c27e3c8e78e568328100 data/create/loot_tables/blocks/zinc_ore.json @@ -3008,16 +3008,16 @@ cc56d21a25286a9024e506dde9fa161230eaf46d data/create/recipes/crafting/kinetics/a cf1f3a6306d47025cebe153cf05949ef69ccbe5a data/create/recipes/crafting/kinetics/attribute_filter.json 059d12526529b2896ed583555373afa31839a0de data/create/recipes/crafting/kinetics/basin.json dcf98e667d321fb4bd9fa6dfec7927a84cdbd5d6 data/create/recipes/crafting/kinetics/belt_connector.json -1123903a11b13448b61cf8f8a5dc2e8013d39ac0 data/create/recipes/crafting/kinetics/black_seat.json -a6243a671bf852a6f92e1927e234ecf23b1c903d data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json -c237d1cd362454b25d3756e742c4a2237b5ec2db data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json -0b747fc291b86fa14f86569160d56a48a15c69d3 data/create/recipes/crafting/kinetics/blue_seat.json -30240bae036699b8c9404893983cb7b70332159e data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json -249c1f67d8b56262d286a027d50023e5d672b1c9 data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +2e40aee7ff7b5518a56ac9b042b925caecac7528 data/create/recipes/crafting/kinetics/black_seat.json +f1f831df77345ade0b62837bb1fb45ad1c763405 data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +d02a23b12abe105660ae613e69979cc7e86bfbca data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +19cf1b77431fc50bee7c7adae51c5025b5f0b6bc data/create/recipes/crafting/kinetics/blue_seat.json +6e03e06a20832116a1daa1a2ebe781b9cb44cb0d data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +f7ed975f13585273832f12d9f28808e0215308af data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json 23fe800a45e81a08eb0aa732c5cb52e4e8ebfe86 data/create/recipes/crafting/kinetics/brass_hand.json -c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/brown_seat.json -a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json -43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +23b98f9772b1567172607cb0aecc65e2fdd933de data/create/recipes/crafting/kinetics/brown_seat.json +ab3b69d035dae7fe696f5dd983d7018649f466a2 data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +9eab21724f64455376c12b14f42a09a3af547201 data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json 860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json abf8a28b4b8ae4ba15beed938736ef3a5a7b27ff data/create/recipes/crafting/kinetics/chute.json a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json @@ -3028,11 +3028,11 @@ e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/c 886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json 59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json cc2ab4b619aa55c03db18b67a62e12b6089e7019 data/create/recipes/crafting/kinetics/cuckoo_clock.json -f11892864a26c4ba79eb46d890a1a4bd96a1ad93 data/create/recipes/crafting/kinetics/cyan_seat.json -8c35fd379244f72f73e1be6115ed8f5f5484f599 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json -dc62d932f6a3723e050cb043fea233efd685f775 data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +67583ae5a8c9f71e3856a1787c6650c34070428e data/create/recipes/crafting/kinetics/cyan_seat.json +6c4d1e8f5b903cc804330a799ad20df59c427d05 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +40018bc6f631c443279c410dc7c5765060f7446a data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/deployer.json -be86df1c4d7af14bc5dcfe044d07c03b6c6d2a75 data/create/recipes/crafting/kinetics/depot.json +2fe66b3d37ff5b0f7f30d5baa4efd713dd8b502a data/create/recipes/crafting/kinetics/depot.json 9c5d30f25a130d591b924c50e5c83e3b787c2758 data/create/recipes/crafting/kinetics/empty_blaze_burner.json 73cd487885be8d5190f24319b4a927b8e34c21cd data/create/recipes/crafting/kinetics/encased_chain_drive.json b07496e4ba5bc56a2c5a395b612c68ba21328867 data/create/recipes/crafting/kinetics/encased_fan.json @@ -3047,30 +3047,30 @@ f4ae37f736d06ccda5fbba7831a7a174ec916a05 data/create/recipes/crafting/kinetics/f b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json 4d4124b4f1df38d892cb19da19c6464522d3e37d data/create/recipes/crafting/kinetics/gearshift.json 5b07af1b09125f874500c3fb140efda90061a19e data/create/recipes/crafting/kinetics/goggles.json -beb7715310352988d5a58d1b39c62f02544795f8 data/create/recipes/crafting/kinetics/gray_seat.json -14e8927183f91c09a2d96fd68d1a722d192b29e8 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json -b7fa20d10c0e0e7270b1c0d6f3881b8e25b39bea data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json -9899501f18e7f3452d4ab4bf658079ab414aa176 data/create/recipes/crafting/kinetics/green_seat.json -6f65a84e00f25d956a6ae834678ff781569b243a data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json -63edaccace961a65aa7bd406d36894c7ca4816b8 data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +4e6db62bd4e72a5b19db4ed634c273cd7206ec61 data/create/recipes/crafting/kinetics/gray_seat.json +89ff5b0b6e78221b78d1daff0401b4a32eccb213 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +8fc378f0641dee74ca17e4fe94f64930f48a5072 data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +01fbdedbb05c66a207784cae902484245c1d6f62 data/create/recipes/crafting/kinetics/green_seat.json +9a11f2a6d34cb0031392c32bffc70c5f5e0bfeed data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +574e32cd8c194576a1c060cfcd7476bcc3f319df data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json 9f08bdaeec88e04a43c2dc103869f9648deee079 data/create/recipes/crafting/kinetics/hand_crank.json d10639b0c3999481531fe0a9383a1bb4af60225e data/create/recipes/crafting/kinetics/hose_pulley.json f4fbb11ef55f3431bd387f3f6f258513bfbc8011 data/create/recipes/crafting/kinetics/item_drain.json 237541c1c318b8426734c1c43be31fbd01413d39 data/create/recipes/crafting/kinetics/large_cogwheel.json -a33e3301fc6d3a446e61a1c4b8a93aff079baeba data/create/recipes/crafting/kinetics/light_blue_seat.json -958bb5d3aeb8d8e5dbf5d97cf5fd9ff5151575dc data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json -df1942d27ce3d0548872fe39d3cac24af3122b61 data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json -9531407075ad027e01063aeabc40ae3e4c100df3 data/create/recipes/crafting/kinetics/light_gray_seat.json -fb66f55b31a60f2168d3b9e80a56ecadebb1db75 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json -e78fec9814d6d0c5c4669c17a8f4d86979972624 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json -3e18f619a50c1e5fabd6d3acc6d029e4cfec661f data/create/recipes/crafting/kinetics/lime_seat.json -d214afbd44e580f5fd1ebb4f16f07ffe34d87cba data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json -505a6d895319b1c73509045ecf5d9dc4e8554cde data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +0397b107ab380cd23390c96f298971a70e9bceef data/create/recipes/crafting/kinetics/light_blue_seat.json +aa06f0594e1b2d31aa41bace309ed95a16529498 data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +bb8759b51aef768fa841962b9ad49676a6096a1c data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +31b9cb3b37118ff339acbba4fcb13bd18983ce24 data/create/recipes/crafting/kinetics/light_gray_seat.json +7bdf2f1b8829fc2fc2db4b325867bb0c1e7daf47 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +b83f189682a8d5426895687c84a9ed90b42f7220 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +8eb806f51491ecd30bf22ac6b28d6f92c4c150a4 data/create/recipes/crafting/kinetics/lime_seat.json +70f75291e20b72140f7893f67c062e5e6800ce51 data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +49a2bedd4ea900eef269006b27635e191f4b364b data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json 61332f88f51bbd465ee0da879e706b994710d949 data/create/recipes/crafting/kinetics/linear_chassis.json 9bf76daab65d048a135d70db522989ebc77ccaf1 data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json -d7d96071874a87edf7bbdcf7a462f95a130d2991 data/create/recipes/crafting/kinetics/magenta_seat.json -5836881feef8fa8b18e4cceb9c3a9a2748b8cf3a data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json -2ea43d6527dcb734578067ff442ec20395b0093b data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +fd0fced8aa6ae01ffb1dc0f55ec5d8522d864a02 data/create/recipes/crafting/kinetics/magenta_seat.json +ba2fb8e07f03b376d3629262b2eaeda988e76af2 data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +631039797c71547fb4fe33ab5cb688e222f123ae data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json 659cd6acdd15511c4b0a396740118b99b76a619d data/create/recipes/crafting/kinetics/mechanical_arm.json 946389078db31de69a7dc4fec5feebddf48dcfc3 data/create/recipes/crafting/kinetics/mechanical_bearing.json a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/mechanical_crafter.json @@ -3080,7 +3080,7 @@ a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/m ac9003ad3320fe2009c1793a3c6e86bdf20ca832 data/create/recipes/crafting/kinetics/mechanical_piston.json 8a2f9068d6fab81f46699f897e619461ca89e38f data/create/recipes/crafting/kinetics/mechanical_plough.json ce8e269907aae5549cea04141bd231f4a20e6453 data/create/recipes/crafting/kinetics/mechanical_press.json -5a685078d3c9d7dbe68080b7b6f2a44fc41582c5 data/create/recipes/crafting/kinetics/mechanical_pump.json +4307cc2c988ac19602f2f86afa2146c7e7fef026 data/create/recipes/crafting/kinetics/mechanical_pump.json ce28bcb47a379976d4a1bdfcfd1cdd0bae0bcdae data/create/recipes/crafting/kinetics/mechanical_saw.json 353146e9501096b4cd9632ad5500b0a2406c6f5d data/create/recipes/crafting/kinetics/metal_bracket.json 58d9046e61eae40958181388186a35dc07cc9a59 data/create/recipes/crafting/kinetics/millstone.json @@ -3088,23 +3088,23 @@ ce28bcb47a379976d4a1bdfcfd1cdd0bae0bcdae data/create/recipes/crafting/kinetics/m be4c7fdb0ba1e9ee6d3dcf200dc2718ad83ec8fb data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json 99935fbbb83fe102454096a2dcafe09d572d9ad3 data/create/recipes/crafting/kinetics/nixie_tube.json 6b1b626394d7269a6861a836992ccdb344b6e7dd data/create/recipes/crafting/kinetics/nozzle.json -9c41cd91a0716d591ed6d1b5128ec731b418850f data/create/recipes/crafting/kinetics/orange_seat.json -a8da214f0a521be1204b669f118348a142bc9a3d data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json -2fa6b1dd7fe3c8d5bb60345d6b7c5213a54d7e31 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json -af871a02d363a619fff8e9dde753aa417b265a80 data/create/recipes/crafting/kinetics/pink_seat.json -840dc5aac716e3d1b79883e8db4bf56f2dc427f9 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json -7e73bcde2b599f1ae5a241dd707c8ab6ce8c5a6e data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +4088c9f8d9d74495860c2d0102277f5af1c22893 data/create/recipes/crafting/kinetics/orange_seat.json +7d87c973228c6a6705ed106ea7c195866f9f4f63 data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +1f404bfa8381f4734b66a6e03dd4f4e8ad3fa7d2 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +d41f850475814e099f21b7232596c1ba12d30798 data/create/recipes/crafting/kinetics/pink_seat.json +e6997dae188b5b07b5ca33c0843628dc73df1cc1 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +7b57fdc904ad0cf8cda25fca8f7008d0268a3d64 data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json 5399c3496a90bed9428c48fdd334ad4f763cbf9a data/create/recipes/crafting/kinetics/piston_extension_pole.json a8e996bed77d3d20725f9d592c250392b3adb106 data/create/recipes/crafting/kinetics/portable_fluid_interface.json 7ed5699349faf2981228769c873057105a5ea3ea data/create/recipes/crafting/kinetics/portable_storage_interface.json 16199a6729005a279854cb1838401f6e73bdebae data/create/recipes/crafting/kinetics/propeller.json -76ba751b65d312d1b34229d76fff2111b593091a data/create/recipes/crafting/kinetics/purple_seat.json -e6c462d64e1de9c7fca95f9c9a25b8d1575979da data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json -9332957af2e72dee5fc78abcf1995773e08f7561 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +b90fdb1047afc234b126a071fb7ddad003203db2 data/create/recipes/crafting/kinetics/purple_seat.json +8be4a393acce649d57178a62f81705abcd919a56 data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +5e630362d97da5ebc8148f890115a1c5265e8a46 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json af84b939ced1c0254a27469f857f571afbadc4f6 data/create/recipes/crafting/kinetics/radial_chassis.json -1059f08b016e1c222f13bd9976d0fcd8fc982619 data/create/recipes/crafting/kinetics/red_seat.json -0827e86e4b5f9d7023ccc19922bcbbaefd5b42d8 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json -5a10019d23726940152e26af3239d55d16bc7880 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +419a93ed1f41a20936a7d66f7271da0a0be4d593 data/create/recipes/crafting/kinetics/red_seat.json +c0c248fa1b8d8d8cb63d3c299e8b35c72b0aab03 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +73c8d12da8a5d9ec8a0d0d5c413bc2f66e463e81 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json af525e135eb927b64462120d201ecae7a7ec61ed data/create/recipes/crafting/kinetics/rope_pulley.json 1b918eb77b3e0fb2234c4c2c0d52e730ae7f3ffa data/create/recipes/crafting/kinetics/rotation_speed_controller.json d0d7fb94621f6f02fa3137666f20e677022d9d5b data/create/recipes/crafting/kinetics/sail_frame.json @@ -3126,15 +3126,15 @@ af5854ee2fa3be195ad9abcdeebe6ed7306b651c data/create/recipes/crafting/kinetics/s 06b5b371ae9dd81df8fd3dee6d3559b1ed0db35c data/create/recipes/crafting/kinetics/weighted_ejector.json f508d510576c93712e7f5265345a32e8818bbf0d data/create/recipes/crafting/kinetics/whisk.json d80a741d2f0d4f742217b43d7e4d37f003ec9f9d data/create/recipes/crafting/kinetics/white_sail.json -f4d88aa2edea548d29cf2678a111d8bb5db7720a data/create/recipes/crafting/kinetics/white_seat.json -7e0d276cd56f04f35d02c25810bffdf8fc297fcd data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json -4d3890621caa0bdbb752a395c1f5761dbbc1121e data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +61894b1302aef9413ca263eb89c3d9f4cfb92239 data/create/recipes/crafting/kinetics/white_seat.json +ceb3d574336ce5ff151db080fe517ba43ff77a49 data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +54a182603347c2d8898f9990f1536128611af749 data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json 8508255518d3718a0d8c2f536f69ffe9ed48a855 data/create/recipes/crafting/kinetics/windmill_bearing.json d11eee4005372b1d0fad283b28c8016d823b5e37 data/create/recipes/crafting/kinetics/wooden_bracket.json 3ec8bb5660656f1c676035d8ba5460462c1d1865 data/create/recipes/crafting/kinetics/wrench.json -5579e58473474c4e59efd1ee39ddf0140d66b618 data/create/recipes/crafting/kinetics/yellow_seat.json -f055d233ac7ee9eac840a658afa01bedd793ff38 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json -19c5c8bddeec51c9b47183c728e9ec4313c54410 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +8b7ca850a23126fd7d65084cbc6506145efee7af data/create/recipes/crafting/kinetics/yellow_seat.json +c574b993d49874bbed5d064205c436271dfa27b8 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +19333b83d10e307d715b5667b8623915880e1861 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json 3f6f3a547dc06c9462da880360f29b49ac3f5e2a data/create/recipes/crafting/logistics/adjustable_crate.json c465151b64381e2222203bf069b717435fdc2b26 data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json 34bcdffae0b104829161c86b7d161068f890daa2 data/create/recipes/crafting/logistics/adjustable_repeater.json 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 4f99e411c..2f1f4b18c 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: 1173", + "_": "Missing Localizations: 1010", "_": "->------------------------] Game Elements [------------------------<-", @@ -21,7 +21,7 @@ "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", "block.create.andesite_encased_shaft": "Andesitummantelte Welle", - "block.create.andesite_funnel": "Andesit Trichter", + "block.create.andesite_funnel": "Andesittrichter", "block.create.andesite_pillar": "Andesitsäule", "block.create.andesite_tunnel": "Andesittunnel", "block.create.basin": "Behälter", @@ -63,7 +63,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steuerungsschiene", + "block.create.controller_rail": "Steureungsschiene", "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", @@ -556,7 +556,7 @@ "advancement.create.overstressed": "Überfordert", "advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.", "advancement.create.belt": "Befördere es alles", - "advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen", + "advancement.create.belt.desc": "Verbinde zwei Wellen mit einem Mechanischem Riemen", "advancement.create.tunnel": "Geht in Deckung!", "advancement.create.tunnel.desc": "Verschönere deinen Mechanischem Riemen mit einem Tunnel.", "advancement.create.splitter_tunnel": "Divide & Conquer", @@ -565,96 +565,96 @@ "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", "advancement.create.upward_chute": "Luftentführung", "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", + "advancement.create.belt_funnel": "Klappernde Klappen", + "advancement.create.belt_funnel.desc": "Platziere einen seitwärts schauenden Riementrichter auf einem Förderband oder einem Depot um einen speziellen Typ zu erstellen.", + "advancement.create.belt_funnel_kiss": "Die Hühnchen und die Klappen", + "advancement.create.belt_funnel_kiss.desc": "Lasse zwei an Mechanischen Riemen befestigte Riementrichter sich küssen.", "advancement.create.fan": "Mechanischer Luftbändiger", "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", - "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a hose pulley and watch it drain or fill a body of fluid.", - "advancement.create.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", + "advancement.create.fan_lava": "geothermische Heizung", + "advancement.create.fan_lava.desc": "Bleibe in einem Luftzug, der Dinge schmilzt, hängen.", + "advancement.create.fan_water": "Verrücktes Waschen", + "advancement.create.fan_water.desc": "Bleibe in einem Luftzug, der Dinge wäscht, hängen.", + "advancement.create.fan_smoke": "Mechanischer Balg", + "advancement.create.fan_smoke.desc": "Bleibe in einem Luftzug, der Items räuchert, hängen.", + "advancement.create.wrench": "Komfortabel Einstellen", + "advancement.create.wrench.desc": "Stelle einen Schraubenschlüssel her, der beim Bauen von Vorrichtungen hilft. ", + "advancement.create.goggles": "Stress-O-Vision", + "advancement.create.goggles.desc": "Stelle Ingenieursbrillen her, die beim Bekommen von kinetischen Informationen von Bauteilen, hilft.", + "advancement.create.speedometer": "Aber wie schnell genau?", + "advancement.create.speedometer.desc": "Platziere und schalte ein Tachometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.stressometer": "Aber wie belastet genau?", + "advancement.create.stressometer.desc": "Platziere und schalte ein Stressometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.aesthetics": "Boom, Ästhetik!", + "advancement.create.aesthetics.desc": "Plaziere Halterungen an Wellen, Rohren und Zahnrädern.", + "advancement.create.reinforced": "Boom, verstärkt!!", + "advancement.create.reinforced.desc": "Verwende passende Rahmen für Wellen, Rohre und Riemen.", + "advancement.create.water_wheel": "Angespannte Hydraulik", + "advancement.create.water_wheel.desc": "Plaziere ein Wasserrad und versuche es zum drehen zu bringen!", + "advancement.create.chocolate_wheel": "Leckere Energie", + "advancement.create.chocolate_wheel.desc": "Lasse ein Wasserad mit geschmolzerner Schokolade laufen.", + "advancement.create.lava_wheel": "Magmarad", + "advancement.create.lava_wheel.desc": "Das sollte nicht funktioniert haben.", + "advancement.create.cuckoo": "Ist es Zeit?", + "advancement.create.cuckoo.desc": "Bekomme mit, wie eine Kuckucksuhr Schlafenszeit ankündigt.", + "advancement.create.millstone": "Taschenmahlstein", + "advancement.create.millstone.desc": "Plaziere und aktiviere einen Mahlstein.", + "advancement.create.windmill": "Eine leichte Brise", + "advancement.create.windmill.desc": "Baue eine Windmühle.", + "advancement.create.maxed_windmill": "Eine starke Briese", + "advancement.create.maxed_windmill.desc": "Baue eine Windmühle mit maximaler stärke.", + "advancement.create.andesite_casing": "Das Andesit Alter", + "advancement.create.andesite_casing.desc": "Verwende Andesite Legierungen und Holz, um einen einfachen Rahmen zu erstellen.", + "advancement.create.mechanical_drill": "Stationäre Brecher", + "advancement.create.mechanical_drill.desc": "Plaziere und treibe einen Mechanischen Bohrer.", + "advancement.create.press": "Presse macht 'Bonk'!", + "advancement.create.press.desc": "Plaziere und treibe eine Mechanische Presse an um Bleche zu erstellen.", + "advancement.create.polished_rose_quartz": "Pinke Diamanten", + "advancement.create.polished_rose_quartz.desc": "Verwende ein Schmiergelpapier um Rosenquarz zu polieren bis er transparent wird.", + "advancement.create.electron_tube": "Piep piep", + "advancement.create.electron_tube.desc": "Mache ein paar Elektronenröhren, nützlich in weniger primitiven Maschienerien.", + "advancement.create.mechanical_saw": "Stationäres Hacken", + "advancement.create.mechanical_saw.desc": "Plaziere und verwende eine Mechanische Säge.", + "advancement.create.basin": "Beckenbetrieb", + "advancement.create.basin.desc": "Stelle ein Behälter auf und versuche Items reinzuwerfen.", + "advancement.create.mixer": "Misch es zusammen", + "advancement.create.mixer.desc": "Plaziere einen mechanischen Mixer über dem Behälter, treibe ihn an und starte mit dem Mixen von Zutaten.", + "advancement.create.blaze_burner": "Ein lebender Kamin", + "advancement.create.blaze_burner.desc": "Bekomme einen Lohenbrenner.", + "advancement.create.compact": "Automatische Verdichtunge", + "advancement.create.compact.desc": "Verwende eine Presse und einen Behälter um ein paar Items zu verdichten.", + "advancement.create.brass": "Tatsächliche Legierungen", + "advancement.create.brass.desc": "Verwende zerkleinertes Kupfererz und zerkleinertes Zinkerz um messing herzustellen.", + "advancement.create.brass_casing": "Das Messingzeitalter", + "advancement.create.brass_casing.desc": "Verwende das neu erhaltene Messing und etwas Holz, um mehr fortgeschrittene Rahmen herzustellen.", + "advancement.create.copper_casing": "Das Kupferzeitalter", + "advancement.create.copper_casing.desc": "Verwende Kupferbleche und Holz, um Kupferrahmen herzustellen.", + "advancement.create.spout": "Platsch", + "advancement.create.spout.desc": "Schaue einem Flüssigkeitsitem zu, wie es von einem Ausguss gefüllt wird.", + "advancement.create.spout_potion": "Globale Brauerei", + "advancement.create.spout_potion.desc": "Schaue einem Ausguss zu, wie er eine Flasche mit einem Trank füllt.", + "advancement.create.chocolate": "Eine Welt der Fantasie", + "advancement.create.chocolate.desc": "Bekomme einen Schokoladeneimer", + "advancement.create.item_drain": "Entwässerung", + "advancement.create.item_drain.desc": "Schaue einem mit Flüssigkeit gefülltem Item zu, wie es in einem Abfluss getrocknet wird.", + "advancement.create.chained_item_drain": "Lass es rollen!", + "advancement.create.chained_item_drain.desc": "Schaue einem Gegenstand zu, wie er über mehrere verbundene Abflüsse rollt.", + "advancement.create.glass_pipe": "Flussspion", + "advancement.create.glass_pipe.desc": "Beobachte durch ein Rohr mit Fenster, wie Flüssigkeiten durch ein Rohr fließen. Gerade Rohre bekommen ein Fenster, wenn du mit einem Schraubenschlüssel auf diese klickst.", + "advancement.create.pipe_collision": "Lass niemals die Ströme kreuzen!", + "advancement.create.pipe_collision.desc": "Schaue zwei Flüssigkeiten zu, wie sie sich in deinen Rohren treffen.", + "advancement.create.pipe_spill": "Da ist ein Leck!", + "advancement.create.pipe_spill.desc": "Schaue eiem offenem Rohrende zu, wie es Flüssigkeiten aufsaugt oder rauslässt.", + "advancement.create.hose_pulley": "Industrielles Verschütten", + "advancement.create.hose_pulley.desc": "Lass eine Umlenkrolle ab und schau ihr zu, wie sie Wasser aufsaugt oder rauslässt.", + "advancement.create.infinite_water": "Die Ozeane entwässern", + "advancement.create.infinite_water.desc": "Pumpe aus einem Gewässer, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_lava": "Den Kern des Planeten aufsaugen", + "advancement.create.infinite_lava.desc": "Pumpe aus einem Lavasee, der groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_chocolate": "In Fantasie ertrinken", + "advancement.create.infinite_chocolate.desc": "Pumpe aus einem Schokoladenbecken, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.crafter": "Automatisierte Montage", + "advancement.create.crafter.desc": "Plaziere und aktiviere ein paar Mechanische Handwerkseinheiten.", "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", @@ -1041,7 +1041,7 @@ "create.schematicannon.status.skipping": "Überspringen", "create.schematicannon.status.missingBlock": "Fehlender Block:", "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", + "create.schematicannon.status.clearing": "UNLOCALIZED: Clearing Blocks", "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", @@ -1058,75 +1058,75 @@ "create.gui.filter.ignore_data": "Ignoriere Daten", "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", + "create.item_attributes.placeable": "ist plazierbar", + "create.item_attributes.placeable.inverted": "ist nicht plazierbar", + "create.item_attributes.consumable": "kann man essen", + "create.item_attributes.consumable.inverted": "kann man nicht essen", "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.enchanted": "ist verzaubert", + "create.item_attributes.enchanted.inverted": "ist nicht verzaubert", + "create.item_attributes.max_enchanted": "ist mit dem maximalen Level verzaubert", + "create.item_attributes.max_enchanted.inverted": "ist nicht mit dem maximalen Level verzaubert", "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", + "create.item_attributes.damaged": "ist beschädigt", + "create.item_attributes.damaged.inverted": "ist nicht beschädigt", + "create.item_attributes.badly_damaged": "ist stark beschädigt", + "create.item_attributes.badly_damaged.inverted": "ist nicht stark beschädigt", + "create.item_attributes.not_stackable": "kann nicht gestapelt werden", + "create.item_attributes.not_stackable.inverted": "kann gestapelt werden", + "create.item_attributes.equipable": "kann ausgerüstet werden", + "create.item_attributes.equipable.inverted": "kann nicht ausgerüstet werden", + "create.item_attributes.furnace_fuel": "ist Brennstoff", + "create.item_attributes.furnace_fuel.inverted": "ist nicht Brennstoff", + "create.item_attributes.washable": "kann gewaschen werden", + "create.item_attributes.washable.inverted": "kann nicht gewaschen werden", + "create.item_attributes.crushable": "kann zerkleinert werden", + "create.item_attributes.crushable.inverted": "kann nicht zerkleinert werden", + "create.item_attributes.smeltable": "kann geschmolzen werden", + "create.item_attributes.smeltable.inverted": "kann nicht geschmolzen werden", + "create.item_attributes.smokable": "kann geräuchert werden", + "create.item_attributes.smokable.inverted": "kann nicht geräuchert werden", + "create.item_attributes.blastable": "ist im Schmelzofen schmelzbar", + "create.item_attributes.blastable.inverted": "ist nicht im Schmelzofen schmelzbar", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", + "create.item_attributes.in_tag": "ist mit %1$s makiert", + "create.item_attributes.in_tag.inverted": "ist nicht mit %1$s markoiert", + "create.item_attributes.in_item_group": "ist in der Gruppe '%1$s'", + "create.item_attributes.in_item_group.inverted": "ist nicht in der Gruppe '%1$s'", + "create.item_attributes.added_by": "wurde von %1$s hinzugefügt", + "create.item_attributes.added_by.inverted": "wurde nicht von %1$s hinzugefügt", + "create.item_attributes.has_enchant": "ist mit %1$s verzaubert", + "create.item_attributes.has_enchant.inverted": "ist nicht mit %1$s verzaubert", + "create.item_attributes.color": "ist %1$s gefärbt", + "create.item_attributes.color.inverted": "ist nicht %1$s gefärbt", + "create.item_attributes.has_fluid": "enthält %1$s", + "create.item_attributes.has_fluid.inverted": "enthält nicht %1$s", + "create.item_attributes.has_name": "hat den Benutzerdefinierten Namen %1$s", + "create.item_attributes.has_name.inverted": "hat nicht den benutzerdefinierten Namen %1$s", + "create.item_attributes.book_author": "wurde verfasst von %1$s", + "create.item_attributes.book_author.inverted": "wurde nicht von %1$s verfasst", + "create.item_attributes.book_copy_original": "ist ein Original", + "create.item_attributes.book_copy_original.inverted": "ist kein Original", + "create.item_attributes.book_copy_first": "ist die erste Kopie", + "create.item_attributes.book_copy_first.inverted": "ist nicht die erste Kopie", + "create.item_attributes.book_copy_second": "ist die zweite Kopie", + "create.item_attributes.book_copy_second.inverted": "ist nicht die Zweite Kopie", + "create.item_attributes.book_copy_tattered": "ist ein zerfetztes Durcheinander", + "create.item_attributes.book_copy_tattered.inverted": "sit kein zerfetztes Durcheinander", + "create.item_attributes.astralsorcery_amulet": "verbessert %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "verbessert nicht %1$s", + "create.item_attributes.astralsorcery_constellation": "ist abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "ist nicht abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_crystal": "hat das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "hat nicht das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_perk_gem": "hat das Vorteilsattribut %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "hat nicht das Vorteilsattribut %1$s", "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", @@ -1296,19 +1296,19 @@ "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", + "block.create.wooden_bracket.tooltip": "Holzhalterung", + "block.create.wooden_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem gemütlichem und hölzernem Stück Verstärkung.", - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", + "block.create.metal_bracket.tooltip": "Metallhalterung", + "block.create.metal_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem industriellem und robustem Stück Verstärkung.", - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", - "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", - "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", + "block.create.seat.tooltip": "Sitz", + "block.create.seat.tooltip.summary": "Setz dich hin und genieße die Fahrt! Der Sitz verankert den Spieler an einem sich bewegendem Apparat. Hervorragend auch für statische Möbel! Kommt in verschiedensten Farben.", + "block.create.seat.tooltip.condition1": "Rechtsklick auf den Sitz", + "block.create.seat.tooltip.behaviour1": "Setzt den Spieler auf den _Sitz_. Drücke L-Shift, um den _Sitz_ wieder zu verlassen.", - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", + "item.create.blaze_cake.tooltip": "Lohenkuchen", + "item.create.blaze_cake.tooltip.summary": "Ein leckeres Vergnügen für deine hart arbeitenden _Lohenbrenner_. Feuert die alle an!", "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", @@ -1335,7 +1335,7 @@ "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip": "Extendo Griff", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", @@ -1349,14 +1349,14 @@ "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip": "Filter", "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip": "Attribut Filter", "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", @@ -1388,15 +1388,15 @@ "block.create.schematicannon.tooltip": "BAUPLANKANONE", "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", + "block.create.schematicannon.tooltip.condition1": "Wenn gerechtsklickt", + "block.create.schematicannon.tooltip.behaviour1": "Öffnet das _Interface_", "block.create.schematic_table.tooltip": "BAUPLANTISCH", "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip": "Ingenieursbrille", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", diff --git a/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json index 0eb8a43f3..7f5a15047 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json index a7b223542..e3cb8b87b 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json index e84f83f1e..a40b0885f 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json index bad83e82e..42411a759 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json index 07541bf8e..1582b84b0 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json index 5cbc865a5..c7934d287 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json index d4fabb3c5..1eeff4fc1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json index 062539366..41db750d7 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json index 0761f4697..79fcfd19b 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json index 34eac7d29..8861b538c 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json index 22ebc019b..5849dd968 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json index 8ee137fce..803d7a0b1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json index ff7977799..a06da3e99 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json index 086d5361d..e5069cef1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json index 31e955723..96b2e2cb9 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json index ab79ef612..5741bdd6a 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json index 0d1fc1377..d87b3868d 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:black_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:black_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json index 22cc2ee46..da795d150 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/black" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:black_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json index 2a299aea9..cf85a80af 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/black" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:black_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json index d8e16e527..40ae1fc01 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:blue_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json index cb98a0313..184379895 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/blue" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json index d0ab35dc9..b8f654cae 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/blue" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:blue_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json index 524540853..c9bbb94d8 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:brown_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:brown_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json index 3c395ef26..c235414c7 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/brown" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:brown_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json index eb82a4f83..c491ef9c2 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/brown" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:brown_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json index 95da2741e..32c7f8447 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:cyan_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:cyan_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json index 6cdcf3826..0bcd0d5e3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/cyan" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:cyan_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json index ed3ad74ea..f8f9ca0fb 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/cyan" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:cyan_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json b/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json index 5c4648cc3..1a13c1789 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "I" - ], - "key": { - "A": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "create:andesite_alloy" }, - "I": { + { "item": "create:andesite_casing" } - }, + ], "result": { "item": "create:depot" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json index 288f7d995..1261ff8fb 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:gray_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json index e12a0bd21..6e472ad0a 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/gray" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json index 14aaac1c2..6d525bd1b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/gray" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:gray_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json index 0bd4c58cf..05eb6ec57 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:green_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:green_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json index 9184d9ad7..a78731775 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/green" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:green_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json index 28a61f2c4..8c6552c63 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/green" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:green_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json index 3d826a2e5..a401d1a5f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:light_blue_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:light_blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json index 2057239a0..89b591758 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_blue" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:light_blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json index 186c59e53..f2a88f843 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_blue" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:light_blue_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json index 250b3465b..90cf19431 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:light_gray_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:light_gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json index f8ef5e09c..b54bcfd87 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_gray" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:light_gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json index a5e2f0c52..623f0ab69 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_gray" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:light_gray_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json index c787ad26d..1ae1be949 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:lime_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:lime_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json index 77bf94c8a..b4cbd67da 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/lime" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:lime_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json index fbcf4548d..29ab04baf 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/lime" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:lime_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json index 2e36dc05c..67d64b8c2 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:magenta_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:magenta_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json index 07a2fd9e3..00b9203d3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/magenta" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:magenta_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json index ab8d6ab36..b2d86580f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/magenta" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:magenta_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json index 8b7f9e5a4..20d5b5d2b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "P": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "create:cogwheel" }, - "S": { + { "item": "create:fluid_pipe" } - }, + ], "result": { "item": "create:mechanical_pump" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json index 6f9449a12..a6dda903a 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:orange_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:orange_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json index 29c7f059d..2be9e7759 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/orange" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:orange_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json index 78de18ef1..bad0b3cc4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/orange" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:orange_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json index 4cf047acf..63e80102c 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:pink_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:pink_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json index c4031f9ca..6dcefcffe 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/pink" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:pink_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json index a04c92752..0ecaf8e09 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/pink" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:pink_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json index b813024fa..c234211fc 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:purple_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:purple_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json index 175400157..53b995add 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/purple" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:purple_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json index ae277c7fe..5e82705f3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/purple" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:purple_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json index 738c7fc87..9730ec5b1 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:red_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:red_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json index d7bc542a0..66a9430b4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/red" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:red_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json index 51598f0b1..05db7746c 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/red" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:red_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json index d47cef67a..fd0d850b3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:white_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:white_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json index 65a0ae6df..3b9651d6b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/white" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:white_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json index 71cfc416c..8c406be85 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/white" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:white_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json index 2c131df05..dc7f71838 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:yellow_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:yellow_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json index e215eb0da..66e4901c4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/yellow" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:yellow_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json index 4babd7f03..921aebf3f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/yellow" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:yellow_valve_handle" } diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 2927573f0..562d8fd86 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -183,7 +183,7 @@ import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.MaterialColor; import net.minecraft.client.renderer.RenderType; -import net.minecraft.data.ShapedRecipeBuilder; +import net.minecraft.data.ShapelessRecipeBuilder; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.item.Rarity; @@ -645,11 +645,9 @@ public class AllBlocks { String colourName = colour.getSerializedName(); return REGISTRATE.block(colourName + "_valve_handle", p -> ValveHandleBlock.dyed(p, colour)) .transform(BuilderTransformers.valveHandle(colour)) - .recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', colour.getTag()) - .define('-', AllItemTags.VALVE_HANDLES.tag) + .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(c.get()) + .requires(colour.getTag()) + .requires(AllItemTags.VALVE_HANDLES.tag) .unlockedBy("has_valve", RegistrateRecipeProvider.hasItem(AllItemTags.VALVE_HANDLES.tag)) .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle"))) .register(); @@ -986,18 +984,14 @@ public class AllBlocks { .texture("2", p.modLoc("block/seat/side_" + colourName))); }) .recipe((c, p) -> { - ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', DyeHelper.getWoolOfDye(colour)) - .define('-', ItemTags.WOODEN_SLABS) + ShapelessRecipeBuilder.shapeless(c.get()) + .requires(DyeHelper.getWoolOfDye(colour)) + .requires(ItemTags.WOODEN_SLABS) .unlockedBy("has_wool", RegistrateRecipeProvider.hasItem(ItemTags.WOOL)) .save(p, Create.asResource("crafting/kinetics/" + c.getName())); - ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', colour.getTag()) - .define('-', AllItemTags.SEATS.tag) + ShapelessRecipeBuilder.shapeless(c.get()) + .requires(colour.getTag()) + .requires(AllItemTags.SEATS.tag) .unlockedBy("has_seat", RegistrateRecipeProvider.hasItem(AllItemTags.SEATS.tag)) .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); }) @@ -1018,13 +1012,14 @@ public class AllBlocks { .simpleItem() .register(); - public static final BlockEntry SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) - .initialProperties(SharedProperties::wooden) - .properties(AbstractBlock.Properties::noOcclusion) - .blockstate(BlockStateGen.directionalBlockProvider(false)) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .simpleItem() - .register(); + public static final BlockEntry SAIL = + REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) + .initialProperties(SharedProperties::wooden) + .properties(AbstractBlock.Properties::noOcclusion) + .blockstate(BlockStateGen.directionalBlockProvider(false)) + .tag(AllBlockTags.WINDMILL_SAILS.tag) + .simpleItem() + .register(); public static final DyedBlockList DYED_SAILS = new DyedBlockList<>(colour -> { if (colour == DyeColor.WHITE) { @@ -1365,6 +1360,8 @@ public class AllBlocks { .setRolls(ConstantRange.exactly(1)) .add(ItemLootEntry.lootTableItem(block) .apply(CopyName.copyName(CopyName.Source.BLOCK_ENTITY)) + .apply(CopyNbt.copyData(CopyNbt.Source.BLOCK_ENTITY) + .copy("UniqueId", "UniqueId")) .apply(CopyNbt.copyData(CopyNbt.Source.BLOCK_ENTITY) .copy("Inventory", "Inventory"))))); }) 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 39d2c68f7..1c3061439 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -12,6 +12,7 @@ import javax.annotation.Nonnull; import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllFluids; import com.simibubi.create.AllItems; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; @@ -38,6 +39,7 @@ import com.simibubi.create.compat.jei.category.SpoutCategory; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; 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; import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.curiosities.toolbox.ToolboxScreen; @@ -62,6 +64,7 @@ import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; import mezz.jei.api.registration.IRecipeTransferRegistration; +import mezz.jei.api.registration.ISubtypeRegistration; import mezz.jei.api.runtime.IIngredientManager; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -124,8 +127,7 @@ public class CreateJEI implements IModPlugin { autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless) .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() - .size() > 1 && !MechanicalPressTileEntity.canCompress(r), - BasinRecipe::convertShapeless) + .size() > 1 && !MechanicalPressTileEntity.canCompress(r), BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.BASIN::get) .enableWhen(c -> c.allowShapelessInMixer) @@ -174,8 +176,8 @@ public class CreateJEI implements IModPlugin { .build(), deploying = register("deploying", DeployingCategory::new) - .recipeList( - () -> DeployerApplicationRecipe.convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.getType()))) + .recipeList(() -> DeployerApplicationRecipe + .convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.getType()))) .recipes(AllRecipeTypes.DEPLOYING) .catalyst(AllBlocks.DEPLOYER::get) .catalyst(AllBlocks.DEPOT::get) @@ -200,9 +202,8 @@ public class CreateJEI implements IModPlugin { autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() .size() == 1) - .recipes( - r -> (r.getType() == IRecipeType.CRAFTING && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) - && (r instanceof ShapedRecipe)) + .recipes(r -> (r.getType() == IRecipeType.CRAFTING + && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof ShapedRecipe)) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .enableWhen(c -> c.allowRegularCraftingInCrafter) .build(), @@ -233,10 +234,21 @@ public class CreateJEI implements IModPlugin { allCategories.forEach(registration::addRecipeCategories); } + @Override + public void registerFluidSubtypes(ISubtypeRegistration registration) { + PotionFluidSubtypeInterpreter interpreter = new PotionFluidSubtypeInterpreter(); + PotionFluid potionFluid = AllFluids.POTION.get(); + registration.registerSubtypeInterpreter(potionFluid.getSource(), interpreter); + registration.registerSubtypeInterpreter(potionFluid.getFlowing(), interpreter); + } + @Override public void registerRecipes(IRecipeRegistration registration) { ingredientManager = registration.getIngredientManager(); allCategories.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid()))); + + registration.addRecipes(ToolboxColoringRecipeMaker.createRecipes() + .collect(Collectors.toList()), VanillaRecipeCategoryUid.CRAFTING); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java new file mode 100644 index 000000000..807a7a190 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java @@ -0,0 +1,44 @@ +package com.simibubi.create.compat.jei; + +import java.util.List; + +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType; +import com.simibubi.create.foundation.utility.NBTHelper; + +import mezz.jei.api.ingredients.subtypes.IIngredientSubtypeInterpreter; +import mezz.jei.api.ingredients.subtypes.UidContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionUtils; +import net.minecraftforge.fluids.FluidStack; + +/* From JEI's Potion item subtype interpreter */ +public class PotionFluidSubtypeInterpreter implements IIngredientSubtypeInterpreter { + + @Override + public String apply(FluidStack ingredient, UidContext context) { + if (!ingredient.hasTag()) + return IIngredientSubtypeInterpreter.NONE; + + CompoundNBT tag = ingredient.getOrCreateTag(); + Potion potionType = PotionUtils.getPotion(tag); + String potionTypeString = potionType.getName(""); + String bottleType = NBTHelper.readEnum(tag, "Bottle", BottleType.class) + .toString(); + + StringBuilder stringBuilder = new StringBuilder(potionTypeString); + List effects = PotionUtils.getCustomEffects(tag); + + stringBuilder.append(";") + .append(bottleType); + for (EffectInstance effect : potionType.getEffects()) + stringBuilder.append(";") + .append(effect); + for (EffectInstance effect : effects) + stringBuilder.append(";") + .append(effect); + return stringBuilder.toString(); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java new file mode 100644 index 000000000..67321cf1d --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java @@ -0,0 +1,52 @@ +package com.simibubi.create.compat.jei; + +import java.util.Arrays; +import java.util.stream.Stream; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.Create; + +import net.minecraft.block.Block; +import net.minecraft.item.DyeColor; +import net.minecraft.item.DyeItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.ICraftingRecipe; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.item.crafting.ShapelessRecipe; +import net.minecraft.tags.ITag; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; + +public final class ToolboxColoringRecipeMaker { + + // From JEI's ShulkerBoxColoringRecipeMaker + public static Stream createRecipes() { + String group = "create.toolbox.color"; + ItemStack baseShulkerStack = AllBlocks.TOOLBOXES.get(DyeColor.BROWN) + .asStack(); + Ingredient baseShulkerIngredient = Ingredient.of(baseShulkerStack); + + return Arrays.stream(DyeColor.values()) + .filter(dc -> dc != DyeColor.BROWN) + .map(color -> { + DyeItem dye = DyeItem.byColor(color); + ItemStack dyeStack = new ItemStack(dye); + ITag colorTag = color.getTag(); + Ingredient.IItemList dyeList = new Ingredient.SingleItemList(dyeStack); + Ingredient.IItemList colorList = new Ingredient.TagList(colorTag); + Stream colorIngredientStream = Stream.of(dyeList, colorList); + Ingredient colorIngredient = Ingredient.fromValues(colorIngredientStream); + NonNullList inputs = + NonNullList.of(Ingredient.EMPTY, baseShulkerIngredient, colorIngredient); + Block coloredShulkerBox = AllBlocks.TOOLBOXES.get(color) + .get(); + ItemStack output = new ItemStack(coloredShulkerBox); + ResourceLocation id = Create.asResource(group + "." + output.getDescriptionId()); + return new ShapelessRecipe(id, group, output, inputs); + }); + } + + private ToolboxColoringRecipeMaker() {} + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java index 2c4c78fa2..a6050336d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java @@ -221,6 +221,12 @@ public class ConnectedInputHandler { data.clear(); nbt.getList("Data", NBT.TAG_COMPOUND) .forEach(inbt -> data.add(NBTUtil.readBlockPos((CompoundNBT) inbt))); + + // nbt got wiped -> reset + if (data.isEmpty()) { + isController = true; + data.add(BlockPos.ZERO); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index 87f3a9e93..e9664f9cf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -132,6 +132,17 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { return MechanicalCrafterBlock.getTargetDirection(getBlockState()); } + @Override + public void writeSafe(CompoundNBT compound, boolean clientPacket) { + super.writeSafe(compound, clientPacket); + if (input == null) + return; + + CompoundNBT inputNBT = new CompoundNBT(); + input.write(inputNBT); + compound.put("ConnectedInput", inputNBT); + } + @Override public void write(CompoundNBT compound, boolean clientPacket) { compound.put("Inventory", inventory.serializeNBT()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java index c27d87133..c663fc1b8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java @@ -149,11 +149,6 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { if (level.isClientSide) setPos(getX(), getY(), getZ()); } - - Vector3d motion = getDeltaMovement(); - move(motion.x, motion.y, motion.z); - if (ContraptionCollider.collideBlocks(this)) - getController().collided(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java index e5d8c1c9f..3461ee9e9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java @@ -16,8 +16,6 @@ public interface IControlContraption { public boolean isValid(); - public void collided(); - public BlockPos getBlockPosition(); static enum MovementMode implements INamedIconOptions { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java index cc9769c8a..a103a5f3f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.BottomlessItemHandler; @@ -32,6 +33,9 @@ public class MountedStorage { public static boolean canUseAsStorage(TileEntity te) { if (te == null) return false; + + if (te instanceof MechanicalCrafterTileEntity) + return false; if (AllTileEntities.ADJUSTABLE_CRATE.is(te)) return true; @@ -109,7 +113,7 @@ public class MountedStorage { // FIXME: More dynamic mounted storage in .4 if (handler instanceof BottomlessItemHandler) return; - + LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); IItemHandler teHandler = capability.orElse(null); if (!(teHandler instanceof IItemHandlerModifiable)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index 290b64872..c50930451 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -367,9 +367,6 @@ public class ClockworkBearingTileEntity extends KineticTileEntity super.setRemoved(); } - @Override - public void collided() {} - @Override public boolean isAttachedTo(AbstractContraptionEntity contraption) { if (!(contraption.getContraption() instanceof ClockworkContraption)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 650fda752..7c69bac99 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -287,9 +287,6 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity return !isRemoved(); } - @Override - public void collided() {} - @Override public boolean isAttachedTo(AbstractContraptionEntity contraption) { return movedContraption == contraption; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index a4f3b1671..d162cc6fd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -5,6 +5,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.IControlContraption; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; @@ -105,18 +106,25 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if ((int) newOffset != (int) offset) visitNewPosition(); + if (contraptionPresent) { + if (moveAndCollideContraption()) { + movedContraption.setContraptionMotion(Vector3d.ZERO); + offset = getGridOffset(offset); + resetContraptionToOffset(); + collided(); + return; + } + } + if (!contraptionPresent || !movedContraption.isStalled()) offset = newOffset; - if (contraptionPresent) - applyContraptionMotion(); - int extensionRange = getExtensionRange(); if (offset <= 0 || offset >= extensionRange) { offset = offset <= 0 ? 0 : extensionRange; if (!level.isClientSide) { - applyContraptionMotion(); - applyContraptionPosition(); + moveAndCollideContraption(); + resetContraptionToOffset(); tryDisassemble(); if (waitingForSpeedChange) { forceMove = true; @@ -192,7 +200,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if (!clientPacket) return; if (forceMovement) - applyContraptionPosition(); + resetContraptionToOffset(); else if (running) { clientOffsetDiff = offset - offsetBefore; offset = offsetBefore; @@ -239,28 +247,31 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity disassemble(); } - @Override - public void collided() { + protected boolean moveAndCollideContraption() { + if (movedContraption == null) + return false; + if (movedContraption.isStalled()) { + movedContraption.setContraptionMotion(Vector3d.ZERO); + return false; + } + + Vector3d motion = getMotionVector(); + movedContraption.setContraptionMotion(getMotionVector()); + movedContraption.move(motion.x, motion.y, motion.z); + return ContraptionCollider.collideBlocks(movedContraption); + } + + protected void collided() { if (level.isClientSide) { waitingForSpeedChange = true; return; } offset = getGridOffset(offset - getMovementSpeed()); - applyContraptionPosition(); + resetContraptionToOffset(); tryDisassemble(); } - protected void applyContraptionMotion() { - if (movedContraption == null) - return; - if (movedContraption.isStalled()) { - movedContraption.setContraptionMotion(Vector3d.ZERO); - return; - } - movedContraption.setContraptionMotion(getMotionVector()); - } - - protected void applyContraptionPosition() { + protected void resetContraptionToOffset() { if (movedContraption == null) return; Vector3d vec = toPosition(offset); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java index 5ca97b096..55b1e6445 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java @@ -81,7 +81,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { BlockPos startPos = BlockPos.ZERO.relative(direction, contraption.initialExtensionProgress); contraption.removeBlocksFromWorld(level, startPos); movedContraption = ControlledContraptionEntity.create(getLevel(), this, contraption); - applyContraptionPosition(); + resetContraptionToOffset(); forceMove = true; level.addFreshEntity(movedContraption); @@ -96,7 +96,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { getLevel().setBlock(worldPosition, getBlockState().setValue(MechanicalPistonBlock.STATE, PistonState.EXTENDED), 3 | 16); if (movedContraption != null) { - applyContraptionPosition(); + resetContraptionToOffset(); movedContraption.disassemble(); AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(level, worldPosition); } @@ -110,7 +110,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { } @Override - public void collided() { + protected void collided() { super.collided(); if (!running && getMovementSpeed() > 0) assembleNextTick = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index 5af548f7c..496b34bda 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -121,7 +121,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { return; offset = getGridOffset(offset); if (movedContraption != null) - applyContraptionPosition(); + resetContraptionToOffset(); if (!level.isClientSide) { if (!remove) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java index d65ffb09a..02a6d6dee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java @@ -16,6 +16,8 @@ import net.minecraft.potion.PotionUtils; import net.minecraft.potion.Potions; import net.minecraft.util.IItemProvider; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.registries.ForgeRegistries; @@ -51,6 +53,11 @@ public class PotionFluid extends VirtualFluid { return color; } + @Override + public ITextComponent getDisplayName(FluidStack stack) { + return new TranslationTextComponent(getTranslationKey(stack)); + } + @Override public String getTranslationKey(FluidStack stack) { CompoundNBT tag = stack.getOrCreateTag(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index d7855b0cf..011b640f9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -257,10 +257,10 @@ public class BeltRenderer extends SafeTileEntityRenderer { ms.mulPose(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).rotationDegrees(slopeAngle)); if (onSlope) ms.translate(0, slopeOffset, 0); - ms.pushPose(); - ms.translate(0, -1 / 8f + 0.005f, 0); - ShadowRenderHelper.renderShadow(ms, buffer, .75f, .2f); - ms.popPose(); +// ms.pushPose(); +// ms.translate(0, -1 / 8f + 0.005f, 0); +// ShadowRenderHelper.renderShadow(ms, buffer, .75f, .2f); +// ms.popPose(); if (slopeShadowOnly) { ms.popPose(); ms.translate(0, slopeOffset, 0); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java index 406f8cd54..34fa10a67 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java @@ -1,7 +1,11 @@ package com.simibubi.create.content.curiosities.toolbox; +import static com.simibubi.create.content.curiosities.toolbox.ToolboxInventory.STACKS_PER_COMPARTMENT; + import java.util.List; +import javax.annotation.Nullable; + import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; @@ -18,6 +22,7 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.util.InputMappings; import net.minecraft.item.DyeColor; import net.minecraft.item.ItemStack; @@ -42,13 +47,13 @@ public class RadialToolboxMenu extends AbstractSimiScreen { private static final int DEPOSIT = -7; private static final int UNEQUIP = -5; - public RadialToolboxMenu(List toolboxes, State state) { + public RadialToolboxMenu(List toolboxes, State state, @Nullable ToolboxTileEntity selectedBox) { this.toolboxes = toolboxes; this.state = state; hoveredSlot = -1; - if (state == State.SELECT_ITEM_UNEQUIP || state == State.SELECT_ITEM) - selectedBox = toolboxes.get(0); + if (selectedBox != null) + this.selectedBox = selectedBox; } public void prevSlot(int slot) { @@ -135,7 +140,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ItemStack stackInSlot = inv.filters.get(slot); if (!stackInSlot.isEmpty()) { - boolean empty = inv.getStackInSlot(slot * ToolboxInventory.STACKS_PER_COMPARTMENT) + boolean empty = inv.getStackInSlot(slot * STACKS_PER_COMPARTMENT) .isEmpty(); (empty ? AllGuiTextures.TOOLBELT_INACTIVE_SLOT : AllGuiTextures.TOOLBELT_SLOT).draw(ms, this, 0, @@ -257,7 +262,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ItemStack stackInSlot = inv.filters.get(selected); if (stackInSlot.isEmpty()) return; - if (inv.getStackInSlot(selected * ToolboxInventory.STACKS_PER_COMPARTMENT) + if (inv.getStackInSlot(selected * STACKS_PER_COMPARTMENT) .isEmpty()) return; @@ -279,9 +284,8 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { ToolboxInventory inv = selectedBox.inventory; ItemStack stackInSlot = inv.filters.get(scrollSlot); - if (!stackInSlot.isEmpty() - && !inv.getStackInSlot(scrollSlot * ToolboxInventory.STACKS_PER_COMPARTMENT) - .isEmpty()) + if (!stackInSlot.isEmpty() && !inv.getStackInSlot(scrollSlot * STACKS_PER_COMPARTMENT) + .isEmpty()) break; } @@ -305,20 +309,42 @@ public class RadialToolboxMenu extends AbstractSimiScreen { public boolean mouseClicked(double x, double y, int button) { int selected = (scrollMode ? scrollSlot : hoveredSlot); - if (selected == DEPOSIT) { - onClose(); - ToolboxHandlerClient.COOLDOWN = 2; - return true; + if (button == 0) { + if (selected == DEPOSIT) { + onClose(); + ToolboxHandlerClient.COOLDOWN = 2; + return true; + } + + if (state == State.SELECT_BOX && selected >= 0 && selected < toolboxes.size()) { + state = State.SELECT_ITEM; + selectedBox = toolboxes.get(selected); + return true; + } + + if (state == State.DETACH || state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { + if (selected == UNEQUIP || selected >= 0) { + onClose(); + ToolboxHandlerClient.COOLDOWN = 2; + return true; + } + } } - if (state == State.SELECT_BOX && selected >= 0 && selected < toolboxes.size()) { - state = State.SELECT_ITEM; - selectedBox = toolboxes.get(selected); - return true; - } + if (button == 1) { + if (state == State.SELECT_ITEM && toolboxes.size() > 1) { + state = State.SELECT_BOX; + return true; + } + + if (state == State.SELECT_ITEM_UNEQUIP && selected == UNEQUIP) { + if (toolboxes.size() > 1) { + AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, + Minecraft.getInstance().player.inventory.selected)); + state = State.SELECT_BOX; + return true; + } - if (state == State.DETACH || state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { - if (selected == UNEQUIP || selected >= 0) { onClose(); ToolboxHandlerClient.COOLDOWN = 2; return true; @@ -328,6 +354,34 @@ public class RadialToolboxMenu extends AbstractSimiScreen { return super.mouseClicked(x, y, button); } + @Override + public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { + KeyBinding[] hotbarBinds = minecraft.options.keyHotbarSlots; + for (int i = 0; i < hotbarBinds.length && i < 8; i++) { + if (hotbarBinds[i].matches(code, p_keyPressed_2_)) { + + if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { + ToolboxInventory inv = selectedBox.inventory; + ItemStack stackInSlot = inv.filters.get(i); + if (stackInSlot.isEmpty() || inv.getStackInSlot(i * STACKS_PER_COMPARTMENT) + .isEmpty()) + return false; + } + + if (state == State.SELECT_BOX) + if (i >= toolboxes.size()) + return false; + + scrollMode = true; + scrollSlot = i; + mouseClicked(0, 0, 0); + return true; + } + } + + return super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_); + } + @Override public boolean keyReleased(int code, int p_keyPressed_2_, int p_keyPressed_3_) { InputMappings.Input mouseKey = InputMappings.getKey(code, p_keyPressed_2_); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java index d053c9854..75820623b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java @@ -35,7 +35,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.text.ITextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.World; @@ -79,8 +78,10 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE if (stack == null) return; withTileEntityDo(worldIn, pos, te -> { - te.readInventory(stack.getOrCreateTag() - .getCompound("Inventory")); + CompoundNBT orCreateTag = stack.getOrCreateTag(); + te.readInventory(orCreateTag.getCompound("Inventory")); + if (orCreateTag.contains("UniqueId")) + te.setUniqueId(orCreateTag.getUUID("UniqueId")); if (stack.hasCustomHoverName()) te.setCustomName(stack.getHoverName()); }); @@ -111,16 +112,16 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE public ItemStack getCloneItemStack(IBlockReader world, BlockPos pos, BlockState state) { ItemStack item = new ItemStack(this); Optional tileEntityOptional = getTileEntityOptional(world, pos); - CompoundNBT tag = item.getOrCreateTag(); + CompoundNBT inv = tileEntityOptional.map(tb -> tb.inventory.serializeNBT()) .orElse(new CompoundNBT()); tag.put("Inventory", inv); - ITextComponent customName = tileEntityOptional.map(ToolboxTileEntity::getCustomName) - .orElse(null); - if (customName != null) - item.setHoverName(customName); + tileEntityOptional.map(tb -> tb.getUniqueId()) + .ifPresent(uid -> tag.putUUID("UniqueId", uid)); + tileEntityOptional.map(ToolboxTileEntity::getCustomName) + .ifPresent(item::setHoverName); return item; } @@ -134,8 +135,7 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE } @Override - public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, - ISelectionContext context) { + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { return AllShapes.TOOLBOX.get(state.getValue(FACING)); } @@ -156,7 +156,8 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE if (color != null && color != this.color) { if (world.isClientSide) return ActionResultType.SUCCESS; - BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color).getDefaultState()); + BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color) + .getDefaultState()); world.setBlockAndUpdate(pos, newState); return ActionResultType.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java index 7856d3bec..0ff43f3ee 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java @@ -137,7 +137,7 @@ public class ToolboxContainer extends ContainerBase { // Hidden Slots for (int i = 1; i < STACKS_PER_COMPARTMENT; i++) - addSlot(new SlotItemHandler(inventory, baseIndex + i, -100, -100)); + addSlot(new SlotItemHandler(inventory, baseIndex + i, -10000, -10000)); } addPlayerSlots(-12, 166); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java index 741eb326b..da0801905 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java @@ -5,6 +5,7 @@ import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_HOTBAR_ import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_SELECTED_OFF; import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_SELECTED_ON; +import java.util.Collections; import java.util.List; import com.google.common.collect.ImmutableList; @@ -108,6 +109,11 @@ public class ToolboxHandlerClient { World level = player.level; List toolboxes = ToolboxHandler.getNearest(player.level, player, 8); + + if (!toolboxes.isEmpty()) + Collections.sort(toolboxes, (te1, te2) -> te1.getUniqueId() + .compareTo(te2.getUniqueId())); + CompoundNBT compound = player.getPersistentData() .getCompound("CreateToolboxData"); @@ -123,8 +129,8 @@ public class ToolboxHandlerClient { if (canReachToolbox) { TileEntity blockEntity = level.getBlockEntity(pos); if (blockEntity instanceof ToolboxTileEntity) { - RadialToolboxMenu screen = new RadialToolboxMenu(ImmutableList.of((ToolboxTileEntity) blockEntity), - RadialToolboxMenu.State.SELECT_ITEM_UNEQUIP); + RadialToolboxMenu screen = new RadialToolboxMenu(toolboxes, + RadialToolboxMenu.State.SELECT_ITEM_UNEQUIP, (ToolboxTileEntity) blockEntity); screen.prevSlot(compound.getCompound(slotKey) .getInt("Slot")); ScreenOpener.open(screen); @@ -132,7 +138,7 @@ public class ToolboxHandlerClient { } } - ScreenOpener.open(new RadialToolboxMenu(ImmutableList.of(), RadialToolboxMenu.State.DETACH)); + ScreenOpener.open(new RadialToolboxMenu(ImmutableList.of(), RadialToolboxMenu.State.DETACH, null)); return; } @@ -140,9 +146,9 @@ public class ToolboxHandlerClient { return; if (toolboxes.size() == 1) - ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_ITEM)); + ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_ITEM, toolboxes.get(0))); else - ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX)); + ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX, null)); } public static void renderOverlay(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java index a1c4dffec..75f451dff 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java @@ -10,6 +10,8 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.block.ShulkerBoxBlock; +import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.common.util.Constants.NBT; @@ -91,6 +93,12 @@ public class ToolboxInventory extends ItemStackHandler { public boolean isItemValid(int slot, ItemStack stack) { if (AllItemTags.TOOLBOXES.matches(stack)) return false; + if (stack.getItem() instanceof BlockItem) { + BlockItem blockItem = (BlockItem) stack.getItem(); + if (blockItem.getBlock() instanceof ShulkerBoxBlock) + return false; + } + if (slot < 0 || slot >= getSlots()) return false; int compartment = slot / STACKS_PER_COMPARTMENT; @@ -138,6 +146,7 @@ public class ToolboxInventory extends ItemStackHandler { protected void onContentsChanged(int slot) { if (!settling && !te.getWorld().isClientSide) settle(slot / STACKS_PER_COMPARTMENT); + te.sendData(); super.onContentsChanged(slot); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java index d14e83214..b3c42e845 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.UUID; import java.util.WeakHashMap; import com.simibubi.create.AllBlocks; @@ -48,6 +49,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine public LerpedFloat drawers = LerpedFloat.linear() .startWithValue(0); + UUID uniqueId; ToolboxInventory inventory; LazyOptional inventoryProvider; ResetableLazy colorProvider; @@ -280,6 +282,8 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { inventory.deserializeNBT(compound.getCompound("Inventory")); super.fromTag(state, compound, clientPacket); + if (compound.contains("UniqueId", 11)) + this.uniqueId = compound.getUUID("UniqueId"); if (compound.contains("CustomName", 8)) this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName")); if (clientPacket) @@ -288,7 +292,12 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine @Override protected void write(CompoundNBT compound, boolean clientPacket) { + if (uniqueId == null) + uniqueId = UUID.randomUUID(); + compound.put("Inventory", inventory.serializeNBT()); + compound.putUUID("UniqueId", uniqueId); + if (customName != null) compound.putString("CustomName", ITextComponent.Serializer.toJson(customName)); super.write(compound, clientPacket); @@ -361,6 +370,14 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine inventory.deserializeNBT(compound); } + public void setUniqueId(UUID uniqueId) { + this.uniqueId = uniqueId; + } + + public UUID getUniqueId() { + return uniqueId; + } + public void setCustomName(ITextComponent customName) { this.customName = customName; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index bec57a369..28f3ec109 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -12,6 +12,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.funnel.AbstractFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -332,8 +333,8 @@ public class EjectorTileEntity extends KineticTileEntity { float volume = .125f; float pitch = 1.5f - lidProgress.getValue(); if (((int) level.getGameTime()) % soundRate == 0 && doLogic) - level.playSound(null, worldPosition, SoundEvents.WOODEN_BUTTON_CLICK_OFF, SoundCategory.BLOCKS, volume, - pitch); + level.playSound(null, worldPosition, SoundEvents.WOODEN_BUTTON_CLICK_OFF, SoundCategory.BLOCKS, + volume, pitch); } } @@ -342,7 +343,7 @@ public class EjectorTileEntity extends KineticTileEntity { } private boolean scanTrajectoryForObstacles(int time) { - if (time == 0) + if (time <= 2) return false; Vector3d source = getLaunchedItemLocation(time); @@ -350,7 +351,16 @@ public class EjectorTileEntity extends KineticTileEntity { BlockRayTraceResult rayTraceBlocks = level.clip(new RayTraceContext(source, target, BlockMode.COLLIDER, FluidMode.NONE, null)); - if (rayTraceBlocks.getType() == Type.MISS) { + boolean miss = rayTraceBlocks.getType() == Type.MISS; + + if (!miss && rayTraceBlocks.getType() == Type.BLOCK) { + BlockState blockState = level.getBlockState(rayTraceBlocks.getBlockPos()); + if (FunnelBlock.isFunnel(blockState) && blockState.hasProperty(FunnelBlock.EXTRACTING) + && blockState.getValue(FunnelBlock.EXTRACTING)) + miss = true; + } + + if (miss) { if (earlyTarget != null && earlyTargetTime < time + 1) { earlyTarget = null; earlyTargetTime = 0; @@ -360,7 +370,8 @@ public class EjectorTileEntity extends KineticTileEntity { Vector3d vec = rayTraceBlocks.getLocation(); earlyTarget = Pair.of(vec.add(Vector3d.atLowerCornerOf(rayTraceBlocks.getDirection() - .getNormal()).scale(.25f)), rayTraceBlocks.getBlockPos()); + .getNormal()) + .scale(.25f)), rayTraceBlocks.getBlockPos()); earlyTargetTime = (float) (time + (source.distanceTo(vec) / source.distanceTo(target))); sendData(); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java index 281d248ee..ce5a5239c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java @@ -53,7 +53,14 @@ public class EntityLauncher { public Vector3d getGlobalPos(double t, Direction d, BlockPos launcher) { Vector3d start = new Vector3d(launcher.getX() + .5f, launcher.getY() + .5f, launcher.getZ() + .5f); - Vector3d vec = new Vector3d(0, y(t), x(t)); + + float xt = x(t); + float yt = y(t); + double progress = MathHelper.clamp(t / getTotalFlyingTicks(), 0, 1); + double correctionStrength = Math.pow(progress, 3); + + Vector3d vec = new Vector3d(0, yt + (verticalDistance - yt) * correctionStrength * 0.5f, + xt + (horizontalDistance - xt) * correctionStrength); return VecHelper.rotate(vec, 180 + AngleHelper.horizontalAngle(d), Axis.Y) .add(start); } 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 c959188d0..d068059bd 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 @@ -493,10 +493,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("SCS")), MECHANICAL_PUMP = create(AllBlocks.MECHANICAL_PUMP).unlockedByTag(I::copper) - .viaShaped(b -> b.define('P', I.cog()) - .define('S', AllBlocks.FLUID_PIPE.get()) - .pattern("P") - .pattern("S")), + .viaShapeless(b -> b.requires(I.cog()) + .requires(AllBlocks.FLUID_PIPE.get())), SMART_FLUID_PIPE = create(AllBlocks.SMART_FLUID_PIPE).unlockedByTag(I::copper) .viaShaped(b -> b.define('P', I.electronTube()) @@ -599,10 +597,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("P")), DEPOT = create(AllBlocks.DEPOT).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.define('A', I.andesite()) - .define('I', I.andesiteCasing()) - .pattern("A") - .pattern("I")), + .viaShapeless(b -> b.requires(I.andesite()) + .requires(I.andesiteCasing())), WEIGHTED_EJECTOR = create(AllBlocks.WEIGHTED_EJECTOR).unlockedBy(I::andesiteCasing) .viaShaped(b -> b.define('A', I.goldSheet())