diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 089cd7310..4eb8bdd96 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -554,22 +554,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 50f7862ded2d9a955c259a12685906a9ec9ad97a assets/create/lang/en_ud.json -07cad74a9c4a99912638e7ef5e0fa8ea80934037 assets/create/lang/en_us.json -f943200bc8e641bf2a6046486ba81a656b2e55c5 assets/create/lang/unfinished/de_de.json -313362453cf604ac0f850e7ec4e6f5cd88a7e0ea assets/create/lang/unfinished/es_cl.json -98068c626233401f25795ec2d7e18f93e94509b8 assets/create/lang/unfinished/es_es.json -2350cba1c57aee6dc5e8d5012f27009112613fae assets/create/lang/unfinished/fr_fr.json -4bf3468d332616611e677c9a7b28058a52adb331 assets/create/lang/unfinished/it_it.json -4fc445d51505ce8082bec4d0c4de5a050f57e2e5 assets/create/lang/unfinished/ja_jp.json -d56027e3424d100d37dd838d2159060790c991fc assets/create/lang/unfinished/ko_kr.json -d8ed5de7b2bac2f2b8e8d8a677e32baa59a5fe62 assets/create/lang/unfinished/nl_nl.json -66d5880ccbc6e244e34a84cc12926abf81a927d8 assets/create/lang/unfinished/pl_pl.json -2e397277e9a0c1f97e978364709bc6a90fda1bfb assets/create/lang/unfinished/pt_br.json -b35062a17491ad7d94c4daa6fc55c686324dd424 assets/create/lang/unfinished/pt_pt.json -f9b60bbce38d9b8479f67f76cc63b6bba58423c1 assets/create/lang/unfinished/ro_ro.json -04737b38ab9a6e64f5a87e2539d0b3ae830bd48f assets/create/lang/unfinished/ru_ru.json -f40689ab4d03cbb2ebb3be33d7b5179d2ea846a0 assets/create/lang/unfinished/zh_cn.json -942299e2534a1c88b0ea5e215c4118e55f6a8e86 assets/create/lang/unfinished/zh_tw.json +31bf5bcf538ee226ff096990b51ee78da35bf25c assets/create/lang/en_us.json +e72ca18777650a58699dcdd4b2a360d9a6659c4e assets/create/lang/unfinished/de_de.json +419323aba46a4ff46eb7b1065565815998093eab assets/create/lang/unfinished/es_cl.json +63dc82f6961302e4dc72ea4118c53286e75ab740 assets/create/lang/unfinished/es_es.json +ebaf8d03bf60bcdc5550ed98242343154f1021ee assets/create/lang/unfinished/fr_fr.json +00a52263bb5b6f75ca2051b788f6f8234672e534 assets/create/lang/unfinished/it_it.json +c023517d5351ebb7013c37d59b0b151566cf313b assets/create/lang/unfinished/ja_jp.json +975be1a52926a11d3104128dcdcad22a9be7b5d3 assets/create/lang/unfinished/ko_kr.json +705ccba624707986ef4948ddf2e5a8e75a0ee298 assets/create/lang/unfinished/nl_nl.json +d53848222990058847e62d248f5d9957e5bda3b5 assets/create/lang/unfinished/pl_pl.json +e06401b0a8a4564ab5ff4867b49c0d97d684eda3 assets/create/lang/unfinished/pt_br.json +747be7e99c9ea36f1c355063bbb2af1e0304f056 assets/create/lang/unfinished/pt_pt.json +ee8bcd06e09065a70a341f1bb11704492494f0f1 assets/create/lang/unfinished/ro_ro.json +e66475642c1fdda4a0cf9a0ecef90a7f7f7d4324 assets/create/lang/unfinished/ru_ru.json +2ae570b8e5e080886ae6c68a1919c0f7325aa788 assets/create/lang/unfinished/zh_cn.json +15b9cc70f2d2d9e37588e7d79524e438da792b40 assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -2196,64 +2196,70 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json de7cdf8d734a067af32883e9d86a10e0542a0f5b assets/create/sounds.json -0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json -613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json -81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json -83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json -b243e73ea26c5c8c8c57570d7d91a50d035653a4 data/create/advancements/arm_many_targets.json -6c16fbae3b4e74be38ca91441412a467ec21ffe2 data/create/advancements/basin.json -56e2a988aeb23421811f87cf7fe014985a70dc40 data/create/advancements/belt.json -7a551856f64bb73eacf05e4d4d2e1a539aae2c5d data/create/advancements/belt_funnel.json -66f45a9e3058f5363cde280383b094440f268963 data/create/advancements/belt_funnel_kiss.json -94e66eaf0f47adeee8aa843ca817a47b3c55db6c data/create/advancements/blaze_burner.json -1c021e076dc724fe23f5ea837328fd56f6440539 data/create/advancements/blaze_cake.json -2595a2e6d939ecd25cf26c165ea0910f6410e262 data/create/advancements/brass.json -2a67900c1b53f47b587866c3d940dac4915b0b9a data/create/advancements/brass_casing.json -88adc39840259e79e46c4f33abb8eeaeb41dcdc8 data/create/advancements/chained_item_drain.json -759688aa3c8085841e47f7174b3894607a0e2ad4 data/create/advancements/chocolate.json -0c84fe24f49330a7491016235afd8fad02b560fe data/create/advancements/chocolate_wheel.json -f37551a788dfb3ff3d65db97a03c0420edf2c041 data/create/advancements/chute.json -0ffacd497176afdb26670783b65d383ac6236c19 data/create/advancements/clockwork_bearing.json -e754b950e25a5a5a19554a918760521794fc21f8 data/create/advancements/clockwork_component_eob.json -870ca791c418a1bc24f7b12284f5788c84911b92 data/create/advancements/compact.json -3090fdbb903a0212cc80e37c902d00add071b4e9 data/create/advancements/copper_casing.json -8e2a12a26218a46665c46f350ef9c3418a901988 data/create/advancements/crafter.json -ef55d9ab27e00dc52b8cc04193a71cdf4f58cce1 data/create/advancements/crushing_wheel.json -e9e1789de5cd5577a801a09d489a13f2c98779dc data/create/advancements/cuckoo.json -2a96fad5b44b62f233c9af5b4a637faf32ce24af data/create/advancements/deployer.json -20e04d0ac916996efedc35ab80e2b4ac4001582c data/create/advancements/dual_extendo_grip.json -de0e0a0d563ac71a68828dbfc8dabb0844095569 data/create/advancements/electron_tube.json -e15f8093da07cb2292de49620f2aa776f5a6099a data/create/advancements/extendo_grip.json -b1699baaadaac7ebce642c09428519d156e21594 data/create/advancements/fan.json -5aa76cba3b40a1c234ffa84a89ecca630990fc0f data/create/advancements/fan_lava.json -716a9816558300a3652ed8d8d568517017813f5c data/create/advancements/fan_smoke.json -a61eb63d02604e88836519f89f74b252a640d485 data/create/advancements/fan_water.json -7e639be7a98d1d99bc2f996d817477a426ca8b61 data/create/advancements/fist_bump.json -bc65c06352607d2e2f2abb6a66bc761011e1e720 data/create/advancements/flywheel.json -380087d7c540232bb0b4a47be339dd96c3d2725b data/create/advancements/glass_pipe.json -4c6427e3477620ce31dd4f01dbd2eaf329e6a3c1 data/create/advancements/goggles.json -ea0f8acb7c3692b569269e62927725d968a65251 data/create/advancements/hose_pulley.json -9f642faf92b75a28c564e90be8448b9a4328af5e data/create/advancements/infinite_chocolate.json -a933fa5e7217e2ffe123ae035cfbc9210ba69fd5 data/create/advancements/infinite_lava.json -a8ab0e4ffba358d23f9efaa9f51245b6d490a8be data/create/advancements/infinite_water.json -4d7cb129877d6cd68fda66159818e47ca44db078 data/create/advancements/item_drain.json -b61d958815f1c2530c11c88c9081d5c794d7f807 data/create/advancements/its_alive.json -9d68fed495a37fc78184e43e432c3181da84d19c data/create/advancements/lava_wheel.json -786b2bdb9e552160c01e5cb748b729b3ff7f6738 data/create/advancements/maxed_windmill.json -28686d74d162dd35b9bf91da2da654d3b79e6622 data/create/advancements/mechanical_arm.json -218568a4e416c5fa559c55a5c92aa4e93f88b837 data/create/advancements/mechanical_drill.json -6dc84ad2f0512495fe3f01f99d3c547849351e33 data/create/advancements/mechanical_saw.json -3bc549c06dc6d9568f92e1abc9654c9b4c33f035 data/create/advancements/millstone.json -ee834796d3d05d097048338ca946c5509fada0be data/create/advancements/mixer.json -bee2c19d730936e34ee61fe04af13e2b031ecffa data/create/advancements/musical_arm.json -c9c4060ed207226b69fada2d61e01a97d7077eae data/create/advancements/nixie_tube.json -7f0847247a80ee930c23f551bce00bda74f81b0e data/create/advancements/overstressed.json -449eb8a9e6102bb342c96eb8b19e743eb6979bfa data/create/advancements/pipe_collision.json -4b621e5bb48fbb120853ec02c05c915d86bd6dd8 data/create/advancements/pipe_spill.json -e249ad5e32fc6ad9d6461c3aad4ee138e0b2ddab data/create/advancements/polished_rose_quartz.json -69c45c653458d3076313bba3483bf26fb3946292 data/create/advancements/potato_cannon.json -e5c31d555475f82960113364208574e59c40d10d data/create/advancements/precision_mechanism.json -62d29ec01eff5d21968636a0479361ecdc11ae30 data/create/advancements/press.json +7048adc6db09a949173a824b26569ade94081d3e data/create/advancements/andesite_alloy.json +595a47eb334ca5110fe30134d4aec87b97e53f42 data/create/advancements/andesite_casing.json +faee191c4987a8b4152246a686a80c07610e6049 data/create/advancements/anvil_plough.json +58dd8f0bb56cb46e5d516db3b83be4fbd183006f data/create/advancements/arm_blaze_burner.json +e3e59c04894a6dac2c23b8c3852e23ea9949e44b data/create/advancements/arm_many_targets.json +522bf0d9d181a396d101111db1494f028e569d92 data/create/advancements/backtank.json +def489b881b36db187fc17ed0978cdda71e01603 data/create/advancements/belt.json +bcbdf225c9c106e41d40f9ca710404d77808071f data/create/advancements/belt_funnel_kiss.json +8e18e41419d4ff6d74ab400e2653591e82420205 data/create/advancements/brass.json +75666c5d0e3d6be2a48d7311cd88a74b0e2f875b data/create/advancements/brass_casing.json +3fb7e33298464f37dfdfe2aa9f7031351819c72e data/create/advancements/burner.json +5cdb87ab811e40fc69ccd8ff6c7171501cb68abf data/create/advancements/cart_pickup.json +15bc45fb4fa8c19f55390e9be03c5b1da06046c5 data/create/advancements/chained_drain.json +9eb251876632753cbc8b64efcd9bb733d7e6fe48 data/create/advancements/chocolate_bucket.json +b68de12905a8b0e974244ee5495313f1eb3eb036 data/create/advancements/chute.json +d3249cb69d89767edf92b099ca3d8956b89d14da data/create/advancements/clockwork_bearing.json +aa99a20a160eff86c554b5a3c099f6600f440235 data/create/advancements/compacting.json +7905635b7418c1671e48c5c351c4aae8ee9b1e14 data/create/advancements/conductor.json +c0f6882fef92d498e836e997874cfd68daa45085 data/create/advancements/contraption_actors.json +024c1ff4ca71def7b54dc7cc028330fed8000a87 data/create/advancements/copper.json +2e17a462e5b7f693678e685a3880edd32cf1ff76 data/create/advancements/copper_casing.json +6ab91bc3e50bf0958f9db8aa9d84df3f8db0411a data/create/advancements/crafter_lazy_000.json +cc30b754325abef54374c749eb8a7daa53e020e2 data/create/advancements/cross_streams.json +b1e89eef05602a89543741152ce5517d78846a21 data/create/advancements/crusher_maxed_0000.json +9a17ca32b15efeab08f783f0ca996abc78cc3960 data/create/advancements/crushing_wheel.json +d53e397aef8dc2fc674f6f1c7a059a17678ec56c data/create/advancements/cuckoo_clock.json +27c72072683dad1a8ca9976a58367c965ca35fe7 data/create/advancements/deployer.json +b30ed29c6e69d0964e810a470a8725bf9496e9b5 data/create/advancements/display_board_0.json +92fdb65633cf93b7aca5f359abeb5a9ec715ae40 data/create/advancements/display_link.json +12a4c76b2d1eff364ed15926711fdf5a79957899 data/create/advancements/diving_suit.json +9e3fc44ae8997b03881fddd3938397cac3f580e1 data/create/advancements/diving_suit_lava.json +ebf21bebdeb29fc7f1ffa078123256241921681f data/create/advancements/drain.json +f87f17fb29afda4fc46a81b5c3967bd21c068e36 data/create/advancements/ejector_maxed.json +0c19f535f04e653e0263ab9c3e9f04a203fa6765 data/create/advancements/encased_fan.json +106314522940d924feda64e7ea6dfa811724c1f1 data/create/advancements/extendo_grip.json +d2e58cec0b68a795e1e35a3c32d396571c0e1a23 data/create/advancements/extendo_grip_dual.json +3aee086b8bba61137292d3a29c41f7fa2027fa6c data/create/advancements/fan_processing.json +ea7865282e9213b8e6c5813cf9d1adfdf7405dee data/create/advancements/fist_bump.json +6fad376b6996276823ccfb1a45f178d3a4d2d305 data/create/advancements/foods.json +87ad810e4f480c9c30ba18270c33cc50423aab3e data/create/advancements/funnel.json +cb6bb43732da5fd0067a8fd6c4e200e9acfa41b6 data/create/advancements/glass_pipe.json +1fe880366f827a3c38ffbdabdf6eaebcdc1eaf95 data/create/advancements/hand_crank_000.json +d1c26ce73e2b044a46a88278b500ec7e4758111f data/create/advancements/haunted_bell.json +7465836bfbf3e10ab78b5054e007c62c6fa325ab data/create/advancements/honey_drain.json +eff2f22dfdf7ed94f868bfdf960fd6a6c8f6a567 data/create/advancements/hose_pulley.json +c119d8187e57286836579cf33d4bcdced2406932 data/create/advancements/hose_pulley_lava.json +ce5a2e1e2ac7049f03c6c8f15130112500bbae2f data/create/advancements/lava_wheel_00000.json +63d86087604035e4e70c203d9b73a7d567a173c1 data/create/advancements/linked_controller.json +f81d3e42370e8429bcd165d745dfc19fdcf6dedd data/create/advancements/long_bend.json +22d19a986e27169ad170792ef5dcbcdf2ea4d214 data/create/advancements/long_train.json +648e40cace7bd3d2cb1375ae89fd2ee0e0ad561e data/create/advancements/long_travel.json +258a8c893b8a0265fb1c80f6fa528e80157884e8 data/create/advancements/mechanical_arm.json +418feaeabccc9bfa6ed89fa36de9d6991ce2c7c2 data/create/advancements/mechanical_crafter.json +9aa23efa14966c92dd4494b691a99f86e7db9dc1 data/create/advancements/mechanical_mixer.json +3bfcb9323dacf31654b7e2d080755e30b07c0c57 data/create/advancements/mechanical_press.json +aef4fc0e1daf139fc2c058c700b703bbd156ffba data/create/advancements/mechanical_pump_0.json +5ab5cc9a9aa5c27b4289f7d60fde528445c70fd9 data/create/advancements/millstone.json +76e1a0b2608a063750e2afd131f6920e874e8a9e data/create/advancements/musical_arm.json +aec7192be51a921f7c2f9e52ca64e65cf92abf1f data/create/advancements/pipe_organ.json +732590ae998de3666b2e519816f23204957cf4ec data/create/advancements/portable_storage_interface.json +392a3b5e607e1759394bd8b98349bdaa1c2a615e data/create/advancements/potato_cannon.json +5db7899425c9447e445eec82116f987ed40eb03a data/create/advancements/potato_cannon_collide.json +abf054890da41c46221fddc2474e18d077b3c1a2 data/create/advancements/precision_mechanism.json +9eb2508128ae938f0e654f3b316aa324dd6a18e8 data/create/advancements/pulley_maxed.json 13f64882c60b483994e459e03ed92f2f3b7e6c41 data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json 7300a6323cd8691bdcd40320d4acbadfe5f3d04a data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json 170a50a7dceba01ac0045febc9edc6def36ca298 data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json @@ -3319,21 +3325,36 @@ d7b126eef46e9179c10d19d247f58e74f61818bc data/create/advancements/recipes/misc/s 2599cc5ed09e70881aca4bb1550d21b4f65a9608 data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json a1afb005cc23607cb4d84d42664b4bc28eef9ead data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json c1434c26c854d6b723c4f4d0fbb051268043da07 data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json -67edd7bd314a85a1fddc2aa9f6b2207879aa5c3e data/create/advancements/reinforced.json -9654f4952c39175825a3deb2d9bb56d525f0539a data/create/advancements/root.json -6c1a67e193a4c5af356b31a1d5b5e9d3faeca87e data/create/advancements/shifting_gears.json -65132cb27041c848230781cca8020a2e5ae4365e data/create/advancements/speed_controller.json -a203d509a6038f0bad707e232a425388e62e1ae1 data/create/advancements/speedometer.json -f7bb8f08a08e22ec1e6bb098d65d06233e8fbcec data/create/advancements/splitter_tunnel.json -b69d174d7a5e9eab8ca013b66bc9d02244d7f9a3 data/create/advancements/spout.json -15f73da913c54cd2f945e4d7402fb8d587cbaa9f data/create/advancements/spout_potion.json -0efdaf483d84791044f085f79197b6bab3e15872 data/create/advancements/stressometer.json -1aceaa6e47709aa03f3d4f606fa5dcaacc899835 data/create/advancements/tunnel.json -4fef92dce84fa1a075db31fb33081f5fb8ec7e9e data/create/advancements/upward_chute.json -0b65ff92a7a48ba9f4c21f725831206313b37dba data/create/advancements/wand_of_symmetry.json -2c278dc6e6e4c12c0cfce22b5192844586a2d5c1 data/create/advancements/water_wheel.json -d6b94fd499cb4fb0ae587b0e9e7088832f67fe01 data/create/advancements/windmill.json -ef4fa382442aacbda1ca8b762bd51ff80b708a93 data/create/advancements/wrench.json +6c10d0d7cf04b62ddf6709d7cd7a6ba807cf87c9 data/create/advancements/red_signal.json +3d17995a147581b9b7f47a75e4b71019e120715d data/create/advancements/root.json +dc96c3d69a8dd94651c35b8f6d88f33aed17617a data/create/advancements/rose_quartz.json +3f1ddf92a3a92de2362bebf5e2289d9dd6654a96 data/create/advancements/saw_processing.json +6040b5f8b941092dc5268431c6ff65f6f583e675 data/create/advancements/self_deploying.json +5e2a0b6426588b921529fbf144edd61a68944779 data/create/advancements/shifting_gears.json +0b0a0087dc2d974a462a3b60a9f79130f19e30fa data/create/advancements/speed_controller.json +e84dbeb43d1126c0744ac3214b0d37c26cfc63cd data/create/advancements/spout.json +7b7f8ba659b8d40e416080328fdef0f69834aac2 data/create/advancements/steam_engine.json +da2b506787e84d055cdbdb4aa0fb4cbdd96a8ad0 data/create/advancements/steam_engine_maxed.json +c02335d1e84dffdc0c50e8ba2a27ce84366a5f6d data/create/advancements/steam_whistle.json +9f287ee0bd6a6c51bd7741a746673980c7b0f6fa data/create/advancements/stressometer.json +0cb2a6357d3bcabb9dc2c87863a77cf53e8dcef1 data/create/advancements/stressometer_maxed.json +566d3804e962be45c80c8debb2eb2761b2ded905 data/create/advancements/sturdy_sheet.json +1c431334d71f7e25b9bedc525c642c8cb5271b9f data/create/advancements/super_glue.json +58fd8b7440508a8128d2860eb70a2c5b7a2531f9 data/create/advancements/track_0.json +7388901df65f05074c2a2ad8156cbd76a069cdc6 data/create/advancements/track_crafting_factory.json +c6c3a803ff7738a36ac0956eda593f9774e567b5 data/create/advancements/track_signal.json +7f4cb81f3ddf26f47055b369b3f3af82f1894fcb data/create/advancements/train.json +909914f283b800cd08d24a1deab9769eb468bfb6 data/create/advancements/train_casing_00.json +ace10c57d3abfe6be0140fa0f0d189a8f669df0d data/create/advancements/train_crash.json +1b45c83ff51265fa7997103f1cb67d8602216de4 data/create/advancements/train_crash_backwards.json +da319b7ed5ac8a0da75bffb4f4f7c41bc4927197 data/create/advancements/train_portal.json +acf935749fed7fda52f79454867f9294f8a729c5 data/create/advancements/train_roadkill.json +22b44cae03e11d66af79d30b60b788e34068b2a4 data/create/advancements/train_whistle.json +80251a764630aeb0a5fb316613357d7768af004a data/create/advancements/water_supply.json +3bddec26fb0e108170d8a15787e4ad069179b1ca data/create/advancements/water_wheel.json +f92b20e0ae4c8808479df3553203c1b5e334cfe3 data/create/advancements/windmill.json +77e2acb38ebc94745ec0004ac4dcb8b4e5a0fdf6 data/create/advancements/windmill_maxed.json +369b8766a8423e0c52ef3c09812524ffe95a7b9d data/create/advancements/wrench_goggles.json 875873c46f48bee4a1cdd2a0b866727e0882966e data/create/loot_tables/blocks/acacia_window.json 98f71c17409a37a584eed6cb6ee3878efebf3ef6 data/create/loot_tables/blocks/acacia_window_pane.json c5c0b82ab3bcd7ffd1bcb65d00876aaba69363f9 data/create/loot_tables/blocks/adjustable_chain_gearshift.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 46ec95be8..a957b6616 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -662,153 +662,193 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Welcome to Create", - "advancement.create.root.desc": "It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "It's Alive!", - "advancement.create.its_alive.desc": "Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "Shifting Gears", - "advancement.create.shifting_gears.desc": "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption.", - "advancement.create.overstressed": "Overstressed", - "advancement.create.overstressed.desc": "Experience the limits of stress firsthand.", - "advancement.create.belt": "Kelp Drive", - "advancement.create.belt.desc": "Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "Take Cover!", - "advancement.create.tunnel.desc": "Embellish your Mechanical Belt with a Tunnel.", - "advancement.create.splitter_tunnel": "Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "Tumbling Down", - "advancement.create.chute.desc": "Place a Chute, the vertical counterpart of the Belt.", - "advancement.create.upward_chute": "Aerial Abduction", - "advancement.create.upward_chute.desc": "Watch a thrown item fly up into a Fan-powered Chute.", - "advancement.create.belt_funnel": "Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Place a sideways Funnel on top of a Belt or Depot to create a special type.", - "advancement.create.belt_funnel_kiss": "The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss.", - "advancement.create.fan": "Mechanical Airbender", - "advancement.create.fan.desc": "Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "Geothermal Space Heater", - "advancement.create.fan_lava.desc": "Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "Wacky Washing", - "advancement.create.fan_water.desc": "Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "Mechanical Bellows", - "advancement.create.fan_smoke.desc": "Get caught in a stream of air that smokes things.", - "advancement.create.wrench": "Configure Conveniently", - "advancement.create.wrench.desc": "Create a Wrench to aid you in building your Contraptions.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "But How Fast Exactly?", - "advancement.create.speedometer.desc": "Place and power a Speedometer. Look at it through your Goggles to read its exact value.", - "advancement.create.stressometer": "But How Stressed Exactly?", - "advancement.create.stressometer.desc": "Place and power a Stressometer. Look at it through your Goggles to read its exact value.", - "advancement.create.aesthetics": "Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "Place Brackets on a Shaft, Pipe, and Cogwheel.", - "advancement.create.reinforced": "Boom, Reinforced!", - "advancement.create.reinforced.desc": "Use fitting Casing blocks on a Shaft, Pipe, and Mechanical Belt.", - "advancement.create.water_wheel": "Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "Tasteful Power", - "advancement.create.chocolate_wheel.desc": "Run a Water Wheel with Molten Chocolate.", - "advancement.create.lava_wheel": "Magma Wheel", - "advancement.create.lava_wheel.desc": "This shouldn't have worked.", - "advancement.create.cuckoo": "Is It Time?", - "advancement.create.cuckoo.desc": "Witness a Cuckoo Clock announce bedtime.", - "advancement.create.millstone": "Pocket Crusher", - "advancement.create.millstone.desc": "Place and power a Millstone.", - "advancement.create.windmill": "A Mild Breeze", - "advancement.create.windmill.desc": "Assemble a windmill.", - "advancement.create.maxed_windmill": "A Strong Breeze", - "advancement.create.maxed_windmill.desc": "Assemble a windmill of maximum strength.", + "advancement.create.root.desc": "Here be Contraptions", + "advancement.create.andesite_alloy": "Sturdier Rocks", + "advancement.create.andesite_alloy.desc": "Obtain some Andesite Alloy, Create's most important resource", "advancement.create.andesite_casing": "The Andesite Age", - "advancement.create.andesite_casing.desc": "Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "Stationary Breakers", - "advancement.create.mechanical_drill.desc": "Place and power a Mechanical Drill.", - "advancement.create.press": "Press Goes 'Bonk!'", - "advancement.create.press.desc": "Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "Stationary Chopping", - "advancement.create.mechanical_saw.desc": "Place and power a Mechanical Saw.", - "advancement.create.basin": "Basin Operation", - "advancement.create.basin.desc": "Place a Basin and try throwing items into it.", - "advancement.create.mixer": "Mixin' It Up", - "advancement.create.mixer.desc": "Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "A Living Fireplace", - "advancement.create.blaze_burner.desc": "Obtain a Blaze Burner.", - "advancement.create.compact": "Automated Compacting", - "advancement.create.compact.desc": "Use a Press and a Basin to compact some items.", - "advancement.create.brass": "Actual Alloys", - "advancement.create.brass.desc": "Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "The Brass Age", - "advancement.create.brass_casing.desc": "Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.andesite_casing.desc": "Apply Andesite Alloy to wood creating a basic casing for your machines", + "advancement.create.mechanical_press": "Bonk", + "advancement.create.mechanical_press.desc": "Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "Wind maker", + "advancement.create.encased_fan.desc": "Place and activate an Encased Fan", + "advancement.create.fan_processing": "Processing by Particle", + "advancement.create.fan_processing.desc": "Use an Encased Fan to process materials", + "advancement.create.saw_processing": "Workshop's most feared", + "advancement.create.saw_processing.desc": "Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "Compactification", + "advancement.create.compacting.desc": "Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Kelp Drive", + "advancement.create.belt.desc": "Connect two Shafts with a Mechanical Belt", + "advancement.create.funnel": "Airport Aesthetic", + "advancement.create.funnel.desc": "Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Vertical Logistics", + "advancement.create.chute.desc": "Transport some items by Chute", + "advancement.create.mechanical_mixer": "Mixing it up", + "advancement.create.mechanical_mixer.desc": "Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "Sentient Fireplace", + "advancement.create.burner.desc": "Obtain a Blaze Burner", + "advancement.create.water_wheel": "Harnessed Hydraulics", + "advancement.create.water_wheel.desc": "Place a Water Wheel and use it to generate torque", + "advancement.create.windmill": "A Mild Breeze", + "advancement.create.windmill.desc": "Assemble a windmill and use it to generate torque", + "advancement.create.shifting_gears": "Shifting Gears", + "advancement.create.shifting_gears.desc": "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption", + "advancement.create.millstone": "Embrace the Grind", + "advancement.create.millstone.desc": "Use a Millstone to pulverise materials", + "advancement.create.super_glue": "Area of Connect", + "advancement.create.super_glue.desc": "Super Glue some blocks into a group", + "advancement.create.contraption_actors": "Moving with Purpose", + "advancement.create.contraption_actors.desc": "Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "Kitted out", + "advancement.create.wrench_goggles.desc": "Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Stress for Nerds", + "advancement.create.stressometer.desc": "Get an exact readout with the help of Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "Is it Time?", + "advancement.create.cuckoo_clock.desc": "Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "A Strong Breeze", + "advancement.create.windmill_maxed.desc": "Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "Springboard Champion", + "advancement.create.ejector_maxed.desc": "Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "Strong Arms", + "advancement.create.cart_pickup.desc": "Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "Workout Session", + "advancement.create.hand_crank_000.desc": "Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", + "advancement.create.stressometer_maxed": "Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "More Sturdier Rocks", + "advancement.create.copper.desc": "Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "The Copper Age", - "advancement.create.copper_casing.desc": "Use some Copper Sheets and Wood to create some Copper Casings.", + "advancement.create.copper_casing.desc": "Apply Copper Ingots to wood creating a waterproof casing for your machines", "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Watch a fluid item being filled using a Spout.", - "advancement.create.spout_potion": "Global Brewery", - "advancement.create.spout_potion.desc": "Watch a Spout fill a Bottle with potion fluid.", - "advancement.create.chocolate": "A World of Imagination", - "advancement.create.chocolate.desc": "Obtain a Bucket of Molten Chocolate.", - "advancement.create.item_drain": "Tumble Draining", - "advancement.create.item_drain.desc": "Watch a fluid item being emptied by an Item Drain.", - "advancement.create.chained_item_drain": "Let It Roll!", - "advancement.create.chained_item_drain.desc": "Watch an item roll across several chained Item Drains.", - "advancement.create.glass_pipe": "Flow Spy", - "advancement.create.glass_pipe.desc": "Watch fluid propagate through a windowed Fluid Pipe. Straight Fluid Pipes become windowed when a Wrench is used on them.", - "advancement.create.pipe_collision": "Never Cross the Streams!", - "advancement.create.pipe_collision.desc": "Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "There's a Leak!", - "advancement.create.pipe_spill.desc": "Watch an open end of a Pipe take or place fluids into the world.", + "advancement.create.spout.desc": "Watch a fluid containing item be filled using a Spout", + "advancement.create.drain": "Tumble Draining", + "advancement.create.drain.desc": "Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "The Powerhouse", + "advancement.create.steam_engine.desc": "Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "Voice of an Angel", + "advancement.create.steam_whistle.desc": "Activate a Steam Whistle", + "advancement.create.backtank": "Pressure to Go", + "advancement.create.backtank.desc": "Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "Ready for the Depths", + "advancement.create.diving_suit.desc": "Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "Under Pressure", + "advancement.create.mechanical_pump_0.desc": "Place and power a Mechanical Pump", + "advancement.create.glass_pipe": "Flow Discovery", + "advancement.create.glass_pipe.desc": "Use your Wrench on a pipe that contains a fluid", + "advancement.create.water_supply": "Puddle Collector", + "advancement.create.water_supply.desc": "Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Industrial Spillage", - "advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid.", - "advancement.create.infinite_water": "Draining the Ocean", - "advancement.create.infinite_water.desc": "Pump from a body of Water large enough to be considered infinite.", - "advancement.create.infinite_lava": "Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "Pump from a body of Lava large enough to be considered infinite.", - "advancement.create.infinite_chocolate": "Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "Pump from a body of Molten Chocolate large enough to be considered infinite.", - "advancement.create.crafter": "Automated Assembly", - "advancement.create.crafter.desc": "Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "Contraption O'Clock", - "advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "Signs of Style", - "advancement.create.nixie_tube.desc": "Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "Poke, Place, and Attack", - "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "Engineers Hate Him!", - "advancement.create.speed_controller.desc": "Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "Heart of the Factory", - "advancement.create.flywheel.desc": "Successfully connect a Furnace Engine to the Flywheel.", - "advancement.create.overstress_flywheel": "High Levels of Stress", - "advancement.create.overstress_flywheel.desc": "Overstress a Furnace Engine.", + "advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid", + "advancement.create.chocolate_bucket": "A World of Imagination", + "advancement.create.chocolate_bucket.desc": "Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "Full Steam", + "advancement.create.steam_engine_maxed.desc": "Run a boiler at the maximum level of power", + "advancement.create.foods": "Balanced Diet", + "advancement.create.foods.desc": "Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "On a Roll", + "advancement.create.chained_drain.desc": "Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "Don't cross the Streams!", + "advancement.create.cross_streams.desc": "Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "The Pipe Organ", + "advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Real Alloys", + "advancement.create.brass.desc": "Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass_casing": "The Brass Age", + "advancement.create.brass_casing.desc": "Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.rose_quartz": "Pink Diamonds", + "advancement.create.rose_quartz.desc": "Polish some Rose Quartz", + "advancement.create.deployer": "Artificial Intelligence", + "advancement.create.deployer.desc": "Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "Complex Curiosities", - "advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "Busy Hands!", - "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with ten or more output locations.", - "advancement.create.arm_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "Pound It, Bro!", - "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", + "advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism", + "advancement.create.speed_controller": "Engineers Hate Him!", + "advancement.create.speed_controller.desc": "Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.mechanical_arm": "Busy Hands", + "advancement.create.mechanical_arm.desc": "Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_crafter": "Automated Assembly", + "advancement.create.mechanical_crafter.desc": "Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "A Pair of Giants", - "advancement.create.crushing_wheel.desc": "Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Bake your Blaze Burner a special cake.", - "advancement.create.wand_of_symmetry": "Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip.", + "advancement.create.crushing_wheel.desc": "Place and power a set of Crushing Wheels", + "advancement.create.haunted_bell": "Shadow Sense", + "advancement.create.haunted_bell.desc": "Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Contraption O'Clock", + "advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing", + "advancement.create.display_link": "Big Data", + "advancement.create.display_link.desc": "Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", - "advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "Expect more content here in the future. <3", + "advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip", + "advancement.create.linked_controller": "Remote Activation", + "advancement.create.linked_controller.desc": "Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combust-o-Tron", + "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner", + "advancement.create.crusher_maxed_0000": "Crushing it", + "advancement.create.crusher_maxed_0000.desc": "Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organize-o-Tron", + "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with ten or more output locations", + "advancement.create.potato_cannon_collide": "Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "Self-Driving Cart", + "advancement.create.self_deploying.desc": "Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Pound It, Bro!", + "advancement.create.fist_bump.desc": "Make two Deployers fist-bump§7\n(Hidden Advancement)", + "advancement.create.crafter_lazy_000": "Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "To full Extent", + "advancement.create.extendo_grip_dual.desc": "Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "DJ Mechanico", + "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", + "advancement.create.sturdy_sheet": "The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "The Logistical Age", + "advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "All Aboard!", + "advancement.create.train.desc": "Assemble your first Train", + "advancement.create.conductor": "Conductor Instructor", + "advancement.create.conductor.desc": "Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "Traffic Control", + "advancement.create.track_signal.desc": "Place a Train Signal", + "advancement.create.display_board_0": "Dynamic Timetables", + "advancement.create.display_board_0.desc": "Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "A new Gauge", + "advancement.create.track_0.desc": "Obtain some Train Tracks", + "advancement.create.train_whistle": "Choo choo!", + "advancement.create.train_whistle.desc": "Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "Dimensional Commuter", + "advancement.create.train_portal.desc": "Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "Track Factory", + "advancement.create.track_crafting_factory.desc": "Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "The Longest Bend", + "advancement.create.long_bend.desc": "Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "Ambitious Endeavours", + "advancement.create.long_train.desc": "Create a Train with at least six Carriages", + "advancement.create.long_travel": "Field Trip", + "advancement.create.long_travel.desc": "Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "Road Kill", + "advancement.create.train_roadkill.desc": "Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "Expert Driver", + "advancement.create.red_signal.desc": "Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "Terrible Service", + "advancement.create.train_crash.desc": "Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "Blind Spot", + "advancement.create.train_crash_backwards.desc": "Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index d90a902a3..180df48b4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 991", + "_": "Missing Localizations: 1121", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "Es ist Zeit mit dem Bauen von tollen Apparaten zu starten!", "advancement.create.andesite_alloy": "Alliterationen in Massen", "advancement.create.andesite_alloy.desc": "Create's Materialien haben verrückte Namen, Eisenlegierung ist im Deutschen leider keine.", - "advancement.create.its_alive": "Es ist am leben!", - "advancement.create.its_alive.desc": "Gucke deinem erstem beweglichen Teil beim drehen zu.", - "advancement.create.shifting_gears": "Wechsel deine Gänge", - "advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.", - "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 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", - "advancement.create.splitter_tunnel.desc": "Mache einen Teiler aus einer Gruppe von Messingtunneln.", - "advancement.create.chute": "Abstürzen", - "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": "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": "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 Dinge 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 Gegenstände 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 Gegenstände 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.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Befördere es alles", + "advancement.create.belt.desc": "Verbinde zwei Wellen mit einem Mechanischem Riemen", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Abstürzen", + "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Angespannte Hydraulik", + "advancement.create.water_wheel.desc": "Plaziere ein Wasserrad und versuche es zum drehen zu bringen!", + "advancement.create.windmill": "Eine leichte Brise", + "advancement.create.windmill.desc": "Baue eine Windmühle.", + "advancement.create.shifting_gears": "Wechsel deine Gänge", + "advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.", + "advancement.create.millstone": "Taschenmahlstein", + "advancement.create.millstone.desc": "Plaziere und aktiviere einen Mahlstein.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "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.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "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.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "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üssigkeitsgegenstand 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 Gegenstand 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.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "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.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "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": "Platziere und aktiviere ein paar Mechanische Handwerkseinheiten.", - "advancement.create.clockwork_bearing": "Uhr-Apparat", - "advancement.create.clockwork_bearing.desc": "Montiere eine Struktur auf einem Uhrwerk-Lager.", - "advancement.create.nixie_tube": "Ein Zeichen von Stil", - "advancement.create.nixie_tube.desc": "Erhalte und platziere ein Paar Nixie-Röhren.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "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.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Stupse, platziere und attackiere!", "advancement.create.deployer.desc": "Platziere und betreibe ein Einsatzgerät, die perfekte Reflektion deiner selbst.", - "advancement.create.speed_controller": "Ingenieure hassen ihn!", - "advancement.create.speed_controller.desc": "Platziere einen Rotationsgeschwindigkeitsregler, das ultimative Gerät, um Zahnräder zu ändern.", - "advancement.create.flywheel": "Herz der Fabrik", - "advancement.create.flywheel.desc": "Verbinde einen Ofenmotor erfolgreich mit einem Schwungrad.", - "advancement.create.overstress_flywheel": "Hohe Stresslevel", - "advancement.create.overstress_flywheel.desc": "Überstresse einen Ofenmotor.", "advancement.create.precision_mechanism": "Komplexe Kuriositäten", "advancement.create.precision_mechanism.desc": "Montiere ein Präzisionsgetriebe.", + "advancement.create.speed_controller": "Ingenieure hassen ihn!", + "advancement.create.speed_controller.desc": "Platziere einen Rotationsgeschwindigkeitsregler, das ultimative Gerät, um Zahnräder zu ändern.", "advancement.create.mechanical_arm": "Beschäftigte Hände!", "advancement.create.mechanical_arm.desc": "Stelle einen mechanischen Arm her, wähle Ein- und Ausgang, platziere ihn und gib ihm Energie; beobachte dann, wie es für dich all die Arbeit macht.", - "advancement.create.musical_arm": "Spiel mir meine Erkennungsmelodie!", - "advancement.create.musical_arm.desc": "Beobachte einen mechanischen Arm dabei, wie er einen Plattenspieler bedient.", - "advancement.create.arm_many_targets": "Organisiertron", - "advancement.create.arm_many_targets.desc": "Programmiere einen mechanischen Arm so, dass er zehn oder mehr Ausgänge hat.", - "advancement.create.arm_blaze_burner": "Verbrennertron", - "advancement.create.arm_blaze_burner.desc": "Weise einen mechanischen Arm an, einen Lohenbrenner zu befeuern.", - "advancement.create.fist_bump": "Verstampf es, Bro!", - "advancement.create.fist_bump.desc": "Lass zwei Einsatzgeräte aufeinander treffen.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Ein gigantisches Paar", "advancement.create.crushing_wheel.desc": "Stelle Mahlwerkräder her, um mehr Materialien effizienter zu zermahlen.", - "advancement.create.blaze_cake": "Zuckerrausch", - "advancement.create.blaze_cake.desc": "Backe deinem Lohenbrenner einen speziellen Kuchen.", - "advancement.create.wand_of_symmetry": "Strahlende Spiegel", - "advancement.create.wand_of_symmetry.desc": "Stelle einen Symmetriestab her.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Uhr-Apparat", + "advancement.create.clockwork_bearing.desc": "Montiere eine Struktur auf einem Uhrwerk-Lager.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwump!", "advancement.create.potato_cannon.desc": "Besiege einen Gegner mit deiner Kartoffelkanone.", - "advancement.create.dual_extendo_grip": "Ultimatives Boing-Zeitalter", - "advancement.create.dual_extendo_grip.desc": "Schwinge zwei Extendo Griffe gleichzeitig für eine übermenschliche Reichweite.", - "advancement.create.eob": "Ende der Beta", - "advancement.create.eob.desc": "Erwarte mehr Inhalt in der Zukunft. <3", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Verbrennertron", + "advancement.create.arm_blaze_burner.desc": "Weise einen mechanischen Arm an, einen Lohenbrenner zu befeuern.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organisiertron", + "advancement.create.arm_many_targets.desc": "Programmiere einen mechanischen Arm so, dass er zehn oder mehr Ausgänge hat.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Verstampf es, Bro!", + "advancement.create.fist_bump.desc": "Lass zwei Einsatzgeräte aufeinander treffen.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "Spiel mir meine Erkennungsmelodie!", + "advancement.create.musical_arm.desc": "Beobachte einen mechanischen Arm dabei, wie er einen Plattenspieler bedient.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 46861adad..d4be1010d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 641", + "_": "Missing Localizations: 771", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "¡Es hora de empezar a construir algunas contrapciones increíbles!", "advancement.create.andesite_alloy": "Aliteración Abundante", "advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.", - "advancement.create.its_alive": "¡Está Vivo!", - "advancement.create.its_alive.desc": "Observa girar a tu primer componente cinético. (Qué hermoso.)", - "advancement.create.shifting_gears": "Engranajes Cambiantes", - "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a uno pequeño, permitiendo cambiar la velocidad de tu contrapción.", - "advancement.create.overstressed": "¡Sobre-Estresado!", - "advancement.create.overstressed.desc": "Experimenta los límites del sobreestrés de primera mano.", - "advancement.create.belt": "Unidad de Algas", - "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", - "advancement.create.tunnel": "¡A cubierto!", - "advancement.create.tunnel.desc": "Embellece tu cinta mecánica con un Túnel.", - "advancement.create.splitter_tunnel": "Divide y Conquista", - "advancement.create.splitter_tunnel.desc": "Crea un divisor con un conjunto de túneles de latón.", - "advancement.create.chute": "Viniendose Abajo", - "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", - "advancement.create.upward_chute": "Abducción Aérea", - "advancement.create.upward_chute.desc": "Observa cómo un objeto arrojado vuela hacia un tolvogán impulsado por un ventilador.", - "advancement.create.belt_funnel": "Aletas Colgantes", - "advancement.create.belt_funnel.desc": "Coloca un ingreso lateral sobre una cinta mecánica o depósito para crear un tipo especial de ingreso.", - "advancement.create.belt_funnel_kiss": "¡Son Cintololos!", - "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", - "advancement.create.fan": "El Maestro del Aire Mecánico", - "advancement.create.fan.desc": "Monta la corriente de aire proporcionada por un ventilador mecánico.", - "advancement.create.fan_lava": "Calentador de Espacio Geotérmico", - "advancement.create.fan_lava.desc": "Quédate atrapado en una corriente de aire que derrite cosas.", - "advancement.create.fan_water": "Lavados Locos", - "advancement.create.fan_water.desc": "Quédate atrapado en una corriente de aire que lava cosas.", - "advancement.create.fan_smoke": "Fuelles Mecánicos", - "advancement.create.fan_smoke.desc": "Quédate atrapado en una corriente de aire que ahuma cosas.", - "advancement.create.wrench": "Configura Convenientemente", - "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus contrapciones.", - "advancement.create.goggles": "Visión Estresada", - "advancement.create.goggles.desc": "Crea lentes de ingeniero, que te ayudan a obtener más información cinética de los componentes.", - "advancement.create.speedometer": "Pero, ¿qué tan rápido exactamente?", - "advancement.create.speedometer.desc": "Coloca y dale poder a un velocímetro. Míralo con tus gafas para leer el número exacto.", - "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", - "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", - "advancement.create.aesthetics": "Bum, estética!", - "advancement.create.aesthetics.desc": "Coloca soportes en un eje, tubería y engranaje.", - "advancement.create.reinforced": "Bum, reforzado!", - "advancement.create.reinforced.desc": "Utiliza bloques de cubierta en un eje, tubería y cinta mecánica.", - "advancement.create.water_wheel": "Aprovechando la Hidráulica", - "advancement.create.water_wheel.desc": "¡Pon una rueda de agua e intenta hacer que gire!", - "advancement.create.chocolate_wheel": "Poder de buen gusto", - "advancement.create.chocolate_wheel.desc": "Haz funcionar una rueda de agua con... chocolate.", - "advancement.create.lava_wheel": "Rueda Magmática", - "advancement.create.lava_wheel.desc": "Ni siquiera debería haber funcionado.", - "advancement.create.cuckoo": "¿Ya es hora?", - "advancement.create.cuckoo.desc": "Sé testigo de cómo un reloj cu-cú anuncia la hora de acostarse. ¡A la cama!", - "advancement.create.millstone": "Trituradora de Bolsillo", - "advancement.create.millstone.desc": "Coloca y dale poder a una Piedra de Molino.", - "advancement.create.windmill": "Una leve brisa", - "advancement.create.windmill.desc": "Arma un molino.", - "advancement.create.maxed_windmill": "Una fuerte brisa", - "advancement.create.maxed_windmill.desc": "Arma un molino con su fuerza máxima.", "advancement.create.andesite_casing": "La Edad de la Andesita", "advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.", - "advancement.create.mechanical_drill": "Destructores Estacionarios", - "advancement.create.mechanical_drill.desc": "Coloca y dale poder a un Taladro Mecánico.", - "advancement.create.press": "Prensa Hidráulica de 1000 Kg contra este Trozo de Hierro", - "advancement.create.press.desc": "Dale poder a una prensa mecánica y utilízala para crear algunas planchas.", - "advancement.create.polished_rose_quartz": "Diamantes Rosados", - "advancement.create.polished_rose_quartz.desc": "Usa un trozo de papel de arena para pulir el cuarzo rosa hasta que se vuelva transparente.", - "advancement.create.electron_tube": "Bip Bup", - "advancement.create.electron_tube.desc": "Haz algunos Tubos de Electrones, útiles para crear maquinas un tanto menos... primitivas.", - "advancement.create.mechanical_saw": "Talado Estacionario", - "advancement.create.mechanical_saw.desc": "Coloca y dale poder a una Sierra Mecánica", - "advancement.create.basin": "Operación Tónel", - "advancement.create.basin.desc": "Pon una tónel y prueba a tirar algo dentro.", - "advancement.create.mixer": "Mezclando la cosa", - "advancement.create.mixer.desc": "Coloca una Mezcladora Mecánica sobre una tónel, enciéndela y comienza a mezclar algunos ingredientes.", - "advancement.create.blaze_burner": "Una fogata viviente", - "advancement.create.blaze_burner.desc": "Obtén un Quemador Blaze.", - "advancement.create.compact": "Compactado Automático", - "advancement.create.compact.desc": "Usa una Prensa y una tónel para compactar algunos objetos.", - "advancement.create.brass": "Aleaciones de verdad", - "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", - "advancement.create.brass_casing": "La Edad del Latón", - "advancement.create.brass_casing.desc": "Utiliza tu latón recién obtenido y un poco de madera para crear una cubierta más avanzada.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Unidad de Algas", + "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Viniendose Abajo", + "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Aprovechando la Hidráulica", + "advancement.create.water_wheel.desc": "¡Pon una rueda de agua e intenta hacer que gire!", + "advancement.create.windmill": "Una leve brisa", + "advancement.create.windmill.desc": "Arma un molino.", + "advancement.create.shifting_gears": "Engranajes Cambiantes", + "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a uno pequeño, permitiendo cambiar la velocidad de tu contrapción.", + "advancement.create.millstone": "Trituradora de Bolsillo", + "advancement.create.millstone.desc": "Coloca y dale poder a una Piedra de Molino.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", + "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "¡Son Cintololos!", + "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "La Edad del Cobre", "advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.", "advancement.create.spout": "Splash", "advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.", - "advancement.create.spout_potion": "Destilería global", - "advancement.create.spout_potion.desc": "Observa como un surtidor llena una botella con líquido de poción", - "advancement.create.chocolate": "Un mundo de Imaginación", - "advancement.create.chocolate.desc": "Obtén un balde de Chocolate Derretido", - "advancement.create.item_drain": "Drenaje por Caída", - "advancement.create.item_drain.desc": "Observa un objeto ser vaciado por un drenaje.", - "advancement.create.chained_item_drain": "¡Déjalo estar!", - "advancement.create.chained_item_drain.desc": "Observa cómo un objeto pasa por varios drenajes encadenados.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Flujo Espía", "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.", - "advancement.create.pipe_collision": "¡Nunca cruces el Río!", - "advancement.create.pipe_collision.desc": "Observa dos fluidos coincidir en tu red de tuberías.", - "advancement.create.pipe_spill": "¡Hay una fuga!", - "advancement.create.pipe_spill.desc": "Observa el final de una tubería tomar o colocar fluidos en el mundo.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Derrame industrial", "advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.", - "advancement.create.infinite_water": "Drenando el Oceano", - "advancement.create.infinite_water.desc": "Bombea de un cuerpo de agua lo suficientemente grande como para ser considerado Infinito.", - "advancement.create.infinite_lava": "Drenando el Centro de la Tierra", - "advancement.create.infinite_lava.desc": "Bombea de un cuerpo de lava lo suficientemente grande como para ser considerado Infinito.", - "advancement.create.infinite_chocolate": "Ahogándose en imaginación", - "advancement.create.infinite_chocolate.desc": "Bombea de un cuerpo de chocolate lo suficientemente grande como para ser considerado Infinito.", - "advancement.create.crafter": "Ensamblaje Automático", - "advancement.create.crafter.desc": "Coloca y dale poder a algunos Crafteadores Mecánicos.", - "advancement.create.clockwork_bearing": "Contrapción en Punto", - "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", - "advancement.create.nixie_tube": "Señales de Estilo", - "advancement.create.nixie_tube.desc": "Obtén y coloca un par de Tubos Nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Aleaciones de verdad", + "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", + "advancement.create.brass_casing": "La Edad del Latón", + "advancement.create.brass_casing.desc": "Utiliza tu latón recién obtenido y un poco de madera para crear una cubierta más avanzada.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Toca, Coloca y Ataca", "advancement.create.deployer.desc": "Coloca y dale poder a un Desplegador, la perfecta reflexión de tí mismo.", - "advancement.create.speed_controller": "¡Los ingenieros lo odian!", - "advancement.create.speed_controller.desc": "Pon un Controlador de Velocidad de Rotación, el último dispositivo del mercado para el engranaje moderno.", - "advancement.create.flywheel": "El Corazón de la Fábrica", - "advancement.create.flywheel.desc": "Conecte con éxito un horno motor al volante de inercia.", - "advancement.create.overstress_flywheel": "Altos niveles de estrés", - "advancement.create.overstress_flywheel.desc": "Sobreestresa un horno motor.", "advancement.create.precision_mechanism": "Curiosidades Complejas", "advancement.create.precision_mechanism.desc": "Ensambla un Mecanismo de Precisión.", + "advancement.create.speed_controller": "¡Los ingenieros lo odian!", + "advancement.create.speed_controller.desc": "Pon un Controlador de Velocidad de Rotación, el último dispositivo del mercado para el engranaje moderno.", "advancement.create.mechanical_arm": "¡Manos Ocupadas!", "advancement.create.mechanical_arm.desc": "Construye un brazo mecánico, selecciona entradas y salidas, colócalo y dale poder; entonces, observa como hace todo el trabajo por tí.", - "advancement.create.musical_arm": "¡Póneme mi tema principal!", - "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", - "advancement.create.arm_many_targets": "Organizatrón 3000", - "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", - "advancement.create.arm_blaze_burner": "Combustrón 3001", - "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", - "advancement.create.fist_bump": "¡Dame el puño, hermano!", - "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Un par de Gigantes", "advancement.create.crushing_wheel.desc": "Crea ruedas trituradoras para descomponer los materiales de manera más efectiva.", - "advancement.create.blaze_cake": "Rush de Azúcar", - "advancement.create.blaze_cake.desc": "Preparale a tu Quemador Blaze un pastel especial.", - "advancement.create.wand_of_symmetry": "Espejos Radiantes", - "advancement.create.wand_of_symmetry.desc": "Crea la Vara de Simetría.", - "advancement.create.extendo_grip": "¡Boioioing!", - "advancement.create.extendo_grip.desc": "Sostén un Agarrextensor.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Contrapción en Punto", + "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "¡Fwoomp!", "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.", - "advancement.create.dual_extendo_grip": "Boing: El último boioioing.", - "advancement.create.dual_extendo_grip.desc": "Sostén dos Agarrextensores para un alcance inhumano.", - "advancement.create.eob": "Fin de la Beta", - "advancement.create.eob.desc": "Espera encontrar más contenido aquí en el futuro. <3", + "advancement.create.extendo_grip": "¡Boioioing!", + "advancement.create.extendo_grip.desc": "Sostén un Agarrextensor.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combustrón 3001", + "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organizatrón 3000", + "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "¡Dame el puño, hermano!", + "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "¡Póneme mi tema principal!", + "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 7d4735cc5..a33e41aab 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 305", + "_": "Missing Localizations: 435", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "¡Es hora de empezar a construir increíbles artefactos animados!", "advancement.create.andesite_alloy": "Aliteraciones a montones", "advancement.create.andesite_alloy.desc": "Los materiales de Create tienen nombres extraños, la aleación de andesita es uno de ellos.", - "advancement.create.its_alive": "¡Está vivo!", - "advancement.create.its_alive.desc": "Mira cómo gira tu primer componente cinético.", - "advancement.create.shifting_gears": "Cambiando de marcha", - "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a una pequeña, lo que te permitirá cambiar la velocidad rotacional.", - "advancement.create.overstressed": "Sobrecargado", - "advancement.create.overstressed.desc": "Experimenta los límites del estrés.", - "advancement.create.belt": "Paseo de algas", - "advancement.create.belt.desc": "Conecta dos ejes con una cinta.", - "advancement.create.tunnel": "¡Cúbrete!", - "advancement.create.tunnel.desc": "Embellece tu cinta mecánica con un túnel.", - "advancement.create.splitter_tunnel": "Divide y vencerás", - "advancement.create.splitter_tunnel.desc": "Crear un divisor con túneles de latón.", - "advancement.create.chute": "Caída en picado", - "advancement.create.chute.desc": "Coloque un ducto, la contrapartida vertical de la cinta mecánica.", - "advancement.create.upward_chute": "Abducción aérea", - "advancement.create.upward_chute.desc": "Observe cómo un objeto lanzado vuela dentro de un ducto impulsado por un ventilador.", - "advancement.create.belt_funnel": "Colgantes con forma de embudo", - "advancement.create.belt_funnel.desc": "Coloca un embudo en una cinta mecánica o depósito para que sea un embudo lateral.", - "advancement.create.belt_funnel_kiss": "Los loros y las aletas", - "advancement.create.belt_funnel_kiss.desc": "Haz que se besen dos embudos montados en una cinta mecánica.", - "advancement.create.fan": "Maestro mecánico del aire", - "advancement.create.fan.desc": "Móntate en una corriente de aire de un ventilador revestido.", - "advancement.create.fan_lava": "Calentador geotérmico", - "advancement.create.fan_lava.desc": "Queda atrapado en una corriente de aire que funde las cosas.", - "advancement.create.fan_water": "Lavado de la ropa", - "advancement.create.fan_water.desc": "Queda atrapado en una corriente de aire que lava las cosas.", - "advancement.create.fan_smoke": "Fuelle mecánico", - "advancement.create.fan_smoke.desc": "Queda atrapado en una corriente de aire que humea los objetos.", - "advancement.create.wrench": "Configurar convenientemente", - "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus sistemas.", - "advancement.create.goggles": "Estresóvisión", - "advancement.create.goggles.desc": "Crea unas gafas del ingeniero para ayudarte a obtener más información cinética de los componentes.", - "advancement.create.speedometer": "Pero, ¿con qué rapidez exactamente?", - "advancement.create.speedometer.desc": "Coloca y alimenta un velocímetro. Míralo a través de las gafas del ingeniero para leer su valor exacto.", - "advancement.create.stressometer": "Pero, ¿cuán estresado exactamente?", - "advancement.create.stressometer.desc": "Coloca y alimenta un estresómetro. Míralo a través de las gafas del ingeniero para leer su valor exacto.", - "advancement.create.aesthetics": "Boom, ¡Estética!", - "advancement.create.aesthetics.desc": "Coloca soportes en ejes, ductos y engranajes.", - "advancement.create.reinforced": "Boom, ¡Reforzado!", - "advancement.create.reinforced.desc": "Utiliza bloques de revestimiento en un eje, un ducto y una cinta mecánica.", - "advancement.create.water_wheel": "Aprovechar la hidráulica", - "advancement.create.water_wheel.desc": "Coloca una rueda hidráulica e intenta hacerla girar.", - "advancement.create.chocolate_wheel": "Potencia de buen gusto", - "advancement.create.chocolate_wheel.desc": "Haz funcionar una rueda de agua con chocolate fundido.", - "advancement.create.lava_wheel": "Rueda de magma", - "advancement.create.lava_wheel.desc": "Esto no debió haber funcionado.", - "advancement.create.cuckoo": "¿Es el momento?", - "advancement.create.cuckoo.desc": "Presencia cómo un reloj de cuco anuncia la hora de acostarse.", - "advancement.create.millstone": "Triturador de bolsillo", - "advancement.create.millstone.desc": "Coloca y alimenta una piedra de molino.", - "advancement.create.windmill": "Una suave brisa", - "advancement.create.windmill.desc": "Monta un molino de viento.", - "advancement.create.maxed_windmill": "Una fuerte brisa", - "advancement.create.maxed_windmill.desc": "Monta un molino de viento con máxima intensidad.", "advancement.create.andesite_casing": "La edad de la andesita", "advancement.create.andesite_casing.desc": "Utiliza un poco de aleación de andesita y madera para crear un revestimiento básico.", - "advancement.create.mechanical_drill": "Interruptores fijos", - "advancement.create.mechanical_drill.desc": "Coloca y alimenta un taladro mecánico.", - "advancement.create.press": "¡La prensa se pone en marcha!", - "advancement.create.press.desc": "Activa una prensa mecánica y utilízala para crear algunas láminas.", - "advancement.create.polished_rose_quartz": "Diamantes rosas", - "advancement.create.polished_rose_quartz.desc": "Utiliza un trozo de papel de lija para pulir el cuarzo rosa hasta que se vuelva transparente.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Haz algunos tubos de electrones, útiles en la fabricación de maquinaria menos primitiva.", - "advancement.create.mechanical_saw": "Picado estacionario", - "advancement.create.mechanical_saw.desc": "Coloca y alimenta una sierra mecánica.", - "advancement.create.basin": "Funcionamiento de la cuenca", - "advancement.create.basin.desc": "Coloca una cuenca e intenta arrojar objetos en ella.", - "advancement.create.mixer": "Mezcla de colores", - "advancement.create.mixer.desc": "Coloca una batidora mecánica sobre el lavabo, enciéndala y empiece a mezclar algunos ingredientes.", - "advancement.create.blaze_burner": "Una chimenea viva", - "advancement.create.blaze_burner.desc": "Obtiene un quemador de blaze.", - "advancement.create.compact": "Compactación automática", - "advancement.create.compact.desc": "Utiliza una prensa y una cuenca para compactar algunos objetos.", - "advancement.create.brass": "Aleaciones reales", - "advancement.create.brass.desc": "Utiliza cobre molido y cinc molido para crear algo de latón.", - "advancement.create.brass_casing": "La Edad de Latón", - "advancement.create.brass_casing.desc": "Utiliza el latón recién obtenido y algo de madera para crear un revestimiento más avanzado.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Paseo de algas", + "advancement.create.belt.desc": "Conecta dos ejes con una cinta.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Caída en picado", + "advancement.create.chute.desc": "Coloque un ducto, la contrapartida vertical de la cinta mecánica.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Aprovechar la hidráulica", + "advancement.create.water_wheel.desc": "Coloca una rueda hidráulica e intenta hacerla girar.", + "advancement.create.windmill": "Una suave brisa", + "advancement.create.windmill.desc": "Monta un molino de viento.", + "advancement.create.shifting_gears": "Cambiando de marcha", + "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a una pequeña, lo que te permitirá cambiar la velocidad rotacional.", + "advancement.create.millstone": "Triturador de bolsillo", + "advancement.create.millstone.desc": "Coloca y alimenta una piedra de molino.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Pero, ¿cuán estresado exactamente?", + "advancement.create.stressometer.desc": "Coloca y alimenta un estresómetro. Míralo a través de las gafas del ingeniero para leer su valor exacto.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Los loros y las aletas", + "advancement.create.belt_funnel_kiss.desc": "Haz que se besen dos embudos montados en una cinta mecánica.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "La Edad de Cobre", "advancement.create.copper_casing.desc": "Utiliza algunas láminas de cobre y madera para crear algunos revestimientos de cobre.", "advancement.create.spout": "Sploosh", "advancement.create.spout.desc": "Observa el llenado de un fluido usando una boquilla.", - "advancement.create.spout_potion": "Cervecera global", - "advancement.create.spout_potion.desc": "Mira cómo un pico llena una botella con líquido de poción.", - "advancement.create.chocolate": "Un mundo de imaginación", - "advancement.create.chocolate.desc": "Obtiene un cubo con chocolate fundido.", - "advancement.create.item_drain": "Drenaje de la ropa", - "advancement.create.item_drain.desc": "Ve cómo se vacía un fluido mediante un drenador de objetos.", - "advancement.create.chained_item_drain": "¡Déjalo rodar!", - "advancement.create.chained_item_drain.desc": "Observa cómo un objeto rueda por varios drenadores de objetos encadenados.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Espía del flujo", "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de un tubo de fluidos con ventanas. Los tubos de fluido rectos se convierten en ventanas cuando se utiliza una llave inglesa en ellas.", - "advancement.create.pipe_collision": "No cruzar nunca los arroyos", - "advancement.create.pipe_collision.desc": "Vea cómo se unen dos fluidos en su red de tuberías.", - "advancement.create.pipe_spill": "¡Hay una fuga!", - "advancement.create.pipe_spill.desc": "Observe cómo un extremo abierto de una tubería toma o deposita fluidos en el mundo.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Vertidos industriales", "advancement.create.hose_pulley.desc": "Baja una polea de manguera y ve cómo se vacía o se llena un cuerpo de líquido.", - "advancement.create.infinite_water": "Drenando el océano", - "advancement.create.infinite_water.desc": "Bombea de una masa de agua lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_lava": "Drenaje del núcleo de los planetas", - "advancement.create.infinite_lava.desc": "Bombea de una masa de lava lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_chocolate": "Ahogándose en la imaginación", - "advancement.create.infinite_chocolate.desc": "Bombea desde una masa de chocolate fundido lo suficientemente grande como para ser considerado infinito.", - "advancement.create.crafter": "Montaje automatizado", - "advancement.create.crafter.desc": "Coloca y alimenta algunos ensambladores.", - "advancement.create.clockwork_bearing": "Las artefacto en punto", - "advancement.create.clockwork_bearing.desc": "Ensamblar una estructura montada sobre un rodamiento tipo reloj.", - "advancement.create.nixie_tube": "Signos de estilo", - "advancement.create.nixie_tube.desc": "Obtener y colocar un par de tubos nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Aleaciones reales", + "advancement.create.brass.desc": "Utiliza cobre molido y cinc molido para crear algo de latón.", + "advancement.create.brass_casing": "La Edad de Latón", + "advancement.create.brass_casing.desc": "Utiliza el latón recién obtenido y algo de madera para crear un revestimiento más avanzado.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Picar, colocar y atacar", "advancement.create.deployer.desc": "Coloca y potencia un desplegador, el reflejo perfecto de ti mismo.", - "advancement.create.speed_controller": "¡Los ingenieros lo odian!", - "advancement.create.speed_controller.desc": "Coloca un controlador de velocidad rotacional, el dispositivo definitivo para cambiar de marcha.", - "advancement.create.flywheel": "El corazón de la fábrica", - "advancement.create.flywheel.desc": "Conecta con éxito un motor a la rueda de inercia.", - "advancement.create.overstress_flywheel": "Altos niveles de estrés", - "advancement.create.overstress_flywheel.desc": "Sobrecarga un motor de horno.", "advancement.create.precision_mechanism": "Curiosidades complejas", "advancement.create.precision_mechanism.desc": "Monta un mecanismo de precisión.", + "advancement.create.speed_controller": "¡Los ingenieros lo odian!", + "advancement.create.speed_controller.desc": "Coloca un controlador de velocidad rotacional, el dispositivo definitivo para cambiar de marcha.", "advancement.create.mechanical_arm": "¡Manos ocupadas!", "advancement.create.mechanical_arm.desc": "Crea un brazo mecánico, selecciona las entradas y salidas, colócalo en el suelo y dale energía; luego observa cómo hace todo el trabajo por ti.", - "advancement.create.musical_arm": "¡Tócame la melodía!", - "advancement.create.musical_arm.desc": "Vea cómo un brazo mecánico maneja su tocadiscos.", - "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con diez o más posiciones de salida.", - "advancement.create.arm_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruya un brazo mecánico para alimentar su quemador de blaze.", - "advancement.create.fist_bump": "¡Pégale, hermano!", - "advancement.create.fist_bump.desc": "Haz que dos desplegadores se den un puñetazo.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Un par de gigantes", "advancement.create.crushing_wheel.desc": "Crea algunas ruedas de trituración para descomponer más materiales de forma más eficaz.", - "advancement.create.blaze_cake": "Fiebre del azúcar", - "advancement.create.blaze_cake.desc": "Hornea en tu quemador de blaze un pastel especial.", - "advancement.create.wand_of_symmetry": "Espejos radiantes", - "advancement.create.wand_of_symmetry.desc": "Crear un bastón de simetría.", - "advancement.create.extendo_grip": "¡Boioioing!", - "advancement.create.extendo_grip.desc": "Hazte con un agarre extentido.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Las artefacto en punto", + "advancement.create.clockwork_bearing.desc": "Ensamblar una estructura montada sobre un rodamiento tipo reloj.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "¡Fwoomp!", "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu cañón de patatas.", - "advancement.create.dual_extendo_grip": "La última edad del boing", - "advancement.create.dual_extendo_grip.desc": "Doble empuñadura extendida para un alcance sobrehumano.", - "advancement.create.eob": "Fin de la beta", - "advancement.create.eob.desc": "Espere más contenido aquí en el futuro. <3", + "advancement.create.extendo_grip": "¡Boioioing!", + "advancement.create.extendo_grip.desc": "Hazte con un agarre extentido.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combust-o-Tron", + "advancement.create.arm_blaze_burner.desc": "Instruya un brazo mecánico para alimentar su quemador de blaze.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organize-o-Tron", + "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con diez o más posiciones de salida.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "¡Pégale, hermano!", + "advancement.create.fist_bump.desc": "Haz que dos desplegadores se den un puñetazo.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "¡Tócame la melodía!", + "advancement.create.musical_arm.desc": "Vea cómo un brazo mecánico maneja su tocadiscos.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index b3790ca13..a16c5e91b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1879", + "_": "Missing Localizations: 1927", "_": "->------------------------] Game Elements [------------------------<-", @@ -664,152 +664,192 @@ "advancement.create.root": "Bienvenue dans Create.", "advancement.create.root.desc": "Le temps de la redstone est révolu!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", "advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.", - "advancement.create.its_alive": "Ça bouge!", - "advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.", - "advancement.create.shifting_gears": "rotor de transmission", - "advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin", - "advancement.create.overstressed": "Surtension", - "advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take Cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your Mechanical Belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling Down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a Chute, the vertical counterpart of the Belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a Fan-powered Chute.", - "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.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "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 things.", - "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": "Roue à aubes... dans de la lave?", - "advancement.create.lava_wheel.desc": "Cela... N'aurait pas dû fonctionner.", - "advancement.create.cuckoo": "C'est déjà l'heure?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a Cuckoo Clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "UNLOCALIZED: Vertical Logistics", + "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessed Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and use it to generate torque", "advancement.create.windmill": "Une brise moyenne...", "advancement.create.windmill.desc": "Construire un moulin à vent", - "advancement.create.maxed_windmill": "Et une forte brise.", - "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.shifting_gears": "rotor de transmission", + "advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin", + "advancement.create.millstone": "UNLOCALIZED: Embrace the Grind", + "advancement.create.millstone.desc": "UNLOCALIZED: Use a Millstone to pulverise materials", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", + "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "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.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", "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.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", + "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", + "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "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.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", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect a Furnace Engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High Levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", + "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "UNLOCALIZED: Real Alloys", + "advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", + "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", - "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations.", - "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", + "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", + "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your Blaze Burner a special cake.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Place and power a set of Crushing Wheels", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", + "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", - "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", + "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", + "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index c6c05b431..26d101bcc 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1568", + "_": "Missing Localizations: 1698", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "È ora di iniziare a costruire marchingegni fantastici!", "advancement.create.andesite_alloy": "Allitterazioni in abbondanza", "advancement.create.andesite_alloy.desc": "I materiali della Create hanno nomi strani, 'lega di andesite' è uno di quelli.", - "advancement.create.its_alive": "Si muove!", - "advancement.create.its_alive.desc": "Guarda il tuo primo componente cinetico che gira.", - "advancement.create.shifting_gears": "Meccanismi moventi", - "advancement.create.shifting_gears.desc": "Aggancia una ruota dentata grande con una piccola, permettendoti di cambiare la velocità.", - "advancement.create.overstressed": "Sovrastressato", - "advancement.create.overstressed.desc": "Vivi l'esperienza dei limiti dello stress in prima persona.", - "advancement.create.belt": "Nastro trasportatore", - "advancement.create.belt.desc": "Connetti due alberi con un nastro meccanico.", - "advancement.create.tunnel": "Coprilo!", - "advancement.create.tunnel.desc": "Abbellisci il tuo nastro meccanico con un tunnel.", - "advancement.create.splitter_tunnel": "Dividi e conquista", - "advancement.create.splitter_tunnel.desc": "Crea un separatore con una serie di tubi in ottone.", - "advancement.create.chute": "Giù per il tubo", - "advancement.create.chute.desc": "Piazza uno scivolo, la controparte verticale del nastro.", - "advancement.create.upward_chute": "SI VOLAAAA", - "advancement.create.upward_chute.desc": "Fai cadere un oggetto e guardalo salire per uno scivolo.", - "advancement.create.belt_funnel": "Gli imbuti", - "advancement.create.belt_funnel.desc": "Piazza un imbuto laterale su un nastro o di un deposito per creare un genere speciale.", - "advancement.create.belt_funnel_kiss": "Che dolce...", - "advancement.create.belt_funnel_kiss.desc": "Fai in modo che due imbuti montati su un nastro si 'bacino'.", - "advancement.create.fan": "Il dominatore dei venti", - "advancement.create.fan.desc": "Cavalca la corrente d'aria di un ventilatore incassato.", - "advancement.create.fan_lava": "Qui si scioglie", - "advancement.create.fan_lava.desc": "Mettiti in mezzo ad una corrente d'aria che fonde le cose.", - "advancement.create.fan_water": "Lavaggio da brivido", - "advancement.create.fan_water.desc": "Mettiti in mezzo ad una corrente d'aria che lava le cose.", - "advancement.create.fan_smoke": "Coff coff", - "advancement.create.fan_smoke.desc": "Mettiti in mezzo ad una corrente d'aria che affumica le cose.", - "advancement.create.wrench": "Configurazione", - "advancement.create.wrench.desc": "Crea una chiave inglese per aiutarti con le tue macchine.", - "advancement.create.goggles": "Vedo tutto", - "advancement.create.goggles.desc": "Crea degli occhiali da ingegnere per aiutarti a vedere più informazioni sui componenti cinetici.", - "advancement.create.speedometer": "Che velocità!", - "advancement.create.speedometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.stressometer": "Che stress!", - "advancement.create.stressometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.aesthetics": "Esteticamente perfetto", - "advancement.create.aesthetics.desc": "Piazza dei supporti su alberi, tubi e ruote dentate.", - "advancement.create.reinforced": "Rinforzato!", - "advancement.create.reinforced.desc": "Usa degli involucri appropriati su alberi, tubi e nastri meccanici.", - "advancement.create.water_wheel": "Ingegneria idraulica", - "advancement.create.water_wheel.desc": "Piazza una ruota idraulica e prova a farla girare!", - "advancement.create.chocolate_wheel": "Potere... tanto potere", - "advancement.create.chocolate_wheel.desc": "Fai girare una ruota idraulica con del cioccolato fuso.", - "advancement.create.lava_wheel": "Ruota magmatica", - "advancement.create.lava_wheel.desc": "Non dovrebbe funzionare così.", - "advancement.create.cuckoo": "È ora?", - "advancement.create.cuckoo.desc": "Aspetta che un orologio a cucù annunci l'ora di andare a dormire.", - "advancement.create.millstone": "Frantumatore portatile", - "advancement.create.millstone.desc": "Piazza e alimenta una macina.", - "advancement.create.windmill": "Una lieve brezza", - "advancement.create.windmill.desc": "Assembla un mulino a vento.", - "advancement.create.maxed_windmill": "Un vento potente", - "advancement.create.maxed_windmill.desc": "Assembla un mulino a vento con la massima potenza.", "advancement.create.andesite_casing": "L'era dell'andesite", "advancement.create.andesite_casing.desc": "Usa della lega di andesite e del legno per creare un involucro basilare.", - "advancement.create.mechanical_drill": "Distruttore statico", - "advancement.create.mechanical_drill.desc": "Piazza e alimenta una trivella meccanica.", - "advancement.create.press": "Come fa la pressa? BONK", - "advancement.create.press.desc": "Alimenta una pressa meccanica e usala per creare delle lamiere.", - "advancement.create.polished_rose_quartz": "Diamanti rosa", - "advancement.create.polished_rose_quartz.desc": "Usa un pezzo di carta vetrata per levigare il quarzo rosa finché non diventa trasparente.", - "advancement.create.electron_tube": "BeEp bOoP", - "advancement.create.electron_tube.desc": "Crea delle valvole, utile nella creazione di macchinari basici.", - "advancement.create.mechanical_saw": "Taglialegna statico", - "advancement.create.mechanical_saw.desc": "Piazza e alimenta una sega meccanica.", - "advancement.create.basin": "Operazione bacinella", - "advancement.create.basin.desc": "Piazza una bacinella e buttaci dentro degli oggetti.", - "advancement.create.mixer": "Facciamo un bel mix", - "advancement.create.mixer.desc": "Piazza un miscelatore meccanico sobra una bacinella, alimentalo e inizia a mischiare alcuni ingredienti.", - "advancement.create.blaze_burner": "Un camino vivente", - "advancement.create.blaze_burner.desc": "Ottieni un inceneritore di blaze.", - "advancement.create.compact": "Compattazione automatica", - "advancement.create.compact.desc": "Usa una pressa e una bacinella per compattare certi oggetti.", - "advancement.create.brass": "L'ottone", - "advancement.create.brass.desc": "Usa il rame e lo zinco frantumati per creare dell'ottone.", - "advancement.create.brass_casing": "L'era dell'ottone", - "advancement.create.brass_casing.desc": "Usa l'ottone e del legno per creare involucri più avanzati.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Nastro trasportatore", + "advancement.create.belt.desc": "Connetti due alberi con un nastro meccanico.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Giù per il tubo", + "advancement.create.chute.desc": "Piazza uno scivolo, la controparte verticale del nastro.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Ingegneria idraulica", + "advancement.create.water_wheel.desc": "Piazza una ruota idraulica e prova a farla girare!", + "advancement.create.windmill": "Una lieve brezza", + "advancement.create.windmill.desc": "Assembla un mulino a vento.", + "advancement.create.shifting_gears": "Meccanismi moventi", + "advancement.create.shifting_gears.desc": "Aggancia una ruota dentata grande con una piccola, permettendoti di cambiare la velocità.", + "advancement.create.millstone": "Frantumatore portatile", + "advancement.create.millstone.desc": "Piazza e alimenta una macina.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Che stress!", + "advancement.create.stressometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Che dolce...", + "advancement.create.belt_funnel_kiss.desc": "Fai in modo che due imbuti montati su un nastro si 'bacino'.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "L'era del rame", "advancement.create.copper_casing.desc": "Usa delle lamiere di ottone e del legno per creare involucri di ottone.", "advancement.create.spout": "SPLASH", "advancement.create.spout.desc": "Guarda mentre un oggetto fluido viene versato con uno spruzzo.", - "advancement.create.spout_potion": "Birrificio mondiale", - "advancement.create.spout_potion.desc": "Guarda mentre uno spruzzo riempie una bottiglia col liquido di una pozione.", - "advancement.create.chocolate": "Viva il cioccolato", - "advancement.create.chocolate.desc": "Ottieni un secchio di cioccolato fuso", - "advancement.create.item_drain": "Svuotamento completo", - "advancement.create.item_drain.desc": "Guarda un oggetto mentre viene svuotato da un drenante di oggetti.", - "advancement.create.chained_item_drain": "Lascialo rotolare", - "advancement.create.chained_item_drain.desc": "Guarda un oggetto rotolare attraverso una serie di drenanti di oggetti concatenati.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Spiare il flusso", "advancement.create.glass_pipe.desc": "Guarda mentre un fluido si propaga attraverso un tubo per fluidi con vetrata. Puoi aggiungere una vetrata cliccando con una chiave inglese sui tubi per fluidi dritti.", - "advancement.create.pipe_collision": "Mai incrociare due correnti!", - "advancement.create.pipe_collision.desc": "Guarda mentre due fluidi diversi si incrociano nella tua rete di tubi.", - "advancement.create.pipe_spill": "Ci dev'essere una perdita...", - "advancement.create.pipe_spill.desc": "Guarda mentre l'estremità aperta di un tubo assorbe o piazza dei fluidi nel mondo esterno.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Spillamento industriale", "advancement.create.hose_pulley.desc": "Tira giù una carrucola per tubi e guardala drenare o riempire un corpo dal fluido.", - "advancement.create.infinite_water": "Drenare un oceano", - "advancement.create.infinite_water.desc": "Pompa da un corpo d'acqua abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_lava": "Drenare il nucleo di un pianeta", - "advancement.create.infinite_lava.desc": "Pompa da un corpo di lava abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_chocolate": "Drenare la Fabbrica di Cioccolato", - "advancement.create.infinite_chocolate.desc": "Pompa da un corpo di cioccolato fuso abbastanza esteso da essere considerato infinito.", - "advancement.create.crafter": "Assemblamento automatico", - "advancement.create.crafter.desc": "Piazza e alimenta dei costruttori meccanici.", - "advancement.create.clockwork_bearing": "Tic toc tic toc", - "advancement.create.clockwork_bearing.desc": "Assembla una struttura montata su un supporto dell'orologio.", - "advancement.create.nixie_tube": "Segni di stile", - "advancement.create.nixie_tube.desc": "Ottieni e piazza un paio di tubi nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "L'ottone", + "advancement.create.brass.desc": "Usa il rame e lo zinco frantumati per creare dell'ottone.", + "advancement.create.brass_casing": "L'era dell'ottone", + "advancement.create.brass_casing.desc": "Usa l'ottone e del legno per creare involucri più avanzati.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Piazza e attacca", "advancement.create.deployer.desc": "Piazza e alimenta un installatore, il riflesso perfetto di te stesso.", + "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", + "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", "advancement.create.speed_controller": "Gli ingegneri lo odiano", "advancement.create.speed_controller.desc": "Piazza un regolatore di velocità di rotazione, il dispositivo più avanzato in termini di meccanica.", - "advancement.create.flywheel": "Il cuore della fabbrica", - "advancement.create.flywheel.desc": "Collega un motore ad un volano.", - "advancement.create.overstress_flywheel": "Alti livelli di stress", - "advancement.create.overstress_flywheel.desc": "Sovrastressa un motore fornace.", - "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", - "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.", "advancement.create.mechanical_arm": "Mani occupate!", "advancement.create.mechanical_arm.desc": "Costruisci un braccio meccanico, seleziona gli input e gli output, piazzalo e alimentalo; poi guardalo mentre fa il lavoro sporco al tuo posto.", - "advancement.create.musical_arm": "DJ, metti su la musica!", - "advancement.create.musical_arm.desc": "Guarda mentre un braccio meccanico attiva un giradischi.", - "advancement.create.arm_many_targets": "Organizzatore seriale", - "advancement.create.arm_many_targets.desc": "Programma un braccio meccanico con 10 o più posizioni di output.", - "advancement.create.arm_blaze_burner": "Combustibili", - "advancement.create.arm_blaze_burner.desc": "Istruisci il tuo braccio meccanico ad alimentare un inceneritore di blaze.", - "advancement.create.fist_bump": "Mano a mano!", - "advancement.create.fist_bump.desc": "Metti uno contro l'altro due installatori.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Una coppia di giganti", "advancement.create.crushing_wheel.desc": "Crea delle ruote di frantumazione per frantumare i materiali.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Dai una torta di blaze al tuo inceneritore.", - "advancement.create.wand_of_symmetry": "Perfettamente simmetrico", - "advancement.create.wand_of_symmetry.desc": "Crea un'asta di simmetria.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Tic toc tic toc", + "advancement.create.clockwork_bearing.desc": "Assembla una struttura montata su un supporto dell'orologio.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", + "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", "advancement.create.extendo_grip": "BOIOIOING", "advancement.create.extendo_grip.desc": "Procurati una presa extendo.", - "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", - "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "Boingaggio estremo", - "advancement.create.dual_extendo_grip.desc": "Brandisci due prese extendo per raggiungere il superuomo.", - "advancement.create.eob": "Fine della beta", - "advancement.create.eob.desc": "Aspettati altri contenuti in futuro. <3", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combustibili", + "advancement.create.arm_blaze_burner.desc": "Istruisci il tuo braccio meccanico ad alimentare un inceneritore di blaze.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organizzatore seriale", + "advancement.create.arm_many_targets.desc": "Programma un braccio meccanico con 10 o più posizioni di output.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Mano a mano!", + "advancement.create.fist_bump.desc": "Metti uno contro l'altro due installatori.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "DJ, metti su la musica!", + "advancement.create.musical_arm.desc": "Guarda mentre un braccio meccanico attiva un giradischi.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 4c39161ec..46320a7a2 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 307", + "_": "Missing Localizations: 437", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "素晴らしいからくり仕掛けを作る時間だ!", "advancement.create.andesite_alloy": "大いに押韻", "advancement.create.andesite_alloy.desc": "Createの素材には変な名前がついています、安山岩合金もその一つです", - "advancement.create.its_alive": "こいつ…動くぞ!", - "advancement.create.its_alive.desc": "機械の回転を初めて見る", - "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", - "advancement.create.overstressed": "応力超過", - "advancement.create.overstressed.desc": "応力の限界を肌で感じる", - "advancement.create.belt": "ベルトコンブア", - "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", - "advancement.create.tunnel": "隠れろ!", - "advancement.create.tunnel.desc": "メカニカルベルトをトンネルで飾る", - "advancement.create.splitter_tunnel": "困難は分割せよ", - "advancement.create.splitter_tunnel.desc": "真鍮トンネルで仕分け機を作る", - "advancement.create.chute": "転がり落ちる", - "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", - "advancement.create.upward_chute": "机上の空論", - "advancement.create.upward_chute.desc": "落ちているアイテムがファンで駆動するシュートに飛んでいく様子を見る", - "advancement.create.belt_funnel": "ファンネルのひらひら", - "advancement.create.belt_funnel.desc": "ベルトやデポなどの上に横向きのファンネルを置き、特殊形態にする", - "advancement.create.belt_funnel_kiss": "コウノトリの羽ばたき", - "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", - "advancement.create.fan": "メカニカルエアベンダー", - "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", - "advancement.create.fan_lava": "地熱ファンヒーター", - "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "風変わりな洗濯機", - "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", - "advancement.create.fan_smoke": "メカニカルふいご", - "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", - "advancement.create.wrench": "便利な設定", - "advancement.create.wrench.desc": "からくり作りに役立つレンチを作る", - "advancement.create.goggles": "応力をこの目で", - "advancement.create.goggles.desc": "機械からより多くの情報を手に入れるために、エンジニアのゴーグルを作る", - "advancement.create.speedometer": "正確な速度は?", - "advancement.create.speedometer.desc": "動作中の回転速度メーターをゴーグルで見て、正確な値を読み取る", - "advancement.create.stressometer": "正確な応力は?", - "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", - "advancement.create.aesthetics": "装飾ブーム!", - "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に木製ブラケットや金属ブラケットを取り付ける", - "advancement.create.reinforced": "補強ブーム!", - "advancement.create.reinforced.desc": "シャフト、パイプ、メカニカルベルトにケーシングブロックを取り付ける", - "advancement.create.water_wheel": "水力を使おう", - "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", - "advancement.create.chocolate_wheel": "味わい深い原動機", - "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "溶岩車", - "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", - "advancement.create.cuckoo": "今がその時だ", - "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", - "advancement.create.millstone": "ポケットクラッシャー", - "advancement.create.millstone.desc": "石臼を置いて、回転させる", - "advancement.create.windmill": "微風", - "advancement.create.windmill.desc": "風車を組み立てる", - "advancement.create.maxed_windmill": "雄風", - "advancement.create.maxed_windmill.desc": "最強の風車を組み立てる", "advancement.create.andesite_casing": "安山岩の時代", "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", - "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", - "advancement.create.press": "プレスで「ドン!」", - "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", - "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", - "advancement.create.polished_rose_quartz.desc": "紙やすりでローズクォーツをピカピカになるまで磨く", - "advancement.create.electron_tube": "ピッポッパ", - "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", - "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", - "advancement.create.basin": "お茶碗の作法", - "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "攪拌せよ", - "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", - "advancement.create.blaze_burner": "生き生きとしたインテリア", - "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", - "advancement.create.compact": "自動圧縮", - "advancement.create.compact.desc": "鉢の上にメカニカルプレスを設置して、素材を圧縮する", - "advancement.create.brass": "本物の合金", - "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", - "advancement.create.brass_casing": "真鍮の時代", - "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "ベルトコンブア", + "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "転がり落ちる", + "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "水力を使おう", + "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", + "advancement.create.windmill": "微風", + "advancement.create.windmill.desc": "風車を組み立てる", + "advancement.create.shifting_gears": "ギアシフト!", + "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", + "advancement.create.millstone": "ポケットクラッシャー", + "advancement.create.millstone.desc": "石臼を置いて、回転させる", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "正確な応力は?", + "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "コウノトリの羽ばたき", + "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "銅の時代", "advancement.create.copper_casing.desc": "銅と木材を使って銅ケーシングを作る", "advancement.create.spout": "ぱしゃぱしゃ", "advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る", - "advancement.create.spout_potion": "世界のお薬屋さん", - "advancement.create.spout_potion.desc": "アイテム注液口がポーションを瓶に詰めているところを見る", - "advancement.create.chocolate": "夢の世界", - "advancement.create.chocolate.desc": "溶けたチョコレート入りバケツを手に入れる", - "advancement.create.item_drain": "バケツをひっくり返したような", - "advancement.create.item_drain.desc": "アイテム排液口が液体アイテムを空にしている様子を見る", - "advancement.create.chained_item_drain": "アイテムころりん", - "advancement.create.chained_item_drain.desc": "自動化したアイテム排液口の上を転がるアイテムを見る", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "フロウ・スパイ", "advancement.create.glass_pipe.desc": "まっすぐな液体パイプにレンチを使って、窓から通る液体を見る", - "advancement.create.pipe_collision": "流れを合流させるな!", - "advancement.create.pipe_collision.desc": "パイプの中で2つの液体がぶつかる様子を見よう", - "advancement.create.pipe_spill": "漏れてる!", - "advancement.create.pipe_spill.desc": "パイプの端を露出させて液体が吹き出しているところを見る", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", - "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", - "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", - "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", - "advancement.create.crafter": "部品集結!", - "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", - "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", - "advancement.create.nixie_tube": "イカした看板", - "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "本物の合金", + "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", + "advancement.create.brass_casing": "真鍮の時代", + "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "突く、置く、殴る!", "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", - "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", - "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", - "advancement.create.overstress_flywheel": "ハイレベル応力", - "advancement.create.overstress_flywheel.desc": "かまどエンジンに応力超過をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", "advancement.create.precision_mechanism.desc": "精密機構を組み立てる", + "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", + "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", "advancement.create.mechanical_arm": "手が離せない!", "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して稼働させ、あなたのために一生懸命働いている様子を見る", - "advancement.create.musical_arm": "お気に入りの曲を流して!", - "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", - "advancement.create.arm_many_targets": "整理整頓", - "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", - "advancement.create.arm_blaze_burner": "燃料補給", - "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", - "advancement.create.fist_bump": "グータッチだ、兄弟!", - "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "巨大な一対", "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", - "advancement.create.blaze_cake": "シュガー・ラッシュ", - "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.wand_of_symmetry": "輝く鏡", - "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", - "advancement.create.extendo_grip": "ビヨヨーン!", - "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "時計仕掛け", + "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", - "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", - "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", - "advancement.create.eob": "ベータ版はここまで", - "advancement.create.eob.desc": "今後のコンテンツにもご期待ください <3", + "advancement.create.extendo_grip": "ビヨヨーン!", + "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "燃料補給", + "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "整理整頓", + "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "グータッチだ、兄弟!", + "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "お気に入りの曲を流して!", + "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 9062454f0..55f94969c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 307", + "_": "Missing Localizations: 437", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "멋진 장치들을 창조할 시간입니다!", "advancement.create.andesite_alloy": "이게 합금?", "advancement.create.andesite_alloy.desc": "돌로 합금을 만들 수 있나요?", - "advancement.create.its_alive": "살아 움직이는", - "advancement.create.its_alive.desc": "당신의 첫 장치가 움직입니다!", - "advancement.create.shifting_gears": "톱니바퀴 돌리고!", - "advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하여 장치의 속도를 바꿀 수 있습니다.", - "advancement.create.overstressed": "과부하", - "advancement.create.overstressed.desc": "피로도의 한계를 경험해보세요.", - "advancement.create.belt": "켈프 벨트", - "advancement.create.belt.desc": "두 축에 벨트를 이으세요.", - "advancement.create.tunnel": "벨트 꾸미기", - "advancement.create.tunnel.desc": "터널을 이용해 벨트를 꾸며보세요.", - "advancement.create.splitter_tunnel": "분할 정복 알고리즘", - "advancement.create.splitter_tunnel.desc": "여러 황동 터널을 일렬로 설치해, 아이템을 나누세요.", - "advancement.create.chute": "쏟아져 내려와", - "advancement.create.chute.desc": "수직 벨트역할을 하는 슈트를 설치하세요.", - "advancement.create.upward_chute": "바람 납치", - "advancement.create.upward_chute.desc": "선풍기를 설치하고, 슈트 안에서 아이템이 날아가는 것을 보세요.", - "advancement.create.belt_funnel": "퍼널 깔기", - "advancement.create.belt_funnel.desc": "퍼널을 벨트나 아이템 거치대에 설치하여 특별한 모양을 만들어 보세요.", - "advancement.create.belt_funnel_kiss": "퍼널는 어떻게 태어나?", - "advancement.create.belt_funnel_kiss.desc": "두 벨트 퍼널을 만나게하세요. 쪽!", - "advancement.create.fan": "바람의 힘을 느껴라", - "advancement.create.fan.desc": "선풍기 바람을 느껴보세요.", - "advancement.create.fan_lava": "지열 난방기", - "advancement.create.fan_lava.desc": "아이템을 녹이는 바람을 느껴보세요.", - "advancement.create.fan_water": "축축한 세척", - "advancement.create.fan_water.desc": "아이템을 씻는 바람을 느껴보세요.", - "advancement.create.fan_smoke": "기계 풀무", - "advancement.create.fan_smoke.desc": "아이템을 굽는 바람을 느껴보세요.", - "advancement.create.wrench": "곡괭이여 잘 있거라", - "advancement.create.wrench.desc": "당신의 장치 설계를 도와줄 렌치를 만드세요.", - "advancement.create.goggles": "피로돋보기", - "advancement.create.goggles.desc": "장치에 대한 운동 정보를 가져다 줄 고글을 만드세요.", - "advancement.create.speedometer": "근데 얼마나 빨라?", - "advancement.create.speedometer.desc": "속도 계측기를 작동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.stressometer": "근데 얼마나 피로해?", - "advancement.create.stressometer.desc": "피로도 계측기를 작동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.aesthetics": "미적 감각!", - "advancement.create.aesthetics.desc": "축, 파이프, 톱니바퀴에 지지대를 설치하세요.", - "advancement.create.reinforced": "튼튼 보강!", - "advancement.create.reinforced.desc": "축, 파이프, 벨트에 적절한 케이스를 씌우세요.", - "advancement.create.water_wheel": "수력 동력화", - "advancement.create.water_wheel.desc": "물레바퀴를 설치하고 회전하게 만드세요!", - "advancement.create.chocolate_wheel": "초콜릿바퀴", - "advancement.create.chocolate_wheel.desc": "녹은 초콜릿으로 물레바퀴를 돌리세요.", - "advancement.create.lava_wheel": "불레바퀴", - "advancement.create.lava_wheel.desc": "용암으로 물레바퀴를 회전하게 만드세... 어?", - "advancement.create.cuckoo": "벌써 이렇게나 시간이 지났어?", - "advancement.create.cuckoo.desc": "뻐꾸기 시계가 잘 시간을 알립니다. 잘 자...", - "advancement.create.millstone": "나만의 작은 분쇄기", - "advancement.create.millstone.desc": "멧돌을 설치하고 작동시키세요.", - "advancement.create.windmill": "산들 바람", - "advancement.create.windmill.desc": "풍차 베어링을 작동시키세요.", - "advancement.create.maxed_windmill": "거센 바람", - "advancement.create.maxed_windmill.desc": "풍차 베어링을 최대 속력으로 작동시키세요.", "advancement.create.andesite_casing": "안산암 시대", "advancement.create.andesite_casing.desc": "안산암과 나무를 이용하여 기본 케이스를 만드세요.", - "advancement.create.mechanical_drill": "굴착기 작동", - "advancement.create.mechanical_drill.desc": "드릴을 설치하고 작동시키세요.", - "advancement.create.press": "'깡!'", - "advancement.create.press.desc": "프레스를 만들고 금속 판을 만들어보세요.", - "advancement.create.polished_rose_quartz": "장밋빛 다이아몬드", - "advancement.create.polished_rose_quartz.desc": "장밋빛 석영을 투명해지도록 열심히 사포질하세요.", - "advancement.create.electron_tube": "삐-빅", - "advancement.create.electron_tube.desc": "전지 튜브를 만드세요. 발전된 장치들에 쓰입니다.", - "advancement.create.mechanical_saw": "벌목기 작동", - "advancement.create.mechanical_saw.desc": "톱을 설치하고 작동시키세요.", - "advancement.create.basin": "대야 시스템", - "advancement.create.basin.desc": "대야를 설치하고 아이템을 던져보세요.", - "advancement.create.mixer": "섞고 돌리고 섞고", - "advancement.create.mixer.desc": "대야 위에 믹서를 설치하고, 작동시켜 재료를 만드세요.", - "advancement.create.blaze_burner": "살아있는 불", - "advancement.create.blaze_burner.desc": "블레이즈 버너를 얻으세요.", - "advancement.create.compact": "자동 압축", - "advancement.create.compact.desc": "대야와 압착기를 이용하서 아이템을 섞어보세요.", - "advancement.create.brass": "진짜 합금", - "advancement.create.brass.desc": "구리와 아연을 가지고 황동을 만드세요.", - "advancement.create.brass_casing": "황동기 시대", - "advancement.create.brass_casing.desc": "새롭게 얻은 황동과 나무를 가지고 업그레이드된 케이스를 만드세요.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "켈프 벨트", + "advancement.create.belt.desc": "두 축에 벨트를 이으세요.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "쏟아져 내려와", + "advancement.create.chute.desc": "수직 벨트역할을 하는 슈트를 설치하세요.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "수력 동력화", + "advancement.create.water_wheel.desc": "물레바퀴를 설치하고 회전하게 만드세요!", + "advancement.create.windmill": "산들 바람", + "advancement.create.windmill.desc": "풍차 베어링을 작동시키세요.", + "advancement.create.shifting_gears": "톱니바퀴 돌리고!", + "advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하여 장치의 속도를 바꿀 수 있습니다.", + "advancement.create.millstone": "나만의 작은 분쇄기", + "advancement.create.millstone.desc": "멧돌을 설치하고 작동시키세요.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "근데 얼마나 피로해?", + "advancement.create.stressometer.desc": "피로도 계측기를 작동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "퍼널는 어떻게 태어나?", + "advancement.create.belt_funnel_kiss.desc": "두 벨트 퍼널을 만나게하세요. 쪽!", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "구리 시대", "advancement.create.copper_casing.desc": "구리 판을 이용해 구리 케이스를 만드세요.", "advancement.create.spout": "쪼르록", "advancement.create.spout.desc": "주입기를 사용하여 아이템에 액체를 채우세요.", - "advancement.create.spout_potion": "대규모 양조", - "advancement.create.spout_potion.desc": "주입기를 사용하여 유리병에 물약을 채우세요.", - "advancement.create.chocolate": "상상의 세계", - "advancement.create.chocolate.desc": "초콜릿 양동이를 얻으세요.", - "advancement.create.item_drain": "회전 배수", - "advancement.create.item_drain.desc": "아이템 배수구가 액체를 비우는 것을 보세요.", - "advancement.create.chained_item_drain": "데구르르 굴러가", - "advancement.create.chained_item_drain.desc": "아이템이 여러 배수구 위를 굴러가는 것을 보세요.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "액체 엿보기", "advancement.create.glass_pipe.desc": "액체가 창이 달린 파이프를 지나는 것을 보세요. 직선 파이프를 렌치로 우클릭하면 창문이 생깁니다.", - "advancement.create.pipe_collision": "그 액체를 섞지 마오", - "advancement.create.pipe_collision.desc": "액체관에서 두 가지 액체가 만나는 것을 관찰하세요.", - "advancement.create.pipe_spill": "누출 사고", - "advancement.create.pipe_spill.desc": "파이프 끝을 열어 액체가 밖으로 나오는 것을 보세요.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "공업 펌프", "advancement.create.hose_pulley.desc": "호스 도르래를 사용하여 액체를 채우거나 빨아들이세요.", - "advancement.create.infinite_water": "바다를 흡수하다", - "advancement.create.infinite_water.desc": "무한으로 인식되는 물 웅덩이에서 물을 끌어올리세요.", - "advancement.create.infinite_lava": "지옥을 흡수하다", - "advancement.create.infinite_lava.desc": "무한으로 인식되는 용암 웅덩이에서 용암을 끌어올리세요.", - "advancement.create.infinite_chocolate": "상상 속에 잠기다", - "advancement.create.infinite_chocolate.desc": "무한으로 인식되는 초콜릿 웅덩이에서 초콜릿을 끌어올리세요.", - "advancement.create.crafter": "자동 조합", - "advancement.create.crafter.desc": "기계식 조합기를 설치하고 작동시키세요.", - "advancement.create.clockwork_bearing": "시계 제작", - "advancement.create.clockwork_bearing.desc": "시계 베어링에 구조물을 달고 작동시키세요.", - "advancement.create.nixie_tube": "나는 스타일있게 표시해", - "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "진짜 합금", + "advancement.create.brass.desc": "구리와 아연을 가지고 황동을 만드세요.", + "advancement.create.brass_casing": "황동기 시대", + "advancement.create.brass_casing.desc": "새롭게 얻은 황동과 나무를 가지고 업그레이드된 케이스를 만드세요.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "찌르고, 설치하고, 공격!", "advancement.create.deployer.desc": "당신의 분신, 기계 손을 설치하고 작동시키세요.", - "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", - "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", - "advancement.create.flywheel": "공장의 심장", - "advancement.create.flywheel.desc": "화로엔진에 플라이휠을 연결하세요.", - "advancement.create.overstress_flywheel": "정말정말 높은 피로", - "advancement.create.overstress_flywheel.desc": "화로 엔진을 과부하하세요.", "advancement.create.precision_mechanism": "복잡한 호기심", "advancement.create.precision_mechanism.desc": "정밀 기계장치를 조립하세요.", + "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", + "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.mechanical_arm": "바쁘다 바빠!", "advancement.create.mechanical_arm.desc": "기계 팔을 조합하고, 입력부와 출력부를 정하고, 설치한 다음 돌리세요. 그리고 그것이 작동하는 것을 보세요.", - "advancement.create.musical_arm": "볼륨 최대로!", - "advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요.", - "advancement.create.arm_many_targets": "정리를 할 수 있는 정도의 능력", - "advancement.create.arm_many_targets.desc": "기계 팔에 10개 이상의 출력부를 설정하세요.", - "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", - "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", - "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 기계 손을 서로 부딫치게 하세요.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "한 쌍의 거인들", "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", - "advancement.create.blaze_cake": "폭주", - "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.wand_of_symmetry": "빛나는 건축", - "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.extendo_grip": "띠요옹!", - "advancement.create.extendo_grip.desc": "외장형 연장 팔을 손에 쥐세요.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "시계 제작", + "advancement.create.clockwork_bearing.desc": "시계 베어링에 구조물을 달고 작동시키세요.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "'퐁!'", "advancement.create.potato_cannon.desc": "감자포로 적을 처치하세요.", - "advancement.create.dual_extendo_grip": "띠요오오오오오오용!", - "advancement.create.dual_extendo_grip.desc": "양손에 외장형 연장 팔을 들어 초월적인 사거리를 가지세요.", - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "이후 업데이트를 기다려주세요. <3", + "advancement.create.extendo_grip": "띠요옹!", + "advancement.create.extendo_grip.desc": "외장형 연장 팔을 손에 쥐세요.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", + "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "정리를 할 수 있는 정도의 능력", + "advancement.create.arm_many_targets.desc": "기계 팔에 10개 이상의 출력부를 설정하세요.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "하이파이브!", + "advancement.create.fist_bump.desc": "두 기계 손을 서로 부딫치게 하세요.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "볼륨 최대로!", + "advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 4dda448d6..7b720b641 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2231", + "_": "Missing Localizations: 2271", "_": "->------------------------] Game Elements [------------------------<-", @@ -663,153 +663,193 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "UNLOCALIZED: Welcome to Create", - "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", - "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears", - "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption.", - "advancement.create.overstressed": "UNLOCALIZED: Overstressed", - "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", - "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take Cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your Mechanical Belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling Down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a Chute, the vertical counterpart of the Belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a Fan-powered Chute.", - "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.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "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 things.", - "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 Cuckoo 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.root.desc": "UNLOCALIZED: Here be Contraptions", + "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Obtain some Andesite Alloy, Create's most important resource", "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.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "UNLOCALIZED: Kelp Drive", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "UNLOCALIZED: Vertical Logistics", + "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessed Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and use it to generate torque", + "advancement.create.windmill": "UNLOCALIZED: A Mild Breeze", + "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill and use it to generate torque", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption", + "advancement.create.millstone": "UNLOCALIZED: Embrace the Grind", + "advancement.create.millstone.desc": "UNLOCALIZED: Use a Millstone to pulverise materials", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", + "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "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.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", "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.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", + "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", + "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "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.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", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect a Furnace Engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High Levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", + "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "UNLOCALIZED: Real Alloys", + "advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", + "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", - "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations.", - "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", + "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", + "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your Blaze Burner a special cake.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Place and power a set of Crushing Wheels", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", + "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", - "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", + "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", + "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index 1a7bbbea6..529cb3362 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 680", + "_": "Missing Localizations: 810", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "Czas, aby zacząć tworzyć wspaniałe Maszyny!", "advancement.create.andesite_alloy": "Słynne stopy", "advancement.create.andesite_alloy.desc": "Materiały z Create mają czasami dziwne nazwy, stop andezytu jest jednym z nich.", - "advancement.create.its_alive": "To żyje!", - "advancement.create.its_alive.desc": "Patrz, jak Twój pierwszy ruchomy komponent się obraca.", - "advancement.create.shifting_gears": "Przekładnia", - "advancement.create.shifting_gears.desc": "Połącz duże koło zębate i małe koło zębate, co pozwoli zmienić prędkość obrotu Twojej maszyny.", - "advancement.create.overstressed": "Przeciążenie", - "advancement.create.overstressed.desc": "Doświadcz limitów obciążenia z pierwszej ręki.", - "advancement.create.belt": "Taśma produkcyjna", - "advancement.create.belt.desc": "Połącz dwa wały tworząc taśmociąg.", - "advancement.create.tunnel": "Światełko w tunelu", - "advancement.create.tunnel.desc": "Ulepsz swój taśmociąg dodając tunel.", - "advancement.create.splitter_tunnel": "Dziel i rządź", - "advancement.create.splitter_tunnel.desc": "Stwórz rozdzielacz przy pomocy kilku mosiężnych tuneli.", - "advancement.create.chute": "Czarna dziura", - "advancement.create.chute.desc": "Postaw zsyp - pionową część taśmociągu.", - "advancement.create.upward_chute": "Powietrzne porwanie", - "advancement.create.upward_chute.desc": "Wrzuć przedmiot do zsypu z wiatrakiem.", - "advancement.create.belt_funnel": "Sprzęt produkcyjny", - "advancement.create.belt_funnel.desc": "Postaw lejek lub składnicę na taśmociągu, aby dodać dodatkowe funkcje.", - "advancement.create.belt_funnel_kiss": "Zakochana para", - "advancement.create.belt_funnel_kiss.desc": "Spraw, aby dwa lejki na taśmociągu się pocałowały", - "advancement.create.fan": "Wisząc w powietrzu", - "advancement.create.fan.desc": "Unieś się w powietrze na izolowanym wiatraku.", - "advancement.create.fan_lava": "Ogrzewanie geotermalne", - "advancement.create.fan_lava.desc": "Wpadnij w strumień powietrza zdolnego do topienia metali.", - "advancement.create.fan_water": "Myjnia automatyczna", - "advancement.create.fan_water.desc": "Wpadnij w strumień powietrza przenoszącego krople wody.", - "advancement.create.fan_smoke": "Wędzarnia", - "advancement.create.fan_smoke.desc": "Wpadnij w strumień powietrza z dymem.", - "advancement.create.wrench": "Poręczna konfiguracja", - "advancement.create.wrench.desc": "Wytwórz klucz pomocny w pracy z maszynami.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Wytwórz gogle inżyniera, które pomogą Ci w zdobyciu większej ilości informacji o ruchomych komponentach.", - "advancement.create.speedometer": "Ale że jak szybko?", - "advancement.create.speedometer.desc": "Połóż i wpraw w ruch prędkościomierz. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.stressometer": "Ale że jakie obciążenie?", - "advancement.create.stressometer.desc": "Połóż i wpraw w ruch miernik obciążenia. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.aesthetics": "Estetyka!", - "advancement.create.aesthetics.desc": "Postaw wsporniki przy wale, rurze i kole zębatym.", - "advancement.create.reinforced": "Wzmocnienie!", - "advancement.create.reinforced.desc": "Użyj pasujących obudów na wale, rurze i kole zębatym.", - "advancement.create.water_wheel": "Energia odnawialna", - "advancement.create.water_wheel.desc": "Postaw koło wodne i spraw, aby zaczęło się kręcić!", - "advancement.create.chocolate_wheel": "Smakowita energia", - "advancement.create.chocolate_wheel.desc": "Wpraw w ruch koło wodne przy pomocy gorącej czekolady.", - "advancement.create.lava_wheel": "Koło magmowe", - "advancement.create.lava_wheel.desc": "To nigdy nie powinno było zadziałać.", - "advancement.create.cuckoo": "To już czas?", - "advancement.create.cuckoo.desc": "Bądź świadkiem tego, jak zegar z kukułką ogłasza porę snu.", - "advancement.create.millstone": "Kieszonkowy rozgniatacz", - "advancement.create.millstone.desc": "Postaw i wpraw w ruch młynek.", - "advancement.create.windmill": "Łagodna bryza", - "advancement.create.windmill.desc": "Skonstruuj działający wiatrak.", - "advancement.create.maxed_windmill": "Silna bryza", - "advancement.create.maxed_windmill.desc": "Skonstruuj wiatrak o maksymalnej sile.", "advancement.create.andesite_casing": "Epoka andezytu łupanego", "advancement.create.andesite_casing.desc": "Użyj stopu andezytu, aby wytworzyć podstawową obudowę.", - "advancement.create.mechanical_drill": "Wiertło stacjonarne", - "advancement.create.mechanical_drill.desc": "Postaw i wpraw w ruch mechaniczne wiertło.", - "advancement.create.press": "Prasa nie do końca drukarska", - "advancement.create.press.desc": "Wpraw w ruch prasę i wytłocz kilka metalowych arkuszy.", - "advancement.create.polished_rose_quartz": "Różowe diamenty", - "advancement.create.polished_rose_quartz.desc": "Poleruj różowy kwarc papierem ściernym tak długo, aż będzie przezroczysty.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Wytwórz kilka lamp elektronowych, przydatnych do konstrukcji mniej prymitywnych maszyn.", - "advancement.create.mechanical_saw": "Siekiera stacjonarna", - "advancement.create.mechanical_saw.desc": "Postaw i wpraw w ruch mechaniczną piłę.", - "advancement.create.basin": "Tygiel kulturowy", - "advancement.create.basin.desc": "Postaw tygiel i wrzuć do niego kilka przedmiotów.", - "advancement.create.mixer": "Pomieszanie z poplątaniem", - "advancement.create.mixer.desc": "Postaw nad tyglem mechaniczny mikser i użyj go do zmieszania przedmiotów na jednolitą masę.", - "advancement.create.blaze_burner": "Żywy ogień", - "advancement.create.blaze_burner.desc": "Zdobądź płomienny palnik.", - "advancement.create.compact": "Zautomatyzowane prasowanie", - "advancement.create.compact.desc": "Użyj prasy i tygla do sprasowania przedmiotów.", - "advancement.create.brass": "Prawdziwe stopy", - "advancement.create.brass.desc": "Zmieszaj sproszkowaną miedź i sproszkowany cynk, tworząc mosiądz.", - "advancement.create.brass_casing": "Epoka brązu", - "advancement.create.brass_casing.desc": "Użyj nowo poznany mosiądz i odrobiny drewna, aby wytworzyć ulepszoną obudowę.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Taśma produkcyjna", + "advancement.create.belt.desc": "Połącz dwa wały tworząc taśmociąg.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Czarna dziura", + "advancement.create.chute.desc": "Postaw zsyp - pionową część taśmociągu.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Energia odnawialna", + "advancement.create.water_wheel.desc": "Postaw koło wodne i spraw, aby zaczęło się kręcić!", + "advancement.create.windmill": "Łagodna bryza", + "advancement.create.windmill.desc": "Skonstruuj działający wiatrak.", + "advancement.create.shifting_gears": "Przekładnia", + "advancement.create.shifting_gears.desc": "Połącz duże koło zębate i małe koło zębate, co pozwoli zmienić prędkość obrotu Twojej maszyny.", + "advancement.create.millstone": "Kieszonkowy rozgniatacz", + "advancement.create.millstone.desc": "Postaw i wpraw w ruch młynek.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Ale że jakie obciążenie?", + "advancement.create.stressometer.desc": "Połóż i wpraw w ruch miernik obciążenia. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Zakochana para", + "advancement.create.belt_funnel_kiss.desc": "Spraw, aby dwa lejki na taśmociągu się pocałowały", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "Epoka miedzi", "advancement.create.copper_casing.desc": "Użyj arkuszy miedzi i odrobiny drewna, aby wytworzyć miedzianą obudowę.", "advancement.create.spout": "Plum", "advancement.create.spout.desc": "Patrz jak przedmiot napełnia się płynem przy użyciu napełniacza.", - "advancement.create.spout_potion": "Globalny browar", - "advancement.create.spout_potion.desc": "Patrz jak butelka napełnia się miksturą.", - "advancement.create.chocolate": "Świat wyobraźni", - "advancement.create.chocolate.desc": "Zdobądź wiadro płynnej czekolady.", - "advancement.create.item_drain": "Szybki odpływ", - "advancement.create.item_drain.desc": "Patrz jak przedmiot jest opróżniany przy użyciu odpływu.", - "advancement.create.chained_item_drain": "Niech się dzieje!", - "advancement.create.chained_item_drain.desc": "Patrz jak przedmiot toczy się przez wiele połączonych odpływów.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Płynny podglądacz", "advancement.create.glass_pipe.desc": "Patrz jak ciecz płynie przez rurę z okienkiem. Użyj klucza na prostej rurze, aby dodać do niej okno.", - "advancement.create.pipe_collision": "Nigdy nie krzyżuj strumieni!", - "advancement.create.pipe_collision.desc": "Patrz jak dwie ciecze spotykają się w Twoim systemie rur.", - "advancement.create.pipe_spill": "Mamy wyciek!", - "advancement.create.pipe_spill.desc": "Patrz jak otwarta część rury stawia lub pochłania ciecze.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Wyciek przemysłowy", "advancement.create.hose_pulley.desc": "Obniż krążek z wężem, aby osuszyć lub wypełnić płynem jakiś obszar.", - "advancement.create.infinite_water": "Osuszanie oceanu", - "advancement.create.infinite_water.desc": "Wypompuj trochę wody z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_lava": "Prosto z jądra Ziemi", - "advancement.create.infinite_lava.desc": "Wypompuj trochę lawy z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_chocolate": "Tonę we własnej wyobraźni", - "advancement.create.infinite_chocolate.desc": "Wypompuj trochę czekolady z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.crafter": "Linia produkcyjna", - "advancement.create.crafter.desc": "Postaw i wpraw w ruch mechaniczny stół rzemieślniczy.", - "advancement.create.clockwork_bearing": "Jaką mamy godzinę?", - "advancement.create.clockwork_bearing.desc": "Skonstruuj strukturę obracającą się na mechanizmie zegarowym.", - "advancement.create.nixie_tube": "Oznaka stylu", - "advancement.create.nixie_tube.desc": "Wytwórz i postaw parę lamp cyfrowych.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Prawdziwe stopy", + "advancement.create.brass.desc": "Zmieszaj sproszkowaną miedź i sproszkowany cynk, tworząc mosiądz.", + "advancement.create.brass_casing": "Epoka brązu", + "advancement.create.brass_casing.desc": "Użyj nowo poznany mosiądz i odrobiny drewna, aby wytworzyć ulepszoną obudowę.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Postaw i zniszcz", "advancement.create.deployer.desc": "Postaw i wpraw w ruch aplikator, Twoje idealne odbicie.", - "advancement.create.speed_controller": "Inżynierowie go nienawidzą!", - "advancement.create.speed_controller.desc": "Postaw sterownik prędkości obrotu, najlepsze narzędzie do zmiany przekładni.", - "advancement.create.flywheel": "Serce Fabryki", - "advancement.create.flywheel.desc": "Skutecznie podłącz silnik do koła zamachowego.", - "advancement.create.overstress_flywheel": "Wysoki poziom obciążenia", - "advancement.create.overstress_flywheel.desc": "Przeładuj silnik spalinowy.", "advancement.create.precision_mechanism": "Skomplikowana ciekawostka", "advancement.create.precision_mechanism.desc": "Wytwórz precyzyjny mechanizm.", + "advancement.create.speed_controller": "Inżynierowie go nienawidzą!", + "advancement.create.speed_controller.desc": "Postaw sterownik prędkości obrotu, najlepsze narzędzie do zmiany przekładni.", "advancement.create.mechanical_arm": "Ręce pełne roboty", "advancement.create.mechanical_arm.desc": "Wytwórz ramię mechaniczne, wybierz miejsca wejścia i wyjścia, postaw je i wpraw w ruch. Patrz jak robi wszystko za Ciebie.", - "advancement.create.musical_arm": "Zagraj coś dla mnie!", - "advancement.create.musical_arm.desc": "Patrz jak mechaniczne ramię obsługuje szafę grającą.", - "advancement.create.arm_many_targets": "Organizer", - "advancement.create.arm_many_targets.desc": "Zaprogramuj ramię mechaniczne z przynajmniej dziesięcioma miejscami wyjścia.", - "advancement.create.arm_blaze_burner": "Automatyczny wlot paliwowy", - "advancement.create.arm_blaze_burner.desc": "Poinstruuj ramię mechaniczne, jak napełniać płomienny palnik.", - "advancement.create.fist_bump": "Żółwik!", - "advancement.create.fist_bump.desc": "Spraw, aby dwa aplikatory stuknęły się pięścią.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Nierozłączna para", "advancement.create.crushing_wheel.desc": "Wytwórz parę kół kruszących, aby kruszyły więcej materiałów w krótszym czasie.", - "advancement.create.blaze_cake": "Przypływ energii", - "advancement.create.blaze_cake.desc": "Upiecz dla swojego palnika pyszne ciasto.", - "advancement.create.wand_of_symmetry": "Symetria.", - "advancement.create.wand_of_symmetry.desc": "Zdobądź różdżkę symetrii.", - "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", - "advancement.create.extendo_grip.desc": "Złap w ręce Wydłużony Chwytak.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Jaką mamy godzinę?", + "advancement.create.clockwork_bearing.desc": "Skonstruuj strukturę obracającą się na mechanizmie zegarowym.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "W sam środek!", "advancement.create.potato_cannon.desc": "Pokanaj przeciwnika przy użyciu armaty na ziemniaki.", - "advancement.create.dual_extendo_grip": "Bioniczne modyfikacje", - "advancement.create.dual_extendo_grip.desc": "Użyj dwóch Wydłużonych Chwytaków, aby posiąść nadludzki zasięg.", - "advancement.create.eob": "Koniec Bety", - "advancement.create.eob.desc": "Bądź gotowy na więcej treści w przyszłości. <3", + "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", + "advancement.create.extendo_grip.desc": "Złap w ręce Wydłużony Chwytak.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Automatyczny wlot paliwowy", + "advancement.create.arm_blaze_burner.desc": "Poinstruuj ramię mechaniczne, jak napełniać płomienny palnik.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organizer", + "advancement.create.arm_many_targets.desc": "Zaprogramuj ramię mechaniczne z przynajmniej dziesięcioma miejscami wyjścia.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Żółwik!", + "advancement.create.fist_bump.desc": "Spraw, aby dwa aplikatory stuknęły się pięścią.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "Zagraj coś dla mnie!", + "advancement.create.musical_arm.desc": "Patrz jak mechaniczne ramię obsługuje szafę grającą.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 3d1d6ee26..a802869a8 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1175", + "_": "Missing Localizations: 1304", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", "advancement.create.andesite_alloy": "Aliterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", - "advancement.create.its_alive": "Esta vivo!", - "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", - "advancement.create.shifting_gears": "Mudança de marcha", - "advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.", - "advancement.create.overstressed": "Excesso de tensão", - "advancement.create.overstressed.desc": "Experience os limites da tensão.", - "advancement.create.belt": "Correia de alga", - "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecânica.", - "advancement.create.tunnel": "Pegue cover!", - "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", - "advancement.create.splitter_tunnel": "Divida e Conquiste", - "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", - "advancement.create.chute": "Caindo", - "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", - "advancement.create.upward_chute": "Abdução aéria", - "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "Faça dois funis de esteira beijarem.", - "advancement.create.fan": "Dobrador de ar mecânico", - "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", - "advancement.create.fan_lava": "Aquecedor de espaço geotermal", - "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", - "advancement.create.fan_water": "Lavagem maluca", - "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", - "advancement.create.fan_smoke": "Fole mecânico", - "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", - "advancement.create.wrench": "Configurado convenientemente", - "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", - "advancement.create.goggles": "Visão do stress", - "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cinéticas dos componentes.", - "advancement.create.speedometer": "Mas quão rapido exatamente?", - "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", - "advancement.create.stressometer": "Mas quão estressado exatamente?", - "advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", - "advancement.create.aesthetics": "Boom, estética!", - "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", - "advancement.create.reinforced": "Boom, Reinforçado!", - "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", - "advancement.create.water_wheel": "aproveitamento hidráulico", - "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", - "advancement.create.chocolate_wheel": "Poder delicioso", - "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", - "advancement.create.lava_wheel": "Roda de magma", - "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", - "advancement.create.cuckoo": "É a hora?", - "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", - "advancement.create.millstone": "Moedor portátil", - "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", - "advancement.create.windmill": "Uma brisa moderada", - "advancement.create.windmill.desc": "Monte um moinho de vento", - "advancement.create.maxed_windmill": "Uma brisa forte", - "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", - "advancement.create.mechanical_drill": "Mineradores estacionários", - "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", - "advancement.create.press": "Prensa faz 'Bonk!'", - "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", - "advancement.create.polished_rose_quartz": "Diamantes rosa", - "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, úteis para fabricar maquinas menos primitivas.", - "advancement.create.mechanical_saw": "Cortadores estacionários", - "advancement.create.mechanical_saw.desc": "Coloque e energize uma serra mecânica.", - "advancement.create.basin": "Operação da bacia", - "advancement.create.basin.desc": "Coloque uma bacia e tente jogar itens nela.", - "advancement.create.mixer": "Misturando", - "advancement.create.mixer.desc": "Coloque um batedor mecânico acima da bacia, energize este, e comece a misturar alguns ingredientes.", - "advancement.create.blaze_burner": "Uma fogueira viva", - "advancement.create.blaze_burner.desc": "Obtenha um queimador de blaze.", - "advancement.create.compact": "Compactação automática", - "advancement.create.compact.desc": "Use uma prensa e uma bacia para compactar alguns itens.", - "advancement.create.brass": "Ligas de verdade", - "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", - "advancement.create.brass_casing": "a era do latão", - "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Correia de alga", + "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecânica.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Caindo", + "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.shifting_gears": "Mudança de marcha", + "advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Mas quão estressado exatamente?", + "advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "Faça dois funis de esteira beijarem.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "A era do cobre", "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", "advancement.create.spout": "Sploosh", "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", - "advancement.create.spout_potion": "Mestre de química", - "advancement.create.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", - "advancement.create.chocolate": "Um mundo de imaginação", - "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", - "advancement.create.item_drain": "Cambalhota de drenação", - "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", - "advancement.create.chained_item_drain": "Deixe rolar!", - "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Espião de fluxo", "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", - "advancement.create.pipe_collision": "Nunca cruze o fluxo!", - "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", - "advancement.create.pipe_spill": "Tem um vazamento!", - "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Vazamento industrial", "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", - "advancement.create.infinite_water": "Drenando o oceano", - "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", - "advancement.create.infinite_lava": "Drenando o nucleo do planeta", - "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", - "advancement.create.infinite_chocolate": "Afogando em imaginação", - "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", - "advancement.create.crafter": "Montagem automatica", - "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", - "advancement.create.clockwork_bearing": "Hora da engenhoca", - "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", - "advancement.create.nixie_tube": "Placas estilosas", - "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Ligas de verdade", + "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", + "advancement.create.brass_casing": "a era do latão", + "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Cutuque, coloque e ataque", "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", - "advancement.create.speed_controller": "Engenheiros odiam ele!", - "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", - "advancement.create.flywheel": "Coração da fabrica", - "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", - "advancement.create.overstress_flywheel": "Altos niveis de stress", - "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", "advancement.create.precision_mechanism": "Curiosidades complexas", "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", "advancement.create.mechanical_arm": "Mâos ocupadas!", "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", - "advancement.create.musical_arm": "toque minha musica!", - "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", - "advancement.create.arm_many_targets": "Organiza-tron", - "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", - "advancement.create.arm_blaze_burner": "Combuste-tron", - "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", - "advancement.create.fist_bump": "Bate isso, mano!", - "advancement.create.fist_bump.desc": "Faça dois implantadores baterem com o punho.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Par de gigantes", "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", - "advancement.create.blaze_cake": "Descarga de açúcar", - "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", - "advancement.create.wand_of_symmetry": "Espelhos radiantes", - "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", - "advancement.create.dual_extendo_grip": "A era ultimata do boing", - "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", - "advancement.create.eob": "Fim do beta", - "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combuste-tron", + "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organiza-tron", + "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Bate isso, mano!", + "advancement.create.fist_bump.desc": "Faça dois implantadores baterem com o punho.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index ba523bfa8..401b69823 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1853", + "_": "Missing Localizations: 1980", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", "advancement.create.andesite_alloy": "Alinterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", - "advancement.create.its_alive": "Esta vivo!", - "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", - "advancement.create.shifting_gears": "Mudança de marcha", - "advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.", - "advancement.create.overstressed": "Excesso de tensão", - "advancement.create.overstressed.desc": "Experience os limites da tensão.", - "advancement.create.belt": "Correia de alga", - "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", - "advancement.create.tunnel": "Pegue cover!", - "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", - "advancement.create.splitter_tunnel": "Divida e Conquiste", - "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", - "advancement.create.chute": "Caindo", - "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", - "advancement.create.upward_chute": "Abdução aéria", - "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", - "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.fan": "Dobrador de ar mecânico", - "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", - "advancement.create.fan_lava": "Aquecedor de espaço geotermal", - "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", - "advancement.create.fan_water": "Lavagem maluca", - "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", - "advancement.create.fan_smoke": "Fole mecânico", - "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", - "advancement.create.wrench": "Configurado convenientemente", - "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", - "advancement.create.goggles": "Visão do stress", - "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cineticas dos conponentes.", - "advancement.create.speedometer": "Mas quão rapido exatamente?", - "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", - "advancement.create.stressometer": "Mas quão estressado exatamente?", - "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", - "advancement.create.aesthetics": "Boom, estética!", - "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", - "advancement.create.reinforced": "Boom, Reinforçado!", - "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", - "advancement.create.water_wheel": "aproveitamento hidráulico", - "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", - "advancement.create.chocolate_wheel": "Poder delicioso", - "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", - "advancement.create.lava_wheel": "Roda de magma", - "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", - "advancement.create.cuckoo": "É a hora?", - "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", - "advancement.create.millstone": "Moedor portátil", - "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", - "advancement.create.windmill": "Uma brisa moderada", - "advancement.create.windmill.desc": "Monte um moinho de vento", - "advancement.create.maxed_windmill": "Uma brisa forte", - "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", - "advancement.create.mechanical_drill": "Mineradores estacionarios", - "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", - "advancement.create.press": "Prensa faz 'Bonk!'", - "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", - "advancement.create.polished_rose_quartz": "Diamantes rosa", - "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, uteis para fabricar maquinas menos primitivas.", - "advancement.create.mechanical_saw": "Cortadores estacionarios", - "advancement.create.mechanical_saw.desc": "Coloque e energize uma serra mecânica.", - "advancement.create.basin": "Operação da bacia", - "advancement.create.basin.desc": "Coloque uma bacia e tente jogar itens nela.", - "advancement.create.mixer": "Misturando", - "advancement.create.mixer.desc": "Coloque um batedor mecânico acima da bacia, energize este, e comece a misturar alguns ingredientes.", - "advancement.create.blaze_burner": "Uma fogueira viva", - "advancement.create.blaze_burner.desc": "Obtenha um queimador de blaze.", - "advancement.create.compact": "Compactação automática", - "advancement.create.compact.desc": "Use uma prensa e uma bacia para compactar alguns itens.", - "advancement.create.brass": "Ligas de verdade", - "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", - "advancement.create.brass_casing": "a era do latão", - "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Correia de alga", + "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Caindo", + "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.shifting_gears": "Mudança de marcha", + "advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Mas quão estressado exatamente?", + "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "A era do cobre", "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", "advancement.create.spout": "Sploosh", "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", - "advancement.create.chocolate": "Um mundo de imaginação", - "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", - "advancement.create.item_drain": "Cambalhota de drenação", - "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", - "advancement.create.chained_item_drain": "Deixe rolar!", - "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Espião de fluxo", "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", - "advancement.create.pipe_collision": "Nunca cruze o fluxo!", - "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", - "advancement.create.pipe_spill": "Tem um vazamento!", - "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Vazamento industrial", "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", - "advancement.create.infinite_water": "Drenando o oceano", - "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", - "advancement.create.infinite_lava": "Drenando o nucleo do planeta", - "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", - "advancement.create.infinite_chocolate": "Afogando em imaginação", - "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", - "advancement.create.crafter": "Montagem automatica", - "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", - "advancement.create.clockwork_bearing": "Hora da engenhoca", - "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", - "advancement.create.nixie_tube": "Placas estilosas", - "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Ligas de verdade", + "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", + "advancement.create.brass_casing": "a era do latão", + "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Cutuque, coloque e ataque", "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", - "advancement.create.speed_controller": "Engenheiros odiam ele!", - "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", - "advancement.create.flywheel": "Coração da fabrica", - "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", - "advancement.create.overstress_flywheel": "Altos niveis de stress", - "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", "advancement.create.precision_mechanism": "Curiosidades complexas", "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", "advancement.create.mechanical_arm": "Mâos ocupadas!", "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", - "advancement.create.musical_arm": "toque minha musica!", - "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", - "advancement.create.arm_many_targets": "Organiza-tron", - "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", - "advancement.create.arm_blaze_burner": "Combuste-tron", - "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Par de gigantes", "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", - "advancement.create.wand_of_symmetry": "Espelhos radiantes", - "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", - "advancement.create.dual_extendo_grip": "A era ultimata do boing", - "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", - "advancement.create.eob": "Fim do beta", - "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Combuste-tron", + "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organiza-tron", + "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index f956145b7..0dfbfd60c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 308", + "_": "Missing Localizations: 438", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "E timpul sa începi sa construiesti invenții uimitoare!", "advancement.create.andesite_alloy": "Aliterații Din Belșug", "advancement.create.andesite_alloy.desc": "Materialele Create-ului au nume ciudate, Aliajul Din Andezit este unul dintre ele.", - "advancement.create.its_alive": "Este Viu!", - "advancement.create.its_alive.desc": "Privește prima ta rotație al unui component cinetic.", - "advancement.create.shifting_gears": "Schimbând Vitezele", - "advancement.create.shifting_gears.desc": "Conectează o Roată Dințată Mare cu o Roată Dințată Mică, permițându-ți să schimbi viteza invenției.", - "advancement.create.overstressed": "Suprasolicitat", - "advancement.create.overstressed.desc": "Trăiește limitele stresului direct.", - "advancement.create.belt": "Conducere de Alge", - "advancement.create.belt.desc": "Conectează două rotoare cu o Bandă Mecanică.", - "advancement.create.tunnel": "Adăpostește-te!", - "advancement.create.tunnel.desc": "Înfrumusețează Banda ta Mecanică cu un Tunel.", - "advancement.create.splitter_tunnel": "Împarte și Cucerește", - "advancement.create.splitter_tunnel.desc": "Creează un împărțitor cu un grup de Tunele De Alamă.", - "advancement.create.chute": "Rostogolind în Jos", - "advancement.create.chute.desc": "Plasează un Tobogan, partea verticală echivalentă a unei Benzi.", - "advancement.create.upward_chute": "Răpire Aeriană", - "advancement.create.upward_chute.desc": "Privește un obiect aruncat zburând sus într-un Tobogan alimentat de Ventilator.", - "advancement.create.belt_funnel": "Pâlniile lui Flappy Danglers", - "advancement.create.belt_funnel.desc": "Plasează o Pâlnie laterală pe o Bandă sau un Depot ca să creezi un tip special.", - "advancement.create.belt_funnel_kiss": "Papagalii și Aripile", - "advancement.create.belt_funnel_kiss.desc": "Fă două săruturi de Pâlnii montate pe Bandă.", - "advancement.create.fan": "Stăpân de Aer Mecanic", - "advancement.create.fan.desc": "Călărește curentul de aer furnizat de un Ventilator Încapsulat.", - "advancement.create.fan_lava": "Încălzitor de Spațiu Geotermal", - "advancement.create.fan_lava.desc": "Fi prins într-un curent de aer care topește lucruri.", - "advancement.create.fan_water": "Spălare Ciudată", - "advancement.create.fan_water.desc": "Fi prins într-un curent de aer care spală lucruri.", - "advancement.create.fan_smoke": "Muget Mecanic", - "advancement.create.fan_smoke.desc": "Fi prins într-un curent de aer care afumează lucruri.", - "advancement.create.wrench": "Configurează Convenabil", - "advancement.create.wrench.desc": "Creează o Cheie ca să te ajute în construirea invențiilor tale.", - "advancement.create.goggles": "Viziune de Stres", - "advancement.create.goggles.desc": "Creează Ochelarii Inginerului ca să te ajute în luarea mai multor informații cinetice din componente.", - "advancement.create.speedometer": "Dar Cât De Rapid, Mai Exact?", - "advancement.create.speedometer.desc": "Plasează și alimentează un Vitezometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.", - "advancement.create.stressometer": "Dar Cât De Stresat, Mai Exact?", - "advancement.create.stressometer.desc": "Plasează și alimentează un Stresometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.", - "advancement.create.aesthetics": "Bum, Aestetice!", - "advancement.create.aesthetics.desc": "Plasează Brachete pe un Rotor, Conductă, și Roată Dințată.", - "advancement.create.reinforced": "Bum, Fortificat!", - "advancement.create.reinforced.desc": "Folosește blocuri de Carcasă potrivite pe un Rotor, Conductă, și Bandă Mecanică.", - "advancement.create.water_wheel": "Valorificând Hidrualica", - "advancement.create.water_wheel.desc": "Plasează o Roată De Apă și încearcă să o faci să se rotească!", - "advancement.create.chocolate_wheel": "Putere Gustoasă", - "advancement.create.chocolate_wheel.desc": "Rulează o Roată De Apă cu Ciocolată Topită.", - "advancement.create.lava_wheel": "Roată De Magmă", - "advancement.create.lava_wheel.desc": "Asta nu ar fi trebuit să funcționeze.", - "advancement.create.cuckoo": "Este Timpul?", - "advancement.create.cuckoo.desc": "Fi martor la un Ceas Cucu anunțând ora de somn.", - "advancement.create.millstone": "Zdrobitor de buzunar", - "advancement.create.millstone.desc": "Plasează și alimentează o Moară De Piatră.", - "advancement.create.windmill": "O Briză Blândă", - "advancement.create.windmill.desc": "Asamblează o moară de vânt.", - "advancement.create.maxed_windmill": "O Briză Puternică", - "advancement.create.maxed_windmill.desc": "Asamblează o moară de vânt cu putere maximă.", "advancement.create.andesite_casing": "Epoca Andezitului", "advancement.create.andesite_casing.desc": "Folosește niște Aliaj De Andezit și Lemn ca să creezi o Carcasă de bază.", - "advancement.create.mechanical_drill": "Spărgătoare Staționară", - "advancement.create.mechanical_drill.desc": "Plasează și alimentează un Burghiu Mecanic.", - "advancement.create.press": "Presa Face Bonc!", - "advancement.create.press.desc": "Alimentează o Presă Mecanică și folosește-o să creezi niște Plăci.", - "advancement.create.polished_rose_quartz": "Diamante Roz", - "advancement.create.polished_rose_quartz.desc": "Folosește o piesă de Hârtie Abrazivă ca să șlefuiești Cuarț Roz până când devine transparent.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Fă niște Tuburi De Electroni, folositori în producerea mașinăriilor mai puțin primitive.", - "advancement.create.mechanical_saw": "Tăiere Staționar", - "advancement.create.mechanical_saw.desc": "Plasează și alimentează un fierăstrău mecanic.", - "advancement.create.basin": "Operațiunea Bazin", - "advancement.create.basin.desc": "Plasează un Bazin și încearcă să arunci obiecte în el.", - "advancement.create.mixer": "Amestecând-o", - "advancement.create.mixer.desc": "Plasează un Mixer Mecanic peste Bazin, alimentează-l, și începe să amesteci niște ingrediente.", - "advancement.create.blaze_burner": "Un Șemineu Viu", - "advancement.create.blaze_burner.desc": "Obține un Arzător De Dogoreală.", - "advancement.create.compact": "Compactare Automată", - "advancement.create.compact.desc": "Folosește o Presă și un Bazin ca să compactezi niște obiecte.", - "advancement.create.brass": "Aliaje reale", - "advancement.create.brass.desc": "Folosește Cupru Zdrobit și Zinc Zdrobit ca să creezi niște Alamă.", - "advancement.create.brass_casing": "Epoca Alamei", - "advancement.create.brass_casing.desc": "Folosește noua Alamă obținută și niște Lemn ca să creezo o Carcasă mai avansată.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Conducere de Alge", + "advancement.create.belt.desc": "Conectează două rotoare cu o Bandă Mecanică.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Rostogolind în Jos", + "advancement.create.chute.desc": "Plasează un Tobogan, partea verticală echivalentă a unei Benzi.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Valorificând Hidrualica", + "advancement.create.water_wheel.desc": "Plasează o Roată De Apă și încearcă să o faci să se rotească!", + "advancement.create.windmill": "O Briză Blândă", + "advancement.create.windmill.desc": "Asamblează o moară de vânt.", + "advancement.create.shifting_gears": "Schimbând Vitezele", + "advancement.create.shifting_gears.desc": "Conectează o Roată Dințată Mare cu o Roată Dințată Mică, permițându-ți să schimbi viteza invenției.", + "advancement.create.millstone": "Zdrobitor de buzunar", + "advancement.create.millstone.desc": "Plasează și alimentează o Moară De Piatră.", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Dar Cât De Stresat, Mai Exact?", + "advancement.create.stressometer.desc": "Plasează și alimentează un Stresometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Papagalii și Aripile", + "advancement.create.belt_funnel_kiss.desc": "Fă două săruturi de Pâlnii montate pe Bandă.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "Epoca de cupru", "advancement.create.copper_casing.desc": "Folosește niște and Wood to create some Copper Casings.", "advancement.create.spout": "Splosh", "advancement.create.spout.desc": "Privește un obiect de fluid fiind umplut folosind o Duză.", - "advancement.create.spout_potion": "Alchimie Globală", - "advancement.create.spout_potion.desc": "Privește o Duză umplând o Sticlă cu fluid de poțiune.", - "advancement.create.chocolate": "O Lume de Imaginație", - "advancement.create.chocolate.desc": "Obține o Găleată de Ciocolată Topită", - "advancement.create.item_drain": "Scurgere prin Rostogolire", - "advancement.create.item_drain.desc": "Privește un obiect de fluid fiind golit de către o Scurgere De Obiecte.", - "advancement.create.chained_item_drain": "Lasă-l Să Se Rostogolească!", - "advancement.create.chained_item_drain.desc": "Privește un obiect rostogolindu-se asupra mai multor Scurgeri De Obiecte Înlănțuite.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Spion De Flux", "advancement.create.glass_pipe.desc": "Privește un fluid propagându-se printr-o Conductă De Fluide De Sticlă. Conducte De Fluide Drepte devin de sticlă când o cheie este folosită pe ele.", - "advancement.create.pipe_collision": "Niciodată nu Traversa Curentul!", - "advancement.create.pipe_collision.desc": "Privește două fluide întâlnindu-se în rețeaua ta de conducte.", - "advancement.create.pipe_spill": "Este o Scurgere!", - "advancement.create.pipe_spill.desc": "Privește un capăt deschis a unei Conducte luând sau plasând fluide în lume.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Vărsare Industrială", "advancement.create.hose_pulley.desc": "Coboară un Scripete De Furtun și privește-l scurgând sau umplând un corp de fluid.", - "advancement.create.infinite_water": "Scurgând Oceanul", - "advancement.create.infinite_water.desc": "Pompează dintr-un corp de Apă destul de mare încât să fie considerat infinit.", - "advancement.create.infinite_lava": "Scurgând Miezul Planetei", - "advancement.create.infinite_lava.desc": "Pompează dintr-un corp de Lavă destul de mare încât să fie considerat infinit.", - "advancement.create.infinite_chocolate": "Înecând în Imaginație", - "advancement.create.infinite_chocolate.desc": "Pompează dintr-un corp de Ciocolată Topită destul de mare încât să fie considerat infinit.", - "advancement.create.crafter": "Asamblare Automată", - "advancement.create.crafter.desc": "Plasează și alimentează niște Meșteri Mecanici.", - "advancement.create.clockwork_bearing": "Ora Invențiilor", - "advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.", - "advancement.create.nixie_tube": "Semne De Stil", - "advancement.create.nixie_tube.desc": "Obține și Plasează jos o pereche de Tuburi Nixie.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Aliaje reale", + "advancement.create.brass.desc": "Folosește Cupru Zdrobit și Zinc Zdrobit ca să creezi niște Alamă.", + "advancement.create.brass_casing": "Epoca Alamei", + "advancement.create.brass_casing.desc": "Folosește noua Alamă obținută și niște Lemn ca să creezo o Carcasă mai avansată.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Împinge, Plasează, și Atacă", "advancement.create.deployer.desc": "Plasează și alimentează un Deployer, reflecția ta perfectă.", - "advancement.create.speed_controller": "Inginerii Îl Urăsc!", - "advancement.create.speed_controller.desc": "Plasează un Controlor De Viteză De Rotație, dispozitivul fundamental pentru schimbarea vitezei.", - "advancement.create.flywheel": "Inima Fabricii", - "advancement.create.flywheel.desc": "Conectează un Motor De Cuptor la Volant cu succes.", - "advancement.create.overstress_flywheel": "Nivele Mari de Stres", - "advancement.create.overstress_flywheel.desc": "Suprasolicită un Motor De Cuptor.", "advancement.create.precision_mechanism": "Curiozități Complexe", "advancement.create.precision_mechanism.desc": "Asamblează un Mecanism De Precizie.", + "advancement.create.speed_controller": "Inginerii Îl Urăsc!", + "advancement.create.speed_controller.desc": "Plasează un Controlor De Viteză De Rotație, dispozitivul fundamental pentru schimbarea vitezei.", "advancement.create.mechanical_arm": "Mâini Ocupate!", "advancement.create.mechanical_arm.desc": "Fabrică un Braț Mecanic, selectează intrarea și ieșirea, Plasează-l jos și dă-i putere; apoi privește cum face toată treaba pentru tine.", - "advancement.create.musical_arm": "Cântă-mi melodia mea tematică!", - "advancement.create.musical_arm.desc": "Privește un Braț Mecanic operând Tonomatul tău.", - "advancement.create.arm_many_targets": "Organiz-o-Tron", - "advancement.create.arm_many_targets.desc": "Programează un Braț Mecanic cu zece sau mai multe locații de ieșire.", - "advancement.create.arm_blaze_burner": "Arzător-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instructează un Braț Mecanic să hrănească Arzătorul tău De Dogoreală.", - "advancement.create.fist_bump": "Bate-o, Bro!", - "advancement.create.fist_bump.desc": "Fă două Deployere să bată pumnul.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "O Pereche de Giganți", "advancement.create.crushing_wheel.desc": "Creează niște Roți De Zdrobit ca să spargi mai multe materiale mai eficient.", - "advancement.create.blaze_cake": "Grabă De Zahăr", - "advancement.create.blaze_cake.desc": "Gătește Arzătorului tău De Dogoreală un tort special.", - "advancement.create.wand_of_symmetry": "Oglinzi Radiante", - "advancement.create.wand_of_symmetry.desc": "Fabrică o Baghetă De Simetrie.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Fă rost de un Mâner Extendo.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Ora Invențiilor", + "advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Înfrânge un inamic cu Tunul tău De Cartofi.", - "advancement.create.dual_extendo_grip": "Epoca Boing Fundamentală", - "advancement.create.dual_extendo_grip.desc": "Manevrează Dublu Mânere Extendo pentru acces super-uman.", - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "Expect more content here in the future. <3", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Fă rost de un Mâner Extendo.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Arzător-o-Tron", + "advancement.create.arm_blaze_burner.desc": "Instructează un Braț Mecanic să hrănească Arzătorul tău De Dogoreală.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Organiz-o-Tron", + "advancement.create.arm_many_targets.desc": "Programează un Braț Mecanic cu zece sau mai multe locații de ieșire.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Bate-o, Bro!", + "advancement.create.fist_bump.desc": "Fă două Deployere să bată pumnul.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "Cântă-mi melodia mea tematică!", + "advancement.create.musical_arm.desc": "Privește un Braț Mecanic operând Tonomatul tău.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index e7f8f9f6e..f294cc1c5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 685", + "_": "Missing Localizations: 815", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", "advancement.create.andesite_alloy": "Повторение - мать учения", "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", - "advancement.create.its_alive": "Оно живое!", - "advancement.create.its_alive.desc": "Смастерите ваш первый кинетический вращающийся компонент.", - "advancement.create.shifting_gears": "Механизм переключения", - "advancement.create.shifting_gears.desc": "Подсоедините большую шестерню к обычной шестерне для изменения скорости вращения.", - "advancement.create.overstressed": "Перегрузка", - "advancement.create.overstressed.desc": "Столкнитесь с предельной перегрузкой лицом к лицу.", - "advancement.create.belt": "Передайте за проезд!", - "advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.", - "advancement.create.tunnel": "В укрытие!", - "advancement.create.tunnel.desc": "Украсьте свой конвейер туннелем.", - "advancement.create.splitter_tunnel": "Разделяй и властвуй", - "advancement.create.splitter_tunnel.desc": "Создайте разделитель из группы латунных туннелей.", - "advancement.create.chute": "Упало", - "advancement.create.chute.desc": "Разместите желоб, вертикальный аналог конвейера.", - "advancement.create.upward_chute": "Воздушное похищение", - "advancement.create.upward_chute.desc": "Посмотрите как предмет засасывается в желоб с вентилятором.", - "advancement.create.belt_funnel": "Болтающиеся воронки", - "advancement.create.belt_funnel.desc": "Поместите воронку боком, сверху конвейера или депо, чтобы создать её специальный тип.", - "advancement.create.belt_funnel_kiss": "Механический ужин", - "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на ремнях воронки поцеловаться.", - "advancement.create.fan": "Механический маг воздуха", - "advancement.create.fan.desc": "Оседлайте поток воздуха от Вентилятора.", - "advancement.create.fan_lava": "Геотермальный пространственный нагреватель", - "advancement.create.fan_lava.desc": "Попадите в поток воздуха, плавящего вещи.", - "advancement.create.fan_water": "Сумасшедшая мойка", - "advancement.create.fan_water.desc": "Попадите в поток воздуха, моющего вещи.", - "advancement.create.fan_smoke": "Механические меха", - "advancement.create.fan_smoke.desc": "Попадите в поток воздуха, коптящего вещи.", - "advancement.create.wrench": "Конфигурировать удобно", - "advancement.create.wrench.desc": "Создайте гаечный ключ, чтобы помочь себе в создании изобретений.", - "advancement.create.goggles": "Стресс-о-зрение", - "advancement.create.goggles.desc": "Создайте инженерные очки, чтобы получить больше информации о кинетике компонентов.", - "advancement.create.speedometer": "Так быстро?", - "advancement.create.speedometer.desc": "Поставьте и подключите спидометр. Посмотрите на спидометр через очки, чтобы прочитать точное значение.", - "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите стрессометр. Посмотрите на стрессометр через очки, чтобы прочитать точное значение.", - "advancement.create.aesthetics": "Бах! Эстетично!", - "advancement.create.aesthetics.desc": "Разместите скобы на вал, трубу или шестерню.", - "advancement.create.reinforced": "Бах! Усилено!", - "advancement.create.reinforced.desc": "Разместите подходящий блок корпуса на вал, трубу и конвейер.", - "advancement.create.water_wheel": "Обузданная гидравлика", - "advancement.create.water_wheel.desc": "Поставьте водяное колесо и попытайтесь заставить его вращаться!", - "advancement.create.chocolate_wheel": "Вкусная сила", - "advancement.create.chocolate_wheel.desc": "Запустите водяное колесо с помощью расплавленного шоколада.", - "advancement.create.lava_wheel": "Адское колесо", - "advancement.create.lava_wheel.desc": "Это не должно было работать.", - "advancement.create.cuckoo": "Уже?", - "advancement.create.cuckoo.desc": "Станьте свидетелем того, как часы с кукушкой объявляют время сна.", - "advancement.create.millstone": "Карманная дробилка", - "advancement.create.millstone.desc": "Поставьте и приведите в действие жернов", - "advancement.create.windmill": "Ветерок", - "advancement.create.windmill.desc": "Соберите ветряную мельницу.", - "advancement.create.maxed_windmill": "Сильный ветер", - "advancement.create.maxed_windmill.desc": "Соберите ветряную мельницу максимальной силы.", "advancement.create.andesite_casing": "Андезитовый век", "advancement.create.andesite_casing.desc": "Используйте немного андезитового сплава и дерева для создания корпуса.", - "advancement.create.mechanical_drill": "Стационарные разрушители", - "advancement.create.mechanical_drill.desc": "Установите и приведите в действие механическую дрель", - "advancement.create.press": "Пресс делает «Бонк!»", - "advancement.create.press.desc": "Приведите механический пресс в действие и используйте его для создания пластин.", - "advancement.create.polished_rose_quartz": "Розовый алмаз", - "advancement.create.polished_rose_quartz.desc": "Используйте кусок наждачной бумаги, чтобы отполировать розовый кварц, пока он не станет глянцевым.", - "advancement.create.electron_tube": "Бип бип", - "advancement.create.electron_tube.desc": "Сделайте несколько электронных ламп, пригодных для изготовления менее примитивных машин.", - "advancement.create.mechanical_saw": "Стационарная рубка", - "advancement.create.mechanical_saw.desc": "Поставьте и подключите механическую пилу", - "advancement.create.basin": "Операция в чаше", - "advancement.create.basin.desc": "Поставьте чашу и попытайтесь бросить в неё предметы.", - "advancement.create.mixer": "Смешать, но не взбалтывать", - "advancement.create.mixer.desc": "Поставьте механический смешиватель над чашей, подключите его и начните смешивать некоторые ингредиенты.", - "advancement.create.blaze_burner": "Живая печка", - "advancement.create.blaze_burner.desc": "Получить Горелку Всполоха", - "advancement.create.compact": "Автоматическое уплотнение", - "advancement.create.compact.desc": "Используйте пресс и чашу для уплотнения некоторых предметов.", - "advancement.create.brass": "Реальный сплав", - "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного латуни.", - "advancement.create.brass_casing": "Бронзовый век", - "advancement.create.brass_casing.desc": "Используйте только что полученную латунь и немного дерева, чтобы создать более продвинутый корпус.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "Передайте за проезд!", + "advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Упало", + "advancement.create.chute.desc": "Разместите желоб, вертикальный аналог конвейера.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Обузданная гидравлика", + "advancement.create.water_wheel.desc": "Поставьте водяное колесо и попытайтесь заставить его вращаться!", + "advancement.create.windmill": "Ветерок", + "advancement.create.windmill.desc": "Соберите ветряную мельницу.", + "advancement.create.shifting_gears": "Механизм переключения", + "advancement.create.shifting_gears.desc": "Подсоедините большую шестерню к обычной шестерне для изменения скорости вращения.", + "advancement.create.millstone": "Карманная дробилка", + "advancement.create.millstone.desc": "Поставьте и приведите в действие жернов", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "Так сильно?", + "advancement.create.stressometer.desc": "Поставьте и подключите стрессометр. Посмотрите на стрессометр через очки, чтобы прочитать точное значение.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Механический ужин", + "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на ремнях воронки поцеловаться.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "Медный век", "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания медного корпуса.", "advancement.create.spout": "Буль", "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.", - "advancement.create.spout_potion": "Основательная пивоварня", - "advancement.create.spout_potion.desc": "Посмотрите как Дозатор наполняет бутылку зельем.", - "advancement.create.chocolate": "Сказочный мир", - "advancement.create.chocolate.desc": "Получите ведро расплавленного шоколада.", - "advancement.create.item_drain": "Осушение", - "advancement.create.item_drain.desc": "Посмотрите как жидкость выкачивается из предмета, в Предметном осушителе.", - "advancement.create.chained_item_drain": "Поехали!", - "advancement.create.chained_item_drain.desc": "Наблюдайте за тем как предмет едет через несколько соединённых предметных осушителей.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Шпион за потоками", "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании гаечного ключа.", - "advancement.create.pipe_collision": "Никогда не скрещивайте потоки!", - "advancement.create.pipe_collision.desc": "Наблюдайте за тем как две жидкости встречаются в вашей сети труб.", - "advancement.create.pipe_spill": "Протечка!", - "advancement.create.pipe_spill.desc": "Посмотрите как открытый конец трубы забирает или размещает блоки жидкости в мире.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "Промышленный полив", "advancement.create.hose_pulley.desc": "Опустите шланг и смотрите как он высасывает или заполнят пространство жидкостью.", - "advancement.create.infinite_water": "Осушение океана", - "advancement.create.infinite_water.desc": "Выкачивайте воду из резервуара, считающегося бесконечным.", - "advancement.create.infinite_lava": "Уничтожение ядра", - "advancement.create.infinite_lava.desc": "Выкачивайте лаву из бассейна, считающегося бесконечным.", - "advancement.create.infinite_chocolate": "Утопая в воображении", - "advancement.create.infinite_chocolate.desc": "Выкачивайте расплавленный шоколад из резервуара, считающегося бесконечным.", - "advancement.create.crafter": "Автоматизированная сборка", - "advancement.create.crafter.desc": "Поставьте и подключите механический крафтер", - "advancement.create.clockwork_bearing": "Хитрые часы", - "advancement.create.clockwork_bearing.desc": "Соберите структуру, расположенную на часовом механизме.", - "advancement.create.nixie_tube": "Признаки стиля", - "advancement.create.nixie_tube.desc": "Получите и разместите пару Газоразрядных индикаторов.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Реальный сплав", + "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного латуни.", + "advancement.create.brass_casing": "Бронзовый век", + "advancement.create.brass_casing.desc": "Используйте только что полученную латунь и немного дерева, чтобы создать более продвинутый корпус.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", "advancement.create.deployer.desc": "Приведите в действие автономный активатор, идеальное отражение себя.", - "advancement.create.speed_controller": "Его ненавидят инженеры!", - "advancement.create.speed_controller.desc": "Установите регулятор скорости вращения, идеальное устройство для переключения передач.", - "advancement.create.flywheel": "Сердце фабрики", - "advancement.create.flywheel.desc": "Успешно соедините двигатель с маховиком.", - "advancement.create.overstress_flywheel": "Перенапряжение", - "advancement.create.overstress_flywheel.desc": "Подайте слишком большую нагрузку на печной двигатель.", "advancement.create.precision_mechanism": "Сложные любопытства.", "advancement.create.precision_mechanism.desc": "Создайте механизм точности.", + "advancement.create.speed_controller": "Его ненавидят инженеры!", + "advancement.create.speed_controller.desc": "Установите регулятор скорости вращения, идеальное устройство для переключения передач.", "advancement.create.mechanical_arm": "Золотые руки!", "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу.", - "advancement.create.musical_arm": "Сбацай что-нибудь!", - "advancement.create.musical_arm.desc": "Посмотрите как механическая рука меняет пластинки.", - "advancement.create.arm_many_targets": "Организа-трон", - "advancement.create.arm_many_targets.desc": "Запрограммируйте механическую руку на 10 и больше выходов.", - "advancement.create.arm_blaze_burner": "Поджигателе-трон", - "advancement.create.arm_blaze_burner.desc": "Запрограммируйте механическую руку на кормление Горелки Всполоха.", - "advancement.create.fist_bump": "Брось это, братан!", - "advancement.create.fist_bump.desc": "Сделайте два удара кулаками Автономных активаторов.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "Пара гигантов", "advancement.create.crushing_wheel.desc": "Создайте несколько дробящих колес, чтобы более эффективно разрушать больше материалов.", - "advancement.create.blaze_cake": "Сахарная лихорадка", - "advancement.create.blaze_cake.desc": "Испеките особый торт для вашей Горелки Всполоха.", - "advancement.create.wand_of_symmetry": "Сияющие зеркала", - "advancement.create.wand_of_symmetry.desc": "Создайте жезл симметрии.", - "advancement.create.extendo_grip": "Бойоиоинг!", - "advancement.create.extendo_grip.desc": "Возьмите в руки удлинённую руку", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Хитрые часы", + "advancement.create.clockwork_bearing.desc": "Соберите структуру, расположенную на часовом механизме.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Свомп!", "advancement.create.potato_cannon.desc": "Победите врага с помощью своей картофельной пушки!", - "advancement.create.dual_extendo_grip": "Время ультимативных пружин", - "advancement.create.dual_extendo_grip.desc": "Две удлинённых руки для сверхчеловеческого охвата.", - "advancement.create.eob": "Конец бета-версии", - "advancement.create.eob.desc": "Ожидайте больше контента здесь в будущем. <3", + "advancement.create.extendo_grip": "Бойоиоинг!", + "advancement.create.extendo_grip.desc": "Возьмите в руки удлинённую руку", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Поджигателе-трон", + "advancement.create.arm_blaze_burner.desc": "Запрограммируйте механическую руку на кормление Горелки Всполоха.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "Организа-трон", + "advancement.create.arm_many_targets.desc": "Запрограммируйте механическую руку на 10 и больше выходов.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Брось это, братан!", + "advancement.create.fist_bump.desc": "Сделайте два удара кулаками Автономных активаторов.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "Сбацай что-нибудь!", + "advancement.create.musical_arm.desc": "Посмотрите как механическая рука меняет пластинки.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 05a820111..6587a26e1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 305", + "_": "Missing Localizations: 435", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "是时候来制作一些超赞的机械装置了!", "advancement.create.andesite_alloy": "头韵狂魔(Alliterations Aplenty)", "advancement.create.andesite_alloy.desc": "机械动力的材料名字都很古怪,安山合金(Andesite Alloy)就是其中之一", - "advancement.create.its_alive": "鲜活的机械生命", - "advancement.create.its_alive.desc": "首次激活动力学组件", - "advancement.create.shifting_gears": "换挡,加速,起飞!", - "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上,可以改变装置的转速", - "advancement.create.overstressed": "过载", - "advancement.create.overstressed.desc": "首次使能量网络过载", - "advancement.create.belt": "海带传动", - "advancement.create.belt.desc": "用传送带连接两个传动杆", - "advancement.create.tunnel": "躲起来!", - "advancement.create.tunnel.desc": "用隧道装饰传送带", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黄铜隧道设计一个分流器", - "advancement.create.chute": "轰然倒塌", - "advancement.create.chute.desc": "放置一个溜槽(垂直版本的传送带)", - "advancement.create.upward_chute": "空中劫持", - "advancement.create.upward_chute.desc": "目睹抛出的物品飞入带风扇的溜槽", - "advancement.create.belt_funnel": "漏斗垂帘", - "advancement.create.belt_funnel.desc": "将侧向漏斗放在传送带或置物台的顶部,并观察到特殊变种的漏斗", - "advancement.create.belt_funnel_kiss": "鹦鹉和垂翼", - "advancement.create.belt_funnel_kiss.desc": "让两个安装在传送带上的漏斗深情相吻", - "advancement.create.fan": "动力御气师", - "advancement.create.fan.desc": "飘在鼓风机吹出的气流上", - "advancement.create.fan_lava": "地热取暖", - "advancement.create.fan_lava.desc": "被熔炼气流烤的酥脆", - "advancement.create.fan_water": "奇妙的洗涤流程", - "advancement.create.fan_water.desc": "在洗涤气流里洗了个澡", - "advancement.create.fan_smoke": "动力风箱", - "advancement.create.fan_smoke.desc": "被烟熏气流熏得满脸黑", - "advancement.create.wrench": "细节调整", - "advancement.create.wrench.desc": "做出一个方便调整装置的扳手", - "advancement.create.goggles": "应力,一目了然", - "advancement.create.goggles.desc": "做出一个能看到机器动力学信息的工程师护目镜", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一个速度表,并且戴上工程师护目镜来读取速度数据", - "advancement.create.stressometer": "精密的应力控制", - "advancement.create.stressometer.desc": "放置一个应力表,并且戴上工程师护目镜来读取应力数据", - "advancement.create.aesthetics": "什么叫美学,这就叫美学!", - "advancement.create.aesthetics.desc": "将支架放在传动杆,管道和齿轮上", - "advancement.create.reinforced": "什么叫强化,这就叫强化!", - "advancement.create.reinforced.desc": "在传动杆,管道和传送带上使用机壳加固", - "advancement.create.water_wheel": "掌控水流", - "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转!", - "advancement.create.chocolate_wheel": "美味动力", - "advancement.create.chocolate_wheel.desc": "用熔融巧克力驱动水车", - "advancement.create.lava_wheel": "风火轮", - "advancement.create.lava_wheel.desc": "按理说根本不可能运转得起来", - "advancement.create.cuckoo": "到点儿了吗?", - "advancement.create.cuckoo.desc": "目睹布谷鸟闹钟提醒你该睡觉觉了", - "advancement.create.millstone": "便携式粉碎机", - "advancement.create.millstone.desc": "放置一个石磨并且为其供能", - "advancement.create.windmill": "微风吹拂", - "advancement.create.windmill.desc": "组装风车", - "advancement.create.maxed_windmill": "强风肆虐", - "advancement.create.maxed_windmill.desc": "组装最大强度的风车", "advancement.create.andesite_casing": "安山时代", "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", - "advancement.create.mechanical_drill": "坚如磐石,势如破竹", - "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", - "advancement.create.press": "“Duang!”", - "advancement.create.press.desc": "使用辊压机来辊压一些板子", - "advancement.create.polished_rose_quartz": "粉色钻石", - "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", - "advancement.create.electron_tube": "哔~~ 哔~~", - "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", - "advancement.create.mechanical_saw": "一刀两断", - "advancement.create.mechanical_saw.desc": "放置一个动力锯并且为其供能", - "advancement.create.basin": "快到碗里来", - "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", - "advancement.create.mixer": "均匀搅拌", - "advancement.create.mixer.desc": "将搅拌器放在工作盆上方,并且使其搅拌盆内物品", - "advancement.create.blaze_burner": "活炉", - "advancement.create.blaze_burner.desc": "获得一个烈焰人燃烧室", - "advancement.create.compact": "快乐压缩", - "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎锌矿石和粉碎铜矿石来制作黄铜", - "advancement.create.brass_casing": "黄铜时代", - "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "海带传动", + "advancement.create.belt.desc": "用传送带连接两个传动杆", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "轰然倒塌", + "advancement.create.chute.desc": "放置一个溜槽(垂直版本的传送带)", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "掌控水流", + "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转!", + "advancement.create.windmill": "微风吹拂", + "advancement.create.windmill.desc": "组装风车", + "advancement.create.shifting_gears": "换挡,加速,起飞!", + "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上,可以改变装置的转速", + "advancement.create.millstone": "便携式粉碎机", + "advancement.create.millstone.desc": "放置一个石磨并且为其供能", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "精密的应力控制", + "advancement.create.stressometer.desc": "放置一个应力表,并且戴上工程师护目镜来读取应力数据", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "鹦鹉和垂翼", + "advancement.create.belt_funnel_kiss.desc": "让两个安装在传送带上的漏斗深情相吻", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "铜器时代", "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜机壳", "advancement.create.spout": "哗啦啦", "advancement.create.spout.desc": "观察注液器灌满物品", - "advancement.create.spout_potion": "环球酿造厂", - "advancement.create.spout_potion.desc": "观察注液器注入药水到玻璃瓶", - "advancement.create.chocolate": "幻想世界", - "advancement.create.chocolate.desc": "获取一桶熔融巧克力", - "advancement.create.item_drain": "滚筒排液", - "advancement.create.item_drain.desc": "观察流体物品被分液池抽空", - "advancement.create.chained_item_drain": "翻滚吧!", - "advancement.create.chained_item_drain.desc": "观察物品滚过几个相链接的分液池", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "流之观察者", "advancement.create.glass_pipe.desc": "透过带窗的流体管道观察流体在管道中流淌,使用扳手可打开直线流体管道的窗户", - "advancement.create.pipe_collision": "Never cross the Streams!", - "advancement.create.pipe_collision.desc": "观察两种流体在管道网络中相会", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "观察管道的开口端将流体排放或放置到世界中", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "工业泄漏", "advancement.create.hose_pulley.desc": "放下一个软管滑轮,观察它排干或填充一大片流体", - "advancement.create.infinite_water": "抽干大海", - "advancement.create.infinite_water.desc": "从大到足以被认为是无限的水源中抽水", - "advancement.create.infinite_lava": "汲取行星核心", - "advancement.create.infinite_lava.desc": "从广阔的熔岩湖中抽出熔岩", - "advancement.create.infinite_chocolate": "美梦不饶人", - "advancement.create.infinite_chocolate.desc": "从大到足以被被视为无限的巧克力海中抽取巧克力", - "advancement.create.crafter": "自动化装配", - "advancement.create.crafter.desc": "放置一些动力合成器并且为其供能", - "advancement.create.clockwork_bearing": "巧械时钟", - "advancement.create.clockwork_bearing.desc": "组装安装在发条轴承上的装置", - "advancement.create.nixie_tube": "花样符号", - "advancement.create.nixie_tube.desc": "获取并放下一对辉光管", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "真正的合金", + "advancement.create.brass.desc": "使用粉碎锌矿石和粉碎铜矿石来制作黄铜", + "advancement.create.brass_casing": "黄铜时代", + "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "我就指着你了咋地?", "advancement.create.deployer.desc": "放置并且启动一个机械手,这可是你右手的完美复制品", - "advancement.create.speed_controller": "工程师的眼中钉", - "advancement.create.speed_controller.desc": "放置一个转速控制器,这是换档的终极装置", - "advancement.create.flywheel": "工厂之心", - "advancement.create.flywheel.desc": "将引擎成功连接到飞轮", - "advancement.create.overstress_flywheel": "压力山大", - "advancement.create.overstress_flywheel.desc": "过载熔炉引擎", "advancement.create.precision_mechanism": "高新技术", "advancement.create.precision_mechanism.desc": "装配一个精密构件", + "advancement.create.speed_controller": "工程师的眼中钉", + "advancement.create.speed_controller.desc": "放置一个转速控制器,这是换档的终极装置", "advancement.create.mechanical_arm": "飞转的手!", "advancement.create.mechanical_arm.desc": "制作动力臂,选择输入和输出,放置并给予它动力,然后看着它为你完成所有工作", - "advancement.create.musical_arm": "没人能在我的 BGM 里打败我!", - "advancement.create.musical_arm.desc": "使用动力臂播放唱片", - "advancement.create.arm_many_targets": "掌控全局", - "advancement.create.arm_many_targets.desc": "配置一个有十个或更多输出位置的动力臂", - "advancement.create.arm_blaze_burner": "熊熊燃烧", - "advancement.create.arm_blaze_burner.desc": "指导动力臂给烈焰人燃烧室投食", - "advancement.create.fist_bump": "来碰个拳,哥们~", - "advancement.create.fist_bump.desc": "使两个机械手互相碰拳", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "一对大家伙", "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", - "advancement.create.blaze_cake": "糖份超标", - "advancement.create.blaze_cake.desc": "给烈焰人燃烧室烤一份特别蛋糕", - "advancement.create.wand_of_symmetry": "简单的镜面几何学", - "advancement.create.wand_of_symmetry.desc": "制作一根对称之杖", - "advancement.create.extendo_grip": "biu biu biu!", - "advancement.create.extendo_grip.desc": "获得一个伸缩机械手", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "巧械时钟", + "advancement.create.clockwork_bearing.desc": "组装安装在发条轴承上的装置", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "用土豆加农炮击杀一个生物", - "advancement.create.dual_extendo_grip": "biu——biu——biu——", - "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手,超人般的触碰距离", - "advancement.create.eob": "Beta 版结束", - "advancement.create.eob.desc": "期待未来会有更多的内容 <3", + "advancement.create.extendo_grip": "biu biu biu!", + "advancement.create.extendo_grip.desc": "获得一个伸缩机械手", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "熊熊燃烧", + "advancement.create.arm_blaze_burner.desc": "指导动力臂给烈焰人燃烧室投食", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "掌控全局", + "advancement.create.arm_many_targets.desc": "配置一个有十个或更多输出位置的动力臂", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "来碰个拳,哥们~", + "advancement.create.fist_bump.desc": "使两个机械手互相碰拳", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "没人能在我的 BGM 里打败我!", + "advancement.create.musical_arm.desc": "使用动力臂播放唱片", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index ef30383b7..40f0feee0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 699", + "_": "Missing Localizations: 829", "_": "->------------------------] Game Elements [------------------------<-", @@ -666,150 +666,190 @@ "advancement.create.root.desc": "該來製作一些超棒的機械結構了!", "advancement.create.andesite_alloy": "原始人類的合金替代品", "advancement.create.andesite_alloy.desc": "機械動力有著許多的材料和合金,但受限於技術,原始的人類們暫時只能製作出安山合金", - "advancement.create.its_alive": "鮮活的機械生命", - "advancement.create.its_alive.desc": "首次使齒輪結構的旋轉。", - "advancement.create.shifting_gears": "換檔,加速,起飛!", - "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", - "advancement.create.overstressed": "過載", - "advancement.create.overstressed.desc": "首次使動能網路過載。", - "advancement.create.belt": "流水線作業", - "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", - "advancement.create.tunnel": "尋找掩護!", - "advancement.create.tunnel.desc": "在輸送帶上放上物品隧道。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黃銅物品隧道設計一個分流器。", - "advancement.create.chute": "轟然倒塌", - "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", - "advancement.create.upward_chute": "空中攔截", - "advancement.create.upward_chute.desc": "目睹拋出的物品飛入裝有風扇的滑道。", - "advancement.create.belt_funnel": "漏斗的垂簾", - "advancement.create.belt_funnel.desc": "將側向漏斗放在輸送帶或置物臺的上方。", - "advancement.create.belt_funnel_kiss": "比翼雙飛", - "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", - "advancement.create.fan": "機械氣槍", - "advancement.create.fan.desc": "飄浮在鼓風機吹出的氣流上", - "advancement.create.fan_lava": "空間加熱器", - "advancement.create.fan_lava.desc": "感受熔煉物品的氣流。", - "advancement.create.fan_water": "奇怪的洗滌", - "advancement.create.fan_water.desc": "被洗滌的氣流所吸引。", - "advancement.create.fan_smoke": "機械波紋管", - "advancement.create.fan_smoke.desc": "感受煙燻氣流。", - "advancement.create.wrench": "細部調整", - "advancement.create.wrench.desc": "做出一個方便調整方塊的板手", - "advancement.create.goggles": "動能,一目了然", - "advancement.create.goggles.desc": "做出一個能看到機械動能訊息的MR護目鏡", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一個速度計,並且戴上MR護目鏡來讀取數據", - "advancement.create.stressometer": "精密的動能控制", - "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", - "advancement.create.aesthetics": "繁榮與美學!", - "advancement.create.aesthetics.desc": "將支架放在傳動軸,管道和齒輪上。", - "advancement.create.reinforced": "超級加固!", - "advancement.create.reinforced.desc": "在傳動軸,管道和輸送帶上使用機殼加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", - "advancement.create.chocolate_wheel": "美味的動能源", - "advancement.create.chocolate_wheel.desc": "用融化的巧克力驅動水車。", - "advancement.create.lava_wheel": "風火輪", - "advancement.create.lava_wheel.desc": "它不應該有用的..。", - "advancement.create.cuckoo": "是時候了?", - "advancement.create.cuckoo.desc": "目睹布穀鳥鐘報就寢時間。", - "advancement.create.millstone": "攜帶式粉碎機", - "advancement.create.millstone.desc": "放置一個石磨並且為其供能", - "advancement.create.windmill": "微風拂過", - "advancement.create.windmill.desc": "組裝風車。", - "advancement.create.maxed_windmill": "強風襲來", - "advancement.create.maxed_windmill.desc": "組裝最大動能的風車。", "advancement.create.andesite_casing": "安山時代", "advancement.create.andesite_casing.desc": "使用安山合金和木頭來合成一個安山機殼", - "advancement.create.mechanical_drill": "堅若磐石", - "advancement.create.mechanical_drill.desc": "放置一個機械鑽頭並且為其供能", - "advancement.create.press": "'噹!'", - "advancement.create.press.desc": "使用液壓機來壓製一些板子", - "advancement.create.polished_rose_quartz": "粉紅鑽石", - "advancement.create.polished_rose_quartz.desc": "用砂紙將玫瑰石英磨至透明", - "advancement.create.electron_tube": "嗶~~嗶~~", - "advancement.create.electron_tube.desc": "製作一個可用來合成高級機器的真空管", - "advancement.create.mechanical_saw": "一刀兩斷", - "advancement.create.mechanical_saw.desc": "放置一個切割機並且為其供能", - "advancement.create.basin": "快到碗裡來", - "advancement.create.basin.desc": "放置一個作業盆,並且往裡面放些東西", - "advancement.create.mixer": "充分攪拌", - "advancement.create.mixer.desc": "將攪拌機放在作業盆上方,並且使其攪拌盆內的物品", - "advancement.create.blaze_burner": "活生生的壁爐", - "advancement.create.blaze_burner.desc": "獲得一個烈焰使者動力爐。", - "advancement.create.compact": "快樂壓縮", - "advancement.create.compact.desc": "使用液壓機在作業盆中壓製一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", - "advancement.create.brass_casing": "黃銅時代", - "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.belt": "流水線作業", + "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "轟然倒塌", + "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "治水", + "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", + "advancement.create.windmill": "微風拂過", + "advancement.create.windmill.desc": "組裝風車。", + "advancement.create.shifting_gears": "換檔,加速,起飛!", + "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", + "advancement.create.millstone": "攜帶式粉碎機", + "advancement.create.millstone.desc": "放置一個石磨並且為其供能", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.stressometer": "精密的動能控制", + "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "比翼雙飛", + "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper_casing": "銅時代", "advancement.create.copper_casing.desc": "使用銅和木頭製作一個銅製機殼", "advancement.create.spout": "裝填!", "advancement.create.spout.desc": "觀察注液器灌滿物品。", - "advancement.create.spout_potion": "國際級啤酒大廠", - "advancement.create.spout_potion.desc": "觀察注液器注入藥水到玻璃瓶。", - "advancement.create.chocolate": "夢裡的世界", - "advancement.create.chocolate.desc": "獲取一桶熔融巧克力。", - "advancement.create.item_drain": "滾筒洗衣機", - "advancement.create.item_drain.desc": "觀察液體物品被分液池抽空。", - "advancement.create.chained_item_drain": "讓我們一起搖滾!", - "advancement.create.chained_item_drain.desc": "看著物品穿過多個分液池。", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "偷窺液體", "advancement.create.glass_pipe.desc": "透過窗戶觀察液體在管道中流動。使用板手可打開直線液體管道的窗戶。", - "advancement.create.pipe_collision": "永不交會的溪流!", - "advancement.create.pipe_collision.desc": "觀察兩種液體在您的管道中會合", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "觀察管道的末端將液體排放到到外面。", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.hose_pulley": "工業排放", "advancement.create.hose_pulley.desc": "放下一個軟管滑輪,觀察它排乾或充滿液體。", - "advancement.create.infinite_water": "抽取海洋", - "advancement.create.infinite_water.desc": "從足以被認為是無限的水源中抽水。", - "advancement.create.infinite_lava": "吸取行星的核心", - "advancement.create.infinite_lava.desc": "從廣闊的岩漿湖中抽出岩漿。", - "advancement.create.infinite_chocolate": "淹沒在幻想中", - "advancement.create.infinite_chocolate.desc": "從廣闊的巧克力海中抽出巧克力。", - "advancement.create.crafter": "自動化流水作業", - "advancement.create.crafter.desc": "放置一些機械合成臺並且為其供能", - "advancement.create.clockwork_bearing": "時差", - "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", - "advancement.create.nixie_tube": "風格的跡象", - "advancement.create.nixie_tube.desc": "獲得真空管顯示器並放置。", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.brass": "真正的合金", + "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", + "advancement.create.brass_casing": "黃銅時代", + "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "指爽沒?", "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手完美的複製品", - "advancement.create.speed_controller": "攻城屍討厭他!", - "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", - "advancement.create.flywheel": "工廠之心", - "advancement.create.flywheel.desc": "將引擎成功連接到飛輪。", - "advancement.create.overstress_flywheel": "壓力過大", - "advancement.create.overstress_flywheel.desc": "超載熔爐引擎。", "advancement.create.precision_mechanism": "複雜的好奇心", "advancement.create.precision_mechanism.desc": "組裝一個精確控制器", + "advancement.create.speed_controller": "攻城屍討厭他!", + "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", "advancement.create.mechanical_arm": "忙碌的手!", "advancement.create.mechanical_arm.desc": "製作機械手臂,選擇輸入和輸出,放置並給它動能; 然後看著它完成所有你交代的工作。", - "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", - "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", - "advancement.create.arm_many_targets": "你是要累死我?", - "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", - "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", - "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", - "advancement.create.fist_bump": "朋友,來擊拳", - "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "一對大傢伙", "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", - "advancement.create.blaze_cake": "糖份超標", - "advancement.create.blaze_cake.desc": "幫烈焰使者動力爐烤一份特別的蛋糕。", - "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", - "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", - "advancement.create.extendo_grip": "piu piu piu!", - "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "時差", + "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.potato_cannon": "噗~碰", "advancement.create.potato_cannon.desc": "用馬鈴薯大砲擊殺一隻怪物", - "advancement.create.dual_extendo_grip": "piu——piu——piu——", - "advancement.create.dual_extendo_grip.desc": "雙持伸縮機械手進一步加長觸碰距離", - "advancement.create.eob": "Beta版結束", - "advancement.create.eob.desc": "期待日後的更新。", + "advancement.create.extendo_grip": "piu piu piu!", + "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", + "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.arm_many_targets": "你是要累死我?", + "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "朋友,來擊拳", + "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", + "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json deleted file mode 100644 index d723cbe38..000000000 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:wooden_bracket" - }, - "title": { - "translate": "advancement.create.aesthetics" - }, - "description": { - "translate": "advancement.create.aesthetics.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:shaft" - ] - } - }, - "1": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:cogwheel", - "create:large_cogwheel" - ] - } - }, - "2": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:fluid_pipe" - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ], - [ - "2" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/andesite_alloy.json b/src/generated/resources/data/create/advancements/andesite_alloy.json index 5dcfdd07d..b69ab1cb2 100644 --- a/src/generated/resources/data/create/advancements/andesite_alloy.json +++ b/src/generated/resources/data/create/advancements/andesite_alloy.json @@ -8,6 +8,7 @@ "translate": "advancement.create.andesite_alloy" }, "description": { + "color": "#DBA213", "translate": "advancement.create.andesite_alloy.desc" }, "frame": "task", diff --git a/src/generated/resources/data/create/advancements/andesite_casing.json b/src/generated/resources/data/create/advancements/andesite_casing.json index 6f647a713..41a3430e5 100644 --- a/src/generated/resources/data/create/advancements/andesite_casing.json +++ b/src/generated/resources/data/create/advancements/andesite_casing.json @@ -8,25 +8,18 @@ "translate": "advancement.create.andesite_casing" }, "description": { + "color": "#DBA213", "translate": "advancement.create.andesite_casing.desc" }, - "frame": "goal", + "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:andesite_casing" - ] - } - ] - } + "trigger": "create:andesite_casing_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/anvil_plough.json b/src/generated/resources/data/create/advancements/anvil_plough.json new file mode 100644 index 000000000..a06727c62 --- /dev/null +++ b/src/generated/resources/data/create/advancements/anvil_plough.json @@ -0,0 +1,30 @@ +{ + "parent": "create:cart_pickup", + "display": { + "icon": { + "item": "minecraft:chipped_anvil" + }, + "title": { + "translate": "advancement.create.anvil_plough" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.anvil_plough.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:anvil_plough_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/arm_blaze_burner.json b/src/generated/resources/data/create/advancements/arm_blaze_burner.json index 25057b193..bb12cd0f7 100644 --- a/src/generated/resources/data/create/advancements/arm_blaze_burner.json +++ b/src/generated/resources/data/create/advancements/arm_blaze_burner.json @@ -1,5 +1,5 @@ { - "parent": "create:mechanical_arm", + "parent": "create:linked_controller", "display": { "icon": { "item": "create:blaze_burner" @@ -8,6 +8,7 @@ "translate": "advancement.create.arm_blaze_burner" }, "description": { + "color": "#DBA213", "translate": "advancement.create.arm_blaze_burner.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:arm_blaze_burner", + "trigger": "create:arm_blaze_burner_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/arm_many_targets.json b/src/generated/resources/data/create/advancements/arm_many_targets.json index 4d6dddf00..278d0cf03 100644 --- a/src/generated/resources/data/create/advancements/arm_many_targets.json +++ b/src/generated/resources/data/create/advancements/arm_many_targets.json @@ -1,23 +1,24 @@ { - "parent": "create:mechanical_arm", + "parent": "create:crusher_maxed_0000", "display": { "icon": { - "item": "create:brass_funnel" + "item": "create:mechanical_arm" }, "title": { "translate": "advancement.create.arm_many_targets" }, "description": { + "color": "#DBA213", "translate": "advancement.create.arm_many_targets.desc" }, - "frame": "task", + "frame": "goal", "show_toast": true, "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "create:arm_many_targets", + "trigger": "create:arm_many_targets_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/backtank.json b/src/generated/resources/data/create/advancements/backtank.json new file mode 100644 index 000000000..1f1e7fe72 --- /dev/null +++ b/src/generated/resources/data/create/advancements/backtank.json @@ -0,0 +1,30 @@ +{ + "parent": "create:steam_whistle", + "display": { + "icon": { + "item": "create:copper_backtank" + }, + "title": { + "translate": "advancement.create.backtank" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.backtank.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:backtank_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/basin.json b/src/generated/resources/data/create/advancements/basin.json deleted file mode 100644 index 303cf1b01..000000000 --- a/src/generated/resources/data/create/advancements/basin.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:basin" - }, - "title": { - "translate": "advancement.create.basin" - }, - "description": { - "translate": "advancement.create.basin.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:basin" - } - }, - "1": { - "trigger": "create:basin", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/belt.json b/src/generated/resources/data/create/advancements/belt.json index d966d700a..63f576238 100644 --- a/src/generated/resources/data/create/advancements/belt.json +++ b/src/generated/resources/data/create/advancements/belt.json @@ -1,5 +1,5 @@ { - "parent": "create:its_alive", + "parent": "create:compacting", "display": { "icon": { "item": "create:belt_connector" @@ -8,6 +8,7 @@ "translate": "advancement.create.belt" }, "description": { + "color": "#DBA213", "translate": "advancement.create.belt.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:connect_belt", + "trigger": "create:belt_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/belt_funnel_kiss.json b/src/generated/resources/data/create/advancements/belt_funnel_kiss.json index 10a2ed88a..7463c9e12 100644 --- a/src/generated/resources/data/create/advancements/belt_funnel_kiss.json +++ b/src/generated/resources/data/create/advancements/belt_funnel_kiss.json @@ -1,5 +1,5 @@ { - "parent": "create:belt_funnel", + "parent": "create:mechanical_mixer", "display": { "icon": { "item": "create:brass_funnel" @@ -8,6 +8,7 @@ "translate": "advancement.create.belt_funnel_kiss" }, "description": { + "color": "#DBA213", "translate": "advancement.create.belt_funnel_kiss.desc" }, "frame": "goal", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:belt_funnel_kiss", + "trigger": "create:belt_funnel_kiss_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/brass.json b/src/generated/resources/data/create/advancements/brass.json index df8a03f5d..cba9d6728 100644 --- a/src/generated/resources/data/create/advancements/brass.json +++ b/src/generated/resources/data/create/advancements/brass.json @@ -1,5 +1,5 @@ { - "parent": "create:blaze_burner", + "parent": "create:diving_suit", "display": { "icon": { "item": "create:brass_ingot" @@ -8,6 +8,7 @@ "translate": "advancement.create.brass" }, "description": { + "color": "#DBA213", "translate": "advancement.create.brass.desc" }, "frame": "task", diff --git a/src/generated/resources/data/create/advancements/brass_casing.json b/src/generated/resources/data/create/advancements/brass_casing.json index 5b522a5a9..32388d293 100644 --- a/src/generated/resources/data/create/advancements/brass_casing.json +++ b/src/generated/resources/data/create/advancements/brass_casing.json @@ -8,25 +8,18 @@ "translate": "advancement.create.brass_casing" }, "description": { + "color": "#DBA213", "translate": "advancement.create.brass_casing.desc" }, - "frame": "goal", + "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:brass_casing" - ] - } - ] - } + "trigger": "create:brass_casing_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/blaze_burner.json b/src/generated/resources/data/create/advancements/burner.json similarity index 75% rename from src/generated/resources/data/create/advancements/blaze_burner.json rename to src/generated/resources/data/create/advancements/burner.json index 3091b4fc2..8c4043d34 100644 --- a/src/generated/resources/data/create/advancements/blaze_burner.json +++ b/src/generated/resources/data/create/advancements/burner.json @@ -1,14 +1,15 @@ { - "parent": "create:mixer", + "parent": "create:mechanical_mixer", "display": { "icon": { "item": "create:blaze_burner" }, "title": { - "translate": "advancement.create.blaze_burner" + "translate": "advancement.create.burner" }, "description": { - "translate": "advancement.create.blaze_burner.desc" + "color": "#DBA213", + "translate": "advancement.create.burner.desc" }, "frame": "task", "show_toast": true, diff --git a/src/generated/resources/data/create/advancements/cart_pickup.json b/src/generated/resources/data/create/advancements/cart_pickup.json new file mode 100644 index 000000000..3d888bdc4 --- /dev/null +++ b/src/generated/resources/data/create/advancements/cart_pickup.json @@ -0,0 +1,30 @@ +{ + "parent": "create:pulley_maxed", + "display": { + "icon": { + "item": "create:chest_minecart_contraption" + }, + "title": { + "translate": "advancement.create.cart_pickup" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.cart_pickup.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:cart_pickup_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chained_item_drain.json b/src/generated/resources/data/create/advancements/chained_drain.json similarity index 60% rename from src/generated/resources/data/create/advancements/chained_item_drain.json rename to src/generated/resources/data/create/advancements/chained_drain.json index 4f3f8736e..4da2bd34e 100644 --- a/src/generated/resources/data/create/advancements/chained_item_drain.json +++ b/src/generated/resources/data/create/advancements/chained_drain.json @@ -1,14 +1,15 @@ { - "parent": "create:item_drain", + "parent": "create:backtank", "display": { "icon": { "item": "create:item_drain" }, "title": { - "translate": "advancement.create.chained_item_drain" + "translate": "advancement.create.chained_drain" }, "description": { - "translate": "advancement.create.chained_item_drain.desc" + "color": "#DBA213", + "translate": "advancement.create.chained_drain.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:chained_item_drain", + "trigger": "create:chained_drain_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/chocolate.json b/src/generated/resources/data/create/advancements/chocolate_bucket.json similarity index 67% rename from src/generated/resources/data/create/advancements/chocolate.json rename to src/generated/resources/data/create/advancements/chocolate_bucket.json index 72a8af980..71ed38be7 100644 --- a/src/generated/resources/data/create/advancements/chocolate.json +++ b/src/generated/resources/data/create/advancements/chocolate_bucket.json @@ -1,18 +1,19 @@ { - "parent": "create:spout", + "parent": "create:hose_pulley", "display": { "icon": { "item": "create:chocolate_bucket" }, "title": { - "translate": "advancement.create.chocolate" + "translate": "advancement.create.chocolate_bucket" }, "description": { - "translate": "advancement.create.chocolate.desc" + "color": "#DBA213", + "translate": "advancement.create.chocolate_bucket.desc" }, - "frame": "goal", + "frame": "task", "show_toast": true, - "announce_to_chat": true, + "announce_to_chat": false, "hidden": false }, "criteria": { diff --git a/src/generated/resources/data/create/advancements/chute.json b/src/generated/resources/data/create/advancements/chute.json index d278d6896..535f3ea0f 100644 --- a/src/generated/resources/data/create/advancements/chute.json +++ b/src/generated/resources/data/create/advancements/chute.json @@ -1,5 +1,5 @@ { - "parent": "create:belt", + "parent": "create:funnel", "display": { "icon": { "item": "create:chute" @@ -8,6 +8,7 @@ "translate": "advancement.create.chute" }, "description": { + "color": "#DBA213", "translate": "advancement.create.chute.desc" }, "frame": "task", @@ -17,10 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:chute" - } + "trigger": "create:chute_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/clockwork_bearing.json b/src/generated/resources/data/create/advancements/clockwork_bearing.json index fdbd0bc3b..17b942a51 100644 --- a/src/generated/resources/data/create/advancements/clockwork_bearing.json +++ b/src/generated/resources/data/create/advancements/clockwork_bearing.json @@ -1,5 +1,5 @@ { - "parent": "create:brass_casing", + "parent": "create:haunted_bell", "display": { "icon": { "item": "create:clockwork_bearing" @@ -8,16 +8,17 @@ "translate": "advancement.create.clockwork_bearing" }, "description": { + "color": "#DBA213", "translate": "advancement.create.clockwork_bearing.desc" }, "frame": "task", "show_toast": true, - "announce_to_chat": false, + "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "create:clockwork_bearing", + "trigger": "create:clockwork_bearing_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/compact.json b/src/generated/resources/data/create/advancements/compacting.json similarity index 60% rename from src/generated/resources/data/create/advancements/compact.json rename to src/generated/resources/data/create/advancements/compacting.json index 3c8b323e8..f2084625d 100644 --- a/src/generated/resources/data/create/advancements/compact.json +++ b/src/generated/resources/data/create/advancements/compacting.json @@ -1,14 +1,15 @@ { - "parent": "create:basin", + "parent": "create:saw_processing", "display": { "icon": { "item": "minecraft:iron_block" }, "title": { - "translate": "advancement.create.compact" + "translate": "advancement.create.compacting" }, "description": { - "translate": "advancement.create.compact.desc" + "color": "#DBA213", + "translate": "advancement.create.compacting.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:compact", + "trigger": "create:compacting_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/flywheel.json b/src/generated/resources/data/create/advancements/conductor.json similarity index 55% rename from src/generated/resources/data/create/advancements/flywheel.json rename to src/generated/resources/data/create/advancements/conductor.json index 407a25c20..0616fdf80 100644 --- a/src/generated/resources/data/create/advancements/flywheel.json +++ b/src/generated/resources/data/create/advancements/conductor.json @@ -1,14 +1,15 @@ { - "parent": "create:crafter", + "parent": "create:train", "display": { "icon": { - "item": "create:flywheel" + "item": "create:schedule" }, "title": { - "translate": "advancement.create.flywheel" + "translate": "advancement.create.conductor" }, "description": { - "translate": "advancement.create.flywheel.desc" + "color": "#DBA213", + "translate": "advancement.create.conductor.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:flywheel", + "trigger": "create:conductor_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/contraption_actors.json b/src/generated/resources/data/create/advancements/contraption_actors.json new file mode 100644 index 000000000..9a0d753f1 --- /dev/null +++ b/src/generated/resources/data/create/advancements/contraption_actors.json @@ -0,0 +1,30 @@ +{ + "parent": "create:super_glue", + "display": { + "icon": { + "item": "create:mechanical_harvester" + }, + "title": { + "translate": "advancement.create.contraption_actors" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.contraption_actors.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:contraption_actors_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/clockwork_component_eob.json b/src/generated/resources/data/create/advancements/copper.json similarity index 62% rename from src/generated/resources/data/create/advancements/clockwork_component_eob.json rename to src/generated/resources/data/create/advancements/copper.json index 849aa30ba..13e6db207 100644 --- a/src/generated/resources/data/create/advancements/clockwork_component_eob.json +++ b/src/generated/resources/data/create/advancements/copper.json @@ -1,16 +1,17 @@ { - "parent": "create:precision_mechanism", + "parent": "create:burner", "display": { "icon": { - "item": "minecraft:oak_sapling" + "item": "minecraft:copper_ingot" }, "title": { - "translate": "advancement.create.eob" + "translate": "advancement.create.copper" }, "description": { - "translate": "advancement.create.eob.desc" + "color": "#DBA213", + "translate": "advancement.create.copper.desc" }, - "frame": "challenge", + "frame": "task", "show_toast": false, "announce_to_chat": false, "hidden": false @@ -22,7 +23,7 @@ "items": [ { "items": [ - "create:precision_mechanism" + "minecraft:copper_ingot" ] } ] diff --git a/src/generated/resources/data/create/advancements/copper_casing.json b/src/generated/resources/data/create/advancements/copper_casing.json index 1153527bf..7ceb56bcb 100644 --- a/src/generated/resources/data/create/advancements/copper_casing.json +++ b/src/generated/resources/data/create/advancements/copper_casing.json @@ -1,5 +1,5 @@ { - "parent": "create:press", + "parent": "create:copper", "display": { "icon": { "item": "create:copper_casing" @@ -8,25 +8,18 @@ "translate": "advancement.create.copper_casing" }, "description": { + "color": "#DBA213", "translate": "advancement.create.copper_casing.desc" }, - "frame": "goal", + "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:copper_casing" - ] - } - ] - } + "trigger": "create:copper_casing_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/crafter.json b/src/generated/resources/data/create/advancements/crafter.json deleted file mode 100644 index 2c770efd4..000000000 --- a/src/generated/resources/data/create/advancements/crafter.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:mechanical_crafter" - }, - "title": { - "translate": "advancement.create.crafter" - }, - "description": { - "translate": "advancement.create.crafter.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_crafter" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/crafter_lazy_000.json b/src/generated/resources/data/create/advancements/crafter_lazy_000.json new file mode 100644 index 000000000..a214e95a9 --- /dev/null +++ b/src/generated/resources/data/create/advancements/crafter_lazy_000.json @@ -0,0 +1,30 @@ +{ + "parent": "create:mechanical_crafter", + "display": { + "icon": { + "item": "create:mechanical_crafter" + }, + "title": { + "translate": "advancement.create.crafter_lazy_000" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.crafter_lazy_000.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:crafter_lazy_000_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/lava_wheel.json b/src/generated/resources/data/create/advancements/cross_streams.json similarity index 53% rename from src/generated/resources/data/create/advancements/lava_wheel.json rename to src/generated/resources/data/create/advancements/cross_streams.json index dc7b1c3f2..4973d2855 100644 --- a/src/generated/resources/data/create/advancements/lava_wheel.json +++ b/src/generated/resources/data/create/advancements/cross_streams.json @@ -1,14 +1,15 @@ { - "parent": "create:water_wheel", + "parent": "create:backtank", "display": { "icon": { - "item": "minecraft:lava_bucket" + "item": "minecraft:cobblestone" }, "title": { - "translate": "advancement.create.lava_wheel" + "translate": "advancement.create.cross_streams" }, "description": { - "translate": "advancement.create.lava_wheel.desc" + "color": "#DBA213", + "translate": "advancement.create.cross_streams.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:lava_wheel", + "trigger": "create:cross_streams_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/crusher_maxed_0000.json b/src/generated/resources/data/create/advancements/crusher_maxed_0000.json new file mode 100644 index 000000000..65351b8f4 --- /dev/null +++ b/src/generated/resources/data/create/advancements/crusher_maxed_0000.json @@ -0,0 +1,30 @@ +{ + "parent": "create:brass", + "display": { + "icon": { + "item": "create:crushing_wheel" + }, + "title": { + "translate": "advancement.create.crusher_maxed_0000" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.crusher_maxed_0000.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:crusher_maxed_0000_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/crushing_wheel.json b/src/generated/resources/data/create/advancements/crushing_wheel.json index 91e85c769..68e3a09ba 100644 --- a/src/generated/resources/data/create/advancements/crushing_wheel.json +++ b/src/generated/resources/data/create/advancements/crushing_wheel.json @@ -1,5 +1,5 @@ { - "parent": "create:crafter", + "parent": "create:mechanical_crafter", "display": { "icon": { "item": "create:crushing_wheel" @@ -8,6 +8,7 @@ "translate": "advancement.create.crushing_wheel" }, "description": { + "color": "#DBA213", "translate": "advancement.create.crushing_wheel.desc" }, "frame": "task", @@ -17,16 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:crushing_wheel" - ] - } - ] - } + "trigger": "create:crushing_wheel_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/cuckoo.json b/src/generated/resources/data/create/advancements/cuckoo_clock.json similarity index 54% rename from src/generated/resources/data/create/advancements/cuckoo.json rename to src/generated/resources/data/create/advancements/cuckoo_clock.json index 9462e1f03..a94275cb0 100644 --- a/src/generated/resources/data/create/advancements/cuckoo.json +++ b/src/generated/resources/data/create/advancements/cuckoo_clock.json @@ -1,23 +1,24 @@ { - "parent": "create:andesite_alloy", + "parent": "create:stressometer", "display": { "icon": { "item": "create:cuckoo_clock" }, "title": { - "translate": "advancement.create.cuckoo" + "translate": "advancement.create.cuckoo_clock" }, "description": { - "translate": "advancement.create.cuckoo.desc" + "color": "#DBA213", + "translate": "advancement.create.cuckoo_clock.desc" }, "frame": "task", "show_toast": true, - "announce_to_chat": false, + "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "create:cuckoo", + "trigger": "create:cuckoo_clock_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/deployer.json b/src/generated/resources/data/create/advancements/deployer.json index 82a6a0169..0d6251f0b 100644 --- a/src/generated/resources/data/create/advancements/deployer.json +++ b/src/generated/resources/data/create/advancements/deployer.json @@ -1,5 +1,5 @@ { - "parent": "create:brass_casing", + "parent": "create:rose_quartz", "display": { "icon": { "item": "create:deployer" @@ -8,19 +8,18 @@ "translate": "advancement.create.deployer" }, "description": { + "color": "#DBA213", "translate": "advancement.create.deployer.desc" }, "frame": "task", "show_toast": true, - "announce_to_chat": true, + "announce_to_chat": false, "hidden": false }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:deployer" - } + "trigger": "create:deployer_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/display_board_0.json b/src/generated/resources/data/create/advancements/display_board_0.json new file mode 100644 index 000000000..49c52fb77 --- /dev/null +++ b/src/generated/resources/data/create/advancements/display_board_0.json @@ -0,0 +1,30 @@ +{ + "parent": "create:track_signal", + "display": { + "icon": { + "item": "create:display_board" + }, + "title": { + "translate": "advancement.create.display_board_0" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.display_board_0.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:display_board_0_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/display_link.json b/src/generated/resources/data/create/advancements/display_link.json new file mode 100644 index 000000000..e6d889b8c --- /dev/null +++ b/src/generated/resources/data/create/advancements/display_link.json @@ -0,0 +1,30 @@ +{ + "parent": "create:clockwork_bearing", + "display": { + "icon": { + "item": "create:display_link" + }, + "title": { + "translate": "advancement.create.display_link" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.display_link.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:display_link_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/diving_suit.json b/src/generated/resources/data/create/advancements/diving_suit.json new file mode 100644 index 000000000..94db68db5 --- /dev/null +++ b/src/generated/resources/data/create/advancements/diving_suit.json @@ -0,0 +1,31 @@ +{ + "parent": "create:backtank", + "display": { + "icon": { + "item": "create:diving_helmet", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancement.create.diving_suit" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.diving_suit.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:diving_suit_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/diving_suit_lava.json b/src/generated/resources/data/create/advancements/diving_suit_lava.json new file mode 100644 index 000000000..9f8b1630e --- /dev/null +++ b/src/generated/resources/data/create/advancements/diving_suit_lava.json @@ -0,0 +1,31 @@ +{ + "parent": "create:backtank", + "display": { + "icon": { + "item": "create:diving_helmet", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancement.create.diving_suit_lava" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.diving_suit_lava.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:diving_suit_lava_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/item_drain.json b/src/generated/resources/data/create/advancements/drain.json similarity index 63% rename from src/generated/resources/data/create/advancements/item_drain.json rename to src/generated/resources/data/create/advancements/drain.json index 05d89b4a3..13ff1380b 100644 --- a/src/generated/resources/data/create/advancements/item_drain.json +++ b/src/generated/resources/data/create/advancements/drain.json @@ -1,14 +1,15 @@ { - "parent": "create:copper_casing", + "parent": "create:spout", "display": { "icon": { "item": "create:item_drain" }, "title": { - "translate": "advancement.create.item_drain" + "translate": "advancement.create.drain" }, "description": { - "translate": "advancement.create.item_drain.desc" + "color": "#DBA213", + "translate": "advancement.create.drain.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:item_drain", + "trigger": "create:drain_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/ejector_maxed.json b/src/generated/resources/data/create/advancements/ejector_maxed.json new file mode 100644 index 000000000..eb39e6343 --- /dev/null +++ b/src/generated/resources/data/create/advancements/ejector_maxed.json @@ -0,0 +1,30 @@ +{ + "parent": "create:windmill_maxed", + "display": { + "icon": { + "item": "create:weighted_ejector" + }, + "title": { + "translate": "advancement.create.ejector_maxed" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.ejector_maxed.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:ejector_maxed_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/electron_tube.json b/src/generated/resources/data/create/advancements/electron_tube.json deleted file mode 100644 index 93aac675f..000000000 --- a/src/generated/resources/data/create/advancements/electron_tube.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:polished_rose_quartz", - "display": { - "icon": { - "item": "create:electron_tube" - }, - "title": { - "translate": "advancement.create.electron_tube" - }, - "description": { - "translate": "advancement.create.electron_tube.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:electron_tube" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/upward_chute.json b/src/generated/resources/data/create/advancements/encased_fan.json similarity index 60% rename from src/generated/resources/data/create/advancements/upward_chute.json rename to src/generated/resources/data/create/advancements/encased_fan.json index 424e8c0f6..be43b25e3 100644 --- a/src/generated/resources/data/create/advancements/upward_chute.json +++ b/src/generated/resources/data/create/advancements/encased_fan.json @@ -1,14 +1,15 @@ { - "parent": "create:chute", + "parent": "create:mechanical_press", "display": { "icon": { "item": "create:encased_fan" }, "title": { - "translate": "advancement.create.upward_chute" + "translate": "advancement.create.encased_fan" }, "description": { - "translate": "advancement.create.upward_chute.desc" + "color": "#DBA213", + "translate": "advancement.create.encased_fan.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:upward_chute", + "trigger": "create:encased_fan_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/extendo_grip.json b/src/generated/resources/data/create/advancements/extendo_grip.json index bb4882b2b..efb6c4ab2 100644 --- a/src/generated/resources/data/create/advancements/extendo_grip.json +++ b/src/generated/resources/data/create/advancements/extendo_grip.json @@ -1,5 +1,5 @@ { - "parent": "create:precision_mechanism", + "parent": "create:potato_cannon", "display": { "icon": { "item": "create:extendo_grip", @@ -9,6 +9,7 @@ "translate": "advancement.create.extendo_grip" }, "description": { + "color": "#DBA213", "translate": "advancement.create.extendo_grip.desc" }, "frame": "task", @@ -18,7 +19,7 @@ }, "criteria": { "0": { - "trigger": "create:extendo", + "trigger": "create:extendo_grip_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/dual_extendo_grip.json b/src/generated/resources/data/create/advancements/extendo_grip_dual.json similarity index 59% rename from src/generated/resources/data/create/advancements/dual_extendo_grip.json rename to src/generated/resources/data/create/advancements/extendo_grip_dual.json index 63c805ca0..daedcf7ad 100644 --- a/src/generated/resources/data/create/advancements/dual_extendo_grip.json +++ b/src/generated/resources/data/create/advancements/extendo_grip_dual.json @@ -1,15 +1,16 @@ { - "parent": "create:extendo_grip", + "parent": "create:mechanical_crafter", "display": { "icon": { "item": "create:extendo_grip", "nbt": "{Damage:0}" }, "title": { - "translate": "advancement.create.dual_extendo_grip" + "translate": "advancement.create.extendo_grip_dual" }, "description": { - "translate": "advancement.create.dual_extendo_grip.desc" + "color": "#DBA213", + "translate": "advancement.create.extendo_grip_dual.desc" }, "frame": "goal", "show_toast": true, @@ -18,7 +19,7 @@ }, "criteria": { "0": { - "trigger": "create:giga_extendo", + "trigger": "create:extendo_grip_dual_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/fan.json b/src/generated/resources/data/create/advancements/fan.json deleted file mode 100644 index bafda450d..000000000 --- a/src/generated/resources/data/create/advancements/fan.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:encased_fan" - }, - "title": { - "translate": "advancement.create.fan" - }, - "description": { - "translate": "advancement.create.fan.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "NONE" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_lava.json b/src/generated/resources/data/create/advancements/fan_lava.json deleted file mode 100644 index 6e6362c0a..000000000 --- a/src/generated/resources/data/create/advancements/fan_lava.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:lava_bucket" - }, - "title": { - "translate": "advancement.create.fan_lava" - }, - "description": { - "translate": "advancement.create.fan_lava.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "BLASTING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_processing.json b/src/generated/resources/data/create/advancements/fan_processing.json new file mode 100644 index 000000000..63a1632ce --- /dev/null +++ b/src/generated/resources/data/create/advancements/fan_processing.json @@ -0,0 +1,30 @@ +{ + "parent": "create:encased_fan", + "display": { + "icon": { + "item": "create:propeller" + }, + "title": { + "translate": "advancement.create.fan_processing" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.fan_processing.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:fan_processing_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_smoke.json b/src/generated/resources/data/create/advancements/fan_smoke.json deleted file mode 100644 index 017a1b6f7..000000000 --- a/src/generated/resources/data/create/advancements/fan_smoke.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:campfire" - }, - "title": { - "translate": "advancement.create.fan_smoke" - }, - "description": { - "translate": "advancement.create.fan_smoke.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "SMOKING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_water.json b/src/generated/resources/data/create/advancements/fan_water.json deleted file mode 100644 index 3e7368f4b..000000000 --- a/src/generated/resources/data/create/advancements/fan_water.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:water_bucket" - }, - "title": { - "translate": "advancement.create.fan_water" - }, - "description": { - "translate": "advancement.create.fan_water.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "SPLASHING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fist_bump.json b/src/generated/resources/data/create/advancements/fist_bump.json index a56949290..af55b69c1 100644 --- a/src/generated/resources/data/create/advancements/fist_bump.json +++ b/src/generated/resources/data/create/advancements/fist_bump.json @@ -1,5 +1,5 @@ { - "parent": "create:deployer", + "parent": "create:mechanical_crafter", "display": { "icon": { "item": "create:deployer" @@ -8,6 +8,7 @@ "translate": "advancement.create.fist_bump" }, "description": { + "color": "#DBA213", "translate": "advancement.create.fist_bump.desc" }, "frame": "goal", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:deployer", + "trigger": "create:fist_bump_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/foods.json b/src/generated/resources/data/create/advancements/foods.json new file mode 100644 index 000000000..782e9cd0a --- /dev/null +++ b/src/generated/resources/data/create/advancements/foods.json @@ -0,0 +1,30 @@ +{ + "parent": "create:steam_engine_maxed", + "display": { + "icon": { + "item": "create:chocolate_glazed_berries" + }, + "title": { + "translate": "advancement.create.foods" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.foods.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:foods_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/belt_funnel.json b/src/generated/resources/data/create/advancements/funnel.json similarity index 68% rename from src/generated/resources/data/create/advancements/belt_funnel.json rename to src/generated/resources/data/create/advancements/funnel.json index 2173f6436..1116b8c91 100644 --- a/src/generated/resources/data/create/advancements/belt_funnel.json +++ b/src/generated/resources/data/create/advancements/funnel.json @@ -5,10 +5,11 @@ "item": "create:andesite_funnel" }, "title": { - "translate": "advancement.create.belt_funnel" + "translate": "advancement.create.funnel" }, "description": { - "translate": "advancement.create.belt_funnel.desc" + "color": "#DBA213", + "translate": "advancement.create.funnel.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:belt_funnel", + "trigger": "create:funnel_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/glass_pipe.json b/src/generated/resources/data/create/advancements/glass_pipe.json index 53082a5c3..0bf5ccb5f 100644 --- a/src/generated/resources/data/create/advancements/glass_pipe.json +++ b/src/generated/resources/data/create/advancements/glass_pipe.json @@ -1,5 +1,5 @@ { - "parent": "create:copper_casing", + "parent": "create:mechanical_pump_0", "display": { "icon": { "item": "create:fluid_pipe" @@ -8,6 +8,7 @@ "translate": "advancement.create.glass_pipe" }, "description": { + "color": "#DBA213", "translate": "advancement.create.glass_pipe.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:glass_pipe", + "trigger": "create:glass_pipe_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/hand_crank_000.json b/src/generated/resources/data/create/advancements/hand_crank_000.json new file mode 100644 index 000000000..3bcbfcb2d --- /dev/null +++ b/src/generated/resources/data/create/advancements/hand_crank_000.json @@ -0,0 +1,30 @@ +{ + "parent": "create:mechanical_mixer", + "display": { + "icon": { + "item": "create:hand_crank" + }, + "title": { + "translate": "advancement.create.hand_crank_000" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.hand_crank_000.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:hand_crank_000_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/haunted_bell.json b/src/generated/resources/data/create/advancements/haunted_bell.json new file mode 100644 index 000000000..eb042be07 --- /dev/null +++ b/src/generated/resources/data/create/advancements/haunted_bell.json @@ -0,0 +1,30 @@ +{ + "parent": "create:brass", + "display": { + "icon": { + "item": "create:haunted_bell" + }, + "title": { + "translate": "advancement.create.haunted_bell" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.haunted_bell.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:haunted_bell_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/honey_drain.json b/src/generated/resources/data/create/advancements/honey_drain.json new file mode 100644 index 000000000..00d6101a9 --- /dev/null +++ b/src/generated/resources/data/create/advancements/honey_drain.json @@ -0,0 +1,30 @@ +{ + "parent": "create:chocolate_bucket", + "display": { + "icon": { + "item": "minecraft:beehive" + }, + "title": { + "translate": "advancement.create.honey_drain" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.honey_drain.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:honey_drain_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/hose_pulley.json b/src/generated/resources/data/create/advancements/hose_pulley.json index b15625017..9ed1de7b4 100644 --- a/src/generated/resources/data/create/advancements/hose_pulley.json +++ b/src/generated/resources/data/create/advancements/hose_pulley.json @@ -1,5 +1,5 @@ { - "parent": "create:pipe_spill", + "parent": "create:water_supply", "display": { "icon": { "item": "create:hose_pulley" @@ -8,6 +8,7 @@ "translate": "advancement.create.hose_pulley" }, "description": { + "color": "#DBA213", "translate": "advancement.create.hose_pulley.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:hose_pulley", + "trigger": "create:hose_pulley_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/hose_pulley_lava.json b/src/generated/resources/data/create/advancements/hose_pulley_lava.json new file mode 100644 index 000000000..dc7180277 --- /dev/null +++ b/src/generated/resources/data/create/advancements/hose_pulley_lava.json @@ -0,0 +1,30 @@ +{ + "parent": "create:copper", + "display": { + "icon": { + "item": "create:hose_pulley" + }, + "title": { + "translate": "advancement.create.hose_pulley_lava" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.hose_pulley_lava.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:hose_pulley_lava_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_chocolate.json b/src/generated/resources/data/create/advancements/infinite_chocolate.json deleted file mode 100644 index 5715963c3..000000000 --- a/src/generated/resources/data/create/advancements/infinite_chocolate.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "create:chocolate_bucket" - }, - "title": { - "translate": "advancement.create.infinite_chocolate" - }, - "description": { - "translate": "advancement.create.infinite_chocolate.desc" - }, - "frame": "challenge", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "create:chocolate" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_lava.json b/src/generated/resources/data/create/advancements/infinite_lava.json deleted file mode 100644 index 5d634ef94..000000000 --- a/src/generated/resources/data/create/advancements/infinite_lava.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "minecraft:lava_bucket" - }, - "title": { - "translate": "advancement.create.infinite_lava" - }, - "description": { - "translate": "advancement.create.infinite_lava.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "minecraft:lava" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_water.json b/src/generated/resources/data/create/advancements/infinite_water.json deleted file mode 100644 index 27b8c7a64..000000000 --- a/src/generated/resources/data/create/advancements/infinite_water.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "minecraft:water_bucket" - }, - "title": { - "translate": "advancement.create.infinite_water" - }, - "description": { - "translate": "advancement.create.infinite_water.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "minecraft:water" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/lava_wheel_00000.json b/src/generated/resources/data/create/advancements/lava_wheel_00000.json new file mode 100644 index 000000000..6f85481cc --- /dev/null +++ b/src/generated/resources/data/create/advancements/lava_wheel_00000.json @@ -0,0 +1,30 @@ +{ + "parent": "create:mechanical_mixer", + "display": { + "icon": { + "item": "create:water_wheel" + }, + "title": { + "translate": "advancement.create.lava_wheel_00000" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.lava_wheel_00000.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:lava_wheel_00000_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/linked_controller.json b/src/generated/resources/data/create/advancements/linked_controller.json new file mode 100644 index 000000000..52db00b24 --- /dev/null +++ b/src/generated/resources/data/create/advancements/linked_controller.json @@ -0,0 +1,30 @@ +{ + "parent": "create:extendo_grip", + "display": { + "icon": { + "item": "create:linked_controller" + }, + "title": { + "translate": "advancement.create.linked_controller" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.linked_controller.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:linked_controller_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/long_bend.json b/src/generated/resources/data/create/advancements/long_bend.json new file mode 100644 index 000000000..5b6f5f513 --- /dev/null +++ b/src/generated/resources/data/create/advancements/long_bend.json @@ -0,0 +1,30 @@ +{ + "parent": "create:track_crafting_factory", + "display": { + "icon": { + "item": "create:track" + }, + "title": { + "translate": "advancement.create.long_bend" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.long_bend.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:long_bend_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/spout_potion.json b/src/generated/resources/data/create/advancements/long_train.json similarity index 54% rename from src/generated/resources/data/create/advancements/spout_potion.json rename to src/generated/resources/data/create/advancements/long_train.json index 89e971a41..e72513d0a 100644 --- a/src/generated/resources/data/create/advancements/spout_potion.json +++ b/src/generated/resources/data/create/advancements/long_train.json @@ -1,14 +1,15 @@ { - "parent": "create:spout", + "parent": "create:long_bend", "display": { "icon": { - "item": "minecraft:potion" + "item": "minecraft:minecart" }, "title": { - "translate": "advancement.create.spout_potion" + "translate": "advancement.create.long_train" }, "description": { - "translate": "advancement.create.spout_potion.desc" + "color": "#DBA213", + "translate": "advancement.create.long_train.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:spout_potion", + "trigger": "create:long_train_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/maxed_windmill.json b/src/generated/resources/data/create/advancements/long_travel.json similarity index 54% rename from src/generated/resources/data/create/advancements/maxed_windmill.json rename to src/generated/resources/data/create/advancements/long_travel.json index 63ad29a4d..05ea86920 100644 --- a/src/generated/resources/data/create/advancements/maxed_windmill.json +++ b/src/generated/resources/data/create/advancements/long_travel.json @@ -1,14 +1,15 @@ { - "parent": "create:windmill", + "parent": "create:long_train", "display": { "icon": { - "item": "create:windmill_bearing" + "item": "create:green_seat" }, "title": { - "translate": "advancement.create.maxed_windmill" + "translate": "advancement.create.long_travel" }, "description": { - "translate": "advancement.create.maxed_windmill.desc" + "color": "#DBA213", + "translate": "advancement.create.long_travel.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:maxed_windmill", + "trigger": "create:long_travel_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/mechanical_arm.json b/src/generated/resources/data/create/advancements/mechanical_arm.json index 9ef076a60..aefff1ce8 100644 --- a/src/generated/resources/data/create/advancements/mechanical_arm.json +++ b/src/generated/resources/data/create/advancements/mechanical_arm.json @@ -1,5 +1,5 @@ { - "parent": "create:brass_casing", + "parent": "create:speed_controller", "display": { "icon": { "item": "create:mechanical_arm" @@ -8,6 +8,7 @@ "translate": "advancement.create.mechanical_arm" }, "description": { + "color": "#DBA213", "translate": "advancement.create.mechanical_arm.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:mechanical_arm", + "trigger": "create:mechanical_arm_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/mechanical_crafter.json b/src/generated/resources/data/create/advancements/mechanical_crafter.json new file mode 100644 index 000000000..7ed3c0faf --- /dev/null +++ b/src/generated/resources/data/create/advancements/mechanical_crafter.json @@ -0,0 +1,30 @@ +{ + "parent": "create:mechanical_arm", + "display": { + "icon": { + "item": "create:mechanical_crafter" + }, + "title": { + "translate": "advancement.create.mechanical_crafter" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.mechanical_crafter.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:mechanical_crafter_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mechanical_drill.json b/src/generated/resources/data/create/advancements/mechanical_drill.json deleted file mode 100644 index e669706f4..000000000 --- a/src/generated/resources/data/create/advancements/mechanical_drill.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:andesite_casing", - "display": { - "icon": { - "item": "create:mechanical_drill" - }, - "title": { - "translate": "advancement.create.mechanical_drill" - }, - "description": { - "translate": "advancement.create.mechanical_drill.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_drill" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mechanical_mixer.json b/src/generated/resources/data/create/advancements/mechanical_mixer.json new file mode 100644 index 000000000..f47cf55fb --- /dev/null +++ b/src/generated/resources/data/create/advancements/mechanical_mixer.json @@ -0,0 +1,30 @@ +{ + "parent": "create:chute", + "display": { + "icon": { + "item": "create:mechanical_mixer" + }, + "title": { + "translate": "advancement.create.mechanical_mixer" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.mechanical_mixer.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:mechanical_mixer_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/press.json b/src/generated/resources/data/create/advancements/mechanical_press.json similarity index 65% rename from src/generated/resources/data/create/advancements/press.json rename to src/generated/resources/data/create/advancements/mechanical_press.json index 57eab0194..dc891a8c5 100644 --- a/src/generated/resources/data/create/advancements/press.json +++ b/src/generated/resources/data/create/advancements/mechanical_press.json @@ -5,10 +5,11 @@ "item": "create:mechanical_press" }, "title": { - "translate": "advancement.create.press" + "translate": "advancement.create.mechanical_press" }, "description": { - "translate": "advancement.create.press.desc" + "color": "#DBA213", + "translate": "advancement.create.mechanical_press.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:bonk", + "trigger": "create:mechanical_press_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/mechanical_pump_0.json b/src/generated/resources/data/create/advancements/mechanical_pump_0.json new file mode 100644 index 000000000..67a7e7a6e --- /dev/null +++ b/src/generated/resources/data/create/advancements/mechanical_pump_0.json @@ -0,0 +1,30 @@ +{ + "parent": "create:copper", + "display": { + "icon": { + "item": "create:mechanical_pump" + }, + "title": { + "translate": "advancement.create.mechanical_pump_0" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.mechanical_pump_0.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:mechanical_pump_0_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/millstone.json b/src/generated/resources/data/create/advancements/millstone.json index 7272ebb41..762592495 100644 --- a/src/generated/resources/data/create/advancements/millstone.json +++ b/src/generated/resources/data/create/advancements/millstone.json @@ -1,5 +1,5 @@ { - "parent": "create:andesite_alloy", + "parent": "create:shifting_gears", "display": { "icon": { "item": "create:millstone" @@ -8,6 +8,7 @@ "translate": "advancement.create.millstone" }, "description": { + "color": "#DBA213", "translate": "advancement.create.millstone.desc" }, "frame": "task", @@ -17,10 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:millstone" - } + "trigger": "create:millstone_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/mixer.json b/src/generated/resources/data/create/advancements/mixer.json deleted file mode 100644 index e9c2b0a49..000000000 --- a/src/generated/resources/data/create/advancements/mixer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "create:basin", - "display": { - "icon": { - "item": "create:mechanical_mixer" - }, - "title": { - "translate": "advancement.create.mixer" - }, - "description": { - "translate": "advancement.create.mixer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_mixer" - } - }, - "1": { - "trigger": "create:mixer", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/musical_arm.json b/src/generated/resources/data/create/advancements/musical_arm.json index e9d6ea5c6..d5a1e4bbf 100644 --- a/src/generated/resources/data/create/advancements/musical_arm.json +++ b/src/generated/resources/data/create/advancements/musical_arm.json @@ -1,23 +1,24 @@ { - "parent": "create:mechanical_arm", + "parent": "create:mechanical_crafter", "display": { "icon": { - "item": "minecraft:music_disc_13" + "item": "minecraft:jukebox" }, "title": { "translate": "advancement.create.musical_arm" }, "description": { + "color": "#DBA213", "translate": "advancement.create.musical_arm.desc" }, - "frame": "task", + "frame": "goal", "show_toast": true, "announce_to_chat": true, - "hidden": false + "hidden": true }, "criteria": { "0": { - "trigger": "create:musical_arm", + "trigger": "create:musical_arm_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/nixie_tube.json b/src/generated/resources/data/create/advancements/nixie_tube.json deleted file mode 100644 index 597db56b1..000000000 --- a/src/generated/resources/data/create/advancements/nixie_tube.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:nixie_tube" - }, - "title": { - "translate": "advancement.create.nixie_tube" - }, - "description": { - "translate": "advancement.create.nixie_tube.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:nixie_tube" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chocolate_wheel.json b/src/generated/resources/data/create/advancements/pipe_organ.json similarity index 54% rename from src/generated/resources/data/create/advancements/chocolate_wheel.json rename to src/generated/resources/data/create/advancements/pipe_organ.json index c0f40f264..2c921b392 100644 --- a/src/generated/resources/data/create/advancements/chocolate_wheel.json +++ b/src/generated/resources/data/create/advancements/pipe_organ.json @@ -1,14 +1,15 @@ { - "parent": "create:water_wheel", + "parent": "create:backtank", "display": { "icon": { - "item": "create:chocolate_bucket" + "item": "create:steam_whistle" }, "title": { - "translate": "advancement.create.chocolate_wheel" + "translate": "advancement.create.pipe_organ" }, "description": { - "translate": "advancement.create.chocolate_wheel.desc" + "color": "#DBA213", + "translate": "advancement.create.pipe_organ.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:chocolate_wheel", + "trigger": "create:pipe_organ_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/pipe_spill.json b/src/generated/resources/data/create/advancements/pipe_spill.json deleted file mode 100644 index 352a83ee4..000000000 --- a/src/generated/resources/data/create/advancements/pipe_spill.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:glass_pipe", - "display": { - "icon": { - "item": "minecraft:bucket" - }, - "title": { - "translate": "advancement.create.pipe_spill" - }, - "description": { - "translate": "advancement.create.pipe_spill.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:pipe_spill", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/portable_storage_interface.json b/src/generated/resources/data/create/advancements/portable_storage_interface.json new file mode 100644 index 000000000..b5ec809f3 --- /dev/null +++ b/src/generated/resources/data/create/advancements/portable_storage_interface.json @@ -0,0 +1,30 @@ +{ + "parent": "create:contraption_actors", + "display": { + "icon": { + "item": "create:portable_storage_interface" + }, + "title": { + "translate": "advancement.create.portable_storage_interface" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.portable_storage_interface.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:portable_storage_interface_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/potato_cannon.json b/src/generated/resources/data/create/advancements/potato_cannon.json index 9e1da2e5e..8846dfd89 100644 --- a/src/generated/resources/data/create/advancements/potato_cannon.json +++ b/src/generated/resources/data/create/advancements/potato_cannon.json @@ -1,5 +1,5 @@ { - "parent": "create:precision_mechanism", + "parent": "create:display_link", "display": { "icon": { "item": "create:potato_cannon", @@ -9,16 +9,17 @@ "translate": "advancement.create.potato_cannon" }, "description": { + "color": "#DBA213", "translate": "advancement.create.potato_cannon.desc" }, - "frame": "goal", + "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "create:potato_kill", + "trigger": "create:potato_cannon_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/potato_cannon_collide.json b/src/generated/resources/data/create/advancements/potato_cannon_collide.json new file mode 100644 index 000000000..e107f8d7f --- /dev/null +++ b/src/generated/resources/data/create/advancements/potato_cannon_collide.json @@ -0,0 +1,30 @@ +{ + "parent": "create:arm_many_targets", + "display": { + "icon": { + "item": "minecraft:carrot" + }, + "title": { + "translate": "advancement.create.potato_cannon_collide" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.potato_cannon_collide.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:potato_cannon_collide_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/precision_mechanism.json b/src/generated/resources/data/create/advancements/precision_mechanism.json index dd6e332e3..ad504fd14 100644 --- a/src/generated/resources/data/create/advancements/precision_mechanism.json +++ b/src/generated/resources/data/create/advancements/precision_mechanism.json @@ -8,11 +8,12 @@ "translate": "advancement.create.precision_mechanism" }, "description": { + "color": "#DBA213", "translate": "advancement.create.precision_mechanism.desc" }, "frame": "task", "show_toast": true, - "announce_to_chat": false, + "announce_to_chat": true, "hidden": false }, "criteria": { diff --git a/src/generated/resources/data/create/advancements/pulley_maxed.json b/src/generated/resources/data/create/advancements/pulley_maxed.json new file mode 100644 index 000000000..577d2dd59 --- /dev/null +++ b/src/generated/resources/data/create/advancements/pulley_maxed.json @@ -0,0 +1,30 @@ +{ + "parent": "create:ejector_maxed", + "display": { + "icon": { + "item": "create:rope_pulley" + }, + "title": { + "translate": "advancement.create.pulley_maxed" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.pulley_maxed.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:pulley_maxed_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/overstressed.json b/src/generated/resources/data/create/advancements/red_signal.json similarity index 54% rename from src/generated/resources/data/create/advancements/overstressed.json rename to src/generated/resources/data/create/advancements/red_signal.json index 5c37c63a4..9759f1c4c 100644 --- a/src/generated/resources/data/create/advancements/overstressed.json +++ b/src/generated/resources/data/create/advancements/red_signal.json @@ -1,14 +1,15 @@ { - "parent": "create:its_alive", + "parent": "create:track_signal", "display": { "icon": { - "item": "minecraft:barrier" + "item": "create:track_signal" }, "title": { - "translate": "advancement.create.overstressed" + "translate": "advancement.create.red_signal" }, "description": { - "translate": "advancement.create.overstressed.desc" + "color": "#DBA213", + "translate": "advancement.create.red_signal.desc" }, "frame": "goal", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:overstressed", + "trigger": "create:red_signal_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/reinforced.json b/src/generated/resources/data/create/advancements/reinforced.json deleted file mode 100644 index a77c4c924..000000000 --- a/src/generated/resources/data/create/advancements/reinforced.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "create:aesthetics", - "display": { - "icon": { - "item": "create:andesite_encased_shaft" - }, - "title": { - "translate": "advancement.create.reinforced" - }, - "description": { - "translate": "advancement.create.reinforced.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:casing_shaft", - "conditions": {} - }, - "1": { - "trigger": "create:casing_belt", - "conditions": {} - }, - "2": { - "trigger": "create:casing_pipe", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ], - [ - "2" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/root.json b/src/generated/resources/data/create/advancements/root.json index 7a4bdc3d1..94fbf4814 100644 --- a/src/generated/resources/data/create/advancements/root.json +++ b/src/generated/resources/data/create/advancements/root.json @@ -7,6 +7,7 @@ "translate": "advancement.create.root" }, "description": { + "color": "#DBA213", "translate": "advancement.create.root.desc" }, "frame": "task", diff --git a/src/generated/resources/data/create/advancements/polished_rose_quartz.json b/src/generated/resources/data/create/advancements/rose_quartz.json similarity index 75% rename from src/generated/resources/data/create/advancements/polished_rose_quartz.json rename to src/generated/resources/data/create/advancements/rose_quartz.json index 5f215f879..99c08415c 100644 --- a/src/generated/resources/data/create/advancements/polished_rose_quartz.json +++ b/src/generated/resources/data/create/advancements/rose_quartz.json @@ -1,14 +1,15 @@ { - "parent": "create:andesite_casing", + "parent": "create:brass_casing", "display": { "icon": { "item": "create:polished_rose_quartz" }, "title": { - "translate": "advancement.create.polished_rose_quartz" + "translate": "advancement.create.rose_quartz" }, "description": { - "translate": "advancement.create.polished_rose_quartz.desc" + "color": "#DBA213", + "translate": "advancement.create.rose_quartz.desc" }, "frame": "task", "show_toast": true, diff --git a/src/generated/resources/data/create/advancements/mechanical_saw.json b/src/generated/resources/data/create/advancements/saw_processing.json similarity index 54% rename from src/generated/resources/data/create/advancements/mechanical_saw.json rename to src/generated/resources/data/create/advancements/saw_processing.json index 36df9df2d..46af99567 100644 --- a/src/generated/resources/data/create/advancements/mechanical_saw.json +++ b/src/generated/resources/data/create/advancements/saw_processing.json @@ -1,14 +1,15 @@ { - "parent": "create:press", + "parent": "create:fan_processing", "display": { "icon": { "item": "create:mechanical_saw" }, "title": { - "translate": "advancement.create.mechanical_saw" + "translate": "advancement.create.saw_processing" }, "description": { - "translate": "advancement.create.mechanical_saw.desc" + "color": "#DBA213", + "translate": "advancement.create.saw_processing.desc" }, "frame": "task", "show_toast": true, @@ -17,10 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_saw" - } + "trigger": "create:saw_processing_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/self_deploying.json b/src/generated/resources/data/create/advancements/self_deploying.json new file mode 100644 index 000000000..905dd15ab --- /dev/null +++ b/src/generated/resources/data/create/advancements/self_deploying.json @@ -0,0 +1,30 @@ +{ + "parent": "create:potato_cannon_collide", + "display": { + "icon": { + "item": "minecraft:rail" + }, + "title": { + "translate": "advancement.create.self_deploying" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.self_deploying.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:self_deploying_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/shifting_gears.json b/src/generated/resources/data/create/advancements/shifting_gears.json index 698688835..ef26defa0 100644 --- a/src/generated/resources/data/create/advancements/shifting_gears.json +++ b/src/generated/resources/data/create/advancements/shifting_gears.json @@ -1,13 +1,14 @@ { - "parent": "create:its_alive", + "parent": "create:windmill", "display": { "icon": { - "item": "create:large_cogwheel" + "item": "create:cogwheel" }, "title": { "translate": "advancement.create.shifting_gears" }, "description": { + "color": "#DBA213", "translate": "advancement.create.shifting_gears.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:shifting_gears", + "trigger": "create:shifting_gears_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/speed_controller.json b/src/generated/resources/data/create/advancements/speed_controller.json index 38632e7d1..baa84712b 100644 --- a/src/generated/resources/data/create/advancements/speed_controller.json +++ b/src/generated/resources/data/create/advancements/speed_controller.json @@ -8,6 +8,7 @@ "translate": "advancement.create.speed_controller" }, "description": { + "color": "#DBA213", "translate": "advancement.create.speed_controller.desc" }, "frame": "task", @@ -17,10 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:rotation_speed_controller" - } + "trigger": "create:speed_controller_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/speedometer.json b/src/generated/resources/data/create/advancements/speedometer.json deleted file mode 100644 index 4766aafb7..000000000 --- a/src/generated/resources/data/create/advancements/speedometer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:goggles", - "display": { - "icon": { - "item": "create:speedometer" - }, - "title": { - "translate": "advancement.create.speedometer" - }, - "description": { - "translate": "advancement.create.speedometer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:speedometer" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/spout.json b/src/generated/resources/data/create/advancements/spout.json index 42ac31852..10faef6a8 100644 --- a/src/generated/resources/data/create/advancements/spout.json +++ b/src/generated/resources/data/create/advancements/spout.json @@ -8,6 +8,7 @@ "translate": "advancement.create.spout" }, "description": { + "color": "#DBA213", "translate": "advancement.create.spout.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:spout", + "trigger": "create:spout_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/steam_engine.json b/src/generated/resources/data/create/advancements/steam_engine.json new file mode 100644 index 000000000..863ba016a --- /dev/null +++ b/src/generated/resources/data/create/advancements/steam_engine.json @@ -0,0 +1,30 @@ +{ + "parent": "create:drain", + "display": { + "icon": { + "item": "create:steam_engine" + }, + "title": { + "translate": "advancement.create.steam_engine" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.steam_engine.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:steam_engine_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/steam_engine_maxed.json b/src/generated/resources/data/create/advancements/steam_engine_maxed.json new file mode 100644 index 000000000..5bc80b890 --- /dev/null +++ b/src/generated/resources/data/create/advancements/steam_engine_maxed.json @@ -0,0 +1,30 @@ +{ + "parent": "create:hose_pulley_lava", + "display": { + "icon": { + "item": "create:steam_engine" + }, + "title": { + "translate": "advancement.create.steam_engine_maxed" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.steam_engine_maxed.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:steam_engine_maxed_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/steam_whistle.json b/src/generated/resources/data/create/advancements/steam_whistle.json new file mode 100644 index 000000000..0207bbfab --- /dev/null +++ b/src/generated/resources/data/create/advancements/steam_whistle.json @@ -0,0 +1,30 @@ +{ + "parent": "create:steam_engine", + "display": { + "icon": { + "item": "create:steam_whistle" + }, + "title": { + "translate": "advancement.create.steam_whistle" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.steam_whistle.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:steam_whistle_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/stressometer.json b/src/generated/resources/data/create/advancements/stressometer.json index 685691184..68dfa374e 100644 --- a/src/generated/resources/data/create/advancements/stressometer.json +++ b/src/generated/resources/data/create/advancements/stressometer.json @@ -1,5 +1,5 @@ { - "parent": "create:goggles", + "parent": "create:wrench_goggles", "display": { "icon": { "item": "create:stressometer" @@ -8,6 +8,7 @@ "translate": "advancement.create.stressometer" }, "description": { + "color": "#DBA213", "translate": "advancement.create.stressometer.desc" }, "frame": "task", @@ -17,10 +18,8 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:stressometer" - } + "trigger": "create:stressometer_builtin", + "conditions": {} } }, "requirements": [ diff --git a/src/generated/resources/data/create/advancements/stressometer_maxed.json b/src/generated/resources/data/create/advancements/stressometer_maxed.json new file mode 100644 index 000000000..7c1390d83 --- /dev/null +++ b/src/generated/resources/data/create/advancements/stressometer_maxed.json @@ -0,0 +1,30 @@ +{ + "parent": "create:mechanical_mixer", + "display": { + "icon": { + "item": "create:stressometer" + }, + "title": { + "translate": "advancement.create.stressometer_maxed" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.stressometer_maxed.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:stressometer_maxed_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/blaze_cake.json b/src/generated/resources/data/create/advancements/sturdy_sheet.json similarity index 69% rename from src/generated/resources/data/create/advancements/blaze_cake.json rename to src/generated/resources/data/create/advancements/sturdy_sheet.json index ce6769bdb..9a404450f 100644 --- a/src/generated/resources/data/create/advancements/blaze_cake.json +++ b/src/generated/resources/data/create/advancements/sturdy_sheet.json @@ -2,13 +2,14 @@ "parent": "create:crushing_wheel", "display": { "icon": { - "item": "create:blaze_cake" + "item": "create:sturdy_sheet" }, "title": { - "translate": "advancement.create.blaze_cake" + "translate": "advancement.create.sturdy_sheet" }, "description": { - "translate": "advancement.create.blaze_cake.desc" + "color": "#DBA213", + "translate": "advancement.create.sturdy_sheet.desc" }, "frame": "task", "show_toast": true, @@ -22,7 +23,7 @@ "items": [ { "items": [ - "create:blaze_cake" + "create:sturdy_sheet" ] } ] diff --git a/src/generated/resources/data/create/advancements/super_glue.json b/src/generated/resources/data/create/advancements/super_glue.json new file mode 100644 index 000000000..369655f93 --- /dev/null +++ b/src/generated/resources/data/create/advancements/super_glue.json @@ -0,0 +1,31 @@ +{ + "parent": "create:millstone", + "display": { + "icon": { + "item": "create:super_glue", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancement.create.super_glue" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.super_glue.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:super_glue_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/goggles.json b/src/generated/resources/data/create/advancements/track_0.json similarity index 66% rename from src/generated/resources/data/create/advancements/goggles.json rename to src/generated/resources/data/create/advancements/track_0.json index b2a7cc89d..da39724f5 100644 --- a/src/generated/resources/data/create/advancements/goggles.json +++ b/src/generated/resources/data/create/advancements/track_0.json @@ -1,14 +1,15 @@ { - "parent": "create:its_alive", + "parent": "create:sturdy_sheet", "display": { "icon": { - "item": "create:goggles" + "item": "create:track" }, "title": { - "translate": "advancement.create.goggles" + "translate": "advancement.create.track_0" }, "description": { - "translate": "advancement.create.goggles.desc" + "color": "#DBA213", + "translate": "advancement.create.track_0.desc" }, "frame": "task", "show_toast": true, @@ -22,7 +23,7 @@ "items": [ { "items": [ - "create:goggles" + "create:track" ] } ] diff --git a/src/generated/resources/data/create/advancements/track_crafting_factory.json b/src/generated/resources/data/create/advancements/track_crafting_factory.json new file mode 100644 index 000000000..91d23c0c5 --- /dev/null +++ b/src/generated/resources/data/create/advancements/track_crafting_factory.json @@ -0,0 +1,30 @@ +{ + "parent": "create:sturdy_sheet", + "display": { + "icon": { + "item": "create:mechanical_press" + }, + "title": { + "translate": "advancement.create.track_crafting_factory" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.track_crafting_factory.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:track_crafting_factory_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/track_signal.json b/src/generated/resources/data/create/advancements/track_signal.json new file mode 100644 index 000000000..21c6c2f91 --- /dev/null +++ b/src/generated/resources/data/create/advancements/track_signal.json @@ -0,0 +1,30 @@ +{ + "parent": "create:conductor", + "display": { + "icon": { + "item": "create:track_signal" + }, + "title": { + "translate": "advancement.create.track_signal" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.track_signal.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:track_signal_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/splitter_tunnel.json b/src/generated/resources/data/create/advancements/train.json similarity index 55% rename from src/generated/resources/data/create/advancements/splitter_tunnel.json rename to src/generated/resources/data/create/advancements/train.json index 8cce2755f..9f97733fc 100644 --- a/src/generated/resources/data/create/advancements/splitter_tunnel.json +++ b/src/generated/resources/data/create/advancements/train.json @@ -1,14 +1,15 @@ { - "parent": "create:tunnel", + "parent": "create:train_casing_00", "display": { "icon": { - "item": "create:brass_tunnel" + "item": "create:track_station" }, "title": { - "translate": "advancement.create.splitter_tunnel" + "translate": "advancement.create.train" }, "description": { - "translate": "advancement.create.splitter_tunnel.desc" + "color": "#DBA213", + "translate": "advancement.create.train.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:connect_tunnel", + "trigger": "create:train_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/train_casing_00.json b/src/generated/resources/data/create/advancements/train_casing_00.json new file mode 100644 index 000000000..e3108acdb --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_casing_00.json @@ -0,0 +1,30 @@ +{ + "parent": "create:sturdy_sheet", + "display": { + "icon": { + "item": "create:railway_casing" + }, + "title": { + "translate": "advancement.create.train_casing_00" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_casing_00.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:train_casing_00_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/train_crash.json b/src/generated/resources/data/create/advancements/train_crash.json new file mode 100644 index 000000000..3cc039f4c --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_crash.json @@ -0,0 +1,30 @@ +{ + "parent": "create:track_signal", + "display": { + "icon": { + "item": "create:incomplete_track" + }, + "title": { + "translate": "advancement.create.train_crash" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_crash.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:train_crash_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/train_crash_backwards.json b/src/generated/resources/data/create/advancements/train_crash_backwards.json new file mode 100644 index 000000000..db7cd377c --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_crash_backwards.json @@ -0,0 +1,30 @@ +{ + "parent": "create:track_signal", + "display": { + "icon": { + "item": "create:incomplete_track" + }, + "title": { + "translate": "advancement.create.train_crash_backwards" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_crash_backwards.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:train_crash_backwards_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/train_portal.json b/src/generated/resources/data/create/advancements/train_portal.json new file mode 100644 index 000000000..d353bde5e --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_portal.json @@ -0,0 +1,30 @@ +{ + "parent": "create:train_whistle", + "display": { + "icon": { + "item": "minecraft:amethyst_block" + }, + "title": { + "translate": "advancement.create.train_portal" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_portal.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:train_portal_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/train_roadkill.json b/src/generated/resources/data/create/advancements/train_roadkill.json new file mode 100644 index 000000000..15b093d6e --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_roadkill.json @@ -0,0 +1,31 @@ +{ + "parent": "create:track_signal", + "display": { + "icon": { + "item": "minecraft:diamond_sword", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancement.create.train_roadkill" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_roadkill.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "0": { + "trigger": "create:train_roadkill_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/train_whistle.json b/src/generated/resources/data/create/advancements/train_whistle.json new file mode 100644 index 000000000..6f5257dc4 --- /dev/null +++ b/src/generated/resources/data/create/advancements/train_whistle.json @@ -0,0 +1,30 @@ +{ + "parent": "create:track_0", + "display": { + "icon": { + "item": "create:steam_whistle" + }, + "title": { + "translate": "advancement.create.train_whistle" + }, + "description": { + "color": "#DBA213", + "translate": "advancement.create.train_whistle.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "create:train_whistle_builtin", + "conditions": {} + } + }, + "requirements": [ + [ + "0" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/tunnel.json b/src/generated/resources/data/create/advancements/tunnel.json deleted file mode 100644 index 78f9f3c18..000000000 --- a/src/generated/resources/data/create/advancements/tunnel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:belt", - "display": { - "icon": { - "item": "create:andesite_tunnel" - }, - "title": { - "translate": "advancement.create.tunnel" - }, - "description": { - "translate": "advancement.create.tunnel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:place_tunnel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/wand_of_symmetry.json b/src/generated/resources/data/create/advancements/wand_of_symmetry.json deleted file mode 100644 index 3889d50ac..000000000 --- a/src/generated/resources/data/create/advancements/wand_of_symmetry.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:precision_mechanism", - "display": { - "icon": { - "item": "create:wand_of_symmetry" - }, - "title": { - "translate": "advancement.create.wand_of_symmetry" - }, - "description": { - "translate": "advancement.create.wand_of_symmetry.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:wand_of_symmetry" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/pipe_collision.json b/src/generated/resources/data/create/advancements/water_supply.json similarity index 59% rename from src/generated/resources/data/create/advancements/pipe_collision.json rename to src/generated/resources/data/create/advancements/water_supply.json index a2ebbaecb..f2f237b37 100644 --- a/src/generated/resources/data/create/advancements/pipe_collision.json +++ b/src/generated/resources/data/create/advancements/water_supply.json @@ -2,13 +2,14 @@ "parent": "create:glass_pipe", "display": { "icon": { - "item": "create:fluid_valve" + "item": "minecraft:water_bucket" }, "title": { - "translate": "advancement.create.pipe_collision" + "translate": "advancement.create.water_supply" }, "description": { - "translate": "advancement.create.pipe_collision.desc" + "color": "#DBA213", + "translate": "advancement.create.water_supply.desc" }, "frame": "task", "show_toast": true, @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:pipe_collision", + "trigger": "create:water_supply_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/water_wheel.json b/src/generated/resources/data/create/advancements/water_wheel.json index 0467f4f52..9f1f04caf 100644 --- a/src/generated/resources/data/create/advancements/water_wheel.json +++ b/src/generated/resources/data/create/advancements/water_wheel.json @@ -8,6 +8,7 @@ "translate": "advancement.create.water_wheel" }, "description": { + "color": "#DBA213", "translate": "advancement.create.water_wheel.desc" }, "frame": "task", @@ -17,22 +18,13 @@ }, "criteria": { "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:water_wheel" - } - }, - "1": { - "trigger": "create:water_wheel", + "trigger": "create:water_wheel_builtin", "conditions": {} } }, "requirements": [ [ "0" - ], - [ - "1" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/windmill.json b/src/generated/resources/data/create/advancements/windmill.json index 03f6a428b..0bb4ff4a4 100644 --- a/src/generated/resources/data/create/advancements/windmill.json +++ b/src/generated/resources/data/create/advancements/windmill.json @@ -1,13 +1,14 @@ { - "parent": "create:andesite_alloy", + "parent": "create:water_wheel", "display": { "icon": { - "item": "create:windmill_bearing" + "item": "create:sail_frame" }, "title": { "translate": "advancement.create.windmill" }, "description": { + "color": "#DBA213", "translate": "advancement.create.windmill.desc" }, "frame": "task", @@ -17,7 +18,7 @@ }, "criteria": { "0": { - "trigger": "create:windmill", + "trigger": "create:windmill_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/its_alive.json b/src/generated/resources/data/create/advancements/windmill_maxed.json similarity index 50% rename from src/generated/resources/data/create/advancements/its_alive.json rename to src/generated/resources/data/create/advancements/windmill_maxed.json index 9f3bb5914..9bdc01ff4 100644 --- a/src/generated/resources/data/create/advancements/its_alive.json +++ b/src/generated/resources/data/create/advancements/windmill_maxed.json @@ -2,22 +2,23 @@ "parent": "create:andesite_alloy", "display": { "icon": { - "item": "create:cogwheel" + "item": "create:white_sail" }, "title": { - "translate": "advancement.create.its_alive" + "translate": "advancement.create.windmill_maxed" }, "description": { - "translate": "advancement.create.its_alive.desc" + "color": "#DBA213", + "translate": "advancement.create.windmill_maxed.desc" }, - "frame": "task", + "frame": "goal", "show_toast": true, - "announce_to_chat": false, + "announce_to_chat": true, "hidden": false }, "criteria": { "0": { - "trigger": "create:rotation", + "trigger": "create:windmill_maxed_builtin", "conditions": {} } }, diff --git a/src/generated/resources/data/create/advancements/wrench.json b/src/generated/resources/data/create/advancements/wrench_goggles.json similarity index 53% rename from src/generated/resources/data/create/advancements/wrench.json rename to src/generated/resources/data/create/advancements/wrench_goggles.json index 231f56ff0..b9f93b9c1 100644 --- a/src/generated/resources/data/create/advancements/wrench.json +++ b/src/generated/resources/data/create/advancements/wrench_goggles.json @@ -1,14 +1,15 @@ { - "parent": "create:its_alive", + "parent": "create:portable_storage_interface", "display": { "icon": { "item": "create:wrench" }, "title": { - "translate": "advancement.create.wrench" + "translate": "advancement.create.wrench_goggles" }, "description": { - "translate": "advancement.create.wrench.desc" + "color": "#DBA213", + "translate": "advancement.create.wrench_goggles.desc" }, "frame": "task", "show_toast": true, @@ -27,11 +28,26 @@ } ] } + }, + "1": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "create:goggles" + ] + } + ] + } } }, "requirements": [ [ "0" + ], + [ + "1" ] ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 700c1c135..bc15ddefa 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -134,6 +134,7 @@ public class Create { BuiltinPotatoProjectileTypes.register(); event.enqueueWork(() -> { + AllAdvancements.register(); AllTriggers.register(); SchematicProcessor.register(); AllWorldFeatures.registerFeatures(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java index af9076cb6..a3e06a424 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java +++ b/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java @@ -5,14 +5,11 @@ import java.util.Iterator; import java.util.Map; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; public class KineticNetwork { public Long id; public boolean initialized; - public boolean containsFlywheel; public Map sources; public Map members; @@ -25,7 +22,6 @@ public class KineticNetwork { public KineticNetwork() { sources = new HashMap<>(); members = new HashMap<>(); - containsFlywheel = false; } public void initFromTE(float maxStress, float currentStress, int members) { @@ -44,7 +40,6 @@ public class KineticNetwork { unloadedCapacity -= lastCapacity * getStressMultiplierForSpeed(te.getGeneratedSpeed()); float addedStressCapacity = te.calculateAddedStressCapacity(); sources.put(te, addedStressCapacity); - containsFlywheel |= te instanceof FlywheelTileEntity; } unloadedStress -= lastStress * getStressMultiplierForSpeed(te.getTheoreticalSpeed()); @@ -106,13 +101,7 @@ public class KineticNetwork { } private void updateFromNetwork(KineticTileEntity te) { - boolean wasOverStressed = te.isOverStressed(); te.updateFromNetwork(currentCapacity, currentStress, getSize()); - if (!wasOverStressed && te.isOverStressed() && te.getTheoreticalSpeed() != 0) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.OVERSTRESSED, te.getLevel(), te.getBlockPos(), 4); - if (containsFlywheel) - AllTriggers.triggerForNearbyPlayers(AllTriggers.OVERSTRESS_FLYWHEEL, te.getLevel(), te.getBlockPos(), 4); - } } public void updateCapacity() { @@ -143,7 +132,6 @@ public class KineticNetwork { public float calculateCapacity() { float presentCapacity = 0; - containsFlywheel = false; for (Iterator iterator = sources.keySet() .iterator(); iterator.hasNext();) { KineticTileEntity te = iterator.next(); @@ -152,7 +140,6 @@ public class KineticNetwork { iterator.remove(); continue; } - containsFlywheel |= te instanceof FlywheelTileEntity; presentCapacity += getActualCapacityOf(te); } float newMaxStress = presentCapacity + unloadedCapacity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java index b3cf6410e..95326d363 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.base; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.item.ItemDescription.Palette; import net.minecraft.core.BlockPos; @@ -43,7 +44,7 @@ public abstract class KineticBlock extends Block implements IRotate { kineticTileEntity.preventSpeedUpdate = 2; } } - + @Override public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) { return false; @@ -78,6 +79,7 @@ public abstract class KineticBlock extends Block implements IRotate { @Override public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + AdvancementBehaviour.setPlacedBy(worldIn, pos, placer); if (worldIn.isClientSide) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java index 170738eb1..4385eb3d0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java @@ -4,7 +4,6 @@ import java.util.Random; import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; @@ -102,7 +101,6 @@ public class KineticEffectHandler { particleSpeed *= Math.signum(speed); if (world instanceof ServerLevel) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.ROTATION, world, pos, 5); RotationIndicatorParticleData particleData = new RotationIndicatorParticleData(color, particleSpeed, radius1, radius2, 10, axisChar); ((ServerLevel) world).sendParticles(particleData, vec.x, vec.y, vec.z, 20, 0, 0, 0, 1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java index 2a8c478de..44811acee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java @@ -5,7 +5,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Debug; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -69,20 +68,23 @@ public class BlockBreakingMovementBehaviour implements MovementBehaviour { float damage = (float) Mth.clamp(6 * Math.pow(context.relativeMotion.length(), 0.4) + 1, 2, 10); entity.hurt(damageSource, damage); } - if (throwsEntities() && (world.isClientSide == (entity instanceof Player))) { - Vec3 motionBoost = context.motion.add(0, context.motion.length() / 4f, 0); - int maxBoost = 4; - if (motionBoost.length() > maxBoost) { - motionBoost = motionBoost.subtract(motionBoost.normalize() - .scale(motionBoost.length() - maxBoost)); - } - entity.setDeltaMovement(entity.getDeltaMovement() - .add(motionBoost)); - entity.hurtMarked = true; - } + if (throwsEntities() && (world.isClientSide == (entity instanceof Player))) + throwEntity(context, entity); } } + protected void throwEntity(MovementContext context, Entity entity) { + Vec3 motionBoost = context.motion.add(0, context.motion.length() / 4f, 0); + int maxBoost = 4; + if (motionBoost.length() > maxBoost) { + motionBoost = motionBoost.subtract(motionBoost.normalize() + .scale(motionBoost.length() - maxBoost)); + } + entity.setDeltaMovement(entity.getDeltaMovement() + .add(motionBoost)); + entity.hurtMarked = true; + } + protected DamageSource getDamageSource() { return null; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java index 462597266..1cca39d6b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java @@ -2,13 +2,16 @@ package com.simibubi.create.content.contraptions.components.actors; import com.simibubi.create.content.contraptions.components.actors.PloughBlock.PloughFakePlayer; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; import com.simibubi.create.content.logistics.trains.track.FakeTrackBlock; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.context.UseOnContext; @@ -16,6 +19,7 @@ import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.ClipContext.Block; import net.minecraft.world.level.ClipContext.Fluid; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AnvilBlock; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.BubbleColumnBlock; import net.minecraft.world.level.block.FarmBlock; @@ -24,6 +28,7 @@ import net.minecraft.world.level.block.NetherPortalBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult.Type; import net.minecraft.world.phys.Vec3; @@ -60,6 +65,21 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { new ItemStack(Items.DIAMOND_HOE).useOn(ctx); } + @Override + protected void throwEntity(MovementContext context, Entity entity) { + super.throwEntity(context, entity); + if (!(entity instanceof FallingBlockEntity fbe)) + return; + if (!(fbe.getBlockState() + .getBlock() instanceof AnvilBlock)) + return; + if (entity.getDeltaMovement() + .length() < 0.25f) + return; + entity.level.getEntitiesOfClass(Player.class, new AABB(entity.blockPosition()).inflate(32)) + .forEach(AllAdvancements.ANVIL_PLOUGH::awardTo); + } + @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(PloughBlock.FACING) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java index 954381dbb..9bda8441e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java @@ -4,12 +4,15 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -45,6 +48,12 @@ public class PortableStorageInterfaceBlock extends WrenchableDirectionalBlock withTileEntityDo(world, pos, PortableStorageInterfaceTileEntity::neighbourChanged); } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { Direction direction = context.getNearestLookingDirection(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java index 9fe25d2b2..eb7b54b60 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java @@ -4,6 +4,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -182,6 +183,7 @@ public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity public void onContentTransferred() { int timeUnit = getTransferTimeout(); transferTimer = timeUnit + ANIMATION; + award(AllAdvancements.PSI); sendData(); } @@ -190,6 +192,8 @@ public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity } @Override - public void addBehaviours(List behaviours) {} + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.PSI); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java index 2efaec4a4..802bf507f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java @@ -4,8 +4,11 @@ import static com.simibubi.create.foundation.utility.AngleHelper.deg; import static com.simibubi.create.foundation.utility.AngleHelper.getShortestAngleDiff; import static com.simibubi.create.foundation.utility.AngleHelper.rad; +import java.util.List; + import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -42,6 +45,12 @@ public class CuckooClockTileEntity extends KineticTileEntity { super(type, pos, state); animationType = Animation.NONE; } + + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.CUCKOO_CLOCK); + } @Override protected void read(CompoundTag compound, boolean clientPacket) { @@ -167,7 +176,7 @@ public class CuckooClockTileEntity extends KineticTileEntity { sendAnimationUpdate = true; if (animation == Animation.CREEPER) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CUCKOO, level, worldPosition, 10); + awardIfNear(AllAdvancements.CUCKOO_CLOCK, 32); sendData(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index f759aac8c..1028647db 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -15,6 +15,7 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput; import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; @@ -73,8 +74,7 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { ItemStack insertItem = super.insertItem(slot, stack, simulate); if (insertItem.getCount() != stack.getCount() && !simulate) te.getLevel() - .playSound(null, te.getBlockPos(), SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, .25f, - .5f); + .playSound(null, te.getBlockPos(), SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, .25f, .5f); return insertItem; } @@ -83,7 +83,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { protected Inventory inventory; protected GroupedItems groupedItems = new GroupedItems(); protected ConnectedInput input = new ConnectedInput(); - protected LazyOptional invSupplier = LazyOptional.of(() -> input.getItemHandler(level, worldPosition)); + protected LazyOptional invSupplier = + LazyOptional.of(() -> input.getItemHandler(level, worldPosition)); protected boolean reRender; protected Phase phase; protected int countDown; @@ -116,6 +117,17 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { .require(AllItems.WRENCH.get()); behaviours.add(inserting); behaviours.add(connectivity); + registerAwardables(behaviours, AllAdvancements.CRAFTER, AllAdvancements.CRAFTER_LAZY); + } + + @Override + public void onSpeedChanged(float previousSpeed) { + super.onSpeedChanged(previousSpeed); + if (!Mth.equal(getSpeed(), 0)) { + award(AllAdvancements.CRAFTER); + if (Math.abs(getSpeed()) < 5) + award(AllAdvancements.CRAFTER_LAZY); + } } public void blockChanged() { @@ -297,7 +309,7 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { groupedItems.mergeOnto(targetingCrafter.groupedItems, pointing); groupedItems = new GroupedItems(); - float pitch = targetingCrafter.groupedItems.grid.size() * 1/16f + .5f; + float pitch = targetingCrafter.groupedItems.grid.size() * 1 / 16f + .5f; AllSoundEvents.CRAFTER_CLICK.playOnServer(level, worldPosition, 1, pitch); phase = Phase.WAITING; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java index f73f98288..c2dfbcdeb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.config.AllConfigs; @@ -57,9 +58,13 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE te.turn(player.isShiftKeyDown())); player.causeFoodExhaustion(getRotationSpeed() * AllConfigs.SERVER.kinetics.crankHungerMultiplier.getF()); + + if (player.getFoodData() + .getFoodLevel() == 0) + AllAdvancements.HAND_CRANK.awardTo(player); + return InteractionResult.SUCCESS; } @@ -113,7 +118,7 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE getTileEntityClass() { return HandCrankTileEntity.class; } - + @Override public BlockEntityType getTileEntityType() { return AllTileEntities.HAND_CRANK.get(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java index 86499cb51..7bb3f606a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java @@ -5,7 +5,7 @@ import java.util.Random; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.utility.Iterate; @@ -18,7 +18,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.world.Difficulty; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; @@ -147,10 +146,15 @@ public class CrushingWheelControllerBlock extends DirectionalBlock implements IT if (neighbour.getValue(BlockStateProperties.AXIS) == d.getAxis()) continue; BlockEntity adjTe = world.getBlockEntity(pos.relative(d)); - if (!(adjTe instanceof KineticTileEntity)) + if (!(adjTe instanceof CrushingWheelTileEntity cwte)) continue; - te.crushingspeed = Math.abs(((KineticTileEntity) adjTe).getSpeed() / 50f); + te.crushingspeed = Math.abs(cwte.getSpeed() / 50f); te.sendData(); + + cwte.award(AllAdvancements.CRUSHING_WHEEL); + if (cwte.getSpeed() > 255) + cwte.award(AllAdvancements.CRUSHER_MAXED); + break; } }); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java index 2e8ad932a..7cedbe8ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java @@ -1,6 +1,10 @@ package com.simibubi.create.content.contraptions.components.crusher; +import java.util.List; + import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.BlockPos; @@ -27,6 +31,12 @@ public class CrushingWheelTileEntity extends KineticTileEntity { setLazyTickRate(20); } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.CRUSHING_WHEEL, AllAdvancements.CRUSHER_MAXED); + } + @Override public void onSpeedChanged(float prevSpeed) { super.onSpeedChanged(prevSpeed); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java index edf9e26fa..82b69aa97 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java @@ -5,6 +5,7 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl import java.util.List; import java.util.stream.Collectors; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; @@ -14,6 +15,8 @@ import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; @@ -92,7 +95,7 @@ public class BeltDeployerCallbacks { public static void activate(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, DeployerTileEntity deployerTileEntity, Recipe recipe) { - + List collect = InWorldProcessing.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(transported.stack, 1), recipe) .stream() @@ -110,14 +113,20 @@ public class BeltDeployerCallbacks { }) .collect(Collectors.toList()); + deployerTileEntity.award(AllAdvancements.DEPLOYER); + TransportedItemStack left = transported.copy(); deployerTileEntity.player.spawnedItemEffects = transported.stack.copy(); left.stack.shrink(1); + ItemStack resultItem = null; - if (collect.isEmpty()) + if (collect.isEmpty()) { + resultItem = left.stack.copy(); handler.handleProcessingOnItem(transported, TransportedResult.convertTo(left)); - else + } else { + resultItem = collect.get(0).stack.copy(); handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(collect, left)); + } ItemStack heldItem = deployerTileEntity.player.getMainHandItem(); boolean unbreakable = heldItem.hasTag() && heldItem.getTag() @@ -133,6 +142,9 @@ public class BeltDeployerCallbacks { heldItem.shrink(1); } + if (resultItem != null && !resultItem.isEmpty()) + awardAdvancements(deployerTileEntity, resultItem); + BlockPos pos = deployerTileEntity.getBlockPos(); Level world = deployerTileEntity.getLevel(); if (heldItem.isEmpty()) @@ -144,4 +156,21 @@ public class BeltDeployerCallbacks { deployerTileEntity.sendData(); } + private static void awardAdvancements(DeployerTileEntity deployerTileEntity, ItemStack created) { + CreateAdvancement advancement = null; + + if (AllBlocks.ANDESITE_CASING.isIn(created)) + advancement = AllAdvancements.ANDESITE_CASING; + else if (AllBlocks.BRASS_CASING.isIn(created)) + advancement = AllAdvancements.BRASS_CASING; + else if (AllBlocks.COPPER_CASING.isIn(created)) + advancement = AllAdvancements.COPPER_CASING; + else if (AllBlocks.RAILWAY_CASING.isIn(created)) + advancement = AllAdvancements.TRAIN_CASING; + else + return; + + deployerTileEntity.award(advancement); + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java index e3c7896b3..24d2ee65b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java @@ -64,7 +64,8 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE { if (te.player != null && !isMoving) { - te.player.getInventory().dropAll(); + te.player.getInventory() + .dropAll(); te.overflowItems.forEach(itemstack -> te.player.drop(itemstack, true, false)); te.player.discard(); te.player = null; @@ -107,7 +108,7 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE getTileEntityClass() { return DeployerTileEntity.class; } - + @Override public BlockEntityType getTileEntityType() { return AllTileEntities.DEPLOYER.get(); @@ -120,8 +121,8 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE blockBreakingProgress; ItemStack spawnedItemEffects; + public boolean placedTracks; public DeployerFakePlayer(ServerLevel world) { super(world, DEPLOYER_PROFILE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index e32c2a01f..fd663810b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -17,6 +17,7 @@ import com.simibubi.create.content.contraptions.components.deployer.DeployerTile import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlockItem; import com.simibubi.create.content.curiosities.tools.SandPaperItem; +import com.simibubi.create.content.logistics.trains.ITrackBlock; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; @@ -41,6 +42,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.npc.AbstractVillager; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Item; @@ -66,6 +68,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.common.extensions.IForgeBaseRailBlock; import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock; import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock; import net.minecraftforge.eventbus.api.Event; @@ -179,8 +182,8 @@ public class DeployerHandler { } if (!success && stack.isEdible() && entity instanceof Player) { Player playerEntity = (Player) entity; - if (playerEntity.canEat(item.getFoodProperties() - .canAlwaysEat())) { + FoodProperties foodProperties = item.getFoodProperties(stack, player); + if (playerEntity.canEat(foodProperties.canAlwaysEat())) { playerEntity.eat(world, stack); player.spawnedItemEffects = stack.copy(); success = true; @@ -309,8 +312,12 @@ public class DeployerHandler { // 'Inert' item use behaviour & block placement InteractionResult onItemUse = stack.useOn(itemusecontext); - if (onItemUse.consumesAction()) + if (onItemUse.consumesAction()) { + if (stack.getItem() instanceof BlockItem bi + && (bi.getBlock() instanceof IForgeBaseRailBlock || bi.getBlock() instanceof ITrackBlock)) + player.placedTracks = true; return; + } if (item == Items.ENDER_PEARL) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java index 4733a6b3a..466167549 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java @@ -95,8 +95,12 @@ public class DeployerInstance extends ShaftInstance implements DynamicInstance, } private float getProgress(float partialTicks) { - if (tile.state == DeployerTileEntity.State.EXPANDING) - return 1 - (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; + if (tile.state == DeployerTileEntity.State.EXPANDING) { + float f = 1 - (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; + if (tile.fistBump) + f *= f; + return f; + } if (tile.state == DeployerTileEntity.State.RETRACTING) return (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; return 0; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index 7e8685195..b3e05b4d6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -8,7 +8,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; @@ -18,14 +17,17 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Abs import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.components.structureMovement.render.FlwContraption; import com.simibubi.create.content.logistics.item.filter.FilterItem; +import com.simibubi.create.content.logistics.trains.entity.CarriageContraption; import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.SchematicWorld; import com.simibubi.create.content.schematics.filtering.SchematicInstances; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockHelper; @@ -101,8 +103,13 @@ public class DeployerMovementBehaviour implements MovementBehaviour { player.setYRot(AbstractContraptionEntity.yawFromVector(facingVec)); player.setXRot(xRot); + player.placedTracks = false; DeployerHandler.activate(player, vec, pos, facingVec, mode); + + if ((context.contraption instanceof MountedContraption || context.contraption instanceof CarriageContraption) + && player.placedTracks && context.tileData != null && context.tileData.contains("Owner")) + AllAdvancements.SELF_DEPLOYING.awardTo(world.getPlayerByUUID(context.tileData.getUUID("Owner"))); } protected void activateAsSchematicPrinter(MovementContext context, BlockPos pos, DeployerFakePlayer player, diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 114bd2667..72ad80ce4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.deployer; import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.annotation.Nullable; @@ -15,7 +16,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.curiosities.tools.SandPaperItem; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe.SandPaperInv; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; @@ -32,7 +33,8 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.InteractionHand; @@ -65,7 +67,7 @@ public class DeployerTileEntity extends KineticTileEntity { protected DeployerFakePlayer player; protected int timer; protected float reach; - protected boolean boop = false; + protected boolean fistBump = false; protected List overflowItems = new ArrayList<>(); protected FilteringBehaviour filtering; protected boolean redstoneLocked; @@ -103,6 +105,10 @@ public class DeployerTileEntity extends KineticTileEntity { new BeltProcessingBehaviour(this).whenItemEnters((s, i) -> BeltDeployerCallbacks.onItemReceived(s, i, this)) .whileItemHeld((s, i) -> BeltDeployerCallbacks.whenItemHeld(s, i, this)); behaviours.add(processingBehaviour); + + registerAwardables(behaviours, AllAdvancements.TRAIN_CASING, AllAdvancements.ANDESITE_CASING, + AllAdvancements.BRASS_CASING, AllAdvancements.COPPER_CASING, AllAdvancements.FIST_BUMP, + AllAdvancements.DEPLOYER, AllAdvancements.SELF_DEPLOYING); } @Override @@ -194,7 +200,7 @@ public class DeployerTileEntity extends KineticTileEntity { } // Check for advancement conditions - if (mode == Mode.PUNCH && !boop && startBoop(facing)) + if (mode == Mode.PUNCH && !fistBump && startFistBump(facing)) return; if (redstoneLocked) return; @@ -204,8 +210,8 @@ public class DeployerTileEntity extends KineticTileEntity { } if (state == State.EXPANDING) { - if (boop) - triggerBoop(); + if (fistBump) + triggerFistBump(); activate(); state = State.RETRACTING; @@ -239,51 +245,73 @@ public class DeployerTileEntity extends KineticTileEntity { sendData(); } - public boolean startBoop(Direction facing) { - if (!level.isEmptyBlock(worldPosition.relative(facing, 1)) - || !level.isEmptyBlock(worldPosition.relative(facing, 2))) - return false; - BlockPos otherDeployer = worldPosition.relative(facing, 4); - if (!level.isLoaded(otherDeployer)) - return false; - BlockEntity otherTile = level.getBlockEntity(otherDeployer); - if (!(otherTile instanceof DeployerTileEntity)) - return false; - DeployerTileEntity deployerTile = (DeployerTileEntity) otherTile; - if (level.getBlockState(otherDeployer) - .getValue(FACING) - .getOpposite() != facing || deployerTile.mode != Mode.PUNCH) + public boolean startFistBump(Direction facing) { + int i = 0; + DeployerTileEntity partner = null; + + for (i = 2; i < 5; i++) { + BlockPos otherDeployer = worldPosition.relative(facing, i); + if (!level.isLoaded(otherDeployer)) + return false; + BlockEntity otherTile = level.getBlockEntity(otherDeployer); + if (otherTile instanceof DeployerTileEntity dpe) { + partner = dpe; + break; + } + } + + if (partner == null) return false; - boop = true; - reach = 1f; - timer = 1000; - state = State.EXPANDING; - sendData(); + if (level.getBlockState(partner.getBlockPos()) + .getValue(FACING) + .getOpposite() != facing || partner.mode != Mode.PUNCH) + return false; + if (partner.getSpeed() == 0) + return false; + + for (DeployerTileEntity te : Arrays.asList(this, partner)) { + te.fistBump = true; + te.reach = ((i - 2)) * .5f; + te.timer = 1000; + te.state = State.EXPANDING; + te.sendData(); + } + return true; } - public void triggerBoop() { - BlockEntity otherTile = level.getBlockEntity(worldPosition.relative(getBlockState().getValue(FACING), 4)); - if (!(otherTile instanceof DeployerTileEntity)) - return; + public void triggerFistBump() { + int i = 0; + DeployerTileEntity deployerTile = null; + for (i = 2; i < 5; i++) { + BlockPos pos = worldPosition.relative(getBlockState().getValue(FACING), i); + if (!level.isLoaded(pos)) + return; + if (level.getBlockEntity(pos) instanceof DeployerTileEntity dpe) { + deployerTile = dpe; + break; + } + } - DeployerTileEntity deployerTile = (DeployerTileEntity) otherTile; - if (!deployerTile.boop || deployerTile.state != State.EXPANDING) + if (deployerTile == null) + return; + if (!deployerTile.fistBump || deployerTile.state != State.EXPANDING) return; if (deployerTile.timer > 0) return; - // everything should be met - boop = false; - deployerTile.boop = false; + fistBump = false; + deployerTile.fistBump = false; deployerTile.state = State.RETRACTING; deployerTile.timer = 1000; deployerTile.sendData(); + award(AllAdvancements.FIST_BUMP); - // award nearby players - List players = level.getEntitiesOfClass(ServerPlayer.class, new AABB(worldPosition).inflate(9)); - players.forEach(AllTriggers.DEPLOYER_BOOP::trigger); + BlockPos soundLocation = new BlockPos(Vec3.atCenterOf(worldPosition) + .add(Vec3.atCenterOf(deployerTile.getBlockPos())) + .scale(.5f)); + level.playSound(null, soundLocation, SoundEvents.PLAYER_ATTACK_NODAMAGE, SoundSource.BLOCKS, .75f, .75f); } protected void activate() { @@ -299,6 +327,8 @@ public class DeployerTileEntity extends KineticTileEntity { return; // Belt processing handled in BeltDeployerCallbacks DeployerHandler.activate(player, center, clickedPos, movementVector, mode); + award(AllAdvancements.DEPLOYER); + if (player != null) heldItem = player.getMainHandItem(); } @@ -325,6 +355,7 @@ public class DeployerTileEntity extends KineticTileEntity { if (!clientPacket) return; + fistBump = compound.getBoolean("Fistbump"); reach = compound.getFloat("Reach"); if (compound.contains("Particle")) { ItemStack particleStack = ItemStack.of(compound.getCompound("Particle")); @@ -356,6 +387,7 @@ public class DeployerTileEntity extends KineticTileEntity { if (!clientPacket) return; + compound.putBoolean("Fistbump", fistBump); compound.putFloat("Reach", reach); if (player == null) return; @@ -436,8 +468,11 @@ public class DeployerTileEntity extends KineticTileEntity { int timerSpeed = getTimerSpeed(); PartialModel handPose = getHandPose(); - if (state == State.EXPANDING) + if (state == State.EXPANDING) { progress = 1 - (timer - partialTicks * timerSpeed) / 1000f; + if (fistBump) + progress *= progress; + } if (state == State.RETRACTING) progress = (timer - partialTicks * timerSpeed) / 1000f; float handLength = handPose == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0 diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java index 32a656382..663d18a84 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/ManualApplicationRecipe.java @@ -3,11 +3,14 @@ package com.simibubi.create.content.contraptions.components.deployer; import java.util.List; import java.util.Optional; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.utility.BlockHelper; import net.minecraft.core.BlockPos; @@ -16,6 +19,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; @@ -65,7 +69,9 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe { level.playSound(null, pos, SoundEvents.COPPER_BREAK, SoundSource.PLAYERS, 1, 1.45f); ManualApplicationRecipe recipe = (ManualApplicationRecipe) foundRecipe.get(); level.destroyBlock(pos, false); - level.setBlock(pos, recipe.transformBlock(blockState), 3); + + BlockState transformedBlock = recipe.transformBlock(blockState); + level.setBlock(pos, transformedBlock, 3); recipe.rollResults() .forEach(stack -> Block.popResource(level, pos, stack)); @@ -80,10 +86,29 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe { heldItem.shrink(1); } + awardAdvancements(event.getPlayer(), transformedBlock); + event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); } + private static void awardAdvancements(Player player, BlockState placed) { + CreateAdvancement advancement = null; + + if (AllBlocks.ANDESITE_CASING.has(placed)) + advancement = AllAdvancements.ANDESITE_CASING; + else if (AllBlocks.BRASS_CASING.has(placed)) + advancement = AllAdvancements.BRASS_CASING; + else if (AllBlocks.COPPER_CASING.has(placed)) + advancement = AllAdvancements.COPPER_CASING; + else if (AllBlocks.RAILWAY_CASING.has(placed)) + advancement = AllAdvancements.TRAIN_CASING; + else + return; + + advancement.awardTo(player); + } + public ManualApplicationRecipe(ProcessingRecipeParams params) { super(AllRecipeTypes.ITEM_APPLICATION, params); } @@ -111,7 +136,7 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe { public BlockState transformBlock(BlockState in) { ProcessingOutput mainOutput = results.get(0); ItemStack output = mainOutput.rollOutput(); - if (output.getItem()instanceof BlockItem bi) + if (output.getItem() instanceof BlockItem bi) return BlockHelper.copyProperties(in, bi.getBlock() .defaultBlockState()); return Blocks.AIR.defaultBlockState(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java index f64220fdd..7a68fc804 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java @@ -10,7 +10,7 @@ import com.simibubi.create.AllTags; import com.simibubi.create.content.contraptions.particle.AirFlowParticleData; import com.simibubi.create.content.contraptions.processing.InWorldProcessing; import com.simibubi.create.content.contraptions.processing.InWorldProcessing.Type; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; @@ -111,12 +111,9 @@ public class AirCurrent { entityDistance -= .5f; InWorldProcessing.Type processingType = getSegmentAt((float) entityDistance); - if (entity instanceof ServerPlayer) - AllTriggers.triggerFor(AllTriggers.FAN_PROCESSING.constructTriggerFor(processingType), (Player) entity); - if (processingType == null || processingType == Type.NONE) { + if (processingType == null || processingType == Type.NONE) continue; - } if (entity instanceof ItemEntity itemEntity) { if (world.isClientSide) { @@ -124,7 +121,9 @@ public class AirCurrent { continue; } if (InWorldProcessing.canProcess(itemEntity, processingType)) - InWorldProcessing.applyProcessing(itemEntity, processingType); + if (InWorldProcessing.applyProcessing(itemEntity, processingType) + && source instanceof EncasedFanTileEntity fan) + fan.award(AllAdvancements.FAN_PROCESSING); continue; } @@ -288,7 +287,10 @@ public class AirCurrent { processingType.spawnParticlesForProcessing(world, handler.getWorldPositionOf(transported)); return TransportedResult.doNothing(); } - return InWorldProcessing.applyProcessing(transported, world, processingType); + TransportedResult applyProcessing = InWorldProcessing.applyProcessing(transported, world, processingType); + if (!applyProcessing.doesNothing() && source instanceof EncasedFanTileEntity fan) + fan.award(AllAdvancements.FAN_PROCESSING); + return applyProcessing; }); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java index 7ddba143b..e93c63f5e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java @@ -1,10 +1,14 @@ package com.simibubi.create.content.contraptions.components.fan; +import java.util.List; + import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -30,6 +34,12 @@ public class EncasedFanTileEntity extends KineticTileEntity implements IAirCurre updateAirFlow = true; } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.ENCASED_FAN, AllAdvancements.FAN_PROCESSING); + } + @Override protected void read(CompoundTag compound, boolean clientPacket) { super.read(compound, clientPacket); @@ -119,6 +129,8 @@ public class EncasedFanTileEntity extends KineticTileEntity implements IAirCurre if (updateAirFlow) { updateAirFlow = false; airCurrent.rebuild(); + if (airCurrent.maxDistance > 0) + award(AllAdvancements.ENCASED_FAN); sendData(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java index 318b572bb..65527e345 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java @@ -5,6 +5,7 @@ import java.util.Optional; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.sound.SoundScapes; import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -51,6 +52,7 @@ public class MillstoneTileEntity extends KineticTileEntity { public void addBehaviours(List behaviours) { behaviours.add(new DirectBeltInputBehaviour(this)); super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.MILLSTONE); } @Override @@ -134,6 +136,8 @@ public class MillstoneTileEntity extends KineticTileEntity { inputInv.setStackInSlot(0, stackInSlot); lastRecipe.rollResults() .forEach(stack -> ItemHandlerHelper.insertItemStacked(outputInv, stack, false)); + award(AllAdvancements.MILLSTONE); + sendData(); setChanged(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index b1d090624..c36e0da53 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -11,10 +11,11 @@ import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipe import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.SmartInventory; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -91,6 +92,12 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { return speed / 2; } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.MIXER); + } + @Override protected AABB createRenderBoundingBox() { return new AABB(worldPosition).expandTowards(0, -1.5, 0); @@ -279,8 +286,8 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { } @Override - protected Optional getProcessedRecipeTrigger() { - return Optional.of(AllTriggers.MIXER_MIX); + protected Optional getProcessedRecipeTrigger() { + return Optional.of(AllAdvancements.MIXER); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index d18cffdeb..0fb8b8b73 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.press; import java.util.List; import java.util.Optional; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; @@ -13,8 +14,9 @@ import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEnt import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.content.contraptions.processing.InWorldProcessing; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.SmartInventory; @@ -23,6 +25,7 @@ import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.Container; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; @@ -42,6 +45,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen private static final Object compressingRecipesKey = new Object(); public PressingBehaviour pressingBehaviour; + private int tracksCreated; public MechanicalPressTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -58,6 +62,19 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen super.addBehaviours(behaviours); pressingBehaviour = new PressingBehaviour(this); behaviours.add(pressingBehaviour); + + registerAwardables(behaviours, AllAdvancements.PRESS, AllAdvancements.COMPACTING, + AllAdvancements.TRACK_CRAFTING); + } + + public void onItemPressed(ItemStack result) { + award(AllAdvancements.PRESS); + if (AllBlocks.TRACK.isIn(result)) + tracksCreated += result.getCount(); + if (tracksCreated >= 1000) { + award(AllAdvancements.TRACK_CRAFTING); + tracksCreated = 0; + } } public PressingBehaviour getPressingBehaviour() { @@ -83,6 +100,19 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen return true; } + @Override + protected void write(CompoundTag compound, boolean clientPacket) { + super.write(compound, clientPacket); + if (getBehaviour(AdvancementBehaviour.TYPE).isOwnerPresent()) + compound.putInt("TracksCreated", tracksCreated); + } + + @Override + protected void read(CompoundTag compound, boolean clientPacket) { + super.read(compound, clientPacket); + tracksCreated = compound.getInt("TracksCreated"); + } + @Override public boolean tryProcessInWorld(ItemEntity itemEntity, boolean simulate) { ItemStack item = itemEntity.getItem(); @@ -92,12 +122,17 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen if (simulate) return true; + ItemStack itemCreated = ItemStack.EMPTY; pressingBehaviour.particleItems.add(item); if (canProcessInBulk() || item.getCount() == 1) { InWorldProcessing.applyRecipeOn(itemEntity, recipe.get()); + itemCreated = itemEntity.getItem() + .copy(); } else { for (ItemStack result : InWorldProcessing.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(item, 1), recipe.get())) { + if (itemCreated.isEmpty()) + itemCreated = result.copy(); ItemEntity created = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), result); created.setDefaultPickUpDelay(); @@ -107,7 +142,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen item.shrink(1); } - AllTriggers.triggerForNearbyPlayers(AllTriggers.BONK, level, worldPosition, 4); + if (!itemCreated.isEmpty()) + onItemPressed(itemCreated); return true; } @@ -119,9 +155,17 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen if (simulate) return true; pressingBehaviour.particleItems.add(input.stack); - outputList.addAll(InWorldProcessing.applyRecipeOn( - canProcessInBulk() ? input.stack : ItemHandlerHelper.copyStackWithSize(input.stack, 1), recipe.get())); - AllTriggers.triggerForNearbyPlayers(AllTriggers.BONK, level, worldPosition, 4); + List outputs = InWorldProcessing.applyRecipeOn( + canProcessInBulk() ? input.stack : ItemHandlerHelper.copyStackWithSize(input.stack, 1), recipe.get()); + + for (ItemStack created : outputs) { + if (!created.isEmpty()) { + onItemPressed(created); + break; + } + } + + outputList.addAll(outputs); return true; } @@ -175,7 +219,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen protected Object getRecipeCacheKey() { return compressingRecipesKey; } - + @Override public int getParticleAmount() { return 15; @@ -203,8 +247,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity implemen } @Override - protected Optional getProcessedRecipeTrigger() { - return Optional.of(AllTriggers.PRESS_COMPACT); + protected Optional getProcessedRecipeTrigger() { + return Optional.of(AllAdvancements.COMPACTING); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java index d1f34a84f..4a02a5415 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java @@ -19,6 +19,7 @@ import com.simibubi.create.AllTags; import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -99,6 +100,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { filtering = new FilteringBehaviour(this, new SawFilterSlot()).forRecipes(); behaviours.add(filtering); behaviours.add(new DirectBeltInputBehaviour(this).allowingBeltFunnelsWhen(this::canProcess)); + registerAwardables(behaviours, AllAdvancements.SAW_PROCESSING); } @Override @@ -344,10 +346,11 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { ItemHelper.addToList(stack, list); } } - for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) { + + for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) inventory.setStackInSlot(slot + 1, list.get(slot)); - } + award(AllAdvancements.SAW_PROCESSING); } private List> getRecipes() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineBlock.java index b59de275e..94552ad74 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineBlock.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.placement.IPlacementHelper; @@ -22,6 +23,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -58,6 +60,12 @@ public class SteamEngineBlock extends FaceAttachedHorizontalDirectionalBlock super.createBlockStateDefinition(pBuilder.add(FACE, FACING, WATERLOGGED)); } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { return canAttach(pLevel, pPos, getConnectedDirection(pState).getOpposite()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java index 621d00d91..d97719372 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/SteamEngineTileEntity.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.AngleHelper; @@ -46,7 +47,9 @@ public class SteamEngineTileEntity extends SmartTileEntity implements IHaveGoggl } @Override - public void addBehaviours(List behaviours) {} + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.STEAM_ENGINE); + } @Override public void tick() { @@ -71,6 +74,9 @@ public class SteamEngineTileEntity extends SmartTileEntity implements IHaveGoggl facing = blockState.getValue(SteamEngineBlock.FACING); float efficiency = Mth.clamp(tank.boiler.getEngineEfficiency(tank.getTotalTankSize()), 0, 1); + if (efficiency > 0) + award(AllAdvancements.STEAM_ENGINE); + int conveyedSpeedLevel = efficiency == 0 ? 1 : verticalTarget ? 1 : (int) GeneratingKineticTileEntity.convertToDirection(1, facing); if (targetAxis == Axis.Z) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleBlock.java index 3fcadf4bb..15b2225e4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleBlock.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock.WhistleExtenderShape; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Lang; @@ -21,6 +22,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -70,6 +72,12 @@ public class WhistleBlock extends Block implements ITE, IWren .setValue(SIZE, WhistleSize.MEDIUM)); } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { return FluidTankBlock.isTank(pLevel.getBlockState(pPos.relative(getAttachedDirection(pState)))); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java index 3e16007f7..a501bcb0e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.components.steam.whistle.Whistle import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock.WhistleExtenderShape; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.AngleHelper; @@ -46,7 +47,9 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf } @Override - public void addBehaviours(List behaviours) {} + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.STEAM_WHISTLE); + } public void updatePitch() { BlockPos currentPos = worldPosition.above(); @@ -63,14 +66,22 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf } if (prevPitch == pitch) return; + notifyUpdate(); + + FluidTankTileEntity tank = getTank(); + if (tank != null && tank.boiler != null) + tank.boiler.checkPipeOrganAdvancement(tank); } @Override public void tick() { super.tick(); - if (!level.isClientSide()) + if (!level.isClientSide()) { + if (isPowered()) + award(AllAdvancements.STEAM_WHISTLE); return; + } FluidTankTileEntity tank = getTank(); boolean powered = isPowered() && tank != null && tank.boiler.isActive() @@ -155,6 +166,12 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z); } + public int getPitchId() { + return pitch + 100 * getBlockState().getOptionalValue(WhistleBlock.SIZE) + .orElse(WhistleSize.MEDIUM) + .ordinal(); + } + public FluidTankTileEntity getTank() { FluidTankTileEntity tank = source.get(); if (tank == null || tank.isRemoved()) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index 47451d073..aabb27563 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -168,7 +168,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit callback.accept(passenger, transformedVector.x, transformedVector.y + SeatEntity.getCustomEntitySeatOffset(passenger) - 1 / 8f, transformedVector.z); } - + protected Vec3 getPassengerPosition(Entity passenger, float partialTicks) { UUID id = passenger.getUUID(); if (passenger instanceof OrientedContraptionEntity) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index ca5b45a2c..601272f14 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -30,6 +30,8 @@ import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.components.actors.BlockBreakingMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.SeatBlock; import com.simibubi.create.content.contraptions.components.actors.SeatEntity; import com.simibubi.create.content.contraptions.components.steam.PoweredShaftTileEntity; @@ -1318,4 +1320,13 @@ public abstract class Contraption { storage.entityTick(entity); } + public boolean containsBlockBreakers() { + for (MutablePair pair : actors) { + MovementBehaviour behaviour = AllMovementBehaviours.of(pair.getLeft().state); + if (behaviour instanceof BlockBreakingMovementBehaviour || behaviour instanceof HarvesterMovementBehaviour) + return true; + } + return false; + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index a9c0ce257..d2710170e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -18,6 +18,7 @@ import com.simibubi.create.content.contraptions.components.actors.HarvesterMovem import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity.ContraptionRotationState; import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.collision.ContinuousOBBCollider.ContinuousSeparationManifold; import com.simibubi.create.foundation.collision.Matrix3d; import com.simibubi.create.foundation.collision.OrientedBB; @@ -347,6 +348,10 @@ public class ContraptionCollider { entity.hurt(pSource, (int) (damage * 16)); world.playSound(null, entity.blockPosition(), SoundEvents.PLAYER_ATTACK_CRIT, SoundSource.NEUTRAL, 1, .75f); + if (!entity.isAlive()) + contraptionEntity.getControllingPlayer() + .map(world::getPlayerByUUID) + .ifPresent(AllAdvancements.TRAIN_ROADKILL::awardTo); } Vec3 added = entityMotion.add(contraptionMotion.multiply(1, 0, 1) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java index 82e1cb253..0437622ed 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.WorldAttached; @@ -16,6 +17,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; @@ -68,6 +70,14 @@ public class ContraptionHandler { entityLiving.teleportTo(position.x, position.y, position.z); data.remove("ContraptionDismountLocation"); entityLiving.setOnGround(false); + + if (!data.contains("ContraptionMountLocation")) + return; + Vec3 prevPosition = VecHelper.readNBT(data.getList("ContraptionMountLocation", Tag.TAG_DOUBLE)); + data.remove("ContraptionMountLocation"); + + if (entityLiving instanceof Player player && !prevPosition.closerThan(position, 5000)) + AllAdvancements.LONG_TRAVEL.awardTo(player); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index bd1ddb2b4..4f3cd05dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Ass import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption.HandType; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; @@ -57,6 +57,7 @@ public class ClockworkBearingTileEntity extends KineticTileEntity Lang.translate("contraptions.clockwork.clock_hands"), this, getMovementModeSlot()); operationMode.requiresWrench(); behaviours.add(operationMode); + registerAwardables(behaviours, AllAdvancements.CLOCKWORK_BEARING); } @Override @@ -177,23 +178,25 @@ public class ClockworkBearingTileEntity extends KineticTileEntity } protected float getHourTarget(boolean cycle24) { - boolean isNatural = level.dimensionType().natural(); + boolean isNatural = level.dimensionType() + .natural(); int dayTime = (int) ((level.getDayTime() * (isNatural ? 1 : 24)) % 24000); int hours = (dayTime / 1000 + 6) % 24; int offset = getBlockState().getValue(ClockworkBearingBlock.FACING) - .getAxisDirection() - .getStep(); + .getAxisDirection() + .getStep(); float hourTarget = (float) (offset * -360 / (cycle24 ? 24f : 12f) * (hours % (cycle24 ? 24 : 12))); return hourTarget; } protected float getMinuteTarget() { - boolean isNatural = level.dimensionType().natural(); + boolean isNatural = level.dimensionType() + .natural(); int dayTime = (int) ((level.getDayTime() * (isNatural ? 1 : 24)) % 24000); int minutes = (dayTime % 1000) * 60 / 1000; int offset = getBlockState().getValue(ClockworkBearingBlock.FACING) - .getAxisDirection() - .getStep(); + .getAxisDirection() + .getStep(); float minuteTarget = (float) (offset * -360 / 60f * (minutes)); return minuteTarget; } @@ -238,8 +241,10 @@ public class ClockworkBearingTileEntity extends KineticTileEntity hourHand.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); hourHand.setRotationAxis(direction.getAxis()); level.addFreshEntity(hourHand); - - AllTriggers.triggerForNearbyPlayers(AllTriggers.CLOCKWORK_BEARING, level, worldPosition, 5); + + if (contraption.getLeft() + .containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); if (contraption.getRight() != null) { anchor = worldPosition.relative(direction, contraption.getRight().offset + 1); @@ -249,7 +254,13 @@ public class ClockworkBearingTileEntity extends KineticTileEntity minuteHand.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); minuteHand.setRotationAxis(direction.getAxis()); level.addFreshEntity(minuteHand); + + if (contraption.getRight() + .containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); } + + award(AllAdvancements.CLOCKWORK_BEARING); // Run running = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 8618c2d62..f0de28ec4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Abs import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; @@ -55,6 +55,7 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity this, getMovementModeSlot()); movementMode.requiresWrench(); behaviours.add(movementMode); + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); } @Override @@ -164,9 +165,9 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity } if (isWindmill()) - AllTriggers.triggerForNearbyPlayers(AllTriggers.WINDMILL, level, worldPosition, 5); + award(AllAdvancements.WINDMILL); if (contraption.getSailBlocks() >= 16 * 8) - AllTriggers.triggerForNearbyPlayers(AllTriggers.MAXED_WINDMILL, level, worldPosition, 5); + award(AllAdvancements.WINDMILL_MAXED); contraption.removeBlocksFromWorld(level, BlockPos.ZERO); movedContraption = ControlledContraptionEntity.create(level, this, contraption); @@ -176,6 +177,9 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity level.addFreshEntity(movedContraption); AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(level, worldPosition); + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); running = true; angle = 0; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java index d66a7331c..bea854b50 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be import java.util.List; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -104,6 +105,7 @@ public class WindmillBearingTileEntity extends MechanicalBearingTileEntity { movementDirection.requiresWrench(); movementDirection.withCallback($ -> onDirectionChanged()); behaviours.add(movementDirection); + registerAwardables(behaviours, AllAdvancements.WINDMILL, AllAdvancements.WINDMILL_MAXED); } private void onDirectionChanged() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java index da1ef0c91..79e7c7c72 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gantry; +import java.util.List; + import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -8,6 +10,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -25,6 +29,12 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp public GantryCarriageTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { super(typeIn, pos, state); } + + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); + } @Override public void onSpeedChanged(float previousSpeed) { @@ -100,6 +110,9 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp if (ContraptionCollider.isCollidingWithWorld(level, contraption, worldPosition.relative(movementDirection), movementDirection)) return; + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); contraption.removeBlocksFromWorld(level, BlockPos.ZERO); GantryContraptionEntity movedContraption = diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionPacket.java index 2d4c9faa4..ddc5b49ea 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionPacket.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gl import java.util.Set; import java.util.function.Supplier; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.networking.SimplePacketBase; import net.minecraft.core.BlockPos; @@ -60,6 +61,8 @@ public class SuperGlueSelectionPacket extends SimplePacketBase { SuperGlueEntity entity = new SuperGlueEntity(player.level, bb); player.level.addFreshEntity(entity); entity.spawnParticles(); + + AllAdvancements.SUPER_GLUE.awardTo(player); }); ctx.setPacketHandled(true); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/HonkPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/HonkPacket.java index d2ad3c094..4dac38aa9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/HonkPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/HonkPacket.java @@ -5,6 +5,7 @@ import java.util.function.Supplier; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.entity.Train; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.SimplePacketBase; @@ -51,8 +52,10 @@ public class HonkPacket extends SimplePacketBase { train.honkTicks = train.honkTicks == 0 ? 20 : 13; else train.honkTicks = train.honkTicks > 5 ? 6 : 0; - } else + } else { + AllAdvancements.TRAIN_WHISTLE.awardTo(sender); AllPackets.channel.send(PacketDistributor.ALL.noArg(), new HonkPacket(train, isHonk)); + } }); c.setPacketHandled(true); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java index 2f2c3889c..a2ddd7156 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java @@ -49,8 +49,8 @@ public class TrainHUD { else currentPrompt = null; - displayedPromptSize.chase(currentPrompt != null ? Minecraft.getInstance().font.width(currentPrompt) + 17 : 0, - .5f, Chaser.EXP); + Minecraft mc = Minecraft.getInstance(); + displayedPromptSize.chase(currentPrompt != null ? mc.font.width(currentPrompt) + 17 : 0, .5f, Chaser.EXP); displayedPromptSize.tickChaser(); Carriage carriage = getCarriage(); @@ -67,12 +67,15 @@ public class TrainHUD { displayedThrottle.chase(editedThrottle != null ? editedThrottle : train.throttle, .75f, Chaser.EXP); displayedThrottle.tickChaser(); - boolean isSprintKeyPressed = ControlsUtil.isActuallyPressed(Minecraft.getInstance().options.keySprint); + boolean isSprintKeyPressed = ControlsUtil.isActuallyPressed(mc.options.keySprint); if (isSprintKeyPressed && honkPacketCooldown-- <= 0) { - AllPackets.channel.sendToServer(new HonkPacket.Serverbound(train, true)); - honkPacketCooldown = 5; - usedToHonk = true; + train.determineHonk(mc.level); + if (train.lowHonk != null) { + AllPackets.channel.sendToServer(new HonkPacket.Serverbound(train, true)); + honkPacketCooldown = 5; + usedToHonk = true; + } } if (!isSprintKeyPressed && usedToHonk) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java index 9402a9e76..0d30e871d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java @@ -4,6 +4,7 @@ import javax.annotation.Nonnull; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.core.BlockPos; @@ -80,6 +81,8 @@ public class CartAssemblerBlockItem extends BlockItem { if (!player.isCreative()) context.getItemInHand() .shrink(1); + + AdvancementBehaviour.setPlacedBy(world, pos, player); return true; } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java index c22259db3..d50a1b2d2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -172,6 +173,9 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay nbt.putDouble("PushX", 0); cart.deserializeNBT(nbt); } + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); } protected void disassemble(Level world, BlockPos pos, AbstractMinecart cart) { @@ -233,6 +237,7 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay Lang.translate("contraptions.cart_movement_mode"), this, getMovementModeSlot()); movementMode.requiresWrench(); behaviours.add(movementMode); + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java index 40a932cc9..c257f6f5d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java @@ -11,6 +11,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.ContraptionMovementSetting; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; @@ -245,6 +246,11 @@ public class MinecartContraptionItem extends Item { return; } + if (contraption.getContraption() + .getBlocks() + .size() > 200) + AllAdvancements.CART_PICKUP.awardTo(player); + player.getInventory().placeItemBackInInventory(generatedStack); contraption.discard(); entity.discard(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index cfdd81257..ee18e0886 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con 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; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; @@ -53,6 +54,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity movementMode.requiresWrench(); movementMode.withCallback(t -> waitingForSpeedChange = false); behaviours.add(movementMode); + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java index 85674c3b4..0492ee77c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.DirectionalExtenderScrollOptionSlot; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.ServerSpeedProvider; @@ -86,6 +87,9 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { level.addFreshEntity(movedContraption); AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(level, worldPosition); + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index 88411120b..a71661c89 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pulley; +import java.util.List; + import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; @@ -7,7 +9,9 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.piston.LinearActuatorTileEntity; import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchObservable; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; @@ -39,12 +43,22 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp return super.createRenderBoundingBox().expandTowards(0, -offset, 0); } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.PULLEY_MAXED); + } + @Override public void tick() { + float prevOffset = offset; super.tick(); if (isVirtual()) prevAnimatedOffset = offset; invalidateRenderBoundingBox(); + + if (prevOffset < 200 && offset >= 200) + award(AllAdvancements.PULLEY_MAXED); } @Override @@ -108,6 +122,9 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp level.addFreshEntity(movedContraption); forceMove = true; needsContraption = true; + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java index 6d4cf1533..dded7afdf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java @@ -3,10 +3,9 @@ package com.simibubi.create.content.contraptions.components.waterwheel; import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllFluids; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.FluidHelper; @@ -131,14 +130,9 @@ public class WaterWheelBlock extends DirectionalKineticBlock implements ITE 0 ^ !clockwise ? -flow.z * clockwiseMultiplier : -flow.z; } - if (te.getSpeed() == 0 && flowStrength != 0 && !world.isClientSide()) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.WATER_WHEEL, world, pos, 5); - if (FluidHelper.isLava(fluid.getType())) - AllTriggers.triggerForNearbyPlayers(AllTriggers.LAVA_WHEEL, world, pos, 5); - if (fluid.getType() - .isSame(AllFluids.CHOCOLATE.get())) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CHOCOLATE_WHEEL, world, pos, 5); - } + if (te.getSpeed() == 0 && flowStrength != 0 && !world.isClientSide()) + te.award( + FluidHelper.isLava(fluid.getType()) ? AllAdvancements.LAVA_WHEEL : AllAdvancements.WATER_WHEEL); Integer flowModifier = AllConfigs.SERVER.kinetics.waterWheelFlowSpeed.get(); te.setFlow(side, (float) (flowStrength * flowModifier / 2f)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java index 10a0a68ab..07aa48bec 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java @@ -1,11 +1,14 @@ package com.simibubi.create.content.contraptions.components.waterwheel; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.BlockPos; @@ -27,6 +30,12 @@ public class WaterWheelTileEntity extends GeneratingKineticTileEntity { setLazyTickRate(20); } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.LAVA_WHEEL, AllAdvancements.WATER_WHEEL); + } + @Override protected void read(CompoundTag compound, boolean clientPacket) { super.read(compound, clientPacket); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java index 4f24ace01..43d6f5939 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java @@ -12,7 +12,8 @@ import com.simibubi.create.content.contraptions.fluids.PipeConnection.Flow; import com.simibubi.create.content.contraptions.fluids.pipes.AxisPipeBlock; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.fluids.pipes.VanillaFluidTargets; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; @@ -37,6 +38,11 @@ import net.minecraftforge.fluids.capability.IFluidHandler; public class FluidPropagator { + public static CreateAdvancement[] getSharedTriggers() { + return new CreateAdvancement[] { AllAdvancements.WATER_SUPPLY, AllAdvancements.CROSS_STREAMS, + AllAdvancements.HONEY_DRAIN }; + } + public static void propagateChangedPipe(LevelAccessor world, BlockPos pipePos, BlockState pipeState) { List> frontier = new ArrayList<>(); Set visited = new HashSet<>(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java index 1e9512740..4c4d58e4e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java @@ -1,7 +1,8 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.AllFluids; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.utility.BlockHelper; @@ -20,8 +21,9 @@ public class FluidReactions { public static void handlePipeFlowCollision(Level world, BlockPos pos, FluidStack fluid, FluidStack fluid2) { Fluid f1 = fluid.getFluid(); Fluid f2 = fluid2.getFluid(); + + AdvancementBehaviour.tryAward(world, pos, AllAdvancements.CROSS_STREAMS); BlockHelper.destroyBlock(world, pos, 1); - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_COLLISION, world, pos, 5); if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA) world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java index b14ef480c..8ad5e459b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java @@ -10,7 +10,8 @@ import javax.annotation.Nullable; import com.simibubi.create.AllFluids; import com.simibubi.create.content.contraptions.fluids.pipes.VanillaFluidTargets; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.utility.BlockFace; @@ -34,6 +35,7 @@ import net.minecraft.world.level.block.AbstractCandleBlock; import net.minecraft.world.level.block.CampfireBlock; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.AABB; @@ -130,7 +132,7 @@ public class OpenEndedPipe extends FlowSource { FluidStack empty = FluidStack.EMPTY; if (world == null) return empty; - if (!world.isAreaLoaded(outputPos, 0)) + if (!world.isLoaded(outputPos)) return empty; BlockState state = world.getBlockState(outputPos); @@ -138,8 +140,12 @@ public class OpenEndedPipe extends FlowSource { boolean waterlog = state.hasProperty(WATERLOGGED); FluidStack drainBlock = VanillaFluidTargets.drainBlock(world, outputPos, state, simulate); - if (!drainBlock.isEmpty()) + if (!drainBlock.isEmpty()) { + if (!simulate && state.hasProperty(BlockStateProperties.LEVEL_HONEY) + && AllFluids.HONEY.is(drainBlock.getFluid())) + AdvancementBehaviour.tryAward(world, pos, AllAdvancements.HONEY_DRAIN); return drainBlock; + } if (!waterlog && !state.getMaterial() .isReplaceable()) @@ -152,7 +158,8 @@ public class OpenEndedPipe extends FlowSource { if (simulate) return stack; - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_SPILL, world, pos, 5); + if (FluidHelper.isWater(stack.getFluid())) + AdvancementBehaviour.tryAward(world, pos, AllAdvancements.WATER_SUPPLY); if (waterlog) { world.setBlock(outputPos, state.setValue(WATERLOGGED, false), 3); @@ -179,7 +186,7 @@ public class OpenEndedPipe extends FlowSource { return false; if (fluid.isEmpty()) return false; - if (!FluidHelper.hasBlockState(fluid.getFluid())) + if (!FluidHelper.hasBlockState(fluid.getFluid())) return true; if (!fluidState.isEmpty() && fluidState.getType() != fluid.getFluid()) { @@ -206,8 +213,6 @@ public class OpenEndedPipe extends FlowSource { return true; } - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_SPILL, world, pos, 5); - if (waterlog) { world.setBlock(outputPos, state.setValue(WATERLOGGED, true), 3); world.scheduleTick(outputPos, Fluids.WATER, 1); @@ -251,7 +256,7 @@ public class OpenEndedPipe extends FlowSource { // Never allow being filled when a source is attached if (world == null) return 0; - if (!world.isAreaLoaded(outputPos, 0)) + if (!world.isLoaded(outputPos)) return 0; if (resource.isEmpty()) return 0; @@ -259,11 +264,13 @@ public class OpenEndedPipe extends FlowSource { return 0; FluidStack containedFluidStack = getFluid(); + boolean hasBlockState = FluidHelper.hasBlockState(containedFluidStack.getFluid()); + if (!containedFluidStack.isEmpty() && !containedFluidStack.isFluidEqual(resource)) setFluid(FluidStack.EMPTY); if (wasPulling) wasPulling = false; - if (canApplyEffects(resource)) + if (canApplyEffects(resource) && !hasBlockState) resource = FluidHelper.copyStackWithAmount(resource, 1); int fill = super.fill(resource, action); @@ -271,7 +278,7 @@ public class OpenEndedPipe extends FlowSource { return fill; if (!resource.isEmpty()) applyEffects(resource); - if (getFluidAmount() == 1000 || !FluidHelper.hasBlockState(containedFluidStack.getFluid())) + if (getFluidAmount() == 1000 || !hasBlockState) if (provideFluidToSpace(containedFluidStack, false)) setFluid(FluidStack.EMPTY); return fill; @@ -293,7 +300,7 @@ public class OpenEndedPipe extends FlowSource { if (world == null) return empty; - if (!world.isAreaLoaded(outputPos, 0)) + if (!world.isLoaded(outputPos)) return empty; if (amount == 0) return empty; @@ -338,7 +345,8 @@ public class OpenEndedPipe extends FlowSource { public static class PotionEffectHandler implements IEffectHandler { @Override public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) { - return fluid.getFluid().isSame(AllFluids.POTION.get()); + return fluid.getFluid() + .isSame(AllFluids.POTION.get()); } @Override @@ -353,8 +361,8 @@ public class OpenEndedPipe extends FlowSource { if (pipe.cachedEffects.isEmpty()) return; - List entities = - pipe.getWorld().getEntitiesOfClass(LivingEntity.class, pipe.getAOE(), LivingEntity::isAffectedByPotions); + List entities = pipe.getWorld() + .getEntitiesOfClass(LivingEntity.class, pipe.getAOE(), LivingEntity::isAffectedByPotions); for (LivingEntity entity : entities) { for (MobEffectInstance effectInstance : pipe.cachedEffects) { MobEffect effect = effectInstance.getEffect(); @@ -371,7 +379,8 @@ public class OpenEndedPipe extends FlowSource { public static class MilkEffectHandler implements IEffectHandler { @Override public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) { - return fluid.getFluid().is(Tags.Fluids.MILK); + return fluid.getFluid() + .is(Tags.Fluids.MILK); } @Override @@ -390,7 +399,8 @@ public class OpenEndedPipe extends FlowSource { public static class WaterEffectHandler implements IEffectHandler { @Override public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) { - return fluid.getFluid().is(FluidTags.WATER); + return fluid.getFluid() + .is(FluidTags.WATER); } @Override @@ -401,7 +411,8 @@ public class OpenEndedPipe extends FlowSource { List entities = world.getEntities((Entity) null, pipe.getAOE(), Entity::isOnFire); for (Entity entity : entities) entity.clearFire(); - BlockPos.betweenClosedStream(pipe.getAOE()).forEach(pos -> dowseFire(world, pos)); + BlockPos.betweenClosedStream(pipe.getAOE()) + .forEach(pos -> dowseFire(world, pos)); } // Adapted from ThrownPotion @@ -422,7 +433,8 @@ public class OpenEndedPipe extends FlowSource { public static class LavaEffectHandler implements IEffectHandler { @Override public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) { - return fluid.getFluid().is(FluidTags.LAVA); + return fluid.getFluid() + .is(FluidTags.LAVA); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java index ecaebe13a..b51f5b698 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java @@ -4,8 +4,6 @@ import java.util.Optional; import java.util.Random; import java.util.function.Predicate; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.BlockFace; import com.simibubi.create.foundation.utility.Couple; @@ -205,11 +203,8 @@ public class PipeConnection { float flowSpeed = 1 / 32f + Mth.clamp(pressure.get(flow.inbound) / 512f, 0, 1) * 31 / 32f; flow.progress.setValue(Math.min(flow.progress.getValue() + flowSpeed, 1)); - if (flow.progress.getValue() >= 1) { + if (flow.progress.getValue() >= 1) flow.complete = true; - if (flow.inbound && AllBlocks.GLASS_FLUID_PIPE.has(world.getBlockState(pos))) - AllTriggers.triggerForNearbyPlayers(AllTriggers.GLASS_PIPE, world, pos, 5); - } } public void serializeNBT(CompoundTag tag, boolean clientPacket) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index d984b5e0c..ced22d488 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -14,6 +14,7 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.mutable.MutableBoolean; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.BlockFace; @@ -53,6 +54,8 @@ public class PumpTileEntity extends KineticTileEntity { public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); behaviours.add(new PumpFluidTransferBehaviour(this)); + registerAwardables(behaviours, FluidPropagator.getSharedTriggers()); + registerAwardables(behaviours, AllAdvancements.PUMP); } @Override @@ -100,8 +103,10 @@ public class PumpTileEntity extends KineticTileEntity { if (previousSpeed == getSpeed()) return; - if (speed != 0) + if (speed != 0) { reversed = speed < 0; + award(AllAdvancements.PUMP); + } if (level.isClientSide && !isVirtual()) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java index 8c7fa2fd3..c4386c3ac 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java @@ -8,7 +8,7 @@ import java.util.Set; import javax.annotation.Nullable; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; @@ -134,12 +134,11 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour { return true; playEffect(world, currentPos, fluid, true); - AllTriggers.triggerForNearbyPlayers(AllTriggers.HOSE_PULLEY, world, tileEntity.getBlockPos(), 8); + tileEntity.award(AllAdvancements.HOSE_PULLEY); if (infinite) { - AllTriggers.triggerForNearbyPlayers( - AllTriggers.INFINITE_FLUID.constructTriggerFor(FluidHelper.convertToStill(fluid)), world, - tileEntity.getBlockPos(), 8); + if (FluidHelper.isLava(fluid)) + tileEntity.award(AllAdvancements.HOSE_PULLEY_LAVA); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java index dcda26ead..1802e092b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.Objects; import java.util.Set; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; @@ -146,7 +146,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour { world.playSound(null, i, j, k, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); } else if (!canPlaceSources) - AllTriggers.triggerForNearbyPlayers(AllTriggers.HOSE_PULLEY, world, tileEntity.getBlockPos(), 8); + tileEntity.award(AllAdvancements.HOSE_PULLEY); return true; } @@ -227,7 +227,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour { } if (!simulate && success) - AllTriggers.triggerForNearbyPlayers(AllTriggers.HOSE_PULLEY, world, tileEntity.getBlockPos(), 8); + tileEntity.award(AllAdvancements.HOSE_PULLEY); return success; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java index 08db80e97..37c231375 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.contraptions.fluids.actors; -import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; @@ -12,13 +11,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; public class HosePulleyBlock extends HorizontalKineticBlock implements ITE { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java index 204faf0ee..e466e72fd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.fluids.actors; import java.util.List; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.fluid.SmartFluidTank; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -65,6 +66,7 @@ public class HosePulleyTileEntity extends KineticTileEntity { behaviours.add(drainer); behaviours.add(filler); super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.HOSE_PULLEY, AllAdvancements.HOSE_PULLEY_LAVA); } protected void onTankContentsChanged(FluidStack contents) {} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java index bacc8fca4..e7a76079a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java @@ -4,6 +4,7 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.tileEntity.ComparatorUtil; @@ -13,6 +14,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -94,6 +96,12 @@ public class ItemDrainBlock extends Block implements IWrenchable, ITE getTileEntityType() { return AllTileEntities.ITEM_DRAIN.get(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java index 9fbdb599a..2206c65dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java @@ -7,7 +7,7 @@ import java.util.Map; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; @@ -58,6 +58,7 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI behaviours.add(internalTank = SmartFluidTankBehaviour.single(this, 1500) .allowExtraction() .forbidInsertion()); + registerAwardables(behaviours, AllAdvancements.DRAIN, AllAdvancements.CHAINED_DRAIN); } private ItemStack tryInsertingFromSide(TransportedItemStack transportedStack, Direction side, boolean simulate) { @@ -179,7 +180,7 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI if (returned.isEmpty()) { if (level.getBlockEntity(nextPosition) instanceof ItemDrainTileEntity) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CHAINED_ITEM_DRAIN, level, worldPosition, 5); + award(AllAdvancements.CHAINED_DRAIN); heldItem = null; notifyUpdate(); return; @@ -230,7 +231,7 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI } emptyItem = EmptyingByBasin.emptyItem(level, heldItem.stack.copy(), false); - AllTriggers.triggerForNearbyPlayers(AllTriggers.ITEM_DRAIN, level, worldPosition, 5); + award(AllAdvancements.DRAIN); // Process finished ItemStack out = emptyItem.getSecond(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java index 5384fd7e8..b0264e0c8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java @@ -3,10 +3,13 @@ package com.simibubi.create.content.contraptions.fluids.actors; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.ComparatorUtil; import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -28,6 +31,12 @@ public class SpoutBlock extends Block implements IWrenchable, ITE type, BlockPos pos, BlockState state) { super(type, pos, state); processingTicks = -1; @@ -68,6 +71,7 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor .whileItemHeld(this::whenItemHeld); behaviours.add(beltProcessing); + registerAwardables(behaviours, AllAdvancements.SPOUT, AllAdvancements.FOODS); } protected ProcessingResult onItemReceived(TransportedItemStack transported, @@ -115,10 +119,14 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(outList, held)); } - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPOUT, level, worldPosition, 5); - if (out.getItem() instanceof PotionItem && !PotionUtils.getMobEffects(out) - .isEmpty()) - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPOUT_POTION, level, worldPosition, 5); + award(AllAdvancements.SPOUT); + if (trackFoods()) { + createdChocolateBerries |= AllItems.CHOCOLATE_BERRIES.isIn(out); + createdHoneyApple |= AllItems.HONEYED_APPLE.isIn(out); + createdSweetRoll |= AllItems.SWEET_ROLL.isIn(out); + if (createdChocolateBerries && createdHoneyApple && createdSweetRoll) + award(AllAdvancements.FOODS); + } tank.getPrimaryHandler() .setFluid(fluid); @@ -141,12 +149,30 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor compound.putBoolean("Splash", true); sendSplash = false; } + + if (!trackFoods()) + return; + if (createdChocolateBerries) + NBTHelper.putMarker(compound, "ChocolateBerries"); + if (createdHoneyApple) + NBTHelper.putMarker(compound, "HoneyApple"); + if (createdSweetRoll) + NBTHelper.putMarker(compound, "SweetRoll"); + } + + private boolean trackFoods() { + return getBehaviour(AdvancementBehaviour.TYPE).isOwnerPresent(); } @Override protected void read(CompoundTag compound, boolean clientPacket) { super.read(compound, clientPacket); processingTicks = compound.getInt("ProcessingTicks"); + + createdChocolateBerries = compound.contains("ChocolateBerries"); + createdHoneyApple = compound.contains("HoneyApple"); + createdSweetRoll = compound.contains("SweetRoll"); + if (!clientPacket) return; if (compound.contains("Splash")) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java index 6f57c8e3a..3f3de42c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Iterate; @@ -22,6 +22,7 @@ import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; @@ -60,18 +61,23 @@ public class AxisPipeBlock extends RotatedPillarBlock implements IWrenchableWith BlockHitResult hit) { if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand))) return InteractionResult.PASS; - if (!world.isClientSide) { - BlockState newState = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState(); - for (Direction d : Iterate.directionsInAxis(getAxis(state))) - newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true); - FluidTransportBehaviour.cacheFlows(world, pos); - world.setBlockAndUpdate(pos, newState); - FluidTransportBehaviour.loadFlows(world, pos); - } - AllTriggers.triggerFor(AllTriggers.CASING_PIPE, player); + if (world.isClientSide) + return InteractionResult.SUCCESS; + BlockState newState = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState(); + for (Direction d : Iterate.directionsInAxis(getAxis(state))) + newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true); + FluidTransportBehaviour.cacheFlows(world, pos); + world.setBlockAndUpdate(pos, newState); + FluidTransportBehaviour.loadFlows(world, pos); return InteractionResult.SUCCESS; } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { if (world.isClientSide) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java index d4c650d4c..8e9322d94 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java @@ -59,9 +59,6 @@ public class BracketBlockItem extends BlockItem { .getPlaceSound(), SoundSource.BLOCKS, 0.75f, 1); behaviour.applyBracket(newBracket); - if (!world.isClientSide && player != null) - behaviour.triggerAdvancements(world, player, state); - if (player == null || !player.isCreative()) { context.getItemInHand() .shrink(1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java index 63f5ac61b..e5ed9a422 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java @@ -17,6 +17,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Iterate; @@ -25,6 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -59,6 +61,12 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); super.createBlockStateDefinition(builder); } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } @Override public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java index 04b57d586..310534c25 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java @@ -12,7 +12,8 @@ import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Iterate; @@ -24,6 +25,7 @@ import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -89,6 +91,12 @@ public class FluidPipeBlock extends PipeBlock if (clickedFace.getAxis() == axis) return InteractionResult.PASS; if (!world.isClientSide) { + withTileEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values() + .stream() + .filter(pc -> pc != null && pc.hasFlow()) + .findAny() + .ifPresent($ -> AllAdvancements.GLASS_PIPE.awardTo(context.getPlayer()))); + FluidTransportBehaviour.cacheFlows(world, pos); world.setBlockAndUpdate(pos, AllBlocks.GLASS_FLUID_PIPE.getDefaultState() .setValue(GlassFluidPipeBlock.AXIS, axis) @@ -98,19 +106,26 @@ public class FluidPipeBlock extends PipeBlock return InteractionResult.SUCCESS; } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!AllBlocks.COPPER_CASING.isIn(player.getItemInHand(hand))) return InteractionResult.PASS; - AllTriggers.triggerFor(AllTriggers.CASING_PIPE, player); - if (!world.isClientSide) { - FluidTransportBehaviour.cacheFlows(world, pos); - world.setBlockAndUpdate(pos, - EncasedPipeBlock.transferSixWayProperties(state, AllBlocks.ENCASED_FLUID_PIPE.getDefaultState())); - FluidTransportBehaviour.loadFlows(world, pos); - } + if (world.isClientSide) + return InteractionResult.SUCCESS; + + FluidTransportBehaviour.cacheFlows(world, pos); + world.setBlockAndUpdate(pos, + EncasedPipeBlock.transferSixWayProperties(state, AllBlocks.ENCASED_FLUID_PIPE.getDefaultState())); + FluidTransportBehaviour.loadFlows(world, pos); return InteractionResult.SUCCESS; + } public BlockState getAxisState(Axis axis) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java index bc7e4fc86..e3a45f27b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java @@ -5,9 +5,9 @@ import java.util.List; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableTE; import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; +import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -26,8 +26,8 @@ public class FluidPipeTileEntity extends SmartTileEntity implements ITransformab @Override public void addBehaviours(List behaviours) { behaviours.add(new StandardPipeFluidTransportBehaviour(this)); - behaviours.add(new BracketedTileEntityBehaviour(this, this::canHaveBracket) - .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); + behaviours.add(new BracketedTileEntityBehaviour(this, this::canHaveBracket)); + registerAwardables(behaviours, FluidPropagator.getSharedTriggers()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java index ccb486b2f..93d76fb9f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import java.util.List; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.fluids.pipes.StraightPipeTileEntity.StraightPipeFluidTransportBehaviour; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -78,6 +79,7 @@ public class FluidValveTileEntity extends KineticTileEntity { @Override public void addBehaviours(List behaviours) { behaviours.add(new ValvePipeBehaviour(this)); + registerAwardables(behaviours, FluidPropagator.getSharedTriggers()); } class ValvePipeBehaviour extends StraightPipeFluidTransportBehaviour { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java index f4ea043fb..768b128d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VoxelShaper; @@ -15,6 +16,8 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -139,6 +142,12 @@ public class SmartFluidPipeBlock extends FaceAttachedHorizontalDirectionalBlock : face == AttachFace.CEILING ? AllShapes.SMART_FLUID_PIPE_CEILING : AllShapes.SMART_FLUID_PIPE_WALL; return shape.get(state.getValue(FACING)); } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } @Override public Axis getAxis(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java index 39638a827..b00346367 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java @@ -36,6 +36,7 @@ public class SmartFluidPipeTileEntity extends SmartTileEntity { behaviours.add(new SmartPipeBehaviour(this)); behaviours.add(filter = new FilteringBehaviour(this, new SmartPipeFilterSlot()).forFluids() .withCallback(this::onFilterChanged)); + registerAwardables(behaviours, FluidPropagator.getSharedTriggers()); } private void onFilterChanged(ItemStack newFilter) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java index 965ac56c8..bc4fa8d67 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import java.util.List; +import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; @@ -24,6 +25,7 @@ public class StraightPipeTileEntity extends SmartTileEntity { public void addBehaviours(List behaviours) { behaviours.add(new StraightPipeFluidTransportBehaviour(this)); behaviours.add(new BracketedTileEntityBehaviour(this)); + registerAwardables(behaviours, FluidPropagator.getSharedTriggers()); } static class StraightPipeFluidTransportBehaviour extends FluidTransportBehaviour { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java index f02507f2b..52b54cd3b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java @@ -1,7 +1,9 @@ package com.simibubi.create.content.contraptions.fluids.tank; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.jetbrains.annotations.NotNull; @@ -9,7 +11,10 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.steam.SteamEngineBlock; import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock; +import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.utility.Iterate; @@ -92,6 +97,9 @@ public class BoilerData { waterSupply = Math.max(i, waterSupply); } + if (getActualHeat(controller.getTotalTankSize()) == 18) + controller.award(AllAdvancements.STEAM_ENGINE_MAXED); + controller.notifyUpdate(); } @@ -141,10 +149,15 @@ public class BoilerData { calcMinMaxForSize(boilerSize); - tooltip.add(indent.plainCopy().append(new TextComponent("Boiler Status: ").append(getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)))); - tooltip.add(indent2.plainCopy().append(getSizeComponent(true, false))); - tooltip.add(indent2.plainCopy().append(getWaterComponent(true, false))); - tooltip.add(indent2.plainCopy().append(getHeatComponent(true, false))); + tooltip.add(indent.plainCopy() + .append(new TextComponent("Boiler Status: ") + .append(getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN)))); + tooltip.add(indent2.plainCopy() + .append(getSizeComponent(true, false))); + tooltip.add(indent2.plainCopy() + .append(getWaterComponent(true, false))); + tooltip.add(indent2.plainCopy() + .append(getHeatComponent(true, false))); if (attachedEngines == 0) return true; @@ -152,20 +165,20 @@ public class BoilerData { int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize)); double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines) - * BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get()); + * BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get()); Component capacity = - new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress")) - .withStyle(ChatFormatting.AQUA); + new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress")) + .withStyle(ChatFormatting.AQUA); Component engines = - new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY); + new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY); tooltip.add(indent); tooltip.add(indent.plainCopy() - .append(Lang.translate("tooltip.capacityProvided") - .withStyle(ChatFormatting.GRAY))); + .append(Lang.translate("tooltip.capacityProvided") + .withStyle(ChatFormatting.GRAY))); tooltip.add(indent2.plainCopy() - .append(capacity) - .append(engines)); + .append(capacity) + .append(engines)); return true; } @@ -183,9 +196,9 @@ public class BoilerData { int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize)); return isPassive() ? new TextComponent("Passive") - : (boilerLevel == 0 ? new TextComponent("Idle") + : (boilerLevel == 0 ? new TextComponent("Idle") : boilerLevel == 18 ? new TextComponent("Max") - : new TextComponent("Lvl " + IHaveGoggleInformation.format(boilerLevel))); + : new TextComponent("Lvl " + IHaveGoggleInformation.format(boilerLevel))); } public MutableComponent getSizeComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { @@ -200,7 +213,8 @@ public class BoilerData { return componentHelper("Heat ", "...... ", passiveHeat ? 1 : activeHeat, forGoggles, useBlocksAsBars, styles); } - private MutableComponent componentHelper(String label, String dots, int level, boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { + private MutableComponent componentHelper(String label, String dots, int level, boolean forGoggles, + boolean useBlocksAsBars, ChatFormatting... styles) { MutableComponent base = useBlocksAsBars ? blockComponent(level) : barComponent(level); if (!forGoggles) @@ -210,26 +224,23 @@ public class BoilerData { ChatFormatting style2 = styles.length >= 2 ? styles[1] : ChatFormatting.DARK_GRAY; return new TextComponent(label).withStyle(style1) - .append(new TextComponent(dots).withStyle(style2)) - .append(base); + .append(new TextComponent(dots).withStyle(style2)) + .append(base); } - private MutableComponent blockComponent(int level) { - return new TextComponent("" + - "\u2588".repeat(minValue) + - "\u2592".repeat(level - minValue) + - "\u2591".repeat(maxValue - level) - ); + return new TextComponent( + "" + "\u2588".repeat(minValue) + "\u2592".repeat(level - minValue) + "\u2591".repeat(maxValue - level)); } private MutableComponent barComponent(int level) { return TextComponent.EMPTY.copy() - .append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN)) - .append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN)) - .append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN)) - .append(bars(Math.max(0, maxValue - level), ChatFormatting.DARK_RED)) - .append(bars(Math.max(0, Math.min(18 - maxValue, ((maxValue / 5 + 1) * 5) - maxValue)), ChatFormatting.DARK_GRAY)); + .append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN)) + .append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN)) + .append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN)) + .append(bars(Math.max(0, maxValue - level), ChatFormatting.DARK_RED)) + .append(bars(Math.max(0, Math.min(18 - maxValue, ((maxValue / 5 + 1) * 5) - maxValue)), + ChatFormatting.DARK_GRAY)); } @@ -259,7 +270,7 @@ public class BoilerData { if (AllBlocks.STEAM_ENGINE.has(attachedState) && SteamEngineBlock.getFacing(attachedState) == d) attachedEngines++; if (AllBlocks.STEAM_WHISTLE.has(attachedState) - && WhistleBlock.getAttachedDirection(attachedState) + && WhistleBlock.getAttachedDirection(attachedState) .getOpposite() == d) attachedWhistles++; } @@ -271,6 +282,41 @@ public class BoilerData { return prevEngines != attachedEngines || prevWhistles != attachedWhistles; } + public void checkPipeOrganAdvancement(FluidTankTileEntity controller) { + if (!controller.getBehaviour(AdvancementBehaviour.TYPE) + .isOwnerPresent()) + return; + + BlockPos controllerPos = controller.getBlockPos(); + Level level = controller.getLevel(); + Set whistlePitches = new HashSet<>(); + + for (int yOffset = 0; yOffset < controller.height; yOffset++) { + for (int xOffset = 0; xOffset < controller.width; xOffset++) { + for (int zOffset = 0; zOffset < controller.width; zOffset++) { + + BlockPos pos = controllerPos.offset(xOffset, yOffset, zOffset); + BlockState blockState = level.getBlockState(pos); + if (!FluidTankBlock.isTank(blockState)) + continue; + for (Direction d : Iterate.directions) { + BlockPos attachedPos = pos.relative(d); + BlockState attachedState = level.getBlockState(attachedPos); + if (AllBlocks.STEAM_WHISTLE.has(attachedState) + && WhistleBlock.getAttachedDirection(attachedState) + .getOpposite() == d) { + if (level.getBlockEntity(attachedPos) instanceof WhistleTileEntity wte) + whistlePitches.add(wte.getPitchId()); + } + } + } + } + } + + if (whistlePitches.size() >= 12) + controller.award(AllAdvancements.PIPE_ORGAN); + } + public boolean updateTemperature(FluidTankTileEntity controller) { BlockPos controllerPos = controller.getBlockPos(); Level level = controller.getLevel(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java index 653f819f7..4b09a15d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity.CreativeSmartFluidTank; import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidHelper.FluidExchange; @@ -25,6 +26,7 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -70,6 +72,12 @@ public class FluidTankBlock extends Block implements IWrenchable, ITE behaviours) {} + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.STEAM_ENGINE_MAXED, AllAdvancements.PIPE_ORGAN); + } public IFluidTank getTankInventory() { return tankInventory; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java index cb0c46ad8..c23c6c19c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java @@ -8,7 +8,6 @@ import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.item.ItemHelper; @@ -145,9 +144,6 @@ public class BasinBlock extends Block implements ITE, IWrenchab if (insertItem.isEmpty()) { itemEntity.discard(); - if (!itemEntity.level.isClientSide) - AllTriggers.triggerForNearbyPlayers(AllTriggers.BASIN_THROW, itemEntity.level, - itemEntity.blockPosition(), 3); return; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java index e03754473..3ba1d6a6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java @@ -5,8 +5,7 @@ import java.util.Optional; import java.util.stream.Collectors; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.simple.DeferralBehaviour; import com.simibubi.create.foundation.utility.recipe.RecipeFinder; @@ -106,9 +105,7 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { boolean wasEmpty = basin.canContinueProcessing(); if (!BasinRecipe.apply(basin, currentRecipe)) return; - Optional processedRecipeTrigger = getProcessedRecipeTrigger(); - if (level != null && !level.isClientSide && processedRecipeTrigger.isPresent()) - AllTriggers.triggerForNearbyPlayers(processedRecipeTrigger.get(), level, worldPosition, 4); + getProcessedRecipeTrigger().ifPresent(this::award); basin.inputTank.sendDataImmediately(); // Continue mixing @@ -142,7 +139,7 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { return Optional.of((BasinTileEntity) basinTE); } - protected Optional getProcessedRecipeTrigger() { + protected Optional getProcessedRecipeTrigger() { return Optional.empty(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java b/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java index fae2e39b2..ce57a9fc1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java @@ -100,15 +100,15 @@ public class InWorldProcessing { return recipe.isPresent(); } - public static void applyProcessing(ItemEntity entity, Type type) { + public static boolean applyProcessing(ItemEntity entity, Type type) { if (decrementProcessingTime(entity, type) != 0) - return; + return false; List stacks = process(entity.getItem(), type, entity.level); if (stacks == null) - return; + return false; if (stacks.isEmpty()) { entity.discard(); - return; + return false; } entity.setItem(stacks.remove(0)); for (ItemStack additional : stacks) { @@ -116,6 +116,7 @@ public class InWorldProcessing { entityIn.setDeltaMovement(entity.getDeltaMovement()); entity.level.addFreshEntity(entityIn); } + return true; } public static TransportedResult applyProcessing(TransportedItemStack transported, Level world, Type type) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java index e5525fa2a..c6b4371d4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerInteractionBehaviour.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEn import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.management.schedule.Schedule; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleItem; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -90,6 +91,7 @@ public class BlazeBurnerInteractionBehaviour extends MovingInteractionBehaviour } train.runtime.setSchedule(schedule, false); + AllAdvancements.CONDUCTOR.awardTo(player); AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); player.displayClientMessage(Lang.translate("schedule.applied_to_train") .withStyle(ChatFormatting.GREEN), true); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java index 15f1dcb9d..62611bb58 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.motor.CreativeMotorTileEntity; import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; @@ -52,6 +53,8 @@ public class SpeedControllerTileEntity extends KineticTileEntity { targetSpeed.withCallback(i -> this.updateTargetRotation()); targetSpeed.withStepFunction(CreativeMotorTileEntity::step); behaviours.add(targetSpeed); + + registerAwardables(behaviours, AllAdvancements.SPEED_CONTROLLER); } private void updateTargetRotation() { @@ -60,6 +63,9 @@ public class SpeedControllerTileEntity extends KineticTileEntity { RotationPropagator.handleRemoved(level, worldPosition, this); removeSource(); attachKinetics(); + + if (isCogwheelPresent() && getSpeed() != 0) + award(AllAdvancements.SPEED_CONTROLLER); } public static float getConveyedSpeed(KineticTileEntity cogWheel, KineticTileEntity speedControllerIn, @@ -111,10 +117,13 @@ public class SpeedControllerTileEntity extends KineticTileEntity { } public void updateBracket() { - if (level == null || !level.isClientSide) - return; + if (level != null && level.isClientSide) + hasBracket = isCogwheelPresent(); + } + + private boolean isCogwheelPresent() { BlockState stateAbove = level.getBlockState(worldPosition.above()); - hasBracket = ICogWheel.isDedicatedCogWheel(stateAbove.getBlock()) && ICogWheel.isLargeCog(stateAbove) + return ICogWheel.isDedicatedCogWheel(stateAbove.getBlock()) && ICogWheel.isLargeCog(stateAbove) && stateAbove.getValue(CogWheelBlock.AXIS).isHorizontal(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index d4d0e27cc..1f0146f9a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -22,7 +22,6 @@ import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandler; import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; @@ -305,7 +304,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE te.setCasingType(CasingType.BRASS)); return InteractionResult.SUCCESS; } @@ -313,7 +311,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE te.setCasingType(CasingType.ANDESITE)); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java index 8040b09dd..2cbf3b8e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java @@ -13,7 +13,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.relays.elementary.AbstractSimpleShaftBlock; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.VecHelper; @@ -96,7 +96,7 @@ public class BeltConnectorItem extends BlockItem { if (firstPulley != null && !firstPulley.equals(pos)) { createBelts(world, firstPulley, pos); - AllTriggers.triggerFor(AllTriggers.CONNECT_BELT, playerEntity); + AllAdvancements.BELT.awardTo(playerEntity); if (!playerEntity.isCreative()) context.getItemInHand() .shrink(1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java index 552c861bf..14db8435b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java @@ -4,7 +4,6 @@ import java.util.List; import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableTE; import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.core.BlockPos; @@ -19,8 +18,8 @@ public class BracketedKineticTileEntity extends SimpleKineticTileEntity implemen @Override public void addBehaviours(List behaviours) { - behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractSimpleShaftBlock) - .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); + behaviours + .add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractSimpleShaftBlock)); super.addBehaviours(behaviours); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java index b03889b02..43d8ba960 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java @@ -6,7 +6,6 @@ import java.util.function.Predicate; import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.ITriggerable; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -15,7 +14,6 @@ import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; @@ -99,12 +97,6 @@ public class BracketedTileEntityBehaviour extends TileEntityBehaviour { return pred.test(tileEntity.getBlockState()); } - public void triggerAdvancements(Level world, Player player, BlockState state) { - if (trigger == null) - return; - AllTriggers.triggerFor(trigger.apply(state), player); - } - @Override public ItemRequirement getRequiredItems() { return ItemRequirement.of(getBracket(), null); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java index 617f53263..cd366bc9c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.MethodsReturnNonnullByDefault; @@ -17,6 +18,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -70,6 +72,49 @@ public class CogWheelBlock extends AbstractSimpleShaftBlock implements ICogWheel return isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.getValue(AXIS)); } + @Override + public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + super.setPlacedBy(worldIn, pos, state, placer, stack); + if (placer instanceof Player player) + triggerShiftingGearsAdvancement(worldIn, pos, state, player); + } + + protected void triggerShiftingGearsAdvancement(Level world, BlockPos pos, BlockState state, Player player) { + if (world.isClientSide || player == null) + return; + + Axis axis = state.getValue(CogWheelBlock.AXIS); + for (Axis perpendicular1 : Iterate.axes) { + if (perpendicular1 == axis) + continue; + + Direction d1 = Direction.get(AxisDirection.POSITIVE, perpendicular1); + for (Axis perpendicular2 : Iterate.axes) { + if (perpendicular1 == perpendicular2) + continue; + if (axis == perpendicular2) + continue; + + Direction d2 = Direction.get(AxisDirection.POSITIVE, perpendicular2); + for (int offset1 : Iterate.positiveAndNegative) { + for (int offset2 : Iterate.positiveAndNegative) { + BlockPos connectedPos = pos.relative(d1, offset1) + .relative(d2, offset2); + BlockState blockState = world.getBlockState(connectedPos); + if (!(blockState.getBlock() instanceof CogWheelBlock)) + continue; + if (blockState.getValue(CogWheelBlock.AXIS) != axis) + continue; + if (ICogWheel.isLargeCog(blockState) == isLarge) + continue; + + AllAdvancements.COGS.awardTo(player); + } + } + } + } + } + @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult ray) { @@ -105,7 +150,7 @@ public class CogWheelBlock extends AbstractSimpleShaftBlock implements ICogWheel encasedState.cycle(d.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT : EncasedCogwheelBlock.BOTTOM_SHAFT); } - + KineticTileEntity.switchToBlockState(world, pos, encasedState); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java index 3a164a5c2..caabc7551 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java @@ -10,7 +10,6 @@ import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; @@ -20,12 +19,10 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -73,46 +70,6 @@ public class CogwheelBlockItem extends BlockItem { return super.onItemUseFirst(stack, context); } - @Override - // Trigger cogwheel criterion - protected boolean placeBlock(BlockPlaceContext context, BlockState state) { - triggerShiftingGearsAdvancement(context.getLevel(), context.getClickedPos(), state, context.getPlayer()); - return super.placeBlock(context, state); - } - - protected void triggerShiftingGearsAdvancement(Level world, BlockPos pos, BlockState state, Player player) { - if (world.isClientSide || player == null) - return; - - Axis axis = state.getValue(CogWheelBlock.AXIS); - for (Axis perpendicular1 : Iterate.axes) { - if (perpendicular1 == axis) - continue; - Direction d1 = Direction.get(AxisDirection.POSITIVE, perpendicular1); - for (Axis perpendicular2 : Iterate.axes) { - if (perpendicular1 == perpendicular2) - continue; - if (axis == perpendicular2) - continue; - Direction d2 = Direction.get(AxisDirection.POSITIVE, perpendicular2); - for (int offset1 : Iterate.positiveAndNegative) { - for (int offset2 : Iterate.positiveAndNegative) { - BlockPos connectedPos = pos.relative(d1, offset1) - .relative(d2, offset2); - BlockState blockState = world.getBlockState(connectedPos); - if (!(blockState.getBlock() instanceof CogWheelBlock)) - continue; - if (blockState.getValue(CogWheelBlock.AXIS) != axis) - continue; - if (ICogWheel.isLargeCog(blockState) == large) - continue; - AllTriggers.triggerFor(AllTriggers.SHIFTING_GEARS, player); - } - } - } - } - } - @MethodsReturnNonnullByDefault private static class SmallCogHelper extends DiagonalCogHelper { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java index 32e7a14e2..461ae90cd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java @@ -8,7 +8,6 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.steam.PoweredShaftBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; import com.simibubi.create.content.curiosities.girder.GirderEncasedShaftBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.PlacementOffset; @@ -87,7 +86,6 @@ public class ShaftBlock extends AbstractSimpleShaftBlock { if (world.isClientSide) return InteractionResult.SUCCESS; - AllTriggers.triggerFor(AllTriggers.CASING_SHAFT, player); KineticTileEntity.switchToBlockState(world, pos, encasedShaft.defaultBlockState() .setValue(AXIS, state.getValue(AXIS))); return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeObservedPacket.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeObservedPacket.java new file mode 100644 index 000000000..8a9a85245 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeObservedPacket.java @@ -0,0 +1,34 @@ +package com.simibubi.create.content.contraptions.relays.gauge; + +import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; + +public class GaugeObservedPacket extends TileEntityConfigurationPacket { + + public GaugeObservedPacket(BlockPos pos) { + super(pos); + } + + public GaugeObservedPacket(FriendlyByteBuf buffer) { + super(buffer); + } + + @Override + protected void writeSettings(FriendlyByteBuf buffer) {} + + @Override + protected void readSettings(FriendlyByteBuf buffer) {} + + @Override + protected void applySettings(StressGaugeTileEntity te) { + te.onObserved(); + } + + @Override + protected boolean causeUpdate() { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java index c1dae80ea..216d9185c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java @@ -3,8 +3,6 @@ package com.simibubi.create.content.contraptions.relays.gauge; import java.util.List; import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.goggles.GogglesItem; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; @@ -27,12 +25,10 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity { super.onSpeedChanged(prevSpeed); float speed = Math.abs(getSpeed()); + dialTarget = getDialTarget(speed); color = Color.mixColors(SpeedLevel.of(speed) .getColor(), 0xffffff, .25f); - if (speed == 69) - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPEED_READ, level, worldPosition, 6, GogglesItem::isWearingGoggles); - - dialTarget = getDialTarget(speed); + setChanged(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java index cfe5111cd..af9299924 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java @@ -4,24 +4,37 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.ItemDescription; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; +import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; public class StressGaugeTileEntity extends GaugeTileEntity { + static BlockPos lastSent; + public StressGaugeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.STRESSOMETER, AllAdvancements.STRESSOMETER_MAXED); + } + @Override public void updateFromNetwork(float maxStress, float currentStress, int networkSize) { super.updateFromNetwork(maxStress, currentStress, networkSize); @@ -70,35 +83,50 @@ public class StressGaugeTileEntity extends GaugeTileEntity { double capacity = getNetworkCapacity(); double stressFraction = getNetworkStress() / (capacity == 0 ? 1 : capacity); - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.stressometer.title").withStyle(ChatFormatting.GRAY))); + tooltip.add(componentSpacing.plainCopy() + .append(Lang.translate("gui.stressometer.title") + .withStyle(ChatFormatting.GRAY))); if (getTheoreticalSpeed() == 0) - tooltip.add(new TextComponent(spacing + ItemDescription.makeProgressBar(3, 0)).append(Lang.translate("gui.stressometer.no_rotation")).withStyle(ChatFormatting.DARK_GRAY)); + tooltip.add(new TextComponent(spacing + ItemDescription.makeProgressBar(3, 0)) + .append(Lang.translate("gui.stressometer.no_rotation")) + .withStyle(ChatFormatting.DARK_GRAY)); else { - tooltip.add(componentSpacing.plainCopy().append(StressImpact.getFormattedStressText(stressFraction))); + tooltip.add(componentSpacing.plainCopy() + .append(StressImpact.getFormattedStressText(stressFraction))); - tooltip.add(componentSpacing.plainCopy().append(Lang.translate("gui.stressometer.capacity").withStyle(ChatFormatting.GRAY))); + tooltip.add(componentSpacing.plainCopy() + .append(Lang.translate("gui.stressometer.capacity") + .withStyle(ChatFormatting.GRAY))); double remainingCapacity = capacity - getNetworkStress(); Component su = Lang.translate("generic.unit.stress"); MutableComponent stressTooltip = componentSpacing.plainCopy() - .append(new TextComponent(" " + IHaveGoggleInformation.format(remainingCapacity)) - .append(su.plainCopy()) - .withStyle(StressImpact.of(stressFraction).getRelativeColor())); + .append(new TextComponent(" " + IHaveGoggleInformation.format(remainingCapacity)).append(su.plainCopy()) + .withStyle(StressImpact.of(stressFraction) + .getRelativeColor())); if (remainingCapacity != capacity) { - stressTooltip - .append(new TextComponent(" / ").withStyle(ChatFormatting.GRAY)) - .append(new TextComponent(IHaveGoggleInformation.format(capacity)) - .append(su.plainCopy()) - .withStyle(ChatFormatting.DARK_GRAY)); + stressTooltip.append(new TextComponent(" / ").withStyle(ChatFormatting.GRAY)) + .append(new TextComponent(IHaveGoggleInformation.format(capacity)).append(su.plainCopy()) + .withStyle(ChatFormatting.DARK_GRAY)); } tooltip.add(stressTooltip); } + + if (!worldPosition.equals(lastSent)) + AllPackets.channel.sendToServer(new GaugeObservedPacket(lastSent = worldPosition)); return true; } + @Override + protected void read(CompoundTag compound, boolean clientPacket) { + super.read(compound, clientPacket); + if (clientPacket && worldPosition != null && worldPosition.equals(lastSent)) + lastSent = null; + } + public float getNetworkStress() { return stress; } @@ -107,4 +135,10 @@ public class StressGaugeTileEntity extends GaugeTileEntity { return capacity; } + public void onObserved() { + award(AllAdvancements.STRESSOMETER); + if (Mth.equal(dialTarget, 1)) + award(AllAdvancements.STRESSOMETER_MAXED); + } + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java index c7a99f0b0..b05080193 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -1,11 +1,15 @@ package com.simibubi.create.content.curiosities.armor; +import java.util.List; + import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.particle.AirParticleData; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.ComparatorUtil; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; @@ -37,7 +41,20 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea super(typeIn, pos, state); enchantmentTag = new ListTag(); } - + + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.BACKTANK); + } + + @Override + public void onSpeedChanged(float previousSpeed) { + super.onSpeedChanged(previousSpeed); + if (getSpeed() != 0) + award(AllAdvancements.BACKTANK); + } + @Override public void tick() { super.tick(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java index 5eb910891..bde2a4e65 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -1,7 +1,9 @@ package com.simibubi.create.content.curiosities.armor; import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.FluidTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; @@ -35,7 +37,9 @@ public class DivingHelmetItem extends CopperArmorItem { if (!AllItems.DIVING_HELMET.get() .isWornBy(entity)) return; - if (!entity.isEyeInFluid(FluidTags.WATER)) + + boolean lavaDiving = entity.isEyeInFluid(FluidTags.LAVA); + if (!entity.isEyeInFluid(FluidTags.WATER) && !lavaDiving) return; if (entity instanceof Player && ((Player) entity).isCreative()) return; @@ -46,6 +50,12 @@ public class DivingHelmetItem extends CopperArmorItem { if (!BackTankUtil.hasAirRemaining(backtank)) return; + if (lavaDiving) { + if (entity instanceof ServerPlayer sp) + AllAdvancements.DIVING_SUIT_LAVA.awardTo(sp); + return; + } + if (drowning) entity.setAirSupply(10); @@ -56,6 +66,9 @@ public class DivingHelmetItem extends CopperArmorItem { if (!second) return; + if (entity instanceof ServerPlayer sp) + AllAdvancements.DIVING_SUIT.awardTo(sp); + entity.setAirSupply(Math.min(entity.getMaxAirSupply(), entity.getAirSupply() + 10)); entity.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 30, 0, true, false, true)); BackTankUtil.consumeAir(entity, backtank, 1); diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellBlock.java b/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellBlock.java index d6b69f26d..0e0c9cdad 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellBlock.java @@ -75,7 +75,7 @@ public abstract class AbstractBellBlock exten return ring(world, pos, direction, player); } - private boolean ring(Level world, BlockPos pos, Direction direction, Player player) { + protected boolean ring(Level world, BlockPos pos, Direction direction, Player player) { TE te = getTileEntity(world, pos); if (world.isClientSide) return true; diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellBlock.java b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellBlock.java index bd589c63a..4813daa13 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellBlock.java @@ -2,8 +2,11 @@ package com.simibubi.create.content.curiosities.bell; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTileEntities; +import com.simibubi.create.foundation.advancement.AllAdvancements; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -18,6 +21,14 @@ public class HauntedBellBlock extends AbstractBellBlock { public BlockEntityType getTileEntityType() { return AllTileEntities.HAUNTED_BELL.get(); } + + @Override + protected boolean ring(Level world, BlockPos pos, Direction direction, Player player) { + boolean ring = super.ring(world, pos, direction, player); + if (ring) + AllAdvancements.HAUNTED_BELL.awardTo(player); + return ring; + } @Override public Class getTileEntityClass() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java index 0de6b9b23..619e6e3f0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java @@ -34,7 +34,7 @@ public class HauntedBellTileEntity extends AbstractBellTileEntity { public PartialModel getBellModel() { return AllBlockPartials.HAUNTED_BELL; } - + @Override public boolean ring(Level world, BlockPos pos, Direction direction) { if (isRinging && ringingTicks < RECHARGE_TICKS) diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java index a8b1e6327..a32a7c5dd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java @@ -9,7 +9,7 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import com.simibubi.create.AllItems; import com.simibubi.create.content.curiosities.armor.BackTankUtil; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.networking.AllPackets; @@ -18,7 +18,6 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; @@ -64,13 +63,11 @@ public class ExtendoGripItem extends Item { AttributeModifier.Operation.ADDITION); private static final Supplier> rangeModifier = Suppliers.memoize(() -> - // Holding an ExtendoGrip - ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), singleRangeAttributeModifier) - ); + // Holding an ExtendoGrip + ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), singleRangeAttributeModifier)); private static final Supplier> doubleRangeModifier = Suppliers.memoize(() -> - // Holding two ExtendoGrips o.O - ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), doubleRangeAttributeModifier) - ); + // Holding two ExtendoGrips o.O + ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), doubleRangeAttributeModifier)); private static DamageSource lastActiveDamageSource; @@ -103,8 +100,7 @@ public class ExtendoGripItem extends Item { .removeAttributeModifiers(rangeModifier.get()); persistentData.remove(EXTENDO_MARKER); } else { - if (player instanceof ServerPlayer) - AllTriggers.EXTENDO.trigger((ServerPlayer) player); + AllAdvancements.EXTENDO_GRIP.awardTo(player); player.getAttributes() .addTransientAttributeModifiers(rangeModifier.get()); persistentData.putBoolean(EXTENDO_MARKER, true); @@ -117,8 +113,7 @@ public class ExtendoGripItem extends Item { .removeAttributeModifiers(doubleRangeModifier.get()); persistentData.remove(DUAL_EXTENDO_MARKER); } else { - if (player instanceof ServerPlayer) - AllTriggers.GIGA_EXTENDO.trigger((ServerPlayer) player); + AllAdvancements.EXTENDO_GRIP_DUAL.awardTo(player); player.getAttributes() .addTransientAttributeModifiers(doubleRangeModifier.get()); persistentData.putBoolean(DUAL_EXTENDO_MARKER, true); @@ -237,7 +232,7 @@ public class ExtendoGripItem extends Item { public static void bufferLivingAttackEvent(LivingAttackEvent event) { // Workaround for removed patch to get the attacking entity. lastActiveDamageSource = event.getSource(); - + DamageSource source = event.getSource(); if (source == null) return; diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileEntity.java index 23a9efd37..4303de112 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileEntity.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.particle.AirParticleData; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; @@ -183,8 +183,17 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements return; if (owner instanceof LivingEntity) ((LivingEntity) owner).setLastHurtMob(target); - if (target instanceof PotatoProjectileEntity && tickCount < 10 && target.tickCount < 10) - return; + + if (target instanceof PotatoProjectileEntity ppe) { + if (tickCount < 10 && target.tickCount < 10) + return; + if (ppe.getProjectileType() != getProjectileType()) { + if (owner instanceof Player p) + AllAdvancements.POTATO_CANNON_COLLIDE.awardTo(p); + if (ppe.getOwner() instanceof Player p) + AllAdvancements.POTATO_CANNON_COLLIDE.awardTo(p); + } + } pop(hit); @@ -246,9 +255,8 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements if (onServer && owner instanceof ServerPlayer) { ServerPlayer serverplayerentity = (ServerPlayer) owner; if (!target.isAlive() && target.getType() - .getCategory() == MobCategory.MONSTER - || (target instanceof Player && target != owner)) - AllTriggers.POTATO_KILL.trigger(serverplayerentity); + .getCategory() == MobCategory.MONSTER || (target instanceof Player && target != owner)) + AllAdvancements.POTATO_CANNON.awardTo(serverplayerentity); } if (type.isSticky() && target.isAlive()) { @@ -298,7 +306,8 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements if (!stack.isEmpty()) { for (int i = 0; i < 7; i++) { Vec3 m = VecHelper.offsetRandomly(Vec3.ZERO, this.random, .25f); - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), hit.x, hit.y, hit.z, m.x, m.y, m.z); + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), hit.x, hit.y, hit.z, m.x, m.y, + m.z); } } if (!level.isClientSide) diff --git a/src/main/java/com/simibubi/create/content/logistics/RedstoneLinkNetworkHandler.java b/src/main/java/com/simibubi/create/content/logistics/RedstoneLinkNetworkHandler.java index b4890d6ac..019b6de47 100644 --- a/src/main/java/com/simibubi/create/content/logistics/RedstoneLinkNetworkHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/RedstoneLinkNetworkHandler.java @@ -17,13 +17,14 @@ import com.simibubi.create.foundation.utility.WorldHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; public class RedstoneLinkNetworkHandler { static final Map, Set>> connections = new IdentityHashMap<>(); - + public final AtomicInteger globalPowerVersion = new AtomicInteger(); public static class Frequency { @@ -111,7 +112,7 @@ public class RedstoneLinkNetworkHandler { iterator.remove(); continue; } - if (!world.isAreaLoaded(other.getLocation(), 0)) { + if (!(world instanceof Level level) || !level.isLoaded(other.getLocation())) { iterator.remove(); continue; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java index 29357f41c..978dbd9a3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java @@ -39,11 +39,8 @@ public class BeltTunnelItem extends BlockItem { boolean flag = super.updateCustomBlockEntityTag(pos, world, p_195943_3_, p_195943_4_, state); if (!world.isClientSide) { BeltTileEntity belt = BeltHelper.getSegmentTE(world, pos.below()); - if (belt != null) { - AllTriggers.triggerFor(AllTriggers.PLACE_TUNNEL, p_195943_3_); - if (belt.casing == CasingType.NONE) - belt.setCasingType(AllBlocks.ANDESITE_TUNNEL.has(state) ? CasingType.ANDESITE : CasingType.BRASS); - } + if (belt != null && belt.casing == CasingType.NONE) + belt.setCasingType(AllBlocks.ANDESITE_TUNNEL.has(state) ? CasingType.ANDESITE : CasingType.BRASS); } return flag; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index e0892c0f2..e6a17ab1a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -17,7 +17,6 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; @@ -633,7 +632,6 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave if (adjacent != null && !level.isClientSide) { adjacent.updateTunnelConnections(); adjacent.selectionMode.setValue(selectionMode.getValue()); - AllTriggers.triggerForNearbyPlayers(AllTriggers.CONNECT_TUNNEL, level, worldPosition, 4); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java index 5949df194..9bf371d8c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java @@ -5,6 +5,7 @@ import java.util.function.Consumer; import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -17,6 +18,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -73,6 +75,12 @@ public abstract class AbstractChuteBlock extends Block implements IWrenchable, I return false; } + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } + @Override public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { super.updateEntityAfterFallOn(worldIn, entityIn); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 38b74d94a..e891205f5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -15,7 +15,7 @@ import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEnt import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.particle.AirParticleData; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; @@ -101,6 +101,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor @Override public void addBehaviours(List behaviours) { behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen((d) -> canDirectlyInsertCached())); + registerAwardables(behaviours, AllAdvancements.CHUTE); } // Cached per-tick, useful when a lot of items are waiting on top of it @@ -233,7 +234,6 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor setItem(entityItem.copy(), (float) (itemEntity.getBoundingBox() .getCenter().y - worldPosition.getY())); itemEntity.discard(); - AllTriggers.triggerForNearbyPlayers(AllTriggers.UPWARD_CHUTE, level, worldPosition, 5); break; } } @@ -502,8 +502,10 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor public void setItem(ItemStack stack, float insertionPos) { item = stack; itemPosition.lastValue = itemPosition.value = insertionPos; - if (!level.isClientSide) + if (!level.isClientSide) { notifyUpdate(); + award(AllAdvancements.CHUTE); + } } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorAwardPacket.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorAwardPacket.java new file mode 100644 index 000000000..d9c698bbf --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorAwardPacket.java @@ -0,0 +1,34 @@ +package com.simibubi.create.content.logistics.block.depot; + +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; + +public class EjectorAwardPacket extends TileEntityConfigurationPacket { + + public EjectorAwardPacket(FriendlyByteBuf buffer) { + super(buffer); + } + + public EjectorAwardPacket(BlockPos pos) { + super(pos); + } + + @Override + protected void writeSettings(FriendlyByteBuf buffer) {} + + @Override + protected void readSettings(FriendlyByteBuf buffer) {} + + @Override + protected void applySettings(ServerPlayer player, EjectorTileEntity te) { + AllAdvancements.EJECTOR_MAXED.awardTo(player); + } + + @Override + protected void applySettings(EjectorTileEntity te) {} + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index 7dc137587..44d8de10e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -163,7 +163,13 @@ public class EjectorTileEntity extends KineticTileEntity { if (!isPlayerEntity) continue; + Player playerEntity = (Player) entity; + + if (launcher.getHorizontalDistance() * launcher.getHorizontalDistance() + + launcher.getVerticalDistance() * launcher.getVerticalDistance() >= 25 * 25) + AllPackets.channel.sendToServer(new EjectorAwardPacket(worldPosition)); + if (!(playerEntity.getItemBySlot(EquipmentSlot.CHEST) .getItem() instanceof ElytraItem)) continue; @@ -352,8 +358,7 @@ public class EjectorTileEntity extends KineticTileEntity { Vec3 source = getLaunchedItemLocation(time); Vec3 target = getLaunchedItemLocation(time + 1); - BlockHitResult rayTraceBlocks = - level.clip(new ClipContext(source, target, Block.COLLIDER, Fluid.NONE, null)); + BlockHitResult rayTraceBlocks = level.clip(new ClipContext(source, target, Block.COLLIDER, Fluid.NONE, null)); boolean miss = rayTraceBlocks.getType() == Type.MISS; if (!miss && rayTraceBlocks.getType() == Type.BLOCK) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java index eea7120d2..4960debd1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkBlock.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.logistics.block.display.source.DisplaySource; import com.simibubi.create.content.logistics.block.display.source.RedstonePowerDisplaySource; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.gui.ScreenOpener; @@ -19,7 +20,9 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -54,6 +57,12 @@ public class DisplayLinkBlock extends WrenchableDirectionalBlock implements ITE< placed = placed.setValue(FACING, context.getClickedFace()); return placed.setValue(POWERED, shouldBePowered(placed, context.getLevel(), context.getClickedPos())); } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } public static void notifyGatherers(LevelAccessor level, BlockPos pos) { forEachAttachedGatherer(level, pos, DisplayLinkTileEntity::updateGatheredData); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java index 2bb0911a5..c21201af5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java @@ -4,6 +4,7 @@ import java.util.List; import com.simibubi.create.content.logistics.block.display.source.DisplaySource; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; @@ -108,10 +109,14 @@ public class DisplayLinkTileEntity extends SmartTileEntity { activeSource.transferData(context, activeTarget, targetLine); sendPulse = true; sendData(); + + award(AllAdvancements.DISPLAY_LINK); } @Override - public void addBehaviours(List behaviours) {} + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.DISPLAY_LINK, AllAdvancements.DISPLAY_BOARD); + } @Override public void writeSafe(CompoundTag tag, boolean clientPacket) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java index 54338548b..c9e4be096 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java @@ -34,7 +34,6 @@ public abstract class DisplaySource extends DisplayBehaviour { if (activeTarget instanceof DisplayBoardTarget fddt) { List> flapDisplayText = provideFlapDisplayText(context, stats); fddt.acceptFlapText(line, flapDisplayText, context); - return; } List text = provideText(context, stats); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java index 44a27d762..6f48fc89e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.GlobalTrainDisplayData; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.GlobalStation; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.Lang; @@ -89,6 +90,10 @@ public class StationSummaryDisplaySource extends DisplaySource { list.add(lines); }); + if (list.size() > 0) + context.te() + .award(AllAdvancements.DISPLAY_BOARD); + int toPad = stats.maxRows() - list.size(); for (int padding = 0; padding < toPad; padding++) list.add(hasPlatform ? EMPTY_ENTRY_5 : EMPTY_ENTRY_4); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java index ebaab82ea..fcaafeae9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java @@ -6,7 +6,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.Lang; @@ -190,7 +190,7 @@ public class BeltFunnelBlock extends AbstractHorizontalFunnelBlock implements IS .relative(facing)); if (opposite.getBlock() instanceof BeltFunnelBlock && opposite.getValue(SHAPE) == Shape.EXTENDED && opposite.getValue(HORIZONTAL_FACING) == facing.getOpposite()) - AllTriggers.triggerFor(AllTriggers.BELT_FUNNEL_KISS, context.getPlayer()); + AllAdvancements.FUNNEL_KISS.awardTo(context.getPlayer()); } return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index 0c0fef688..930da5e2d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllShapes; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; @@ -11,6 +12,7 @@ import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -61,6 +63,12 @@ public abstract class FunnelBlock extends AbstractDirectionalFunnelBlock { protected void createBlockStateDefinition(Builder builder) { super.createBlockStateDefinition(builder.add(EXTRACTING)); } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } @Override public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java index ce431a197..7376cff5d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java @@ -1,7 +1,5 @@ package com.simibubi.create.content.logistics.block.funnel; -import com.simibubi.create.foundation.advancement.AllTriggers; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.BlockItem; @@ -48,10 +46,8 @@ public class FunnelItem extends BlockItem { .getBlock(); BlockState equivalentBeltFunnel = beltFunnelBlock.getStateForPlacement(ctx) .setValue(BeltFunnelBlock.HORIZONTAL_FACING, direction); - if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) { - AllTriggers.triggerFor(AllTriggers.BELT_FUNNEL, ctx.getPlayer()); + if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) return equivalentBeltFunnel; - } return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index dacf89d4f..c21554a91 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.content.logistics.packet.FunnelFlapPacket; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; @@ -236,6 +237,7 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen(this::supportsDirectBeltInput) .setInsertionHandler(this::handleDirectBeltInput)); + registerAwardables(behaviours, AllAdvancements.FUNNEL); } private boolean supportsAmountOnFilter() { @@ -333,6 +335,7 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn public void onTransfer(ItemStack stack) { AllBlocks.CONTENT_OBSERVER.get() .onFunnelTransfer(level, worldPosition, stack); + award(AllAdvancements.FUNNEL); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java index 9f61e525a..464f6347b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java @@ -24,7 +24,6 @@ import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; @@ -639,7 +638,6 @@ public class AllArmInteractionPointTypes { jukeboxBE.setRecord(toInsert); level.setBlock(pos, cachedState.setValue(JukeboxBlock.HAS_RECORD, true), 2); level.levelEvent(null, 1010, pos, Item.getId(item)); - AllTriggers.triggerForNearbyPlayers(AllTriggers.MUSICAL_ARM, level, pos, 10); } return remainder; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index fe133e03a..4da21dfb9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -65,7 +65,7 @@ public class ArmBlock extends KineticBlock implements ITE, ICogWh BlockPos p_220069_5_, boolean p_220069_6_) { withTileEntityDo(world, pos, ArmTileEntity::redstoneUpdate); } - + @Override public Axis getRotationAxis(BlockState state) { return Axis.Y; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 72f796bb2..45394f290 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -9,8 +9,9 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableTE; import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; +import com.simibubi.create.content.logistics.block.mechanicalArm.AllArmInteractionPointTypes.JukeboxPoint; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Mode; -import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.item.TooltipHelper; @@ -104,6 +105,9 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE Lang.translate("logistics.when_multiple_outputs_available"), this, new SelectionModeValueBox()); selectionMode.requiresWrench(); behaviours.add(selectionMode); + + registerAwardables(behaviours, AllAdvancements.ARM_BLAZE_BURNER, AllAdvancements.ARM_MANY_TARGETS, + AllAdvancements.MECHANICAL_ARM, AllAdvancements.MUSICAL_ARM); } @Override @@ -167,7 +171,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE if (!(armInteractionPoint instanceof AllArmInteractionPointTypes.JukeboxPoint)) continue; BlockState state = level.getBlockState(armInteractionPoint.getPos()); - if (state.getOptionalValue(JukeboxBlock.HAS_RECORD).orElse(false)) + if (state.getOptionalValue(JukeboxBlock.HAS_RECORD) + .orElse(false)) return true; } return false; @@ -205,7 +210,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE protected boolean isOnCeiling() { BlockState state = getBlockState(); - return hasLevel() && state.getOptionalValue(ArmBlock.CEILING).orElse(false); + return hasLevel() && state.getOptionalValue(ArmBlock.CEILING) + .orElse(false); } @Nullable @@ -324,8 +330,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE for (ArmInteractionPoint armInteractionPoint : outputs) { if (armInteractionPoint.isValid()) stack = armInteractionPoint.insert(stack, true); - if (stack.isEmpty()) - break; + if (stack.isEmpty()) + break; } return stack; } @@ -336,7 +342,11 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE ItemStack toInsert = heldItem.copy(); ItemStack remainder = armInteractionPoint.insert(toInsert, false); heldItem = remainder; + + if (armInteractionPoint instanceof JukeboxPoint && remainder.isEmpty()) + award(AllAdvancements.MUSICAL_ARM); } + phase = heldItem.isEmpty() ? Phase.SEARCH_INPUTS : Phase.SEARCH_OUTPUTS; chasedPointProgress = 0; chasedPointIndex = -1; @@ -344,7 +354,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE setChanged(); if (!level.isClientSide) - AllTriggers.triggerForNearbyPlayers(AllTriggers.MECHANICAL_ARM, level, worldPosition, 10); + award(AllAdvancements.MECHANICAL_ARM); } protected void collectItem() { @@ -365,7 +375,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE if (!prevHeld.sameItem(heldItem)) level.playSound(null, worldPosition, SoundEvents.ITEM_PICKUP, SoundSource.BLOCKS, .125f, - .5f + Create.RANDOM.nextFloat() * .25f); + .5f + Create.RANDOM.nextFloat() * .25f); return; } @@ -422,9 +432,9 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE if (!level.isClientSide) { if (outputs.size() >= 10) - AllTriggers.triggerForNearbyPlayers(AllTriggers.ARM_MANY_TARGETS, level, worldPosition, 5); + award(AllAdvancements.ARM_MANY_TARGETS); if (hasBlazeBurner) - AllTriggers.triggerForNearbyPlayers(AllTriggers.ARM_BLAZE_BURNER, level, worldPosition, 5); + award(AllAdvancements.ARM_BLAZE_BURNER); } updateInteractionPoints = false; @@ -438,11 +448,11 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE } else { ListTag pointsNBT = new ListTag(); inputs.stream() - .map(aip -> aip.serialize(worldPosition)) - .forEach(pointsNBT::add); + .map(aip -> aip.serialize(worldPosition)) + .forEach(pointsNBT::add); outputs.stream() - .map(aip -> aip.serialize(worldPosition)) - .forEach(pointsNBT::add); + .map(aip -> aip.serialize(worldPosition)) + .forEach(pointsNBT::add); compound.put("InteractionPoints", pointsNBT); } } @@ -493,8 +503,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE previousPoint = inputs.get(previousIndex); if (previousPhase == Phase.MOVE_TO_OUTPUT && previousIndex < outputs.size()) previousPoint = outputs.get(previousIndex); - previousTarget = - previousPoint == null ? ArmAngleTarget.NO_TARGET : previousPoint.getTargetAngles(worldPosition, ceiling); + previousTarget = previousPoint == null ? ArmAngleTarget.NO_TARGET + : previousPoint.getTargetAngles(worldPosition, ceiling); if (previousPoint != null) previousBaseAngle = previousPoint.getTargetAngles(worldPosition, ceiling).baseAngle; @@ -536,7 +546,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE private class SelectionModeValueBox extends CenteredSideValueBoxTransform { public SelectionModeValueBox() { - super((blockState, direction) -> !direction.getAxis().isVertical()); + super((blockState, direction) -> !direction.getAxis() + .isVertical()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerInputPacket.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerInputPacket.java index 49b6c5a59..48d8f886d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerInputPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerInputPacket.java @@ -57,7 +57,7 @@ public class LinkedControllerInputPacket extends LinkedControllerPacketBase { if (player.isSpectator() && press) return; - + LinkedControllerServerHandler.receivePressed(world, pos, uniqueID, activatedButtons.stream() .map(i -> LinkedControllerItem.toFrequency(heldItem, i)) .collect(Collectors.toList()), press); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerServerHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerServerHandler.java index d715dcdb1..56962c1c5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerServerHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerServerHandler.java @@ -9,11 +9,11 @@ import java.util.Map; import java.util.Map.Entry; import java.util.UUID; -import org.apache.commons.lang3.tuple.Pair; - import com.simibubi.create.Create; import com.simibubi.create.content.logistics.IRedstoneLinkable; import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.WorldAttached; @@ -73,6 +73,10 @@ public class LinkedControllerServerHandler { ManualFrequencyEntry entry = new ManualFrequencyEntry(pos, activated); Create.REDSTONE_LINK_NETWORK_HANDLER.addToNetwork(world, entry); list.add(entry); + + for (IRedstoneLinkable linkable : Create.REDSTONE_LINK_NETWORK_HANDLER.getNetworkOf(world, entry)) + if (linkable instanceof LinkBehaviour lb && lb.isListening()) + AllAdvancements.LINKED_CONTROLLER.awardTo(world.getPlayerByUUID(uniqueID)); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java index 49af7c9d3..30e83ad1d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java @@ -26,6 +26,7 @@ import com.simibubi.create.content.logistics.trains.TrackGraph; import com.simibubi.create.content.logistics.trains.TrackNodeLocation; import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.IEdgePointListener; import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.ITrackSelector; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; @@ -741,6 +742,7 @@ public class Carriage { .getLevel(other.getKey()); sp.teleportTo(level, loc.x, loc.y, loc.z, sp.getYRot(), sp.getXRot()); sp.setPortalCooldown(); + AllAdvancements.TRAIN_PORTAL.awardTo(sp); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java index a65f855ca..3104f3802 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java @@ -381,6 +381,15 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { level.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, v.x, v.y, v.z, 0, .04, 0); } } + + @Override + protected void addPassenger(Entity pPassenger) { + super.addPassenger(pPassenger); + if (!(pPassenger instanceof Player player)) + return; + player.getPersistentData() + .put("ContraptionMountLocation", VecHelper.writeNBT(player.position())); + } private Set particleSlice = new HashSet<>(); private float particleAvgY = 0; @@ -625,11 +634,15 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { || carriage.getTrailingPoint().edge != null && carriage.getTrailingPoint().edge.isTurn()) topSpeed = carriage.train.maxTurnSpeed(); - if (slow) + if (slow) topSpeed /= 4; carriage.train.targetSpeed = Math.min(topSpeed, cappedTopSpeed) * targetSpeed; boolean counteringAcceleration = Math.abs(Math.signum(targetSpeed) - Math.signum(carriage.train.speed)) > 1.5f; + + if (slow && !counteringAcceleration) + carriage.train.backwardsDriver = player; + carriage.train.manualTick = true; carriage.train.approachTargetSpeed(counteringAcceleration ? 2 : 1); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java index a71103d6e..5c7950d45 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java @@ -8,6 +8,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @@ -43,6 +44,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.station import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleRuntime; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleRuntime.State; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.Couple; @@ -125,6 +127,9 @@ public class Train { int tickOffset; double[] stress; + // advancements + public Player backwardsDriver; + public Train(UUID id, UUID owner, TrackGraph graph, List carriages, List carriageSpacing, boolean doubleEnded) { @@ -380,6 +385,7 @@ public class Train { if (index == 0) { distance = actualDistance; collideWithOtherTrains(level, carriage); + backwardsDriver = null; if (graph == null) return; } @@ -439,6 +445,11 @@ public class Train { SignalEdgeGroup signalEdgeGroup = Create.RAILWAYS.signalEdgeGroups.get(groupId); if (signalEdgeGroup == null) return false; + + if ((runtime.getSchedule() == null || runtime.paused) && signalEdgeGroup.isOccupiedUnless(this)) + carriages.forEach(c -> c.forEachPresentEntity(cce -> cce.getControllingPlayer() + .ifPresent(uuid -> AllAdvancements.RED_SIGNAL.awardTo(cce.level.getPlayerByUUID(uuid))))); + signalEdgeGroup.reserved = signal; occupy(groupId, signal.id); return false; @@ -674,6 +685,21 @@ public class Train { graph = null; syncTrackGraphChanges(); status.crash(); + + for (Carriage carriage : carriages) + carriage.forEachPresentEntity(e -> e.getIndirectPassengers() + .forEach(entity -> { + if (!(entity instanceof Player p)) + return; + Optional controllingPlayer = e.getControllingPlayer(); + if (controllingPlayer.isPresent() && controllingPlayer.get() + .equals(p.getUUID())) + return; + AllAdvancements.TRAIN_CRASH.awardTo(p); + })); + + if (backwardsDriver != null) + AllAdvancements.TRAIN_CRASH_BACKWARDS.awardTo(backwardsDriver); } public boolean disassemble(Direction assemblyDirection, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java index 006a97a91..d1b5d7b1d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java @@ -15,6 +15,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal. import com.simibubi.create.content.logistics.trains.track.BezierTrackPointLocation; import com.simibubi.create.content.logistics.trains.track.TrackBlockOutline.BezierPointSelection; import com.simibubi.create.content.logistics.trains.track.TrackTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -140,6 +141,10 @@ public class TrackTargetingBlockItem extends BlockItem { itemInHand.setTag(null); player.displayClientMessage(Lang.translate("track_target.success") .withStyle(ChatFormatting.GREEN), true); + + if (type == EdgePointType.SIGNAL) + AllAdvancements.SIGNAL.awardTo(player); + return useOn; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationBlock.java index 7fafdd15c..c5479ed70 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.depot.SharedDepotBlockMethods; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.gui.ScreenOpener; @@ -17,6 +18,7 @@ import net.minecraft.core.NonNullList; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; @@ -67,6 +69,12 @@ public class StationBlock extends Block implements ITE, IWren updateWater(pLevel, pState, pCurrentPos); return pState; } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); + AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer); + } @Override public FluidState getFluidState(BlockState pState) { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java index d54106789..cc14c20d8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java @@ -38,6 +38,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePoi import com.simibubi.create.content.logistics.trains.management.edgePoint.TrackTargetingBehaviour; import com.simibubi.create.content.logistics.trains.management.schedule.Schedule; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleItem; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; @@ -95,7 +96,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable int flagYRot = -1; boolean flagFlipped; - + public Component lastDisassembledTrainName; public StationTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { @@ -113,6 +114,8 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable behaviours.add(depotBehaviour = new DepotBehaviour(this).onlyAccepts(AllItems.SCHEDULE::isIn) .withCallback(s -> applyAutoSchedule())); depotBehaviour.addSubBehaviours(behaviours); + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS, AllAdvancements.TRAIN, + AllAdvancements.LONG_TRAIN, AllAdvancements.CONDUCTOR); } @Override @@ -611,15 +614,19 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable Train train = new Train(UUID.randomUUID(), playerUUID, graph, carriages, spacing, contraptions.stream() .anyMatch(CarriageContraption::hasBackwardControls)); - + if (lastDisassembledTrainName != null) { train.name = lastDisassembledTrainName; lastDisassembledTrainName = null; } - for (int i = 0; i < contraptions.size(); i++) - carriages.get(i) - .setContraption(level, contraptions.get(i)); + for (int i = 0; i < contraptions.size(); i++) { + CarriageContraption contraption = contraptions.get(i); + Carriage carriage = carriages.get(i); + carriage.setContraption(level, contraption); + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); + } GlobalStation station = getStation(); if (station != null) { @@ -631,6 +638,10 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable Create.RAILWAYS.addTrain(train); AllPackets.channel.send(PacketDistributor.ALL.noArg(), new TrainPacket(train, true)); clearException(); + + award(AllAdvancements.TRAIN); + if (contraptions.size() >= 6) + award(AllAdvancements.LONG_TRAIN); } public void cancelAssembly() { @@ -687,6 +698,8 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable Train imminentTrain = station.getImminentTrain(); if (imminentTrain == null || imminentTrain.getCurrentStation() != station) return; + + award(AllAdvancements.CONDUCTOR); imminentTrain.runtime.setSchedule(schedule, true); AllSoundEvents.CONFIRM.playOnServer(level, worldPosition, 1, 1); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java index ec5d27ed6..36772798e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.logistics.trains.entity.CarriageContraption; import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -116,6 +117,7 @@ public class ScheduleItem extends Item implements MenuProvider { } train.runtime.setSchedule(schedule, false); + AllAdvancements.CONDUCTOR.awardTo(pPlayer); AllSoundEvents.CONFIRM.playOnServer(pPlayer.level, pPlayer.blockPosition(), 1, 1); pPlayer.displayClientMessage(Lang.translate("schedule.applied_to_train") .withStyle(ChatFormatting.GREEN), true); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java index dddf75263..e8f75197b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java @@ -13,6 +13,7 @@ import com.simibubi.create.CreateClient; import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer; import com.simibubi.create.content.logistics.trains.BezierConnection; import com.simibubi.create.content.logistics.trains.ITrackBlock; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.Couple; @@ -438,6 +439,10 @@ public class TrackPlacement { BlockItem paveItem = (BlockItem) offhandItem.getItem(); paveTracks(level, info, paveItem, false); } + + if (info.curve != null && info.curve.getLength() > 29) + AllAdvancements.LONG_BEND.awardTo(player); + return placeTracks(level, info, state1, state2, targetPos1, targetPos2, false); } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java b/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java new file mode 100644 index 000000000..1729f3782 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java @@ -0,0 +1,132 @@ +package com.simibubi.create.foundation.advancement; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; + +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.util.FakePlayer; + +public class AdvancementBehaviour extends TileEntityBehaviour { + + public static final BehaviourType TYPE = new BehaviourType<>(); + + private UUID playerId; + private Set advancements; + + public AdvancementBehaviour(SmartTileEntity te, CreateAdvancement... advancements) { + super(te); + this.advancements = new HashSet<>(); + add(advancements); + } + + public void add(CreateAdvancement... advancements) { + for (CreateAdvancement advancement : advancements) + this.advancements.add(advancement); + } + + public boolean isOwnerPresent() { + return playerId != null; + } + + public void setPlayer(UUID id) { + Player player = getWorld().getPlayerByUUID(id); + if (player == null) + return; + playerId = id; + removeAwarded(); + tileEntity.setChanged(); + } + + @Override + public void initialize() { + super.initialize(); + removeAwarded(); + } + + private void removeAwarded() { + Player player = getPlayer(); + if (player == null) + return; + advancements.removeIf(c -> c.isAlreadyAwardedTo(player)); + if (advancements.isEmpty()) { + playerId = null; + tileEntity.setChanged(); + } + } + + public void awardPlayerIfNear(CreateAdvancement advancement, int maxDistance) { + Player player = getPlayer(); + if (player == null) + return; + if (player.distanceToSqr(Vec3.atCenterOf(getPos())) > maxDistance * maxDistance) + return; + award(advancement, player); + } + + public void awardPlayer(CreateAdvancement advancement) { + Player player = getPlayer(); + if (player == null) + return; + award(advancement, player); + } + + private void award(CreateAdvancement advancement, Player player) { + if (advancements.contains(advancement)) + advancement.awardTo(player); + removeAwarded(); + } + + private Player getPlayer() { + if (playerId == null) + return null; + return getWorld().getPlayerByUUID(playerId); + } + + @Override + public void write(CompoundTag nbt, boolean clientPacket) { + super.write(nbt, clientPacket); + if (playerId != null) + nbt.putUUID("Owner", playerId); + } + + @Override + public void read(CompoundTag nbt, boolean clientPacket) { + super.read(nbt, clientPacket); + if (nbt.contains("Owner")) + playerId = nbt.getUUID("Owner"); + } + + @Override + public BehaviourType getType() { + return TYPE; + } + + public static void tryAward(BlockGetter reader, BlockPos pos, CreateAdvancement advancement) { + AdvancementBehaviour behaviour = TileEntityBehaviour.get(reader, pos, AdvancementBehaviour.TYPE); + if (behaviour != null) + behaviour.awardPlayer(advancement); + } + + public static void setPlacedBy(Level worldIn, BlockPos pos, LivingEntity placer) { + AdvancementBehaviour behaviour = TileEntityBehaviour.get(worldIn, pos, TYPE); + if (behaviour == null) + return; + if (placer instanceof FakePlayer) + return; + if (placer instanceof ServerPlayer) + behaviour.setPlayer(placer.getUUID()); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index e6b8798ff..6a55e2996 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -1,10 +1,17 @@ package com.simibubi.create.foundation.advancement; +import static com.simibubi.create.foundation.advancement.CreateAdvancement.TaskType.EXPERT; +import static com.simibubi.create.foundation.advancement.CreateAdvancement.TaskType.NOISY; +import static com.simibubi.create.foundation.advancement.CreateAdvancement.TaskType.SECRET; +import static com.simibubi.create.foundation.advancement.CreateAdvancement.TaskType.SILENT; + import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import java.util.function.Consumer; -import java.util.function.Supplier; +import java.util.function.UnaryOperator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -12,398 +19,601 @@ import org.apache.logging.log4j.Logger; import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllFluids; import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; +import com.simibubi.create.foundation.advancement.CreateAdvancement.Builder; import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.Advancement.Builder; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.PlacedBlockTrigger; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; import net.minecraft.data.HashCache; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Items; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.material.FlowingFluid; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.Fluids; -@SuppressWarnings("unused") // dont warn about unused avancements public class AllAdvancements implements DataProvider { - static final String LANG = "advancement." + Create.ID + "."; - - public void register(Consumer t) { - String id = Create.ID; - - Advancement root = Advancement.Builder.advancement() - .display(AllItems.BRASS_HAND.asStack(), new TranslatableComponent(LANG + "root"), - new TranslatableComponent(LANG + "root.desc"), - new ResourceLocation(Create.ID, "textures/gui/advancements.png"), FrameType.TASK, false, - false, false) - .addCriterion("0", InventoryChangeTrigger.TriggerInstance.hasItems(new ItemLike[] {})) - .save(t, id + ":root"); - - Advancement andesite_alloy = - advancement("andesite_alloy", AllItems.ANDESITE_ALLOY.get(), TaskType.NORMAL).parent(root) - .addCriterion("0", itemGathered(AllItems.ANDESITE_ALLOY.get())) - .save(t, id + ":andesite_alloy"); - - kineticsBranch(t, andesite_alloy); - - Advancement aesthetics = advancement("aesthetics", AllBlocks.WOODEN_BRACKET.get(), TaskType.NORMAL) - .parent(andesite_alloy) - .addCriterion("0", AllTriggers.BRACKET_APPLY_TRIGGER.forEntries(AllBlocks.SHAFT.get())) - .addCriterion("1", - AllTriggers.BRACKET_APPLY_TRIGGER.forEntries(AllBlocks.COGWHEEL.get(), AllBlocks.LARGE_COGWHEEL.get())) - .addCriterion("2", AllTriggers.BRACKET_APPLY_TRIGGER.forEntries(AllBlocks.FLUID_PIPE.get())) - .save(t, id + ":aesthetics"); - - Advancement reinforced = - advancement("reinforced", AllBlocks.ANDESITE_ENCASED_SHAFT.get(), TaskType.NORMAL).parent(aesthetics) - .addCriterion("0", AllTriggers.CASING_SHAFT.instance()) - .addCriterion("1", AllTriggers.CASING_BELT.instance()) - .addCriterion("2", AllTriggers.CASING_PIPE.instance()) - .save(t, id + ":reinforced"); - - Advancement water_wheel = - advancement("water_wheel", AllBlocks.WATER_WHEEL.get(), TaskType.NORMAL).parent(andesite_alloy) - .addCriterion("0", placeBlock(AllBlocks.WATER_WHEEL.get())) - .addCriterion("1", AllTriggers.WATER_WHEEL.instance()) - .save(t, id + ":water_wheel"); - - Advancement lava_wheel = advancement("lava_wheel", Items.LAVA_BUCKET, TaskType.SECRET).parent(water_wheel) - .addCriterion("0", AllTriggers.LAVA_WHEEL.instance()) - .save(t, id + ":lava_wheel"); - - Advancement chocolate_wheel = advancement("chocolate_wheel", AllFluids.CHOCOLATE.get() - .getBucket(), TaskType.SECRET).parent(water_wheel) - .addCriterion("0", AllTriggers.CHOCOLATE_WHEEL.instance()) - .save(t, id + ":chocolate_wheel"); - - Advancement millstone = - kinecticAdvancement("millstone", AllBlocks.MILLSTONE.get(), TaskType.NORMAL).parent(andesite_alloy) - .save(t, id + ":millstone"); - - Advancement cuckoo = - advancement("cuckoo", AllBlocks.CUCKOO_CLOCK.get(), TaskType.NORMAL).parent(andesite_alloy) - .addCriterion("0", AllTriggers.CUCKOO.instance()) - .save(t, id + ":cuckoo"); - - Advancement windmill = - advancement("windmill", AllBlocks.WINDMILL_BEARING.get(), TaskType.NORMAL).parent(andesite_alloy) - .addCriterion("0", AllTriggers.WINDMILL.instance()) - .save(t, id + ":windmill"); - - Advancement maxed_windmill = - advancement("maxed_windmill", AllBlocks.WINDMILL_BEARING.get(), TaskType.GOAL).parent(windmill) - .addCriterion("0", AllTriggers.MAXED_WINDMILL.instance()) - .save(t, id + ":maxed_windmill"); - - Advancement andesite_casing = - advancement("andesite_casing", AllBlocks.ANDESITE_CASING.get(), TaskType.GOAL).parent(andesite_alloy) - .addCriterion("0", itemGathered(AllBlocks.ANDESITE_CASING.get())) - .save(t, id + ":andesite_casing"); - - Advancement drill = kinecticAdvancement("mechanical_drill", AllBlocks.MECHANICAL_DRILL.get(), TaskType.NORMAL) - .parent(andesite_casing) - .save(t, id + ":mechanical_drill"); - - Advancement press = - advancement("press", AllBlocks.MECHANICAL_PRESS.get(), TaskType.MILESTONE).parent(andesite_casing) - .addCriterion("0", AllTriggers.BONK.instance()) - .save(t, id + ":press"); - - Advancement fan = advancement("fan", AllBlocks.ENCASED_FAN.get(), TaskType.NORMAL).parent(press) - .addCriterion("0", AllTriggers.FAN_PROCESSING.forEntries(InWorldProcessing.Type.NONE)) - .save(t, id + ":fan"); - - Advancement fan_lava = advancement("fan_lava", Items.LAVA_BUCKET, TaskType.NORMAL).parent(fan) - .addCriterion("0", AllTriggers.FAN_PROCESSING.forEntries(InWorldProcessing.Type.BLASTING)) - .save(t, id + ":fan_lava"); - - Advancement fan_smoke = advancement("fan_smoke", Items.CAMPFIRE, TaskType.NORMAL).parent(fan) - .addCriterion("0", AllTriggers.FAN_PROCESSING.forEntries(InWorldProcessing.Type.SMOKING)) - .save(t, id + ":fan_smoke"); - - Advancement fan_water = advancement("fan_water", Items.WATER_BUCKET, TaskType.NORMAL).parent(fan) - .addCriterion("0", AllTriggers.FAN_PROCESSING.forEntries(InWorldProcessing.Type.SPLASHING)) - .save(t, id + ":fan_water"); - - Advancement rose_quartz = - itemAdvancement("polished_rose_quartz", AllItems.POLISHED_ROSE_QUARTZ, TaskType.NORMAL) - .parent(andesite_casing) - .save(t, id + ":polished_rose_quartz"); - - Advancement electron_tube = - itemAdvancement("electron_tube", AllItems.ELECTRON_TUBE, TaskType.NORMAL).parent(rose_quartz) - .save(t, id + ":electron_tube"); - - Advancement saw = - kinecticAdvancement("mechanical_saw", AllBlocks.MECHANICAL_SAW.get(), TaskType.NORMAL).parent(press) - .save(t, id + ":mechanical_saw"); - - Advancement basin = advancement("basin", AllBlocks.BASIN.get(), TaskType.NORMAL).parent(press) - .addCriterion("0", placeBlock(AllBlocks.BASIN.get())) - .addCriterion("1", AllTriggers.BASIN_THROW.instance()) - .save(t, id + ":basin"); - - Advancement mixer = advancement("mixer", AllBlocks.MECHANICAL_MIXER.get(), TaskType.MILESTONE) - .addCriterion("0", placeBlock(AllBlocks.MECHANICAL_MIXER.get())) - .addCriterion("1", AllTriggers.MIXER_MIX.instance()) - .parent(basin) - .save(t, id + ":mixer"); - - Advancement compact = advancement("compact", Blocks.IRON_BLOCK, TaskType.NORMAL) - .addCriterion("0", AllTriggers.PRESS_COMPACT.instance()) - .parent(basin) - .save(t, id + ":compact"); - - Advancement blaze_burner = - itemAdvancement("blaze_burner", AllBlocks.BLAZE_BURNER, TaskType.NORMAL).parent(mixer) - .save(t, id + ":blaze_burner"); - - Advancement brass = itemAdvancement("brass", AllItems.BRASS_INGOT, TaskType.NORMAL).parent(blaze_burner) - .save(t, id + ":brass"); - - brassAge(t, brass); - copperAge(t, press); - } - - void kineticsBranch(Consumer t, Advancement root) { - String id = Create.ID; - - Advancement its_alive = advancement("its_alive", AllBlocks.COGWHEEL.get(), TaskType.NORMAL).parent(root) - .addCriterion("0", AllTriggers.ROTATION.instance()) - .save(t, id + ":its_alive"); - - Advancement belt = advancement("belt", AllItems.BELT_CONNECTOR.get(), TaskType.NORMAL).parent(its_alive) - .addCriterion("0", AllTriggers.CONNECT_BELT.instance()) - .save(t, id + ":belt"); - - Advancement tunnel = advancement("tunnel", AllBlocks.ANDESITE_TUNNEL.get(), TaskType.NORMAL).parent(belt) - .addCriterion("0", AllTriggers.PLACE_TUNNEL.instance()) - .save(t, id + ":tunnel"); - - Advancement splitter_tunnel = - advancement("splitter_tunnel", AllBlocks.BRASS_TUNNEL.get(), TaskType.MILESTONE).parent(tunnel) - .addCriterion("0", AllTriggers.CONNECT_TUNNEL.instance()) - .save(t, id + ":splitter_tunnel"); - - Advancement chute = advancement("chute", AllBlocks.CHUTE.get(), TaskType.NORMAL).parent(belt) - .addCriterion("0", placeBlock(AllBlocks.CHUTE.get())) - .save(t, id + ":chute"); - - Advancement upward_chute = - advancement("upward_chute", AllBlocks.ENCASED_FAN.get(), TaskType.NORMAL).parent(chute) - .addCriterion("0", AllTriggers.UPWARD_CHUTE.instance()) - .save(t, id + ":upward_chute"); - - Advancement belt_funnel = - advancement("belt_funnel", AllBlocks.ANDESITE_FUNNEL.get(), TaskType.NORMAL).parent(belt) - .addCriterion("0", AllTriggers.BELT_FUNNEL.instance()) - .save(t, id + ":belt_funnel"); - - Advancement belt_funnel_kiss = - advancement("belt_funnel_kiss", AllBlocks.BRASS_FUNNEL.get(), TaskType.SECRET).parent(belt_funnel) - .addCriterion("0", AllTriggers.BELT_FUNNEL_KISS.instance()) - .save(t, id + ":belt_funnel_kiss"); - - Advancement wrench = itemAdvancement("wrench", AllItems.WRENCH, TaskType.NORMAL).parent(its_alive) - .save(t, id + ":wrench"); - - Advancement goggles = itemAdvancement("goggles", AllItems.GOGGLES, TaskType.NORMAL).parent(its_alive) - .save(t, id + ":goggles"); - - Advancement speed_gauge = - kinecticAdvancement("speedometer", AllBlocks.SPEEDOMETER.get(), TaskType.NORMAL).parent(goggles) - .save(t, id + ":speedometer"); - - Advancement stress_gauge = - kinecticAdvancement("stressometer", AllBlocks.STRESSOMETER.get(), TaskType.NORMAL).parent(goggles) - .save(t, id + ":stressometer"); - - Advancement shifting_gears = - advancement("shifting_gears", AllBlocks.LARGE_COGWHEEL.get(), TaskType.NORMAL).parent(its_alive) - .addCriterion("0", AllTriggers.SHIFTING_GEARS.instance()) - .save(t, id + ":shifting_gears"); - - Advancement overstressed = advancement("overstressed", Items.BARRIER, TaskType.SECRET).parent(its_alive) - .addCriterion("0", AllTriggers.OVERSTRESSED.instance()) - .save(t, id + ":overstressed"); - - } - - void copperAge(Consumer t, Advancement root) { - String id = Create.ID; - - Advancement copper_casing = - advancement("copper_casing", AllBlocks.COPPER_CASING.get(), TaskType.GOAL).parent(root) - .addCriterion("0", itemGathered(AllBlocks.COPPER_CASING.get())) - .save(t, id + ":copper_casing"); - - Advancement item_drain = - advancement("item_drain", AllBlocks.ITEM_DRAIN.get(), TaskType.NORMAL).parent(copper_casing) - .addCriterion("0", AllTriggers.ITEM_DRAIN.instance()) - .save(t, id + ":item_drain"); - - Advancement chained_item_drain = - advancement("chained_item_drain", AllBlocks.ITEM_DRAIN.get(), TaskType.SECRET).parent(item_drain) - .addCriterion("0", AllTriggers.CHAINED_ITEM_DRAIN.instance()) - .save(t, id + ":chained_item_drain"); - - Advancement spout = advancement("spout", AllBlocks.SPOUT.get(), TaskType.NORMAL).parent(copper_casing) - .addCriterion("0", AllTriggers.SPOUT.instance()) - .save(t, id + ":spout"); - - Advancement spout_potion = advancement("spout_potion", Items.POTION, TaskType.GOAL).parent(spout) - .addCriterion("0", AllTriggers.SPOUT_POTION.instance()) - .save(t, id + ":spout_potion"); - - Advancement chocolate = itemAdvancement("chocolate", () -> AllFluids.CHOCOLATE.get() - .getBucket(), TaskType.GOAL).parent(spout) - .save(t, id + ":chocolate"); - - Advancement glass_pipe = - advancement("glass_pipe", AllBlocks.FLUID_PIPE.get(), TaskType.NORMAL).parent(copper_casing) - .addCriterion("0", AllTriggers.GLASS_PIPE.instance()) - .save(t, id + ":glass_pipe"); - - Advancement pipe_collision = - advancement("pipe_collision", AllBlocks.FLUID_VALVE.get(), TaskType.NORMAL).parent(glass_pipe) - .addCriterion("0", AllTriggers.PIPE_COLLISION.instance()) - .save(t, id + ":pipe_collision"); - - Advancement pipe_spill = advancement("pipe_spill", Items.BUCKET, TaskType.NORMAL).parent(glass_pipe) - .addCriterion("0", AllTriggers.PIPE_SPILL.instance()) - .save(t, id + ":pipe_spill"); - - Advancement hose_pulley = - advancement("hose_pulley", AllBlocks.HOSE_PULLEY.get(), TaskType.NORMAL).parent(pipe_spill) - .addCriterion("0", AllTriggers.HOSE_PULLEY.instance()) - .save(t, id + ":hose_pulley"); - - Advancement infinite_water = - advancement("infinite_water", Items.WATER_BUCKET, TaskType.NORMAL).parent(hose_pulley) - .addCriterion("0", isInfinite(Fluids.WATER)) - .save(t, id + ":infinite_water"); - - Advancement infinite_lava = - advancement("infinite_lava", Items.LAVA_BUCKET, TaskType.GOAL).parent(hose_pulley) - .addCriterion("0", isInfinite(Fluids.LAVA)) - .save(t, id + ":infinite_lava"); - - Advancement infinite_chocolate = advancement("infinite_chocolate", AllFluids.CHOCOLATE.get() - .getBucket(), TaskType.CHALLENGE).parent(hose_pulley) - .addCriterion("0", isInfinite(AllFluids.CHOCOLATE.get())) - .save(t, id + ":infinite_chocolate"); - } - - void brassAge(Consumer t, Advancement root) { - String id = Create.ID; - - Advancement brass_casing = - advancement("brass_casing", AllBlocks.BRASS_CASING.get(), TaskType.GOAL).parent(root) - .addCriterion("0", itemGathered(AllBlocks.BRASS_CASING.get())) - .save(t, id + ":brass_casing"); - - Advancement nixie_tube = - advancement("nixie_tube", AllBlocks.ORANGE_NIXIE_TUBE.get(), TaskType.NORMAL).parent(brass_casing) - .addCriterion("0", placeBlock(AllBlocks.ORANGE_NIXIE_TUBE.get())) - .save(t, id + ":nixie_tube"); - - Advancement crafter = kinecticAdvancement("crafter", AllBlocks.MECHANICAL_CRAFTER.get(), TaskType.MILESTONE) - .parent(brass_casing) - .save(t, id + ":crafter"); - - Advancement flywheel = advancement("flywheel", AllBlocks.FLYWHEEL.get(), TaskType.NORMAL).parent(crafter) - .addCriterion("0", AllTriggers.FLYWHEEL.instance()) - .save(t, id + ":flywheel"); - - Advancement clockwork_bearing = - advancement("clockwork_bearing", AllBlocks.CLOCKWORK_BEARING.get(), TaskType.NORMAL) - .parent(brass_casing) - .addCriterion("0", AllTriggers.CLOCKWORK_BEARING.instance()) - .save(t, id + ":clockwork_bearing"); - - Advancement mechanical_arm = advancement("mechanical_arm", AllBlocks.MECHANICAL_ARM.get(), TaskType.MILESTONE) - .addCriterion("0", AllTriggers.MECHANICAL_ARM.instance()) - .parent(brass_casing) - .save(t, id + ":mechanical_arm"); - - Advancement musical_arm = advancement("musical_arm", Items.MUSIC_DISC_13, TaskType.MILESTONE) - .addCriterion("0", AllTriggers.MUSICAL_ARM.instance()) - .parent(mechanical_arm) - .save(t, id + ":musical_arm"); - - Advancement arm_many_targets = advancement("arm_many_targets", AllBlocks.BRASS_FUNNEL.get(), TaskType.MILESTONE) - .addCriterion("0", AllTriggers.ARM_MANY_TARGETS.instance()) - .parent(mechanical_arm) - .save(t, id + ":arm_many_targets"); - - Advancement arm_blaze_burner = advancement("arm_blaze_burner", AllBlocks.BLAZE_BURNER.get(), TaskType.NORMAL) - .addCriterion("0", AllTriggers.ARM_BLAZE_BURNER.instance()) - .parent(mechanical_arm) - .save(t, id + ":arm_blaze_burner"); - - Advancement deployer = - kinecticAdvancement("deployer", AllBlocks.DEPLOYER.get(), TaskType.MILESTONE).parent(brass_casing) - .save(t, id + ":deployer"); - - Advancement clockwork_component = - itemAdvancement("precision_mechanism", AllItems.PRECISION_MECHANISM, TaskType.NORMAL).parent(deployer) - .save(t, id + ":precision_mechanism"); - - Advancement clockwork_component_eob = deadEnd().parent(clockwork_component) - .addCriterion("0", itemGathered(AllItems.PRECISION_MECHANISM.get())) - .save(t, id + ":clockwork_component_eob"); - - Advancement extendo_grip = - advancement("extendo_grip", AllItems.EXTENDO_GRIP.get(), TaskType.NORMAL).parent(clockwork_component) - .addCriterion("0", AllTriggers.EXTENDO.instance()) - .save(t, id + ":extendo_grip"); - - Advancement potato_cannon = - advancement("potato_cannon", AllItems.POTATO_CANNON.get(), TaskType.GOAL).parent(clockwork_component) - .addCriterion("0", AllTriggers.POTATO_KILL.instance()) - .save(t, id + ":potato_cannon"); - - Advancement dual_extendo_grip = - advancement("dual_extendo_grip", AllItems.EXTENDO_GRIP.get(), TaskType.SECRET).parent(extendo_grip) - .addCriterion("0", AllTriggers.GIGA_EXTENDO.instance()) - .save(t, id + ":dual_extendo_grip"); - - Advancement speed_controller = - kinecticAdvancement("speed_controller", AllBlocks.ROTATION_SPEED_CONTROLLER.get(), TaskType.NORMAL) - .parent(clockwork_component) - .save(t, id + ":speed_controller"); - - Advancement fist_bump = advancement("fist_bump", AllBlocks.DEPLOYER.get(), TaskType.SECRET).parent(deployer) - .addCriterion("0", AllTriggers.DEPLOYER_BOOP.instance()) - .save(t, id + ":fist_bump"); - - Advancement crushing_wheel = - advancement("crushing_wheel", AllBlocks.CRUSHING_WHEEL.get(), TaskType.MILESTONE).parent(crafter) - .addCriterion("0", itemGathered(AllBlocks.CRUSHING_WHEEL.get())) - .save(t, id + ":crushing_wheel"); - - Advancement blaze_cake = - itemAdvancement("blaze_cake", AllItems.BLAZE_CAKE, TaskType.NORMAL).parent(crushing_wheel) - .save(t, id + ":blaze_cake"); - - Advancement symmetry_wand = - itemAdvancement("wand_of_symmetry", AllItems.WAND_OF_SYMMETRY, TaskType.NORMAL).parent(clockwork_component) - .save(t, id + ":wand_of_symmetry"); - + public static final List ENTRIES = new ArrayList<>(); + public static final CreateAdvancement START = null, + + /* + * Some ids have trailing 0's to modify their vertical position on the tree + * (Advancement ordering seems to be deterministic but hash based) + */ + + ROOT = create("root", b -> b.icon(AllItems.BRASS_HAND) + .title("Welcome to Create") + .description("Here be Contraptions") + .awardedForFree() + .special(SILENT)), + + // Andesite - Central Branch + + ANDESITE = create("andesite_alloy", b -> b.icon(AllItems.ANDESITE_ALLOY) + .title("Sturdier Rocks") + .description("Obtain some Andesite Alloy, Create's most important resource") + .after(ROOT) + .whenIconCollected()), + + ANDESITE_CASING = create("andesite_casing", b -> b.icon(AllBlocks.ANDESITE_CASING) + .title("The Andesite Age") + .description("Apply Andesite Alloy to wood creating a basic casing for your machines") + .after(ANDESITE) + .special(NOISY)), + + PRESS = create("mechanical_press", b -> b.icon(AllBlocks.MECHANICAL_PRESS) + .title("Bonk") + .description("Create some sheets in a Mechanical Press") + .after(ANDESITE_CASING) + .special(NOISY)), + + ENCASED_FAN = create("encased_fan", b -> b.icon(AllBlocks.ENCASED_FAN) + .title("Wind maker") + .description("Place and activate an Encased Fan") + .after(PRESS)), + + FAN_PROCESSING = create("fan_processing", b -> b.icon(AllItems.PROPELLER) + .title("Processing by Particle") + .description("Use an Encased Fan to process materials") + .after(ENCASED_FAN)), + + SAW_PROCESSING = create("saw_processing", b -> b.icon(AllBlocks.MECHANICAL_SAW) + .title("Workshop's most feared") + .description("Use an upright Mechanical Saw to process materials") + .after(FAN_PROCESSING)), + + COMPACTING = create("compacting", b -> b.icon(Blocks.IRON_BLOCK) + .title("Compactification") + .description("Use a Press and a Basin to create less items from more items") + .after(SAW_PROCESSING)), + + BELT = create("belt", b -> b.icon(AllItems.BELT_CONNECTOR) + .title("Kelp Drive") + .description("Connect two Shafts with a Mechanical Belt") + .after(COMPACTING)), + + FUNNEL = create("funnel", b -> b.icon(AllBlocks.ANDESITE_FUNNEL) + .title("Airport Aesthetic") + .description("Extract or insert items into a container using a Funnel") + .after(BELT)), + + CHUTE = create("chute", b -> b.icon(AllBlocks.CHUTE) + .title("Vertical Logistics") + .description("Transport some items by Chute") + .after(FUNNEL)), + + MIXER = create("mechanical_mixer", b -> b.icon(AllBlocks.MECHANICAL_MIXER) + .title("Mixing it up") + .description("Combine ingredients in a Mechanical Mixer") + .after(CHUTE)), + + BLAZE_BURNER = create("burner", b -> b.icon(AllBlocks.BLAZE_BURNER) + .title("Sentient Fireplace") + .description("Obtain a Blaze Burner") + .whenIconCollected() + .after(MIXER)), + + // Andesite - Top Branch + + WATER_WHEEL = create("water_wheel", b -> b.icon(AllBlocks.WATER_WHEEL) + .title("Harnessed Hydraulics") + .description("Place a Water Wheel and use it to generate torque") + .after(ANDESITE)), + + WINDMILL = create("windmill", b -> b.icon(AllBlocks.SAIL_FRAME) + .title("A Mild Breeze") + .description("Assemble a windmill and use it to generate torque") + .after(WATER_WHEEL)), + + COGS = create("shifting_gears", b -> b.icon(AllBlocks.COGWHEEL) + .title("Shifting Gears") + .description( + "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption") + .after(WINDMILL)), + + MILLSTONE = create("millstone", b -> b.icon(AllBlocks.MILLSTONE) + .title("Embrace the Grind") + .description("Use a Millstone to pulverise materials") + .after(COGS)), + + SUPER_GLUE = create("super_glue", b -> b.icon(AllItems.SUPER_GLUE) + .title("Area of Connect") + .description("Super Glue some blocks into a group") + .after(MILLSTONE)), + + CONTRAPTION_ACTORS = create("contraption_actors", b -> b.icon(AllBlocks.MECHANICAL_HARVESTER) + .title("Moving with Purpose") + .description("Create a contraption with drills, saws or harvesters on board") + .after(SUPER_GLUE)), + + PSI = create("portable_storage_interface", b -> b.icon(AllBlocks.PORTABLE_STORAGE_INTERFACE) + .title("Drive-by exchange") + .description("Use a Portable Storage Interface to take or insert items into a contraption") + .after(CONTRAPTION_ACTORS)), + + WRENCH_GOGGLES = create("wrench_goggles", b -> b.icon(AllItems.WRENCH) + .title("Kitted out") + .description("Equip Engineer's goggles and a Wrench") + .whenIconCollected() + .whenItemCollected(AllItems.GOGGLES) + .after(PSI)), + + STRESSOMETER = create("stressometer", b -> b.icon(AllBlocks.STRESSOMETER) + .title("Stress for Nerds") + .description("Get an exact readout with the help of Goggles and a Stressometer") + .after(WRENCH_GOGGLES)), + + CUCKOO_CLOCK = create("cuckoo_clock", b -> b.icon(AllBlocks.CUCKOO_CLOCK) + .title("Is it Time?") + .description("Witness your Cuckoo Clock announce bedtime") + .after(STRESSOMETER) + .special(NOISY)), + + // Andesite - Expert Branch + + WINDMILL_MAXED = create("windmill_maxed", b -> b.icon(AllBlocks.SAIL) + .title("A Strong Breeze") + .description("Assemble a windmill of maximum strength") + .after(ANDESITE) + .special(EXPERT)), + + EJECTOR_MAXED = create("ejector_maxed", b -> b.icon(AllBlocks.WEIGHTED_EJECTOR) + .title("Springboard Champion") + .description("Get launched for more than 30 blocks by a Weighted Ejector") + .after(WINDMILL_MAXED) + .special(EXPERT)), + + PULLEY_MAXED = create("pulley_maxed", b -> b.icon(AllBlocks.ROPE_PULLEY) + .title("Rope to Nowhere") + .description("Extend a Rope Pulley over 200 blocks deep") + .after(EJECTOR_MAXED) + .special(EXPERT)), + + CART_PICKUP = create("cart_pickup", b -> b.icon(AllItems.CHEST_MINECART_CONTRAPTION) + .title("Strong Arms") + .description("Pick up a Minecart Contraption with at least 200 attached blocks") + .after(PULLEY_MAXED) + .special(EXPERT)), + + ANVIL_PLOUGH = create("anvil_plough", b -> b.icon(Blocks.CHIPPED_ANVIL) + .title("Blacksmith Artillery") + .description("Launch an Anvil with Mechanical ploughs") + .after(CART_PICKUP) + .special(EXPERT)), + + // Andesite - Hidden + + LAVA_WHEEL = create("lava_wheel_00000", b -> b.icon(AllBlocks.WATER_WHEEL) + .title("Magma Wheel") + .description("This shouldn't have worked") + .after(MIXER) + .special(SECRET)), + + HAND_CRANK = create("hand_crank_000", b -> b.icon(AllBlocks.HAND_CRANK) + .title("Workout Session") + .description("Use a Hand Crank until fully exhausted") + .after(MIXER) + .special(SECRET)), + + FUNNEL_KISS = create("belt_funnel_kiss", b -> b.icon(AllBlocks.BRASS_FUNNEL) + .title("The Parrots and the Flaps") + .description("Make two Belt-mounted Funnels kiss") + .after(MIXER) + .special(SECRET)), + + STRESSOMETER_MAXED = create("stressometer_maxed", b -> b.icon(AllBlocks.STRESSOMETER) + .title("Perfectly Stressed") + .description("Get a 100% readout from a Stressometer") + .after(MIXER) + .special(SECRET)), + + // Copper - Central Branch + + COPPER = create("copper", b -> b.icon(Items.COPPER_INGOT) + .title("More Sturdier Rocks") + .description("Amass some Copper for your exploits in Fluid Manipulation") + .whenIconCollected() + .after(BLAZE_BURNER) + .special(SILENT)), + + COPPER_CASING = create("copper_casing", b -> b.icon(AllBlocks.COPPER_CASING) + .title("The Copper Age") + .description("Apply Copper Ingots to wood creating a waterproof casing for your machines") + .after(COPPER) + .special(NOISY)), + + SPOUT = create("spout", b -> b.icon(AllBlocks.SPOUT) + .title("Sploosh") + .description("Watch a fluid containing item be filled using a Spout") + .after(COPPER_CASING)), + + DRAIN = create("drain", b -> b.icon(AllBlocks.ITEM_DRAIN) + .title("Tumble Draining") + .description("Watch a fluid containing item be emptied by an Item Drain") + .after(SPOUT)), + + STEAM_ENGINE = create("steam_engine", b -> b.icon(AllBlocks.STEAM_ENGINE) + .title("The Powerhouse") + .description("Use a Steam engine to generate torque") + .after(DRAIN)), + + STEAM_WHISTLE = create("steam_whistle", b -> b.icon(AllBlocks.STEAM_WHISTLE) + .title("Voice of an Angel") + .description("Activate a Steam Whistle") + .after(STEAM_ENGINE)), + + BACKTANK = create("backtank", b -> b.icon(AllItems.COPPER_BACKTANK) + .title("Pressure to Go") + .description("Create a copper backtank and make it accumulate Air Pressure") + .after(STEAM_WHISTLE)), + + DIVING_SUIT = create("diving_suit", b -> b.icon(AllItems.DIVING_HELMET) + .title("Ready for the Depths") + .description("Equip a diving helmet together with your backtank and jump into water") + .after(BACKTANK)), + + // Copper - Top Branch + + PUMP = create("mechanical_pump_0", b -> b.icon(AllBlocks.MECHANICAL_PUMP) + .title("Under Pressure") + .description("Place and power a Mechanical Pump") + .after(COPPER)), + + GLASS_PIPE = create("glass_pipe", b -> b.icon(AllBlocks.FLUID_PIPE) + .title("Flow Discovery") + .description("Use your Wrench on a pipe that contains a fluid") + .after(PUMP)), + + WATER_SUPPLY = create("water_supply", b -> b.icon(Items.WATER_BUCKET) + .title("Puddle Collector") + .description("Use the pulling end of a pipe or pump to collect a water block") + .after(GLASS_PIPE)), + + HOSE_PULLEY = create("hose_pulley", b -> b.icon(AllBlocks.HOSE_PULLEY) + .title("Industrial Spillage") + .description("Lower a Hose Pulley and watch it drain or fill a body of fluid") + .after(WATER_SUPPLY)), + + CHOCOLATE_BUCKET = create("chocolate_bucket", b -> b.icon(AllFluids.CHOCOLATE.get() + .getBucket()) + .title("A World of Imagination") + .description("Obtain a Bucket of Molten Chocolate") + .whenIconCollected() + .after(HOSE_PULLEY)), + + HONEY_DRAIN = create("honey_drain", b -> b.icon(Items.BEEHIVE) + .title("Autonomous Bee-Keeping") + .description("Use pipes to pull honey from a Bee Nest or Bee House") + .after(CHOCOLATE_BUCKET)), + + // Copper - Expert Branch + + HOSE_PULLEY_LAVA = create("hose_pulley_lava", b -> b.icon(AllBlocks.HOSE_PULLEY) + .title("Tapping the Mantle") + .description("Pump from a body of Lava large enough to be considered infinite") + .after(COPPER) + .special(EXPERT)), + + STEAM_ENGINE_MAXED = create("steam_engine_maxed", b -> b.icon(AllBlocks.STEAM_ENGINE) + .title("Full Steam") + .description("Run a boiler at the maximum level of power") + .after(HOSE_PULLEY_LAVA) + .special(EXPERT)), + + FOODS = create("foods", b -> b.icon(AllItems.CHOCOLATE_BERRIES) + .title("Balanced Diet") + .description("Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout") + .after(STEAM_ENGINE_MAXED) + .special(EXPERT)), + + // Copper - Hidden + + DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.DIVING_HELMET) + .title("Swimming with the Striders") + .description("Attempt to take a dive in lava with your Copper Diving Gear") + .after(BACKTANK) + .special(SECRET)), + + CHAINED_DRAIN = create("chained_drain", b -> b.icon(AllBlocks.ITEM_DRAIN) + .title("On a Roll") + .description("Watch an Item move across a row of Item Drains") + .after(BACKTANK) + .special(SECRET)), + + CROSS_STREAMS = create("cross_streams", b -> b.icon(Blocks.COBBLESTONE) + .title("Don't cross the Streams!") + .description("Watch two fluids meet in your pipe network") + .after(BACKTANK) + .special(SECRET)), + + PIPE_ORGAN = create("pipe_organ", b -> b.icon(AllBlocks.STEAM_WHISTLE) + .title("The Pipe Organ") + .description("Attach 12 uniquely pitched Steam Whistles to a single fluid tank") + .after(BACKTANK) + .special(SECRET)), + + // Brass - Central Branch + + BRASS = create("brass", b -> b.icon(AllItems.BRASS_INGOT) + .title("Real Alloys") + .description("Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer") + .whenIconCollected() + .after(DIVING_SUIT)), + + BRASS_CASING = create("brass_casing", b -> b.icon(AllBlocks.BRASS_CASING) + .title("The Brass Age") + .description("Apply Brass Ingots to wood creating a casing for more sophisticated machines") + .after(BRASS) + .special(NOISY)), + + ROSE_QUARTZ = create("rose_quartz", b -> b.icon(AllItems.POLISHED_ROSE_QUARTZ) + .title("Pink Diamonds") + .description("Polish some Rose Quartz") + .whenIconCollected() + .after(BRASS_CASING)), + + DEPLOYER = create("deployer", b -> b.icon(AllBlocks.DEPLOYER) + .title("Artificial Intelligence") + .description("Place and activate a Deployer, the perfect reflection of yourself") + .after(ROSE_QUARTZ)), + + MECHANISM = create("precision_mechanism", b -> b.icon(AllItems.PRECISION_MECHANISM) + .title("Complex Curiosities") + .description("Assemble a Precision Mechanism") + .whenIconCollected() + .after(DEPLOYER) + .special(NOISY)), + + SPEED_CONTROLLER = create("speed_controller", b -> b.icon(AllBlocks.ROTATION_SPEED_CONTROLLER) + .title("Engineers Hate Him!") + .description("Fine tune your contraption with a Rotation Speed Controller") + .after(MECHANISM)), + + MECHANICAL_ARM = create("mechanical_arm", b -> b.icon(AllBlocks.MECHANICAL_ARM) + .title("Busy Hands") + .description("Watch your Mechanical Arm transport its first Item") + .after(SPEED_CONTROLLER) + .special(NOISY)), + + CRAFTER = create("mechanical_crafter", b -> b.icon(AllBlocks.MECHANICAL_CRAFTER) + .title("Automated Assembly") + .description("Place and power some Mechanical Crafters") + .after(MECHANICAL_ARM)), + + CRUSHING_WHEEL = create("crushing_wheel", b -> b.icon(AllBlocks.CRUSHING_WHEEL) + .title("A Pair of Giants") + .description("Place and power a set of Crushing Wheels") + .after(CRAFTER) + .special(NOISY)), + + // Brass - Top Branch + + HAUNTED_BELL = create("haunted_bell", b -> b.icon(AllBlocks.HAUNTED_BELL) + .title("Shadow Sense") + .description("Toll a Haunted Bell") + .after(BRASS) + .special(NOISY)), + + CLOCKWORK_BEARING = create("clockwork_bearing", b -> b.icon(AllBlocks.CLOCKWORK_BEARING) + .title("Contraption O'Clock") + .description("Assemble a structure mounted on a Clockwork Bearing") + .after(HAUNTED_BELL) + .special(NOISY)), + + DISPLAY_LINK = create("display_link", b -> b.icon(AllBlocks.DISPLAY_LINK) + .title("Big Data") + .description("Use a Display link to visualise information") + .after(CLOCKWORK_BEARING) + .special(NOISY)), + + POTATO_CANNON = create("potato_cannon", b -> b.icon(AllItems.POTATO_CANNON) + .title("Fwoomp!") + .description("Defeat an enemy with your Potato Cannon") + .after(DISPLAY_LINK) + .special(NOISY)), + + EXTENDO_GRIP = create("extendo_grip", b -> b.icon(AllItems.EXTENDO_GRIP) + .title("Boioioing!") + .description("Get hold of an Extendo Grip") + .after(POTATO_CANNON)), + + LINKED_CONTROLLER = create("linked_controller", b -> b.icon(AllItems.LINKED_CONTROLLER) + .title("Remote Activation") + .description("Activate a Redstone Link using a Linked Controller") + .after(EXTENDO_GRIP)), + + ARM_BLAZE_BURNER = create("arm_blaze_burner", b -> b.icon(AllBlocks.BLAZE_BURNER) + .title("Combust-o-Tron") + .description("Instruct a Mechanical Arm to feed your Blaze Burner") + .after(LINKED_CONTROLLER)), + + // Brass - Expert Branch + + CRUSHER_MAXED = create("crusher_maxed_0000", b -> b.icon(AllBlocks.CRUSHING_WHEEL) + .title("Crushing it") + .description("Operate a Pair of Crushing wheels at max speed") + .after(BRASS) + .special(EXPERT)), + + ARM_MANY_TARGETS = create("arm_many_targets", b -> b.icon(AllBlocks.MECHANICAL_ARM) + .title("Organize-o-Tron") + .description("Program a Mechanical Arm with ten or more output locations") + .after(CRUSHER_MAXED) + .special(EXPERT)), + + POTATO_CANNON_COLLIDE = create("potato_cannon_collide", b -> b.icon(Items.CARROT) + .title("Veggie Fireworks") + .description("Cause potato cannon projectiles of different types to collide with each other") + .after(ARM_MANY_TARGETS) + .special(EXPERT)), + + SELF_DEPLOYING = create("self_deploying", b -> b.icon(Items.RAIL) + .title("Self-Driving Cart") + .description("Create a Minecart Contraption that places tracks in front of itself") + .after(POTATO_CANNON_COLLIDE) + .special(EXPERT)), + + // Brass - Hidden + + FIST_BUMP = create("fist_bump", b -> b.icon(AllBlocks.DEPLOYER) + .title("Pound It, Bro!") + .description("Make two Deployers fist-bump") + .after(CRAFTER) + .special(SECRET)), + + CRAFTER_LAZY = create("crafter_lazy_000", b -> b.icon(AllBlocks.MECHANICAL_CRAFTER) + .title("Desperate Measures") + .description("Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure") + .after(CRAFTER) + .special(SECRET)), + + EXTENDO_GRIP_DUAL = create("extendo_grip_dual", b -> b.icon(AllItems.EXTENDO_GRIP) + .title("To full Extent") + .description("Dual wield Extendo Grips for super-human reach") + .after(CRAFTER) + .special(SECRET)), + + MUSICAL_ARM = create("musical_arm", b -> b.icon(Blocks.JUKEBOX) + .title("DJ Mechanico") + .description("Watch a Mechanical Arm operate your Jukebox") + .after(CRAFTER) + .special(SECRET)), + + // Trains - Central Branch + + STURDY_SHEET = create("sturdy_sheet", b -> b.icon(AllItems.STURDY_SHEET) + .title("The Sturdiest Rocks") + .description("Assemble a Sturdy Sheet from refining crushed Obsidian") + .whenIconCollected() + .after(CRUSHING_WHEEL)), + + TRAIN_CASING = create("train_casing_00", b -> b.icon(AllBlocks.RAILWAY_CASING) + .title("The Logistical Age") + .description("Use Sturdy Sheets to create a Casing for Railway Components") + .after(STURDY_SHEET) + .special(NOISY)), + + TRAIN = create("train", b -> b.icon(AllBlocks.TRACK_STATION) + .title("All Aboard!") + .description("Assemble your first Train") + .after(TRAIN_CASING) + .special(NOISY)), + + CONDUCTOR = create("conductor", b -> b.icon(AllItems.SCHEDULE) + .title("Conductor Instructor") + .description("Instruct a Train driver with a Schedule") + .after(TRAIN)), + + SIGNAL = create("track_signal", b -> b.icon(AllBlocks.TRACK_SIGNAL) + .title("Traffic Control") + .description("Place a Train Signal") + .after(CONDUCTOR)), + + DISPLAY_BOARD = create("display_board_0", b -> b.icon(AllBlocks.DISPLAY_BOARD) + .title("Dynamic Timetables") + .description("Forecast a Train's arrival on your Display Board with the help of Display Links") + .after(SIGNAL) + .special(NOISY)), + + // Trains - Top Branch + + TRAIN_TRACK = create("track_0", b -> b.icon(AllBlocks.TRACK) + .title("A new Gauge") + .description("Obtain some Train Tracks") + .whenIconCollected() + .after(STURDY_SHEET)), + + TRAIN_WHISTLE = create("train_whistle", b -> b.icon(AllBlocks.STEAM_WHISTLE) + .title("Choo choo!") + .description("Assemble a Steam Whistle to your Train and activate it while driving") + .after(TRAIN_TRACK)), + + TRAIN_PORTAL = create("train_portal", b -> b.icon(Blocks.AMETHYST_BLOCK) + .title("Dimensional Commuter") + .description("Ride a train through a Nether Portal") + .after(TRAIN_WHISTLE) + .special(NOISY)), + + // Trains - Expert Branch + + TRACK_CRAFTING = create("track_crafting_factory", b -> b.icon(AllBlocks.MECHANICAL_PRESS) + .title("Track Factory") + .description("Produce more than 1000 train tracks in the same Mechanical Press") + .after(STURDY_SHEET) + .special(EXPERT)), + + LONG_BEND = create("long_bend", b -> b.icon(AllBlocks.TRACK) + .title("The Longest Bend") + .description("Create a Curved track section that spans more than 30 blocks in length") + .after(TRACK_CRAFTING) + .special(EXPERT)), + + LONG_TRAIN = create("long_train", b -> b.icon(Items.MINECART) + .title("Ambitious Endeavours") + .description("Create a Train with at least six Carriages") + .after(LONG_BEND) + .special(EXPERT)), + + LONG_TRAVEL = create("long_travel", b -> b.icon(AllBlocks.SEATS.get(DyeColor.GREEN)) + .title("Field Trip") + .description("Leave a Train Seat over 5000 blocks away from where you started travelling") + .after(LONG_TRAIN) + .special(EXPERT)), + + // Trains - Hidden + + TRAIN_ROADKILL = create("train_roadkill", b -> b.icon(Items.DIAMOND_SWORD) + .title("Road Kill") + .description("Run over an Enemy with your Train") + .after(SIGNAL) + .special(SECRET)), + + RED_SIGNAL = create("red_signal", b -> b.icon(AllBlocks.TRACK_SIGNAL) + .title("Expert Driver") + .description("Run a Red Signal with your Train") + .after(SIGNAL) + .special(SECRET)), + + TRAIN_CRASH = create("train_crash", b -> b.icon(AllItems.INCOMPLETE_TRACK) + .title("Terrible Service") + .description("Witness a Train Crash as a Passenger") + .after(SIGNAL) + .special(SECRET)), + + TRAIN_CRASH_BACKWARDS = create("train_crash_backwards", b -> b.icon(AllItems.INCOMPLETE_TRACK) + .title("Blind Spot") + .description("Crash into another Train while driving backwards") + .after(SIGNAL) + .special(SECRET)), + + // + END = null; + + private static CreateAdvancement create(String id, UnaryOperator b) { + return new CreateAdvancement(id, b); } // Datagen @@ -435,7 +645,8 @@ public class AllAdvancements implements DataProvider { } }; - register(consumer); + for (CreateAdvancement advancement : ENTRIES) + advancement.save(consumer); } private static Path getPath(Path pathIn, Advancement advancementIn) { @@ -451,64 +662,13 @@ public class AllAdvancements implements DataProvider { return "Create's Advancements"; } - public PlacedBlockTrigger.TriggerInstance placeBlock(Block block) { - return PlacedBlockTrigger.TriggerInstance.placedBlock(block); + public static JsonObject provideLangEntries() { + JsonObject object = new JsonObject(); + for (CreateAdvancement advancement : ENTRIES) + advancement.appendToLang(object); + return object; } - public RegistryTrigger.Instance isInfinite(FlowingFluid fluid) { - return AllTriggers.INFINITE_FLUID.forEntries(fluid.getSource()); - } - - public InventoryChangeTrigger.TriggerInstance itemGathered(ItemLike itemprovider) { - return InventoryChangeTrigger.TriggerInstance.hasItems(itemprovider); - } - - static enum TaskType { - - NORMAL(FrameType.TASK, true, false, false), - MILESTONE(FrameType.TASK, true, true, false), - GOAL(FrameType.GOAL, true, true, false), - SECRET(FrameType.GOAL, true, true, true), - SILENT_GATE(FrameType.CHALLENGE, false, false, false), - CHALLENGE(FrameType.CHALLENGE, true, true, false), - - ; - - private FrameType frame; - private boolean toast; - private boolean announce; - private boolean hide; - - private TaskType(FrameType frame, boolean toast, boolean announce, boolean hide) { - this.frame = frame; - this.toast = toast; - this.announce = announce; - this.hide = hide; - } - } - - public Builder kinecticAdvancement(String name, Block block, TaskType type) { - return advancement(name, block, type).addCriterion("0", placeBlock(block)); -// .withCriterion("1", isPowered(block)); Duplicate toast - } - - public Builder advancement(String name, ItemLike icon, TaskType type) { - return advancement(name, new ItemStack(icon), type); - } - - public Builder deadEnd() { - return advancement("eob", Items.OAK_SAPLING, TaskType.SILENT_GATE); - } - - public Builder advancement(String name, ItemStack icon, TaskType type) { - return Advancement.Builder.advancement() - .display(icon, new TranslatableComponent(LANG + name), - new TranslatableComponent(LANG + name + ".desc"), null, type.frame, type.toast, type.announce, - type.hide); - } - - public Builder itemAdvancement(String name, Supplier item, TaskType type) { - return advancement(name, item.get(), type).addCriterion("0", itemGathered(item.get())); - } + public static void register() {} } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java index e05265520..d39230c0a 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java @@ -2,52 +2,15 @@ package com.simibubi.create.foundation.advancement; import java.util.LinkedList; import java.util.List; -import java.util.function.Predicate; - -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.registries.ForgeRegistries; public class AllTriggers { private static final List> triggers = new LinkedList<>(); - public static final StringSerializableTrigger INFINITE_FLUID = - add(new RegistryTrigger<>("infinite_fluid", ForgeRegistries.FLUIDS)); - public static final StringSerializableTrigger BRACKET_APPLY_TRIGGER = - add(new RegistryTrigger<>("bracket_apply", ForgeRegistries.BLOCKS)); - public static final StringSerializableTrigger FAN_PROCESSING = - add(new EnumTrigger<>("fan_processing", InWorldProcessing.Type.class)); - - public static final SimpleTrigger ROTATION = simple("rotation"), OVERSTRESSED = simple("overstressed"), - SHIFTING_GEARS = simple("shifting_gears"), CONNECT_BELT = simple("connect_belt"), BONK = simple("bonk"), - WATER_WHEEL = simple("water_wheel"), LAVA_WHEEL = simple("lava_wheel"), - CHOCOLATE_WHEEL = simple("chocolate_wheel"), DEPLOYER_BOOP = simple("deployer"), - SPEED_READ = simple("speed_read"), BASIN_THROW = simple("basin"), PRESS_COMPACT = simple("compact"), - UPGRADED_ZAPPER = simple("upgraded_zapper"), EXTENDO = simple("extendo"), GIGA_EXTENDO = simple("giga_extendo"), - MECHANICAL_ARM = simple("mechanical_arm"), MUSICAL_ARM = simple("musical_arm"), CUCKOO = simple("cuckoo"), - CASING_SHAFT = simple("casing_shaft"), CASING_BELT = simple("casing_belt"), CASING_PIPE = simple("casing_pipe"), - WINDMILL = simple("windmill"), MAXED_WINDMILL = simple("maxed_windmill"), PLACE_TUNNEL = simple("place_tunnel"), - CONNECT_TUNNEL = simple("connect_tunnel"), UPWARD_CHUTE = simple("upward_chute"), - BELT_FUNNEL = simple("belt_funnel"), BELT_FUNNEL_KISS = simple("belt_funnel_kiss"), - CLOCKWORK_BEARING = simple("clockwork_bearing"), ARM_MANY_TARGETS = simple("arm_many_targets"), - ARM_BLAZE_BURNER = simple("arm_blaze_burner"), FLYWHEEL = simple("flywheel"), - OVERSTRESS_FLYWHEEL = simple("overstress_flywheel"), ITEM_DRAIN = simple("item_drain"), - CHAINED_ITEM_DRAIN = simple("chained_item_drain"), SPOUT = simple("spout"), - SPOUT_POTION = simple("spout_potion"), GLASS_PIPE = simple("glass_pipe"), - PIPE_COLLISION = simple("pipe_collision"), PIPE_SPILL = simple("pipe_spill"), - POTATO_KILL = simple("potato_kill"), HOSE_PULLEY = simple("hose_pulley"), MIXER_MIX = simple("mixer"); - - private static SimpleTrigger simple(String id) { - return add(new SimpleTrigger(id)); + public static SimpleCreateTrigger addSimple(String id) { + return add(new SimpleCreateTrigger(id)); } private static > T add(T instance) { @@ -59,28 +22,4 @@ public class AllTriggers { triggers.forEach(CriteriaTriggers::register); } - public static void triggerFor(ITriggerable trigger, Player player) { - if (player instanceof ServerPlayer) - trigger.trigger((ServerPlayer) player); - } - - public static void triggerForNearbyPlayers(ITriggerable trigger, LevelAccessor world, BlockPos pos, int range) { - triggerForNearbyPlayers(trigger, world, pos, range, player -> true); - } - - public static void triggerForNearbyPlayers(ITriggerable trigger, LevelAccessor world, BlockPos pos, int range, - Predicate playerFilter) { - if (world == null) - return; - if (world.isClientSide()) - return; - List players = getPlayersInRange(world, pos, range); - players.stream() - .filter(playerFilter) - .forEach(trigger::trigger); - } - - public static List getPlayersInRange(LevelAccessor world, BlockPos pos, int range) { - return world.getEntitiesOfClass(ServerPlayer.class, new AABB(pos).inflate(range)); - } } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java new file mode 100644 index 000000000..10f37ab4d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java @@ -0,0 +1,208 @@ +package com.simibubi.create.foundation.advancement; + +import java.util.function.Consumer; +import java.util.function.UnaryOperator; + +import com.google.gson.JsonObject; +import com.simibubi.create.Create; +import com.tterrag.registrate.util.entry.ItemProviderEntry; + +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.critereon.EnchantmentPredicate; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.advancements.critereon.NbtPredicate; +import net.minecraft.advancements.critereon.PlacedBlockTrigger; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; + +public class CreateAdvancement { + + static final ResourceLocation BACKGROUND = Create.asResource("textures/gui/advancements.png"); + static final String LANG = "advancement." + Create.ID + "."; + static final String SECRET_SUFFIX = "\u00A77\n(Hidden Advancement)"; + + private Advancement.Builder builder; + private SimpleCreateTrigger builtinTrigger; + private CreateAdvancement parent; + + Advancement datagenResult; + + private String id; + private String title; + private String description; + + public CreateAdvancement(String id, UnaryOperator b) { + this.builder = Advancement.Builder.advancement(); + this.id = id; + + Builder t = new Builder(); + b.apply(t); + + if (!t.externalTrigger) { + builtinTrigger = AllTriggers.addSimple(id + "_builtin"); + builder.addCriterion("0", builtinTrigger.instance()); + } + + builder.display(t.icon, new TranslatableComponent(titleKey()), + new TranslatableComponent(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), + id.equals("root") ? BACKGROUND : null, t.type.frame, t.type.toast, t.type.announce, t.type.hide); + + if (t.type == TaskType.SECRET) + description += SECRET_SUFFIX; + + AllAdvancements.ENTRIES.add(this); + } + + private String titleKey() { + return LANG + id; + } + + private String descriptionKey() { + return titleKey() + ".desc"; + } + + public boolean isAlreadyAwardedTo(Player player) { + if (!(player instanceof ServerPlayer sp)) + return true; + Advancement advancement = sp.getServer() + .getAdvancements() + .getAdvancement(Create.asResource(id)); + if (advancement == null) + return true; + return sp.getAdvancements() + .getOrStartProgress(advancement) + .isDone(); + } + + public void awardTo(Player player) { + if (!(player instanceof ServerPlayer sp)) + return; + if (builtinTrigger == null) + throw new UnsupportedOperationException( + "Advancement " + id + " uses external Triggers, it cannot be awarded directly"); + builtinTrigger.trigger(sp); + } + + void save(Consumer t) { + if (parent != null) + builder.parent(parent.datagenResult); + datagenResult = builder.save(t, Create.asResource(id) + .toString()); + } + + void appendToLang(JsonObject object) { + object.addProperty(titleKey(), title); + object.addProperty(descriptionKey(), description); + } + + static enum TaskType { + + SILENT(FrameType.TASK, false, false, false), + NORMAL(FrameType.TASK, true, false, false), + NOISY(FrameType.TASK, true, true, false), + EXPERT(FrameType.GOAL, true, true, false), + SECRET(FrameType.GOAL, true, true, true), + + ; + + private FrameType frame; + private boolean toast; + private boolean announce; + private boolean hide; + + private TaskType(FrameType frame, boolean toast, boolean announce, boolean hide) { + this.frame = frame; + this.toast = toast; + this.announce = announce; + this.hide = hide; + } + } + + class Builder { + + private TaskType type = TaskType.NORMAL; + private boolean externalTrigger; + private int keyIndex; + private ItemStack icon; + + Builder special(TaskType type) { + this.type = type; + return this; + } + + Builder after(CreateAdvancement other) { + CreateAdvancement.this.parent = other; + return this; + } + + Builder icon(ItemProviderEntry item) { + return icon(item.asStack()); + } + + Builder icon(ItemLike item) { + return icon(new ItemStack(item)); + } + + Builder icon(ItemStack stack) { + icon = stack; + return this; + } + + Builder title(String title) { + CreateAdvancement.this.title = title; + return this; + } + + Builder description(String description) { + CreateAdvancement.this.description = description; + return this; + } + + Builder whenBlockPlaced(Block block) { + return externalTrigger(PlacedBlockTrigger.TriggerInstance.placedBlock(block)); + } + + Builder whenIconCollected() { + return externalTrigger(InventoryChangeTrigger.TriggerInstance.hasItems(icon.getItem())); + } + + Builder whenItemCollected(ItemProviderEntry item) { + return whenItemCollected(item.asStack() + .getItem()); + } + + Builder whenItemCollected(ItemLike itemProvider) { + return externalTrigger(InventoryChangeTrigger.TriggerInstance.hasItems(itemProvider)); + } + + Builder whenItemCollected(TagKey tag) { + return externalTrigger(InventoryChangeTrigger.TriggerInstance + .hasItems(new ItemPredicate(tag, null, MinMaxBounds.Ints.ANY, MinMaxBounds.Ints.ANY, + EnchantmentPredicate.NONE, EnchantmentPredicate.NONE, null, NbtPredicate.ANY))); + } + + Builder awardedForFree() { + return externalTrigger(InventoryChangeTrigger.TriggerInstance.hasItems(new ItemLike[] {})); + } + + Builder externalTrigger(CriterionTriggerInstance trigger) { + builder.addCriterion(String.valueOf(keyIndex), trigger); + externalTrigger = true; + keyIndex++; + return this; + } + + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java similarity index 83% rename from src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java rename to src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java index 7d48e03e1..c2f5df5d7 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java @@ -16,9 +16,9 @@ import net.minecraft.server.level.ServerPlayer; @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class SimpleTrigger extends CriterionTriggerBase implements ITriggerable { +public class SimpleCreateTrigger extends CriterionTriggerBase implements ITriggerable { - public SimpleTrigger(String id) { + public SimpleCreateTrigger(String id) { super(id); } @@ -38,7 +38,7 @@ public class SimpleTrigger extends CriterionTriggerBase public static class Instance extends CriterionTriggerBase.Instance { public Instance(ResourceLocation idIn) { - super(idIn, EntityPredicate.Composite.ANY); // FIXME: Is this right? + super(idIn, EntityPredicate.Composite.ANY); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java b/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java index 4333c9240..436839f30 100644 --- a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java +++ b/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java @@ -4,13 +4,14 @@ import com.google.common.base.Supplier; import com.google.gson.JsonElement; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; +import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.Lang; public enum AllLangPartials { - ADVANCEMENTS("Advancements"), + ADVANCEMENTS("Advancements", AllAdvancements::provideLangEntries), INTERFACE("UI & Messages"), SUBTITLES("Subtitles", AllSoundEvents::provideLangEntries), TOOLTIPS("Item Descriptions"), diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index d3e5da736..207ab9a82 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -29,6 +29,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartControllerUpdatePacket; import com.simibubi.create.content.contraptions.fluids.actors.FluidSplashPacket; import com.simibubi.create.content.contraptions.relays.advanced.sequencer.ConfigureSequencedGearshiftPacket; +import com.simibubi.create.content.contraptions.relays.gauge.GaugeObservedPacket; import com.simibubi.create.content.curiosities.bell.SoulPulseEffectPacket; import com.simibubi.create.content.curiosities.symmetry.ConfigureSymmetryWandPacket; import com.simibubi.create.content.curiosities.symmetry.SymmetryEffectPacket; @@ -40,6 +41,7 @@ import com.simibubi.create.content.curiosities.weapons.PotatoCannonPacket; import com.simibubi.create.content.curiosities.weapons.PotatoProjectileTypeManager; import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket; import com.simibubi.create.content.curiosities.zapper.terrainzapper.ConfigureWorldshaperPacket; +import com.simibubi.create.content.logistics.block.depot.EjectorAwardPacket; import com.simibubi.create.content.logistics.block.depot.EjectorElytraPacket; import com.simibubi.create.content.logistics.block.depot.EjectorPlacementPacket; import com.simibubi.create.content.logistics.block.depot.EjectorTriggerPacket; @@ -142,6 +144,8 @@ public enum AllPackets { TRAIN_COLLISION(TrainCollisionPacket.class, TrainCollisionPacket::new, PLAY_TO_SERVER), C_TRAIN_HUD(TrainHUDUpdatePacket.Serverbound.class, TrainHUDUpdatePacket.Serverbound::new, PLAY_TO_SERVER), C_TRAIN_HONK(HonkPacket.Serverbound.class, HonkPacket.Serverbound::new, PLAY_TO_SERVER), + OBSERVER_STRESSOMETER(GaugeObservedPacket.class, GaugeObservedPacket::new, PLAY_TO_SERVER), + EJECTOR_AWARD(EjectorAwardPacket.class, EjectorAwardPacket::new, PLAY_TO_SERVER), // Server to Client SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT), diff --git a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java b/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java index c6f1c7856..983c2d3e9 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java @@ -47,6 +47,8 @@ public abstract class TileEntityConfigurationPacket BlockEntity tileEntity = world.getBlockEntity(pos); if (tileEntity instanceof SyncedTileEntity) { applySettings(player, (TE) tileEntity); + if (!causeUpdate()) + return; ((SyncedTileEntity) tileEntity).sendData(); tileEntity.setChanged(); } @@ -67,6 +69,10 @@ public abstract class TileEntityConfigurationPacket protected void applySettings(ServerPlayer player, TE te) { applySettings(te); } + + protected boolean causeUpdate() { + return true; + } protected abstract void applySettings(TE te); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java index 0c9f4151c..da2f6e220 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java @@ -8,6 +8,8 @@ import java.util.function.Consumer; import com.simibubi.create.api.event.TileEntityBehaviourEvent; import com.simibubi.create.content.schematics.ItemRequirement; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.utility.IInteractionChecker; import com.simibubi.create.foundation.utility.IPartialSafeNBT; @@ -76,8 +78,7 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement forEachBehaviour(TileEntityBehaviour::tick); } - public void lazyTick() { - } + public void lazyTick() {} /** * Hook only these in future subclasses of STE @@ -116,9 +117,12 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement read(tag, false); } - /* TODO: Remove this hack once this issue is resolved: https://github.com/MinecraftForge/MinecraftForge/issues/8302 - Once the PR linked in the issue is accepted, we should use the new method for determining whether setRemoved was - called due to a chunk unload or not, and remove this volatile workaround + /* + * TODO: Remove this hack once this issue is resolved: + * https://github.com/MinecraftForge/MinecraftForge/issues/8302 Once the PR + * linked in the issue is accepted, we should use the new method for determining + * whether setRemoved was called due to a chunk unload or not, and remove this + * volatile workaround */ private boolean unloaded; @@ -163,7 +167,8 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement } protected void forEachBehaviour(Consumer action) { - behaviours.values().forEach(action); + behaviours.values() + .forEach(action); } protected void attachBehaviourLate(TileEntityBehaviour behaviour) { @@ -172,7 +177,8 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement } public ItemRequirement getRequiredItems() { - return behaviours.values().stream() + return behaviours.values() + .stream() .reduce(ItemRequirement.NONE, (r, b) -> r.with(b.getRequiredItems()), (r, r1) -> r.with(r1)); } @@ -221,4 +227,27 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement protected boolean isFluidHandlerCap(Capability cap) { return cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY; } + + public void registerAwardables(List behaviours, CreateAdvancement... advancements) { + for (TileEntityBehaviour behaviour : behaviours) { + if (behaviour instanceof AdvancementBehaviour ab) { + ab.add(advancements); + return; + } + } + behaviours.add(new AdvancementBehaviour(this, advancements)); + } + + public void award(CreateAdvancement advancement) { + AdvancementBehaviour behaviour = getBehaviour(AdvancementBehaviour.TYPE); + if (behaviour != null) + behaviour.awardPlayer(advancement); + } + + public void awardIfNear(CreateAdvancement advancement, int range) { + AdvancementBehaviour behaviour = getBehaviour(AdvancementBehaviour.TYPE); + if (behaviour != null) + behaviour.awardPlayerIfNear(advancement, range); + } + } diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java b/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java index b1f014072..912dde271 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java +++ b/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java @@ -12,6 +12,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; @@ -113,6 +114,8 @@ public class PlacementOffset { UseOnContext context = new UseOnContext(player, hand, ray); BlockPos newPos = new BlockPos(pos); + ItemStack stackBefore = player.getItemInHand(hand) + .copy(); if (!world.mayInteract(player, newPos)) return InteractionResult.PASS; @@ -137,6 +140,8 @@ public class PlacementOffset { world.playSound(null, newPos, soundtype.getPlaceSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); player.awardStat(Stats.ITEM_USED.get(blockItem)); + newState.getBlock() + .setPlacedBy(world, newPos, newState, player, stackBefore); if (player instanceof ServerPlayer) CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, newPos, context.getItemInHand()); diff --git a/src/main/resources/assets/create/lang/default/advancements.json b/src/main/resources/assets/create/lang/default/advancements.json deleted file mode 100644 index d931bcca4..000000000 --- a/src/main/resources/assets/create/lang/default/advancements.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - - "advancement.create.root": "Welcome to Create", - "advancement.create.root.desc": "It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "Create's materials have weird names, Andesite Alloy is one of them.", - - "advancement.create.its_alive": "It's Alive!", - "advancement.create.its_alive.desc": "Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "Shifting Gears", - "advancement.create.shifting_gears.desc": "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your Contraption.", - "advancement.create.overstressed": "Overstressed", - "advancement.create.overstressed.desc": "Experience the limits of stress firsthand.", - "advancement.create.belt": "Kelp Drive", - "advancement.create.belt.desc": "Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "Take Cover!", - "advancement.create.tunnel.desc": "Embellish your Mechanical Belt with a Tunnel.", - "advancement.create.splitter_tunnel": "Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "Tumbling Down", - "advancement.create.chute.desc": "Place a Chute, the vertical counterpart of the Belt.", - "advancement.create.upward_chute": "Aerial Abduction", - "advancement.create.upward_chute.desc": "Watch a thrown item fly up into a Fan-powered Chute.", - "advancement.create.belt_funnel": "Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Place a sideways Funnel on top of a Belt or Depot to create a special type.", - "advancement.create.belt_funnel_kiss": "The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss.", - "advancement.create.fan": "Mechanical Airbender", - "advancement.create.fan.desc": "Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "Geothermal Space Heater", - "advancement.create.fan_lava.desc": "Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "Wacky Washing", - "advancement.create.fan_water.desc": "Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "Mechanical Bellows", - "advancement.create.fan_smoke.desc": "Get caught in a stream of air that smokes things.", - "advancement.create.wrench": "Configure Conveniently", - "advancement.create.wrench.desc": "Create a Wrench to aid you in building your Contraptions.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "But How Fast Exactly?", - "advancement.create.speedometer.desc": "Place and power a Speedometer. Look at it through your Goggles to read its exact value.", - "advancement.create.stressometer": "But How Stressed Exactly?", - "advancement.create.stressometer.desc": "Place and power a Stressometer. Look at it through your Goggles to read its exact value.", - - "advancement.create.aesthetics": "Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "Place Brackets on a Shaft, Pipe, and Cogwheel.", - "advancement.create.reinforced": "Boom, Reinforced!", - "advancement.create.reinforced.desc": "Use fitting Casing blocks on a Shaft, Pipe, and Mechanical Belt.", - "advancement.create.water_wheel": "Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "Tasteful Power", - "advancement.create.chocolate_wheel.desc": "Run a Water Wheel with Molten Chocolate.", - "advancement.create.lava_wheel": "Magma Wheel", - "advancement.create.lava_wheel.desc": "This shouldn't have worked.", - "advancement.create.cuckoo": "Is It Time?", - "advancement.create.cuckoo.desc": "Witness a Cuckoo Clock announce bedtime.", - "advancement.create.millstone": "Pocket Crusher", - "advancement.create.millstone.desc": "Place and power a Millstone.", - "advancement.create.windmill": "A Mild Breeze", - "advancement.create.windmill.desc": "Assemble a windmill.", - "advancement.create.maxed_windmill": "A Strong Breeze", - "advancement.create.maxed_windmill.desc": "Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "The Andesite Age", - "advancement.create.andesite_casing.desc": "Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "Stationary Breakers", - "advancement.create.mechanical_drill.desc": "Place and power a Mechanical Drill.", - "advancement.create.press": "Press Goes 'Bonk!'", - "advancement.create.press.desc": "Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "Stationary Chopping", - "advancement.create.mechanical_saw.desc": "Place and power a Mechanical Saw.", - "advancement.create.basin": "Basin Operation", - "advancement.create.basin.desc": "Place a Basin and try throwing items into it.", - "advancement.create.mixer": "Mixin' It Up", - "advancement.create.mixer.desc": "Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "A Living Fireplace", - "advancement.create.blaze_burner.desc": "Obtain a Blaze Burner.", - "advancement.create.compact": "Automated Compacting", - "advancement.create.compact.desc": "Use a Press and a Basin to compact some items.", - - "advancement.create.brass": "Actual Alloys", - "advancement.create.brass.desc": "Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "The Brass Age", - "advancement.create.brass_casing.desc": "Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "The Copper Age", - "advancement.create.copper_casing.desc": "Use some Copper Sheets and Wood to create some Copper Casings.", - - "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Watch a fluid item being filled using a Spout.", - "advancement.create.spout_potion": "Global Brewery", - "advancement.create.spout_potion.desc": "Watch a Spout fill a Bottle with potion fluid.", - "advancement.create.chocolate": "A World of Imagination", - "advancement.create.chocolate.desc": "Obtain a Bucket of Molten Chocolate.", - "advancement.create.item_drain": "Tumble Draining", - "advancement.create.item_drain.desc": "Watch a fluid item being emptied by an Item Drain.", - "advancement.create.chained_item_drain": "Let It Roll!", - "advancement.create.chained_item_drain.desc": "Watch an item roll across several chained Item Drains.", - "advancement.create.glass_pipe": "Flow Spy", - "advancement.create.glass_pipe.desc": "Watch fluid propagate through a windowed Fluid Pipe. Straight Fluid Pipes become windowed when a Wrench is used on them.", - "advancement.create.pipe_collision": "Never Cross the Streams!", - "advancement.create.pipe_collision.desc": "Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "There's a Leak!", - "advancement.create.pipe_spill.desc": "Watch an open end of a Pipe take or place fluids into the world.", - "advancement.create.hose_pulley": "Industrial Spillage", - "advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid.", - "advancement.create.infinite_water": "Draining the Ocean", - "advancement.create.infinite_water.desc": "Pump from a body of Water large enough to be considered infinite.", - "advancement.create.infinite_lava": "Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "Pump from a body of Lava large enough to be considered infinite.", - "advancement.create.infinite_chocolate": "Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "Pump from a body of Molten Chocolate large enough to be considered infinite.", - - "advancement.create.crafter": "Automated Assembly", - "advancement.create.crafter.desc": "Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "Contraption O'Clock", - "advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "Signs of Style", - "advancement.create.nixie_tube.desc": "Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "Poke, Place, and Attack", - "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "Engineers Hate Him!", - "advancement.create.speed_controller.desc": "Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "Heart of the Factory", - "advancement.create.flywheel.desc": "Successfully connect a Furnace Engine to the Flywheel.", - "advancement.create.overstress_flywheel": "High Levels of Stress", - "advancement.create.overstress_flywheel.desc": "Overstress a Furnace Engine.", - "advancement.create.precision_mechanism": "Complex Curiosities", - "advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "Busy Hands!", - "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with ten or more output locations.", - "advancement.create.arm_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "Pound It, Bro!", - "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "A Pair of Giants", - "advancement.create.crushing_wheel.desc": "Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Bake your Blaze Burner a special cake.", - - "advancement.create.wand_of_symmetry": "Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip.", - "advancement.create.potato_cannon": "Fwoomp!", - "advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "Dual wield Extendo Grips for super-human reach.", - - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "Expect more content here in the future. <3" - -}