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
This commit is contained in:
simibubi 2021-11-21 22:03:38 +01:00
parent 64f8e98011
commit f3109b28ab
93 changed files with 1016 additions and 808 deletions

View file

@ -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

View file

@ -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.",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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<SailBlock> 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<SailBlock> 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<SailBlock> 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")))));
})

View file

@ -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

View file

@ -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<FluidStack> {
@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<EffectInstance> 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();
}
}

View file

@ -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<ICraftingRecipe> 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<Item> colorTag = color.getTag();
Ingredient.IItemList dyeList = new Ingredient.SingleItemList(dyeStack);
Ingredient.IItemList colorList = new Ingredient.TagList(colorTag);
Stream<Ingredient.IItemList> colorIngredientStream = Stream.of(dyeList, colorList);
Ingredient colorIngredient = Ingredient.fromValues(colorIngredientStream);
NonNullList<Ingredient> 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() {}
}

View file

@ -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);
}
}
}

View file

@ -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());

View file

@ -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

View file

@ -16,8 +16,6 @@ public interface IControlContraption {
public boolean isValid();
public void collided();
public BlockPos getBlockPosition();
static enum MovementMode implements INamedIconOptions {

View file

@ -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<IItemHandler> capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
IItemHandler teHandler = capability.orElse(null);
if (!(teHandler instanceof IItemHandlerModifiable))

View file

@ -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))

View file

@ -287,9 +287,6 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity
return !isRemoved();
}
@Override
public void collided() {}
@Override
public boolean isAttachedTo(AbstractContraptionEntity contraption) {
return movedContraption == contraption;

View file

@ -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);

View file

@ -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;

View file

@ -121,7 +121,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
return;
offset = getGridOffset(offset);
if (movedContraption != null)
applyContraptionPosition();
resetContraptionToOffset();
if (!level.isClientSide) {
if (!remove) {

View file

@ -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();

View file

@ -257,10 +257,10 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
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);

View file

@ -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<ToolboxTileEntity> toolboxes, State state) {
public RadialToolboxMenu(List<ToolboxTileEntity> 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_);

View file

@ -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<ToolboxTileEntity> 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;
}

View file

@ -137,7 +137,7 @@ public class ToolboxContainer extends ContainerBase<ToolboxTileEntity> {
// 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);

View file

@ -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<ToolboxTileEntity> 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,

View file

@ -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);
}

View file

@ -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<IItemHandler> inventoryProvider;
ResetableLazy<DyeColor> 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;
}

View file

@ -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;

View file

@ -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);
}

View file

@ -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())