diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 26c78676c..17865fe1c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -49,6 +49,8 @@ body: label: Mod Version description: The version of the mod you were using when the bug occured options: + - "0.5.0f" + - "0.5.0e" - "0.5.0d" - "0.5.0c" - "0.5.0b" @@ -107,6 +109,7 @@ body: label: Minecraft Version description: The version of Minecraft you were using when the bug occured options: + - "1.19.2" - "1.18.2" - "1.18.1" - "1.18" diff --git a/.github/config/labels.yml b/.github/config/labels.yml index c5a1bc5a6..f3378f6c1 100644 --- a/.github/config/labels.yml +++ b/.github/config/labels.yml @@ -8,3 +8,5 @@ - "1.17" 1.18: - "1.18" +1.19: + - "1.19" diff --git a/gradle.properties b/gradle.properties index 7c4f65984..69b7698fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.5.0.d +mod_version = 0.5.0.e artifact_minecraft_version = 1.18.2 minecraft_version = 1.18.2 diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 0437edd08..c345e5268 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -21,13 +21,13 @@ cf9045eb16e5299a1d917c4cb536289f49411276 assets/create/blockstates/birch_window. e0f1e44c9bce4a7478592cf3a8ee7b91d9083d65 assets/create/blockstates/black_sail.json 58b07d2af6030342f0354f6d3fd0ee128d2d74b4 assets/create/blockstates/black_seat.json 73db8bd55bd5bd21f939ee9eb4b4b02209d9c5ed assets/create/blockstates/black_toolbox.json -a71ddf3291bd13d7877f2fe32c42f50407f99afb assets/create/blockstates/black_valve_handle.json +afa06da52441feec43d45a063d72867eeb786df3 assets/create/blockstates/black_valve_handle.json 923aeb2a556f67bc0526f237dd97af2d37b4c9f1 assets/create/blockstates/blaze_burner.json ea1a792572af1ee4c9831cd55825514d6568952d assets/create/blockstates/blue_nixie_tube.json ec2ab87734acc209e6be3bc4898b1199f819bfd3 assets/create/blockstates/blue_sail.json 4854d1ef52130a7887aecc60bcaffbd66f0871a8 assets/create/blockstates/blue_seat.json dea175335c5db0abe758cd208dc984c22506a176 assets/create/blockstates/blue_toolbox.json -9d7341a5cae5d47788c595167946dfb6441cebd1 assets/create/blockstates/blue_valve_handle.json +f3697a7d105e5d271f5999b86df071fe5893457c assets/create/blockstates/blue_valve_handle.json 5f57741e500903b70c80d2a72788a25e97387e2e assets/create/blockstates/brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json @@ -41,7 +41,7 @@ ffe31d5ad0486949b049cf2060d1f34ef7ceaa82 assets/create/blockstates/brown_nixie_t 11ebdd9bd0815833e62ec1bea03a4cdd86ce00f3 assets/create/blockstates/brown_sail.json e81608346d43406ee72cae0f78b8bcfb37ba2d75 assets/create/blockstates/brown_seat.json bd73bfdbe88c58883cc15fe31a9dac7860482ca3 assets/create/blockstates/brown_toolbox.json -322289524c058fac66bbe76b4924c3b0c0c33b84 assets/create/blockstates/brown_valve_handle.json +1729306caa9cd057ffd0bb83eb74dc3c8d6d9245 assets/create/blockstates/brown_valve_handle.json ff1073a5451691c492102243084d92de42abfc26 assets/create/blockstates/calcite_pillar.json d01a750e6e8214ca8481e40aa69cedeb5c7210f8 assets/create/blockstates/cart_assembler.json 470e8c6a9c37b91fa745bc4f6e9d3740bd72467e assets/create/blockstates/chocolate.json @@ -61,7 +61,7 @@ a002289d0bb7df6927e8e6a99e9eb9ec77bd179d assets/create/blockstates/copper_shingl a87097f3a092264d9b74966ee9e3bcfc0b743f80 assets/create/blockstates/copper_tile_slab.json 1cc9cdcd48ea76fe3407dce0973220ff9f63f51a assets/create/blockstates/copper_tile_stairs.json cbae7653d6a6f2d98370e9a4a3bd91fdb529f89d assets/create/blockstates/copper_tiles.json -890be245b914c1a9f29f48a8c5d325640b5be160 assets/create/blockstates/copper_valve_handle.json +543af282e2cb44f00509d850814b4501f3491d48 assets/create/blockstates/copper_valve_handle.json b759be6f47fb960a7757b70d194921a38261c90a assets/create/blockstates/creative_crate.json da3f1203dd0b0096ce19e09705060a0ed0478bee assets/create/blockstates/creative_fluid_tank.json f0031f5e970b3d5695472ed384950b8631b015ed assets/create/blockstates/creative_motor.json @@ -188,7 +188,7 @@ d6a8c385c9ebc5bae603c908b6f8eccd6f5ad94b assets/create/blockstates/cut_veridium_ b496452f2f7dbbba385e1fc10b560ec266e4b5e7 assets/create/blockstates/cyan_sail.json 4de72f65bff4e5d9c8153fa3adeee6b61d6f912b assets/create/blockstates/cyan_seat.json 8e14112e948e492da8151b773c1fa40bf1467490 assets/create/blockstates/cyan_toolbox.json -2c04d57e56849f243aec8a1e769574d24daac1e9 assets/create/blockstates/cyan_valve_handle.json +c5d5ca8a43c08ae27dba1c5a7631b67eabb8ed4c assets/create/blockstates/cyan_valve_handle.json 1726b1b9e04a0634e7e1fdcf1cf4cc898efc5c2f assets/create/blockstates/dark_oak_window.json 50d4627d8e8b5adade12de764ab528ddacfa9ea5 assets/create/blockstates/dark_oak_window_pane.json de0116bf32a26d697a3b999044d6fb0b1b98320e assets/create/blockstates/deepslate_pillar.json @@ -211,7 +211,7 @@ fb41aa1a0828c9256b3f886fdcb55bb54252ba09 assets/create/blockstates/exposed_coppe 7a2259a71fbbbb9491fc1e6a9c935bc9fef14042 assets/create/blockstates/fake_track.json dd6dadfeb65c4a4c4d1dc92516c411355e90dcca assets/create/blockstates/fluid_pipe.json f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json -5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json +d3de8e5a13c417effe1516fba9d9074fa4a6da23 assets/create/blockstates/fluid_valve.json 95b0775bf4d619ca5b0a42dbdc47c6f2c15d7b3d assets/create/blockstates/flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets/create/blockstates/framed_glass.json b5a2e05ed9557992c6093b76e9d80073eb986d5a assets/create/blockstates/framed_glass_door.json @@ -227,13 +227,13 @@ e506b85ed71dc4567295be3989f3302e57777ad9 assets/create/blockstates/gray_nixie_tu 5c40c4a27e1dec747a467dd251700c72a6ceb07d assets/create/blockstates/gray_sail.json a5ec5401ba9f3e102a2e1b35837f643847afbca4 assets/create/blockstates/gray_seat.json 191d2cc56af51349688ccb2dea75801a9bc9de85 assets/create/blockstates/gray_toolbox.json -5f17a5868616b33eb157965a661046cab7a1427f assets/create/blockstates/gray_valve_handle.json +1ca9210f8867fd9f8525a1952d11143120a5f016 assets/create/blockstates/gray_valve_handle.json 497dd226b6520a6d754413508c74b98e50563e2f assets/create/blockstates/green_nixie_tube.json 52b849faef96b8ab9d9d64a1518c8f299af057b8 assets/create/blockstates/green_sail.json 13059309684db0cc7a0f1f4fce2407cf06cce80a assets/create/blockstates/green_seat.json e91dcebe132d5b745df0f6c5b1c90d5fc4e8af52 assets/create/blockstates/green_toolbox.json -f4a0fc68e8daaa0a47cdc951ced4310057a874b0 assets/create/blockstates/green_valve_handle.json -6ab675fa06317e6d07c0c1a453e7bb43e3f46b3b assets/create/blockstates/hand_crank.json +f1da8d16c9b0122bda60583a03d2b31ec1c70799 assets/create/blockstates/green_valve_handle.json +823fb70623cb02d2e2c2e4d324ec44e54be93ecd assets/create/blockstates/hand_crank.json 34076c9caafe48daa87cc783e96d4c81b0b164c0 assets/create/blockstates/haunted_bell.json 4572b90f5d6c586e145f2c7a55664c3cb734bd2b assets/create/blockstates/honey.json be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets/create/blockstates/horizontal_framed_glass.json @@ -264,17 +264,17 @@ b743ef11048fc284ba5622e1fbae3082f0616382 assets/create/blockstates/layered_tuff. 029904f21970947a4423a6e0c8c65c4e02f2e8e6 assets/create/blockstates/light_blue_sail.json 2a0a8b1715700bf1e284ee57ef9f7f163c12f3ee assets/create/blockstates/light_blue_seat.json 527f32e0d2b5b975cfeb515542098bb2d5224755 assets/create/blockstates/light_blue_toolbox.json -9bee040558a6b24e21f837fc808e17fae1883e71 assets/create/blockstates/light_blue_valve_handle.json +c2efef202f202d8fd1b3126a79fe6b553c9618bb assets/create/blockstates/light_blue_valve_handle.json bda5c5e9e42b31fdbb819484c74d457ba11fc9a0 assets/create/blockstates/light_gray_nixie_tube.json 93537c4e2ab86218a777e7b000c3fcd55a80b1cd assets/create/blockstates/light_gray_sail.json d9a2551e001bb315d071bb9f1f013323a66a5d09 assets/create/blockstates/light_gray_seat.json 0c40d13637f00a533175d29ba67559461101ead5 assets/create/blockstates/light_gray_toolbox.json -8bea8c86de8c218c8932eef140f0ed439e173156 assets/create/blockstates/light_gray_valve_handle.json +68d2c9235577293def513a26d23fb2d93433380f assets/create/blockstates/light_gray_valve_handle.json d023ef67d23da0b3e7b221b1b4ddf7f1f0c09ea7 assets/create/blockstates/lime_nixie_tube.json ba2c4e3ddafa3c89a72cc243b14e8518fab369aa assets/create/blockstates/lime_sail.json 1de3a88c003df03f5006e1bbaa0236589aba08ad assets/create/blockstates/lime_seat.json db46a5b6d0b595293a672236d0a64548b0816cab assets/create/blockstates/lime_toolbox.json -179a3e68b9f2e289eafe0e98e768befbbf91c5c2 assets/create/blockstates/lime_valve_handle.json +2628c657f381ed32e9ca268ccaacc1ca62b612df assets/create/blockstates/lime_valve_handle.json e7cb0b25e511610b46dfd219e0cc5ea60a79d56b assets/create/blockstates/limestone.json bff90a8d674a839b13fd9cd1f78bf3d0ad9fad4f assets/create/blockstates/limestone_pillar.json 69790737767e06f000c7824749c46664a123160e assets/create/blockstates/linear_chassis.json @@ -283,7 +283,7 @@ bff90a8d674a839b13fd9cd1f78bf3d0ad9fad4f assets/create/blockstates/limestone_pil 85a58ac539775f90903d9ce66374f3f2ffd4fecf assets/create/blockstates/magenta_sail.json 84c494d24cc58af274fdd054896c680e8095d2d0 assets/create/blockstates/magenta_seat.json 2334006c152d6773040ca03ef3b3d26a58f0dfa0 assets/create/blockstates/magenta_toolbox.json -3bfce5016e5c929b74368dc2d734e62ae34587a4 assets/create/blockstates/magenta_valve_handle.json +8006292c8eddd76a1b71046d251a2143af6867a7 assets/create/blockstates/magenta_valve_handle.json 3b3250d6e209403a93d025604a8081087965016e assets/create/blockstates/mechanical_arm.json ddcf4bb281e046fbb1026b8f46a2cf12448598df assets/create/blockstates/mechanical_bearing.json 5586beef2d9183dc34d8e8d2723620c0569592ae assets/create/blockstates/mechanical_crafter.json @@ -311,7 +311,7 @@ cf60989f63f02067fc4e4ad25033ac83167cdeb0 assets/create/blockstates/oak_window.js b0be3d4ff92cb123ec21ec2788db35d0f392ba8a assets/create/blockstates/orange_sail.json 5764a24f6c4fa552b61d2a02135adfc7d93c2e10 assets/create/blockstates/orange_seat.json 7541e5efb98cddf8cdf62138b674458cda877a4c assets/create/blockstates/orange_toolbox.json -1445074ec21a3735ea912b624c0f9f18a450d2d3 assets/create/blockstates/orange_valve_handle.json +1899f3e4f1dc630aadfe6e6bc80fcfb700dc734b assets/create/blockstates/orange_valve_handle.json 8e2028e1a0450a592eed5e10276ba19b1195a206 assets/create/blockstates/ornate_iron_window.json f59198fd966927e21e9bf76e64de533d05ea893b assets/create/blockstates/ornate_iron_window_pane.json af8601235f08eb2b8104e1fabe352531c24d4992 assets/create/blockstates/oxidized_copper_shingle_slab.json @@ -325,7 +325,7 @@ ed1a1d7a8b47027a1fcac2014e80f4e061d0f983 assets/create/blockstates/oxidized_copp 30971f2f76fe56f144178c33ad6bde5fc9fb61c3 assets/create/blockstates/pink_sail.json 919a79e4a4a5fab0aac3ef48e1c786017d6aa001 assets/create/blockstates/pink_seat.json 588ebcdb4c1d8d4c75225e92f26d6cf80cac2f15 assets/create/blockstates/pink_toolbox.json -471a3bb474a0ae0453143888d561256cce894e3f assets/create/blockstates/pink_valve_handle.json +77e7fb0126b676046b1a0c9e37e587c18e1c1b92 assets/create/blockstates/pink_valve_handle.json 975c97018e9e2419943eaab43aed0970e96feaf7 assets/create/blockstates/piston_extension_pole.json 7f008a4a1d6a01c49c3f29d5821295e39ce4a3f5 assets/create/blockstates/placard.json dae40222478caff3a5337c4f44cceaf5a30d4595 assets/create/blockstates/polished_cut_andesite.json @@ -396,7 +396,7 @@ ea8200550190eb65d8631c7842e06d99274b3c79 assets/create/blockstates/purple_nixie_ d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json b78c6057ef94b03f541a17e625b3778ca526a6ad assets/create/blockstates/purple_toolbox.json -61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json +0c4acb7e268a9a2a030a3ea8c29a6b03967ce4c6 assets/create/blockstates/purple_valve_handle.json 4439fc83a8c7370ab44b211a3fd48abde20a4728 assets/create/blockstates/radial_chassis.json e61e77d19c1abe9d76895909ee520e1bf0f7b512 assets/create/blockstates/railway_casing.json c9ccf6fe4c80357ba2e4d053f5a1b35df4f377a8 assets/create/blockstates/raw_zinc_block.json @@ -404,7 +404,7 @@ c9ccf6fe4c80357ba2e4d053f5a1b35df4f377a8 assets/create/blockstates/raw_zinc_bloc 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json 27fad7876f5a2de16f13dfde16d4a05dfe093989 assets/create/blockstates/red_toolbox.json -722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json +8a604cd639794533c0e9fe68a0ea218e99a3cecf assets/create/blockstates/red_valve_handle.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets/create/blockstates/redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets/create/blockstates/redstone_link.json b76ed5f6d271349b2509708c11e713bb299a57b6 assets/create/blockstates/refined_radiance_casing.json @@ -484,7 +484,7 @@ f0bef20f0e9a6b5d6a993b5fdc6ec3f7dc75d630 assets/create/blockstates/small_tuff_br 70192eb20909ca590e0a851dc7a283bc0899ebe4 assets/create/blockstates/small_veridium_brick_wall.json 4396af91ae23b9783fa34b861e4f01631dd53d49 assets/create/blockstates/small_veridium_bricks.json fa4ffec5eac02c0180226d994d51756e44f85674 assets/create/blockstates/smart_chute.json -f0f72cc1faacc8f37c8ac1833c22eb910771c800 assets/create/blockstates/smart_fluid_pipe.json +674fe9df0a71860ce8553a504f7f2a770b100743 assets/create/blockstates/smart_fluid_pipe.json e815bfd854c2653f10828bb11950f7fb991d7efc assets/create/blockstates/speedometer.json 1cb7cdbefa0ff199263782809287854b9d85074c assets/create/blockstates/spout.json d62b7908119fa4f51715a186d0882b388bb25cab assets/create/blockstates/spruce_window.json @@ -548,34 +548,34 @@ c838c0792511ca2e14493b40032bb1370fac588a assets/create/blockstates/weighted_ejec 512bf17c9ea309b1f7da54440f923530d25e467c assets/create/blockstates/white_sail.json 4647010162eb4c350fad236d860317eaa1884c77 assets/create/blockstates/white_seat.json 3695510f11231c8a5c1a0be94a92703e4b5a0f9c assets/create/blockstates/white_toolbox.json -89000903d0ab8139e919abea7aa0361b34c24e55 assets/create/blockstates/white_valve_handle.json +ae54261c2da64dd11ed7f887e1c9a19f96281fa7 assets/create/blockstates/white_valve_handle.json c4cd1131113667da0180898b5db3ebad609db8ba assets/create/blockstates/windmill_bearing.json d4f804f2818376950ef28fc8d6250419f4e12218 assets/create/blockstates/wooden_bracket.json 21cbde8ab2ab1bebe8bd36b23d1b480091fa9d57 assets/create/blockstates/yellow_nixie_tube.json e03c48512967845fce09d84b955d3bc7b480fedc assets/create/blockstates/yellow_sail.json a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.json bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbox.json -6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json +5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -11fd391ac3015f4dace8138ab1ec423ee822c7b4 assets/create/lang/en_us.json -34ab109f0935b7d0a7dd306188e0bd3056a77f93 assets/create/lang/unfinished/de_de.json -b5487949ee53302706c15051157316bb60dfa070 assets/create/lang/unfinished/es_cl.json -6df40ff1c18bfb83a33bc17e4458feeeee058bf1 assets/create/lang/unfinished/es_es.json -bca24c29adf91e0ee09db39783c59fac843acb46 assets/create/lang/unfinished/fr_fr.json -d7b53a16d03be2f854dfba1e90e2a149c2abecbd assets/create/lang/unfinished/it_it.json -42a6713a509ecd676e7eae6e6492da1e20e79102 assets/create/lang/unfinished/ja_jp.json -38e01a060e0e468a51b1ca4f0bcbec203837ce04 assets/create/lang/unfinished/ko_kr.json -83d812a1003fa3f25a3c28bbf54bf93f583c594a assets/create/lang/unfinished/nl_nl.json -c8c60fe2405f37cce7309326fb62cdb9aa1b49ff assets/create/lang/unfinished/pl_pl.json -11b3809e9c4c3c61687f7789979fdbf2332fd6a4 assets/create/lang/unfinished/pt_br.json -dd52b8df6ea92c1218e398197a1cedae066b4e0e assets/create/lang/unfinished/pt_pt.json -954a947034232204bd415e4bfb6c59a3a448b604 assets/create/lang/unfinished/ro_ro.json -54a92b2d667b55675c694904752760b594ab1424 assets/create/lang/unfinished/ru_ru.json -2f084cc7b66fe4ea82f5ac3338a1245caf67c54d assets/create/lang/unfinished/uk_ua.json -82490ac29a0c35c07cde11c340634bf8b416b6a3 assets/create/lang/unfinished/zh_cn.json -426b06805f08ef3fed15f404e9637b2d7082d660 assets/create/lang/unfinished/zh_tw.json +c219c77242e645f32704201dd80e279b3759b794 assets/create/lang/en_us.json +cf37534c3f98098f42b181083fd7cc1063ac2bbb assets/create/lang/unfinished/de_de.json +83d427726fdc38ec3c5b8c3c0f6f87f49d3e5ff3 assets/create/lang/unfinished/es_cl.json +d21caeb0cbe871e38dc101c34ab89ece3cbe2127 assets/create/lang/unfinished/es_es.json +2215688baa2b0beffe0c19f71a3238df1d01b0c1 assets/create/lang/unfinished/fr_fr.json +79484f2c3eba2b40f5d82ffdc3abeb3d2e6962d2 assets/create/lang/unfinished/it_it.json +d659570c9dc89653f03cd4cc82ed50db443638d8 assets/create/lang/unfinished/ja_jp.json +03c30521d9b1bc7a6eb85d2a59a4c4676dca581e assets/create/lang/unfinished/ko_kr.json +3a56d579d022cc1b20746e9d3a1483e6fa8fb4be assets/create/lang/unfinished/nl_nl.json +d5bfeacb442236c8b075fddb41364f85c8cb7feb assets/create/lang/unfinished/pl_pl.json +0f3f51d065d896a7e3b4abd8c2801fa3e8fbd8c3 assets/create/lang/unfinished/pt_br.json +9f2ec0b2f8fa9b380c7edb56bfb806bcce621cce assets/create/lang/unfinished/pt_pt.json +1f88f0d91bdf5c68224cb65249f77272771939c9 assets/create/lang/unfinished/ro_ro.json +928ac3ad2ab5e7fa3d582b8b956258c110bea868 assets/create/lang/unfinished/ru_ru.json +ed29ef4ae8f3633533485d56f7fa8cb77b790a0a assets/create/lang/unfinished/uk_ua.json +e5cf7b657be816bc15b331dd058f7ccdabee8c14 assets/create/lang/unfinished/zh_cn.json +316dae07f95fb65c984fe7c424b566eb8ddba5f9 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 @@ -5633,6 +5633,7 @@ d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/blocks/casing.json 74f4ba5f6f61c30e27947c6fb4557e888d018285 data/create/tags/blocks/safe_nbt.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/blocks/toolboxes.json +8861f982c335a1f17796df4af53a7d5dc91fc85a data/create/tags/blocks/tree_attachments.json 50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/windowable.json diff --git a/src/generated/resources/assets/create/blockstates/black_valve_handle.json b/src/generated/resources/assets/create/blockstates/black_valve_handle.json index ab5f48af8..173b5084e 100644 --- a/src/generated/resources/assets/create/blockstates/black_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/black_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/black_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/black_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/black_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/black_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/black_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/black_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/black_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/black_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/black_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/black_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/black_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/black_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/blue_valve_handle.json index fa05f73c2..6a9616e37 100644 --- a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/blue_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/blue_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/blue_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/blue_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/blue_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/blue_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/blue_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/blue_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/blue_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/blue_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/blue_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/blue_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/blue_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json b/src/generated/resources/assets/create/blockstates/brown_valve_handle.json index aac125cd9..dbd2b5630 100644 --- a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/brown_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/brown_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/brown_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/brown_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/brown_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/brown_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/brown_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/brown_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/brown_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/brown_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/brown_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/brown_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/brown_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json b/src/generated/resources/assets/create/blockstates/copper_valve_handle.json index d8e371297..5d99b072a 100644 --- a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/copper_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/copper_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/copper_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/copper_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/copper_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/copper_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/copper_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/copper_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/copper_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/copper_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/copper_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/copper_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/copper_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json b/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json index ca7d5322d..e5fa86623 100644 --- a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/cyan_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/cyan_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/cyan_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/cyan_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/cyan_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/cyan_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/cyan_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/cyan_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/cyan_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/fluid_valve.json b/src/generated/resources/assets/create/blockstates/fluid_valve.json index 41d048d24..e79dd5701 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_valve.json +++ b/src/generated/resources/assets/create/blockstates/fluid_valve.json @@ -1,98 +1,194 @@ { "variants": { - "axis_along_first=false,enabled=false,facing=down": { + "axis_along_first=false,enabled=false,facing=down,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "x": 270, "y": 90 }, - "axis_along_first=true,enabled=false,facing=down": { + "axis_along_first=true,enabled=false,facing=down,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "x": 270 }, - "axis_along_first=false,enabled=true,facing=down": { + "axis_along_first=false,enabled=true,facing=down,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "x": 270, "y": 90 }, - "axis_along_first=true,enabled=true,facing=down": { + "axis_along_first=true,enabled=true,facing=down,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "x": 270 }, - "axis_along_first=false,enabled=false,facing=up": { + "axis_along_first=false,enabled=false,facing=up,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "x": 90, "y": 90 }, - "axis_along_first=true,enabled=false,facing=up": { + "axis_along_first=true,enabled=false,facing=up,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "x": 90 }, - "axis_along_first=false,enabled=true,facing=up": { + "axis_along_first=false,enabled=true,facing=up,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "x": 90, "y": 90 }, - "axis_along_first=true,enabled=true,facing=up": { + "axis_along_first=true,enabled=true,facing=up,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "x": 90 }, - "axis_along_first=false,enabled=false,facing=north": { + "axis_along_first=false,enabled=false,facing=north,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_closed", "y": 180 }, - "axis_along_first=true,enabled=false,facing=north": { + "axis_along_first=true,enabled=false,facing=north,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "y": 180 }, - "axis_along_first=false,enabled=true,facing=north": { + "axis_along_first=false,enabled=true,facing=north,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_open", "y": 180 }, - "axis_along_first=true,enabled=true,facing=north": { + "axis_along_first=true,enabled=true,facing=north,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "y": 180 }, - "axis_along_first=false,enabled=false,facing=south": { + "axis_along_first=false,enabled=false,facing=south,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_closed" }, - "axis_along_first=true,enabled=false,facing=south": { + "axis_along_first=true,enabled=false,facing=south,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed" }, - "axis_along_first=false,enabled=true,facing=south": { + "axis_along_first=false,enabled=true,facing=south,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_open" }, - "axis_along_first=true,enabled=true,facing=south": { + "axis_along_first=true,enabled=true,facing=south,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open" }, - "axis_along_first=false,enabled=false,facing=west": { + "axis_along_first=false,enabled=false,facing=west,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "y": 90 }, - "axis_along_first=true,enabled=false,facing=west": { + "axis_along_first=true,enabled=false,facing=west,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_closed", "y": 90 }, - "axis_along_first=false,enabled=true,facing=west": { + "axis_along_first=false,enabled=true,facing=west,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "y": 90 }, - "axis_along_first=true,enabled=true,facing=west": { + "axis_along_first=true,enabled=true,facing=west,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_open", "y": 90 }, - "axis_along_first=false,enabled=false,facing=east": { + "axis_along_first=false,enabled=false,facing=east,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_closed", "y": 270 }, - "axis_along_first=true,enabled=false,facing=east": { + "axis_along_first=true,enabled=false,facing=east,waterlogged=false": { "model": "create:block/fluid_valve/block_vertical_closed", "y": 270 }, - "axis_along_first=false,enabled=true,facing=east": { + "axis_along_first=false,enabled=true,facing=east,waterlogged=false": { "model": "create:block/fluid_valve/block_horizontal_open", "y": 270 }, - "axis_along_first=true,enabled=true,facing=east": { + "axis_along_first=true,enabled=true,facing=east,waterlogged=false": { + "model": "create:block/fluid_valve/block_vertical_open", + "y": 270 + }, + "axis_along_first=false,enabled=false,facing=down,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "x": 270, + "y": 90 + }, + "axis_along_first=true,enabled=false,facing=down,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "x": 270 + }, + "axis_along_first=false,enabled=true,facing=down,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "x": 270, + "y": 90 + }, + "axis_along_first=true,enabled=true,facing=down,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "x": 270 + }, + "axis_along_first=false,enabled=false,facing=up,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "x": 90, + "y": 90 + }, + "axis_along_first=true,enabled=false,facing=up,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "x": 90 + }, + "axis_along_first=false,enabled=true,facing=up,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "x": 90, + "y": 90 + }, + "axis_along_first=true,enabled=true,facing=up,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "x": 90 + }, + "axis_along_first=false,enabled=false,facing=north,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_closed", + "y": 180 + }, + "axis_along_first=true,enabled=false,facing=north,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "y": 180 + }, + "axis_along_first=false,enabled=true,facing=north,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_open", + "y": 180 + }, + "axis_along_first=true,enabled=true,facing=north,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "y": 180 + }, + "axis_along_first=false,enabled=false,facing=south,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_closed" + }, + "axis_along_first=true,enabled=false,facing=south,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed" + }, + "axis_along_first=false,enabled=true,facing=south,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_open" + }, + "axis_along_first=true,enabled=true,facing=south,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open" + }, + "axis_along_first=false,enabled=false,facing=west,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "y": 90 + }, + "axis_along_first=true,enabled=false,facing=west,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_closed", + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=west,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "y": 90 + }, + "axis_along_first=true,enabled=true,facing=west,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_open", + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=east,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_closed", + "y": 270 + }, + "axis_along_first=true,enabled=false,facing=east,waterlogged=true": { + "model": "create:block/fluid_valve/block_vertical_closed", + "y": 270 + }, + "axis_along_first=false,enabled=true,facing=east,waterlogged=true": { + "model": "create:block/fluid_valve/block_horizontal_open", + "y": 270 + }, + "axis_along_first=true,enabled=true,facing=east,waterlogged=true": { "model": "create:block/fluid_valve/block_vertical_open", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/gray_valve_handle.json index 9b85eb843..fb989cca1 100644 --- a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/gray_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/gray_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/gray_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/gray_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/gray_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/gray_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/gray_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/gray_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/gray_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/gray_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/gray_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/gray_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/gray_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/green_valve_handle.json b/src/generated/resources/assets/create/blockstates/green_valve_handle.json index aed9eac23..06d1ebfa2 100644 --- a/src/generated/resources/assets/create/blockstates/green_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/green_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/green_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/green_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/green_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/green_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/green_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/green_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/green_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/green_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/green_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/green_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/green_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/green_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/hand_crank.json b/src/generated/resources/assets/create/blockstates/hand_crank.json index e10d67ce0..658d38a7f 100644 --- a/src/generated/resources/assets/create/blockstates/hand_crank.json +++ b/src/generated/resources/assets/create/blockstates/hand_crank.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/hand_crank/block", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/hand_crank/block" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/hand_crank/block", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/hand_crank/block", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/hand_crank/block", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/hand_crank/block", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/hand_crank/block", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/hand_crank/block" + }, + "facing=north,waterlogged=true": { + "model": "create:block/hand_crank/block", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/hand_crank/block", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/hand_crank/block", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/hand_crank/block", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json index e42c11775..147162d51 100644 --- a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/light_blue_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/light_blue_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/light_blue_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/light_blue_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/light_blue_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/light_blue_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/light_blue_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/light_blue_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/light_blue_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json index 488dc982a..45a42dfd2 100644 --- a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/light_gray_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/light_gray_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/light_gray_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/light_gray_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/light_gray_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/light_gray_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/light_gray_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/light_gray_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/light_gray_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json b/src/generated/resources/assets/create/blockstates/lime_valve_handle.json index e761549f8..be5b4d55f 100644 --- a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/lime_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/lime_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/lime_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/lime_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/lime_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/lime_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/lime_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/lime_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/lime_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/lime_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/lime_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/lime_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/lime_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json b/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json index bfcd42027..0502bfc6b 100644 --- a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/magenta_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/magenta_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/magenta_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/magenta_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/magenta_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/magenta_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/magenta_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/magenta_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/magenta_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json b/src/generated/resources/assets/create/blockstates/orange_valve_handle.json index 696d65489..81c9b4e4b 100644 --- a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/orange_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/orange_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/orange_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/orange_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/orange_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/orange_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/orange_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/orange_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/orange_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/orange_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/orange_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/orange_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/orange_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json b/src/generated/resources/assets/create/blockstates/pink_valve_handle.json index 6097d8dee..fd38f2ac1 100644 --- a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/pink_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/pink_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/pink_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/pink_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/pink_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/pink_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/pink_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/pink_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/pink_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/pink_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/pink_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/pink_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/pink_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json b/src/generated/resources/assets/create/blockstates/purple_valve_handle.json index caaa8c991..1ff5d12ba 100644 --- a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/purple_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/purple_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/purple_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/purple_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/purple_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/purple_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/purple_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/purple_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/purple_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/purple_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/purple_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/purple_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/purple_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/red_valve_handle.json b/src/generated/resources/assets/create/blockstates/red_valve_handle.json index 0bff1aa0f..8e9dbb50a 100644 --- a/src/generated/resources/assets/create/blockstates/red_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/red_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/red_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/red_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/red_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/red_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/red_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/red_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/red_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/red_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/red_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/red_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/red_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/red_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json index cf7adfc36..6c3d57a2a 100644 --- a/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json @@ -1,54 +1,107 @@ { "variants": { - "face=floor,facing=north": { + "face=floor,facing=north,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "y": 180 }, - "face=wall,facing=north": { + "face=wall,facing=north,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 270, "y": 180 }, - "face=ceiling,facing=north": { + "face=ceiling,facing=north,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 180 }, - "face=floor,facing=south": { + "face=floor,facing=south,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block" }, - "face=wall,facing=south": { + "face=wall,facing=south,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 270 }, - "face=ceiling,facing=south": { + "face=ceiling,facing=south,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 180, "y": 180 }, - "face=floor,facing=west": { + "face=floor,facing=west,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "y": 90 }, - "face=wall,facing=west": { + "face=wall,facing=west,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 270, "y": 90 }, - "face=ceiling,facing=west": { + "face=ceiling,facing=west,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 180, "y": 270 }, - "face=floor,facing=east": { + "face=floor,facing=east,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "y": 270 }, - "face=wall,facing=east": { + "face=wall,facing=east,waterlogged=false": { "model": "create:block/smart_fluid_pipe/block", "x": 270, "y": 270 }, - "face=ceiling,facing=east": { + "face=ceiling,facing=east,waterlogged=false": { + "model": "create:block/smart_fluid_pipe/block", + "x": 180, + "y": 90 + }, + "face=floor,facing=north,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "y": 180 + }, + "face=wall,facing=north,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 270, + "y": 180 + }, + "face=ceiling,facing=north,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 180 + }, + "face=floor,facing=south,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block" + }, + "face=wall,facing=south,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 270 + }, + "face=ceiling,facing=south,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 180, + "y": 180 + }, + "face=floor,facing=west,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "y": 90 + }, + "face=wall,facing=west,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 270, + "y": 90 + }, + "face=ceiling,facing=west,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 180, + "y": 270 + }, + "face=floor,facing=east,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "y": 270 + }, + "face=wall,facing=east,waterlogged=true": { + "model": "create:block/smart_fluid_pipe/block", + "x": 270, + "y": 270 + }, + "face=ceiling,facing=east,waterlogged=true": { "model": "create:block/smart_fluid_pipe/block", "x": 180, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/white_valve_handle.json b/src/generated/resources/assets/create/blockstates/white_valve_handle.json index ced0ad42e..7552532db 100644 --- a/src/generated/resources/assets/create/blockstates/white_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/white_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/white_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/white_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/white_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/white_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/white_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/white_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/white_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/white_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/white_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/white_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/white_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/white_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json b/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json index 0edbf38a0..6a72f843c 100644 --- a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/yellow_valve_handle", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/yellow_valve_handle" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/yellow_valve_handle", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/yellow_valve_handle", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/yellow_valve_handle", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/yellow_valve_handle" + }, + "facing=north,waterlogged=true": { + "model": "create:block/yellow_valve_handle", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/yellow_valve_handle", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/yellow_valve_handle", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 9d201a099..f29227a7a 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1484,6 +1484,7 @@ "create.schedule.condition.threshold.equal": "exactly", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "Matching Content", + "create.schedule.condition.threshold.anything": "Anything", "create.schedule.condition.threshold.item_measure": "Item Measure", "create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.stacks": "Stacks", @@ -1491,6 +1492,7 @@ "create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Reference Item", "create.schedule.condition.threshold.place_item_2": "Filters can be used", + "create.schedule.condition.threshold.place_item_3": "Leave empty to match any", "create.schedule.condition.fluid_threshold": "Fluid Cargo Condition", "create.schedule.condition.item_threshold": "Item Cargo Condition", "create.schedule.condition.redstone_link": "Redstone Link", 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 c1743a7fd..ec0ab8c0d 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: 840", + "_": "Missing Localizations: 842", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "genau", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s %3$s", "create.schedule.condition.threshold.matching_content": "passender Inhalt", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "Maßeinheit", "create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.stacks": "Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "Zugladestand: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Referenz-Item", "create.schedule.condition.threshold.place_item_2": "Filter können verwendet werden", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "Flüssigkeitsladestand", "create.schedule.condition.item_threshold": "Item-Ladestand", "create.schedule.condition.redstone_link": "Redstone-Link", @@ -1611,7 +1613,7 @@ "create.train.status.end_of_track": "Ein Waggon hat das Ende seines Gleises erreicht", "create.train.status.double_portal": "Ein Waggon kann kein Portal während des Verlassens eines anderen betreten", "create.train.status.coupling_stress": "Zwangsbremsung aufgrund von Spannung an einer Kopplung", - "create.train.status.track_missing": "Gleisen fehlen unter dem Zug", + "create.train.status.track_missing": "Gleise fehlen unter dem Zug", "create.train.status.paused_for_manual": "Fahrplan für manuelle Fahrt pausiert", "create.train.status.opposite_driver": "Pfad erfordert einen in die andere Richtung zeigenden Fahrer", "create.train.status.missing_driver": "Fahrer ist verschwunden", @@ -1684,7 +1686,7 @@ "create.display_source.station_summary.platform_column": "Spalte 'Gleis' Größe", "create.display_source.station_summary.now": "jetzt", "create.display_source.station_summary.minutes": "min", - "create.display_source.station_summary.seconds": "%1$sen", + "create.display_source.station_summary.seconds": "%1$ss", "create.display_source.observed_train_name": "Zugnamen ermitteln", "create.display_source.max_enchant_level": "Max. Verzauberungskosten", "create.display_source.boiler_status": "Kesselstatus", 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 19a6d4e3a..b1cb4225f 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: 986", + "_": "Missing Localizations: 988", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 408d3722f..9866e0ed4 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: 6", + "_": "Missing Localizations: 8", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "exactamente", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s de %3$s", "create.schedule.condition.threshold.matching_content": "Contenido coincidente", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "Medición de objetos", "create.schedule.condition.threshold.items": "Objetos", "create.schedule.condition.threshold.stacks": "Pilas de objetos", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "Cargamento: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Objeto de referencia", "create.schedule.condition.threshold.place_item_2": "Los filtros se pueden usar", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "Condición de cargamento de fluidos", "create.schedule.condition.item_threshold": "Condición de cargamento de objetos", "create.schedule.condition.redstone_link": "Enlace de redstone", 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 b239b8c06..b18cafe04 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 bced0d3ec..39c5e5ac9 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: 6", + "_": "Missing Localizations: 2", "_": "->------------------------] Game Elements [------------------------<-", @@ -22,13 +22,13 @@ "block.create.belt": "Nastro", "block.create.birch_window": "Finestra di betulla", "block.create.birch_window_pane": "Pannello di finestra di betulla", - "block.create.black_nixie_tube": "Tubo di Nixie nero", + "block.create.black_nixie_tube": "Tubo Nixie nero", "block.create.black_sail": "Vela nera", "block.create.black_seat": "Sedile nero", "block.create.black_toolbox": "Cassetta degli attrezzi nera", "block.create.black_valve_handle": "Maniglia per valvola nera", "block.create.blaze_burner": "Inceneritore a blaze", - "block.create.blue_nixie_tube": "Tubo di Nixie blu", + "block.create.blue_nixie_tube": "Tubo Nixie blu", "block.create.blue_sail": "Vela blu", "block.create.blue_seat": "Sedile blu", "block.create.blue_toolbox": "Cassetta degli attrezzi blu", @@ -42,7 +42,7 @@ "block.create.brass_funnel": "Imbuto di ottone", "block.create.brass_ladder": "Scala a pioli in ottone", "block.create.brass_tunnel": "Tunnel di ottone", - "block.create.brown_nixie_tube": "Tubo di Nixie marrone", + "block.create.brown_nixie_tube": "Tubo Nixie marrone", "block.create.brown_sail": "Vela marrone", "block.create.brown_seat": "Sedile marrone", "block.create.brown_toolbox": "Cassetta degli attrezzi marrone", @@ -189,7 +189,7 @@ "block.create.cut_veridium_slab": "Lastra di veridio tagliato", "block.create.cut_veridium_stairs": "Scalini di veridio tagliato", "block.create.cut_veridium_wall": "Muretto di veridio tagliato", - "block.create.cyan_nixie_tube": "Tubo di Nixie ciano", + "block.create.cyan_nixie_tube": "Tubo Nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Sedile ciano", "block.create.cyan_toolbox": "Cassetta degli attrezzi ciano", @@ -228,12 +228,12 @@ "block.create.gearshift": "Cambio", "block.create.glass_fluid_pipe": "Tubo per fluidi con vetrata", "block.create.granite_pillar": "Pilastro di granito", - "block.create.gray_nixie_tube": "Tubo di Nixie grigio", + "block.create.gray_nixie_tube": "Tubo Nixie grigio", "block.create.gray_sail": "Vela grigia", "block.create.gray_seat": "Sedile grigio", "block.create.gray_toolbox": "Cassetta degli attrezzi grigia", "block.create.gray_valve_handle": "Maniglia per valvola grigia", - "block.create.green_nixie_tube": "Tubo di Nixie verde", + "block.create.green_nixie_tube": "Tubo Nixie verde", "block.create.green_sail": "Vela verde", "block.create.green_seat": "Sedile verde", "block.create.green_toolbox": "Cassetta degli attrezzi verde", @@ -265,17 +265,17 @@ "block.create.layered_tuff": "Tufo stratificato", "block.create.layered_veridium": "Veridio stratificato", "block.create.lectern_controller": "Leggio con pulsantiera", - "block.create.light_blue_nixie_tube": "Tubo di Nixie azzurro", + "block.create.light_blue_nixie_tube": "Tubo Nixie azzurro", "block.create.light_blue_sail": "Vela azzurra", "block.create.light_blue_seat": "Sedile azzurro", "block.create.light_blue_toolbox": "Cassetta degli attrezzi azzurra", "block.create.light_blue_valve_handle": "Maniglia per valvola azzurra", - "block.create.light_gray_nixie_tube": "Tubo di Nixie grigio chiaro", + "block.create.light_gray_nixie_tube": "Tubo Nixie grigio chiaro", "block.create.light_gray_sail": "Vela grigio chiaro", "block.create.light_gray_seat": "Sedile grigio chiaro", "block.create.light_gray_toolbox": "Cassetta degli attrezzi grigia chiaro", "block.create.light_gray_valve_handle": "Maniglia per valvola grigio chiaro", - "block.create.lime_nixie_tube": "Tubo di Nixie lime", + "block.create.lime_nixie_tube": "Tubo Nixie lime", "block.create.lime_sail": "Vela lime", "block.create.lime_seat": "Sedile lime", "block.create.lime_toolbox": "Cassetta degli attrezzi lime", @@ -284,7 +284,7 @@ "block.create.limestone_pillar": "Pilastro di calcare", "block.create.linear_chassis": "Telaio lineare", "block.create.lit_blaze_burner": "Inceneritore a blaze acceso", - "block.create.magenta_nixie_tube": "Tubo di Nixie magenta", + "block.create.magenta_nixie_tube": "Tubo Nixie magenta", "block.create.magenta_sail": "Vela magenta", "block.create.magenta_seat": "Sedile magenta", "block.create.magenta_toolbox": "Cassetta degli attrezzi magenta", @@ -307,7 +307,7 @@ "block.create.millstone": "Macina", "block.create.minecart_anchor": "Ancora per carrello da miniera", "block.create.mysterious_cuckoo_clock": "Orologio a cucù misterioso", - "block.create.nixie_tube": "Tubo di Nixie", + "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Dispersore", "block.create.oak_window": "Finestra di quercia", "block.create.oak_window_pane": "Pannello di finestra di quercia", @@ -326,7 +326,7 @@ "block.create.oxidized_copper_tile_stairs": "Scalini di mattonelle di rame ossidato", "block.create.oxidized_copper_tiles": "Mattonelle di rame ossidato", "block.create.peculiar_bell": "Campana peculiare", - "block.create.pink_nixie_tube": "Tubo di Nixie rosa", + "block.create.pink_nixie_tube": "Tubo Nixie rosa", "block.create.pink_sail": "Vela rosa", "block.create.pink_seat": "Sedile rosa", "block.create.pink_toolbox": "Cassetta degli attrezzi rosa", @@ -397,7 +397,7 @@ "block.create.pulley_magnet": "Magnete della carrucola", "block.create.pulse_extender": "Estensore di impulsi", "block.create.pulse_repeater": "Ripetitore di impulsi", - "block.create.purple_nixie_tube": "Tubo di Nixie viola", + "block.create.purple_nixie_tube": "Tubo Nixie viola", "block.create.purple_sail": "Vela viola", "block.create.purple_seat": "Sedile viola", "block.create.purple_toolbox": "Cassetta degli attrezzi viola", @@ -405,7 +405,7 @@ "block.create.radial_chassis": "Telaio radiale", "block.create.railway_casing": "Rivestimento di treno", "block.create.raw_zinc_block": "Blocco di zinco grezzo", - "block.create.red_nixie_tube": "Tubo di Nixie rosso", + "block.create.red_nixie_tube": "Tubo Nixie rosso", "block.create.red_sail": "Vela rossa", "block.create.red_seat": "Sedile rosso", "block.create.red_toolbox": "Cassetta degli attrezzi rossa", @@ -549,14 +549,14 @@ "block.create.weathered_copper_tile_stairs": "Scalini di mattonelle di rame corroso", "block.create.weathered_copper_tiles": "Mattonelle di rame corroso", "block.create.weighted_ejector": "Espulsore di pesi", - "block.create.white_nixie_tube": "Tubo di Nixie bianco", + "block.create.white_nixie_tube": "Tubo Nixie bianco", "block.create.white_sail": "Vela bianca", "block.create.white_seat": "Sedile bianco", "block.create.white_toolbox": "Cassetta degli attrezzi bianca", "block.create.white_valve_handle": "Maniglia per valvola bianca", "block.create.windmill_bearing": "Supporto per mulino a vento", "block.create.wooden_bracket": "Supporto di legno", - "block.create.yellow_nixie_tube": "Tubo di Nixie giallo", + "block.create.yellow_nixie_tube": "Tubo Nixie giallo", "block.create.yellow_sail": "Vela gialla", "block.create.yellow_seat": "Sedile giallo", "block.create.yellow_toolbox": "Cassetta degli attrezzi gialla", @@ -1260,8 +1260,8 @@ "create.item_attributes.smokable.inverted": "non può essere affumicato", "create.item_attributes.blastable": "è fondibile in un forno fusorio", "create.item_attributes.blastable.inverted": "non è fondibile in un forno fusorio", - "create.item_attributes.compostable": "UNLOCALIZED: can be composted", - "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", + "create.item_attributes.compostable": "può essere gettato in una compstiera", + "create.item_attributes.compostable.inverted": "non può essere gettato in una compstiera", "create.item_attributes.shulker_level": "è uno shulker %1$s", "create.item_attributes.shulker_level.inverted": "non è uno shulker %1$s", "create.item_attributes.shulker_level.full": "pieno", @@ -1368,10 +1368,10 @@ "create.tooltip.chute.fans_pull_up": "Il ventilatore tira da sopra", "create.tooltip.chute.fans_pull_down": "Il ventilatore tira da sotto", "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", - "create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information", - "create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use", - "create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack", - "create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s", + "create.tooltip.deployer.header": "Informazioni sull'Installatore", + "create.tooltip.deployer.using": "Modalità: Utilizzo", + "create.tooltip.deployer.punching": "Modalità: Attacco", + "create.tooltip.deployer.contains": "Oggetto: %1$s x%2$s", "create.tooltip.brass_tunnel.contains": "Sta distribuendo:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "Click destro per recuperare", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "esattamente", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s di %3$s", "create.schedule.condition.threshold.matching_content": "Contenuto corrispondente", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "Misura", "create.schedule.condition.threshold.items": "Oggetti", "create.schedule.condition.threshold.stacks": "Stack", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "Carico: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Oggetto di riferimento", "create.schedule.condition.threshold.place_item_2": "È permesso usare Filtri", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "Carico di fluidi", "create.schedule.condition.item_threshold": "Carico di oggetti", "create.schedule.condition.redstone_link": "Connessione redstone", @@ -1651,7 +1653,7 @@ "create.display_source.list_items": "Lista di oggetti filtrati", "create.display_source.fluid_amount": "Quantità di fluidi filtrati", "create.display_source.list_fluids": "Lista di fluidi filtrati", - "create.display_source.nixie_tube": "Copia Tubo di Nixie", + "create.display_source.nixie_tube": "Copia Tubo Nixie", "create.display_source.fill_level": "Livello di riempimento", "create.display_source.fill_level.display": "Formato di visualizzazione", "create.display_source.fill_level.percent": "Percentuale", @@ -3022,7 +3024,7 @@ "create.ponder.windmill_source.text_7": "Fai click destro sul Supporto in qualsiasi momento per fermarlo e poter modificare di nuovo la struttura", "create.ponder.windmill_structure.header": "Macchinari per Mulini a vento", - "create.ponder.windmill_structure.text_1": "Qualsiasi struttura può essere un Mulino a vento vaido, purché contenga almeno 8 blocchi che possano essere considerati vele.", + "create.ponder.windmill_structure.text_1": "Qualsiasi struttura può essere un Mulino a vento valido, purché contenga almeno 8 blocchi che possano essere considerati vele.", "_": "Thank you for translating Create!" 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 ab56d3d1d..29408f90f 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: 2", + "_": "Missing Localizations: 4", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "ぴったり", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s", "create.schedule.condition.threshold.matching_content": "一致する貨物", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "アイテム単位", "create.schedule.condition.threshold.items": "個", "create.schedule.condition.threshold.stacks": "スタック", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s", "create.schedule.condition.threshold.place_item": "参照アイテム", "create.schedule.condition.threshold.place_item_2": "フィルターも使えます", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "液体貨物の状態", "create.schedule.condition.item_threshold": "アイテム貨物の状態", "create.schedule.condition.redstone_link": "レッドストーンリンク", 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 448da4f33..92e403ed6 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: 6", + "_": "Missing Localizations: 8", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "다음과 동일하면", "create.schedule.condition.threshold.x_units_of_item": "%3$s %1$s %2$s", "create.schedule.condition.threshold.matching_content": "내용물 일치", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "아이템 단위", "create.schedule.condition.threshold.items": "개", "create.schedule.condition.threshold.stacks": "스택", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "저장소: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "기준 아이템", "create.schedule.condition.threshold.place_item_2": "필터를 사용할 수 있음", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "액체 저장소 조건", "create.schedule.condition.item_threshold": "아이템 저장소 조건", "create.schedule.condition.redstone_link": "레드스톤 링크", 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 d0da85c4b..319e3974f 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: 2485", + "_": "Missing Localizations: 2487", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 18d89979d..be600d683 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: 10", + "_": "Missing Localizations: 12", "_": "->------------------------] Game Elements [------------------------<-", @@ -564,14 +564,14 @@ "block.create.zinc_block": "Blok cynku", "block.create.zinc_ore": "Złoże cynku", - "enchantment.create.capacity": "Pojameność", + "enchantment.create.capacity": "Pojemność", "enchantment.create.potato_recovery": "Odzyskiwanie", "entity.create.carriage_contraption": "Maszyna wagonowa", "entity.create.contraption": "Maszyna", "entity.create.crafting_blueprint": "Szablon konstruowania", "entity.create.gantry_contraption": "Maszyna suwnicowa", - "entity.create.potato_projectile": "Zimniaczany pocisk", + "entity.create.potato_projectile": "Ziemniaczany pocisk", "entity.create.seat": "Siedzenie", "entity.create.stationary_contraption": "Maszyna stacjonarna", "entity.create.super_glue": "Super Glue", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "dokładnie", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s: %3$s", "create.schedule.condition.threshold.matching_content": "Pasująca zawartość", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "Jednostka przedmiotów", "create.schedule.condition.threshold.items": "Przemioty", "create.schedule.condition.threshold.stacks": "Stosy", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "Ładunek: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Przedmiot odniesienia", "create.schedule.condition.threshold.place_item_2": "Filtry mogą zostać użyte", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "Warunek ładunku płynów", "create.schedule.condition.item_threshold": "Warunek ładunku przedmiotów", "create.schedule.condition.redstone_link": "Emiter sygnału", 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 52acd0236..4be946869 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: 1329", + "_": "Missing Localizations: 1331", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 f750b5a9f..a62924d83 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: 2194", + "_": "Missing Localizations: 2196", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 2d85ce256..25aa3227a 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: 653", + "_": "Missing Localizations: 655", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 830e8aafa..28d2f0826 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,11 +1,11 @@ { - "_": "Missing Localizations: 2", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "Акациевое окно", "block.create.acacia_window_pane": "Панель из акациевого окна", - "block.create.adjustable_chain_gearshift": "Регулируемый цепной механизм", + "block.create.adjustable_chain_gearshift": "Регулируемая цепная коробка передач", "block.create.analog_lever": "Аналоговый рычаг", "block.create.andesite_belt_funnel": "Андезитовая конвейерная воронка", "block.create.andesite_casing": "Андезитовый корпус", @@ -150,12 +150,12 @@ "block.create.cut_limestone_stairs": "Резные известковые ступеньки", "block.create.cut_limestone_wall": "Резная известковая ограда", "block.create.cut_ochrum": "Резной охрум", - "block.create.cut_ochrum_brick_slab": "Плита из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумовых кирпичей", - "block.create.cut_ochrum_bricks": "Резные кирпичи из охрума", - "block.create.cut_ochrum_slab": "Резная плита из охрума", - "block.create.cut_ochrum_stairs": "Резные ступеньки из охрума", + "block.create.cut_ochrum_brick_slab": "Плита из резных охрумывых кирпичей", + "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумывых кирпичей", + "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумывых кирпичей", + "block.create.cut_ochrum_bricks": "Резные охрумывые кирпичи", + "block.create.cut_ochrum_slab": "Резная охрумывая плита", + "block.create.cut_ochrum_stairs": "Резные охрумывые ступеньки", "block.create.cut_ochrum_wall": "Резная ограда из охрума", "block.create.cut_scorchia": "Резной тёмный пепел", "block.create.cut_scorchia_brick_slab": "Плита из резного тёмнопеплового кирпича", @@ -225,7 +225,7 @@ "block.create.gantry_carriage": "Шасси портального крана", "block.create.gantry_shaft": "Вал портального крана", "block.create.gearbox": "Коробка передач", - "block.create.gearshift": "Реверсивный механизм", + "block.create.gearshift": "Реверсивная коробка передач", "block.create.glass_fluid_pipe": "Стеклянная жидкостная труба", "block.create.granite_pillar": "Гранитная колонна", "block.create.gray_nixie_tube": "Серый газоразрядный индикатор", @@ -244,7 +244,7 @@ "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", "block.create.hose_pulley": "Шкив со шлангом", - "block.create.item_drain": "Предметный осушитель", + "block.create.item_drain": "Осушитель предметов", "block.create.item_vault": "Хранилище предметов", "block.create.jungle_window": "Окно из тропического дерева", "block.create.jungle_window_pane": "Панель окна из тропического дерева", @@ -306,13 +306,13 @@ "block.create.metal_girder_encased_shaft": "Вал в металлической балке", "block.create.millstone": "Жёрнов", "block.create.minecart_anchor": "Вагонеточная опора", - "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", + "block.create.mysterious_cuckoo_clock": "Странные часы с кукушкой", "block.create.nixie_tube": "Газоразрядный индикатор", "block.create.nozzle": "Форсунка", "block.create.oak_window": "Дубовое окно", "block.create.oak_window_pane": "Панель из дубового окна", "block.create.ochrum": "Охрум", - "block.create.ochrum_pillar": "Охрумовая колонна", + "block.create.ochrum_pillar": "Охрумывая колонна", "block.create.orange_sail": "Оранжевый парус", "block.create.orange_seat": "Оранжевое сиденье", "block.create.orange_toolbox": "Оранжевый ящик для инструментов", @@ -370,9 +370,9 @@ "block.create.polished_cut_limestone_stairs": "Полированные резные известковые ступеньки", "block.create.polished_cut_limestone_wall": "Полированная резная известковая ограда", "block.create.polished_cut_ochrum": "Полированный резной охрум", - "block.create.polished_cut_ochrum_slab": "Полированная резная охрумовая плита", - "block.create.polished_cut_ochrum_stairs": "Полированные резные охрумовые ступеньки", - "block.create.polished_cut_ochrum_wall": "Полированная резная охрумовая ограда", + "block.create.polished_cut_ochrum_slab": "Полированная резная охрумывая плита", + "block.create.polished_cut_ochrum_stairs": "Полированные резные охрумывые ступеньки", + "block.create.polished_cut_ochrum_wall": "Полированная резная охрумывая ограда", "block.create.polished_cut_scorchia": "Полированный резной тёмный пепел", "block.create.polished_cut_scorchia_slab": "Полированная резная тёмнопепловая плита", "block.create.polished_cut_scorchia_stairs": "Полированные резные тёмнопепловые ступеньки", @@ -467,15 +467,15 @@ "block.create.small_limestone_brick_stairs": "Ступеньки из мелкого известкового кирпича", "block.create.small_limestone_brick_wall": "Ограда из мелкого известкового кирпича", "block.create.small_limestone_bricks": "Мелкий известковый кирпич", - "block.create.small_ochrum_brick_slab": "Плита из мелкого охрумого кирпича", - "block.create.small_ochrum_brick_stairs": "Ступеньки из мелкого охрумого кирпича", - "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумого кирпича", - "block.create.small_ochrum_bricks": "Мелкие охрумовые кирпичи", + "block.create.small_ochrum_brick_slab": "Плита из мелкого охрумыго кирпича", + "block.create.small_ochrum_brick_stairs": "Ступеньки из мелкого охрумыго кирпича", + "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумыго кирпича", + "block.create.small_ochrum_bricks": "Мелкие охрумывые кирпичи", "block.create.small_rose_quartz_tiles": "Мелкая плитка из розового кварца", "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмнопеплового кирпича", - "block.create.small_scorchia_bricks": "Мелкие тёмно-пепловые кирпичи", + "block.create.small_scorchia_bricks": "Мелкие тёмнопепловые кирпичи", "block.create.small_scoria_brick_slab": "Плита из мелких пепловых кирпичей", "block.create.small_scoria_brick_stairs": "Ступеньки из мелких пепловых кирпичей", "block.create.small_scoria_brick_wall": "Ограда из мелких пепловых кирпичей", @@ -600,7 +600,7 @@ "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Заглушка на слот крафтера", - "item.create.crafting_blueprint": "Чёртеж", + "item.create.crafting_blueprint": "Чертёж", "item.create.creative_blaze_cake": "Творческий торт всполоха", "item.create.crushed_aluminum_ore": "Дроблёная алюминиевая руда", "item.create.crushed_copper_ore": "Дроблёная медная руда", @@ -654,7 +654,7 @@ "item.create.super_glue": "Суперклей", "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", - "item.create.unprocessed_obsidian_sheet": "Необработанный обсидиановый лист", + "item.create.unprocessed_obsidian_sheet": "Незаконченный прочный лист", "item.create.vertical_gearbox": "Вертикальная коробка передач", "item.create.wand_of_symmetry": "Жезл симметрии", "item.create.wheat_flour": "Пшеничная мука", @@ -667,11 +667,11 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Добро пожаловать в Create!", - "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", + "advancement.create.root.desc": "Пришло время начать строить удивительные штуковины!", "advancement.create.andesite_alloy": "Повторение — мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", + "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них — Андезитовый сплав", "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания Андезитового корпуса", + "advancement.create.andesite_casing.desc": "Используйте Андезитовый сплав и обтёсанное дерево для создания Андезитового корпуса", "advancement.create.mechanical_press": "Пресс делает «Бонк!»", "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе", "advancement.create.encased_fan": "Механический маг воздуха", @@ -681,11 +681,11 @@ "advancement.create.saw_processing": "Ужас лесопилки", "advancement.create.saw_processing.desc": "Используйте вертикальную Механическую пилу для обработки материалов", "advancement.create.compacting": "Компактификация", - "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы спрессовать предметы", + "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы сжать предметы", "advancement.create.belt": "Передайте за проезд!", "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня", "advancement.create.funnel": "Эстетика аэропорта", - "advancement.create.funnel.desc": "Извлеките или добавьте элементы в контейнер с помощью Воронки", + "advancement.create.funnel.desc": "Извлеките или добавьте предмет в контейнер с помощью Воронки", "advancement.create.chute": "Упало", "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера", "advancement.create.mechanical_mixer": "Смешать, но не взбалтывать", @@ -709,75 +709,75 @@ "advancement.create.wrench_goggles": "Дресс-код механика", "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ", "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Очки, чтобы прочитать точное значение", + "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Инженерные очки, чтобы узнать точное значение", "advancement.create.cuckoo_clock": "Который час?", "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна", "advancement.create.windmill_maxed": "Ветер крепчает", "advancement.create.windmill_maxed.desc": "Соберите Ветряную мельницу максимальной силы", "advancement.create.ejector_maxed": "Чемпион катапульты", "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты", - "advancement.create.pulley_maxed": "Веревка в никуда", + "advancement.create.pulley_maxed": "Верёвка в никуда", "advancement.create.pulley_maxed.desc": "Растяните Лебёдку на глубину более 200 блоков", "advancement.create.cart_pickup": "Сильные руки", "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикреплёнными блоками", "advancement.create.anvil_plough": "Кузнечная артиллерия", - "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами", + "advancement.create.anvil_plough.desc": "Оттолкните падающую наковальню двигающимися Механическими плугами", "advancement.create.lava_wheel_00000": "Адское колесо", "advancement.create.lava_wheel_00000.desc": "Это не должно было работать!§7\n(Секретное достижение)", - "advancement.create.hand_crank_000": "Силовая тренировка", + "advancement.create.hand_crank_000": "Кручу-верчу", "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения§7\n(Секретное достижение)", "advancement.create.belt_funnel_kiss": "Механический ужин", "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на конвейере Воронки поцеловаться!", "advancement.create.stressometer_maxed": "Миллиметраж", "advancement.create.stressometer_maxed.desc": "Получите предельные показания Стрессометра§7\n(Секретное достижение)", "advancement.create.copper": "Более прочные камни", - "advancement.create.copper.desc": "Получите немного меди за хитрости с водой", + "advancement.create.copper.desc": "Получите медь за хитрости с водой", "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса", + "advancement.create.copper_casing.desc": "Используйте медный слиток для создания Медного корпуса", "advancement.create.spout": "Буль", "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора", "advancement.create.drain": "Промышленное осушение", - "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Предметного осушителя", + "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Осушителя предметов", "advancement.create.steam_engine": "Сила пара", "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы", "advancement.create.steam_whistle": "Голос ангела", "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток", "advancement.create.backtank": "Повышение давления", "advancement.create.backtank.desc": "Создайте Медный баллон и заставьте его закачивать воздух в себя", - "advancement.create.diving_suit": "Готов к погружению", + "advancement.create.diving_suit": "Кто проживает на дне океана?", "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду", - "advancement.create.mechanical_pump_0": "Под давлением", - "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос", + "advancement.create.mechanical_pump_0": "Закачаешься", + "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механическую помпу", "advancement.create.glass_pipe": "Шпион за потоками", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа", + "advancement.create.glass_pipe.desc": "Наблюдайте через окно в Трубе за тем как распространяется жидкость. Окно появится на Трубе при использовании Гаечного ключа", "advancement.create.water_supply": "Сборщик луж", - "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок", + "advancement.create.water_supply.desc": "Используйте Трубу или Помпу, чтобы собрать водный блок", "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью", + "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он осушает или заполняет пространство жидкостью", "advancement.create.chocolate_bucket": "Не слипнется!", - "advancement.create.chocolate_bucket.desc": "Получите Ведро расплавленного шоколада", + "advancement.create.chocolate_bucket.desc": "Получите Ведро шоколада", "advancement.create.honey_drain": "Укуси меня пчела!", "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают", "advancement.create.hose_pulley_lava": "Прикосновение к мантии", - "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным", - "advancement.create.steam_engine_maxed": "На полную мощность!", + "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из бесконечного источника", + "advancement.create.steam_engine_maxed": "С мёртвой точки!", "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности", - "advancement.create.foods": "Сбалансированная диета", - "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора", - "advancement.create.diving_suit_lava": "Плавание с лавомерками", - "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением§7\n(Секретное достижение)", + "advancement.create.foods": "Правильное питание", + "advancement.create.foods.desc": "Создайте Ягоды в шоколадной глазури, Яблоко в меду и Сладкий рулет; всё из одного Дозатора", + "advancement.create.diving_suit_lava": "Плохая идея", + "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением. Сделайте из этого выводы§7\n(Секретное достижение)", "advancement.create.chained_drain": "Смотри как могу!", - "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей§7\n(Секретное достижение)", + "advancement.create.chained_drain.desc": "Наблюдайте как предмет переворачивается по ряду Осушителей предметов§7\n(Секретное достижение)", "advancement.create.cross_streams": "Не пересекайте потоки!", - "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах§7\n(Секретное достижение)", + "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две разные жидкости встречаются в ваших Трубах§7\n(Секретное достижение)", "advancement.create.pipe_organ": "Иоганн Бах", "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью§7\n(Секретное достижение)", "advancement.create.brass": "Реальный сплав", - "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать немного Латуни", + "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать Латунь", "advancement.create.brass_casing": "Латунный век", - "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус", + "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и обтёсанную древесину, чтобы создать более продвинутый корпус", "advancement.create.rose_quartz": "Розовые алмазы", - "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца", + "advancement.create.rose_quartz.desc": "Отполируйте Розовый кварц", "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя", "advancement.create.precision_mechanism": "Сложные любопытства", @@ -785,12 +785,12 @@ "advancement.create.speed_controller": "Его ненавидят инженеры!", "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач", "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу", + "advancement.create.mechanical_arm.desc": "Активируйте Механическую руку. Затем смотрите как она делает за вас всю работу", "advancement.create.mechanical_crafter": "Лень — двигатель прогресса", - "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров", + "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров, чтобы создавать всякое", "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов", - "advancement.create.haunted_bell": "Помощь призраков", + "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше предметов", + "advancement.create.haunted_bell": "По ком звонит колокол", "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол", "advancement.create.clockwork_bearing": "Хитрые часы", "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме", @@ -798,10 +798,10 @@ "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации", "advancement.create.potato_cannon": "Свомп!", "advancement.create.potato_cannon.desc": "Победите врага с помощью своей Картофельной пушки!", - "advancement.create.extendo_grip": "Бойоиоинг!", + "advancement.create.extendo_grip": "Дальше — больше", "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку", - "advancement.create.linked_controller": "Удалённая активация", - "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна", + "advancement.create.linked_controller": "Восстановление связей", + "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации Беспроводного приёмника редстоун-сигнала", "advancement.create.arm_blaze_burner": "Поджигателе-трон", "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки всполоха", "advancement.create.crusher_maxed_0000": "Раздроби это!", @@ -810,30 +810,30 @@ "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов", "advancement.create.potato_cannon_collide": "Картофегиляция", "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом", - "advancement.create.self_deploying": "Самоходная вагонетка", + "advancement.create.self_deploying": "До чего дошёл прогресс!", "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой", "advancement.create.fist_bump": "Здарова, бро!", "advancement.create.fist_bump.desc": "Сделайте так, чтобы два Автономных активатора ударили кулаками", "advancement.create.crafter_lazy_000": "Отчаянные меры", "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство§7\n(Секретное достижение)", "advancement.create.extendo_grip_dual": "В полной мере", - "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости§7\n(Секретное достижение)", + "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер-досягаемости§7\n(Секретное достижение)", "advancement.create.musical_arm": "Сбацай что-нибудь!", "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки", "advancement.create.sturdy_sheet": "Ещё более твёрдые камни", - "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана", + "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из Порошкообразного обсидиана", "advancement.create.train_casing_00": "Железнодорожная эра", - "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса", + "advancement.create.train_casing_00.desc": "Используйте Прочные листы и Латунный корпус для создания Железнодорожного корпуса", "advancement.create.train": "Все на борт!", "advancement.create.train.desc": "Соберите свой первый поезд", "advancement.create.conductor": "Машинист-инструктор", "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию", "advancement.create.track_signal": "Управление движением", "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор", - "advancement.create.display_board_0": "Динамическое расписание", - "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации", + "advancement.create.display_board_0": "Эстетика вокзала", + "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на Табло с помощью Передатчика информации", "advancement.create.track_0": "Новая колея", - "advancement.create.track_0.desc": "Получите Железнодорожный путь", + "advancement.create.track_0.desc": "Создайте Железнодорожный путь", "advancement.create.train_whistle": "Чу-Чу!", "advancement.create.train_whistle.desc": "Прикрепите Паровой свисток к вашему поезду и погудите в него!", "advancement.create.train_portal": "Сквозь измерения", @@ -841,7 +841,7 @@ "advancement.create.track_crafting_factory": "Железнодорожная фабрика", "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе", "advancement.create.long_bend": "Крутой поворот", - "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков", + "advancement.create.long_bend.desc": "Создайте участок изогнутых Путей длиной более 30 блоков", "advancement.create.long_train": "Амбициозные усилия", "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами", "advancement.create.long_travel": "На дальней станции сойду", @@ -858,27 +858,27 @@ "_": "->------------------------] UI & Messages [------------------------<-", - "itemGroup.create.base": "Create: Механизмы", + "itemGroup.create.base": "Create: Основные", "itemGroup.create.palettes": "Create: Декор", "death.attack.create.crush": "%1$s был передроблен", - "death.attack.create.crush.player": "%2$s столкнул %1$s в дробящие колёса", - "death.attack.create.fan_fire": "%1$s был сожжён до смерти горячим воздухом", - "death.attack.create.fan_fire.player": "%2$s столкнул %1$s в коптильню", - "death.attack.create.fan_lava": "%1$s был сожжён до смерти поклонником лавы", - "death.attack.create.fan_lava.player": "%2$s столкнул %1$s в плавильню", + "death.attack.create.crush.player": "%1$s был передроблен благодаря %2$s", + "death.attack.create.fan_fire": "%1$s был высушен до смерти горячим воздухом", + "death.attack.create.fan_fire.player": "%1$s был высушен до смерти горячим воздухом благодаря %2$s", + "death.attack.create.fan_lava": "%1$s был сожжён огненным потоком", + "death.attack.create.fan_lava.player": "%1$s был сожжён огненным потоком благодаря %2$s", "death.attack.create.mechanical_drill": "%1$s был пронзён механической дрелью", - "death.attack.create.mechanical_drill.player": "%2$s толкнул %1$s под механическую дрель", + "death.attack.create.mechanical_drill.player": "%1$s был пронзён механической дрелью благодаря %2$s", "death.attack.create.mechanical_saw": "%1$s был разрезан пополам механической пилой", - "death.attack.create.mechanical_saw.player": "%2$s толкнул %1$s под механическую пилу", - "death.attack.create.potato_cannon": "%1$s был застрелен картофельной пушкой %2$s", - "death.attack.create.potato_cannon.item": "%1$s был застрелен %2$s при помощи «%3$s»", - "death.attack.create.cuckoo_clock_explosion": "%1$s взорвали подделанные часы с кукушкой", - "death.attack.create.cuckoo_clock_explosion.player": "%1$s был взорван подделанными часами с кукушкой", + "death.attack.create.mechanical_saw.player": "%1$s был разрезан пополам механической пилой благодаря %2$s", + "death.attack.create.potato_cannon": "%1$s был застрелен из картофельной пушки %2$s", + "death.attack.create.potato_cannon.item": "%1$s был застрелен %2$s с помощью %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s был взорван фальшивыми часами с кукушкой", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s был взорван фальшивыми часами с кукушкой благодаря %2$s", "death.attack.create.run_over": "%1$s был размазан по путям %2$s", "create.block.deployer.damage_source_name": "автономным активатором", - "create.block.cart_assembler.invalid": "Поместите сборщик вагонеток на блок рельс", + "create.block.cart_assembler.invalid": "Установите сборщик вагонеток на рельсы", "create.menu.return": "Вернуться в меню", "create.menu.configure": "Настроить...", @@ -899,18 +899,18 @@ "create.recipe.fan_blasting.fan": "Вентилятор за лавой", "create.recipe.pressing": "Прессование", "create.recipe.mixing": "Смешивание", - "create.recipe.deploying": "Автономная активация", - "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", - "create.recipe.automatic_brewing": "Автоматическое смешивание", + "create.recipe.deploying": "Автономное создание", + "create.recipe.automatic_shapeless": "Бесформенная сборка", + "create.recipe.automatic_brewing": "Автоматическая варка", "create.recipe.packing": "Спрессовывание", - "create.recipe.automatic_packing": "Автоматическое спрессовывание", - "create.recipe.sawing": "Распиливание", + "create.recipe.automatic_packing": "Сжатие предметов", + "create.recipe.sawing": "Распиловка", "create.recipe.mechanical_crafting": "Механическое создание", - "create.recipe.automatic_shaped": "Автоматическая форменная сборка", - "create.recipe.block_cutting": "Резка блока", + "create.recipe.automatic_shaped": "Форменная сборка", + "create.recipe.block_cutting": "Резка блоков", "create.recipe.wood_cutting": "Резка древесины", - "create.recipe.sandpaper_polishing": "Полирование наждачной бумагой", - "create.recipe.mystery_conversion": "Хроматический метаморфоз", + "create.recipe.sandpaper_polishing": "Полирование", + "create.recipe.mystery_conversion": "Таинственное преобразование", "create.recipe.spout_filling": "Наполнение дозатором", "create.recipe.draining": "Осушение предметов", "create.recipe.item_application": "Ручное создание", @@ -920,8 +920,8 @@ "create.recipe.assembly.step": "Шаг %1$s:", "create.recipe.assembly.progress": "Прогресс: %1$s/%2$s", "create.recipe.assembly.pressing": "Обработайте прессом", - "create.recipe.assembly.spout_filling_fluid": "Долейте %1$s", - "create.recipe.assembly.deploying_item": "Добавьте %1$s", + "create.recipe.assembly.spout_filling_fluid": "Добавьте жидкость: %1$s", + "create.recipe.assembly.deploying_item": "Добавьте предмет: %1$s", "create.recipe.assembly.cutting": "Разрежьте пилой", "create.recipe.assembly.repeat": "Повторите последовательность %1$s раз", "create.recipe.assembly.junk": "Случайный мусор", @@ -940,9 +940,9 @@ "create.generic.delay": "Задержка", "create.generic.duration": "Продолжительность", "create.generic.timeUnit": "Единица времени", - "create.generic.unit.ticks": "тиков", - "create.generic.unit.seconds": "секунд", - "create.generic.unit.minutes": "минут", + "create.generic.unit.ticks": "Тиков", + "create.generic.unit.seconds": "Секунд", + "create.generic.unit.minutes": "Минут", "create.generic.daytime.hour": "Час", "create.generic.daytime.minute": "Минута", "create.generic.daytime.second": "Секунда", @@ -951,7 +951,7 @@ "create.generic.unit.rpm": "об./мин.", "create.generic.unit.stress": "ЕН", "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$sмВ", + "create.generic.unit.millibuckets": "%1$s мВ", "create.generic.unit.buckets": "B", "create.generic.clockwise": "По часовой стрелке", "create.generic.counter_clockwise": "Против часовой стрелки", @@ -975,14 +975,14 @@ "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутите, чтобы настроить количество", "create.gui.scrollInput.scrollToSelect": "Прокрутите, чтобы выбрать", "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift для быстрой прокрутки", - "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены задач", + "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены действия", "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", "create.toolbox.unequip": "Убрать: %1$s", "create.toolbox.outOfRange": "Ящик для инструментов выбранного предмета слишком далеко...", "create.toolbox.detach": "Убрать выбранный предмет в ящик для инструментов", - "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики для инструментов", - "create.toolbox.depositBox": "Вернуть предметы в ящик для инструментов", + "create.toolbox.depositAll": "Вернуть все предметы в ближайшие ящики для инструментов", + "create.toolbox.depositBox": "Вернуть все предметы в ящик для инструментов", "create.gui.symmetryWand.mirrorType": "Зеркало", "create.gui.symmetryWand.orientation": "Ориентация", @@ -991,41 +991,41 @@ "create.symmetry.mirror.doublePlane": "Двойное", "create.symmetry.mirror.triplePlane": "Тройное", - "create.orientation.orthogonal": "Перпендикуляр.", - "create.orientation.diagonal": "Диагональ.", - "create.orientation.horizontal": "Горизонталь.", + "create.orientation.orthogonal": "Перпендикулярная", + "create.orientation.diagonal": "Диагональная", + "create.orientation.horizontal": "Горизонтальная", "create.orientation.alongZ": "Вдоль Z", "create.orientation.alongX": "Вдоль X", "create.gui.terrainzapper.title": "Ручной редактор мира", - "create.gui.terrainzapper.searchDiagonal": "Следование диагоналям", + "create.gui.terrainzapper.searchDiagonal": "Следовать диагоналям", "create.gui.terrainzapper.searchFuzzy": "Игнорировать границы материала", - "create.gui.terrainzapper.patternSection": "Шаблон", - "create.gui.terrainzapper.pattern.solid": "Сплошной", + "create.gui.terrainzapper.patternSection": "Шаблоны", + "create.gui.terrainzapper.pattern.solid": "Полное заполнение", "create.gui.terrainzapper.pattern.checkered": "Шахматный порядок", "create.gui.terrainzapper.pattern.inversecheckered": "Обратный шахматный порядок", "create.gui.terrainzapper.pattern.chance25": "25% заполнение", "create.gui.terrainzapper.pattern.chance50": "50% заполнение", "create.gui.terrainzapper.pattern.chance75": "75% заполнение", - "create.gui.terrainzapper.placement": "Размещение", - "create.gui.terrainzapper.placement.merged": "Слитый", - "create.gui.terrainzapper.placement.attached": "Прикреплённый", - "create.gui.terrainzapper.placement.inserted": "Вставленный", - "create.gui.terrainzapper.brush": "Обычный", + "create.gui.terrainzapper.placement": "Установка", + "create.gui.terrainzapper.placement.merged": "Слитая", + "create.gui.terrainzapper.placement.attached": "Прикреплённая", + "create.gui.terrainzapper.placement.inserted": "Вставленная", + "create.gui.terrainzapper.brush": "Кисти", "create.gui.terrainzapper.brush.cuboid": "Куб", "create.gui.terrainzapper.brush.sphere": "Сфера", "create.gui.terrainzapper.brush.cylinder": "Цилиндр", "create.gui.terrainzapper.brush.surface": "Поверхность", "create.gui.terrainzapper.brush.cluster": "Скопление", - "create.gui.terrainzapper.tool": "Инструмент", + "create.gui.terrainzapper.tool": "Инструменты", "create.gui.terrainzapper.tool.fill": "Заполнить", "create.gui.terrainzapper.tool.place": "Поставить", "create.gui.terrainzapper.tool.replace": "Заменить", "create.gui.terrainzapper.tool.clear": "Очистить", "create.gui.terrainzapper.tool.overlay": "Наложение", - "create.gui.terrainzapper.tool.flatten": "Выравнивание", + "create.gui.terrainzapper.tool.flatten": "Сглаживание", - "create.terrainzapper.shiftRightClickToSet": "Нажмите Shift+ПКМ, чтобы выбрать форму", + "create.terrainzapper.shiftRightClickToSet": "Нажмите ПКМ крадучись, чтобы выбрать кисть", "create.terrainzapper.usingBlock": "Используется: %1$s", "create.terrainzapper.leftClickToSet": "Нажмите ЛКМ по блоку, что бы использовать материал", @@ -1057,9 +1057,9 @@ "create.logistics.fluid_filter": "Фильтр жидкости", "create.logistics.firstFrequency": "Частота #1", "create.logistics.secondFrequency": "Частота #2", - "create.logistics.filter.apply": "Фильтр применён к %1$s.", - "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s, кликните ещё раз, чтобы скопировать количество.", - "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру.", + "create.logistics.filter.apply": "Фильтр применён к %1$s", + "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s; кликните ещё раз, чтобы скопировать количество", + "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру", "create.gui.goggles.generator_stats": "Статистика генератора:", "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", @@ -1068,19 +1068,19 @@ "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", - "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", + "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s|%2$s|%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s|%2$s|%3$s] был в незагруженном чанке", "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества блоков.\nТекущий максимум: %1$s", "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много удлинителей прикреплено к этому поршню.\nТекущий максимум: %1$s", "create.gui.assembly.exception.noPistonPoles": "Поршню не хватает удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусоподобных блоков: %1$s\nМинимум из %2$s необходимых", + "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура содержит недостаточно парусоподобных блоков; %1$s из минимум %2$s необходимых", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Нагрузка на сеть", "create.gui.stressometer.capacity": "Оставшаяся ёмкость", "create.gui.stressometer.overstressed": "Перегрузка", "create.gui.stressometer.no_rotation": "Нет вращения", - "create.gui.contraptions.not_fast_enough": "Похоже, что этот %1$s _не_ вращается с _достаточной_ _скоростью_.", + "create.gui.contraptions.not_fast_enough": "Похоже, что %1$s вращается с _недостаточной_ _скоростью_.", "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _понизьте_ _скорость_ компонентов, _создающих_ высокую _нагрузку_.", "create.gui.adjustable_crate.title": "Регулируемый ящик", "create.gui.adjustable_crate.storageSpace": "Ёмкость", @@ -1088,12 +1088,12 @@ "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", "create.gui.stockpile_switch.move_to_lower_at": "Переключатся на нижнюю линию при %1$s%%", "create.gui.stockpile_switch.move_to_upper_at": "Переключатся на верхнюю линию при %1$s%%", - "create.gui.sequenced_gearshift.title": "Послед. коробка передач", + "create.gui.sequenced_gearshift.title": "Последов. коробка передач", "create.gui.sequenced_gearshift.instruction": "Инструкция", "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Угол", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Повернуть для движения Поршня/Шкива/Портала", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Перемещение Поршня/Шкива/Крана", "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Расстояние", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Временная задержка", @@ -1101,18 +1101,18 @@ "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", "create.gui.sequenced_gearshift.instruction.end": "Конец", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового сигнала редстоуна", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового редстоун-сигнала", "create.gui.sequenced_gearshift.instruction.await": "Сигнал", - "create.gui.sequenced_gearshift.speed": "Скорость, Направление", - "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", - "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", - "create.gui.sequenced_gearshift.speed.back": "Скорость ввода, реверс", + "create.gui.sequenced_gearshift.speed": "Скорость, направление", + "create.gui.sequenced_gearshift.speed.forward": "Обычная скорость, вперёд", + "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперёд", + "create.gui.sequenced_gearshift.speed.back": "Обычная скорость, реверс", "create.gui.sequenced_gearshift.speed.back_fast": "Двойная скорость, реверс", "create.schematicAndQuill.dimensions": "Размер схематики: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Первая позиция установлена", "create.schematicAndQuill.secondPos": "Вторая позиция установлена", - "create.schematicAndQuill.noTarget": "Удерживайте [Ctrl], чтобы выбрать блоки воздуха", + "create.schematicAndQuill.noTarget": "Удерживайте Ctrl, чтобы выбрать блоки воздуха", "create.schematicAndQuill.abort": "Выделение отменено", "create.schematicAndQuill.title": "Имя схематики:", "create.schematicAndQuill.convert": "Сохранить и развернуть немедленно", @@ -1137,32 +1137,32 @@ "create.schematic.tool.print": "Печать", "create.schematic.tool.flip": "Перевернуть", "create.schematic.tool.deploy.description.0": "Перемещает структуру в локации.", - "create.schematic.tool.deploy.description.1": "Щелкните ПКМ на земле, чтобы разместить.", - "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl], чтобы выбрать фиксированное расстояние.", - "create.schematic.tool.deploy.description.3": "[Ctrl] и прокрутка, чтобы изменить расстояние.", + "create.schematic.tool.deploy.description.1": "Щёлкните ПКМ по блоку, чтобы разместить.", + "create.schematic.tool.deploy.description.2": "Зажмите Ctrl, чтобы выбрать фиксированное расстояние.", + "create.schematic.tool.deploy.description.3": "Ctrl и прокрутка, чтобы изменить расстояние.", "create.schematic.tool.move.description.0": "Сдвинуть схему по горизонтали.", - "create.schematic.tool.move.description.1": "Наведите курсор на схему и зажмите [Ctrl] и прокрутка,", + "create.schematic.tool.move.description.1": "Наведите курсор на схему и зажмите Ctrl и прокрутка,", "create.schematic.tool.move.description.2": "для перемещения по горизонтали.", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали.", - "create.schematic.tool.movey.description.1": "[Ctrl] и прокрутка для перемещения вверх/вниз.", + "create.schematic.tool.movey.description.1": "Ctrl и прокрутка для перемещения вверх/вниз.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг ее центра.", - "create.schematic.tool.rotate.description.1": "[Ctrl] и прокрутка для вращения на 90 градусов.", + "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг её центра.", + "create.schematic.tool.rotate.description.1": "Ctrl и прокрутка для вращения на 90 градусов.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Мгновенно размещает структуру в мире.", - "create.schematic.tool.print.description.1": "[ПКМ], чтобы подтвердить размещение в текущем местоположении.", + "create.schematic.tool.print.description.1": "ПКМ, чтобы подтвердить размещение в текущем месте.", "create.schematic.tool.print.description.2": "Этот инструмент предназначен только", "create.schematic.tool.print.description.3": "для творческого режима.", "create.schematic.tool.flip.description.0": "Переверните схему вдоль выбранной стороны.", - "create.schematic.tool.flip.description.1": "Наведите курсор на схему и [Ctrl] и прокрутка,", - "create.schematic.tool.flip.description.2": "чтобы перевернуть ее.", + "create.schematic.tool.flip.description.1": "Наведите курсор на схему и Ctrl и прокрутка,", + "create.schematic.tool.flip.description.2": "чтобы перевернуть её.", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Синхронизация...", - "create.schematics.uploadTooLarge": "Ваша схематика слишком велика.", + "create.schematics.uploadTooLarge": "Файл схематики слишком большой.", "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", "create.gui.schematicTable.refresh": "Обновить файлы", @@ -1221,9 +1221,9 @@ "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает всё.", "create.gui.filter.allow_list": "Белый список", "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает всё.", - "create.gui.filter.respect_data": "Использование данных", + "create.gui.filter.respect_data": "Использовать данные", "create.gui.filter.respect_data.description": "Предметы проходят только в том случае, если их прочность, чары и другие атрибуты совпадают.", - "create.gui.filter.ignore_data": "Игнорирование данных", + "create.gui.filter.ignore_data": "Игнорировать данные", "create.gui.filter.ignore_data.description": "Предметы проходят независимо от их атрибутов.", "create.item_attributes.placeable": "можно разместить", @@ -1234,71 +1234,71 @@ "create.item_attributes.fluid_container.inverted": "не может хранить жидкости", "create.item_attributes.enchanted": "зачарован", "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.max_enchanted": "зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "не зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted": "зачарован на максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "зачарован не на максимальный уровень", "create.item_attributes.renamed": "имеет пользовательское имя", "create.item_attributes.renamed.inverted": "не имеет пользовательского имени", "create.item_attributes.damaged": "повреждён", "create.item_attributes.damaged.inverted": "не повреждён", "create.item_attributes.badly_damaged": "сильно повреждён", - "create.item_attributes.badly_damaged.inverted": "не сильно повреждён", + "create.item_attributes.badly_damaged.inverted": "повреждён не сильно", "create.item_attributes.not_stackable": "не может складываться", "create.item_attributes.not_stackable.inverted": "складывается", - "create.item_attributes.equipable": "может быть надет", - "create.item_attributes.equipable.inverted": "не может быть надет", + "create.item_attributes.equipable": "можно надеть", + "create.item_attributes.equipable.inverted": "нельзя надеть", "create.item_attributes.furnace_fuel": "является топливом", "create.item_attributes.furnace_fuel.inverted": "не является топливом", "create.item_attributes.washable": "можно промыть", "create.item_attributes.washable.inverted": "нельзя промыть", - "create.item_attributes.hauntable": "может быть наполнен призраками", + "create.item_attributes.hauntable": "можно наполнить призраками", "create.item_attributes.hauntable.inverted": "нельзя наполнить призраками", - "create.item_attributes.crushable": "можно измельчить", - "create.item_attributes.crushable.inverted": "нельзя разместить", + "create.item_attributes.crushable": "можно раздробить", + "create.item_attributes.crushable.inverted": "нельзя раздробить", "create.item_attributes.smeltable": "можно расплавить", "create.item_attributes.smeltable.inverted": "нельзя расплавить", "create.item_attributes.smokable": "можно прокоптить", "create.item_attributes.smokable.inverted": "нельзя прокоптить", - "create.item_attributes.blastable": "плавится в доменной печи", - "create.item_attributes.blastable.inverted": "не плавится в доменной печи", - "create.item_attributes.compostable": "UNLOCALIZED: can be composted", - "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", - "create.item_attributes.shulker_level": "шалкер %1$s", - "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", - "create.item_attributes.shulker_level.full": "полный", - "create.item_attributes.shulker_level.empty": "пустой", + "create.item_attributes.blastable": "можно расплавить в доменной печи", + "create.item_attributes.blastable.inverted": "нельзя расплавить в доменной печи", + "create.item_attributes.compostable": "можно компостировать", + "create.item_attributes.compostable.inverted": "нельзя компостировать", + "create.item_attributes.shulker_level": "шалкеровый ящик %1$s", + "create.item_attributes.shulker_level.inverted": "шалкеровый ящик не %1$s", + "create.item_attributes.shulker_level.full": "полон", + "create.item_attributes.shulker_level.empty": "пуст", "create.item_attributes.shulker_level.partial": "частично заполнен", - "create.item_attributes.in_tag": "помечен %1$s", - "create.item_attributes.in_tag.inverted": "не помечен %1$s", - "create.item_attributes.in_item_group": "принадлежит %1$s", - "create.item_attributes.in_item_group.inverted": "не принадлежит '%1$s'", + "create.item_attributes.in_tag": "с тегом %1$s", + "create.item_attributes.in_tag.inverted": "без тега %1$s", + "create.item_attributes.in_item_group": "из группы «%1$s»", + "create.item_attributes.in_item_group.inverted": "не из группы «%1$s»", "create.item_attributes.added_by": "был добавлен %1$s", - "create.item_attributes.added_by.inverted": "не был добавлен %1$s", + "create.item_attributes.added_by.inverted": "был добавлен не %1$s", "create.item_attributes.has_enchant": "зачарован на %1$s", - "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", - "create.item_attributes.color": "окрашено в %1$s", - "create.item_attributes.color.inverted": "не окрашено в %1$s", + "create.item_attributes.has_enchant.inverted": "зачарован не на %1$s", + "create.item_attributes.color": "окрашен в %1$s", + "create.item_attributes.color.inverted": "окрашен не в %1$s", "create.item_attributes.has_fluid": "содержит %1$s", "create.item_attributes.has_fluid.inverted": "не содержит %1$s", "create.item_attributes.has_name": "назван как %1$s", - "create.item_attributes.has_name.inverted": "не назван как %1$s", - "create.item_attributes.book_author": "подписана %1$s", - "create.item_attributes.book_author.inverted": "не подписана %1$s", + "create.item_attributes.has_name.inverted": "назван не как %1$s", + "create.item_attributes.book_author": "подписан %1$s", + "create.item_attributes.book_author.inverted": "подписан не %1$s", "create.item_attributes.book_copy_original": "оригинал", "create.item_attributes.book_copy_original.inverted": "не оригинал", "create.item_attributes.book_copy_first": "копия", "create.item_attributes.book_copy_first.inverted": "не копия", "create.item_attributes.book_copy_second": "копия копии", "create.item_attributes.book_copy_second.inverted": "не копия копии", - "create.item_attributes.book_copy_tattered": "полный беспорядок", - "create.item_attributes.book_copy_tattered.inverted": "не полный беспорядок", + "create.item_attributes.book_copy_tattered": "ветхий", + "create.item_attributes.book_copy_tattered.inverted": "не ветхий", "create.item_attributes.astralsorcery_amulet": "исправляет %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "не исправляет %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "исправляет не %1$s", "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "настроено не на %1$s", "create.item_attributes.astralsorcery_crystal": "имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристики кристалла %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристик кристалла %1$s", "create.item_attributes.astralsorcery_perk_gem": "имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристики перка %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристик перка %1$s", "create.gui.attribute_filter.no_selected_attributes": "Атрибуты не выбраны", "create.gui.attribute_filter.selected_attributes": "Выбранные атрибуты:", @@ -1312,8 +1312,8 @@ "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", "create.gui.attribute_filter.add_reference_item": "Положите предмет", - "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", - "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", + "create.tooltip.holdForDescription": "Удерживайте [%1$s] для сводки", + "create.tooltip.holdForControls": "Удерживайте [%1$s] для управления", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Требование к скорости: %1$s", @@ -1336,8 +1336,8 @@ "create.mechanical_arm.extract_from": "Берёт предметы из %1$s", "create.mechanical_arm.deposit_to": "Складывает предметы в %1$s", - "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", - "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", + "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов)", + "create.mechanical_arm.points_outside_range": "Выбранные цели (%1$s) удалены из-за ограничений диапазона", "create.weighted_ejector.target_set": "Цель выбрана", "create.weighted_ejector.target_not_valid": "Бросает до ближайшего блока (Неподходящая цель)", @@ -1345,7 +1345,7 @@ "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", "create.weighted_ejector.stack_size": "Размер бросаемого стака", - "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", + "create.logistics.when_multiple_outputs_available": "Режим распределения", "create.mechanical_arm.selection_mode.round_robin": "По кругу", "create.mechanical_arm.selection_mode.forced_round_robin": "Строго по кругу", @@ -1355,11 +1355,11 @@ "create.tunnel.selection_mode.forced_split": "Строгое разделение", "create.tunnel.selection_mode.round_robin": "По кругу", "create.tunnel.selection_mode.forced_round_robin": "Строго по кругу", - "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайшее", + "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайший", "create.tunnel.selection_mode.randomize": "Случайно", "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", - "create.tooltip.chute.header": "Информация о жёлобе", + "create.tooltip.chute.header": "Информация о жёлобе:", "create.tooltip.chute.items_move_down": "Предметы двигаются вниз", "create.tooltip.chute.items_move_up": "Предметы двигаются вверх", "create.tooltip.chute.no_fans_attached": "Нет подключенных вентиляторов", @@ -1368,11 +1368,11 @@ "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - "create.tooltip.deployer.header": "Информация об автономном активаторе", - "create.tooltip.deployer.using": "Автономный активатор использует", - "create.tooltip.deployer.punching": "Автономный активатор ударяет", + "create.tooltip.deployer.header": "Информация об автономном активаторе:", + "create.tooltip.deployer.using": "Режим: Атака/Разрушение", + "create.tooltip.deployer.punching": "Режим: Использование/Стройка", "create.tooltip.deployer.contains": "Держит: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "В данный момент распределяет:", + "create.tooltip.brass_tunnel.contains": "В данный момент распределяют:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "ПКМ, чтобы получить", @@ -1392,52 +1392,52 @@ "create.potato_cannon.ammo.attack_damage": "%1$s урона от попадания", "create.potato_cannon.ammo.reload_ticks": "%1$s тиков перезарядки", - "create.potato_cannon.ammo.knockback": "%1$s отбрасывания", + "create.potato_cannon.ammo.knockback": "%1$s силы отбрасывания", - "create.hint.hose_pulley.title": "Безграничное снабжение", + "create.hint.hose_pulley.title": "Бесконечное снабжение", "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", "create.hint.mechanical_arm_no_targets.title": "Нет целей", - "create.hint.mechanical_arm_no_targets": "Кажется, эта _Механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _Механическую руку_.", + "create.hint.mechanical_arm_no_targets": "Кажется, эта _механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _механическую руку_.", "create.hint.empty_bearing.title": "Обновить подшипник", - "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", + "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы построили перед ним.", "create.hint.full_deployer.title": "Переполнение автономного активатора", - "create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", + "create.hint.full_deployer": "Похоже, что этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", "create.backtank.low": "Низкое давление в баллоне!", "create.backtank.depleted": "Давление в баллоне исчерпано!", "create.hint.derailed_train.title": "Железнодорожная авария", - "create.hint.derailed_train": "Похоже, что этот _поезд_ сошёл с путей. Щелкните _ПКМ_ _Гаечным ключом_, чтобы установить его на ближайшие пути.", + "create.hint.derailed_train": "Похоже, что этот _поезд_ сошёл с путей. Щёлкните _ПКМ_ _гаечным ключом_, чтобы заново установить его на ближайшие пути.", "create.boiler.status": "Статус котла: %1$s", "create.boiler.status_short": "Котёл: %1$s", - "create.boiler.passive": "Начальный", - "create.boiler.idle": "Выключен", - "create.boiler.lvl": "Уровень: %1$s", - "create.boiler.max_lvl": "Предельный", - "create.boiler.size": "Размер", - "create.boiler.size_dots": ".... ", + "create.boiler.passive": "Нач.", + "create.boiler.idle": "Выкл", + "create.boiler.lvl": "%1$s ур.", + "create.boiler.max_lvl": "Макс.", + "create.boiler.size": "Объём", + "create.boiler.size_dots": "....... ", "create.boiler.water": "Вода", - "create.boiler.water_dots": "...... ", + "create.boiler.water_dots": "......... ", "create.boiler.heat": "Нагрев", - "create.boiler.heat_dots": ".... ", + "create.boiler.heat_dots": "..... ", "create.boiler.via_one_engine": "с помощью 1 двигателя", "create.boiler.via_engines": "с помощью %1$s двигателей", "create.gui.schedule.lmb_edit": "ЛКМ для редактирования", "create.gui.schedule.rmb_remove": "ПКМ для удаления", "create.gui.schedule.duplicate": "Дублировать", - "create.gui.schedule.remove_entry": "Удалить действие", - "create.gui.schedule.add_entry": "Добавить действие", + "create.gui.schedule.remove_entry": "Удалить инструкцию", + "create.gui.schedule.add_entry": "Добавить инструкцию", "create.gui.schedule.move_up": "Переместить выше", "create.gui.schedule.move_down": "Переместить ниже", "create.gui.schedule.add_condition": "Добавить условие", "create.gui.schedule.alternative_condition": "Альтернативное условие", - "create.schedule.instruction_type": "Следующее действие:", + "create.schedule.instruction_type": "Следующая инструкция:", "create.schedule.instruction.editor": "Редактор инструкций", - "create.schedule.instruction.destination": "Ехать до станции", - "create.schedule.instruction.destination.summary": "Следующая остановка:", + "create.schedule.instruction.destination": "Следовать до станции", + "create.schedule.instruction.destination.summary": "Следовать до станции:", "create.schedule.instruction.filter_edit_box": "Название станции", "create.schedule.instruction.filter_edit_box_1": "Используйте * в качестве текстового подстановочного знака", "create.schedule.instruction.filter_edit_box_2": "Пример: 'Моя Станция, платформа *'", @@ -1456,18 +1456,18 @@ "create.schedule.condition.delay": "Пауза расписания", "create.schedule.condition.delay_short": "Ожидание: %1$s", "create.schedule.condition.delay.status": "До отправления %1$s", - "create.schedule.condition.idle": "Груз не изменился", - "create.schedule.condition.idle_short": "Груз без изменений: %1$s %1$s", - "create.schedule.condition.idle.status": "Груз без изменений %1$s", + "create.schedule.condition.idle": "Неизменение груза", + "create.schedule.condition.idle_short": "Простой груза: %1$s %1$s", + "create.schedule.condition.idle.status": "Простой груза: %1$s", "create.schedule.condition.for_x_time": "в течение %1$s", "create.schedule.condition.unloaded": "Чанк выгружен", "create.schedule.condition.unloaded.status": "Ожидание выгрузки чанка", "create.schedule.condition.powered": "Станция запитана", - "create.schedule.condition.powered.status": "Ожидание сигнала на станцию", + "create.schedule.condition.powered.status": "Станция ожидает сигнал", "create.schedule.condition.time_of_day": "Время суток", "create.schedule.condition.time_of_day.scheduled": "Отправление в %1$s", "create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s", - "create.schedule.condition.time_of_day.rotation": "Повторять", + "create.schedule.condition.time_of_day.rotation": "Интервал движения", "create.schedule.condition.time_of_day.rotation.every_24": "Ежедневно", "create.schedule.condition.time_of_day.rotation.every_12": "Каждые 12ч", "create.schedule.condition.time_of_day.rotation.every_6": "Каждые 6ч", @@ -1485,17 +1485,19 @@ "create.schedule.condition.threshold.equal": "точно", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s (%3$s)", "create.schedule.condition.threshold.matching_content": "Определённое содержимое", + "create.schedule.condition.threshold.anything": "предметов", "create.schedule.condition.threshold.item_measure": "Количество предметов", - "create.schedule.condition.threshold.items": "Штук", - "create.schedule.condition.threshold.stacks": "Стаков", - "create.schedule.condition.threshold.buckets": "Вёдер", + "create.schedule.condition.threshold.items": "штук", + "create.schedule.condition.threshold.stacks": "стаков", + "create.schedule.condition.threshold.buckets": "вёдер", "create.schedule.condition.threshold.status": "Груз: %1$s/%2$s %3$s", - "create.schedule.condition.threshold.place_item": "Основной предмет", + "create.schedule.condition.threshold.place_item": "Эталонный предмет", "create.schedule.condition.threshold.place_item_2": "Можно использовать фильтры", + "create.schedule.condition.threshold.place_item_3": "Оставьте пустым, чтобы выбрать все предметы", "create.schedule.condition.fluid_threshold": "Состояние жидкого груза", "create.schedule.condition.item_threshold": "Состояние груза", "create.schedule.condition.redstone_link": "Беспроводной сигнал", - "create.schedule.condition.redstone_link.status": "Ожидание сигнала на поезд", + "create.schedule.condition.redstone_link.status": "Поезд ожидает сигнал", "create.schedule.condition.redstone_link_on": "Сигнал включён", "create.schedule.condition.redstone_link_off": "Сигнал выключен", "create.schedule.condition.redstone_link.powered": "Включёна", @@ -1505,32 +1507,32 @@ "create.schedule.condition.redstone_link.frequency_unpowered": "Частота выключена:", "create.schedule.condition.player_count": "Посадка пассажиров", "create.schedule.condition.player_count.summary": "%1$s игрок", - "create.schedule.condition.player_count.summary_plural": "%1$s игроков", + "create.schedule.condition.player_count.summary_plural": "%1$s игрока(ов)", "create.schedule.condition.player_count.seated": "%1$s сидит(ят)", "create.schedule.condition.player_count.players": "Игроков", - "create.schedule.condition.player_count.condition": "Условно", - "create.schedule.condition.player_count.exactly": "Точно", - "create.schedule.condition.player_count.or_above": "Больше", + "create.schedule.condition.player_count.condition": "Условие", + "create.schedule.condition.player_count.exactly": "точно", + "create.schedule.condition.player_count.or_above": "больше", "create.schedule.condition.player_count.status": "Пассажиров: %1$s/%2$s", "create.schedule.loop": "Повторять расписание", "create.schedule.loop1": "Начинать расписание сначала,", "create.schedule.loop2": "после завершения", "create.schedule.reset": "Начать расписание сначала", "create.schedule.skip": "Пропустить текущий шаг расписания", - "create.schedule.applied_to_train": "Теперь поезд следует этому расписанию", + "create.schedule.applied_to_train": "Теперь поезд следует по этому расписанию", "create.schedule.non_controlling_seat": "Машинист должен сидеть перед блоком управления", - "create.schedule.remove_with_empty_hand": "Заберите текущее расписание пустой рукой", - "create.schedule.auto_removed_from_train": "Автоматическое расписание отменено", - "create.schedule.removed_from_train": "Расписание получено из поезда", + "create.schedule.remove_with_empty_hand": "Отзовите текущее расписание пустой рукой", + "create.schedule.auto_removed_from_train": "Автоматическое расписание отозвано", + "create.schedule.removed_from_train": "Расписание отозвано от машиниста", "create.schedule.no_stops": "В этом расписании нет остановок", "create.schedule.continued": "Расписание возобновлено", "create.track.selection_cleared": "Выбор отменён", "create.track.valid_connection": "Можно соединить ✔", - "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите вторую точку", + "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите другие", "create.track.too_far": "Слишком далеко...", - "create.track.original_missing": "Исходные пути разрушены, нажмите Shift+ПКМ, чтобы выйти из режима размещения", - "create.track.perpendicular": "Невозможно соединить перпендикулярно", + "create.track.original_missing": "Выбранные пути разрушены, нажмите ПКМ крадучись, чтобы выйти из режима размещения", + "create.track.perpendicular": "Невозможно соединить пути перпендикулярно", "create.track.ascending_s_curve": "Невозможно создать наклонные S-образные изгибы", "create.track.too_sharp": "Слишком резкий угол поворота", "create.track.too_steep": "Слишком крутой склон", @@ -1557,34 +1559,34 @@ "create.station.create_train": "Создать новый поезд", "create.station.assemble_train": "Собрать поезд", "create.station.disassemble_train": "Разобрать поезд", - "create.station.remove_schedule": "Получить расписание", - "create.station.remove_auto_schedule": "Отменить автоматическое расписание", + "create.station.remove_schedule": "Отозвать расписание", + "create.station.remove_auto_schedule": "Отозвать автоматическое расписание", "create.station.no_assembly_diagonal": "Нельзя строить поезда", "create.station.no_assembly_diagonal_1": "на пересечениях путей", "create.station.no_assembly_curve": "Нельзя строить поезда", - "create.station.no_assembly_curve_1": "на изогнутых путях", + "create.station.no_assembly_curve_1": "на изогнутых путях.", "create.station.train_not_aligned": "Невозможно разобрать, не все", - "create.station.train_not_aligned_1": "вагонные тележки были выровнены", + "create.station.train_not_aligned_1": "вагонные тележки были выровнены.", "create.station.carriage_number": "Вагон № %1$s:", "create.station.retry": "Исправьте это и повторите попытку.", "create.station.no_bogeys": "Нет вагонных тележек", "create.station.one_bogey": "1 вагонная тележка", "create.station.more_bogeys": "%1$s вагонные(ых) тележки(ек)", - "create.station.how_to": "Нажмите Ж/д корпусом по выд. путям, чтобы сделать тележку.", + "create.station.how_to": "Нажмите Ж/д корпусом по выделенным путям, чтобы сделать тележку.", "create.station.how_to_1": "Тележку можно убрать, сломав блок над ней.", "create.station.how_to_2": "Один вагон может иметь до двух тележек.", "create.train_assembly.too_many_bogeys": "Слишком много вагонных тележек прицеплено: %1$s шт.", "create.train_assembly.frontmost_bogey_at_station": "Передняя вагонная тележка должна быть на указателе станции.", "create.train_assembly.no_bogeys": "Вагонные тележки не найдены.", - "create.train_assembly.not_connected_in_order": "Вагонные тележки подключены не по порядку.", + "create.train_assembly.not_connected_in_order": "Вагонные тележки соединены не по порядку.", "create.train_assembly.bogeys_too_close": "Вагонные тележки %1$s и %2$s слишком близко друг к другу.", "create.train_assembly.single_bogey_carriage": "Эта вагонная тележка не может поддерживать вагон самостоятельно.", "create.train_assembly.nothing_attached": "Структура не склеена с вагонной тележкой № %1$s.", - "create.train_assembly.no_controls": "В поезде должен быть установлен как минимум один контроллер, обращённый вперед.", + "create.train_assembly.no_controls": "В поезде должен быть установлен как минимум один контроллер, обращённый вперёд.", "create.train_assembly.sideways_controls": "Контроллер поезда направлен не вперёд.", - "create.train_assembly.bogey_created": "Можно разместить ещё одну Тележку, нажав на выделенные пути ещё раз.", - "create.train_assembly.requires_casing": "Используйте Ж/д корпус для создания вагонных тележек на путях.", + "create.train_assembly.bogey_created": "Разместите ещё одну тележку, нажав на выделенные пути", + "create.train_assembly.requires_casing": "Используйте Ж/д корпус для создания вагонных тележек на путях", "create.track_target.set": "Пути выбраны", "create.track_target.success": "Успешно привязана к выбранным путям", @@ -1597,7 +1599,7 @@ "create.train.unnamed": "Безымянный поезд", "create.train.cannot_relocate_moving": "Невозможно переместить движущийся поезд", - "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. Shift+ПКМ для отмены", + "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. ПКМ крадучись для отмены", "create.train.relocate.abort": "Перенос отменён", "create.train.relocate.success": "Успешно перенесён", "create.train.relocate.valid": "Можно переместить сюда, нажмите для подтверждения", @@ -1663,7 +1665,7 @@ "create.display_source.value_list.million": "М", "create.display_source.player_deaths": "Смерти игрока", "create.display_source.scoreboard": "Скорборд", - "create.display_source.scoreboard.objective": "Идентификатор цели", + "create.display_source.scoreboard.objective": "Название скорборда", "create.display_source.scoreboard.objective_not_found": "'%1$s' не найден", "create.display_source.scoreboard.objective.deaths": "Смерти игрока", "create.display_source.time_of_day": "Время суток", @@ -1678,7 +1680,7 @@ "create.display_source.item_throughput.interval.minute": "в минуту", "create.display_source.item_throughput.interval.hour": "в час", "create.display_source.train_status": "Статус расписания", - "create.display_source.station_summary": "Сводка ж/д станции", + "create.display_source.station_summary": "Сводка станции", "create.display_source.station_summary.filter": "Фильтр названия станции", "create.display_source.station_summary.train_name_column": "Размер столбца Поезд", "create.display_source.station_summary.platform_column": "Размер столбца Платформа", @@ -1699,15 +1701,15 @@ "create.display_source.kinetic_stress.current": "Нагрузка в ЕН", "create.display_source.kinetic_stress.max": "Общая ёмкость", "create.display_source.kinetic_stress.remaining": "Осталось ЕН", - "create.display_source.redstone_power": "Сигнал редстоуна", + "create.display_source.redstone_power": "Редстоун-сигнал", "create.display_source.redstone_power.display": "Формат отображения", "create.display_source.redstone_power.number": "Число", "create.display_source.redstone_power.progress_bar": "Полоса прогресса", "create.display_source.boiler.not_enough_space": "нет места", "create.display_source.boiler.for_boiler_status": "для текста", - "create.display_target.line": "Строка %1$s", - "create.display_target.page": "Страница %1$s", + "create.display_target.line": "%1$s строка", + "create.display_target.page": "%1$s страница", "create.display_target.single_line": "Одна строка", "create.flap_display.cycles.alphabet": " ;А;Б;В;Г;Д;Е;Ё;Ж;З;И;Й;К;Л;М;Н;О;П;Р;С;Т;У;Ф;Х;Ц;Ч;Ш;Щ;Ъ;Ы;Ь;Э;Ю;Я", @@ -1721,10 +1723,10 @@ "create.super_glue.too_far": "Выбранная область слишком большая", "create.super_glue.cannot_reach": "Выбранные блоки должны быть соединены", "create.super_glue.click_to_confirm": "Нажмите ещё раз, чтобы подтвердить", - "create.super_glue.click_to_discard": "Нажмите Shift+ПКМ, чтобы отменить выбор", + "create.super_glue.click_to_discard": "Нажмите ПКМ крадучись, чтобы отменить выбор", "create.super_glue.first_pos": "Выбрана первая позиция", "create.super_glue.abort": "Выбор отменён", - "create.super_glue.not_enough": "Мало клея в инвентаре", + "create.super_glue.not_enough": "Мало клея...", "create.super_glue.success": "Нанесение клея...", "create.gui.config.overlay1": "Привет :)", @@ -1744,7 +1746,7 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: используйте /killtps start <Время тика>, чтобы искусственно замедлить тик сервера", "create.command.killTPSCommand.argument.tickTime": "Время тика", - "create.contraption.minecart_contraption_too_big": "Эта вагонеточная штуковина кажется слишком большой, чтобы ее можно было поднять", + "create.contraption.minecart_contraption_too_big": "Эта вагонеточная штуковина кажется слишком большой, чтобы её можно было поднять", "create.contraption.minecart_contraption_illegal_pickup": "Мистическая сила связывает эту вагонеточную штуковину с миром", @@ -1763,13 +1765,13 @@ "create.subtitle.whistle": "Свист", "create.subtitle.cogs": "Шестерни грохочут", "create.subtitle.slime_added": "Намазывание слизи", - "create.subtitle.whistle_train_low": "Низкий свист", - "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", + "create.subtitle.whistle_train_low": "Низкое гудение поезда", + "create.subtitle.schematicannon_launch_block": "Схематичная пушка строит", "create.subtitle.controller_take": "Кафедра опустошается", "create.subtitle.crafter_click": "Крафтер кликает", - "create.subtitle.depot_plop": "Предмет падает", + "create.subtitle.depot_plop": "Предмет упал на депо", "create.subtitle.confirm": "Утвердительный «Динь»", - "create.subtitle.mixing": "Шум смешивания", + "create.subtitle.mixing": "Смешивание", "create.subtitle.mechanical_press_activation_belt": "Механический пресс делает «Бонк»", "create.subtitle.fwoomp": "Картофельная пушка делает «Свомп»", "create.subtitle.sanding_long": "Короткий звук полировки", @@ -1778,16 +1780,16 @@ "create.subtitle.blaze_munch": "Всполох радостно жуёт", "create.subtitle.funnel_flap": "Занавески воронок хлопают", "create.subtitle.haunted_bell_use": "Призрачный колокол звонит", - "create.subtitle.scroll_value": "Щелчки колеса прокрутки", + "create.subtitle.scroll_value": "Щелчки прокрутки", "create.subtitle.controller_put": "Контроллер стучит", - "create.subtitle.cranking": "Вращается рукоятка", - "create.subtitle.sanding_short": "Долгий звук полировки", + "create.subtitle.cranking": "Рукоятка вращается", + "create.subtitle.sanding_short": "Звук полировки", "create.subtitle.wrench_rotate": "Использован гаечный ключ", "create.subtitle.potato_hit": "Еда врезается", - "create.subtitle.saw_activate_wood": "Активируется механическая пила", + "create.subtitle.saw_activate_wood": "Механическая пила работает", "create.subtitle.whistle_high": "Высокий свист", - "create.subtitle.whistle_train_manual_low": "Гудок поезда", - "create.subtitle.whistle_train": "Свист", + "create.subtitle.whistle_train_manual_low": "Низкое гудение поезда", + "create.subtitle.whistle_train": "Гудение поезда", "create.subtitle.haunted_bell_convert": "Призрачный колокол пробуждается", "create.subtitle.train": "Грохот колёс", "create.subtitle.deny": "Отрицательный «Буп»", @@ -1810,10 +1812,10 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "block.create.wooden_bracket.tooltip": "ДЕРЕВЯННАЯ СКОБА", - "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.", + "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _Валы, Шестерни_ и _Трубы_, используя уютное деревянное укрепление.", "block.create.metal_bracket.tooltip": "МЕТАЛЛИЧЕСКАЯ СКОБА", - "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя прочное индустриальное укрепление.", + "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _Валы, Шестерни_ и _Трубы_, используя прочное индустриальное укрепление.", "block.create.seat.tooltip": "СИДЕНЬЕ", "block.create.seat.tooltip.summary": "Присядьте и насладитесь поездкой! Привязывает игроков к собранным _устройствам_. Отлично выглядит как простая мебель! Можно окрасить в разные цвета.", @@ -1825,42 +1827,42 @@ "item.create.wand_of_symmetry.tooltip": "ЖЕЗЛ СИММЕТРИИ", "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", - "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", + "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа.", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным.", "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по блоку", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", + "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _перемещает_ зеркало.", "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", + "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало.", "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадучись", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", + "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_.", "item.create.handheld_worldshaper.tooltip": "РУЧНОЙ РЕДАКТОР МИРА", "item.create.handheld_worldshaper.tooltip.summary": "Удобный инструмент для создания _ландшафтов_ и _рельефа_ _местности_.", "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, помещённые инструментом, в целевой блок.", + "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, выбранным инструментом, в целевое место.", "item.create.handheld_worldshaper.tooltip.control2": "ПКМ на блок", "item.create.handheld_worldshaper.tooltip.action2": "Применяет выбранную _кисть_ и _инструмент_ в выбранном месте.", "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", + "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_.", "item.create.tree_fertilizer.tooltip": "УДОБРЕНИЕ ДЛЯ ДЕРЕВЬЕВ", "item.create.tree_fertilizer.tooltip.summary": "Мощная комбинация минералов подходит для ускорения роста деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья, _независимо_ от _условий_ _их_ _расположения_", + "item.create.tree_fertilizer.tooltip.condition1": "ПКМ с предметом на саженце", + "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья, _независимо_ от _условий_ _их_ _расположения_.", "item.create.extendo_grip.tooltip": "УДЛИНЕННАЯ РУКА", - "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", + "item.create.extendo_grip.tooltip.summary": "Значительно _увеличивает_ _досягаемость_ владельца.", "item.create.extendo_grip.tooltip.condition1": "Находясь в левой руке", - "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", + "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _правой_ _руке_.", "item.create.extendo_grip.tooltip.condition2": "Когда надет Медный баллон", "item.create.extendo_grip.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", "item.create.potato_cannon.tooltip": "КАРТОФЕЛЬНАЯ ПУШКА", - "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_", - "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом", + "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_.", + "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом в инвентаре", "item.create.potato_cannon.tooltip.behaviour1": "_Выстреливает_ подходящим предметом из вашего _инвентаря_.", "item.create.potato_cannon.tooltip.condition2": "Когда надет Медный баллон", - "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", + "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из Баллона.", "item.create.filter.tooltip": "ФИЛЬТР", "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", @@ -1877,10 +1879,10 @@ "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.empty_schematic.tooltip": "ПУСТАЯ СХЕМАТИКА", - "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_", + "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_.", "item.create.schematic.tooltip": "СХЕМАТИКА", - "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", + "item.create.schematic.tooltip.summary": "Содержит структуру, которая может позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _Схематичную пушку_ для её построения.", "item.create.schematic.tooltip.condition1": "ПКМ с предметом", "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", "item.create.schematic.tooltip.control1": "ПКМ крадучись", @@ -1893,16 +1895,16 @@ "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", "item.create.schematic_and_quill.tooltip.control1": "ПКМ с предметом", - "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", - "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", + "item.create.schematic_and_quill.tooltip.action1": "Выбирает угловые точки / подтверждает сохранение.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl с предметом", + "item.create.schematic_and_quill.tooltip.action2": "Позволяет выбрать угловые точки в воздухе. Прокрутка для настройки расстояния.", "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадучись", "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _удаляет_ выделение.", "block.create.schematicannon.tooltip": "СХЕМАТИЧНАЯ ПУШКА", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", "block.create.schematicannon.tooltip.condition1": "ПКМ по блоку", - "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", + "block.create.schematicannon.tooltip.behaviour1": "Открывает _интерфейс_.", "block.create.schematic_table.tooltip": "СХЕМАТИЧНЫЙ СТОЛ", "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схематики в _пустые_ _схематики_.", @@ -1911,12 +1913,12 @@ "item.create.goggles.tooltip": "ИНЖЕНЕРНЫЕ ОЧКИ", "item.create.goggles.tooltip.summary": "Очки для улучшения зрения с помощью полезной кинетической информации.", - "item.create.goggles.tooltip.condition1": "При ношении", - "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также _создаваемой нагрузке_ и _мощности_ отдельных компонентов.", + "item.create.goggles.tooltip.condition1": "Когда надеты", + "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также _создаваемой нагрузки_ и _мощности_ отдельных компонентов.", "item.create.goggles.tooltip.condition2": "При взгляде на датчик", - "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или нагрузке сети, к которой подключён датчик.", + "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или нагрузки сети, к которой подключён датчик.", "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", - "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", + "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _ёмкости_ блока и о хранящейся в нём хранится _жидкости_.", "item.create.wrench.tooltip": "ГАЕЧНЫЙ КЛЮЧ", "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", @@ -1926,41 +1928,41 @@ "item.create.wrench.tooltip.action2": "Разбирает кинетические компоненты и помещает их обратно в ваш инвентарь.", "block.create.nozzle.tooltip": "ФОРСУНКА", - "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", + "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _Вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", "block.create.cuckoo_clock.tooltip": "ЧАСЫ С КУКУШКОЙ", - "block.create.cuckoo_clock.tooltip.summary": "_Прекрасное_ _мастерство_ для _украшения_ пространства и _отслеживания_ _времени_.", + "block.create.cuckoo_clock.tooltip.summary": "Прекрасная _вещица_ для _украшения_ пространства и _отслеживания_ _времени_.", "block.create.cuckoo_clock.tooltip.condition1": "При вращении", - "block.create.cuckoo_clock.tooltip.behaviour1": "Показывает текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", + "block.create.cuckoo_clock.tooltip.behaviour1": "Показывают текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", "block.create.turntable.tooltip": "ПОВОРОТНЫЙ СТОЛ", "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", "block.create.toolbox.tooltip": "ЯЩИК ДЛЯ ИНСТРУМЕНТОВ", - "block.create.toolbox.tooltip.summary": "Самый дорогой компаньон каждого изобретателя. Удобно _вмещает_ большое количество _8 различных_ типов предметов.", - "block.create.toolbox.tooltip.condition1": "При поднятии", - "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ содержимое _инвентаря_.", - "block.create.toolbox.tooltip.condition2": "При размещении в диапазоне досягаемости", - "block.create.toolbox.tooltip.behaviour2": "_Ближайшие_ _игроки_ могут зажать _клавишу_ для _удалённого_ получения содержимого _ящика_ _для_ _инструментов_.", + "block.create.toolbox.tooltip.summary": "Самый дорогой компаньон каждого изобретателя. Удобно _вмещает_ большое количество _восьми различных_ типов предметов.", + "block.create.toolbox.tooltip.condition1": "ЛКМ по блоку", + "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ _содержимое_ и складывается в инвентарь игрока.", + "block.create.toolbox.tooltip.condition2": "ALT в диапазоне досягаемости", + "block.create.toolbox.tooltip.behaviour2": "Позволяет _получить быстрый доступ_ к содержимому _Ящика_ _для_ _инструментов_.", "block.create.toolbox.tooltip.condition3": "ПКМ по блоку", "block.create.toolbox.tooltip.behaviour3": "Открывает _интерфейс контейнера_.", "block.create.stockpile_switch.tooltip": "НАБЛЮДАТЕЛЬ ЗАПОЛНЕННОСТИ", - "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполненности_ _прикреплённого_ _ящика_.", + "block.create.stockpile_switch.tooltip.summary": "Подаёт редстоун-сигнал в зависимости от _заполненности_ _прикреплённого_ _ящика_.", "block.create.stockpile_switch.tooltip.condition1": "Когда достигнут нижний предел", - "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", + "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _редстоун-сигнал_.", "block.create.content_observer.tooltip": "НАБЛЮДАТЕЛЬ ЗА СОДЕРЖИМЫМ", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _импульс редстоуна_.", + "block.create.content_observer.tooltip.summary": "_Обнаруживает предметы внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий предмет, этот компонент излучает редстоун-сигнал. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _редстоун-импульс_.", "block.create.content_observer.tooltip.condition1": "Когда наблюдает за контейнером", - "block.create.content_observer.tooltip.behaviour1": "Выдаёт _сигнал редстоуна_, пока наблюдаемое содержимое совпадает с _фильтром_.", + "block.create.content_observer.tooltip.behaviour1": "Выдаёт _редстоун-сигнал_, пока наблюдаемое содержимое совпадает с _фильтром_.", "block.create.content_observer.tooltip.condition2": "Когда наблюдает за воронкой", - "block.create.content_observer.tooltip.behaviour2": "Выдаёт _сигнал редстоуна_, пока содержимое совпадает с _перемещаемым_ предметом.", + "block.create.content_observer.tooltip.behaviour2": "Выдаёт _редстоун-сигнал_, пока содержимое совпадает с _перемещаемым_ предметом.", "block.create.creative_crate.tooltip": "ТВОРЧЕСКИЙ ЯЩИК", - "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалам.", + "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со Схематичной пушкой, чтобы удалить любые требования к материалам.", "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", + "block.create.creative_crate.tooltip.behaviour1": "Всё, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", "item.create.creative_blaze_cake.tooltip": "ТВОРЧЕСКИЙ ТОРТ", "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок всполоха_. После поедания этого торта у Горелки всполоха _никогда не закончится топливо_.", @@ -1969,13 +1971,13 @@ "block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩИЕ РЕЛЬСЫ", "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие провести _точную настройку_ _скорости_ вагонеток.", - "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", - "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя сигнал красного камня на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", + "block.create.controller_rail.tooltip.condition1": "Когда подан редстоун-сигнал", + "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя редстоун-сигнал на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", "item.create.sand_paper.tooltip": "НАЖДАЧНАЯ БУМАГА", - "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", + "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью Автономного активатора.", "item.create.sand_paper.tooltip.condition1": "ПКМ с предметом", - "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", + "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_.", "item.create.builders_tea.tooltip": "ЧАЙ СТРОИТЕЛЯ", "item.create.builders_tea.tooltip.summary": "Идеальный напиток для начала дня. _Мотивирует и насыщает_.", @@ -1996,28 +1998,28 @@ "item.create.linked_controller.tooltip.behaviour1": "Включает контроллер. _Управление_ _движением_ перехвачено, пока он активен.", "item.create.linked_controller.tooltip.condition2": "ПКМ крадучись", "item.create.linked_controller.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - "item.create.linked_controller.tooltip.condition3": "ПКМ по приемнику сигнала редстоуна", + "item.create.linked_controller.tooltip.condition3": "ПКМ по Редстоуновому беспроводному приёмнику сигнала", "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать её к _частоте передатчика_.", "item.create.linked_controller.tooltip.condition4": "ПКМ по кафедре", - "item.create.linked_controller.tooltip.behaviour4": "Помещает контроллер на кафедру для удобства использования. (ПКМ крадучись, чтобы забрать его)", + "item.create.linked_controller.tooltip.behaviour4": "Помещает Контроллер на кафедру для удобства использования (ПКМ крадучись, чтобы забрать его).", "item.create.diving_helmet.tooltip": "ШЛЕМ ДЛЯ ДАЙВИНГА", - "item.create.diving_helmet.tooltip.summary": "Вместе с _медным_ _баллоном_, позволяет владельцу _дышать _ _под водой_ в течение длительного времени.", - "item.create.diving_helmet.tooltip.condition1": "При ношении", - "item.create.diving_helmet.tooltip.behaviour1": "Даёт эффект _Водного Дыхания_, медленно тратя _воздух_ из баллона.", + "item.create.diving_helmet.tooltip.summary": "Вместе с _Медным_ _баллоном_, позволяет владельцу _дышать_ _под водой_ в течение длительного времени.", + "item.create.diving_helmet.tooltip.condition1": "Когда надето", + "item.create.diving_helmet.tooltip.behaviour1": "Даёт эффект _водного Дыхания_, медленно тратя _воздух_ из Баллона.", "item.create.copper_backtank.tooltip": "МЕДНЫЙ БАЛЛОН", "item.create.copper_backtank.tooltip.summary": "_Носимый_ _резервуар_ для транспортировки воздуха под давлением.", - "item.create.copper_backtank.tooltip.condition1": "При ношении", + "item.create.copper_backtank.tooltip.condition1": "Когда надето", "item.create.copper_backtank.tooltip.behaviour1": "Обеспечивает подачу _воздуха_ под _давлением_ к оборудованию, которое в этом нуждается.", - "item.create.copper_backtank.tooltip.condition2": "При размещении и питании от кинетической энергии", + "item.create.copper_backtank.tooltip.condition2": "При вращении", "item.create.copper_backtank.tooltip.behaviour2": "Собирает и сжимает воздух со скоростью, зависящей от скорости вращения.", "block.create.placard.tooltip": "УМНАЯ РАМКА", "block.create.placard.tooltip.summary": "_Обрамите_ свои предметы латунью с помощью этой красивой рамки. Безопасна для штуковин!", "block.create.placard.tooltip.condition1": "ПКМ по рамке с предметом в руках", - "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _сигнал редстоуна_, если соответствующий предмет уже присутствует.", - "block.create.placard.tooltip.condition2": "При ударе", + "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _редстоун-сигнал_, если соответствующий предмет уже присутствует.", + "block.create.placard.tooltip.condition2": "ЛКМ по рамке с предметом", "block.create.placard.tooltip.behaviour2": "_Убирает_ текущий _предмет_ из рамки.", "block.create.flywheel.tooltip": "МАХОВИК", @@ -2027,18 +2029,18 @@ "item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА", "item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.", - "item.create.diving_boots.tooltip.condition1": "При ношении", - "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейерам.", + "item.create.diving_boots.tooltip.condition1": "Когда надеты", + "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по работающим конвейерам.", "item.create.crafting_blueprint.tooltip": "ЧЕРТЁЖ", - "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания предметов. Каждый слот показывает отдельный рецепт крафта.", + "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания. Каждый слот показывает отдельный рецепт крафта.", "item.create.crafting_blueprint.condition1": "ПКМ по пустому слоту", "item.create.crafting_blueprint.behaviour1": "Открывает меню _крафта_, позволяющее _настроить_ _рецепт_ и отображаемые предметы.", "item.create.crafting_blueprint.condition2": "ПКМ по настроенному слоту", - "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. _Shift_, чтобы создать до _стака_ предметов.", + "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. Зажмите _Shift_, чтобы создать до _стака_ предметов.", "item.create.minecart_coupling.tooltip": "СОЕДИНИТЕЛЬ ВАГОНЕТОК", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный мини-поезд.", + "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Вагонеточные штуковины_ вместе, чтобы создать великолепный мини-поезд.", "item.create.minecart_coupling.tooltip.condition1": "ПКМ по вагонеткам", "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определённой дистанции_ при движении.", @@ -2047,12 +2049,12 @@ "item.create.experience_nugget.tooltip.condition1": "ПКМ с предметом", "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_, находящиеся внутри.", - "block.create.peculiar_bell.tooltip": "СТРАННЫЙ КОЛОКОЛ", - "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать непредвиденные последствия...", + "block.create.peculiar_bell.tooltip": "ОСОБЕННЫЙ КОЛОКОЛ", + "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _огнём душ_ может вызвать непредвиденные последствия...", "block.create.haunted_bell.tooltip": "ПРИЗРАЧНЫЙ КОЛОКОЛ", "block.create.haunted_bell.tooltip.summary": "_Проклятый колокол_ населённый потерянными душами Нижнего мира.", - "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или при ПКМ по блоку", + "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или ПКМ по блоку", "block.create.haunted_bell.tooltip.behaviour1": "Подсвечивает ближайшие _места без света_ на которых могут появляться _враждебные существа_.", @@ -2066,35 +2068,35 @@ "create.ponder.close": "Закрыть", "create.ponder.identify": "Определить", "create.ponder.next": "Следующая сцена", - "create.ponder.next_up": "Размышлять дальше над...", + "create.ponder.next_up": "Размышлять дальше над:", "create.ponder.previous": "Предыдущая сцена", - "create.ponder.replay": "Воспроизвести снова", + "create.ponder.replay": "Повторить сцену", "create.ponder.think_back": "Назад", "create.ponder.slow_text": "Удобное чтение", "create.ponder.exit": "Выйти", "create.ponder.welcome": "Добро пожаловать в размышления!", "create.ponder.categories": "Категории, доступные в Create", - "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках.", + "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках", "create.ponder.index_title": "Содержание размышлений", "create.ponder.shared.rpm16": "16 об./мин.", "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Гаечным ключом", - "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать вещи автоматически", + "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать предметы автоматически", "create.ponder.shared.sneak_and": "Shift +", "create.ponder.shared.rpm8": "8 об./мин.", "create.ponder.shared.ctrl_and": "Ctrl +", "create.ponder.shared.rpm32": "32 об./мин.", "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", - "create.ponder.shared.movement_anchors": "С помощью суперклея или шасси, более крупные структуры могут быть сдвинуты.", + "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдвинуты", "create.ponder.tag.redstone": "Логические компоненты", - "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструированием схем из редстоуна", - "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", - "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", + "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструированием редстоуновых схем", + "create.ponder.tag.contraption_assembly": "Соединители блоков", + "create.ponder.tag.contraption_assembly.description": "Блоки и компоненты, используемые для соединения и склеивания передвигаемых структур", "create.ponder.tag.fluids": "Жидкостные манипуляторы", "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать жидкости", "create.ponder.tag.decoration": "Эстетика", "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", - "create.ponder.tag.windmill_sails": "Паруса для Подшипников ветряной мельницы", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в работе.", + "create.ponder.tag.windmill_sails": "Парусоподобные блоки", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы; каждый из этих блоков имеет одинаковую эффективность в работе", "create.ponder.tag.arm_targets": "Цели для Механической руки", "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической руки", "create.ponder.tag.kinetic_appliances": "Кинетические приборы", @@ -2102,105 +2104,105 @@ "create.ponder.tag.kinetic_sources": "Кинетические источники", "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие силу вращения", "create.ponder.tag.movement_anchor": "Опоры движения", - "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", + "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикреплённую структуру разными способами", "create.ponder.tag.kinetic_relays": "Кинетические блоки", "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать силу вращения куда-нибудь", "create.ponder.tag.contraption_actor": "Компоненты штуковин", "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", "create.ponder.tag.creative": "Творческий режим", - "create.ponder.tag.creative.description": "Компоненты обычно недоступные в Режиме Выживания", - "create.ponder.tag.display_sources": "Источники для Передатчика информации", - "create.ponder.tag.display_sources.description": "Компоненты или блоки, которые предлагают некоторые данные, которые можно прочитать с помощью Передатчика информации", - "create.ponder.tag.logistics": "Транспортировка предметов", + "create.ponder.tag.creative.description": "Компоненты, обычно недоступные в режиме выживания", + "create.ponder.tag.display_sources": "Источники информации", + "create.ponder.tag.display_sources.description": "Компоненты или блоки, которые предлагают данные, которые можно прочитать с помощью Передатчика информации", + "create.ponder.tag.logistics": "Логистика", "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", - "create.ponder.tag.display_targets": "Цели для Передатчика информации", + "create.ponder.tag.display_targets": "Визуализаторы информации", "create.ponder.tag.display_targets.description": "Компоненты или блоки, которые могут обрабатывать и отображать данные, полученные от Передатчика информации", "create.ponder.tag.train_related": "Железнодорожное оборудование", - "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении Железнодорожных штуковин", + "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении железнодорожных штуковин", - "create.ponder.analog_lever.header": "Управлением сигналом используя Аналоговый рычаг", - "create.ponder.analog_lever.text_1": "Аналоговый рычаг создан как компактный и точный источник Редстоун сигнала", + "create.ponder.analog_lever.header": "Управлением редстоун-сигналом используя Аналоговый рычаг", + "create.ponder.analog_lever.text_1": "Аналоговый рычаг создан как компактный и точный источник редстоун-сигнала", "create.ponder.analog_lever.text_2": "ПКМ, чтобы увеличить силу выходного сигнала", - "create.ponder.analog_lever.text_3": "ПКМ крадучись, чтобы уменьшить силу выходного сигнала снова", + "create.ponder.analog_lever.text_3": "ПКМ крадучись, чтобы уменьшить силу выходного сигнала", "create.ponder.andesite_tunnel.header": "Использованием Андезитовых туннелей", - "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать Конвейеры", - "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть соединения сбоку...", + "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать конвейеры", + "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть доступный выход сбоку...", "create.ponder.andesite_tunnel.text_3": "...он будет отделять ровно один предмет из любых проходящих мимо стаков", "create.ponder.andesite_tunnel.text_4": "Остаток продолжит свой путь", - "create.ponder.auto_schedule.header": "Станциями и Расписаниями", + "create.ponder.auto_schedule.header": "Станцией и автоматической выдачей Расписания", "create.ponder.auto_schedule.text_1": "Расписания могут использоваться для предоставления машинистам пункта назначения", - "create.ponder.auto_schedule.text_2": "Компараторы будут получать сигнал всякий раз, когда присутствует поезд", - "create.ponder.auto_schedule.text_3": "Имейте в виду, что к станции можно подойти только с указанного направления", - "create.ponder.auto_schedule.text_4": "Станции также можно использовать для автоматического назначения новых расписаний", - "create.ponder.auto_schedule.text_5": "Расписание, положенное на станцию, будет автоматически скопировано для машиниста поезда", + "create.ponder.auto_schedule.text_2": "Компараторы будут получать редстоун-сигнал всегда, когда поезд прибыл на Станцию", + "create.ponder.auto_schedule.text_3": "Имейте в виду, что к Станции можно подойти только с указанного направления", + "create.ponder.auto_schedule.text_4": "Станции также можно использовать для автоматического назначения новых Расписаний", + "create.ponder.auto_schedule.text_5": "Расписание, положенное на Станцию, будет автоматически скопировано для машиниста поезда", "create.ponder.auto_schedule.text_6": "В отличии от ручной выдачи, машинисты не заберут его с собой", - "create.ponder.basin.header": "Обработкой предметов в Чаше", + "create.ponder.basin.header": "Обработкой предметов в Чашах", "create.ponder.basin.text_1": "Чаша может хранить предметы и жидкости для обработки", - "create.ponder.basin.text_2": "После обработки, чаши пытаются вывести результат под любой из их сторон", + "create.ponder.basin.text_2": "После обработки, Чаши пытаются вывести результат под любую доступную сторону", "create.ponder.basin.text_3": "Когда предоставлен подходящий компонент, у Чаши появится выходящий кран", "create.ponder.basin.text_4": "Несколько вариантов применимы здесь", "create.ponder.basin.text_5": "Вывод чаши будет пойман инвентарём ниже", "create.ponder.basin.text_6": "Без выходящего крана, Чаша будет оставлять предметы, полученные в результате обработки", "create.ponder.basin.text_7": "Это может быть полезно, если продукт должен быть использован повторно как ингредиент", - "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из чаши", + "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из Чаши", "create.ponder.basin.text_9": "Фильтр может быть необходим для избежания извлечения необработанных предметов", "create.ponder.bearing_modes.header": "Режимами движения Механического подшипника", - "create.ponder.bearing_modes.text_1": "Когда остановлен, подшипник установит структуру на ближайшем выровненным по сетке блоков углу", - "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не возвращать структуру в твёрдое состояние, или только возле начального угла", + "create.ponder.bearing_modes.text_1": "Когда остановлен, Подшипник установит структуру на ближайшем выровненным по сетке блоков углу", + "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не превращать структуру в блоки, или только на начальной позиции", - "create.ponder.belt_casing.header": "Обрамлением ремней", - "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации Механических ремней (конвейера)", - "create.ponder.belt_casing.text_2": "Используйте Ключ, чтобы убрать обрамление", + "create.ponder.belt_casing.header": "Обрамлением конвейеров", + "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации конвейеров", + "create.ponder.belt_casing.text_2": "Используйте Гаечный ключ, чтобы убрать обрамление", "create.ponder.belt_connector.header": "Использованием Механических ремней", - "create.ponder.belt_connector.text_1": "ПКМ по двум валам предметом ремня соединит их вместе в конвейер", - "create.ponder.belt_connector.text_2": "Случайные выделения могут быть отменены нажатием ПКМ Крадучись", - "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены по всей длине конвейера", + "create.ponder.belt_connector.text_1": "ПКМ по двум валам Ремнём соединит их вместе в конвейер", + "create.ponder.belt_connector.text_2": "Ошибочные выделения могут быть отменены нажатием ПКМ крадучись", + "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены в любую часть конвейера", "create.ponder.belt_connector.text_4": "Валы, соединённые через ремни, будут вращаться с той же скоростью и направлением", - "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Ключом", + "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Гаечным ключом", "create.ponder.belt_connector.text_6": "Механические ремни могут быть окрашены в эстетических целях", "create.ponder.belt_directions.header": "Возможными расположениями Механических ремней", "create.ponder.belt_directions.text_1": "Ремни не могут соединяться в произвольных направлениях", - "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально", - "create.ponder.belt_directions.text_3": "2. Они могут соединяться по диагонали", - "create.ponder.belt_directions.text_4": "3. Они могут соединяться вертикально", - "create.ponder.belt_directions.text_5": "4. И они могут соединять вертикальные валы горизонтально", - "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать Длины от 2 до 20 блоков", + "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально;", + "create.ponder.belt_directions.text_3": "2. по диагонали;", + "create.ponder.belt_directions.text_4": "3. и вертикально;", + "create.ponder.belt_directions.text_5": "4. И также они могут соединять вертикальные Валы горизонтально", + "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать длины от 2 до 20 блоков", "create.ponder.belt_transport.header": "Использованием Механических ремней для логистики", - "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать Предметы и другие Сущности", - "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с ремня", + "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать предметы и другие сущности", + "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с конвейера", "create.ponder.blaze_burner.header": "Кормлением Горелок всполоха", - "create.ponder.blaze_burner.text_1": "Горелки всполохов дают тепло предметам, обрабатывающимся в Чаше", + "create.ponder.blaze_burner.text_1": "Горелки всполохов нагревают предметы, обрабатывающиеся в Чаше", "create.ponder.blaze_burner.text_2": "Для этого, всполох должен быть накормлен воспламеняемыми предметами", "create.ponder.blaze_burner.text_3": "С Тортом всполоха, горелка может достигать ещё большего уровня нагрева", "create.ponder.blaze_burner.text_4": "Процесс кормления может быть автоматизирован, используя Автономный активатор или Механическую руку", "create.ponder.brass_funnel.header": "Использованием Латунных воронок", - "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только одиночные предметы", - "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать до целого стака", + "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только один предмет за раз", + "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать их до целого стака", "create.ponder.brass_funnel.text_3": "Прокрутка на слоте фильтра позволяет точно регулировать размер извлекаемого стака", - "create.ponder.brass_funnel.text_4": "Используя предмет на слоте фильтра ограничит воронку до передачи только совпадающих стаков", + "create.ponder.brass_funnel.text_4": "Использование предмет на слоте фильтра, ограничит воронку до передачи только совпадающих предметов", "create.ponder.brass_tunnel.header": "Использованием Латунных туннелей", "create.ponder.brass_tunnel.text_1": "Латунные туннели могут быть использованы, чтобы накрывать конвейеры", "create.ponder.brass_tunnel.text_2": "Латунные туннели имеют слот для фильтра на каждой открытой стороне", "create.ponder.brass_tunnel.text_3": "Фильтр на входящих соединениях блокирует неподходящие предметы", - "create.ponder.brass_tunnel.text_4": "Фильтр на выходящих соединениях может быть использован для сортировки предметов по типу", + "create.ponder.brass_tunnel.text_4": "Фильтр на выходящих соединениях может быть использован для сортировки предметов", "create.ponder.brass_tunnel.text_5": "Всегда, когда у проходящего предмета есть несколько доступных выходов, режим распределения решит что с ним делать", "create.ponder.brass_tunnel.text_6": "Латунные туннели на параллельных конвейерах формируют группы", "create.ponder.brass_tunnel.text_7": "Входящие предметы будут распределены между всеми соединёнными выходами", - "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок туннеля напрямую", + "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок Туннеля напрямую", - "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунных туннелей", - "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения Латунного туннеля", - "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальная настройка для Латунных туннелей", + "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунного туннеля", + "create.ponder.brass_tunnel_modes.text_1": "Используя Гаечный ключ, вы можете настроить режим распределения Латунного туннеля", + "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальный режим для Латунных туннелей", "create.ponder.brass_tunnel_modes.text_11": "Предметы могут пройти только если у каждого туннеля в группе есть ожидающий у входа предмет", "create.ponder.brass_tunnel_modes.text_12": "Это подразумевает, что все конвейеры поставляют предметы с равной скоростью", "create.ponder.brass_tunnel_modes.text_2": "«Разделение» попытается распределить стак поровну между доступными выходами", @@ -2209,54 +2211,54 @@ "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» сохраняет цельные стаки и отдаёт их выходам по очереди", "create.ponder.brass_tunnel_modes.text_6": "Опять же, если выход не может принять больше предметов, он будет пропущен", "create.ponder.brass_tunnel_modes.text_7": "«Строго по кругу» никогда не пропускает выходы", - "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайшее» приоритизирует ближайшие выходы от места подачи предметов", + "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайший» приоритизирует ближайшие выходы от места подачи предметов", "create.ponder.brass_tunnel_modes.text_9": "«Случайно» будет отдавать целые стаки случайно выбранным выходам", "create.ponder.cart_assembler.header": "Движением структур при помощи Сборщиков вагонеток", - "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые структуры к проходящим мимо вагонеткам", - "create.ponder.cart_assembler.text_2": "Без редстоун сигнала они разбирают вагонеточные штуковины обратно в блоки", - "create.ponder.cart_assembler.text_3": "Использование Ключа на вагонетке позволит вам унести Штуковину куда-то ещё", + "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые сверху структуры к проезжающим через них вагонетки", + "create.ponder.cart_assembler.text_2": "Без редстоун-сигнала они разбирают штуковины обратно в блоки", + "create.ponder.cart_assembler.text_3": "Использование Гаечного ключа на вагонетке позволит вам унести Вагонеточную штуковину куда-то ещё", "create.ponder.cart_assembler_dual.header": "Сборкой Штуковин-экипажей", "create.ponder.cart_assembler_dual.text_1": "Всегда, когда два Сборщика вагонеток имеют общую прикреплённую структуру...", - "create.ponder.cart_assembler_dual.text_2": "активация любого из них создаст Штуковину-экипаж", + "create.ponder.cart_assembler_dual.text_2": "...активация любого из них создаст Штуковину-экипаж", "create.ponder.cart_assembler_dual.text_3": "Эти вагонетки будут вести себя так, будто они соединены Соединителем вагонеток", "create.ponder.cart_assembler_modes.header": "Настройкой ориентации Вагонеточных штуковин", "create.ponder.cart_assembler_modes.text_1": "Вагонеточные штуковины будут поворачиваться в сторону движения их вагонеток", - "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона конструкции будет считаться передней", - "create.ponder.cart_assembler_modes.text_3": "Если сборщик настроен на блокировку вращения, то ориентация штуковин никогда не изменится", + "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона штуковины будет считаться передней", + "create.ponder.cart_assembler_modes.text_3": "Если Сборщик настроен на блокирование вращения, то ориентация штуковин никогда не изменится", "create.ponder.cart_assembler_rails.header": "Другими типами вагонеток и рельс", "create.ponder.cart_assembler_rails.text_1": "Сборщики вагонеток на обычных рельсах не будут влиять на движение проходящих вагонеток", "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", - "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основание", - "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут поддерживать себя запитанными, используя топливо из присоединённых инвентарей", + "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основания для Вагонеточных штуковин", + "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут ехать самостоятельно, используя топливо из присоединённых инвентарей", - "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами", + "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами в корпусе", "create.ponder.chain_drive.text_1": "Цепные приводы передают силу вращения друг другу", - "create.ponder.chain_drive.text_2": "Все валы соединённые таким образом будут вращаться в одном направлении", + "create.ponder.chain_drive.text_2": "Все Валы соединённые таким образом будут вращаться в одном направлении", "create.ponder.chain_drive.text_3": "Любая часть в ряду может быть повёрнута на 90 градусов", - "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными механизмами", - "create.ponder.chain_gearshift.text_1": "Неактивные Цепные механизмы ведут себя точно так же, как Цепные приводы", - "create.ponder.chain_gearshift.text_2": "Когда активирован, скорость, передаваемая другим Цепным механизмам в ряду удваивается", - "create.ponder.chain_gearshift.text_3": "Когда активированный Цепной механизм не является источником, его скорость будет снижена вдвое", - "create.ponder.chain_gearshift.text_4": "В обоих случаях Цепные приводы в ряду всегда вращаются с 2x скоростью активированного Цепного механизма", - "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, это умножение может быть настроено более точно между 1 и 2", + "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными коробками передач", + "create.ponder.chain_gearshift.text_1": "Неактивные Цепные коробки передач ведут себя точно так же, как Цепные приводы", + "create.ponder.chain_gearshift.text_2": "При активации, скорость, передаваемая другим Цепным коробкам передач в ряду удваивается", + "create.ponder.chain_gearshift.text_3": "Когда активированная Цепная коробка передач не является источником, его скорость будет снижена вдвое", + "create.ponder.chain_gearshift.text_4": "В обоих случаях Цепные приводы в ряду всегда вращаются с 2x скоростью активированной Цепной коробки передач", + "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, изменение скорости может быть настроено более точно, нежели в 1 или в 2 раза", "create.ponder.chain_gearshift.text_6": "12 об./мин.", "create.ponder.chute.header": "Транспортировкой предметов вниз через Желоба", "create.ponder.chute.text_1": "Желоба могут транспортировать предметы вертикально вниз", - "create.ponder.chute.text_2": "Используя Ключ, вы можете создать окно", - "create.ponder.chute.text_3": "Установка желобов на стороны других желобов сделает их диагональными", + "create.ponder.chute.text_2": "Используя Гаечный ключ, вы можете создать окно", + "create.ponder.chute.text_3": "Установка Желобов на стороны других желобов сделает их диагональными", "create.ponder.chute_upward.header": "Транспортировкой предметов вверх через Желоба", "create.ponder.chute_upward.text_1": "Используя Вентилятор в корпусе внизу или наверху, Жёлоб может перемещать предметы вверх", - "create.ponder.chute_upward.text_2": "Осмотр желобов в Инженерных очках показывает информацию о направлении движения", + "create.ponder.chute_upward.text_2": "Осмотр Желобов в Инженерных очках показывает информацию о направлении движения", "create.ponder.chute_upward.text_3": "На «заблокированном» конце предметы должны быть введены/выведены сбоку", - "create.ponder.clockwork_bearing.header": "Оживлением структур Часовым механизмом", + "create.ponder.clockwork_bearing.header": "Оживлением структур Часовыми механизмами", "create.ponder.clockwork_bearing.text_1": "Часовые механизмы прикрепляются к блокам спереди", "create.ponder.clockwork_bearing.text_2": "При получении силы вращения структура повернётся в зависимости от текущего часа", "create.ponder.clockwork_bearing.text_3": "3:00", @@ -2264,11 +2266,11 @@ "create.ponder.clockwork_bearing.text_5": "ПКМ по механизму, чтобы остановить или вновь запустить структуру", "create.ponder.clockwork_bearing.text_6": "Вторая структура может быть добавлена спереди Часовой стрелки", "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой суперклеем или чем-то схожим", - "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как Минутная стрелка", + "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как минутная стрелка", - "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцепления", + "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцеплений", "create.ponder.clutch.text_1": "Сцепление передаёт вращение по прямой", - "create.ponder.clutch.text_2": "При активации Редстоуном оно разрывает соединение", + "create.ponder.clutch.text_2": "При активации редстоун-сигналом оно разрывает соединение", "create.ponder.cog_speedup.header": "Переключением передач Шестернями", "create.ponder.cog_speedup.text_1": "Большие и Маленькие шестерни могут соединяться по диагонали", @@ -2286,8 +2288,8 @@ "create.ponder.creative_fluid_tank.header": "Использованием Творческих жидкостных баков", "create.ponder.creative_fluid_tank.text_1": "Творческий жидкостный бак может использоваться для обеспечения бесконечного запаса жидкости", - "create.ponder.creative_fluid_tank.text_2": "Щелкните ПКМ предметом, содержащим жидкость, чтобы настроить его", - "create.ponder.creative_fluid_tank.text_3": "Сети труб могут бесконечно вытягивать заданную жидкость из резервуара", + "create.ponder.creative_fluid_tank.text_2": "Щёлкните ПКМ предметом, содержащим жидкость, чтобы настроить его", + "create.ponder.creative_fluid_tank.text_3": "Трубопроводы могут бесконечно вытягивать заданную жидкость из резервуара", "create.ponder.creative_fluid_tank.text_4": "Любые жидкости, закачанные обратно в творческий жидкостный бак, будут уничтожены", "create.ponder.creative_motor.header": "Генерацией силы вращения Творческими моторами", @@ -2297,13 +2299,13 @@ "create.ponder.creative_motor_mojang.header": "Загадкой от Mojang", "create.ponder.crushing_wheels.header": "Обработкой предметов Колёсами дробления", - "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может молоть предметы очень эффективно", - "create.ponder.crushing_wheels.text_2": "Сила вращения должна вращать их друг в друга", + "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может очень эффективно дробить предметы", + "create.ponder.crushing_wheels.text_2": "Кинетическая энергия должна вращать их друг в друга", "create.ponder.crushing_wheels.text_3": "Предметы брошенные или введённые в них сверху будут обработаны", - "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматическим способом", + "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматически", "create.ponder.deployer.header": "Использованием Автономных активаторов", - "create.ponder.deployer.text_1": "При наличии силы вращения автономный активатор может имитировать действия игрока", + "create.ponder.deployer.text_1": "При наличии силы вращения Автономный активатор может имитировать действия игрока", "create.ponder.deployer.text_10": "ПКМ спереди, чтобы дать ему предмет для использования", "create.ponder.deployer.text_11": "Предметы также могут быть введены автоматически", "create.ponder.deployer.text_12": "Автономные активаторы имеют слот для фильтра", @@ -2317,25 +2319,25 @@ "create.ponder.deployer.text_6": "Использовать предметы;", "create.ponder.deployer.text_7": "Активировать блоки;", "create.ponder.deployer.text_8": "Собирать блоки;", - "create.ponder.deployer.text_9": "и Атаковать мобов", + "create.ponder.deployer.text_9": "и атаковать мобов", - "create.ponder.deployer_contraption.header": "Использованием Автономных активаторов на штуковинах", - "create.ponder.deployer_contraption.text_1": "Всегда, когда автономные активаторы движутся как часть движимой штуковины...", - "create.ponder.deployer_contraption.text_2": "Они активируются на каждом посещённом месте, используя предметы из любых инвентарей на штуковине", - "create.ponder.deployer_contraption.text_3": "Слот для Фильтра может быть использован, чтобы уточнить, какие предметы ему брать", + "create.ponder.deployer_contraption.header": "Использованием Автономного активатора на штуковинах", + "create.ponder.deployer_contraption.text_1": "Всегда, когда Автономные активаторы движутся как часть штуковины...", + "create.ponder.deployer_contraption.text_2": "...они активируются на каждом посещённом блоке, используя предметы из любых хранилищ на штуковине", + "create.ponder.deployer_contraption.text_3": "Слот для фильтра может быть использован, чтобы уточнить, какие предметы ему использовать", "create.ponder.deployer_modes.header": "Режимами Автономного активатора", - "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодействие", - "create.ponder.deployer_modes.text_2": "Используя Ключ, вы можете установить его на имитацию ЛКМ", + "create.ponder.deployer_modes.text_1": "По умолчанию, Активатор имитирует ПКМ-взаимодействие", + "create.ponder.deployer_modes.text_2": "Используя Гаечный ключ, вы можете установить его на имитацию ЛКМ", - "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономных активаторов", + "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономного активатора", "create.ponder.deployer_processing.text_1": "Держа подходящий предмет/инструмент, автономные активаторы могут обрабатывать предметы под собой", "create.ponder.deployer_processing.text_2": "Принимаемые предметы можно бросить или положить на депо под автономным активатором", "create.ponder.deployer_processing.text_3": "Когда предметы находятся на конвейере...", - "create.ponder.deployer_processing.text_4": "автономный активатор будет удерживать и обрабатывать их автоматически", + "create.ponder.deployer_processing.text_4": "...автономный активатор будет удерживать и обрабатывать их автоматически", - "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоуном", - "create.ponder.deployer_redstone.text_1": "При активации Редстоуном активатор перестанет работать", + "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоун-сигналом", + "create.ponder.deployer_redstone.text_1": "При активации редстоун-сигналом активатор перестанет работать", "create.ponder.deployer_redstone.text_2": "Перед остановкой, Активатор завершит все начатые действия", "create.ponder.deployer_redstone.text_3": "Таким образом, инвертированный импульс может быть использован для вызова ровно одного срабатывания", @@ -2343,7 +2345,7 @@ "create.ponder.depot.text_1": "Депо могут служить как «стационарный» элемент конвейера", "create.ponder.depot.text_2": "ПКМ, что бы самостоятельно положить или забрать предметы с них", "create.ponder.depot.text_3": "Так же, как Механические ремни, оно может предоставлять предметы для обработки", - "create.ponder.depot.text_4": "...а также поставлять предметы Механическим рукам", + "create.ponder.depot.text_4": "А также поставлять предметы Механическим рукам", "create.ponder.display_board.header": "Использованием Механического табло", "create.ponder.display_board.text_1": "Механическое табло — это масштабируемая альтернатива табличкам", @@ -2355,18 +2357,18 @@ "create.ponder.display_link.header": "Настройкой Передатчиков информации", "create.ponder.display_link.text_1": "Передатчик информации может использоваться для визуализации динамической информации", - "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное табло...", + "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное Табло...", "create.ponder.display_link.text_3": "...затем прикрепите его к блоку для чтения информации из него", - "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, какая информация будет отправляется", - "create.ponder.display_link.text_5": "Теперь табло будет получать информацию от передатчика", + "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, куда и какая информация будет отправляется", + "create.ponder.display_link.text_5": "Теперь Табло будет получать информацию от Передатчика", "create.ponder.display_link.text_6": "Не каждый блок может выступать в качестве источника информации", "create.ponder.display_link.text_7": "Каждый совместимый блок предоставляет уникальную информацию", - "create.ponder.display_link.text_8": "Передатчик информации может работать с несколькими различными дисплеями", + "create.ponder.display_link.text_8": "Передатчик информации может отправлять информацию некоторым другим блокам", - "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоуном", - "create.ponder.display_link_redstone.text_1": "При питании от редстоуна Передатчик информации перестаёт отправлять обновления", + "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоун-сигналом", + "create.ponder.display_link_redstone.text_1": "При питании от редстоун-сигнала Передатчик информации перестаёт отправлять обновления", "create.ponder.display_link_redstone.text_2": "После отключения питания таймер сбрасывается, и новая информация отправляется немедленно", - "create.ponder.display_link_redstone.text_3": "Сигналы редстоуна, отправляемые Источниками информации, не оказывают эффекта на Передатчик ", + "create.ponder.display_link_redstone.text_3": "Редстоун-сигналы, отправляемые Источниками информации, не оказывают эффекта на Передатчик", "create.ponder.empty_blaze_burner.header": "Поимкой всполохов в Горелку", "create.ponder.empty_blaze_burner.text_1": "ПКМ по всполоху с пустой горелкой, чтобы захватить его", @@ -2377,35 +2379,35 @@ "create.ponder.empty_blaze_burner.text_6": "Однако они не будут подходить для промышленного нагрева", "create.ponder.encased_fluid_pipe.header": "Обрамлением Жидкостных труб", - "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для украшения декорации труб.", - "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они скрываются, заключенные в обрамление трубы блокируются в текущем состоянии", - "create.ponder.encased_fluid_pipe.text_3": "Они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", + "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для обрамления Труб", + "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они будут скрыты в корпусе, обрамлённые Трубы блокируются в текущем состоянии", + "create.ponder.encased_fluid_pipe.text_3": "Также они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", - "create.ponder.fan_direction.header": "Воздушным потоком Вентилятора в корпусе", - "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания Воздушного потока", + "create.ponder.fan_direction.header": "Воздушным потоком Вентиляторов в корпусе", + "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания воздушного потока", "create.ponder.fan_direction.text_2": "Сила и направление потока зависят от подаваемого вращения", - "create.ponder.fan_processing.header": "Обработкой предметов используя Вентиляторы в корпусе", - "create.ponder.fan_processing.text_1": "Проходя через лаву, Воздушный поток становится Горячим", - "create.ponder.fan_processing.text_2": "Предметы в этой области будут переплавлены", - "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда будут сожжены", - "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для Копчения с огнём", - "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт Промывающую установку", + "create.ponder.fan_processing.header": "Обработкой предметов используя Вентилятор в корпусе", + "create.ponder.fan_processing.text_1": "Проходя через лаву, воздушный поток становится горячим", + "create.ponder.fan_processing.text_2": "Предметы в его области действия будут переплавлены", + "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда сгорят", + "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для копчения дымом от огня", + "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт промывающую установку", "create.ponder.fan_processing.text_6": "Несколько новых вариантов обработки делаются с её помощью", "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность установки", "create.ponder.fan_processing.text_8": "Обработка Вентиляторами может быть применена к предметам на конвейерах или депо", "create.ponder.fluid_pipe_flow.header": "Перемещением жидкостей при помощи Жидкостных труб", "create.ponder.fluid_pipe_flow.text_1": "Жидкостные трубы могут соединять два или более источников и потребителей жидкости", - "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно прямому отрезку трубы", + "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно на прямом отрезке трубы", "create.ponder.fluid_pipe_flow.text_3": "Трубы с окнами не будут соединяться ни с какими другими рядом идущими отрезками труб", - "create.ponder.fluid_pipe_flow.text_4": "Приводимые в действие механическими помпами, трубы могут транспортировать жидкости", + "create.ponder.fluid_pipe_flow.text_4": "Приводимые в действие Механическими помпами, трубы могут транспортировать жидкости", "create.ponder.fluid_pipe_flow.text_5": "Сначала жидкость не выкачивается", - "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают свое содержимое", - "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки труб никогда «физически» не содержат никакой жидкости", + "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают своё содержимое", + "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки Труб никогда «физически» не содержат никакой жидкости", "create.ponder.fluid_pipe_interaction.header": "Опустошением и наполнением Жидкостных контейнеров", - "create.ponder.fluid_pipe_interaction.text_1": "Концы сети труб могут взаимодействовать с различными блоками", + "create.ponder.fluid_pipe_interaction.text_1": "Концы трубопровода могут взаимодействовать с различными блоками", "create.ponder.fluid_pipe_interaction.text_2": "Любой блок с возможностью хранения жидкости может быть заполнен или опустошен", "create.ponder.fluid_pipe_interaction.text_3": "Источники прямо перед открытым концом можно откачать...", "create.ponder.fluid_pipe_interaction.text_4": "...в то время как выливание в незаполненное пространство может создать источники", @@ -2421,51 +2423,51 @@ "create.ponder.fluid_tank_storage.text_1": "Жидкостные баки можно использовать для хранения большого количества жидкости", "create.ponder.fluid_tank_storage.text_2": "Трубы могут закачивать и выкачивать жидкости с любой стороны", "create.ponder.fluid_tank_storage.text_3": "Содержащаяся жидкость может быть измерена с помощью компаратора", - "create.ponder.fluid_tank_storage.text_4": "Однако в режиме выживания жидкость нельзя добавлять или извлекать вручную", - "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать чаши, предметные осушители и дозаторы для опустошения или наполнения содерж. жидкость предметов", + "create.ponder.fluid_tank_storage.text_4": "Однако, в режиме выживания жидкость нельзя добавлять или извлекать вручную", + "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать Чаши, Осушители предметов и Дозаторы для опустошения или наполнения содержащих жидкость предметов", - "create.ponder.funnel_compat.header": "Совместимостью Воронок", + "create.ponder.funnel_compat.header": "Совместимостью Воронки", "create.ponder.funnel_compat.text_1": "Воронки должны хорошо взаимодействовать с многими компонентами:", - "create.ponder.funnel_compat.text_2": "Вертикальные пилы", - "create.ponder.funnel_compat.text_3": "Депо", - "create.ponder.funnel_compat.text_4": "Предметные осушители", + "create.ponder.funnel_compat.text_2": "Вертикальные пилы;", + "create.ponder.funnel_compat.text_3": "Депо;", + "create.ponder.funnel_compat.text_4": "и Осушители предметов", - "create.ponder.funnel_direction.header": "Направлением передачи Воронок", - "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, она забирает предметы из инвентаря", - "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она кладёт предметы в инвентарь", - "create.ponder.funnel_direction.text_3": "Используя Ключ, вы можете изменить направление Воронки", + "create.ponder.funnel_direction.header": "Направлением передачи Воронки", + "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, Воронка забирает предметы из хранилища", + "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она добавляет предметы в инвентарь", + "create.ponder.funnel_direction.text_3": "Используя Гаечный ключ, вы можете изменить направление Воронки", "create.ponder.funnel_direction.text_4": "Те же правила применяются для большинства направлений", "create.ponder.funnel_direction.text_5": "Воронки на конвейерах будут извлекать/вводить предметы в зависимости от направления их движения", "create.ponder.funnel_intro.header": "Использованием Воронок", - "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из и в инвентари", + "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из/в хранилища", - "create.ponder.funnel_redstone.header": "Управлением Воронок редстоуном", - "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не даст любой воронке работать", + "create.ponder.funnel_redstone.header": "Управлением Воронкой редстоун-сигналом", + "create.ponder.funnel_redstone.text_1": "Редстоун-сигнал не даст любой Воронке работать", - "create.ponder.funnel_transfer.header": "Передачей Воронками напрямую", + "create.ponder.funnel_transfer.header": "Передачей Воронкой напрямую", "create.ponder.funnel_transfer.text_1": "Воронки не могут перемещать предметы напрямую между закрытыми инвентарями", "create.ponder.funnel_transfer.text_2": "Желоба или Умные желоба могут лучше подходить для этих целей", "create.ponder.funnel_transfer.text_3": "То же касается и горизонтального перемещения. Механический ремень должен здесь помочь", - "create.ponder.gantry_carriage.header": "Использованием Шасси портального крана", + "create.ponder.gantry_carriage.header": "Использованием Шасси портальных кранов", "create.ponder.gantry_carriage.text_1": "Шасси портального крана могут прикрепляться и двигаться вдоль Вала портального крана", "create.ponder.gantry_carriage.text_2": "Крановые установки могут двигать присоединённые Блоки", "create.ponder.gantry_cascaded.header": "Созданием Многоступенчатого портального крана", - "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в суперклее", - "create.ponder.gantry_cascaded.text_2": "То же относится и к шасси на движущихся Валах портального крана", - "create.ponder.gantry_cascaded.text_3": "Таким образом крановая система может покрывать несколько осей движения", + "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к Шасси без нужды в Суперклее", + "create.ponder.gantry_cascaded.text_2": "То же относится и к Шасси на движущихся Валах портального крана", + "create.ponder.gantry_cascaded.text_3": "Таким образом крановая установка может покрывать несколько осей движения", "create.ponder.gantry_direction.header": "Направлением движения крана", "create.ponder.gantry_direction.text_1": "Валы портального крана могут иметь два противоположных направления", - "create.ponder.gantry_direction.text_2": "Направление движения шасси зависит от ориентации их валов", - "create.ponder.gantry_direction.text_3": "...а также от направления вращения вала", + "create.ponder.gantry_direction.text_2": "Направление движения Шасси зависит от ориентации их Валов", + "create.ponder.gantry_direction.text_3": "А также от направления вращения Вала", "create.ponder.gantry_direction.text_4": "Те же правила относятся к передаваемому вращению", - "create.ponder.gantry_redstone.header": "Подачей энергии на кран", - "create.ponder.gantry_redstone.text_1": "Активированные редстоуном валы крана перестают двигать шасси", - "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу шасси", + "create.ponder.gantry_redstone.header": "Краном и редстоун-сигнале", + "create.ponder.gantry_redstone.text_1": "Активированные редстоун-сигналом валы крана перестают двигать Шасси", + "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу Шасси", "create.ponder.gantry_shaft.header": "Использованием Валов портального крана", "create.ponder.gantry_shaft.text_1": "Валы портального крана составляют основу крановой установки. По ним будут двигаться присоединённые Шасси", @@ -2477,50 +2479,50 @@ "create.ponder.gearbox.text_3": "Валы по углам поворачиваются в зеркальных направлениях", "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированны", - "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивного механизма", - "create.ponder.gearshift.text_1": "Реверсивные механизмы передают вращение по прямой", - "create.ponder.gearshift.text_2": "При активации редстоуном, они реверсируют передачу", + "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивных коробок передач", + "create.ponder.gearshift.text_1": "Реверсивные коробки передач передают вращение по прямой", + "create.ponder.gearshift.text_2": "При активации редстоун-сигналом, они реверсируют передачу", - "create.ponder.hand_crank.header": "Генерацией силы вращения при помощи Рукояток", + "create.ponder.hand_crank.header": "Генерацией силы вращения Рукоятками", "create.ponder.hand_crank.text_1": "Рукоятки могут быть использованы игроками для создания силы вращения вручную", - "create.ponder.hand_crank.text_2": "Держите ПКМ, чтобы повернуть их против часовой стрелки", + "create.ponder.hand_crank.text_2": "Зажмите ПКМ, чтобы повернуть их против часовой стрелки", "create.ponder.hand_crank.text_3": "Их скорость вращения относительно высока", - "create.ponder.hand_crank.text_4": "Держите ПКМ крадучись, чтобы повернуть её по часовой стрелке", + "create.ponder.hand_crank.text_4": "Зажмите ПКМ крадучись, чтобы повернуть её по часовой стрелке", - "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкива со шлангом", + "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкивов со шлангом", "create.ponder.hose_pulley.text_1": "Шкивы со шлангом можно использовать для заполнения или осушения больших объёмов жидкости", "create.ponder.hose_pulley.text_2": "С помощью кинетической энергии можно регулировать длину шланга", "create.ponder.hose_pulley.text_3": "Шкив сматывается, если обратить вращение", - "create.ponder.hose_pulley.text_4": "С противоположной стороны можно подключать трубы", - "create.ponder.hose_pulley.text_5": "Присоединённые сети труб могут либо подавать жидкость в шланг...", + "create.ponder.hose_pulley.text_4": "С противоположной стороны можно подключать Трубы", + "create.ponder.hose_pulley.text_5": "Присоединённый водопровод может либо подавать жидкость в шланг...", "create.ponder.hose_pulley.text_6": "...либо вытягивать её, осушая водоем", - "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения шкивом полностью зависит от пропускной способности жидкостной сети", + "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения Шкивом полностью зависит от пропускной способности трубопровода", "create.ponder.hose_pulley_infinite.header": "Пассивным заполнением и осушением больших объёмов жидкости", "create.ponder.hose_pulley_infinite.text_1": "При развертывании Шкива со шлангом в достаточно большой океан...", - "create.ponder.hose_pulley_infinite.text_2": "Он будет предоставлять/поглощать жидкости без влияния на источник", - "create.ponder.hose_pulley_infinite.text_3": "Сети труб могут неограниченно передавать жидкости из/в такие шкивы", + "create.ponder.hose_pulley_infinite.text_2": "...он будет выкачивать/закачивать жидкость без влияния на источник", + "create.ponder.hose_pulley_infinite.text_3": "Трубопроводы могут неограниченно передавать жидкости из/в такие Шкивы", "create.ponder.hose_pulley_level.header": "Уровнем заполнения и осушения Шкива со шлангом", - "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве шланга — он не может работать", + "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве — он не может работать", "create.ponder.hose_pulley_level.text_2": "Осушение происходит сверху вниз", "create.ponder.hose_pulley_level.text_3": "Уровень поверхности окажется чуть ниже того места, где заканчивается шланг", - "create.ponder.hose_pulley_level.text_4": "Наполнение происходит снизу вверх", + "create.ponder.hose_pulley_level.text_4": "Заполнение происходит снизу вверх", "create.ponder.hose_pulley_level.text_5": "Заполняемый бассейн не будет наполняться выше уровня конца шланга", - "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Предметных осушителей", - "create.ponder.item_drain.text_1": "Предметные осушители могут извлекать жидкости из предметов", - "create.ponder.item_drain.text_2": "Щелкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", + "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Осушителей предметов", + "create.ponder.item_drain.text_1": "Осушители предметов могут извлекать жидкости из предметов", + "create.ponder.item_drain.text_2": "Щёлкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", "create.ponder.item_drain.text_3": "Когда предметы подаются со стороны...", "create.ponder.item_drain.text_4": "...они переворачиваются, выливая содержащуюся в них жидкость", - "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища осушителей", + "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища Осушителей", - "create.ponder.item_vault_sizes.header": "Размерами Хранилища предметов", + "create.ponder.item_vault_sizes.header": "Свойствами Хранилищ предметов", "create.ponder.item_vault_sizes.text_1": "Хранилища предметов можно объединять для увеличения общей вместимости", "create.ponder.item_vault_sizes.text_2": "Их базовая площадь может быть шириной до 3 блоков...", "create.ponder.item_vault_sizes.text_3": "...и увеличиваться в длину до 3 диаметров", - "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах", + "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах предметов", "create.ponder.item_vault_storage.text_1": "Хранилища предметов можно использовать для хранения большого количества предметов", "create.ponder.item_vault_storage.text_2": "Однако содержимое не может быть добавлено или взято вручную", "create.ponder.item_vault_storage.text_3": "Любые компоненты для передачи предметов могут как добавлять...", @@ -2535,7 +2537,7 @@ "create.ponder.linear_chassis_attachment.text_2": "Кликните ещё раз, чтобы сделать противоположную сторону липкой", "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, пустой рукой, чтобы убрать слизь", "create.ponder.linear_chassis_attachment.text_4": "Липкие грани Линейных шасси будут прикреплять ряд блоков перед ним", - "create.ponder.linear_chassis_attachment.text_5": "Используйте Ключ, чтобы настроить радиус прикрепления для этого шасси", + "create.ponder.linear_chassis_attachment.text_5": "Используйте Гаечный ключ, чтобы настроить радиус прикрепления для этого шасси", "create.ponder.linear_chassis_attachment.text_6": "Прокрутка при удерживании Ctrl настраивает радиус всех присоединённых шасси", "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Суперклея", "create.ponder.linear_chassis_attachment.text_8": "При помощи этих механик, структуры любой формы могут двигаться как Штуковина", @@ -2567,58 +2569,58 @@ "create.ponder.mechanical_arm_modes.text_1": "Входы", "create.ponder.mechanical_arm_modes.text_2": "Выходы", "create.ponder.mechanical_arm_modes.text_3": "Когда Рука выбирает между несколькими доступными выходами...", - "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из своей настройки", - "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Ключом позволит вам настроить это", + "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из выбранного режима распределения", + "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Гаечным ключом в руке позволит вам настроить это", "create.ponder.mechanical_arm_modes.text_6": "Режим «По кругу» переключается между всеми доступными выходами по очереди", "create.ponder.mechanical_arm_modes.text_7": "Если выход не может принять больше предметов, он будет пропущен", "create.ponder.mechanical_arm_modes.text_8": "«Строго по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", "create.ponder.mechanical_arm_modes.text_9": "«Предпочитать первичную цель» приоритизирует выходы, выбранные ранее при настройке этой Руки", - "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоуном", - "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоуном, Механические руки перестают работать", + "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоун-сигналом", + "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоун-сигналом, Механические руки перестают работать", "create.ponder.mechanical_arm_redstone.text_2": "Перед остановкой, они завершат все начатые действия", "create.ponder.mechanical_arm_redstone.text_3": "Таким образом, инвертированный импульс может использоваться для вызова ровно одного срабатывания", - "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механического подшипника", + "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механических подшипников", "create.ponder.mechanical_bearing.text_1": "Механические подшипники прикрепляют блоки перед ними", - "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во Вращающуюся штуковину", + "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во вращающуюся штуковину", "create.ponder.mechanical_crafter.header": "Настройкой Механических крафтеров", "create.ponder.mechanical_crafter.text_1": "Массив из Механических крафтеров можно использовать для автоматизации создания любого рецепта", - "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Ключа", + "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Гаечного ключа", "create.ponder.mechanical_crafter.text_3": "Для правильной установки все пути должны сходиться в один выход с любой стороны", "create.ponder.mechanical_crafter.text_4": "Продукты будут помещены в инвентарь у выхода", "create.ponder.mechanical_crafter.text_5": "Механическим крафтерам нужна сила вращения для работы", "create.ponder.mechanical_crafter.text_6": "ПКМ спереди, чтобы вставить предметы вручную", "create.ponder.mechanical_crafter.text_7": "Когда каждый слот на пути содержит предмет, процесс создания начнётся", - "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать Редстоун импульсом", + "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать редстоун-импульсом", "create.ponder.mechanical_crafter_connect.header": "Объединением инвентарей Механических крафтеров", - "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в крафтеры автоматически", - "create.ponder.mechanical_crafter_connect.text_2": "При помощи ключа сзади крафтеров, их инвентари можно объединить", - "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые крафтеры теперь будут доступны из одного места ввода", + "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в Крафтеры автоматически", + "create.ponder.mechanical_crafter_connect.text_2": "При помощи Гаечного ключа сзади крафтеров, их инвентари можно объединить", + "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые Крафтеры теперь будут доступны из одного места ввода", "create.ponder.mechanical_crafter_covers.header": "Закрытием слотов Механических крафтеров", - "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных крафтеров, чтобы закрыть пробелы на пути", - "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, крафтеры могут играть роль пустых слотов в схеме", - "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные ключом сзади также могут быть доступны через закрытые крафтеры", + "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных Крафтеров, чтобы закрыть пробелы на пути", + "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, Крафтеры могут играть роль пустых слотов в схеме", + "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные Гаечным ключом сзади также могут быть доступны через закрытые Крафтеры", - "create.ponder.mechanical_drill.header": "Ломанием блоков Механической Дрелью", + "create.ponder.mechanical_drill.header": "Разрушением блоков Механическими дрелями", "create.ponder.mechanical_drill.text_1": "При подаче вращения, Механическая дрель будет ломать блоки перед ней", - "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости", + "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости вращения", "create.ponder.mechanical_drill_contraption.header": "Использованием Механических дрелей на штуковинах", - "create.ponder.mechanical_drill_contraption.text_1": "Когда дрели движутся как часть движимой штуковины...", + "create.ponder.mechanical_drill_contraption.text_1": "Когда Дрели движутся как часть движимой штуковины...", "create.ponder.mechanical_drill_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", "create.ponder.mechanical_harvester.header": "Использованием Механических комбайнов на штуковинах", - "create.ponder.mechanical_harvester.text_1": "Когда комбайны движутся как часть движимой штуковины...", - "create.ponder.mechanical_harvester.text_2": "Они будут убирать зрелый урожай на своём пути и высаживать его снова", + "create.ponder.mechanical_harvester.text_1": "Когда Комбайны движутся как часть движимой штуковины...", + "create.ponder.mechanical_harvester.text_2": "...они будут убирать зрелый урожай на своём пути и высаживать его снова", "create.ponder.mechanical_mixer.header": "Обработкой предметов Механическим миксером", "create.ponder.mechanical_mixer.text_1": "При помощи Миксера и Чаши можно автоматизировать некоторые рецепты крафта", - "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают любые бесформенные рецепты крафта и некоторые другие", - "create.ponder.mechanical_mixer.text_3": "Некоторые из них требуют тепло от Горелки всполоха", + "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают бесформенную сборку и автоматическую варку зелий", + "create.ponder.mechanical_mixer.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_mixer.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", "create.ponder.mechanical_piston.header": "Перемещением структур при помощи Механических поршней", @@ -2631,68 +2633,68 @@ "create.ponder.mechanical_piston_modes.text_2": "Можно настроить его так, чтобы структура никогда не становилась блоками или только на начальной позиции", "create.ponder.mechanical_plough.header": "Использованием Механических плугов на штуковинах", - "create.ponder.mechanical_plough.text_1": "Когда плуги движутся как часть движимой штуковины...", + "create.ponder.mechanical_plough.text_1": "Когда Плуги движутся как часть движимой штуковины...", "create.ponder.mechanical_plough.text_2": "...они будут ломать блоки без твёрдого хитбокса", "create.ponder.mechanical_plough.text_3": "К тому же, плуги могут создавать пашню", - "create.ponder.mechanical_plough.text_4": "...они также могут толкать сущностей не причиняя им вреда", + "create.ponder.mechanical_plough.text_4": "Также они могут толкать сущностей не причиняя им вреда", - "create.ponder.mechanical_press.header": "Обработкой предметов Механическим прессом", + "create.ponder.mechanical_press.header": "Обработкой предметов Механическими прессами", "create.ponder.mechanical_press.text_1": "Механический пресс может обрабатывать предметы под собой", - "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Прессом", + "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Пресс", "create.ponder.mechanical_press.text_3": "Когда предметы подаются на конвейере...", - "create.ponder.mechanical_press.text_4": "Пресс будет задерживать и наполнять их автоматически", + "create.ponder.mechanical_press.text_4": "...Пресс будет задерживать и прессовать их автоматически", - "create.ponder.mechanical_press_compacting.header": "Спрессовыванием предметов Механическим прессом", - "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше упакует их", - "create.ponder.mechanical_press_compacting.text_2": "Спрессовывание включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", + "create.ponder.mechanical_press_compacting.header": "Спрессовыванием и сжатием предметов Механическим прессом", + "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше скомпонует их", + "create.ponder.mechanical_press_compacting.text_2": "Сжатие предметов и спрессовывание включают в себя любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", "create.ponder.mechanical_press_compacting.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_press_compacting.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", "create.ponder.mechanical_pump_flow.header": "Транспортировкой жидкостей при помощи Механических помп", - "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые сети из труб", + "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые трубопровод", "create.ponder.mechanical_pump_flow.text_2": "Когда работает, стрелка указывает направление потока", - "create.ponder.mechanical_pump_flow.text_3": "Часть сети сзади теперь качает жидкости...", - "create.ponder.mechanical_pump_flow.text_4": "...в то время как часть сети спереди передаёт их наружу", + "create.ponder.mechanical_pump_flow.text_3": "Часть трубопровода сзади теперь качает жидкости...", + "create.ponder.mechanical_pump_flow.text_4": "...в то время как часть трубопровода спереди передаёт их наружу", "create.ponder.mechanical_pump_flow.text_5": "Смена направления вращения изменяет направление потока", - "create.ponder.mechanical_pump_flow.text_6": "Используйте гаечный ключ, чтобы изменить направление помпы вручную", + "create.ponder.mechanical_pump_flow.text_6": "Используйте Гаечный ключ, чтобы изменить направление Помпы вручную", - "create.ponder.mechanical_pump_speed.header": "Производительностью Механических помп", - "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на трубы в радиусе 16 блоков", + "create.ponder.mechanical_pump_speed.header": "Производительностью Механической помпы", + "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на Трубы в радиусе 16 блоков", "create.ponder.mechanical_pump_speed.text_2": "Ускорение подаваемого вращения изменяет скорость распространения потоков...", "create.ponder.mechanical_pump_speed.text_3": "...также, как и скорость передачи жидкостей", - "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в общих сетях труб", + "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в одних трубопроводах", "create.ponder.mechanical_pump_speed.text_5": "Изменение их направления может помочь сонаправить направление их потоков", - "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механической пилой", + "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механическими пилами", "create.ponder.mechanical_saw_breaker.text_1": "При подаче вращения, Механическая пила будет пилить деревья прямо перед ней", - "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать последний блок дерева, соединённый с землёй", + "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать самый нижний блок дерева, соединённый с землёй", "create.ponder.mechanical_saw_contraption.header": "Использованием Механических пил на штуковинах", "create.ponder.mechanical_saw_contraption.text_1": "Когда пилы движутся как часть движимой штуковины...", "create.ponder.mechanical_saw_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механической пиле", + "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механических пилах", "create.ponder.mechanical_saw_processing.text_1": "Направленные вверх Механические пилы могут обрабатывать множество предметов", "create.ponder.mechanical_saw_processing.text_2": "Обработанные предметы всегда движутся против подаваемого на пилу вращения", - "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с Механическими ремнями (конвейером)", + "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с конвейером", "create.ponder.mechanical_saw_processing.text_4": "Когда из ингредиента можно получить несколько результатов, фильтр может уточнить его", "create.ponder.mechanical_saw_processing.text_5": "Без фильтра пила будет выбирать все возможные результаты по очереди", "create.ponder.millstone.header": "Обработкой предметов Жерновами", "create.ponder.millstone.text_1": "Жернова обрабатывают предметы перемалывая их", - "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны", - "create.ponder.millstone.text_3": "Бросьте или внесите предметы сверху", + "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны или валом снизу", + "create.ponder.millstone.text_3": "Бросьте или положите предметы сверху", "create.ponder.millstone.text_4": "После некоторого времени результат можно забрать при помощи ПКМ", - "create.ponder.millstone.text_5": "Продукты также можно вывести автоматически", + "create.ponder.millstone.text_5": "Продукты помола также можно вывести автоматически", "create.ponder.nixie_tube.header": "Использованием Газоразрядных индикаторов", - "create.ponder.nixie_tube.text_1": "При подаче редстоун сигнала, Газоразрядные индикаторы отобразят его силу.", - "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст.", - "create.ponder.nixie_tube.text_3": "Щелкните ПКМ с красителем, чтобы изменить цвет их дисплея", + "create.ponder.nixie_tube.text_1": "При подаче редстоун-сигнала, Газоразрядные индикаторы отобразят его силу", + "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст", + "create.ponder.nixie_tube.text_3": "Щёлкните ПКМ с красителем, чтобы изменить цвет их индикаторов", "create.ponder.piston_pole.header": "Удлинителями Механического поршня", "create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться", - "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.", + "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к задней части Механического поршня, определяет диапазон выдвижения", "create.ponder.portable_fluid_interface.header": "Портативным жидкостным интерфейсом на штуковинах", "create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны никаким трубам", @@ -2714,31 +2716,31 @@ "create.ponder.portable_storage_interface.text_7": "...или вывести их из штуковины", "create.ponder.portable_storage_interface.text_8": "Если на какое-то время прекратится обмен предметами — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса редстоуном", - "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса", + "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса хранения редстоун-сигналом", + "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун-сигнал предотвратит включение Портативного интерфейса", - "create.ponder.powered_latch.header": "Управлением сигналами при помощи Питаемого рычага", + "create.ponder.powered_latch.header": "Управлением редстоун-сигналами при помощи Питаемого рычага", "create.ponder.powered_latch.text_1": "Питаемый рычаг — управляемый редстоуном рычаг", "create.ponder.powered_latch.text_2": "Сигнал сзади включает его", - "create.ponder.powered_latch.text_3": "Сигналы сбоку обратно выключают его", + "create.ponder.powered_latch.text_3": "Сигналы сбоку, обратно, выключают его", "create.ponder.powered_latch.text_4": "Питаемые рычаги также можно переключать вручную", - "create.ponder.powered_toggle_latch.header": "Управлением сигналами при помощи Питаемого рычага-переключателя", + "create.ponder.powered_toggle_latch.header": "Управлением редстоун-сигналами при помощи Питаемого рычага-переключателя", "create.ponder.powered_toggle_latch.text_1": "Питаемый рычаг-переключатель — управляемый редстоуном рычаг", - "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние", + "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние...", "create.ponder.powered_toggle_latch.text_3": "...включают и снова выключают", "create.ponder.powered_toggle_latch.text_4": "Питаемые рычаги-переключатели также можно переключать вручную", "create.ponder.pulse_extender.header": "Использованием Редстоуновых удлинителей импульса", - "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстоуна, проходящего через него", + "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность редстоун-сигнала, проходящего через него", "create.ponder.pulse_extender.text_2": "Он активируется после небольшой задержки...", "create.ponder.pulse_extender.text_3": "...и выключается через настраиваемое время", - "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя", + "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя импульса", "create.ponder.pulse_extender.text_5": "Можно настроить задержку вплоть до 30 минут", "create.ponder.pulse_repeater.header": "Использованием Редстоуновых повторителей импульса", - "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстоуна до одного импульса", - "create.ponder.pulse_repeater.text_2": "С помощь колёсика мыши можно настроить время Импульсного повторителя", + "create.ponder.pulse_repeater.text_1": "Повторители импульса укоротят любой поступающий редстоун-сигнал до одного импульса", + "create.ponder.pulse_repeater.text_2": "С помощь прокрутки можно настроить время Повторителя импульса", "create.ponder.pulse_repeater.text_3": "Можно настроить задержку вплоть до 30 минут", "create.ponder.radial_chassis.header": "Присоединением блоков при помощи Радиальных шасси", @@ -2746,21 +2748,21 @@ "create.ponder.radial_chassis.text_2": "Когда один блок перемещается штуковиной, остальные двигаются с ним", "create.ponder.radial_chassis.text_3": "Боковые грани Радиального шасси можно сделать липкими", "create.ponder.radial_chassis.text_4": "Кликните ещё раз, чтобы сделать все остальные грани липкими", - "create.ponder.radial_chassis.text_5": "Нажмите Shift+ПКМ пустой рукой, чтобы убрать слизь", + "create.ponder.radial_chassis.text_5": "Нажмите ПКМ крадучись пустой рукой, чтобы убрать слизь", "create.ponder.radial_chassis.text_6": "Когда блок находится рядом с липкой гранью...", - "create.ponder.radial_chassis.text_7": "он присоединит все достижимые блоки в пределах радиуса на этом слое", - "create.ponder.radial_chassis.text_8": "При помощи ключа можно указать точный радиус для этого шасси", + "create.ponder.radial_chassis.text_7": "...он присоединит все достижимые блоки в пределах радиуса на этом слое", + "create.ponder.radial_chassis.text_8": "При помощи Гаечного ключа можно указать точный радиус для этого шасси", "create.ponder.radial_chassis.text_9": "Блоки не достижимые ни одной липкой гранью не прикрепятся", "create.ponder.redstone_contact.header": "Использованием Редстоуновых контактов", - "create.ponder.redstone_contact.text_1": "Редстоуновые контакты направленные друг на друга будут излучать редстоун сигнал", + "create.ponder.redstone_contact.text_1": "Редстоуновые контакты, направленные друг на друга, будут излучать редстоун-сигнал", "create.ponder.redstone_contact.text_2": "Также работает, когда один из них — часть двигающейся штуковины", - "create.ponder.redstone_link.header": "Использованием Редстоунового беспроводного передатчика сигнала", - "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун сигнал без проводов", - "create.ponder.redstone_link.text_2": "Нажмите Shift+ПКМ, чтобы переключить режим приёмника", - "create.ponder.redstone_link.text_3": "ПКМ ключом сделает то же самое", - "create.ponder.redstone_link.text_4": "Приёмники улавливают редстоун сигнал передатчиков в радиусе 128 блоков", + "create.ponder.redstone_link.header": "Использованием Редстоуновых беспроводных передатчиков сигнала", + "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун-сигнал без проводов", + "create.ponder.redstone_link.text_2": "Нажмите ПКМ крадучись, чтобы переключить режим приёмника", + "create.ponder.redstone_link.text_3": "ПКМ Гаечным ключом сделает то же самое", + "create.ponder.redstone_link.text_4": "Приёмники улавливают редстоун-сигнал передатчиков в радиусе 128 блоков", "create.ponder.redstone_link.text_5": "Положите предметы в два слота, чтобы указать частоту", "create.ponder.redstone_link.text_6": "Передатчики только одной частоты могут сообщаться", @@ -2768,7 +2770,7 @@ "create.ponder.rope_pulley.text_1": "Лебёдки могут двигать блоки вертикально при подаче вращения", "create.ponder.rope_pulley.text_2": "Направление и скорость движения зависят от исходного вращения", - "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковины", + "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковин", "create.ponder.rope_pulley_attachment.text_1": "Когда лебёдки перемещаются штуковиной...", "create.ponder.rope_pulley_attachment.text_2": "...их присоединённая структура движется с ними", "create.ponder.rope_pulley_attachment.text_3": "Учитывайте, что лебёдки можно выдвигать только пока они простаивают", @@ -2778,14 +2780,14 @@ "create.ponder.rope_pulley_modes.text_2": "Можно настроить её так, чтобы структура никогда не становилась блоками или только на начальной позиции", "create.ponder.rose_quartz_lamp.header": "Особенностями Фонаря из розового кварца", - "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по сигналу редстоуна", + "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по редстоун-сигналу", "create.ponder.rose_quartz_lamp.text_2": "После этого он сам станет источником сигнала", "create.ponder.rose_quartz_lamp.text_3": "Когда несколько Фонарей расположены в группе...", "create.ponder.rose_quartz_lamp.text_4": "...активация одного из Фонарей, сфокусирует сигнал на нём, деактивируя все остальные", "create.ponder.rose_quartz_lamp.text_5": "Компараторы выводят сигнал исходя из дистанции до ближайшего включённого Фонаря", "create.ponder.rose_quartz_lamp.text_6": "Фонари также можно переключать вручную с помощью Гаечного ключа", - "create.ponder.rotation_speed_controller.header": "Использованием Регулятора скорости вращения", + "create.ponder.rotation_speed_controller.header": "Использованием Регуляторов скорости вращения", "create.ponder.rotation_speed_controller.text_1": "Регуляторы скорости вращения передают вращение от своих осей на Большую шестерню выше них", "create.ponder.rotation_speed_controller.text_2": "Можно настроить передаваемую скорость при помощи прокрутки по соответствующему месту сбоку", @@ -2799,43 +2801,43 @@ "create.ponder.sail_frame.text_1": "Рамы парусов — удобные блоки для создания мельниц", "create.ponder.sail_frame.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", - "create.ponder.sequenced_gearshift.header": "Использованием Последовательной коробки передач", + "create.ponder.sequenced_gearshift.header": "Использованием Последовательных коробок передач", "create.ponder.sequenced_gearshift.text_1": "Последовательная коробка передач передает вращение по списку заданных инструкций", "create.ponder.sequenced_gearshift.text_2": "ПКМ, чтобы отрыть интерфейс для настройки", - "create.ponder.sequenced_gearshift.text_3": "При получении Редстоун сигнала, он начнёт выполнять заданные инструкции по порядку", - "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего Редстоун сигнала и начнёт сначала", - "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можно использовать для считывания текущего прогресса выполнения инструкций", + "create.ponder.sequenced_gearshift.text_3": "При получении редстоун-сигнал, он начнёт выполнять заданные инструкции по порядку", + "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего сигнала и начнёт сначала", + "create.ponder.sequenced_gearshift.text_5": "Можно использовать компаратор для считывания текущего прогресса выполнения инструкций", "create.ponder.shaft.header": "Передачей силы вращения при помощи Валов", "create.ponder.shaft.text_1": "Валы передают вращение по прямой", "create.ponder.shaft_casing.header": "Обрамлением Валов", - "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для декорации Валов", + "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для обрамления Валов", "create.ponder.smart_chute.header": "Фильтрацией предметов при помощи Умных желобов", "create.ponder.smart_chute.text_1": "Умные желоба — вертикальные желоба с дополнительным контролем", "create.ponder.smart_chute.text_2": "Предметы в слоте фильтра уточняют, что они могут забирать и передавать", "create.ponder.smart_chute.text_3": "Используйте Колесо Мыши для уточнения размера забираемого стака", - "create.ponder.smart_chute.text_4": "Редстоун сигнал выключает их", + "create.ponder.smart_chute.text_4": "Редстоун-сигнал выключает их", "create.ponder.smart_pipe.header": "Управлением жидкостным потоком с помощью Умных труб", "create.ponder.smart_pipe.text_1": "Умные трубы могут помочь управлять потоками по типам жидкостей", - "create.ponder.smart_pipe.text_2": "Размещенные непосредственно у источника, они могут указывать тип извлекаемой жидкости", - "create.ponder.smart_pipe.text_3": "Просто щелкните ПКМ на слоте фильтра с любым предметом, содержащим нужную жидкость", - "create.ponder.smart_pipe.text_4": "И при размещении глубже по сети труб умные трубы будут пропускать только подходящие жидкости.", + "create.ponder.smart_pipe.text_2": "Размещённые непосредственно у источника, они могут указывать тип извлекаемой жидкости", + "create.ponder.smart_pipe.text_3": "Просто щёлкните ПКМ по слоту фильтра с любым предметом, содержащим нужную жидкость", + "create.ponder.smart_pipe.text_4": "И при размещении дальше по трубопроводу Умные трубы будут пропускать только подходящие жидкости", "create.ponder.speedometer.header": "Мониторингом кинетической информации при помощи Спидометра", "create.ponder.speedometer.text_1": "Спидометры отображают текущую скорость присоединённых компонентов", "create.ponder.speedometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", - "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый Редстоун сигнал относительно измерений спидометра", + "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый редстоун-сигнал относительно измерений Спидометра", "create.ponder.spout_filling.header": "Наполнением предметов при помощи Дозатора", "create.ponder.spout_filling.text_1": "Дозатор может заполнять подходящие предметы, расположенные под ним", - "create.ponder.spout_filling.text_2": "К содержимому дозатора невозможно получить доступ вручную", + "create.ponder.spout_filling.text_2": "К содержимому Дозатора невозможно получить доступ вручную", "create.ponder.spout_filling.text_3": "Вместо этого можно использовать трубы для подачи в него жидкостей", "create.ponder.spout_filling.text_4": "Наполняемые предметы могут быть размещены на депо под дозатором", "create.ponder.spout_filling.text_5": "Когда предметы подаются конвейером...", - "create.ponder.spout_filling.text_6": "Дозатор будет удерживать и обрабатывать их автоматически", + "create.ponder.spout_filling.text_6": "...Дозатор будет удерживать и обрабатывать их автоматически", "create.ponder.stabilized_bearings.header": "Стабилизацией Штуковин", "create.ponder.stabilized_bearings.text_1": "Когда Механические подшипники являются частью двигающейся структуры...", @@ -2843,14 +2845,14 @@ "create.ponder.stabilized_bearings.text_3": "Опять же, подшипники присоединяют блоки перед ними", "create.ponder.stabilized_bearings.text_4": "И в результате целая под-структура будет держаться ровно", - "create.ponder.steam_engine.header": "Настройкой Паровых двигателей", + "create.ponder.steam_engine.header": "Генерацией силы вращения Паровыми двигателями", "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на Жидкостном баке", "create.ponder.steam_engine.text_10": "4 уровень", "create.ponder.steam_engine.text_11": "4 двигателя", "create.ponder.steam_engine.text_12": "8 уровень", "create.ponder.steam_engine.text_13": "8 двигателей", "create.ponder.steam_engine.text_2": "Нажмите по Двигателю Валом в руке, чтобы создать выход кинетической энергии", - "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и размером котла...", + "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и объёмом котла...", "create.ponder.steam_engine.text_4": "...они будут генерировать вращательную силу", "create.ponder.steam_engine.text_5": "Для минимальной установки требуется 4 Жидкостных бака", "create.ponder.steam_engine.text_6": "С помощью Горелки всполоха можно увеличить выходную мощность", @@ -2866,16 +2868,16 @@ "create.ponder.steam_whistle.text_5": "Переключайтесь между тремя разными октавами с помощью Гаечного ключа", "create.ponder.steam_whistle.text_6": "Инженерные очки помогут узнать текущую высоту звука", - "create.ponder.sticker.header": "Прикреплением блоков при помощи Липучки", - "create.ponder.sticker.text_1": "Липучки идеально подходят для Редстоун-управляемого присоединения блоков", - "create.ponder.sticker.text_2": "При получении сигнала они переключают своё состояние", - "create.ponder.sticker.text_3": "Если он теперь движется в штуковине, то блок будет двигаться с ним", - "create.ponder.sticker.text_4": "При повторном переключении блок больше не будет прикреплён", + "create.ponder.sticker.header": "Прикреплением блоков при помощи Блоков-липучек", + "create.ponder.sticker.text_1": "Блоки-липучки идеально подходят для редстоун-управляемого присоединения блоков", + "create.ponder.sticker.text_2": "При получении редстоун-сигнала они переключают своё состояние", + "create.ponder.sticker.text_3": "Если он движется в штуковине, то блок будет двигаться с ним", + "create.ponder.sticker.text_4": "При повторном сигнале блок больше не будет прикреплён", "create.ponder.stressometer.header": "Мониторингом кинетической информации при помощи Стрессометра", "create.ponder.stressometer.text_1": "Стрессометр отображает текущую допустимую нагрузку присоединённой кинетической сети", "create.ponder.stressometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", - "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун сигнал относительно измерений стрессометра", + "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун-сигнал относительно измерений стрессометра", "create.ponder.super_glue.header": "Присоединением блоков при помощи Суперклея", "create.ponder.super_glue.text_1": "Суперклей можно использовать между двумя любыми блоками", @@ -2888,7 +2890,7 @@ "create.ponder.track_chunks.header": "Пересечением поездом незагруженных чанков", "create.ponder.track_chunks.text_1": "Железнодорожные пути остаются функциональными вне загруженных чанков", "create.ponder.track_chunks.text_2": "Поезда будут путешествовать по неактивным участкам мира без каких либо проблем", - "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или красных сигналах Светофора", + "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или запрещающих сигналах Светофора", "create.ponder.track_chunks.text_4": "Однако дрели и другие машины на борту работать не будут", "create.ponder.track_chunks.text_5": "Оказавшись рядом с игроком, поезд снова появится", @@ -2910,15 +2912,15 @@ "create.ponder.track_portal.header": "Железнодорожными путями и портале Незера", "create.ponder.track_portal.text_1": "Пути, размещённые напротив портала Незера...", "create.ponder.track_portal.text_2": "...попытаются создать Пути на другой стороне", - "create.ponder.track_portal.text_3": "Поезда на этом пути теперь могут путешествовать по измерениям", + "create.ponder.track_portal.text_3": "Теперь поезда на данном направлении могут путешествовать по измерениям", - "create.ponder.train_assembly.header": "Сборкой поездов", + "create.ponder.train_assembly.header": "Сборкой поездов на Железнодорожных станциях", "create.ponder.train_assembly.text_1": "Выберите участок Железнодорожных путей, затем разместите рядом Станцию", "create.ponder.train_assembly.text_10": "Каждый поезд требует Контроллер поезда на борту", "create.ponder.train_assembly.text_11": "Дополнительный Контроллер позволяет отправляться со Станций в обоих направлениях", "create.ponder.train_assembly.text_12": "Откройте интерфейс Станции и подтвердите процесс сборки", "create.ponder.train_assembly.text_13": "Поезда можно разобрать обратно на блоки только на Станциях", - "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит на неё маркер этого места", + "create.ponder.train_assembly.text_14": "Использование на Станции карты — добавит на неё станционный маркер", "create.ponder.train_assembly.text_15": "Собранные поезда можно перемещать на ближайшие пути с помощью Гаечного ключа", "create.ponder.train_assembly.text_2": "Станции — это путевые точки вашей железнодорожной сети", "create.ponder.train_assembly.text_3": "Чтобы создать новый поезд, откройте интерфейс Станции и переключитесь в режим сборки", @@ -2929,99 +2931,99 @@ "create.ponder.train_assembly.text_8": "Собранные поезда будут двигаться быстрее, если они смогут найти топливо в прикреплённых сундуках или бочках", "create.ponder.train_assembly.text_9": "Топливо, находящееся в Хранилищах, не будет потребляться поездом", - "create.ponder.train_controls.header": "Управлением поездами", - "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой Железнодорожной штуковине", + "create.ponder.train_controls.header": "Управлением поездами с помощью Контроллера поезда", + "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой железнодорожной штуковине", "create.ponder.train_controls.text_2": "После сборки щёлкните ПКМ по блоку, чтобы начать движение", "create.ponder.train_controls.text_3": "Ускоряйте и управляйте поездом, используя клавиши движения", "create.ponder.train_controls.text_4": "При желании максимальную тягу можно настроить с помощью колёсика мыши", "create.ponder.train_controls.text_5": "Удерживайте Пробел, чтобы прибыть на Станцию рядом", "create.ponder.train_controls.text_6": "Поезда можно разобрать обратно на блоки только на Станциях", "create.ponder.train_controls.text_7": "Прикреплённые Свистки можно активировать клавишей бега", - "create.ponder.train_controls.text_8": "Нажмите Shift или кликните снова, чтобы перестать управлять поездом", + "create.ponder.train_controls.text_8": "Нажмите левый Shift или ПКМ по Контроллеру, чтобы перестать управлять поездом", "create.ponder.train_schedule.header": "Использованием Расписаний поездов", "create.ponder.train_schedule.text_1": "Расписания позволяют другим машинистам управлять поездами", - "create.ponder.train_schedule.text_2": "Щелкните ПКМ с предметом в руке, чтобы открыть его интерфейс", + "create.ponder.train_schedule.text_2": "Щёлкните ПКМ с предметом в руке, чтобы открыть его интерфейс", "create.ponder.train_schedule.text_3": "После составления расписание может быть передано машинисту поезда", "create.ponder.train_schedule.text_4": "Любой моб или Горелка всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", "create.ponder.train_schedule.text_5": "С помощью поводка можно легче усадить потенциального машиниста на его место", - "create.ponder.train_schedule.text_6": "Расписания можно забирать у машинистов в любой момент времени", + "create.ponder.train_schedule.text_6": "Расписания можно отзывать от машинистов в любой момент времени", "create.ponder.train_signal_placement.header": "Размещением Железнодорожных светофоров", "create.ponder.train_signal_placement.text_1": "Выберите Железнодорожный путь, затем разместите Светофор поблизости", "create.ponder.train_signal_placement.text_2": "Светофоры регулируют поток поездов, которые управляются не игроками", - "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать сигналы в противоположном направлении", - "create.ponder.train_signal_placement.text_4": "...если не добавлен второй Светофор, направленный в противоположную сторону", - "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигнальные огни более заметными", + "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать Светофоры в противоположном направлении...", + "create.ponder.train_signal_placement.text_4": "...если не был добавлен второй Светофор, направленный в противоположную сторону", + "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать их сигнальные огни более заметными", - "create.ponder.train_signal_redstone.header": "Железнодорожными светофорами и редстоуне", - "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоуна", - "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает сигнал редстоуна, получаемый компаратором", + "create.ponder.train_signal_redstone.header": "Железнодорожным светофором и редстоун-сигнале", + "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоун-сигнала", + "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает редстоун-сигнал, получаемый компаратором", "create.ponder.train_signal_signaling.header": "Предотвращением аварий с помощью Железнодорожных светофоров", "create.ponder.train_signal_signaling.text_1": "Светофоры делят пути на сегменты", "create.ponder.train_signal_signaling.text_2": "Если сегмент занят — проезд другим поездам запрещён", "create.ponder.train_signal_signaling.text_3": "Таким образом, каждый сегмент будет содержать только один поезд одновременно", "create.ponder.train_signal_signaling.text_4": "Второй режим Светофора доступен через переключение Гаечным ключом", - "create.ponder.train_signal_signaling.text_5": "Сегменты жёлтого сигнала обычно переходят в стандартные сигналы", + "create.ponder.train_signal_signaling.text_5": "Сегменты латунного Светофора обычно переходят в режим стандартного Светофора автоматически", "create.ponder.train_signal_signaling.text_6": "Этот особый сигнал может останавливать поезда при втором условии", "create.ponder.train_signal_signaling.text_7": "Он остановит поезда, которые при подъезде...", "create.ponder.train_signal_signaling.text_8": "...не смогут сразу покинуть сегмент", "create.ponder.train_signal_signaling.text_9": "Это помогает удерживать поезда, стоящие в очереди, вне загруженного сегмента", - "create.ponder.valve_handle.header": "Генерацией силы вращения при помощи Вентилей", - "create.ponder.valve_handle.text_1": "Игроки могут использовать вентили для применения силы вращения вручную", - "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против Часовой стрелки", - "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и точная", - "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по Часовой стрелке", + "create.ponder.valve_handle.header": "Генерацией силы вращения Вентилями", + "create.ponder.valve_handle.text_1": "Игроки могут использовать Вентили для применения силы вращения вручную", + "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против часовой стрелки", + "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и поступательная", + "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по часовой стрелке", "create.ponder.valve_handle.text_5": "Вентили можно окрашивать в эстетических целях", - "create.ponder.valve_pipe.header": "Управлением потоком жидкости с помощью Жидкостных клапанов", + "create.ponder.valve_pipe.header": "Управлением потоком с помощью Жидкостных клапанов", "create.ponder.valve_pipe.text_1": "Жидкостные клапаны помогают контролировать распространение жидкостей по трубопроводу", "create.ponder.valve_pipe.text_2": "Их входной вал контролирует, разрешена ли подача жидкости в данный момент", "create.ponder.valve_pipe.text_3": "При вращении в нужном направлении — клапан откроется", "create.ponder.valve_pipe.text_4": "Его можно снова закрыть, изменив направление вращения", - "create.ponder.water_wheel.header": "Генерацией силы вращения при помощи Водяных колёс", + "create.ponder.water_wheel.header": "Генерацией силы вращения Водяными колёс", "create.ponder.water_wheel.text_1": "Водяные колёса берут силу соседних потоков воды", "create.ponder.water_wheel.text_2": "Чем больше сторон запитано, тем быстрее будет вращаться Водяное колесо", "create.ponder.water_wheel.text_3": "Лопасти колеса должны быть направлены против течения", "create.ponder.water_wheel.text_4": "Направленное в противоположную сторону, не будет так же эффективно", "create.ponder.weighted_ejector.header": "Использованием Взвешенных катапульт", - "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа катапульту, чтобы выбрать место цели", + "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа Катапульту, чтобы выбрать место цели", "create.ponder.weighted_ejector.text_10": "Теперь она ограниченна этим размера стака и будет активироваться только тогда, когда удерживаемый стак достигнет этого количества", "create.ponder.weighted_ejector.text_11": "Другие сущности, встав на катапульту, будут всегда активировать её", - "create.ponder.weighted_ejector.text_2": "Установленная катапульта будет запускать объекты до отмеченного места", + "create.ponder.weighted_ejector.text_2": "Установленная Катапульта будет запускать объекты до отмеченного места", "create.ponder.weighted_ejector.text_3": "Подходящая цель может быть на любой дистанции и высоте в радиусе", "create.ponder.weighted_ejector.text_4": "Однако они не могут быть сбоку", "create.ponder.weighted_ejector.text_5": "Если не было выбрано подходящей цели, она будет целиться в блок перед ней", "create.ponder.weighted_ejector.text_6": "Предоставьте силу вращения, чтобы зарядить её", - "create.ponder.weighted_ejector.text_7": "Попадание предметов на катапульту вызывает её срабатывание", - "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место.", - "create.ponder.weighted_ejector.text_9": "При помощи Ключа можно настроить необходимый размер стака", + "create.ponder.weighted_ejector.text_7": "Попадание предметов на Катапульту вызывает её срабатывание", + "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место", + "create.ponder.weighted_ejector.text_9": "При помощи Гаечного ключа можно настроить необходимый размер стака", - "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенными катапультами редстоуном", - "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун сигнала катапульты не будут активироваться", + "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенной катапультой редстоун-сигналом", + "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун-сигнала катапульты не будут активироваться", "create.ponder.weighted_ejector_redstone.text_2": "Кроме того, наблюдатели могут определить, когда катапульты срабатывают", - "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенных катапульт", + "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенной катапульты", "create.ponder.weighted_ejector_tunnel.text_1": "Объединённые с Латунными туннелями, катапульты могут делить стаки предметов по определённому количеству", - "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайшее», чтобы приоритизировать выход сбоку", + "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайший», чтобы приоритизировать выход сбоку", "create.ponder.weighted_ejector_tunnel.text_3": "Размер стака, установленный на катапульте, теперь определяет отделяемое количество", "create.ponder.weighted_ejector_tunnel.text_4": "Пока новый стак нужного количества лежит на боковом выходе...", "create.ponder.weighted_ejector_tunnel.text_5": "...остаток продолжит свой путь", - "create.ponder.windmill_source.header": "Генерацией силы вращения при помощи Подшипников ветряной мельницы", + "create.ponder.windmill_source.header": "Генерацией силы вращения Подшипниками ветряной мельницы", "create.ponder.windmill_source.text_1": "Подшипники ветряной мельницы прикрепляются к блокам перед ними", "create.ponder.windmill_source.text_2": "Если прикреплено достаточно парусоподобных блоков, он может стать мельницей", - "create.ponder.windmill_source.text_3": "Активированный при помощи ПКМ, Подшипник ветр. мельницы начнёт вырабатывать силу вращения", + "create.ponder.windmill_source.text_3": "Активированный, при помощи ПКМ, Подшипник ветряной мельницы начнёт вырабатывать силу вращения", "create.ponder.windmill_source.text_4": "Количество парусов определяет скорость вращения", - "create.ponder.windmill_source.text_5": "Используйте ключ, чтобы настроить направление вращения", + "create.ponder.windmill_source.text_5": "Используйте Гаечный ключ, чтобы настроить направление вращения", "create.ponder.windmill_source.text_6": "ПКМ по подшипнику в любое время, чтобы остановить его и изменить структуру", - "create.ponder.windmill_source.text_7": "Щелкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", + "create.ponder.windmill_source.text_7": "Щёлкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", - "create.ponder.windmill_structure.header": "Установкой Ветряных мельниц", + "create.ponder.windmill_structure.header": "Установкой Ветряной мельницы", "create.ponder.windmill_structure.text_1": "Любая структура может считаться мельницей, пока она содержит как минимум 8 парусоподобных блоков", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 3bd7b8953..94152cfd6 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 984", + "_": "Missing Localizations: 986", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", 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 03c8d3828..f4be7ff19 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: 2", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,8 +1260,8 @@ "create.item_attributes.smokable.inverted": "不可被烟熏", "create.item_attributes.blastable": "可被高炉冶炼", "create.item_attributes.blastable.inverted": "不可被高炉冶炼", - "create.item_attributes.compostable": "UNLOCALIZED: can be composted", - "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", + "create.item_attributes.compostable": "可被堆肥", + "create.item_attributes.compostable.inverted": "不可被堆肥", "create.item_attributes.shulker_level": "潜影盒是%1$s的", "create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的", "create.item_attributes.shulker_level.full": "满", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "恰好", "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s%3$s", "create.schedule.condition.threshold.matching_content": "匹配内容", + "create.schedule.condition.threshold.anything": "任意物品", "create.schedule.condition.threshold.item_measure": "物品度量", "create.schedule.condition.threshold.items": "个", "create.schedule.condition.threshold.stacks": "组", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "货物:%1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "参考物品", "create.schedule.condition.threshold.place_item_2": "可以使用过滤器", + "create.schedule.condition.threshold.place_item_3": "留空以匹配任意物品", "create.schedule.condition.fluid_threshold": "流体货物条件", "create.schedule.condition.item_threshold": "物品货物条件", "create.schedule.condition.redstone_link": "无线红石", 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 2ee8e9a6c..1af6b480c 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: 6", + "_": "Missing Localizations: 8", "_": "->------------------------] Game Elements [------------------------<-", @@ -1485,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "剛好", "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s", "create.schedule.condition.threshold.matching_content": "比對內容", + "create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything", "create.schedule.condition.threshold.item_measure": "物品單位", "create.schedule.condition.threshold.items": "個", "create.schedule.condition.threshold.stacks": "組", @@ -1492,6 +1493,7 @@ "create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "參考物品", "create.schedule.condition.threshold.place_item_2": "可以使用過濾器", + "create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any", "create.schedule.condition.fluid_threshold": "流體貨物條件", "create.schedule.condition.item_threshold": "物品貨物條件", "create.schedule.condition.redstone_link": "無線紅石連接", diff --git a/src/generated/resources/data/create/tags/blocks/tree_attachments.json b/src/generated/resources/data/create/tags/blocks/tree_attachments.json new file mode 100644 index 000000000..dc79f54a0 --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/tree_attachments.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "minecraft:bee_nest", + "minecraft:vine", + "minecraft:moss_carpet", + "minecraft:shroomlight", + "minecraft:cocoa" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index a513e70d0..facf15ed9 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -124,6 +124,7 @@ public class AllTags { WINDMILL_SAILS, WINDOWABLE, WRENCH_PICKUP, + TREE_ATTACHMENTS, RELOCATION_NOT_SUPPORTED(FORGE), WG_STONE(FORGE), @@ -414,6 +415,9 @@ public class AllTags { Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER); + AllBlockTags.TREE_ATTACHMENTS.add(Blocks.BEE_NEST, Blocks.VINE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT, + Blocks.COCOA); + AllBlockTags.ORE_OVERRIDE_STONE.includeAll(BlockTags.STONE_ORE_REPLACEABLES); registerCompat(); diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 20d4d3082..99ee30c01 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -66,7 +66,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.5d"; + public static final String VERSION = "0.5e"; public static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index d70a09af5..22f20cead 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -186,6 +186,7 @@ public class CreateJEI implements IModPlugin { .build("automatic_shapeless", MixingCategory::autoShapeless), brewing = builder(BasinRecipe.class) + .enableWhen(c -> c.allowBrewingInMixer) .addRecipes(() -> PotionMixingRecipes.ALL) .catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.BASIN::get) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java index dee22e4ba..1162e9835 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java @@ -3,23 +3,19 @@ package com.simibubi.create.content.contraptions.components.actors; import java.util.concurrent.atomic.AtomicInteger; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; -import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.block.AirBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.Vec3; public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { @@ -40,7 +36,7 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { if (destroyProgress == -1) destroyNextTick(); } - + @Override public void lazyTick() { super.lazyTick(); @@ -93,9 +89,9 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { return; if (getSpeed() == 0) return; - + breakingPos = getBreakingPos(); - + if (ticksUntilNextProgress < 0) return; if (ticksUntilNextProgress-- > 0) @@ -114,7 +110,8 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { float breakSpeed = getBreakSpeed(); destroyProgress += Mth.clamp((int) (breakSpeed / blockHardness), 1, 10 - destroyProgress); - level.playSound(null, worldPosition, stateToBreak.getSoundType().getHitSound(), SoundSource.NEUTRAL, .25f, 1); + level.playSound(null, worldPosition, stateToBreak.getSoundType() + .getHitSound(), SoundSource.NEUTRAL, .25f, 1); if (destroyProgress >= 10) { onBlockBroken(stateToBreak); @@ -133,28 +130,26 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { } public static boolean isBreakable(BlockState stateToBreak, float blockHardness) { - return !(stateToBreak.getMaterial().isLiquid() || stateToBreak.getBlock() instanceof AirBlock - || blockHardness == -1); + return !(stateToBreak.getMaterial() + .isLiquid() || stateToBreak.getBlock() instanceof AirBlock || blockHardness == -1); } public void onBlockBroken(BlockState stateToBreak) { - FluidState FluidState = level.getFluidState(breakingPos); - level.levelEvent(2001, breakingPos, Block.getId(stateToBreak)); - BlockEntity tileentity = stateToBreak.hasBlockEntity() ? level.getBlockEntity(breakingPos) : null; Vec3 vec = VecHelper.offsetRandomly(VecHelper.getCenterOf(breakingPos), level.random, .125f); - - Block.getDrops(stateToBreak, (ServerLevel) level, breakingPos, tileentity).forEach((stack) -> { - if (!stack.isEmpty() && level.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS) - && !level.restoringBlockSnapshots) { - ItemEntity itementity = new ItemEntity(level, vec.x, vec.y, vec.z, stack); - itementity.setDefaultPickUpDelay(); - itementity.setDeltaMovement(Vec3.ZERO); - level.addFreshEntity(itementity); - } + BlockHelper.destroyBlock(level, breakingPos, 1f, (stack) -> { + if (stack.isEmpty()) + return; + if (!level.getGameRules() + .getBoolean(GameRules.RULE_DOBLOCKDROPS)) + return; + if (level.restoringBlockSnapshots) + return; + + ItemEntity itementity = new ItemEntity(level, vec.x, vec.y, vec.z, stack); + itementity.setDefaultPickUpDelay(); + itementity.setDeltaMovement(Vec3.ZERO); + level.addFreshEntity(itementity); }); - if (level instanceof ServerLevel) - stateToBreak.spawnAfterBreak((ServerLevel) level, breakingPos, ItemStack.EMPTY); - level.setBlock(breakingPos, FluidState.createLegacyBlock(), 3); } protected float getBreakSpeed() { 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 65b099ea7..70771c429 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 @@ -58,6 +58,8 @@ public class BlockBreakingMovementBehaviour implements MovementBehaviour { continue; if (entity instanceof AbstractContraptionEntity) continue; + if (entity.isPassengerOfSameVehicle(context.contraption.entity)) + continue; if (entity instanceof AbstractMinecart) for (Entity passenger : entity.getIndirectPassengers()) if (passenger instanceof AbstractContraptionEntity diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index 9360166dc..53e6acefc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -104,7 +104,8 @@ public class HarvesterMovementBehaviour implements MovementBehaviour { dropItem(context, stack); }); - world.setBlockAndUpdate(pos, cutCrop(world, pos, stateVisited)); + BlockState cutCrop = cutCrop(world, pos, stateVisited); + world.setBlockAndUpdate(pos, cutCrop.canSurvive(world, pos) ? cutCrop : Blocks.AIR.defaultBlockState()); } public boolean isValidCrop(Level world, BlockPos pos, BlockState state) { 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 1cca39d6b..9f95c0652 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,6 +2,7 @@ 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.logistics.trains.ITrackBlock; import com.simibubi.create.content.logistics.trains.track.FakeTrackBlock; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.VecHelper; @@ -105,6 +106,8 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { return false; if (state.getBlock() instanceof NetherPortalBlock) return false; + if (state.getBlock() instanceof ITrackBlock) + return true; if (state.getBlock() instanceof FakeTrackBlock) return false; return state.getCollisionShape(world, breakingPos) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java index 47062a61b..8668795c7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java @@ -100,7 +100,8 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock if (crafter != null) { if (crafter.covered) Block.popResource(worldIn, pos, AllItems.CRAFTER_SLOT_COVER.asStack()); - crafter.ejectWholeGrid(); + if (!isMoving) + crafter.ejectWholeGrid(); } for (Direction direction : Iterate.directions) { 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 075352fed..eb41319c1 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 @@ -7,6 +7,7 @@ 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.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.Couple; @@ -19,11 +20,14 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; @@ -31,10 +35,12 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class HandCrankBlock extends DirectionalKineticBlock implements ITE { +public class HandCrankBlock extends DirectionalKineticBlock + implements ITE, ProperWaterloggedBlock { public HandCrankBlock(Properties properties) { super(properties); + registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); } @Override @@ -42,6 +48,11 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE builder) { + super.createBlockStateDefinition(builder.add(WATERLOGGED)); + } + @OnlyIn(Dist.CLIENT) public PartialModel getRenderedHandle() { return AllBlockPartials.HAND_CRANK_HANDLE; @@ -61,21 +72,22 @@ 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; } @Override public BlockState getStateForPlacement(BlockPlaceContext context) { Direction preferred = getPreferredFacing(context); + BlockState defaultBlockState = withWater(defaultBlockState(), context); if (preferred == null || (context.getPlayer() != null && context.getPlayer() .isShiftKeyDown())) - return defaultBlockState().setValue(FACING, context.getClickedFace()); - return defaultBlockState().setValue(FACING, preferred.getOpposite()); + return defaultBlockState.setValue(FACING, context.getClickedFace()); + return defaultBlockState.setValue(FACING, preferred.getOpposite()); } @Override @@ -102,6 +114,18 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE getSpeedRange() { return Couple.create(32, 32); } 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 d9ff4eab0..fb5c28da8 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 @@ -124,8 +124,8 @@ public class DeployerTileEntity extends KineticTileEntity { private void initHandler() { if (invHandler != null) return; - if (!level.isClientSide) { - player = new DeployerFakePlayer((ServerLevel) level); + if (level instanceof ServerLevel sLevel) { + player = new DeployerFakePlayer(sLevel); if (deferredInventoryList != null) { player.getInventory() .load(deferredInventoryList); 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 c36e0da53..a32b40ea5 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 @@ -218,10 +218,18 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { protected List> getMatchingRecipes() { List> matchingRecipes = super.getMatchingRecipes(); + if (!AllConfigs.SERVER.recipes.allowBrewingInMixer.get()) + return matchingRecipes; + Optional basin = getBasin(); if (!basin.isPresent()) return matchingRecipes; - IItemHandler availableItems = basin.get() + + BasinTileEntity basinTileEntity = basin.get(); + if (basin.isEmpty()) + return matchingRecipes; + + IItemHandler availableItems = basinTileEntity .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) .orElse(null); if (availableItems == null) 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 4a02a5415..2d6b51b3d 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 @@ -478,8 +478,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { public static boolean isSawable(BlockState stateToBreak) { if (stateToBreak.is(BlockTags.SAPLINGS)) return false; - if (stateToBreak.is(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(stateToBreak) - || (stateToBreak.is(BlockTags.LEAVES))) + if (TreeCutter.isLog(stateToBreak) || (stateToBreak.is(BlockTags.LEAVES))) return true; Block block = stateToBreak.getBlock(); if (block instanceof BambooBlock) 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 9853a7371..00af0d452 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 @@ -33,6 +33,7 @@ import com.simibubi.create.content.curiosities.deco.SlidingDoorBlock; 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.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.collision.Matrix3d; import com.simibubi.create.foundation.mixin.accessor.ServerLevelAccessor; import com.simibubi.create.foundation.networking.AllPackets; @@ -139,6 +140,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit public boolean collisionEnabled() { return true; } + + public void registerColliding(Entity collidingEntity) { + collidingEntities.put(collidingEntity, new MutableInt()); + } public void addSittingPassenger(Entity passenger, int seatIndex) { for (Entity entity : getPassengers()) { @@ -177,16 +182,28 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit contraption.getSeatMapping() .remove(passenger.getUUID()); AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new ContraptionSeatMappingPacket(getId(), contraption.getSeatMapping())); + new ContraptionSeatMappingPacket(getId(), contraption.getSeatMapping(), passenger.getId())); } @Override - public Vec3 getDismountLocationForPassenger(LivingEntity pLivingEntity) { - Vec3 loc = super.getDismountLocationForPassenger(pLivingEntity); - CompoundTag data = pLivingEntity.getPersistentData(); + public Vec3 getDismountLocationForPassenger(LivingEntity entityLiving) { + Vec3 position = super.getDismountLocationForPassenger(entityLiving); + CompoundTag data = entityLiving.getPersistentData(); if (!data.contains("ContraptionDismountLocation")) - return loc; - return VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); + return position; + + position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); + data.remove("ContraptionDismountLocation"); + entityLiving.setOnGround(false); + + if (!data.contains("ContraptionMountLocation")) + return position; + + 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); + return position; } @Override @@ -200,7 +217,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit transformedVector.y + SeatEntity.getCustomEntitySeatOffset(passenger) - 1 / 8f, transformedVector.z); } - protected Vec3 getPassengerPosition(Entity passenger, float partialTicks) { + public Vec3 getPassengerPosition(Entity passenger, float partialTicks) { UUID id = passenger.getUUID(); if (passenger instanceof OrientedContraptionEntity) { BlockPos localPos = contraption.getBearingPosOf(id); @@ -300,17 +317,27 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } public Vec3 toGlobalVector(Vec3 localVec, float partialTicks) { + return toGlobalVector(localVec, partialTicks, false); + } + + public Vec3 toGlobalVector(Vec3 localVec, float partialTicks, boolean prevAnchor) { + Vec3 anchor = prevAnchor ? getPrevAnchorVec() : getAnchorVec(); Vec3 rotationOffset = VecHelper.getCenterOf(BlockPos.ZERO); localVec = localVec.subtract(rotationOffset); localVec = applyRotation(localVec, partialTicks); localVec = localVec.add(rotationOffset) - .add(getAnchorVec()); + .add(anchor); return localVec; } + + public Vec3 toLocalVector(Vec3 localVec, float partialTicks) { + return toLocalVector(localVec, partialTicks, false); + } - public Vec3 toLocalVector(Vec3 globalVec, float partialTicks) { + public Vec3 toLocalVector(Vec3 globalVec, float partialTicks, boolean prevAnchor) { + Vec3 anchor = prevAnchor ? getPrevAnchorVec() : getAnchorVec(); Vec3 rotationOffset = VecHelper.getCenterOf(BlockPos.ZERO); - globalVec = globalVec.subtract(getAnchorVec()) + globalVec = globalVec.subtract(anchor) .subtract(rotationOffset); globalVec = reverseRotation(globalVec, partialTicks); globalVec = globalVec.add(rotationOffset); @@ -519,6 +546,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit public Vec3 getAnchorVec() { return position(); } + + public Vec3 getPrevAnchorVec() { + return getPrevPositionVec(); + } public float getYawOffset() { return 0; @@ -792,9 +823,11 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit public Vec3 getContactPointMotion(Vec3 globalContactPoint) { if (prevPosInvalid) return Vec3.ZERO; - Vec3 contactPoint = toGlobalVector(toLocalVector(globalContactPoint, 0), 1); - return contactPoint.subtract(globalContactPoint) - .add(position().subtract(getPrevPositionVec())); + + Vec3 contactPoint = toGlobalVector(toLocalVector(globalContactPoint, 0, true), 1, true); + Vec3 contraptionLocalMovement = contactPoint.subtract(globalContactPoint); + Vec3 contraptionAnchorMovement = position().subtract(getPrevPositionVec()); + return contraptionLocalMovement.add(contraptionAnchorMovement); } public boolean canCollideWith(Entity e) { 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 592fe6307..51655a236 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 @@ -133,6 +133,7 @@ public abstract class Contraption { public BlockPos anchor; public boolean stalled; public boolean hasUniversalCreativeCrate; + public boolean disassembled; protected Map blocks; protected List> actors; @@ -1001,6 +1002,10 @@ public abstract class Contraption { } public void addBlocksToWorld(Level world, StructureTransform transform) { + if (disassembled) + return; + disassembled = true; + for (boolean nonBrittles : Iterate.trueAndFalse) { for (StructureBlockInfo block : blocks.values()) { if (nonBrittles == BlockMovementChecks.isBrittle(block.state)) 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 a669f66b8..6d0594123 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 @@ -7,7 +7,6 @@ import java.util.List; import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableFloat; -import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableObject; import com.google.common.base.Predicates; @@ -33,6 +32,7 @@ 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.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -88,11 +88,12 @@ public class ContraptionCollider { if (playerType == PlayerType.REMOTE) continue; - entity.getSelfAndPassengers().forEach(e -> { - if (e instanceof ServerPlayer) - ((ServerPlayer) e).connection.aboveGroundTickCount = 0; - }); - + entity.getSelfAndPassengers() + .forEach(e -> { + if (e instanceof ServerPlayer) + ((ServerPlayer) e).connection.aboveGroundTickCount = 0; + }); + if (playerType == PlayerType.SERVER) continue; @@ -329,50 +330,15 @@ public class ContraptionCollider { entityPosition.z + allowedMovement.z); entityPosition = entity.position(); - if (contraptionEntity instanceof CarriageContraptionEntity cce && entity.isOnGround() - && !(entity instanceof ItemEntity) && cce.nonDamageTicks == 0 - && AllConfigs.SERVER.trains.trainsCauseDamage.get()) { - - Vec3 diffMotion = contraptionMotion.subtract(entity.getDeltaMovement()); - if (diffMotion.length() > 0.35f && contraptionMotion.length() > 0.35f) { - - EntityDamageSource pSource = new EntityDamageSource("create.run_over", contraptionEntity); - double damage = diffMotion.length(); - if (entity.getClassification(false) == MobCategory.MONSTER) - damage *= 2; - - if (!(entity instanceof Player p) || !p.isCreative() && !p.isSpectator()) { - if (playerType == PlayerType.CLIENT) { - AllPackets.channel - .sendToServer(new TrainCollisionPacket((int) (damage * 16), contraptionEntity.getId())); - world.playSound((Player) entity, entity.blockPosition(), SoundEvents.PLAYER_ATTACK_CRIT, - SoundSource.NEUTRAL, 1, .75f); - } else { - 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) - .normalize() - .add(0, .25, 0) - .scale(damage * 4)) - .add(diffMotion); - entityMotion = VecHelper.clamp(added, 3); - } - } - } + entityMotion = + handleDamageFromTrain(world, contraptionEntity, contraptionMotion, entity, entityMotion, playerType); entity.hurtMarked = true; Vec3 contactPointMotion = Vec3.ZERO; if (surfaceCollision.isTrue()) { + contraptionEntity.registerColliding(entity); entity.fallDistance = 0; - contraptionEntity.collidingEntities.put(entity, new MutableInt(0)); boolean canWalk = bounce != 0 || slide == 0; if (canWalk || !rotation.hasVerticalRotation()) { if (canWalk) @@ -401,6 +367,64 @@ public class ContraptionCollider { } + private static Vec3 handleDamageFromTrain(Level world, AbstractContraptionEntity contraptionEntity, + Vec3 contraptionMotion, Entity entity, Vec3 entityMotion, PlayerType playerType) { + + if (!(contraptionEntity instanceof CarriageContraptionEntity cce)) + return entityMotion; + if (!entity.isOnGround()) + return entityMotion; + + CompoundTag persistentData = entity.getPersistentData(); + if (persistentData.contains("ContraptionGrounded")) { + persistentData.remove("ContraptionGrounded"); + return entityMotion; + } + + if (cce.collidingEntities.containsKey(entity)) + return entityMotion; + if (entity instanceof ItemEntity) + return entityMotion; + if (cce.nonDamageTicks != 0) + return entityMotion; + if (!AllConfigs.SERVER.trains.trainsCauseDamage.get()) + return entityMotion; + + Vec3 diffMotion = contraptionMotion.subtract(entity.getDeltaMovement()); + + if (diffMotion.length() <= 0.35f || contraptionMotion.length() <= 0.35f) + return entityMotion; + + EntityDamageSource pSource = new EntityDamageSource("create.run_over", contraptionEntity); + double damage = diffMotion.length(); + if (entity.getClassification(false) == MobCategory.MONSTER) + damage *= 2; + + if (entity instanceof Player p && (p.isCreative() || p.isSpectator())) + return entityMotion; + + if (playerType == PlayerType.CLIENT) { + AllPackets.channel.sendToServer(new TrainCollisionPacket((int) (damage * 16), contraptionEntity.getId())); + world.playSound((Player) entity, entity.blockPosition(), SoundEvents.PLAYER_ATTACK_CRIT, + SoundSource.NEUTRAL, 1, .75f); + } else { + 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) + .normalize() + .add(0, .25, 0) + .scale(damage * 4)) + .add(diffMotion); + + return VecHelper.clamp(added, 3); + } + static boolean bounceEntity(Entity entity, Vec3 normal, AbstractContraptionEntity contraption, double factor) { if (factor == 0) return false; @@ -473,10 +497,10 @@ public class ContraptionCollider { boolean flag = p_20273_.x != vec3.x; boolean flag1 = p_20273_.y != vec3.y; boolean flag2 = p_20273_.z != vec3.z; - boolean flag3 = e.isOnGround() || flag1 && p_20273_.y < 0.0D; + boolean flag3 = flag1 && p_20273_.y < 0.0D; if (e.getStepHeight() > 0.0F && flag3 && (flag || flag2)) { - Vec3 vec31 = - collideBoundingBox(e, new Vec3(p_20273_.x, (double) e.getStepHeight(), p_20273_.z), aabb, e.level, list); + Vec3 vec31 = collideBoundingBox(e, new Vec3(p_20273_.x, (double) e.getStepHeight(), p_20273_.z), aabb, + e.level, list); Vec3 vec32 = collideBoundingBox(e, new Vec3(0.0D, (double) e.getStepHeight(), 0.0D), aabb.expandTowards(p_20273_.x, 0.0D, p_20273_.z), e.level, list); if (vec32.y < (double) e.getStepHeight()) { 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 84f6b2a49..298e9d596 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,7 +7,6 @@ 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; @@ -17,7 +16,6 @@ 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; @@ -65,24 +63,18 @@ public class ContraptionHandler { } public static void entitiesWhoJustDismountedGetSentToTheRightLocation(LivingEntity entityLiving, Level world) { - if (world.isClientSide) + if (!world.isClientSide) return; + CompoundTag data = entityLiving.getPersistentData(); if (!data.contains("ContraptionDismountLocation")) return; + Vec3 position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); if (entityLiving.getVehicle() == null) - entityLiving.teleportTo(position.x, position.y, position.z); + entityLiving.absMoveTo(position.x, position.y, position.z, entityLiving.getYRot(), entityLiving.getXRot()); 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/ContraptionHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java index f9d40b9cb..0ebf07fee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import java.util.List; +import java.lang.ref.WeakReference; +import java.util.Collection; import javax.annotation.Nullable; @@ -86,10 +87,19 @@ public class ContraptionHandlerClient { Vec3 origin = rayInputs.getFirst(); Vec3 target = rayInputs.getSecond(); AABB aabb = new AABB(origin, target).inflate(16); - List intersectingContraptions = - mc.level.getEntitiesOfClass(AbstractContraptionEntity.class, aabb); - for (AbstractContraptionEntity contraptionEntity : intersectingContraptions) { + Collection> contraptions = + ContraptionHandler.loadedContraptions.get(mc.level) + .values(); + + for (WeakReference ref : contraptions) { + AbstractContraptionEntity contraptionEntity = ref.get(); + if (contraptionEntity == null) + continue; + if (!contraptionEntity.getBoundingBox() + .intersects(aabb)) + continue; + BlockHitResult rayTraceResult = rayTraceContraption(origin, target, contraptionEntity); if (rayTraceResult == null) continue; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java index 9abd65cf4..cd140b891 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java @@ -493,7 +493,14 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity { @Override public Vec3 getAnchorVec() { - return new Vec3(getX() - .5, getY(), getZ() - .5); + Vec3 anchorVec = super.getAnchorVec(); + return anchorVec.subtract(.5, 0, .5); + } + + @Override + public Vec3 getPrevAnchorVec() { + Vec3 prevAnchorVec = super.getPrevAnchorVec(); + return prevAnchorVec.subtract(.5, 0, .5); } @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 50bd66123..794ed4858 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 @@ -5,12 +5,17 @@ import java.util.List; import javax.annotation.Nullable; +import org.apache.commons.lang3.tuple.MutablePair; + import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import com.simibubi.create.AllItems; +import com.simibubi.create.AllMovementBehaviours; +import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement; import com.simibubi.create.content.contraptions.components.deployer.DeployerFakePlayer; 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.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.ContraptionMovementSetting; @@ -41,6 +46,7 @@ import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.DispenserBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.RailShape; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.level.material.Material; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -218,11 +224,13 @@ public class MinecartContraptionItem extends Item { List passengers = cart.getPassengers(); if (passengers.isEmpty() || !(passengers.get(0) instanceof OrientedContraptionEntity)) return; - OrientedContraptionEntity contraption = (OrientedContraptionEntity) passengers.get(0); + OrientedContraptionEntity oce = (OrientedContraptionEntity) passengers.get(0); + Contraption contraption = oce.getContraption(); - if(ContraptionMovementSetting.isNoPickup(contraption.getContraption().getBlocks().values())) { + if (ContraptionMovementSetting.isNoPickup(contraption.getBlocks() + .values())) { player.displayClientMessage(Lang.translateDirect("contraption.minecart_contraption_illegal_pickup") - .withStyle(ChatFormatting.RED), true); + .withStyle(ChatFormatting.RED), true); return; } @@ -232,7 +240,13 @@ public class MinecartContraptionItem extends Item { return; } - ItemStack generatedStack = create(type, contraption).setHoverName(entity.getCustomName()); + contraption.stop(event.getWorld()); + + for (MutablePair pair : contraption.getActors()) + if (AllMovementBehaviours.getBehaviour(pair.left.state)instanceof PortableStorageInterfaceMovement psim) + psim.reset(pair.right); + + ItemStack generatedStack = create(type, oce).setHoverName(entity.getCustomName()); try { ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput(); @@ -249,13 +263,13 @@ public class MinecartContraptionItem extends Item { return; } - if (contraption.getContraption() - .getBlocks() + if (contraption.getBlocks() .size() > 200) AllAdvancements.CART_PICKUP.awardTo(player); - - player.getInventory().placeItemBackInInventory(generatedStack); - contraption.discard(); + + player.getInventory() + .placeItemBackInInventory(generatedStack); + oce.discard(); entity.discard(); event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java index 557fc3ace..4d4492ca1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java @@ -11,6 +11,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.network.NetworkEvent.Context; @@ -54,7 +55,9 @@ public class ContraptionInteractionPacket extends SimplePacketBase { if (!(entityByID instanceof AbstractContraptionEntity)) return; AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID; - double d = sender.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue() + 10; + AABB bb = contraptionEntity.getBoundingBox(); + double boundsExtra = Math.max(bb.getXsize(), bb.getYsize()); + double d = sender.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue() + 10 + boundsExtra; if (!sender.hasLineOfSight(entityByID)) d -= 3; d *= d; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java index 42c6c1793..ac2582af3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java @@ -7,24 +7,33 @@ import java.util.function.Supplier; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.foundation.networking.SimplePacketBase; +import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent.Context; public class ContraptionSeatMappingPacket extends SimplePacketBase { private Map mapping; private int entityID; + private int dismountedID; public ContraptionSeatMappingPacket(int entityID, Map mapping) { + this(entityID, mapping, -1); + } + + public ContraptionSeatMappingPacket(int entityID, Map mapping, int dismountedID) { this.entityID = entityID; this.mapping = mapping; + this.dismountedID = dismountedID; } public ContraptionSeatMappingPacket(FriendlyByteBuf buffer) { entityID = buffer.readInt(); + dismountedID = buffer.readInt(); mapping = new HashMap<>(); short size = buffer.readShort(); for (int i = 0; i < size; i++) @@ -34,6 +43,7 @@ public class ContraptionSeatMappingPacket extends SimplePacketBase { @Override public void write(FriendlyByteBuf buffer) { buffer.writeInt(entityID); + buffer.writeInt(dismountedID); buffer.writeShort(mapping.size()); mapping.forEach((k, v) -> { buffer.writeUUID(k); @@ -49,6 +59,17 @@ public class ContraptionSeatMappingPacket extends SimplePacketBase { if (!(entityByID instanceof AbstractContraptionEntity)) return; AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID; + + if (dismountedID != -1) { + Entity dismountedByID = Minecraft.getInstance().level.getEntity(dismountedID); + if (Minecraft.getInstance().player != dismountedByID) + return; + Vec3 transformedVector = contraptionEntity.getPassengerPosition(dismountedByID, 1); + if (transformedVector != null) + dismountedByID.getPersistentData() + .put("ContraptionDismountLocation", VecHelper.writeNBT(transformedVector)); + } + contraptionEntity.getContraption() .setSeatMapping(mapping); }); 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 5451e001b..0ac0e4274 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 @@ -8,6 +8,7 @@ import java.util.Set; import javax.annotation.Nullable; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTags.AllBlockTags; 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; @@ -173,7 +174,8 @@ public class FluidPropagator { return false; if (VanillaFluidTargets.shouldPipesConnectTo(connectedState)) return true; - if (BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite())) + if (BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite()) + && !AllBlockTags.FAN_TRANSPARENT.matches(connectedState)) return false; if (hasFluidCapability(reader, connectedPos, side.getOpposite())) return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java index a9bed692f..0c92e55ff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java @@ -9,6 +9,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.BlockPos; @@ -16,26 +17,31 @@ 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.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.ticks.TickPriority; -public class FluidValveBlock extends DirectionalAxisKineticBlock implements IAxisPipe, ITE { +public class FluidValveBlock extends DirectionalAxisKineticBlock + implements IAxisPipe, ITE, ProperWaterloggedBlock { public static final BooleanProperty ENABLED = BooleanProperty.create("enabled"); public FluidValveBlock(Properties properties) { super(properties); - registerDefaultState(defaultBlockState().setValue(ENABLED, false)); + registerDefaultState(defaultBlockState().setValue(ENABLED, false) + .setValue(WATERLOGGED, false)); } @Override @@ -46,7 +52,7 @@ public class FluidValveBlock extends DirectionalAxisKineticBlock implements IAxi @Override protected void createBlockStateDefinition(Builder builder) { - super.createBlockStateDefinition(builder.add(ENABLED)); + super.createBlockStateDefinition(builder.add(ENABLED, WATERLOGGED)); } @Override @@ -125,7 +131,7 @@ public class FluidValveBlock extends DirectionalAxisKineticBlock implements IAxi public void tick(BlockState state, ServerLevel world, BlockPos pos, Random r) { FluidPropagator.propagateChangedPipe(world, pos, state); } - + @Override public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) { return false; @@ -141,4 +147,21 @@ public class FluidValveBlock extends DirectionalAxisKineticBlock implements IAxi return AllTileEntities.FLUID_VALVE.get(); } + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return withWater(super.getStateForPlacement(context), context); + } + + @Override + public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, + BlockPos pos, BlockPos neighbourPos) { + updateWater(world, state, pos); + return state; + } + + @Override + public FluidState getFluidState(BlockState state) { + return fluidState(state); + } + } 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 768b128d1..687183242 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 @@ -8,6 +8,7 @@ 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.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VoxelShaper; @@ -21,6 +22,7 @@ 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; +import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; @@ -28,22 +30,23 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.ticks.TickPriority; public class SmartFluidPipeBlock extends FaceAttachedHorizontalDirectionalBlock - implements ITE, IAxisPipe, IWrenchable { + implements ITE, IAxisPipe, IWrenchable, ProperWaterloggedBlock { public SmartFluidPipeBlock(Properties p_i48339_1_) { super(p_i48339_1_); + registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); } @Override protected void createBlockStateDefinition(Builder builder) { - builder.add(FACE) - .add(FACING); + builder.add(FACE, FACING, WATERLOGGED); } @Override @@ -76,7 +79,7 @@ public class SmartFluidPipeBlock extends FaceAttachedHorizontalDirectionalBlock } } - return stateForPlacement; + return withWater(stateForPlacement, ctx); } protected boolean prefersConnectionTo(LevelReader reader, BlockPos pos, Direction facing) { @@ -158,6 +161,18 @@ public class SmartFluidPipeBlock extends FaceAttachedHorizontalDirectionalBlock public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) { return false; } + + @Override + public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, + BlockPos pCurrentPos, BlockPos pFacingPos) { + updateWater(pLevel, pState, pCurrentPos); + return pState; + } + + @Override + public FluidState getFluidState(BlockState pState) { + return fluidState(pState); + } @Override public Class getTileEntityClass() { 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 3ba1d6a6c..925853aa2 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 @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.processing; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -64,7 +65,8 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { return true; if (level == null || level.isClientSide) return true; - if (!getBasin().filter(BasinTileEntity::canContinueProcessing) + Optional basin = getBasin(); + if (!basin.filter(BasinTileEntity::canContinueProcessing) .isPresent()) return true; @@ -118,6 +120,10 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { } protected List> getMatchingRecipes() { + if (getBasin().map(BasinTileEntity::isEmpty) + .orElse(true)) + return new ArrayList<>(); + List> list = RecipeFinder.get(getRecipeCacheKey(), level, this::matchStaticFilters); return list.stream() .filter(this::matchBasinRecipe) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java index 7e213f2e8..514c0698b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.processing; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.LinkedList; import java.util.List; @@ -17,9 +16,11 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBe 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.Iterate; +import com.simibubi.create.foundation.utility.recipe.DummyCraftingContainer; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.Level; @@ -78,7 +79,6 @@ public class BasinRecipe extends ProcessingRecipe { List recipeOutputFluids = new ArrayList<>(); List ingredients = new LinkedList<>(recipe.getIngredients()); - ingredients.sort(Comparator.comparingInt(i -> i.getItems().length)); List fluidIngredients = isBasinRecipe ? ((BasinRecipe) recipe).getFluidIngredients() : Collections.emptyList(); @@ -106,9 +106,6 @@ public class BasinRecipe extends ProcessingRecipe { continue Ingredients; if (!simulate) availableItems.extractItem(slot, 1, false); - else if (extracted.hasContainerItem()) - recipeOutputItems.add(extracted.getContainerItem() - .copy()); extractedItemsFromSlot[slot]++; continue Ingredients; } @@ -152,11 +149,17 @@ public class BasinRecipe extends ProcessingRecipe { } if (simulate) { - if (recipe instanceof BasinRecipe) { - recipeOutputItems.addAll(((BasinRecipe) recipe).rollResults()); - recipeOutputFluids.addAll(((BasinRecipe) recipe).getFluidResults()); - } else + if (recipe instanceof BasinRecipe basinRecipe) { + recipeOutputItems.addAll(basinRecipe.rollResults()); + recipeOutputFluids.addAll(basinRecipe.getFluidResults()); + recipeOutputItems.addAll(basinRecipe.getRemainingItems(basin.getInputInventory())); + } else { recipeOutputItems.add(recipe.getResultItem()); + + if (recipe instanceof CraftingRecipe craftingRecipe) { + recipeOutputItems.addAll(craftingRecipe.getRemainingItems(new DummyCraftingContainer(availableItems, extractedItemsFromSlot))); + } + } } if (!basin.acceptOutputs(recipeOutputItems, recipeOutputFluids, simulate)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 32e2e3174..af01c8da1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -88,6 +88,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor Direction preferredSpoutput; protected List spoutputBuffer; protected List spoutputFluidBuffer; + int recipeBackupCheck; public static final int OUTPUT_ANIMATION_TIME = 10; List> visualizedOutputItems; @@ -115,6 +116,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor preferredSpoutput = null; spoutputBuffer = new ArrayList<>(); spoutputFluidBuffer = new ArrayList<>(); + recipeBackupCheck = 20; } @Override @@ -227,19 +229,32 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor @Override public void lazyTick() { super.lazyTick(); - updateSpoutput(); - if (!level.isClientSide) + + if (!level.isClientSide) { + updateSpoutput(); + if (recipeBackupCheck-- > 0) + return; + recipeBackupCheck = 20; + if (isEmpty()) + return; + notifyChangeOfContents(); return; + } BlockEntity tileEntity = level.getBlockEntity(worldPosition.above(2)); if (!(tileEntity instanceof MechanicalMixerTileEntity)) { setAreFluidsMoving(false); return; } + MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) tileEntity; setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20); } + public boolean isEmpty() { + return inputInventory.isEmpty() && outputInventory.isEmpty() && inputTank.isEmpty() && outputTank.isEmpty(); + } + public void onWrenched(Direction face) { BlockState blockState = getBlockState(); Direction currentFacing = blockState.getValue(BasinBlock.FACING); @@ -256,15 +271,8 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor } private void updateSpoutput() { - if (level.isClientSide) - return; - BlockState blockState = getBlockState(); Direction currentFacing = blockState.getValue(BasinBlock.FACING); - - if (currentFacing != Direction.DOWN) - notifyChangeOfContents(); - Direction newFacing = Direction.DOWN; for (Direction test : Iterate.horizontalDirections) { boolean canOutputTo = BasinBlock.canOutputTo(level, worldPosition, test); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 6405eaf32..7ca722a56 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -465,7 +465,7 @@ public class BeltTileEntity extends KineticTileEntity { return inserted; if (!simulate) { BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); - tunnelTE.setStackToDistribute(inserted); + tunnelTE.setStackToDistribute(inserted, side.getOpposite()); } return empty; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index ab1c46c40..3a7143ac7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -54,7 +54,7 @@ public class BeltTunnelInteractionHandler { if (!brassTunnel.canTakeItems()) return true; if (onServer) { - brassTunnel.setStackToDistribute(current.stack); + brassTunnel.setStackToDistribute(current.stack, movementFacing.getOpposite()); current.stack = ItemStack.EMPTY; beltInventory.belt.sendData(); beltInventory.belt.setChanged(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index ed12b472b..70cd85197 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -9,7 +9,6 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket; @@ -22,7 +21,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.DistExecutor; public class BackTankUtil { @@ -105,11 +104,10 @@ public class BackTankUtil { // For Air-using tools - @OnlyIn(Dist.CLIENT) public static boolean isBarVisible(ItemStack stack, int usesPerTank) { if (usesPerTank == 0) return false; - LocalPlayer player = Minecraft.getInstance().player; + Player player = DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> () -> Minecraft.getInstance().player); if (player == null) return false; ItemStack backtank = get(player); @@ -118,11 +116,10 @@ public class BackTankUtil { return true; } - @OnlyIn(Dist.CLIENT) public static int getBarWidth(ItemStack stack, int usesPerTank) { if (usesPerTank == 0) return 13; - LocalPlayer player = Minecraft.getInstance().player; + Player player = DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> () -> Minecraft.getInstance().player); if (player == null) return 13; ItemStack backtank = get(player); @@ -132,11 +129,10 @@ public class BackTankUtil { .getBarWidth(backtank); } - @OnlyIn(Dist.CLIENT) public static int getBarColor(ItemStack stack, int usesPerTank) { if (usesPerTank == 0) return 0; - LocalPlayer player = Minecraft.getInstance().player; + Player player = DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> () -> Minecraft.getInstance().player); if (player == null) return 0; ItemStack backtank = get(player); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java index 9716e1e39..dece4a44e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.block.belts.tunnel; import java.util.List; import com.simibubi.create.AllTileEntities; -import com.simibubi.create.Create; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; @@ -44,7 +43,7 @@ public class BrassTunnelBlock extends BeltTunnelBlock { for (ItemStack itemStack : stacksOfGroup) player.getInventory().placeItemBackInInventory(itemStack.copy()); world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, - 1f + Create.RANDOM.nextFloat()); + 1f + world.random.nextFloat()); return InteractionResult.SUCCESS; }); } @@ -61,16 +60,16 @@ public class BrassTunnelBlock extends BeltTunnelBlock { } @Override - public void onRemove(BlockState p_196243_1_, Level p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, - boolean p_196243_5_) { - if (p_196243_1_.hasBlockEntity() - && (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasBlockEntity())) { - TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE); - withTileEntityDo(p_196243_2_, p_196243_3_, te -> { - if (te instanceof BrassTunnelTileEntity) - Block.popResource(p_196243_2_, p_196243_3_, ((BrassTunnelTileEntity) te).stackToDistribute); + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { + if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) { + TileEntityBehaviour.destroy(level, pos, FilteringBehaviour.TYPE); + withTileEntityDo(level, pos, te -> { + if (!(te instanceof BrassTunnelTileEntity btte)) + return; + Block.popResource(level, pos, btte.stackToDistribute); + btte.stackEnteredFrom = null; }); - p_196243_2_.removeBlockEntity(p_196243_3_); + level.removeBlockEntity(pos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java index 688740989..c9d7b1017 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java @@ -34,7 +34,7 @@ public class BrassTunnelItemHandler implements IItemHandler { if (!te.canTakeItems()) return stack; if (!simulate) - te.setStackToDistribute(stack); + te.setStackToDistribute(stack, null); return ItemStack.EMPTY; } 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 a4caf7cb4..0d6399094 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,6 +17,9 @@ 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.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.foundation.gui.AllIcons; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; @@ -61,6 +64,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave boolean connectedRight; ItemStack stackToDistribute; + Direction stackEnteredFrom; + float distributionProgress; int distributionDistanceLeft; int distributionDistanceRight; @@ -81,6 +86,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave distributionTargets = Couple.create(ArrayList::new); syncSet = new HashSet<>(); stackToDistribute = ItemStack.EMPTY; + stackEnteredFrom = null; beltCapability = LazyOptional.empty(); tunnelCapability = LazyOptional.of(() -> new BrassTunnelItemHandler(this)); previousOutputIndex = 0; @@ -183,6 +189,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave for (Pair pair : list) { BlockPos tunnelPos = pair.getKey(); Direction output = pair.getValue(); + if (tunnelPos.equals(worldPosition) && output == stackEnteredFrom) + continue; BlockEntity te = level.getBlockEntity(tunnelPos); if (!(te instanceof BrassTunnelTileEntity)) continue; @@ -306,13 +314,16 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave toDistribute.grow(failedTransferrals); stackToDistribute = ItemHandlerHelper.copyStackWithSize(stackToDistribute, toDistribute.getCount()); + if (stackToDistribute.isEmpty()) + stackEnteredFrom = null; previousOutputIndex++; previousOutputIndex %= amountTargets; notifyUpdate(); } - public void setStackToDistribute(ItemStack stack) { + public void setStackToDistribute(ItemStack stack, @Nullable Direction enteredFrom) { stackToDistribute = stack; + stackEnteredFrom = enteredFrom; distributionProgress = -1; sendData(); setChanged(); @@ -329,7 +340,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave if (!own.isEmpty()) { list.add(own); if (!simulate) - setStackToDistribute(ItemStack.EMPTY); + setStackToDistribute(ItemStack.EMPTY, null); } for (boolean left : Iterate.trueAndFalse) { @@ -345,7 +356,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave continue; list.add(other); if (!simulate) - adjacent.setStackToDistribute(ItemStack.EMPTY); + adjacent.setStackToDistribute(ItemStack.EMPTY, null); } } @@ -514,22 +525,30 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave continue; if (direction == movementFacing.getOpposite()) continue; - if (tunnelTE.sides.contains(direction)) { - BlockPos offset = tunnelTE.worldPosition.below() - .relative(direction); - DirectBeltInputBehaviour inputBehaviour = - TileEntityBehaviour.get(level, offset, DirectBeltInputBehaviour.TYPE); - if (inputBehaviour == null) { - if (direction == movementFacing) - if (!BlockHelper.hasBlockSolidSide(level.getBlockState(offset), level, offset, - direction.getOpposite())) - validOutputs.add(Pair.of(tunnelTE, direction)); - continue; - } - if (inputBehaviour.canInsertFromSide(direction)) - validOutputs.add(Pair.of(tunnelTE, direction)); + if (!tunnelTE.sides.contains(direction)) + continue; + + BlockPos offset = tunnelTE.worldPosition.below() + .relative(direction); + + BlockState potentialFunnel = level.getBlockState(offset.above()); + if (potentialFunnel.getBlock() instanceof BeltFunnelBlock + && potentialFunnel.getValue(BeltFunnelBlock.SHAPE) == Shape.PULLING + && FunnelBlock.getFunnelFacing(potentialFunnel) == direction) + continue; + + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(level, offset, DirectBeltInputBehaviour.TYPE); + if (inputBehaviour == null) { + if (direction == movementFacing) + if (!BlockHelper.hasBlockSolidSide(level.getBlockState(offset), level, offset, + direction.getOpposite())) + validOutputs.add(Pair.of(tunnelTE, direction)); continue; } + if (inputBehaviour.canInsertFromSide(direction)) + validOutputs.add(Pair.of(tunnelTE, direction)); + continue; } } } @@ -559,7 +578,11 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave compound.putBoolean("SyncedOutput", syncedOutputActive); compound.putBoolean("ConnectedLeft", connectedLeft); compound.putBoolean("ConnectedRight", connectedRight); + compound.put("StackToDistribute", stackToDistribute.serializeNBT()); + if (stackEnteredFrom != null) + NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom); + compound.putFloat("DistributionProgress", distributionProgress); compound.putInt("PreviousIndex", previousOutputIndex); compound.putInt("DistanceLeft", distributionDistanceLeft); @@ -587,7 +610,12 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave syncedOutputActive = compound.getBoolean("SyncedOutput"); connectedLeft = compound.getBoolean("ConnectedLeft"); connectedRight = compound.getBoolean("ConnectedRight"); + stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute")); + stackEnteredFrom = + compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class) + : null; + distributionProgress = compound.getFloat("DistributionProgress"); previousOutputIndex = compound.getInt("PreviousIndex"); distributionDistanceLeft = compound.getInt("DistanceLeft"); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java index 70614052c..94947ac35 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java @@ -40,9 +40,10 @@ public class ScoreboardDisplaySource extends ValueListDisplaySource { return sLevel.getScoreboard() .getPlayerScores(objective) .stream() - .limit(maxRows) - .map(score -> IntAttached.with(score.getScore(), Components.literal(score.getOwner()).copy())) - .sorted(IntAttached.comparator()); + .map(score -> IntAttached.with(score.getScore(), Components.literal(score.getOwner()) + .copy())) + .sorted(IntAttached.comparator()) + .limit(maxRows); } private ImmutableList> notFound(String objective) { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/BookCopyAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/BookCopyAttribute.java index d31d87383..88a3c7c87 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/BookCopyAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/BookCopyAttribute.java @@ -56,6 +56,11 @@ public class BookCopyAttribute implements ItemAttribute { return new BookCopyAttribute(nbt.getInt("generation")); } + @Override + public String getNBTKey() { + return "book_copy"; + } + private int extractGeneration(ItemStack stack) { CompoundTag nbt = stack.getTag(); if (nbt != null && stack.getItem() instanceof WrittenBookItem) { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java index 614ec29a3..fe0d6edde 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainRelocationPacket.java @@ -84,12 +84,12 @@ public class TrainRelocationPacket extends SimplePacketBase { return; if (!sender.position() - .closerThan(Vec3.atCenterOf(pos), 26)) { + .closerThan(Vec3.atCenterOf(pos), 64)) { Create.LOGGER.warn(messagePrefix + train.name.getString() + ": player too far from clicked pos"); return; } if (!sender.position() - .closerThan(cce.position(), 26 + cce.getBoundingBox() + .closerThan(cce.position(), 64 + cce.getBoundingBox() .getXsize() / 2)) { Create.LOGGER.warn(messagePrefix + train.name.getString() + ": player too far from carriage entity"); return; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SingleTileEdgePoint.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SingleTileEdgePoint.java index 732625e04..f18b78390 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SingleTileEdgePoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/signal/SingleTileEdgePoint.java @@ -5,20 +5,29 @@ import com.simibubi.create.content.logistics.trains.DimensionPalette; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.entity.BlockEntity; public abstract class SingleTileEdgePoint extends TrackEdgePoint { + public ResourceKey tileDimension; public BlockPos tilePos; public BlockPos getTilePos() { return tilePos; } + + public ResourceKey getTileDimension() { + return tileDimension; + } @Override public void tileAdded(BlockEntity tile, boolean front) { this.tilePos = tile.getBlockPos(); + this.tileDimension = tile.getLevel() + .dimension(); } @Override @@ -42,12 +51,14 @@ public abstract class SingleTileEdgePoint extends TrackEdgePoint { if (migration) return; tilePos = NbtUtils.readBlockPos(nbt.getCompound("TilePos")); + tileDimension = dimensions.decode(nbt.contains("TileDimension") ? nbt.getInt("TileDimension") : -1); } @Override public void write(CompoundTag nbt, DimensionPalette dimensions) { super.write(nbt, dimensions); nbt.put("TilePos", NbtUtils.writeBlockPos(tilePos)); + nbt.putInt("TileDimension", dimensions.encode(tileDimension)); } } 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 66700cd8e..c103d2768 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 @@ -66,8 +66,7 @@ public class ScheduleItem extends Item implements MenuProvider { return InteractionResultHolder.pass(heldItem); } - @Override - public InteractionResult interactLivingEntity(ItemStack pStack, Player pPlayer, LivingEntity pInteractionTarget, + public InteractionResult handScheduleTo(ItemStack pStack, Player pPlayer, LivingEntity pInteractionTarget, InteractionHand pUsedHand) { InteractionResult pass = InteractionResult.PASS; @@ -123,6 +122,7 @@ public class ScheduleItem extends Item implements MenuProvider { pStack.shrink(1); pPlayer.setItemInHand(pUsedHand, pStack.isEmpty() ? ItemStack.EMPTY : pStack); } + return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemEntityInteraction.java similarity index 55% rename from src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java rename to src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemEntityInteraction.java index 3ff2d3395..f72275ffd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemRetrieval.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItemEntityInteraction.java @@ -11,19 +11,20 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.animal.Wolf; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.EntityInteract; +import net.minecraftforge.event.entity.player.PlayerInteractEvent.EntityInteractSpecific; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber -public class ScheduleItemRetrieval { +public class ScheduleItemEntityInteraction { @SubscribeEvent - public static void removeScheduleFromConductor(EntityInteract event) { + public static void interactWithConductor(EntityInteractSpecific event) { Entity entity = event.getTarget(); Player player = event.getPlayer(); if (player == null || entity == null) @@ -34,16 +35,24 @@ public class ScheduleItemRetrieval { Entity rootVehicle = entity.getRootVehicle(); if (!(rootVehicle instanceof CarriageContraptionEntity)) return; + if (!(entity instanceof LivingEntity living)) + return; + if (player.getCooldowns() + .isOnCooldown(AllItems.SCHEDULE.get())) + return; ItemStack itemStack = event.getItemStack(); - if (AllItems.SCHEDULE.isIn(itemStack) && entity instanceof Wolf wolf) { - itemStack.getItem() - .interactLivingEntity(itemStack, player, wolf, event.getHand()); - return; + if (itemStack.getItem()instanceof ScheduleItem si) { + InteractionResult result = si.handScheduleTo(itemStack, player, living, event.getHand()); + if (result.consumesAction()) { + player.getCooldowns() + .addCooldown(AllItems.SCHEDULE.get(), 5); + event.setCancellationResult(result); + event.setCanceled(true); + return; + } } - if (player.level.isClientSide) - return; if (event.getHand() == InteractionHand.OFF_HAND) return; @@ -68,31 +77,47 @@ public class ScheduleItemRetrieval { if (directions == null) return; + boolean onServer = !event.getWorld().isClientSide; + if (train.runtime.paused && !train.runtime.completed) { - train.runtime.paused = false; - AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translateDirect("schedule.continued"), true); + if (onServer) { + train.runtime.paused = false; + AllSoundEvents.CONFIRM.playOnServer(player.level, player.blockPosition(), 1, 1); + player.displayClientMessage(Lang.translateDirect("schedule.continued"), true); + } + + player.getCooldowns() + .addCooldown(AllItems.SCHEDULE.get(), 5); + event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); return; } ItemStack itemInHand = player.getItemInHand(event.getHand()); if (!itemInHand.isEmpty()) { - AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); - player.displayClientMessage(Lang.translateDirect("schedule.remove_with_empty_hand"), true); + if (onServer) { + AllSoundEvents.DENY.playOnServer(player.level, player.blockPosition(), 1, 1); + player.displayClientMessage(Lang.translateDirect("schedule.remove_with_empty_hand"), true); + } + event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); return; } - AllSoundEvents.playItemPickup(player); - player.displayClientMessage( - Lang.translateDirect( - train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train"), - true); + if (onServer) { + AllSoundEvents.playItemPickup(player); + player.displayClientMessage( + Lang.translateDirect( + train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train"), + true); - player.getInventory() - .placeItemBackInInventory(train.runtime.returnSchedule()); -// player.setItemInHand(event.getHand(), train.runtime.returnSchedule()); + player.getInventory() + .placeItemBackInInventory(train.runtime.returnSchedule()); + } + + player.getCooldowns() + .addCooldown(AllItems.SCHEDULE.get(), 5); + event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java index 6df3d0411..f7bc8a340 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java @@ -29,6 +29,9 @@ import net.minecraft.world.level.Level; public class ScheduleRuntime { + private static final int TBD = -1; + private static final int INVALID = -2; + public enum State { PRE_TRANSIT, IN_TRANSIT, POST_TRANSIT } @@ -129,7 +132,7 @@ public class ScheduleRuntime { destinationReached(); return; } - if (train.navigation.startNavigation(nextStation, Double.MAX_VALUE, false) != -1) { + if (train.navigation.startNavigation(nextStation, Double.MAX_VALUE, false) != TBD) { state = State.IN_TRANSIT; ticksInTransit = 0; } @@ -231,7 +234,7 @@ public class ScheduleRuntime { isAutoSchedule = auto; train.status.newSchedule(); predictionTicks = new ArrayList<>(); - schedule.entries.forEach($ -> predictionTicks.add(-1)); + schedule.entries.forEach($ -> predictionTicks.add(TBD)); displayLinkUpdateRequested = true; } @@ -269,8 +272,10 @@ public class ScheduleRuntime { if (currentStation != null) predictions.add(createPrediction(current, currentStation.name, currentTitle, 0)); int departureTime = estimateStayDuration(current); - if (departureTime == -1) - accumulatedTime = -1; + if (departureTime == INVALID) + accumulatedTime = INVALID; + else + accumulatedTime += departureTime; } else { GlobalStation destination = train.navigation.destination; @@ -292,10 +297,10 @@ public class ScheduleRuntime { predictions.add(createPrediction(current, destination.name, currentTitle, accumulatedTime)); int departureTime = estimateStayDuration(current); - if (departureTime != -1) + if (departureTime != INVALID) accumulatedTime += departureTime; - if (departureTime == -1) - accumulatedTime = -1; + else + accumulatedTime = INVALID; } else predictForEntry(current, currentTitle, accumulatedTime, predictions); @@ -327,47 +332,56 @@ public class ScheduleRuntime { return accumulatedTime; if (predictionTicks.size() <= currentEntry) return accumulatedTime; - if (accumulatedTime == -1) { + + int departureTime = estimateStayDuration(index); + + if (accumulatedTime < 0) { predictions.add(createPrediction(index, filter.getFilter(), currentTitle, accumulatedTime)); - return -1; + return Math.min(accumulatedTime, departureTime); } int predictedTime = predictionTicks.get(index); - int departureTime = estimateStayDuration(index); + accumulatedTime += predictedTime; - if (predictedTime == -1) - accumulatedTime = -1; - else { - accumulatedTime += predictedTime; - if (departureTime != -1) - accumulatedTime += departureTime; - } + if (predictedTime == TBD) + accumulatedTime = TBD; predictions.add(createPrediction(index, filter.getFilter(), currentTitle, accumulatedTime)); - if (departureTime == -1) - return -1; - + if (accumulatedTime != TBD) + accumulatedTime += departureTime; + + if (departureTime == INVALID) + accumulatedTime = INVALID; + return accumulatedTime; } private int estimateStayDuration(int index) { if (index >= schedule.entries.size()) { if (!schedule.cyclic) - return 100000; + return INVALID; index = 0; } ScheduleEntry scheduleEntry = schedule.entries.get(index); - for (List list : scheduleEntry.conditions) - for (ScheduleWaitCondition condition : list) - if (condition instanceof ScheduledDelay wait) - return wait.totalWaitTicks(); + Columns: for (List list : scheduleEntry.conditions) { + int total = 0; + for (ScheduleWaitCondition condition : list) { + if (!(condition instanceof ScheduledDelay wait)) + continue Columns; + total += wait.totalWaitTicks(); + } + return total; + } - return 5; // TODO properly ask conditions for time prediction + return INVALID; } private TrainDeparturePrediction createPrediction(int index, String destination, String currentTitle, int time) { + if (time == INVALID) + return null; + int size = schedule.entries.size(); if (index >= size) { if (!schedule.cyclic) @@ -422,7 +436,7 @@ public class ScheduleRuntime { int[] readTransits = tag.getIntArray("TransitTimes"); if (schedule != null) { - schedule.entries.forEach($ -> predictionTicks.add(-1)); + schedule.entries.forEach($ -> predictionTicks.add(TBD)); if (readTransits.length == schedule.entries.size()) for (int i = 0; i < readTransits.length; i++) predictionTicks.set(i, readTransits[i]); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/CargoThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/CargoThresholdCondition.java index a41d95ddd..75b1f0a07 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/CargoThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/CargoThresholdCondition.java @@ -110,6 +110,8 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio public List getSecondLineTooltip(int slot) { return ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.place_item"), Lang.translateDirect("schedule.condition.threshold.place_item_2") + .withStyle(ChatFormatting.GRAY), + Lang.translateDirect("schedule.condition.threshold.place_item_3") .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java index 1b8405070..0c3f25f55 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java @@ -44,9 +44,6 @@ public class FluidThresholdCondition extends CargoThresholdCondition { Ops operator = getOperator(); int target = getThreshold(); - if (compareStack.isEmpty()) - return true; - int foundFluid = 0; for (Carriage carriage : train.carriages) { IFluidHandler fluids = carriage.storage.getFluids(); @@ -100,9 +97,10 @@ public class FluidThresholdCondition extends CargoThresholdCondition { Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), Lang.translateDirect("schedule.condition.threshold.buckets"), - compareStack.getItem() instanceof FilterItem - ? Lang.translateDirect("schedule.condition.threshold.matching_content") - : loadFluid().getDisplayName()) + compareStack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything") + : compareStack.getItem() instanceof FilterItem + ? Lang.translateDirect("schedule.condition.threshold.matching_content") + : loadFluid().getDisplayName()) .withStyle(ChatFormatting.DARK_AQUA)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java index 8b05e24d4..78905d201 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java @@ -41,9 +41,6 @@ public class ItemThresholdCondition extends CargoThresholdCondition { int target = getThreshold(); boolean stacks = inStacks(); - if (stack.isEmpty()) - return true; - int foundItems = 0; for (Carriage carriage : train.carriages) { IItemHandlerModifiable items = carriage.storage.getItems(); @@ -97,8 +94,10 @@ public class ItemThresholdCondition extends CargoThresholdCondition { Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")), - stack.getItem() instanceof FilterItem ? Lang.translateDirect("schedule.condition.threshold.matching_content") - : stack.getHoverName()) + stack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything") + : stack.getItem() instanceof FilterItem + ? Lang.translateDirect("schedule.condition.threshold.matching_content") + : stack.getHoverName()) .withStyle(ChatFormatting.DARK_AQUA)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java index 7760bc585..2f57368af 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/StationPoweredCondition.java @@ -10,7 +10,10 @@ 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.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -26,9 +29,14 @@ public class StationPoweredCondition extends ScheduleWaitCondition { if (currentStation == null) return false; BlockPos stationPos = currentStation.getTilePos(); - if (!level.isLoaded(stationPos)) + ResourceKey stationDim = currentStation.getTileDimension(); + MinecraftServer server = level.getServer(); + if (server == null) return false; - return level.hasNeighborSignal(stationPos); + ServerLevel stationLevel = server.getLevel(stationDim); + if (stationLevel == null || !stationLevel.isLoaded(stationPos)) + return false; + return stationLevel.hasNeighborSignal(stationPos); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/FakeTrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/FakeTrackBlock.java index cb69aba49..bd669b403 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/FakeTrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/FakeTrackBlock.java @@ -10,6 +10,7 @@ import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -21,6 +22,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -43,6 +45,11 @@ public class FakeTrackBlock extends Block implements EntityBlock, ProperWaterlog public RenderShape getRenderShape(BlockState pState) { return RenderShape.ENTITYBLOCK_ANIMATED; } + + @Override + public BlockPathTypes getAiPathNodeType(BlockState state, BlockGetter world, BlockPos pos, Mob entity) { + return BlockPathTypes.DAMAGE_OTHER; + } @Override protected void createBlockStateDefinition(Builder pBuilder) { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index 55dd45c59..48664b073 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -66,6 +66,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -89,6 +90,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.portal.PortalForcer; import net.minecraft.world.level.portal.PortalInfo; import net.minecraft.world.phys.AABB; @@ -119,6 +121,11 @@ public class TrackBlock extends Block protected void createBlockStateDefinition(Builder p_49915_) { super.createBlockStateDefinition(p_49915_.add(SHAPE, HAS_TE, WATERLOGGED)); } + + @Override + public BlockPathTypes getAiPathNodeType(BlockState state, BlockGetter world, BlockPos pos, Mob entity) { + return BlockPathTypes.RAIL; + } @Override public FluidState getFluidState(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java index d4462ca78..d79dc1586 100644 --- a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java +++ b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java @@ -17,6 +17,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.StringTag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.world.item.Item; @@ -154,7 +155,11 @@ public class MaterialChecklist { private Component entry(ItemStack item, int amount, boolean unfinished) { int stacks = amount / 64; int remainder = amount % 64; - MutableComponent tc = Components.translatable(item.getDescriptionId()); + MutableComponent tc = Components.empty(); + tc.append(Components.translatable(item.getDescriptionId()) + .setStyle(Style.EMPTY + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new HoverEvent.ItemStackInfo(item))))); + if (!unfinished) tc.append(" \u2714"); tc.withStyle(unfinished ? ChatFormatting.BLUE : ChatFormatting.DARK_GREEN); diff --git a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java index 64139ca20..90fa16b04 100644 --- a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java @@ -31,7 +31,7 @@ import net.minecraft.world.phys.Vec3; public class DumpRailwaysCommand { static ArgumentBuilder register() { - return Commands.literal("dumpRailways") + return Commands.literal("trains") .requires(cs -> cs.hasPermission(2)) .executes(ctx -> { CommandSourceStack source = ctx.getSource(); @@ -52,7 +52,7 @@ public class DumpRailwaysCommand { int orange = 0xFFAD60; chat.accept("", white); - chat.accept("-+------<< Railways Summary: >>------+-", white); + chat.accept("-+------<< Train Summary: >>------+-", white); int graphCount = railways.trackNetworks.size(); chat.accept("Track Networks: " + graphCount, blue); chat.accept("Signal Groups: " + railways.signalEdgeGroups.size(), blue); diff --git a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java index 18b0a54fe..3f29ecced 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java @@ -4,6 +4,7 @@ public class CRecipes extends ConfigBase { public final ConfigBool bulkPressing = b(false, "bulkPressing", Comments.bulkPressing); public final ConfigBool bulkCutting = b(false, "bulkCutting", Comments.bulkCutting); + public final ConfigBool allowBrewingInMixer = b(true, "allowBrewingInMixer", Comments.allowBrewingInMixer); public final ConfigBool allowShapelessInMixer = b(true, "allowShapelessInMixer", Comments.allowShapelessInMixer); public final ConfigBool allowShapedSquareInPress = b(true, "allowShapedSquareInPress", Comments.allowShapedSquareInPress); public final ConfigBool allowRegularCraftingInCrafter = @@ -28,8 +29,9 @@ public class CRecipes extends ConfigBase { private static class Comments { static String bulkPressing = "Allow the Mechanical Press to process entire stacks at a time."; static String bulkCutting = "Allow the Mechanical Saw to process entire stacks at a time."; + static String allowBrewingInMixer = "Allow supported potions to be brewed by a Mechanical Mixer + Basin."; static String allowShapelessInMixer = - "Allow allows any shapeless crafting recipes to be processed by a Mechanical Mixer + Basin."; + "Allow any shapeless crafting recipes to be processed by a Mechanical Mixer + Basin."; static String allowShapedSquareInPress = "Allow any single-ingredient 2x2 or 3x3 crafting recipes to be processed by a Mechanical Press + Basin."; static String allowRegularCraftingInCrafter = diff --git a/src/main/java/com/simibubi/create/foundation/config/CStress.java b/src/main/java/com/simibubi/create/foundation/config/CStress.java index 344394f98..bfc15855b 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CStress.java +++ b/src/main/java/com/simibubi/create/foundation/config/CStress.java @@ -22,7 +22,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override protected void registerAll(Builder builder) { - builder.comment("", Comments.su, Comments.impact) + builder.comment(".", Comments.su, Comments.impact) .push("impact"); BlockStressDefaults.DEFAULT_IMPACTS.forEach((r, i) -> { if (r.getNamespace() @@ -31,7 +31,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { }); builder.pop(); - builder.comment("", Comments.su, Comments.capacity) + builder.comment(".", Comments.su, Comments.capacity) .push("capacity"); BlockStressDefaults.DEFAULT_CAPACITIES.forEach((r, i) -> { if (r.getNamespace() diff --git a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java index 352975c79..5559a8db4 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java +++ b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java @@ -110,11 +110,11 @@ public abstract class ConfigBase { public void addComments(Builder builder, String... comment) { if (comment.length > 0) { String[] comments = new String[comment.length + 1]; - comments[0] = " "; + comments[0] = "."; System.arraycopy(comment, 0, comments, 1, comment.length); builder.comment(comments); } else - builder.comment(" "); + builder.comment("."); } public void register(ForgeConfigSpec.Builder builder) { diff --git a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java index f197203bd..5aca81cdb 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java +++ b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java @@ -46,10 +46,11 @@ public enum ContraptionMovementSetting { } public static void registerDefaults() { - register(Blocks.BUDDING_AMETHYST, () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); register(Blocks.SPAWNER, () -> AllConfigs.SERVER.kinetics.spawnerMovement.get()); + register(Blocks.BUDDING_AMETHYST, () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); register(Blocks.OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); register(Blocks.CRYING_OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + register(Blocks.RESPAWN_ANCHOR, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); } public interface IMovementSettingProvider extends IForgeBlock { diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index b74e6e5dd..ba85a3dc2 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -204,11 +204,13 @@ public abstract class FluidIngredient implements Predicate { @SuppressWarnings("deprecation") @Override protected boolean testInternal(FluidStack t) { - if (tag == null) + if (tag == null) { for (FluidStack accepted : getMatchingFluidStacks()) if (accepted.getFluid() .isSame(t.getFluid())) return true; + return false; + } return t.getFluid().is(tag); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java index dff3c0741..f52baa2cb 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java @@ -5,6 +5,7 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.logging.log4j.util.TriConsumer; import org.spongepowered.asm.mixin.Final; @@ -56,18 +57,21 @@ public abstract class EntityContraptionInteractionMixin extends CapabilityProvid protected abstract void playStepSound(BlockPos p_180429_1_, BlockState p_180429_2_); private Set getIntersectingContraptions() { - Set contraptions = ContraptionHandler.loadedContraptions.get(self.level) - .values() - .stream() - .map(Reference::get) - .filter(cEntity -> cEntity != null && cEntity.collidingEntities.containsKey(self)) - .collect(Collectors.toSet()); + Set contraptions = getIntersectionContraptionsStream().collect(Collectors.toSet()); contraptions.addAll(self.level.getEntitiesOfClass(AbstractContraptionEntity.class, self.getBoundingBox() .inflate(1f))); return contraptions; } + private Stream getIntersectionContraptionsStream() { + return ContraptionHandler.loadedContraptions.get(self.level) + .values() + .stream() + .map(Reference::get) + .filter(cEntity -> cEntity != null && cEntity.collidingEntities.containsKey(self)); + } + private void forCollision(Vec3 anchorPos, TriConsumer action) { getIntersectingContraptions().forEach(cEntity -> { Vec3 localPos = ContraptionCollider.getWorldToLocalTranslation(anchorPos, cEntity); @@ -88,7 +92,7 @@ public abstract class EntityContraptionInteractionMixin extends CapabilityProvid @Inject(at = @At(value = "JUMP", opcode = 154, // IFNE line 661 injecting before `!blockstate.isAir(this.world, blockpos)` ordinal = 7), method = "move") - private void movementMixin(MoverType mover, Vec3 movement, CallbackInfo ci) { + private void movementStepMixin(MoverType mover, Vec3 movement, CallbackInfo ci) { // involves block step sounds on contraptions Vec3 worldPos = self.position() .add(0, -0.2, 0); AtomicBoolean stepped = new AtomicBoolean(false); @@ -104,6 +108,43 @@ public abstract class EntityContraptionInteractionMixin extends CapabilityProvid this.nextStep = this.nextStep(); } + @Inject(at = @At(value = "TAIL"), method = "move") + private void movementMixin(MoverType mover, Vec3 movement, CallbackInfo ci) { + // involves client-side view bobbing animation on contraptions + if (!self.level.isClientSide) + return; + if (self.isOnGround()) + return; + if (self.isPassenger()) + return; + + Vec3 worldPos = self.position() + .add(0, -0.2, 0); + boolean onAtLeastOneContraption = getIntersectionContraptionsStream().anyMatch(cEntity -> { + Vec3 localPos = ContraptionCollider.getWorldToLocalTranslation(worldPos, cEntity); + + localPos = worldPos.add(localPos); + + BlockPos blockPos = new BlockPos(localPos); + Contraption contraption = cEntity.getContraption(); + StructureTemplate.StructureBlockInfo info = contraption.getBlocks() + .get(blockPos); + + if (info == null) + return false; + + cEntity.registerColliding(self); + return true; + }); + + if (!onAtLeastOneContraption) + return; + + self.setOnGround(true); + self.getPersistentData() + .putBoolean("ContraptionGrounded", true); + } + @Inject(method = { "spawnSprintParticle" }, at = @At(value = "TAIL")) private void createRunningParticlesMixin(CallbackInfo ci) { Vec3 worldPos = self.position() 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 a87c02ef6..10c6a635f 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -188,7 +188,7 @@ public enum AllPackets { ; public static final ResourceLocation CHANNEL_NAME = Create.asResource("main"); - public static final int NETWORK_VERSION = 1; + public static final int NETWORK_VERSION = 2; public static final String NETWORK_VERSION_STR = String.valueOf(NETWORK_VERSION); public static SimpleChannel channel; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java index 3598a9492..731838dc7 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java @@ -134,14 +134,14 @@ public class PonderScene { } public Pair rayTraceScene(Vec3 from, Vec3 to) { - MutableObject> nearestHit = new MutableObject<>(); + MutableObject>> nearestHit = new MutableObject<>(); MutableDouble bestDistance = new MutableDouble(0); forEach(WorldSectionElement.class, wse -> { wse.resetSelectedBlock(); if (!wse.isVisible()) return; - Pair rayTrace = wse.rayTrace(world, from, to); + Pair rayTrace = wse.rayTrace(world, from, to); if (rayTrace == null) return; double distanceTo = rayTrace.getFirst() @@ -149,15 +149,17 @@ public class PonderScene { if (nearestHit.getValue() != null && distanceTo >= bestDistance.getValue()) return; - nearestHit.setValue(Pair.of(wse, rayTrace.getSecond())); + nearestHit.setValue(Pair.of(wse, rayTrace)); bestDistance.setValue(distanceTo); }); if (nearestHit.getValue() == null) return Pair.of(ItemStack.EMPTY, null); - BlockPos selectedPos = nearestHit.getValue() + Pair selectedHit = nearestHit.getValue() .getSecond(); + BlockPos selectedPos = selectedHit.getSecond() + .getBlockPos(); BlockPos origin = new BlockPos(basePlateOffsetX, 0, basePlateOffsetZ); if (!world.getBounds() @@ -176,9 +178,14 @@ public class PonderScene { .getFirst() .selectBlock(selectedPos); BlockState blockState = world.getBlockState(selectedPos); - ItemStack pickBlock = blockState.getCloneItemStack( - new BlockHitResult(VecHelper.getCenterOf(selectedPos), Direction.UP, selectedPos, true), world, selectedPos, - Minecraft.getInstance().player); + + Direction direction = selectedHit.getSecond() + .getDirection(); + Vec3 location = selectedHit.getSecond() + .getLocation(); + + ItemStack pickBlock = blockState.getCloneItemStack(new BlockHitResult(location, direction, selectedPos, true), + world, selectedPos, Minecraft.getInstance().player); return Pair.of(pickBlock, selectedPos); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index 5193df037..cf6955e22 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -34,6 +34,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -54,7 +55,7 @@ public class PonderWorld extends SchematicWorld { public PonderScene scene; protected Map originalBlocks; - protected Map originalTileEntities; + protected Map originalTileEntities; protected Map blockBreakingProgressions; protected List originalEntities; private Supplier asClientWorld = Suppliers.memoize(() -> WrappedClientWorld.of(this)); @@ -79,8 +80,7 @@ public class PonderWorld extends SchematicWorld { originalBlocks.clear(); originalTileEntities.clear(); blocks.forEach((k, v) -> originalBlocks.put(k, v)); - tileEntities.forEach( - (k, v) -> originalTileEntities.put(k, BlockEntity.loadStatic(k, blocks.get(k), v.saveWithFullMetadata()))); + tileEntities.forEach((k, v) -> originalTileEntities.put(k, v.saveWithFullMetadata())); entities.forEach(e -> EntityType.create(e.serializeNBT(), this) .ifPresent(originalEntities::add)); } @@ -93,7 +93,7 @@ public class PonderWorld extends SchematicWorld { renderedTileEntities.clear(); originalBlocks.forEach((k, v) -> blocks.put(k, v)); originalTileEntities.forEach((k, v) -> { - BlockEntity te = BlockEntity.loadStatic(k, originalBlocks.get(k), v.saveWithFullMetadata()); + BlockEntity te = BlockEntity.loadStatic(k, originalBlocks.get(k), v); onTEadded(te, te.getBlockPos()); tileEntities.put(k, te); renderedTileEntities.add(te); @@ -109,8 +109,7 @@ public class PonderWorld extends SchematicWorld { if (originalBlocks.containsKey(p)) blocks.put(p, originalBlocks.get(p)); if (originalTileEntities.containsKey(p)) { - BlockEntity te = BlockEntity.loadStatic(p, originalBlocks.get(p), originalTileEntities.get(p) - .saveWithFullMetadata()); + BlockEntity te = BlockEntity.loadStatic(p, originalBlocks.get(p), originalTileEntities.get(p)); onTEadded(te, te.getBlockPos()); tileEntities.put(p, te); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java index f1afaeb47..a4bfb3537 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java @@ -181,7 +181,7 @@ public class WorldSectionElement extends AnimatedSceneElement { BlockPos worldPos; } - public Pair rayTrace(PonderWorld world, Vec3 source, Vec3 target) { + public Pair rayTrace(PonderWorld world, Vec3 source, Vec3 target) { world.setMask(this.section); Vec3 transformedTarget = reverseTransformVec(target); BlockHitResult rayTraceBlocks = world.clip(new ClipContext(reverseTransformVec(source), transformedTarget, @@ -199,7 +199,7 @@ public class WorldSectionElement extends AnimatedSceneElement { / source.subtract(target) .lengthSqr(); Vec3 actualHit = VecHelper.lerp((float) t, target, source); - return Pair.of(actualHit, rayTraceBlocks.getBlockPos()); + return Pair.of(actualHit, rayTraceBlocks); } private Vec3 reverseTransformVec(Vec3 in) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index f2cb5d081..9023920d9 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -24,6 +24,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; @@ -31,6 +33,7 @@ import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.BedBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.IceBlock; import net.minecraft.world.level.block.SlimeBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -40,6 +43,7 @@ import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Material; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; @@ -155,9 +159,11 @@ public class BlockHelper { float effectChance, Consumer droppedItemCallback) { FluidState fluidState = world.getFluidState(pos); BlockState state = world.getBlockState(pos); + if (world.random.nextFloat() < effectChance) world.levelEvent(2001, pos, Block.getId(state)); BlockEntity tileentity = state.hasBlockEntity() ? world.getBlockEntity(pos) : null; + if (player != null) { BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, state, player); MinecraftForge.EVENT_BUS.post(event); @@ -177,9 +183,25 @@ public class BlockHelper { && (player == null || !player.isCreative())) { for (ItemStack itemStack : Block.getDrops(state, (ServerLevel) world, pos, tileentity, player, usedTool)) droppedItemCallback.accept(itemStack); + + // Simulating IceBlock#playerDestroy. Not calling method directly as it would drop item + // entities as a side-effect + if (state.getBlock() instanceof IceBlock + && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, usedTool) == 0) { + if (world.dimensionType() + .ultraWarm()) + return; + + Material material = world.getBlockState(pos.below()) + .getMaterial(); + if (material.blocksMotion() || material.isLiquid()) + world.setBlockAndUpdate(pos, Blocks.WATER.defaultBlockState()); + return; + } + state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); } - + world.setBlockAndUpdate(pos, fluidState.createLegacyBlock()); } @@ -230,6 +252,8 @@ public class BlockHelper { state = Blocks.COMPOSTER.defaultBlockState(); else if (state.getBlock() != Blocks.SEA_PICKLE && state.getBlock() instanceof IPlantable) state = ((IPlantable) state.getBlock()).getPlant(world, target); + else if (state.is(BlockTags.CAULDRONS)) + state = Blocks.CAULDRON.defaultBlockState(); if (world.dimensionType() .ultraWarm() && state.getFluidState().is(FluidTags.WATER)) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java b/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java index af46f9b98..9cfe0d88f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java @@ -8,12 +8,14 @@ import java.util.List; import java.util.Optional; import java.util.Set; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Predicate; import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.simibubi.create.AllTags; +import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.compat.Mods; import com.simibubi.create.compat.dynamictrees.DynamicTree; @@ -42,12 +44,13 @@ public class TreeCutter { public static final Tree NO_TREE = new Tree(Collections.emptyList(), Collections.emptyList()); public static boolean canDynamicTreeCutFrom(Block startBlock) { - return Mods.DYNAMICTREES.runIfInstalled(() -> () -> DynamicTree.isDynamicBranch(startBlock)).orElse(false); + return Mods.DYNAMICTREES.runIfInstalled(() -> () -> DynamicTree.isDynamicBranch(startBlock)) + .orElse(false); } @Nonnull public static Optional findDynamicTree(Block startBlock, BlockPos pos) { - if (canDynamicTreeCutFrom(startBlock)) + if (canDynamicTreeCutFrom(startBlock)) return Mods.DYNAMICTREES.runIfInstalled(() -> () -> new DynamicTree(pos)); return Optional.empty(); } @@ -121,59 +124,63 @@ public class TreeCutter { if (!isLog(reader.getBlockState(currentPos))) continue; logs.add(currentPos); - addNeighbours(currentPos, frontier, visited); + forNeighbours(currentPos, visited, true, p -> frontier.add(new BlockPos(p))); } // Find all leaves visited.clear(); visited.addAll(logs); frontier.addAll(logs); + while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - if (!logs.contains(currentPos) && visited.contains(currentPos)) + BlockPos prevPos = frontier.remove(0); + if (!logs.contains(prevPos) && visited.contains(prevPos)) continue; - visited.add(currentPos); - BlockState blockState = reader.getBlockState(currentPos); - boolean isLog = isLog(blockState); - boolean isLeaf = isLeaf(blockState); - boolean isGenericLeaf = isLeaf || isNonDecayingLeaf(blockState); + visited.add(prevPos); + BlockState prevState = reader.getBlockState(prevPos); + int prevLeafDistance = isLeaf(prevState) ? getLeafDistance(prevState) : 0; - if (!isLog && !isGenericLeaf) - continue; - if (isGenericLeaf) - leaves.add(currentPos); + forNeighbours(prevPos, visited, false, currentPos -> { + BlockState state = reader.getBlockState(currentPos); + BlockPos subtract = currentPos.subtract(pos); + BlockPos currentPosImmutable = currentPos.immutable(); + + if (AllBlockTags.TREE_ATTACHMENTS.matches(state)) { + leaves.add(currentPosImmutable); + visited.add(currentPosImmutable); + return; + } - IntegerProperty distanceProperty = LeavesBlock.DISTANCE; - for (Property property : blockState.getValues() - .keySet()) - if (property instanceof IntegerProperty ip && property.getName() - .equals("distance")) - distanceProperty = ip; - - int distance = !isLeaf ? 0 : blockState.getValue(distanceProperty); - for (Direction direction : Iterate.directions) { - BlockPos offset = currentPos.relative(direction); - if (visited.contains(offset)) - continue; - BlockState state = reader.getBlockState(offset); - BlockPos subtract = offset.subtract(pos); - - for (Property property : state.getValues().keySet()) - if (property instanceof IntegerProperty ip && property.getName().equals("distance")) - distanceProperty = ip; - int horizontalDistance = Math.max(Math.abs(subtract.getX()), Math.abs(subtract.getZ())); - if (isLeaf(state) && state.getValue(distanceProperty) > distance - || isNonDecayingLeaf(state) && horizontalDistance < 4) - frontier.add(offset); - } + if (horizontalDistance <= nonDecayingLeafDistance(state)) { + leaves.add(currentPosImmutable); + frontier.add(currentPosImmutable); + return; + } + if (isLeaf(state) && getLeafDistance(state) > prevLeafDistance) { + leaves.add(currentPosImmutable); + frontier.add(currentPosImmutable); + return; + } + + }); } return new Tree(logs, leaves); } + private static int getLeafDistance(BlockState state) { + IntegerProperty distanceProperty = LeavesBlock.DISTANCE; + for (Property property : state.getValues() + .keySet()) + if (property instanceof IntegerProperty ip && property.getName() + .equals("distance")) + distanceProperty = ip; + return state.getValue(distanceProperty); + } + public static boolean isChorus(BlockState stateAbove) { return stateAbove.getBlock() instanceof ChorusPlantBlock || stateAbove.getBlock() instanceof ChorusFlowerBlock; } @@ -232,23 +239,32 @@ public class TreeCutter { return true; } - private static void addNeighbours(BlockPos pos, List frontier, Set visited) { - BlockPos.betweenClosedStream(pos.offset(-1, -1, -1), pos.offset(1, 1, 1)) + private static void forNeighbours(BlockPos pos, Set visited, boolean up, Consumer acceptor) { + BlockPos.betweenClosedStream(pos.offset(-1, up ? 0 : -1, -1), pos.offset(1, 1, 1)) .filter(((Predicate) visited::contains).negate()) - .forEach(p -> frontier.add(new BlockPos(p))); + .forEach(acceptor); } - private static boolean isLog(BlockState state) { - return state.is(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(state); + public static boolean isLog(BlockState state) { + return state.is(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(state) + || state.is(Blocks.MUSHROOM_STEM); } - private static boolean isNonDecayingLeaf(BlockState state) { - return state.is(BlockTags.WART_BLOCKS) || state.getBlock() == Blocks.SHROOMLIGHT; + private static int nonDecayingLeafDistance(BlockState state) { + if (state.is(Blocks.RED_MUSHROOM_BLOCK)) + return 2; + if (state.is(Blocks.BROWN_MUSHROOM_BLOCK)) + return 3; + if (state.is(BlockTags.WART_BLOCKS) || state.is(Blocks.WEEPING_VINES) || state.is(Blocks.WEEPING_VINES_PLANT)) + return 3; + return -1; } private static boolean isLeaf(BlockState state) { - for (Property property : state.getValues().keySet()) - if (property instanceof IntegerProperty && property.getName().equals("distance")) + for (Property property : state.getValues() + .keySet()) + if (property instanceof IntegerProperty && property.getName() + .equals("distance")) return true; return false; } diff --git a/src/main/java/com/simibubi/create/foundation/utility/recipe/DummyCraftingContainer.java b/src/main/java/com/simibubi/create/foundation/utility/recipe/DummyCraftingContainer.java new file mode 100644 index 000000000..8b3c74b4e --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/recipe/DummyCraftingContainer.java @@ -0,0 +1,80 @@ +package com.simibubi.create.foundation.utility.recipe; + +import org.jetbrains.annotations.NotNull; + +import net.minecraft.core.NonNullList; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.IItemHandler; + +public class DummyCraftingContainer extends CraftingContainer { + + private final NonNullList inv; + + public DummyCraftingContainer(IItemHandler itemHandler, int[] extractedItemsFromSlot) { + super(null, 0, 0); + + this.inv = createInventory(itemHandler, extractedItemsFromSlot); + } + + @Override + public int getContainerSize() { + return this.inv.size(); + } + + @Override + public boolean isEmpty() { + for (int slot = 0; slot < this.getContainerSize(); slot++) { + if (!this.getItem(slot).isEmpty()) + return false; + } + + return true; + } + + @Override + public @NotNull ItemStack getItem(int slot) { + return slot >= this.getContainerSize() ? ItemStack.EMPTY : this.inv.get(slot); + } + + @Override + public @NotNull ItemStack removeItemNoUpdate(int slot) { + return ItemStack.EMPTY; + } + + @Override + public @NotNull ItemStack removeItem(int slot, int count) { + return ItemStack.EMPTY; + } + + @Override + public void setItem(int slot, @NotNull ItemStack stack) {} + + @Override + public void clearContent() {} + + @Override + public void fillStackedContents(@NotNull StackedContents helper) {} + + private static NonNullList createInventory(IItemHandler itemHandler, int[] extractedItemsFromSlot) { + NonNullList inv = NonNullList.create(); + + for (int slot = 0; slot < itemHandler.getSlots(); slot++) { + ItemStack stack = itemHandler.getStackInSlot(slot); + + if (stack.isEmpty()) + continue; + + for (int i = 0; i < extractedItemsFromSlot[slot]; i++) { + ItemStack stackCopy = stack.copy(); + stackCopy.setCount(1); + + inv.add(stackCopy); + } + } + + return inv; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java index ad855a7a7..c99761ef5 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java @@ -7,6 +7,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; public class PlacementSimulationServerWorld extends WrappedServerWorld { public HashMap blocksAdded; @@ -52,5 +53,10 @@ public class PlacementSimulationServerWorld extends WrappedServerWorld { return blocksAdded.get(pos); return Blocks.AIR.defaultBlockState(); } - + + @Override + public FluidState getFluidState(BlockPos pos) { + return getBlockState(pos).getFluidState(); + } + } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 10430dbe9..8fb436889 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -33,6 +33,6 @@ Technology that empowers the player.''' [[dependencies.create]] modId="flywheel" mandatory=true - versionRange="[0.6.5,0.6.6)" + versionRange="[0.6.5,0.6.7)" ordering="AFTER" side="CLIENT" diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json index fd7918ef3..572ec59ed 100644 --- a/src/main/resources/assets/create/lang/de_de.json +++ b/src/main/resources/assets/create/lang/de_de.json @@ -1602,7 +1602,7 @@ "create.train.status.end_of_track": "Ein Waggon hat das Ende seines Gleises erreicht", "create.train.status.double_portal": "Ein Waggon kann kein Portal während des Verlassens eines anderen betreten", "create.train.status.coupling_stress": "Zwangsbremsung aufgrund von Spannung an einer Kopplung", - "create.train.status.track_missing": "Gleisen fehlen unter dem Zug", + "create.train.status.track_missing": "Gleise fehlen unter dem Zug", "create.train.status.paused_for_manual": "Fahrplan für manuelle Fahrt pausiert", "create.train.status.opposite_driver": "Pfad erfordert einen in die andere Richtung zeigenden Fahrer", "create.train.status.missing_driver": "Fahrer ist verschwunden", @@ -1675,7 +1675,7 @@ "create.display_source.station_summary.platform_column": "Spalte 'Gleis' Größe", "create.display_source.station_summary.now": "jetzt", "create.display_source.station_summary.minutes": "min", - "create.display_source.station_summary.seconds": "%1$sen", + "create.display_source.station_summary.seconds": "%1$ss", "create.display_source.observed_train_name": "Zugnamen ermitteln", "create.display_source.max_enchant_level": "Max. Verzauberungskosten", "create.display_source.boiler_status": "Kesselstatus", @@ -2041,4 +2041,4 @@ "_": "Thank you for translating Create!" -} \ No newline at end of file +} diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 0f57cb0aa..2c861151e 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -652,6 +652,7 @@ "create.schedule.condition.threshold.equal": "exactly", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s", "create.schedule.condition.threshold.matching_content": "Matching Content", + "create.schedule.condition.threshold.anything": "Anything", "create.schedule.condition.threshold.item_measure": "Item Measure", "create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.stacks": "Stacks", @@ -659,6 +660,7 @@ "create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "Reference Item", "create.schedule.condition.threshold.place_item_2": "Filters can be used", + "create.schedule.condition.threshold.place_item_3": "Leave empty to match any", "create.schedule.condition.fluid_threshold": "Fluid Cargo Condition", "create.schedule.condition.item_threshold": "Item Cargo Condition", "create.schedule.condition.redstone_link": "Redstone Link", diff --git a/src/main/resources/assets/create/lang/it_it.json b/src/main/resources/assets/create/lang/it_it.json index 7ebee699e..1fad33241 100644 --- a/src/main/resources/assets/create/lang/it_it.json +++ b/src/main/resources/assets/create/lang/it_it.json @@ -1,5 +1,5 @@ { - "_": "->------------------------] Game Elements [------------------------<-", + "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "Finestra di acacia", "block.create.acacia_window_pane": "Pannello di finestra di acacia", @@ -20,13 +20,13 @@ "block.create.belt": "Nastro", "block.create.birch_window": "Finestra di betulla", "block.create.birch_window_pane": "Pannello di finestra di betulla", - "block.create.black_nixie_tube": "Tubo di Nixie nero", + "block.create.black_nixie_tube": "Tubo Nixie nero", "block.create.black_sail": "Vela nera", "block.create.black_seat": "Sedile nero", "block.create.black_toolbox": "Cassetta degli attrezzi nera", "block.create.black_valve_handle": "Maniglia per valvola nera", "block.create.blaze_burner": "Inceneritore a blaze", - "block.create.blue_nixie_tube": "Tubo di Nixie blu", + "block.create.blue_nixie_tube": "Tubo Nixie blu", "block.create.blue_sail": "Vela blu", "block.create.blue_seat": "Sedile blu", "block.create.blue_toolbox": "Cassetta degli attrezzi blu", @@ -40,7 +40,7 @@ "block.create.brass_funnel": "Imbuto di ottone", "block.create.brass_ladder": "Scala a pioli in ottone", "block.create.brass_tunnel": "Tunnel di ottone", - "block.create.brown_nixie_tube": "Tubo di Nixie marrone", + "block.create.brown_nixie_tube": "Tubo Nixie marrone", "block.create.brown_sail": "Vela marrone", "block.create.brown_seat": "Sedile marrone", "block.create.brown_toolbox": "Cassetta degli attrezzi marrone", @@ -187,7 +187,7 @@ "block.create.cut_veridium_slab": "Lastra di veridio tagliato", "block.create.cut_veridium_stairs": "Scalini di veridio tagliato", "block.create.cut_veridium_wall": "Muretto di veridio tagliato", - "block.create.cyan_nixie_tube": "Tubo di Nixie ciano", + "block.create.cyan_nixie_tube": "Tubo Nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Sedile ciano", "block.create.cyan_toolbox": "Cassetta degli attrezzi ciano", @@ -226,12 +226,12 @@ "block.create.gearshift": "Cambio", "block.create.glass_fluid_pipe": "Tubo per fluidi con vetrata", "block.create.granite_pillar": "Pilastro di granito", - "block.create.gray_nixie_tube": "Tubo di Nixie grigio", + "block.create.gray_nixie_tube": "Tubo Nixie grigio", "block.create.gray_sail": "Vela grigia", "block.create.gray_seat": "Sedile grigio", "block.create.gray_toolbox": "Cassetta degli attrezzi grigia", "block.create.gray_valve_handle": "Maniglia per valvola grigia", - "block.create.green_nixie_tube": "Tubo di Nixie verde", + "block.create.green_nixie_tube": "Tubo Nixie verde", "block.create.green_sail": "Vela verde", "block.create.green_seat": "Sedile verde", "block.create.green_toolbox": "Cassetta degli attrezzi verde", @@ -263,17 +263,17 @@ "block.create.layered_tuff": "Tufo stratificato", "block.create.layered_veridium": "Veridio stratificato", "block.create.lectern_controller": "Leggio con pulsantiera", - "block.create.light_blue_nixie_tube": "Tubo di Nixie azzurro", + "block.create.light_blue_nixie_tube": "Tubo Nixie azzurro", "block.create.light_blue_sail": "Vela azzurra", "block.create.light_blue_seat": "Sedile azzurro", "block.create.light_blue_toolbox": "Cassetta degli attrezzi azzurra", "block.create.light_blue_valve_handle": "Maniglia per valvola azzurra", - "block.create.light_gray_nixie_tube": "Tubo di Nixie grigio chiaro", + "block.create.light_gray_nixie_tube": "Tubo Nixie grigio chiaro", "block.create.light_gray_sail": "Vela grigio chiaro", "block.create.light_gray_seat": "Sedile grigio chiaro", "block.create.light_gray_toolbox": "Cassetta degli attrezzi grigia chiaro", "block.create.light_gray_valve_handle": "Maniglia per valvola grigio chiaro", - "block.create.lime_nixie_tube": "Tubo di Nixie lime", + "block.create.lime_nixie_tube": "Tubo Nixie lime", "block.create.lime_sail": "Vela lime", "block.create.lime_seat": "Sedile lime", "block.create.lime_toolbox": "Cassetta degli attrezzi lime", @@ -282,7 +282,7 @@ "block.create.limestone_pillar": "Pilastro di calcare", "block.create.linear_chassis": "Telaio lineare", "block.create.lit_blaze_burner": "Inceneritore a blaze acceso", - "block.create.magenta_nixie_tube": "Tubo di Nixie magenta", + "block.create.magenta_nixie_tube": "Tubo Nixie magenta", "block.create.magenta_sail": "Vela magenta", "block.create.magenta_seat": "Sedile magenta", "block.create.magenta_toolbox": "Cassetta degli attrezzi magenta", @@ -305,7 +305,7 @@ "block.create.millstone": "Macina", "block.create.minecart_anchor": "Ancora per carrello da miniera", "block.create.mysterious_cuckoo_clock": "Orologio a cucù misterioso", - "block.create.nixie_tube": "Tubo di Nixie", + "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Dispersore", "block.create.oak_window": "Finestra di quercia", "block.create.oak_window_pane": "Pannello di finestra di quercia", @@ -324,7 +324,7 @@ "block.create.oxidized_copper_tile_stairs": "Scalini di mattonelle di rame ossidato", "block.create.oxidized_copper_tiles": "Mattonelle di rame ossidato", "block.create.peculiar_bell": "Campana peculiare", - "block.create.pink_nixie_tube": "Tubo di Nixie rosa", + "block.create.pink_nixie_tube": "Tubo Nixie rosa", "block.create.pink_sail": "Vela rosa", "block.create.pink_seat": "Sedile rosa", "block.create.pink_toolbox": "Cassetta degli attrezzi rosa", @@ -395,7 +395,7 @@ "block.create.pulley_magnet": "Magnete della carrucola", "block.create.pulse_extender": "Estensore di impulsi", "block.create.pulse_repeater": "Ripetitore di impulsi", - "block.create.purple_nixie_tube": "Tubo di Nixie viola", + "block.create.purple_nixie_tube": "Tubo Nixie viola", "block.create.purple_sail": "Vela viola", "block.create.purple_seat": "Sedile viola", "block.create.purple_toolbox": "Cassetta degli attrezzi viola", @@ -403,7 +403,7 @@ "block.create.radial_chassis": "Telaio radiale", "block.create.railway_casing": "Rivestimento di treno", "block.create.raw_zinc_block": "Blocco di zinco grezzo", - "block.create.red_nixie_tube": "Tubo di Nixie rosso", + "block.create.red_nixie_tube": "Tubo Nixie rosso", "block.create.red_sail": "Vela rossa", "block.create.red_seat": "Sedile rosso", "block.create.red_toolbox": "Cassetta degli attrezzi rossa", @@ -547,14 +547,14 @@ "block.create.weathered_copper_tile_stairs": "Scalini di mattonelle di rame corroso", "block.create.weathered_copper_tiles": "Mattonelle di rame corroso", "block.create.weighted_ejector": "Espulsore di pesi", - "block.create.white_nixie_tube": "Tubo di Nixie bianco", + "block.create.white_nixie_tube": "Tubo Nixie bianco", "block.create.white_sail": "Vela bianca", "block.create.white_seat": "Sedile bianco", "block.create.white_toolbox": "Cassetta degli attrezzi bianca", "block.create.white_valve_handle": "Maniglia per valvola bianca", "block.create.windmill_bearing": "Supporto per mulino a vento", "block.create.wooden_bracket": "Supporto di legno", - "block.create.yellow_nixie_tube": "Tubo di Nixie giallo", + "block.create.yellow_nixie_tube": "Tubo Nixie giallo", "block.create.yellow_sail": "Vela gialla", "block.create.yellow_seat": "Sedile giallo", "block.create.yellow_toolbox": "Cassetta degli attrezzi gialla", @@ -1258,6 +1258,8 @@ "create.item_attributes.smokable.inverted": "non può essere affumicato", "create.item_attributes.blastable": "è fondibile in un forno fusorio", "create.item_attributes.blastable.inverted": "non è fondibile in un forno fusorio", + "create.item_attributes.compostable": "può essere gettato in una compstiera", + "create.item_attributes.compostable.inverted": "non può essere gettato in una compstiera", "create.item_attributes.shulker_level": "è uno shulker %1$s", "create.item_attributes.shulker_level.inverted": "non è uno shulker %1$s", "create.item_attributes.shulker_level.full": "pieno", @@ -1364,6 +1366,10 @@ "create.tooltip.chute.fans_pull_up": "Il ventilatore tira da sopra", "create.tooltip.chute.fans_pull_down": "Il ventilatore tira da sotto", "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", + "create.tooltip.deployer.header": "Informazioni sull'Installatore", + "create.tooltip.deployer.using": "Modalità: Utilizzo", + "create.tooltip.deployer.punching": "Modalità: Attacco", + "create.tooltip.deployer.contains": "Oggetto: %1$s x%2$s", "create.tooltip.brass_tunnel.contains": "Sta distribuendo:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "Click destro per recuperare", @@ -1643,7 +1649,7 @@ "create.display_source.list_items": "Lista di oggetti filtrati", "create.display_source.fluid_amount": "Quantità di fluidi filtrati", "create.display_source.list_fluids": "Lista di fluidi filtrati", - "create.display_source.nixie_tube": "Copia Tubo di Nixie", + "create.display_source.nixie_tube": "Copia Tubo Nixie", "create.display_source.fill_level": "Livello di riempimento", "create.display_source.fill_level.display": "Formato di visualizzazione", "create.display_source.fill_level.percent": "Percentuale", @@ -3014,8 +3020,5 @@ "create.ponder.windmill_source.text_7": "Fai click destro sul Supporto in qualsiasi momento per fermarlo e poter modificare di nuovo la struttura", "create.ponder.windmill_structure.header": "Macchinari per Mulini a vento", - "create.ponder.windmill_structure.text_1": "Qualsiasi struttura può essere un Mulino a vento vaido, purché contenga almeno 8 blocchi che possano essere considerati vele.", - - "_": "Thank you for translating Create!" - + "create.ponder.windmill_structure.text_1": "Qualsiasi struttura può essere un Mulino a vento valido, purché contenga almeno 8 blocchi che possano essere considerati vele." } \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/pl_pl.json b/src/main/resources/assets/create/lang/pl_pl.json index c4929b811..812020ecf 100644 --- a/src/main/resources/assets/create/lang/pl_pl.json +++ b/src/main/resources/assets/create/lang/pl_pl.json @@ -563,14 +563,14 @@ "block.create.zinc_block": "Blok cynku", "block.create.zinc_ore": "Złoże cynku", - "enchantment.create.capacity": "Pojameność", + "enchantment.create.capacity": "Pojemność", "enchantment.create.potato_recovery": "Odzyskiwanie", "entity.create.carriage_contraption": "Maszyna wagonowa", "entity.create.contraption": "Maszyna", "entity.create.crafting_blueprint": "Szablon konstruowania", "entity.create.gantry_contraption": "Maszyna suwnicowa", - "entity.create.potato_projectile": "Zimniaczany pocisk", + "entity.create.potato_projectile": "Ziemniaczany pocisk", "entity.create.seat": "Siedzenie", "entity.create.stationary_contraption": "Maszyna stacjonarna", "entity.create.super_glue": "Super Glue", diff --git a/src/main/resources/assets/create/lang/ru_ru.json b/src/main/resources/assets/create/lang/ru_ru.json index 882f7e7c7..ef512be4d 100644 --- a/src/main/resources/assets/create/lang/ru_ru.json +++ b/src/main/resources/assets/create/lang/ru_ru.json @@ -1,11 +1,11 @@ { "_": "Missing Localizations: -", - - "_": "->------------------------] Game Elements [------------------------<-", + "_": "Рекомендации по локализации: https://telegra.ph/Rekomendacii-po-lokalizacii-moda-Create-na-russkij-yazyk-08-22 ", + "_": "->------------------------] Элементы игры [------------------------<-", "block.create.acacia_window": "Акациевое окно", "block.create.acacia_window_pane": "Панель из акациевого окна", - "block.create.adjustable_chain_gearshift": "Регулируемый цепной механизм", + "block.create.adjustable_chain_gearshift": "Регулируемая цепная коробка передач", "block.create.analog_lever": "Аналоговый рычаг", "block.create.andesite_belt_funnel": "Андезитовая конвейерная воронка", "block.create.andesite_casing": "Андезитовый корпус", @@ -150,12 +150,12 @@ "block.create.cut_limestone_stairs": "Резные известковые ступеньки", "block.create.cut_limestone_wall": "Резная известковая ограда", "block.create.cut_ochrum": "Резной охрум", - "block.create.cut_ochrum_brick_slab": "Плита из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумовых кирпичей", - "block.create.cut_ochrum_bricks": "Резные кирпичи из охрума", - "block.create.cut_ochrum_slab": "Резная плита из охрума", - "block.create.cut_ochrum_stairs": "Резные ступеньки из охрума", + "block.create.cut_ochrum_brick_slab": "Плита из резных охрумывых кирпичей", + "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумывых кирпичей", + "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумывых кирпичей", + "block.create.cut_ochrum_bricks": "Резные охрумывые кирпичи", + "block.create.cut_ochrum_slab": "Резная охрумывая плита", + "block.create.cut_ochrum_stairs": "Резные охрумывые ступеньки", "block.create.cut_ochrum_wall": "Резная ограда из охрума", "block.create.cut_scorchia": "Резной тёмный пепел", "block.create.cut_scorchia_brick_slab": "Плита из резного тёмнопеплового кирпича", @@ -225,7 +225,7 @@ "block.create.gantry_carriage": "Шасси портального крана", "block.create.gantry_shaft": "Вал портального крана", "block.create.gearbox": "Коробка передач", - "block.create.gearshift": "Реверсивный механизм", + "block.create.gearshift": "Реверсивная коробка передач", "block.create.glass_fluid_pipe": "Стеклянная жидкостная труба", "block.create.granite_pillar": "Гранитная колонна", "block.create.gray_nixie_tube": "Серый газоразрядный индикатор", @@ -244,7 +244,7 @@ "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", "block.create.hose_pulley": "Шкив со шлангом", - "block.create.item_drain": "Предметный осушитель", + "block.create.item_drain": "Осушитель предметов", "block.create.item_vault": "Хранилище предметов", "block.create.jungle_window": "Окно из тропического дерева", "block.create.jungle_window_pane": "Панель окна из тропического дерева", @@ -306,13 +306,13 @@ "block.create.metal_girder_encased_shaft": "Вал в металлической балке", "block.create.millstone": "Жёрнов", "block.create.minecart_anchor": "Вагонеточная опора", - "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", + "block.create.mysterious_cuckoo_clock": "Странные часы с кукушкой", "block.create.nixie_tube": "Газоразрядный индикатор", "block.create.nozzle": "Форсунка", "block.create.oak_window": "Дубовое окно", "block.create.oak_window_pane": "Панель из дубового окна", "block.create.ochrum": "Охрум", - "block.create.ochrum_pillar": "Охрумовая колонна", + "block.create.ochrum_pillar": "Охрумывая колонна", "block.create.orange_sail": "Оранжевый парус", "block.create.orange_seat": "Оранжевое сиденье", "block.create.orange_toolbox": "Оранжевый ящик для инструментов", @@ -370,9 +370,9 @@ "block.create.polished_cut_limestone_stairs": "Полированные резные известковые ступеньки", "block.create.polished_cut_limestone_wall": "Полированная резная известковая ограда", "block.create.polished_cut_ochrum": "Полированный резной охрум", - "block.create.polished_cut_ochrum_slab": "Полированная резная охрумовая плита", - "block.create.polished_cut_ochrum_stairs": "Полированные резные охрумовые ступеньки", - "block.create.polished_cut_ochrum_wall": "Полированная резная охрумовая ограда", + "block.create.polished_cut_ochrum_slab": "Полированная резная охрумывая плита", + "block.create.polished_cut_ochrum_stairs": "Полированные резные охрумывые ступеньки", + "block.create.polished_cut_ochrum_wall": "Полированная резная охрумывая ограда", "block.create.polished_cut_scorchia": "Полированный резной тёмный пепел", "block.create.polished_cut_scorchia_slab": "Полированная резная тёмнопепловая плита", "block.create.polished_cut_scorchia_stairs": "Полированные резные тёмнопепловые ступеньки", @@ -467,15 +467,15 @@ "block.create.small_limestone_brick_stairs": "Ступеньки из мелкого известкового кирпича", "block.create.small_limestone_brick_wall": "Ограда из мелкого известкового кирпича", "block.create.small_limestone_bricks": "Мелкий известковый кирпич", - "block.create.small_ochrum_brick_slab": "Плита из мелкого охрумого кирпича", - "block.create.small_ochrum_brick_stairs": "Ступеньки из мелкого охрумого кирпича", - "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумого кирпича", - "block.create.small_ochrum_bricks": "Мелкие охрумовые кирпичи", + "block.create.small_ochrum_brick_slab": "Плита из мелкого охрумыго кирпича", + "block.create.small_ochrum_brick_stairs": "Ступеньки из мелкого охрумыго кирпича", + "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумыго кирпича", + "block.create.small_ochrum_bricks": "Мелкие охрумывые кирпичи", "block.create.small_rose_quartz_tiles": "Мелкая плитка из розового кварца", "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмнопеплового кирпича", - "block.create.small_scorchia_bricks": "Мелкие тёмно-пепловые кирпичи", + "block.create.small_scorchia_bricks": "Мелкие тёмнопепловые кирпичи", "block.create.small_scoria_brick_slab": "Плита из мелких пепловых кирпичей", "block.create.small_scoria_brick_stairs": "Ступеньки из мелких пепловых кирпичей", "block.create.small_scoria_brick_wall": "Ограда из мелких пепловых кирпичей", @@ -600,7 +600,7 @@ "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Заглушка на слот крафтера", - "item.create.crafting_blueprint": "Чёртеж", + "item.create.crafting_blueprint": "Чертёж", "item.create.creative_blaze_cake": "Творческий торт всполоха", "item.create.crushed_aluminum_ore": "Дроблёная алюминиевая руда", "item.create.crushed_copper_ore": "Дроблёная медная руда", @@ -654,7 +654,7 @@ "item.create.super_glue": "Суперклей", "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", - "item.create.unprocessed_obsidian_sheet": "Необработанный обсидиановый лист", + "item.create.unprocessed_obsidian_sheet": "Незаконченный прочный лист", "item.create.vertical_gearbox": "Вертикальная коробка передач", "item.create.wand_of_symmetry": "Жезл симметрии", "item.create.wheat_flour": "Пшеничная мука", @@ -664,14 +664,14 @@ "item.create.zinc_nugget": "Кусочек цинка", - "_": "->------------------------] Advancements [------------------------<-", + "_": "->------------------------] Достижения [------------------------<-", "advancement.create.root": "Добро пожаловать в Create!", - "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", + "advancement.create.root.desc": "Пришло время начать строить удивительные штуковины!", "advancement.create.andesite_alloy": "Повторение — мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", + "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них — Андезитовый сплав", "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания Андезитового корпуса", + "advancement.create.andesite_casing.desc": "Используйте Андезитовый сплав и обтёсанное дерево для создания Андезитового корпуса", "advancement.create.mechanical_press": "Пресс делает «Бонк!»", "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе", "advancement.create.encased_fan": "Механический маг воздуха", @@ -681,11 +681,11 @@ "advancement.create.saw_processing": "Ужас лесопилки", "advancement.create.saw_processing.desc": "Используйте вертикальную Механическую пилу для обработки материалов", "advancement.create.compacting": "Компактификация", - "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы спрессовать предметы", + "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы сжать предметы", "advancement.create.belt": "Передайте за проезд!", "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня", "advancement.create.funnel": "Эстетика аэропорта", - "advancement.create.funnel.desc": "Извлеките или добавьте элементы в контейнер с помощью Воронки", + "advancement.create.funnel.desc": "Извлеките или добавьте предмет в контейнер с помощью Воронки", "advancement.create.chute": "Упало", "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера", "advancement.create.mechanical_mixer": "Смешать, но не взбалтывать", @@ -709,75 +709,75 @@ "advancement.create.wrench_goggles": "Дресс-код механика", "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ", "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Очки, чтобы прочитать точное значение", + "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Инженерные очки, чтобы узнать точное значение", "advancement.create.cuckoo_clock": "Который час?", "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна", "advancement.create.windmill_maxed": "Ветер крепчает", "advancement.create.windmill_maxed.desc": "Соберите Ветряную мельницу максимальной силы", "advancement.create.ejector_maxed": "Чемпион катапульты", "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты", - "advancement.create.pulley_maxed": "Веревка в никуда", + "advancement.create.pulley_maxed": "Верёвка в никуда", "advancement.create.pulley_maxed.desc": "Растяните Лебёдку на глубину более 200 блоков", "advancement.create.cart_pickup": "Сильные руки", "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикреплёнными блоками", "advancement.create.anvil_plough": "Кузнечная артиллерия", - "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами", + "advancement.create.anvil_plough.desc": "Оттолкните падающую наковальню двигающимися Механическими плугами", "advancement.create.lava_wheel_00000": "Адское колесо", "advancement.create.lava_wheel_00000.desc": "Это не должно было работать!§7\n(Секретное достижение)", - "advancement.create.hand_crank_000": "Силовая тренировка", + "advancement.create.hand_crank_000": "Кручу-верчу", "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения§7\n(Секретное достижение)", "advancement.create.belt_funnel_kiss": "Механический ужин", "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на конвейере Воронки поцеловаться!", "advancement.create.stressometer_maxed": "Миллиметраж", "advancement.create.stressometer_maxed.desc": "Получите предельные показания Стрессометра§7\n(Секретное достижение)", "advancement.create.copper": "Более прочные камни", - "advancement.create.copper.desc": "Получите немного меди за хитрости с водой", + "advancement.create.copper.desc": "Получите медь за хитрости с водой", "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса", + "advancement.create.copper_casing.desc": "Используйте медный слиток для создания Медного корпуса", "advancement.create.spout": "Буль", "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора", "advancement.create.drain": "Промышленное осушение", - "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Предметного осушителя", + "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Осушителя предметов", "advancement.create.steam_engine": "Сила пара", "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы", "advancement.create.steam_whistle": "Голос ангела", "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток", "advancement.create.backtank": "Повышение давления", "advancement.create.backtank.desc": "Создайте Медный баллон и заставьте его закачивать воздух в себя", - "advancement.create.diving_suit": "Готов к погружению", + "advancement.create.diving_suit": "Кто проживает на дне океана?", "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду", - "advancement.create.mechanical_pump_0": "Под давлением", - "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос", + "advancement.create.mechanical_pump_0": "Закачаешься", + "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механическую помпу", "advancement.create.glass_pipe": "Шпион за потоками", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа", + "advancement.create.glass_pipe.desc": "Наблюдайте через окно в Трубе за тем как распространяется жидкость. Окно появится на Трубе при использовании Гаечного ключа", "advancement.create.water_supply": "Сборщик луж", - "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок", + "advancement.create.water_supply.desc": "Используйте Трубу или Помпу, чтобы собрать водный блок", "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью", + "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он осушает или заполняет пространство жидкостью", "advancement.create.chocolate_bucket": "Не слипнется!", - "advancement.create.chocolate_bucket.desc": "Получите Ведро расплавленного шоколада", + "advancement.create.chocolate_bucket.desc": "Получите Ведро шоколада", "advancement.create.honey_drain": "Укуси меня пчела!", "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают", "advancement.create.hose_pulley_lava": "Прикосновение к мантии", - "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным", - "advancement.create.steam_engine_maxed": "На полную мощность!", + "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из бесконечного источника", + "advancement.create.steam_engine_maxed": "С мёртвой точки!", "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности", - "advancement.create.foods": "Сбалансированная диета", - "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора", - "advancement.create.diving_suit_lava": "Плавание с лавомерками", - "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением§7\n(Секретное достижение)", + "advancement.create.foods": "Правильное питание", + "advancement.create.foods.desc": "Создайте Ягоды в шоколадной глазури, Яблоко в меду и Сладкий рулет; всё из одного Дозатора", + "advancement.create.diving_suit_lava": "Плохая идея", + "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением. Сделайте из этого выводы§7\n(Секретное достижение)", "advancement.create.chained_drain": "Смотри как могу!", - "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей§7\n(Секретное достижение)", + "advancement.create.chained_drain.desc": "Наблюдайте как предмет переворачивается по ряду Осушителей предметов§7\n(Секретное достижение)", "advancement.create.cross_streams": "Не пересекайте потоки!", - "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах§7\n(Секретное достижение)", + "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две разные жидкости встречаются в ваших Трубах§7\n(Секретное достижение)", "advancement.create.pipe_organ": "Иоганн Бах", "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью§7\n(Секретное достижение)", "advancement.create.brass": "Реальный сплав", - "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать немного Латуни", + "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать Латунь", "advancement.create.brass_casing": "Латунный век", - "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус", + "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и обтёсанную древесину, чтобы создать более продвинутый корпус", "advancement.create.rose_quartz": "Розовые алмазы", - "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца", + "advancement.create.rose_quartz.desc": "Отполируйте Розовый кварц", "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя", "advancement.create.precision_mechanism": "Сложные любопытства", @@ -785,12 +785,12 @@ "advancement.create.speed_controller": "Его ненавидят инженеры!", "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач", "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу", + "advancement.create.mechanical_arm.desc": "Активируйте Механическую руку. Затем смотрите как она делает за вас всю работу", "advancement.create.mechanical_crafter": "Лень — двигатель прогресса", - "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров", + "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров, чтобы создавать всякое", "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов", - "advancement.create.haunted_bell": "Помощь призраков", + "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше предметов", + "advancement.create.haunted_bell": "По ком звонит колокол", "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол", "advancement.create.clockwork_bearing": "Хитрые часы", "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме", @@ -798,10 +798,10 @@ "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации", "advancement.create.potato_cannon": "Свомп!", "advancement.create.potato_cannon.desc": "Победите врага с помощью своей Картофельной пушки!", - "advancement.create.extendo_grip": "Бойоиоинг!", + "advancement.create.extendo_grip": "Дальше — больше", "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку", - "advancement.create.linked_controller": "Удалённая активация", - "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна", + "advancement.create.linked_controller": "Восстановление связей", + "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации Беспроводного приёмника редстоун-сигнала", "advancement.create.arm_blaze_burner": "Поджигателе-трон", "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки всполоха", "advancement.create.crusher_maxed_0000": "Раздроби это!", @@ -810,30 +810,30 @@ "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов", "advancement.create.potato_cannon_collide": "Картофегиляция", "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом", - "advancement.create.self_deploying": "Самоходная вагонетка", + "advancement.create.self_deploying": "До чего дошёл прогресс!", "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой", "advancement.create.fist_bump": "Здарова, бро!", "advancement.create.fist_bump.desc": "Сделайте так, чтобы два Автономных активатора ударили кулаками", "advancement.create.crafter_lazy_000": "Отчаянные меры", "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство§7\n(Секретное достижение)", "advancement.create.extendo_grip_dual": "В полной мере", - "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости§7\n(Секретное достижение)", + "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер-досягаемости§7\n(Секретное достижение)", "advancement.create.musical_arm": "Сбацай что-нибудь!", "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки", "advancement.create.sturdy_sheet": "Ещё более твёрдые камни", - "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана", + "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из Порошкообразного обсидиана", "advancement.create.train_casing_00": "Железнодорожная эра", - "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса", + "advancement.create.train_casing_00.desc": "Используйте Прочные листы и Латунный корпус для создания Железнодорожного корпуса", "advancement.create.train": "Все на борт!", "advancement.create.train.desc": "Соберите свой первый поезд", "advancement.create.conductor": "Машинист-инструктор", "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию", "advancement.create.track_signal": "Управление движением", "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор", - "advancement.create.display_board_0": "Динамическое расписание", - "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации", + "advancement.create.display_board_0": "Эстетика вокзала", + "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на Табло с помощью Передатчика информации", "advancement.create.track_0": "Новая колея", - "advancement.create.track_0.desc": "Получите Железнодорожный путь", + "advancement.create.track_0.desc": "Создайте Железнодорожный путь", "advancement.create.train_whistle": "Чу-Чу!", "advancement.create.train_whistle.desc": "Прикрепите Паровой свисток к вашему поезду и погудите в него!", "advancement.create.train_portal": "Сквозь измерения", @@ -841,7 +841,7 @@ "advancement.create.track_crafting_factory": "Железнодорожная фабрика", "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе", "advancement.create.long_bend": "Крутой поворот", - "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков", + "advancement.create.long_bend.desc": "Создайте участок изогнутых Путей длиной более 30 блоков", "advancement.create.long_train": "Амбициозные усилия", "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами", "advancement.create.long_travel": "На дальней станции сойду", @@ -856,29 +856,29 @@ "advancement.create.train_crash_backwards.desc": "Врежьтесь в другой поезд, двигаясь задним ходом§7\n(Секретное достижение)", - "_": "->------------------------] UI & Messages [------------------------<-", + "_": "->------------------------] Интерфейс, подсказки и сообщения [------------------------<-", - "itemGroup.create.base": "Create: Механизмы", + "itemGroup.create.base": "Create: Основные", "itemGroup.create.palettes": "Create: Декор", "death.attack.create.crush": "%1$s был передроблен", - "death.attack.create.crush.player": "%2$s столкнул %1$s в дробящие колёса", - "death.attack.create.fan_fire": "%1$s был сожжён до смерти горячим воздухом", - "death.attack.create.fan_fire.player": "%2$s столкнул %1$s в коптильню", - "death.attack.create.fan_lava": "%1$s был сожжён до смерти поклонником лавы", - "death.attack.create.fan_lava.player": "%2$s столкнул %1$s в плавильню", + "death.attack.create.crush.player": "%1$s был передроблен благодаря %2$s", + "death.attack.create.fan_fire": "%1$s был высушен до смерти горячим воздухом", + "death.attack.create.fan_fire.player": "%1$s был высушен до смерти горячим воздухом благодаря %2$s", + "death.attack.create.fan_lava": "%1$s был сожжён огненным потоком", + "death.attack.create.fan_lava.player": "%1$s был сожжён огненным потоком благодаря %2$s", "death.attack.create.mechanical_drill": "%1$s был пронзён механической дрелью", - "death.attack.create.mechanical_drill.player": "%2$s толкнул %1$s под механическую дрель", + "death.attack.create.mechanical_drill.player": "%1$s был пронзён механической дрелью благодаря %2$s", "death.attack.create.mechanical_saw": "%1$s был разрезан пополам механической пилой", - "death.attack.create.mechanical_saw.player": "%2$s толкнул %1$s под механическую пилу", - "death.attack.create.potato_cannon": "%1$s был застрелен картофельной пушкой %2$s", - "death.attack.create.potato_cannon.item": "%1$s был застрелен %2$s при помощи «%3$s»", - "death.attack.create.cuckoo_clock_explosion": "%1$s взорвали подделанные часы с кукушкой", - "death.attack.create.cuckoo_clock_explosion.player": "%1$s был взорван подделанными часами с кукушкой", + "death.attack.create.mechanical_saw.player": "%1$s был разрезан пополам механической пилой благодаря %2$s", + "death.attack.create.potato_cannon": "%1$s был застрелен из картофельной пушки %2$s", + "death.attack.create.potato_cannon.item": "%1$s был застрелен %2$s с помощью %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s был взорван фальшивыми часами с кукушкой", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s был взорван фальшивыми часами с кукушкой благодаря %2$s", "death.attack.create.run_over": "%1$s был размазан по путям %2$s", "create.block.deployer.damage_source_name": "автономным активатором", - "create.block.cart_assembler.invalid": "Поместите сборщик вагонеток на блок рельс", + "create.block.cart_assembler.invalid": "Установите сборщик вагонеток на рельсы", "create.menu.return": "Вернуться в меню", "create.menu.configure": "Настроить...", @@ -899,18 +899,18 @@ "create.recipe.fan_blasting.fan": "Вентилятор за лавой", "create.recipe.pressing": "Прессование", "create.recipe.mixing": "Смешивание", - "create.recipe.deploying": "Автономная активация", - "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", - "create.recipe.automatic_brewing": "Автоматическое смешивание", + "create.recipe.deploying": "Автономное создание", + "create.recipe.automatic_shapeless": "Бесформенная сборка", + "create.recipe.automatic_brewing": "Автоматическая варка", "create.recipe.packing": "Спрессовывание", - "create.recipe.automatic_packing": "Автоматическое спрессовывание", - "create.recipe.sawing": "Распиливание", + "create.recipe.automatic_packing": "Сжатие предметов", + "create.recipe.sawing": "Распиловка", "create.recipe.mechanical_crafting": "Механическое создание", - "create.recipe.automatic_shaped": "Автоматическая форменная сборка", - "create.recipe.block_cutting": "Резка блока", + "create.recipe.automatic_shaped": "Форменная сборка", + "create.recipe.block_cutting": "Резка блоков", "create.recipe.wood_cutting": "Резка древесины", - "create.recipe.sandpaper_polishing": "Полирование наждачной бумагой", - "create.recipe.mystery_conversion": "Хроматический метаморфоз", + "create.recipe.sandpaper_polishing": "Полирование", + "create.recipe.mystery_conversion": "Таинственное преобразование", "create.recipe.spout_filling": "Наполнение дозатором", "create.recipe.draining": "Осушение предметов", "create.recipe.item_application": "Ручное создание", @@ -920,8 +920,8 @@ "create.recipe.assembly.step": "Шаг %1$s:", "create.recipe.assembly.progress": "Прогресс: %1$s/%2$s", "create.recipe.assembly.pressing": "Обработайте прессом", - "create.recipe.assembly.spout_filling_fluid": "Долейте %1$s", - "create.recipe.assembly.deploying_item": "Добавьте %1$s", + "create.recipe.assembly.spout_filling_fluid": "Добавьте жидкость: %1$s", + "create.recipe.assembly.deploying_item": "Добавьте предмет: %1$s", "create.recipe.assembly.cutting": "Разрежьте пилой", "create.recipe.assembly.repeat": "Повторите последовательность %1$s раз", "create.recipe.assembly.junk": "Случайный мусор", @@ -940,9 +940,9 @@ "create.generic.delay": "Задержка", "create.generic.duration": "Продолжительность", "create.generic.timeUnit": "Единица времени", - "create.generic.unit.ticks": "тиков", - "create.generic.unit.seconds": "секунд", - "create.generic.unit.minutes": "минут", + "create.generic.unit.ticks": "Тиков", + "create.generic.unit.seconds": "Секунд", + "create.generic.unit.minutes": "Минут", "create.generic.daytime.hour": "Час", "create.generic.daytime.minute": "Минута", "create.generic.daytime.second": "Секунда", @@ -951,7 +951,7 @@ "create.generic.unit.rpm": "об./мин.", "create.generic.unit.stress": "ЕН", "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$sмВ", + "create.generic.unit.millibuckets": "%1$s мВ", "create.generic.unit.buckets": "B", "create.generic.clockwise": "По часовой стрелке", "create.generic.counter_clockwise": "Против часовой стрелки", @@ -975,14 +975,14 @@ "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутите, чтобы настроить количество", "create.gui.scrollInput.scrollToSelect": "Прокрутите, чтобы выбрать", "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift для быстрой прокрутки", - "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены задач", + "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены действия", "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", "create.toolbox.unequip": "Убрать: %1$s", "create.toolbox.outOfRange": "Ящик для инструментов выбранного предмета слишком далеко...", "create.toolbox.detach": "Убрать выбранный предмет в ящик для инструментов", - "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики для инструментов", - "create.toolbox.depositBox": "Вернуть предметы в ящик для инструментов", + "create.toolbox.depositAll": "Вернуть все предметы в ближайшие ящики для инструментов", + "create.toolbox.depositBox": "Вернуть все предметы в ящик для инструментов", "create.gui.symmetryWand.mirrorType": "Зеркало", "create.gui.symmetryWand.orientation": "Ориентация", @@ -991,41 +991,41 @@ "create.symmetry.mirror.doublePlane": "Двойное", "create.symmetry.mirror.triplePlane": "Тройное", - "create.orientation.orthogonal": "Перпендикуляр.", - "create.orientation.diagonal": "Диагональ.", - "create.orientation.horizontal": "Горизонталь.", + "create.orientation.orthogonal": "Перпендикулярная", + "create.orientation.diagonal": "Диагональная", + "create.orientation.horizontal": "Горизонтальная", "create.orientation.alongZ": "Вдоль Z", "create.orientation.alongX": "Вдоль X", "create.gui.terrainzapper.title": "Ручной редактор мира", - "create.gui.terrainzapper.searchDiagonal": "Следование диагоналям", + "create.gui.terrainzapper.searchDiagonal": "Следовать диагоналям", "create.gui.terrainzapper.searchFuzzy": "Игнорировать границы материала", - "create.gui.terrainzapper.patternSection": "Шаблон", - "create.gui.terrainzapper.pattern.solid": "Сплошной", + "create.gui.terrainzapper.patternSection": "Шаблоны", + "create.gui.terrainzapper.pattern.solid": "Полное заполнение", "create.gui.terrainzapper.pattern.checkered": "Шахматный порядок", "create.gui.terrainzapper.pattern.inversecheckered": "Обратный шахматный порядок", "create.gui.terrainzapper.pattern.chance25": "25% заполнение", "create.gui.terrainzapper.pattern.chance50": "50% заполнение", "create.gui.terrainzapper.pattern.chance75": "75% заполнение", - "create.gui.terrainzapper.placement": "Размещение", - "create.gui.terrainzapper.placement.merged": "Слитый", - "create.gui.terrainzapper.placement.attached": "Прикреплённый", - "create.gui.terrainzapper.placement.inserted": "Вставленный", - "create.gui.terrainzapper.brush": "Обычный", + "create.gui.terrainzapper.placement": "Установка", + "create.gui.terrainzapper.placement.merged": "Слитая", + "create.gui.terrainzapper.placement.attached": "Прикреплённая", + "create.gui.terrainzapper.placement.inserted": "Вставленная", + "create.gui.terrainzapper.brush": "Кисти", "create.gui.terrainzapper.brush.cuboid": "Куб", "create.gui.terrainzapper.brush.sphere": "Сфера", "create.gui.terrainzapper.brush.cylinder": "Цилиндр", "create.gui.terrainzapper.brush.surface": "Поверхность", "create.gui.terrainzapper.brush.cluster": "Скопление", - "create.gui.terrainzapper.tool": "Инструмент", + "create.gui.terrainzapper.tool": "Инструменты", "create.gui.terrainzapper.tool.fill": "Заполнить", "create.gui.terrainzapper.tool.place": "Поставить", "create.gui.terrainzapper.tool.replace": "Заменить", "create.gui.terrainzapper.tool.clear": "Очистить", "create.gui.terrainzapper.tool.overlay": "Наложение", - "create.gui.terrainzapper.tool.flatten": "Выравнивание", + "create.gui.terrainzapper.tool.flatten": "Сглаживание", - "create.terrainzapper.shiftRightClickToSet": "Нажмите Shift+ПКМ, чтобы выбрать форму", + "create.terrainzapper.shiftRightClickToSet": "Нажмите ПКМ крадучись, чтобы выбрать кисть", "create.terrainzapper.usingBlock": "Используется: %1$s", "create.terrainzapper.leftClickToSet": "Нажмите ЛКМ по блоку, что бы использовать материал", @@ -1043,7 +1043,7 @@ "create.contraptions.movement_mode.rotate_place_returned": "Превращать в блоки только в исх. положении", "create.contraptions.movement_mode.rotate_never_place": "Превращать в блоки, если опора уничтожена", "create.contraptions.cart_movement_mode": "Режим движения вагонетки", - "create.contraptions.cart_movement_mode.rotate": "Вращение в сторону движения", + "create.contraptions.cart_movement_mode.rotate": "Вращение в сторону движения", "create.contraptions.cart_movement_mode.rotate_paused": "Пауза во время вращения", "create.contraptions.cart_movement_mode.rotation_locked": "Блокировка вращения", "create.contraptions.windmill.rotation_direction": "Направление вращения", @@ -1057,9 +1057,9 @@ "create.logistics.fluid_filter": "Фильтр жидкости", "create.logistics.firstFrequency": "Частота #1", "create.logistics.secondFrequency": "Частота #2", - "create.logistics.filter.apply": "Фильтр применён к %1$s.", - "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s, кликните ещё раз, чтобы скопировать количество.", - "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру.", + "create.logistics.filter.apply": "Фильтр применён к %1$s", + "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s; кликните ещё раз, чтобы скопировать количество", + "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру", "create.gui.goggles.generator_stats": "Статистика генератора:", "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", @@ -1068,19 +1068,19 @@ "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", - "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", + "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s|%2$s|%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s|%2$s|%3$s] был в незагруженном чанке", "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества блоков.\nТекущий максимум: %1$s", "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много удлинителей прикреплено к этому поршню.\nТекущий максимум: %1$s", "create.gui.assembly.exception.noPistonPoles": "Поршню не хватает удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусоподобных блоков: %1$s\nМинимум из %2$s необходимых", + "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура содержит недостаточно парусоподобных блоков; %1$s из минимум %2$s необходимых", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Нагрузка на сеть", "create.gui.stressometer.capacity": "Оставшаяся ёмкость", "create.gui.stressometer.overstressed": "Перегрузка", "create.gui.stressometer.no_rotation": "Нет вращения", - "create.gui.contraptions.not_fast_enough": "Похоже, что этот %1$s _не_ вращается с _достаточной_ _скоростью_.", + "create.gui.contraptions.not_fast_enough": "Похоже, что %1$s вращается с _недостаточной_ _скоростью_.", "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _понизьте_ _скорость_ компонентов, _создающих_ высокую _нагрузку_.", "create.gui.adjustable_crate.title": "Регулируемый ящик", "create.gui.adjustable_crate.storageSpace": "Ёмкость", @@ -1088,12 +1088,12 @@ "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", "create.gui.stockpile_switch.move_to_lower_at": "Переключатся на нижнюю линию при %1$s%%", "create.gui.stockpile_switch.move_to_upper_at": "Переключатся на верхнюю линию при %1$s%%", - "create.gui.sequenced_gearshift.title": "Послед. коробка передач", + "create.gui.sequenced_gearshift.title": "Последов. коробка передач", "create.gui.sequenced_gearshift.instruction": "Инструкция", "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Угол", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Повернуть для движения Поршня/Шкива/Портала", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Перемещение Поршня/Шкива/Крана", "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Расстояние", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Временная задержка", @@ -1101,18 +1101,18 @@ "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", "create.gui.sequenced_gearshift.instruction.end": "Конец", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового сигнала редстоуна", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового редстоун-сигнала", "create.gui.sequenced_gearshift.instruction.await": "Сигнал", - "create.gui.sequenced_gearshift.speed": "Скорость, Направление", - "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", - "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", - "create.gui.sequenced_gearshift.speed.back": "Скорость ввода, реверс", + "create.gui.sequenced_gearshift.speed": "Скорость, направление", + "create.gui.sequenced_gearshift.speed.forward": "Обычная скорость, вперёд", + "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперёд", + "create.gui.sequenced_gearshift.speed.back": "Обычная скорость, реверс", "create.gui.sequenced_gearshift.speed.back_fast": "Двойная скорость, реверс", "create.schematicAndQuill.dimensions": "Размер схематики: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Первая позиция установлена", "create.schematicAndQuill.secondPos": "Вторая позиция установлена", - "create.schematicAndQuill.noTarget": "Удерживайте [Ctrl], чтобы выбрать блоки воздуха", + "create.schematicAndQuill.noTarget": "Удерживайте Ctrl, чтобы выбрать блоки воздуха", "create.schematicAndQuill.abort": "Выделение отменено", "create.schematicAndQuill.title": "Имя схематики:", "create.schematicAndQuill.convert": "Сохранить и развернуть немедленно", @@ -1137,32 +1137,32 @@ "create.schematic.tool.print": "Печать", "create.schematic.tool.flip": "Перевернуть", "create.schematic.tool.deploy.description.0": "Перемещает структуру в локации.", - "create.schematic.tool.deploy.description.1": "Щелкните ПКМ на земле, чтобы разместить.", - "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl], чтобы выбрать фиксированное расстояние.", - "create.schematic.tool.deploy.description.3": "[Ctrl] и прокрутка, чтобы изменить расстояние.", + "create.schematic.tool.deploy.description.1": "Щёлкните ПКМ по блоку, чтобы разместить.", + "create.schematic.tool.deploy.description.2": "Зажмите Ctrl, чтобы выбрать фиксированное расстояние.", + "create.schematic.tool.deploy.description.3": "Ctrl и прокрутка, чтобы изменить расстояние.", "create.schematic.tool.move.description.0": "Сдвинуть схему по горизонтали.", - "create.schematic.tool.move.description.1": "Наведите курсор на схему и зажмите [Ctrl] и прокрутка,", + "create.schematic.tool.move.description.1": "Наведите курсор на схему и зажмите Ctrl и прокрутка,", "create.schematic.tool.move.description.2": "для перемещения по горизонтали.", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали.", - "create.schematic.tool.movey.description.1": "[Ctrl] и прокрутка для перемещения вверх/вниз.", + "create.schematic.tool.movey.description.1": "Ctrl и прокрутка для перемещения вверх/вниз.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг ее центра.", - "create.schematic.tool.rotate.description.1": "[Ctrl] и прокрутка для вращения на 90 градусов.", + "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг её центра.", + "create.schematic.tool.rotate.description.1": "Ctrl и прокрутка для вращения на 90 градусов.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Мгновенно размещает структуру в мире.", - "create.schematic.tool.print.description.1": "[ПКМ], чтобы подтвердить размещение в текущем местоположении.", + "create.schematic.tool.print.description.1": "ПКМ, чтобы подтвердить размещение в текущем месте.", "create.schematic.tool.print.description.2": "Этот инструмент предназначен только", "create.schematic.tool.print.description.3": "для творческого режима.", "create.schematic.tool.flip.description.0": "Переверните схему вдоль выбранной стороны.", - "create.schematic.tool.flip.description.1": "Наведите курсор на схему и [Ctrl] и прокрутка,", - "create.schematic.tool.flip.description.2": "чтобы перевернуть ее.", + "create.schematic.tool.flip.description.1": "Наведите курсор на схему и Ctrl и прокрутка,", + "create.schematic.tool.flip.description.2": "чтобы перевернуть её.", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Синхронизация...", - "create.schematics.uploadTooLarge": "Ваша схематика слишком велика.", + "create.schematics.uploadTooLarge": "Файл схематики слишком большой.", "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", "create.gui.schematicTable.refresh": "Обновить файлы", @@ -1221,9 +1221,9 @@ "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает всё.", "create.gui.filter.allow_list": "Белый список", "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает всё.", - "create.gui.filter.respect_data": "Использование данных", + "create.gui.filter.respect_data": "Использовать данные", "create.gui.filter.respect_data.description": "Предметы проходят только в том случае, если их прочность, чары и другие атрибуты совпадают.", - "create.gui.filter.ignore_data": "Игнорирование данных", + "create.gui.filter.ignore_data": "Игнорировать данные", "create.gui.filter.ignore_data.description": "Предметы проходят независимо от их атрибутов.", "create.item_attributes.placeable": "можно разместить", @@ -1234,69 +1234,71 @@ "create.item_attributes.fluid_container.inverted": "не может хранить жидкости", "create.item_attributes.enchanted": "зачарован", "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.max_enchanted": "зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "не зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted": "зачарован на максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "зачарован не на максимальный уровень", "create.item_attributes.renamed": "имеет пользовательское имя", "create.item_attributes.renamed.inverted": "не имеет пользовательского имени", "create.item_attributes.damaged": "повреждён", "create.item_attributes.damaged.inverted": "не повреждён", "create.item_attributes.badly_damaged": "сильно повреждён", - "create.item_attributes.badly_damaged.inverted": "не сильно повреждён", + "create.item_attributes.badly_damaged.inverted": "повреждён не сильно", "create.item_attributes.not_stackable": "не может складываться", "create.item_attributes.not_stackable.inverted": "складывается", - "create.item_attributes.equipable": "может быть надет", - "create.item_attributes.equipable.inverted": "не может быть надет", + "create.item_attributes.equipable": "можно надеть", + "create.item_attributes.equipable.inverted": "нельзя надеть", "create.item_attributes.furnace_fuel": "является топливом", "create.item_attributes.furnace_fuel.inverted": "не является топливом", "create.item_attributes.washable": "можно промыть", "create.item_attributes.washable.inverted": "нельзя промыть", - "create.item_attributes.hauntable": "может быть наполнен призраками", + "create.item_attributes.hauntable": "можно наполнить призраками", "create.item_attributes.hauntable.inverted": "нельзя наполнить призраками", - "create.item_attributes.crushable": "можно измельчить", - "create.item_attributes.crushable.inverted": "нельзя разместить", + "create.item_attributes.crushable": "можно раздробить", + "create.item_attributes.crushable.inverted": "нельзя раздробить", "create.item_attributes.smeltable": "можно расплавить", "create.item_attributes.smeltable.inverted": "нельзя расплавить", "create.item_attributes.smokable": "можно прокоптить", "create.item_attributes.smokable.inverted": "нельзя прокоптить", - "create.item_attributes.blastable": "плавится в доменной печи", - "create.item_attributes.blastable.inverted": "не плавится в доменной печи", - "create.item_attributes.shulker_level": "шалкер %1$s", - "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", - "create.item_attributes.shulker_level.full": "полный", - "create.item_attributes.shulker_level.empty": "пустой", + "create.item_attributes.blastable": "можно расплавить в доменной печи", + "create.item_attributes.blastable.inverted": "нельзя расплавить в доменной печи", + "create.item_attributes.compostable": "можно компостировать", + "create.item_attributes.compostable.inverted": "нельзя компостировать", + "create.item_attributes.shulker_level": "шалкеровый ящик %1$s", + "create.item_attributes.shulker_level.inverted": "шалкеровый ящик не %1$s", + "create.item_attributes.shulker_level.full": "полон", + "create.item_attributes.shulker_level.empty": "пуст", "create.item_attributes.shulker_level.partial": "частично заполнен", - "create.item_attributes.in_tag": "помечен %1$s", - "create.item_attributes.in_tag.inverted": "не помечен %1$s", - "create.item_attributes.in_item_group": "принадлежит %1$s", - "create.item_attributes.in_item_group.inverted": "не принадлежит '%1$s'", + "create.item_attributes.in_tag": "с тегом %1$s", + "create.item_attributes.in_tag.inverted": "без тега %1$s", + "create.item_attributes.in_item_group": "из группы «%1$s»", + "create.item_attributes.in_item_group.inverted": "не из группы «%1$s»", "create.item_attributes.added_by": "был добавлен %1$s", - "create.item_attributes.added_by.inverted": "не был добавлен %1$s", + "create.item_attributes.added_by.inverted": "был добавлен не %1$s", "create.item_attributes.has_enchant": "зачарован на %1$s", - "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", - "create.item_attributes.color": "окрашено в %1$s", - "create.item_attributes.color.inverted": "не окрашено в %1$s", + "create.item_attributes.has_enchant.inverted": "зачарован не на %1$s", + "create.item_attributes.color": "окрашен в %1$s", + "create.item_attributes.color.inverted": "окрашен не в %1$s", "create.item_attributes.has_fluid": "содержит %1$s", "create.item_attributes.has_fluid.inverted": "не содержит %1$s", "create.item_attributes.has_name": "назван как %1$s", - "create.item_attributes.has_name.inverted": "не назван как %1$s", - "create.item_attributes.book_author": "подписана %1$s", - "create.item_attributes.book_author.inverted": "не подписана %1$s", + "create.item_attributes.has_name.inverted": "назван не как %1$s", + "create.item_attributes.book_author": "подписан %1$s", + "create.item_attributes.book_author.inverted": "подписан не %1$s", "create.item_attributes.book_copy_original": "оригинал", "create.item_attributes.book_copy_original.inverted": "не оригинал", "create.item_attributes.book_copy_first": "копия", "create.item_attributes.book_copy_first.inverted": "не копия", "create.item_attributes.book_copy_second": "копия копии", "create.item_attributes.book_copy_second.inverted": "не копия копии", - "create.item_attributes.book_copy_tattered": "полный беспорядок", - "create.item_attributes.book_copy_tattered.inverted": "не полный беспорядок", + "create.item_attributes.book_copy_tattered": "ветхий", + "create.item_attributes.book_copy_tattered.inverted": "не ветхий", "create.item_attributes.astralsorcery_amulet": "исправляет %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "не исправляет %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "исправляет не %1$s", "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "настроено не на %1$s", "create.item_attributes.astralsorcery_crystal": "имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристики кристалла %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристик кристалла %1$s", "create.item_attributes.astralsorcery_perk_gem": "имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристики перка %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристик перка %1$s", "create.gui.attribute_filter.no_selected_attributes": "Атрибуты не выбраны", "create.gui.attribute_filter.selected_attributes": "Выбранные атрибуты:", @@ -1310,8 +1312,8 @@ "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", "create.gui.attribute_filter.add_reference_item": "Положите предмет", - "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", - "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", + "create.tooltip.holdForDescription": "Удерживайте [%1$s] для сводки", + "create.tooltip.holdForControls": "Удерживайте [%1$s] для управления", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Требование к скорости: %1$s", @@ -1334,8 +1336,8 @@ "create.mechanical_arm.extract_from": "Берёт предметы из %1$s", "create.mechanical_arm.deposit_to": "Складывает предметы в %1$s", - "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", - "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", + "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов)", + "create.mechanical_arm.points_outside_range": "Выбранные цели (%1$s) удалены из-за ограничений диапазона", "create.weighted_ejector.target_set": "Цель выбрана", "create.weighted_ejector.target_not_valid": "Бросает до ближайшего блока (Неподходящая цель)", @@ -1343,7 +1345,7 @@ "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", "create.weighted_ejector.stack_size": "Размер бросаемого стака", - "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", + "create.logistics.when_multiple_outputs_available": "Режим распределения", "create.mechanical_arm.selection_mode.round_robin": "По кругу", "create.mechanical_arm.selection_mode.forced_round_robin": "Строго по кругу", @@ -1353,11 +1355,11 @@ "create.tunnel.selection_mode.forced_split": "Строгое разделение", "create.tunnel.selection_mode.round_robin": "По кругу", "create.tunnel.selection_mode.forced_round_robin": "Строго по кругу", - "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайшее", + "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайший", "create.tunnel.selection_mode.randomize": "Случайно", "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", - "create.tooltip.chute.header": "Информация о жёлобе", + "create.tooltip.chute.header": "Информация о жёлобе:", "create.tooltip.chute.items_move_down": "Предметы двигаются вниз", "create.tooltip.chute.items_move_up": "Предметы двигаются вверх", "create.tooltip.chute.no_fans_attached": "Нет подключенных вентиляторов", @@ -1366,11 +1368,11 @@ "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - "create.tooltip.deployer.header": "Информация об автономном активаторе", - "create.tooltip.deployer.using": "Автономный активатор использует", - "create.tooltip.deployer.punching": "Автономный активатор ударяет", + "create.tooltip.deployer.header": "Информация об автономном активаторе:", + "create.tooltip.deployer.using": "Режим: Атака/Разрушение", + "create.tooltip.deployer.punching": "Режим: Использование/Стройка", "create.tooltip.deployer.contains": "Держит: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "В данный момент распределяет:", + "create.tooltip.brass_tunnel.contains": "В данный момент распределяют:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "ПКМ, чтобы получить", @@ -1390,52 +1392,52 @@ "create.potato_cannon.ammo.attack_damage": "%1$s урона от попадания", "create.potato_cannon.ammo.reload_ticks": "%1$s тиков перезарядки", - "create.potato_cannon.ammo.knockback": "%1$s отбрасывания", + "create.potato_cannon.ammo.knockback": "%1$s силы отбрасывания", - "create.hint.hose_pulley.title": "Безграничное снабжение", + "create.hint.hose_pulley.title": "Бесконечное снабжение", "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", "create.hint.mechanical_arm_no_targets.title": "Нет целей", - "create.hint.mechanical_arm_no_targets": "Кажется, эта _Механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _Механическую руку_.", + "create.hint.mechanical_arm_no_targets": "Кажется, эта _механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _механическую руку_.", "create.hint.empty_bearing.title": "Обновить подшипник", - "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", + "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы построили перед ним.", "create.hint.full_deployer.title": "Переполнение автономного активатора", - "create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", + "create.hint.full_deployer": "Похоже, что этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", "create.backtank.low": "Низкое давление в баллоне!", "create.backtank.depleted": "Давление в баллоне исчерпано!", "create.hint.derailed_train.title": "Железнодорожная авария", - "create.hint.derailed_train": "Похоже, что этот _поезд_ сошёл с путей. Щелкните _ПКМ_ _Гаечным ключом_, чтобы установить его на ближайшие пути.", + "create.hint.derailed_train": "Похоже, что этот _поезд_ сошёл с путей. Щёлкните _ПКМ_ _гаечным ключом_, чтобы заново установить его на ближайшие пути.", "create.boiler.status": "Статус котла: %1$s", "create.boiler.status_short": "Котёл: %1$s", - "create.boiler.passive": "Начальный", - "create.boiler.idle": "Выключен", - "create.boiler.lvl": "Уровень: %1$s", - "create.boiler.max_lvl": "Предельный", - "create.boiler.size": "Размер", - "create.boiler.size_dots": ".... ", + "create.boiler.passive": "Нач.", + "create.boiler.idle": "Выкл", + "create.boiler.lvl": "%1$s ур.", + "create.boiler.max_lvl": "Макс.", + "create.boiler.size": "Объём", + "create.boiler.size_dots": "....... ", "create.boiler.water": "Вода", - "create.boiler.water_dots": "...... ", + "create.boiler.water_dots": "......... ", "create.boiler.heat": "Нагрев", - "create.boiler.heat_dots": ".... ", + "create.boiler.heat_dots": "..... ", "create.boiler.via_one_engine": "с помощью 1 двигателя", "create.boiler.via_engines": "с помощью %1$s двигателей", "create.gui.schedule.lmb_edit": "ЛКМ для редактирования", "create.gui.schedule.rmb_remove": "ПКМ для удаления", "create.gui.schedule.duplicate": "Дублировать", - "create.gui.schedule.remove_entry": "Удалить действие", - "create.gui.schedule.add_entry": "Добавить действие", + "create.gui.schedule.remove_entry": "Удалить инструкцию", + "create.gui.schedule.add_entry": "Добавить инструкцию", "create.gui.schedule.move_up": "Переместить выше", "create.gui.schedule.move_down": "Переместить ниже", "create.gui.schedule.add_condition": "Добавить условие", "create.gui.schedule.alternative_condition": "Альтернативное условие", - "create.schedule.instruction_type": "Следующее действие:", + "create.schedule.instruction_type": "Следующая инструкция:", "create.schedule.instruction.editor": "Редактор инструкций", - "create.schedule.instruction.destination": "Ехать до станции", - "create.schedule.instruction.destination.summary": "Следующая остановка:", + "create.schedule.instruction.destination": "Следовать до станции", + "create.schedule.instruction.destination.summary": "Следовать до станции:", "create.schedule.instruction.filter_edit_box": "Название станции", "create.schedule.instruction.filter_edit_box_1": "Используйте * в качестве текстового подстановочного знака", "create.schedule.instruction.filter_edit_box_2": "Пример: 'Моя Станция, платформа *'", @@ -1454,18 +1456,18 @@ "create.schedule.condition.delay": "Пауза расписания", "create.schedule.condition.delay_short": "Ожидание: %1$s", "create.schedule.condition.delay.status": "До отправления %1$s", - "create.schedule.condition.idle": "Груз не изменился", - "create.schedule.condition.idle_short": "Груз без изменений: %1$s %1$s", - "create.schedule.condition.idle.status": "Груз без изменений %1$s", + "create.schedule.condition.idle": "Неизменение груза", + "create.schedule.condition.idle_short": "Простой груза: %1$s %1$s", + "create.schedule.condition.idle.status": "Простой груза: %1$s", "create.schedule.condition.for_x_time": "в течение %1$s", "create.schedule.condition.unloaded": "Чанк выгружен", "create.schedule.condition.unloaded.status": "Ожидание выгрузки чанка", "create.schedule.condition.powered": "Станция запитана", - "create.schedule.condition.powered.status": "Ожидание сигнала на станцию", + "create.schedule.condition.powered.status": "Станция ожидает сигнал", "create.schedule.condition.time_of_day": "Время суток", "create.schedule.condition.time_of_day.scheduled": "Отправление в %1$s", "create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s", - "create.schedule.condition.time_of_day.rotation": "Повторять", + "create.schedule.condition.time_of_day.rotation": "Интервал движения", "create.schedule.condition.time_of_day.rotation.every_24": "Ежедневно", "create.schedule.condition.time_of_day.rotation.every_12": "Каждые 12ч", "create.schedule.condition.time_of_day.rotation.every_6": "Каждые 6ч", @@ -1483,17 +1485,19 @@ "create.schedule.condition.threshold.equal": "точно", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s (%3$s)", "create.schedule.condition.threshold.matching_content": "Определённое содержимое", + "create.schedule.condition.threshold.anything": "предметов", "create.schedule.condition.threshold.item_measure": "Количество предметов", - "create.schedule.condition.threshold.items": "Штук", - "create.schedule.condition.threshold.stacks": "Стаков", - "create.schedule.condition.threshold.buckets": "Вёдер", + "create.schedule.condition.threshold.items": "штук", + "create.schedule.condition.threshold.stacks": "стаков", + "create.schedule.condition.threshold.buckets": "вёдер", "create.schedule.condition.threshold.status": "Груз: %1$s/%2$s %3$s", - "create.schedule.condition.threshold.place_item": "Основной предмет", + "create.schedule.condition.threshold.place_item": "Эталонный предмет", "create.schedule.condition.threshold.place_item_2": "Можно использовать фильтры", + "create.schedule.condition.threshold.place_item_3": "Оставьте пустым, чтобы выбрать все предметы", "create.schedule.condition.fluid_threshold": "Состояние жидкого груза", "create.schedule.condition.item_threshold": "Состояние груза", "create.schedule.condition.redstone_link": "Беспроводной сигнал", - "create.schedule.condition.redstone_link.status": "Ожидание сигнала на поезд", + "create.schedule.condition.redstone_link.status": "Поезд ожидает сигнал", "create.schedule.condition.redstone_link_on": "Сигнал включён", "create.schedule.condition.redstone_link_off": "Сигнал выключен", "create.schedule.condition.redstone_link.powered": "Включёна", @@ -1503,32 +1507,32 @@ "create.schedule.condition.redstone_link.frequency_unpowered": "Частота выключена:", "create.schedule.condition.player_count": "Посадка пассажиров", "create.schedule.condition.player_count.summary": "%1$s игрок", - "create.schedule.condition.player_count.summary_plural": "%1$s игроков", + "create.schedule.condition.player_count.summary_plural": "%1$s игрока(ов)", "create.schedule.condition.player_count.seated": "%1$s сидит(ят)", "create.schedule.condition.player_count.players": "Игроков", - "create.schedule.condition.player_count.condition": "Условно", - "create.schedule.condition.player_count.exactly": "Точно", - "create.schedule.condition.player_count.or_above": "Больше", + "create.schedule.condition.player_count.condition": "Условие", + "create.schedule.condition.player_count.exactly": "точно", + "create.schedule.condition.player_count.or_above": "больше", "create.schedule.condition.player_count.status": "Пассажиров: %1$s/%2$s", "create.schedule.loop": "Повторять расписание", "create.schedule.loop1": "Начинать расписание сначала,", "create.schedule.loop2": "после завершения", "create.schedule.reset": "Начать расписание сначала", "create.schedule.skip": "Пропустить текущий шаг расписания", - "create.schedule.applied_to_train": "Теперь поезд следует этому расписанию", + "create.schedule.applied_to_train": "Теперь поезд следует по этому расписанию", "create.schedule.non_controlling_seat": "Машинист должен сидеть перед блоком управления", - "create.schedule.remove_with_empty_hand": "Заберите текущее расписание пустой рукой", - "create.schedule.auto_removed_from_train": "Автоматическое расписание отменено", - "create.schedule.removed_from_train": "Расписание получено из поезда", + "create.schedule.remove_with_empty_hand": "Отзовите текущее расписание пустой рукой", + "create.schedule.auto_removed_from_train": "Автоматическое расписание отозвано", + "create.schedule.removed_from_train": "Расписание отозвано от машиниста", "create.schedule.no_stops": "В этом расписании нет остановок", "create.schedule.continued": "Расписание возобновлено", "create.track.selection_cleared": "Выбор отменён", "create.track.valid_connection": "Можно соединить ✔", - "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите вторую точку", + "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите другие", "create.track.too_far": "Слишком далеко...", - "create.track.original_missing": "Исходные пути разрушены, нажмите Shift+ПКМ, чтобы выйти из режима размещения", - "create.track.perpendicular": "Невозможно соединить перпендикулярно", + "create.track.original_missing": "Выбранные пути разрушены, нажмите ПКМ крадучись, чтобы выйти из режима размещения", + "create.track.perpendicular": "Невозможно соединить пути перпендикулярно", "create.track.ascending_s_curve": "Невозможно создать наклонные S-образные изгибы", "create.track.too_sharp": "Слишком резкий угол поворота", "create.track.too_steep": "Слишком крутой склон", @@ -1555,34 +1559,34 @@ "create.station.create_train": "Создать новый поезд", "create.station.assemble_train": "Собрать поезд", "create.station.disassemble_train": "Разобрать поезд", - "create.station.remove_schedule": "Получить расписание", - "create.station.remove_auto_schedule": "Отменить автоматическое расписание", + "create.station.remove_schedule": "Отозвать расписание", + "create.station.remove_auto_schedule": "Отозвать автоматическое расписание", "create.station.no_assembly_diagonal": "Нельзя строить поезда", "create.station.no_assembly_diagonal_1": "на пересечениях путей", "create.station.no_assembly_curve": "Нельзя строить поезда", - "create.station.no_assembly_curve_1": "на изогнутых путях", + "create.station.no_assembly_curve_1": "на изогнутых путях.", "create.station.train_not_aligned": "Невозможно разобрать, не все", - "create.station.train_not_aligned_1": "вагонные тележки были выровнены", + "create.station.train_not_aligned_1": "вагонные тележки были выровнены.", "create.station.carriage_number": "Вагон № %1$s:", "create.station.retry": "Исправьте это и повторите попытку.", "create.station.no_bogeys": "Нет вагонных тележек", "create.station.one_bogey": "1 вагонная тележка", "create.station.more_bogeys": "%1$s вагонные(ых) тележки(ек)", - "create.station.how_to": "Нажмите Ж/д корпусом по выд. путям, чтобы сделать тележку.", + "create.station.how_to": "Нажмите Ж/д корпусом по выделенным путям, чтобы сделать тележку.", "create.station.how_to_1": "Тележку можно убрать, сломав блок над ней.", "create.station.how_to_2": "Один вагон может иметь до двух тележек.", "create.train_assembly.too_many_bogeys": "Слишком много вагонных тележек прицеплено: %1$s шт.", "create.train_assembly.frontmost_bogey_at_station": "Передняя вагонная тележка должна быть на указателе станции.", "create.train_assembly.no_bogeys": "Вагонные тележки не найдены.", - "create.train_assembly.not_connected_in_order": "Вагонные тележки подключены не по порядку.", + "create.train_assembly.not_connected_in_order": "Вагонные тележки соединены не по порядку.", "create.train_assembly.bogeys_too_close": "Вагонные тележки %1$s и %2$s слишком близко друг к другу.", "create.train_assembly.single_bogey_carriage": "Эта вагонная тележка не может поддерживать вагон самостоятельно.", "create.train_assembly.nothing_attached": "Структура не склеена с вагонной тележкой № %1$s.", - "create.train_assembly.no_controls": "В поезде должен быть установлен как минимум один контроллер, обращённый вперед.", + "create.train_assembly.no_controls": "В поезде должен быть установлен как минимум один контроллер, обращённый вперёд.", "create.train_assembly.sideways_controls": "Контроллер поезда направлен не вперёд.", - "create.train_assembly.bogey_created": "Можно разместить ещё одну Тележку, нажав на выделенные пути ещё раз.", - "create.train_assembly.requires_casing": "Используйте Ж/д корпус для создания вагонных тележек на путях.", + "create.train_assembly.bogey_created": "Разместите ещё одну тележку, нажав на выделенные пути", + "create.train_assembly.requires_casing": "Используйте Ж/д корпус для создания вагонных тележек на путях", "create.track_target.set": "Пути выбраны", "create.track_target.success": "Успешно привязана к выбранным путям", @@ -1595,7 +1599,7 @@ "create.train.unnamed": "Безымянный поезд", "create.train.cannot_relocate_moving": "Невозможно переместить движущийся поезд", - "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. Shift+ПКМ для отмены", + "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. ПКМ крадучись для отмены", "create.train.relocate.abort": "Перенос отменён", "create.train.relocate.success": "Успешно перенесён", "create.train.relocate.valid": "Можно переместить сюда, нажмите для подтверждения", @@ -1661,7 +1665,7 @@ "create.display_source.value_list.million": "М", "create.display_source.player_deaths": "Смерти игрока", "create.display_source.scoreboard": "Скорборд", - "create.display_source.scoreboard.objective": "Идентификатор цели", + "create.display_source.scoreboard.objective": "Название скорборда", "create.display_source.scoreboard.objective_not_found": "'%1$s' не найден", "create.display_source.scoreboard.objective.deaths": "Смерти игрока", "create.display_source.time_of_day": "Время суток", @@ -1676,7 +1680,7 @@ "create.display_source.item_throughput.interval.minute": "в минуту", "create.display_source.item_throughput.interval.hour": "в час", "create.display_source.train_status": "Статус расписания", - "create.display_source.station_summary": "Сводка ж/д станции", + "create.display_source.station_summary": "Сводка станции", "create.display_source.station_summary.filter": "Фильтр названия станции", "create.display_source.station_summary.train_name_column": "Размер столбца Поезд", "create.display_source.station_summary.platform_column": "Размер столбца Платформа", @@ -1697,15 +1701,15 @@ "create.display_source.kinetic_stress.current": "Нагрузка в ЕН", "create.display_source.kinetic_stress.max": "Общая ёмкость", "create.display_source.kinetic_stress.remaining": "Осталось ЕН", - "create.display_source.redstone_power": "Сигнал редстоуна", + "create.display_source.redstone_power": "Редстоун-сигнал", "create.display_source.redstone_power.display": "Формат отображения", "create.display_source.redstone_power.number": "Число", "create.display_source.redstone_power.progress_bar": "Полоса прогресса", "create.display_source.boiler.not_enough_space": "нет места", "create.display_source.boiler.for_boiler_status": "для текста", - "create.display_target.line": "Строка %1$s", - "create.display_target.page": "Страница %1$s", + "create.display_target.line": "%1$s строка", + "create.display_target.page": "%1$s страница", "create.display_target.single_line": "Одна строка", "create.flap_display.cycles.alphabet": " ;А;Б;В;Г;Д;Е;Ё;Ж;З;И;Й;К;Л;М;Н;О;П;Р;С;Т;У;Ф;Х;Ц;Ч;Ш;Щ;Ъ;Ы;Ь;Э;Ю;Я", @@ -1719,10 +1723,10 @@ "create.super_glue.too_far": "Выбранная область слишком большая", "create.super_glue.cannot_reach": "Выбранные блоки должны быть соединены", "create.super_glue.click_to_confirm": "Нажмите ещё раз, чтобы подтвердить", - "create.super_glue.click_to_discard": "Нажмите Shift+ПКМ, чтобы отменить выбор", + "create.super_glue.click_to_discard": "Нажмите ПКМ крадучись, чтобы отменить выбор", "create.super_glue.first_pos": "Выбрана первая позиция", "create.super_glue.abort": "Выбор отменён", - "create.super_glue.not_enough": "Мало клея в инвентаре", + "create.super_glue.not_enough": "Мало клея...", "create.super_glue.success": "Нанесение клея...", "create.gui.config.overlay1": "Привет :)", @@ -1742,11 +1746,11 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: используйте /killtps start <Время тика>, чтобы искусственно замедлить тик сервера", "create.command.killTPSCommand.argument.tickTime": "Время тика", - "create.contraption.minecart_contraption_too_big": "Эта вагонеточная штуковина кажется слишком большой, чтобы ее можно было поднять", + "create.contraption.minecart_contraption_too_big": "Эта вагонеточная штуковина кажется слишком большой, чтобы её можно было поднять", "create.contraption.minecart_contraption_illegal_pickup": "Мистическая сила связывает эту вагонеточную штуковину с миром", - "_": "->------------------------] Subtitles [------------------------<-", + "_": "->------------------------] Субтитры [------------------------<-", "create.subtitle.contraption_disassemble": "Штуковина останавливается", "create.subtitle.peculiar_bell_use": "Особенный колокол звонит", @@ -1761,13 +1765,13 @@ "create.subtitle.whistle": "Свист", "create.subtitle.cogs": "Шестерни грохочут", "create.subtitle.slime_added": "Намазывание слизи", - "create.subtitle.whistle_train_low": "Низкий свист", - "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", + "create.subtitle.whistle_train_low": "Низкое гудение поезда", + "create.subtitle.schematicannon_launch_block": "Схематичная пушка строит", "create.subtitle.controller_take": "Кафедра опустошается", "create.subtitle.crafter_click": "Крафтер кликает", - "create.subtitle.depot_plop": "Предмет падает", + "create.subtitle.depot_plop": "Предмет упал на депо", "create.subtitle.confirm": "Утвердительный «Динь»", - "create.subtitle.mixing": "Шум смешивания", + "create.subtitle.mixing": "Смешивание", "create.subtitle.mechanical_press_activation_belt": "Механический пресс делает «Бонк»", "create.subtitle.fwoomp": "Картофельная пушка делает «Свомп»", "create.subtitle.sanding_long": "Короткий звук полировки", @@ -1776,16 +1780,16 @@ "create.subtitle.blaze_munch": "Всполох радостно жуёт", "create.subtitle.funnel_flap": "Занавески воронок хлопают", "create.subtitle.haunted_bell_use": "Призрачный колокол звонит", - "create.subtitle.scroll_value": "Щелчки колеса прокрутки", + "create.subtitle.scroll_value": "Щелчки прокрутки", "create.subtitle.controller_put": "Контроллер стучит", - "create.subtitle.cranking": "Вращается рукоятка", - "create.subtitle.sanding_short": "Долгий звук полировки", + "create.subtitle.cranking": "Рукоятка вращается", + "create.subtitle.sanding_short": "Звук полировки", "create.subtitle.wrench_rotate": "Использован гаечный ключ", "create.subtitle.potato_hit": "Еда врезается", - "create.subtitle.saw_activate_wood": "Активируется механическая пила", + "create.subtitle.saw_activate_wood": "Механическая пила работает", "create.subtitle.whistle_high": "Высокий свист", - "create.subtitle.whistle_train_manual_low": "Гудок поезда", - "create.subtitle.whistle_train": "Свист", + "create.subtitle.whistle_train_manual_low": "Низкое гудение поезда", + "create.subtitle.whistle_train": "Гудение поезда", "create.subtitle.haunted_bell_convert": "Призрачный колокол пробуждается", "create.subtitle.train": "Грохот колёс", "create.subtitle.deny": "Отрицательный «Буп»", @@ -1796,7 +1800,7 @@ "create.subtitle.contraption_assemble": "Штуковина движется", - "_": "->------------------------] Item Descriptions [------------------------<-", + "_": "->------------------------] Описания предметов [------------------------<-", "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", @@ -1808,10 +1812,10 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "block.create.wooden_bracket.tooltip": "ДЕРЕВЯННАЯ СКОБА", - "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.", + "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _Валы, Шестерни_ и _Трубы_, используя уютное деревянное укрепление.", "block.create.metal_bracket.tooltip": "МЕТАЛЛИЧЕСКАЯ СКОБА", - "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя прочное индустриальное укрепление.", + "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _Валы, Шестерни_ и _Трубы_, используя прочное индустриальное укрепление.", "block.create.seat.tooltip": "СИДЕНЬЕ", "block.create.seat.tooltip.summary": "Присядьте и насладитесь поездкой! Привязывает игроков к собранным _устройствам_. Отлично выглядит как простая мебель! Можно окрасить в разные цвета.", @@ -1823,42 +1827,42 @@ "item.create.wand_of_symmetry.tooltip": "ЖЕЗЛ СИММЕТРИИ", "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", - "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", + "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа.", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным.", "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по блоку", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", + "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _перемещает_ зеркало.", "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", + "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало.", "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадучись", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", + "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_.", "item.create.handheld_worldshaper.tooltip": "РУЧНОЙ РЕДАКТОР МИРА", "item.create.handheld_worldshaper.tooltip.summary": "Удобный инструмент для создания _ландшафтов_ и _рельефа_ _местности_.", "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, помещённые инструментом, в целевой блок.", + "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, выбранным инструментом, в целевое место.", "item.create.handheld_worldshaper.tooltip.control2": "ПКМ на блок", "item.create.handheld_worldshaper.tooltip.action2": "Применяет выбранную _кисть_ и _инструмент_ в выбранном месте.", "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", + "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_.", "item.create.tree_fertilizer.tooltip": "УДОБРЕНИЕ ДЛЯ ДЕРЕВЬЕВ", "item.create.tree_fertilizer.tooltip.summary": "Мощная комбинация минералов подходит для ускорения роста деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья, _независимо_ от _условий_ _их_ _расположения_", + "item.create.tree_fertilizer.tooltip.condition1": "ПКМ с предметом на саженце", + "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья, _независимо_ от _условий_ _их_ _расположения_.", "item.create.extendo_grip.tooltip": "УДЛИНЕННАЯ РУКА", - "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", + "item.create.extendo_grip.tooltip.summary": "Значительно _увеличивает_ _досягаемость_ владельца.", "item.create.extendo_grip.tooltip.condition1": "Находясь в левой руке", - "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", + "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _правой_ _руке_.", "item.create.extendo_grip.tooltip.condition2": "Когда надет Медный баллон", "item.create.extendo_grip.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", "item.create.potato_cannon.tooltip": "КАРТОФЕЛЬНАЯ ПУШКА", - "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_", - "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом", + "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_.", + "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом в инвентаре", "item.create.potato_cannon.tooltip.behaviour1": "_Выстреливает_ подходящим предметом из вашего _инвентаря_.", "item.create.potato_cannon.tooltip.condition2": "Когда надет Медный баллон", - "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", + "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из Баллона.", "item.create.filter.tooltip": "ФИЛЬТР", "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", @@ -1875,10 +1879,10 @@ "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.empty_schematic.tooltip": "ПУСТАЯ СХЕМАТИКА", - "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_", + "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_.", "item.create.schematic.tooltip": "СХЕМАТИКА", - "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", + "item.create.schematic.tooltip.summary": "Содержит структуру, которая может позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _Схематичную пушку_ для её построения.", "item.create.schematic.tooltip.condition1": "ПКМ с предметом", "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", "item.create.schematic.tooltip.control1": "ПКМ крадучись", @@ -1891,16 +1895,16 @@ "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", "item.create.schematic_and_quill.tooltip.control1": "ПКМ с предметом", - "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", - "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", + "item.create.schematic_and_quill.tooltip.action1": "Выбирает угловые точки / подтверждает сохранение.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl с предметом", + "item.create.schematic_and_quill.tooltip.action2": "Позволяет выбрать угловые точки в воздухе. Прокрутка для настройки расстояния.", "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадучись", "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _удаляет_ выделение.", "block.create.schematicannon.tooltip": "СХЕМАТИЧНАЯ ПУШКА", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", "block.create.schematicannon.tooltip.condition1": "ПКМ по блоку", - "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", + "block.create.schematicannon.tooltip.behaviour1": "Открывает _интерфейс_.", "block.create.schematic_table.tooltip": "СХЕМАТИЧНЫЙ СТОЛ", "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схематики в _пустые_ _схематики_.", @@ -1909,12 +1913,12 @@ "item.create.goggles.tooltip": "ИНЖЕНЕРНЫЕ ОЧКИ", "item.create.goggles.tooltip.summary": "Очки для улучшения зрения с помощью полезной кинетической информации.", - "item.create.goggles.tooltip.condition1": "При ношении", - "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также _создаваемой нагрузке_ и _мощности_ отдельных компонентов.", + "item.create.goggles.tooltip.condition1": "Когда надеты", + "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также _создаваемой нагрузки_ и _мощности_ отдельных компонентов.", "item.create.goggles.tooltip.condition2": "При взгляде на датчик", - "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или нагрузке сети, к которой подключён датчик.", + "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или нагрузки сети, к которой подключён датчик.", "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", - "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", + "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _ёмкости_ блока и о хранящейся в нём хранится _жидкости_.", "item.create.wrench.tooltip": "ГАЕЧНЫЙ КЛЮЧ", "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", @@ -1924,41 +1928,41 @@ "item.create.wrench.tooltip.action2": "Разбирает кинетические компоненты и помещает их обратно в ваш инвентарь.", "block.create.nozzle.tooltip": "ФОРСУНКА", - "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", + "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _Вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", "block.create.cuckoo_clock.tooltip": "ЧАСЫ С КУКУШКОЙ", - "block.create.cuckoo_clock.tooltip.summary": "_Прекрасное_ _мастерство_ для _украшения_ пространства и _отслеживания_ _времени_.", + "block.create.cuckoo_clock.tooltip.summary": "Прекрасная _вещица_ для _украшения_ пространства и _отслеживания_ _времени_.", "block.create.cuckoo_clock.tooltip.condition1": "При вращении", - "block.create.cuckoo_clock.tooltip.behaviour1": "Показывает текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", + "block.create.cuckoo_clock.tooltip.behaviour1": "Показывают текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", "block.create.turntable.tooltip": "ПОВОРОТНЫЙ СТОЛ", "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", "block.create.toolbox.tooltip": "ЯЩИК ДЛЯ ИНСТРУМЕНТОВ", - "block.create.toolbox.tooltip.summary": "Самый дорогой компаньон каждого изобретателя. Удобно _вмещает_ большое количество _8 различных_ типов предметов.", - "block.create.toolbox.tooltip.condition1": "При поднятии", - "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ содержимое _инвентаря_.", - "block.create.toolbox.tooltip.condition2": "При размещении в диапазоне досягаемости", - "block.create.toolbox.tooltip.behaviour2": "_Ближайшие_ _игроки_ могут зажать _клавишу_ для _удалённого_ получения содержимого _ящика_ _для_ _инструментов_.", + "block.create.toolbox.tooltip.summary": "Самый дорогой компаньон каждого изобретателя. Удобно _вмещает_ большое количество _восьми различных_ типов предметов.", + "block.create.toolbox.tooltip.condition1": "ЛКМ по блоку", + "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ _содержимое_ и складывается в инвентарь игрока.", + "block.create.toolbox.tooltip.condition2": "ALT в диапазоне досягаемости", + "block.create.toolbox.tooltip.behaviour2": "Позволяет _получить быстрый доступ_ к содержимому _Ящика_ _для_ _инструментов_.", "block.create.toolbox.tooltip.condition3": "ПКМ по блоку", "block.create.toolbox.tooltip.behaviour3": "Открывает _интерфейс контейнера_.", "block.create.stockpile_switch.tooltip": "НАБЛЮДАТЕЛЬ ЗАПОЛНЕННОСТИ", - "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполненности_ _прикреплённого_ _ящика_.", + "block.create.stockpile_switch.tooltip.summary": "Подаёт редстоун-сигнал в зависимости от _заполненности_ _прикреплённого_ _ящика_.", "block.create.stockpile_switch.tooltip.condition1": "Когда достигнут нижний предел", - "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", + "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _редстоун-сигнал_.", "block.create.content_observer.tooltip": "НАБЛЮДАТЕЛЬ ЗА СОДЕРЖИМЫМ", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _импульс редстоуна_.", + "block.create.content_observer.tooltip.summary": "_Обнаруживает предметы внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий предмет, этот компонент излучает редстоун-сигнал. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _редстоун-импульс_.", "block.create.content_observer.tooltip.condition1": "Когда наблюдает за контейнером", - "block.create.content_observer.tooltip.behaviour1": "Выдаёт _сигнал редстоуна_, пока наблюдаемое содержимое совпадает с _фильтром_.", + "block.create.content_observer.tooltip.behaviour1": "Выдаёт _редстоун-сигнал_, пока наблюдаемое содержимое совпадает с _фильтром_.", "block.create.content_observer.tooltip.condition2": "Когда наблюдает за воронкой", - "block.create.content_observer.tooltip.behaviour2": "Выдаёт _сигнал редстоуна_, пока содержимое совпадает с _перемещаемым_ предметом.", + "block.create.content_observer.tooltip.behaviour2": "Выдаёт _редстоун-сигнал_, пока содержимое совпадает с _перемещаемым_ предметом.", "block.create.creative_crate.tooltip": "ТВОРЧЕСКИЙ ЯЩИК", - "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалам.", + "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со Схематичной пушкой, чтобы удалить любые требования к материалам.", "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", + "block.create.creative_crate.tooltip.behaviour1": "Всё, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", "item.create.creative_blaze_cake.tooltip": "ТВОРЧЕСКИЙ ТОРТ", "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок всполоха_. После поедания этого торта у Горелки всполоха _никогда не закончится топливо_.", @@ -1967,13 +1971,13 @@ "block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩИЕ РЕЛЬСЫ", "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие провести _точную настройку_ _скорости_ вагонеток.", - "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", - "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя сигнал красного камня на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", + "block.create.controller_rail.tooltip.condition1": "Когда подан редстоун-сигнал", + "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя редстоун-сигнал на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", "item.create.sand_paper.tooltip": "НАЖДАЧНАЯ БУМАГА", - "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", + "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью Автономного активатора.", "item.create.sand_paper.tooltip.condition1": "ПКМ с предметом", - "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", + "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_.", "item.create.builders_tea.tooltip": "ЧАЙ СТРОИТЕЛЯ", "item.create.builders_tea.tooltip.summary": "Идеальный напиток для начала дня. _Мотивирует и насыщает_.", @@ -1994,28 +1998,28 @@ "item.create.linked_controller.tooltip.behaviour1": "Включает контроллер. _Управление_ _движением_ перехвачено, пока он активен.", "item.create.linked_controller.tooltip.condition2": "ПКМ крадучись", "item.create.linked_controller.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - "item.create.linked_controller.tooltip.condition3": "ПКМ по приемнику сигнала редстоуна", + "item.create.linked_controller.tooltip.condition3": "ПКМ по Редстоуновому беспроводному приёмнику сигнала", "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать её к _частоте передатчика_.", "item.create.linked_controller.tooltip.condition4": "ПКМ по кафедре", - "item.create.linked_controller.tooltip.behaviour4": "Помещает контроллер на кафедру для удобства использования. (ПКМ крадучись, чтобы забрать его)", + "item.create.linked_controller.tooltip.behaviour4": "Помещает Контроллер на кафедру для удобства использования (ПКМ крадучись, чтобы забрать его).", "item.create.diving_helmet.tooltip": "ШЛЕМ ДЛЯ ДАЙВИНГА", - "item.create.diving_helmet.tooltip.summary": "Вместе с _медным_ _баллоном_, позволяет владельцу _дышать _ _под водой_ в течение длительного времени.", - "item.create.diving_helmet.tooltip.condition1": "При ношении", - "item.create.diving_helmet.tooltip.behaviour1": "Даёт эффект _Водного Дыхания_, медленно тратя _воздух_ из баллона.", + "item.create.diving_helmet.tooltip.summary": "Вместе с _Медным_ _баллоном_, позволяет владельцу _дышать_ _под водой_ в течение длительного времени.", + "item.create.diving_helmet.tooltip.condition1": "Когда надето", + "item.create.diving_helmet.tooltip.behaviour1": "Даёт эффект _водного Дыхания_, медленно тратя _воздух_ из Баллона.", "item.create.copper_backtank.tooltip": "МЕДНЫЙ БАЛЛОН", "item.create.copper_backtank.tooltip.summary": "_Носимый_ _резервуар_ для транспортировки воздуха под давлением.", - "item.create.copper_backtank.tooltip.condition1": "При ношении", + "item.create.copper_backtank.tooltip.condition1": "Когда надето", "item.create.copper_backtank.tooltip.behaviour1": "Обеспечивает подачу _воздуха_ под _давлением_ к оборудованию, которое в этом нуждается.", - "item.create.copper_backtank.tooltip.condition2": "При размещении и питании от кинетической энергии", + "item.create.copper_backtank.tooltip.condition2": "При вращении", "item.create.copper_backtank.tooltip.behaviour2": "Собирает и сжимает воздух со скоростью, зависящей от скорости вращения.", "block.create.placard.tooltip": "УМНАЯ РАМКА", "block.create.placard.tooltip.summary": "_Обрамите_ свои предметы латунью с помощью этой красивой рамки. Безопасна для штуковин!", "block.create.placard.tooltip.condition1": "ПКМ по рамке с предметом в руках", - "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _сигнал редстоуна_, если соответствующий предмет уже присутствует.", - "block.create.placard.tooltip.condition2": "При ударе", + "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _редстоун-сигнал_, если соответствующий предмет уже присутствует.", + "block.create.placard.tooltip.condition2": "ЛКМ по рамке с предметом", "block.create.placard.tooltip.behaviour2": "_Убирает_ текущий _предмет_ из рамки.", "block.create.flywheel.tooltip": "МАХОВИК", @@ -2025,18 +2029,18 @@ "item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА", "item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.", - "item.create.diving_boots.tooltip.condition1": "При ношении", - "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейерам.", + "item.create.diving_boots.tooltip.condition1": "Когда надеты", + "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по работающим конвейерам.", "item.create.crafting_blueprint.tooltip": "ЧЕРТЁЖ", - "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания предметов. Каждый слот показывает отдельный рецепт крафта.", + "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания. Каждый слот показывает отдельный рецепт крафта.", "item.create.crafting_blueprint.condition1": "ПКМ по пустому слоту", "item.create.crafting_blueprint.behaviour1": "Открывает меню _крафта_, позволяющее _настроить_ _рецепт_ и отображаемые предметы.", "item.create.crafting_blueprint.condition2": "ПКМ по настроенному слоту", - "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. _Shift_, чтобы создать до _стака_ предметов.", + "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. Зажмите _Shift_, чтобы создать до _стака_ предметов.", "item.create.minecart_coupling.tooltip": "СОЕДИНИТЕЛЬ ВАГОНЕТОК", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный мини-поезд.", + "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Вагонеточные штуковины_ вместе, чтобы создать великолепный мини-поезд.", "item.create.minecart_coupling.tooltip.condition1": "ПКМ по вагонеткам", "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определённой дистанции_ при движении.", @@ -2045,16 +2049,16 @@ "item.create.experience_nugget.tooltip.condition1": "ПКМ с предметом", "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_, находящиеся внутри.", - "block.create.peculiar_bell.tooltip": "СТРАННЫЙ КОЛОКОЛ", - "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать непредвиденные последствия...", + "block.create.peculiar_bell.tooltip": "ОСОБЕННЫЙ КОЛОКОЛ", + "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _огнём душ_ может вызвать непредвиденные последствия...", "block.create.haunted_bell.tooltip": "ПРИЗРАЧНЫЙ КОЛОКОЛ", "block.create.haunted_bell.tooltip.summary": "_Проклятый колокол_ населённый потерянными душами Нижнего мира.", - "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или при ПКМ по блоку", + "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или ПКМ по блоку", "block.create.haunted_bell.tooltip.behaviour1": "Подсвечивает ближайшие _места без света_ на которых могут появляться _враждебные существа_.", - "_": "->------------------------] Ponder Content [------------------------<-", + "_": "->------------------------] Раздел размышлений [------------------------<-", "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для размышления", "create.ponder.subject": "Субъект этой сцены", @@ -2064,35 +2068,35 @@ "create.ponder.close": "Закрыть", "create.ponder.identify": "Определить", "create.ponder.next": "Следующая сцена", - "create.ponder.next_up": "Размышлять дальше над...", + "create.ponder.next_up": "Размышлять дальше над:", "create.ponder.previous": "Предыдущая сцена", - "create.ponder.replay": "Воспроизвести снова", + "create.ponder.replay": "Повторить сцену", "create.ponder.think_back": "Назад", "create.ponder.slow_text": "Удобное чтение", "create.ponder.exit": "Выйти", "create.ponder.welcome": "Добро пожаловать в размышления!", "create.ponder.categories": "Категории, доступные в Create", - "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках.", + "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках", "create.ponder.index_title": "Содержание размышлений", "create.ponder.shared.rpm16": "16 об./мин.", "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Гаечным ключом", - "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать вещи автоматически", + "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать предметы автоматически", "create.ponder.shared.sneak_and": "Shift +", "create.ponder.shared.rpm8": "8 об./мин.", "create.ponder.shared.ctrl_and": "Ctrl +", "create.ponder.shared.rpm32": "32 об./мин.", "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", - "create.ponder.shared.movement_anchors": "С помощью суперклея или шасси, более крупные структуры могут быть сдвинуты.", + "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдвинуты", "create.ponder.tag.redstone": "Логические компоненты", - "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструированием схем из редстоуна", - "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", - "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", + "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструированием редстоуновых схем", + "create.ponder.tag.contraption_assembly": "Соединители блоков", + "create.ponder.tag.contraption_assembly.description": "Блоки и компоненты, используемые для соединения и склеивания передвигаемых структур", "create.ponder.tag.fluids": "Жидкостные манипуляторы", "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать жидкости", "create.ponder.tag.decoration": "Эстетика", "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", - "create.ponder.tag.windmill_sails": "Паруса для Подшипников ветряной мельницы", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в работе.", + "create.ponder.tag.windmill_sails": "Парусоподобные блоки", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы; каждый из этих блоков имеет одинаковую эффективность в работе", "create.ponder.tag.arm_targets": "Цели для Механической руки", "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической руки", "create.ponder.tag.kinetic_appliances": "Кинетические приборы", @@ -2100,105 +2104,105 @@ "create.ponder.tag.kinetic_sources": "Кинетические источники", "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие силу вращения", "create.ponder.tag.movement_anchor": "Опоры движения", - "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", + "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикреплённую структуру разными способами", "create.ponder.tag.kinetic_relays": "Кинетические блоки", "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать силу вращения куда-нибудь", "create.ponder.tag.contraption_actor": "Компоненты штуковин", "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", "create.ponder.tag.creative": "Творческий режим", - "create.ponder.tag.creative.description": "Компоненты обычно недоступные в Режиме Выживания", - "create.ponder.tag.display_sources": "Источники для Передатчика информации", - "create.ponder.tag.display_sources.description": "Компоненты или блоки, которые предлагают некоторые данные, которые можно прочитать с помощью Передатчика информации", - "create.ponder.tag.logistics": "Транспортировка предметов", + "create.ponder.tag.creative.description": "Компоненты, обычно недоступные в режиме выживания", + "create.ponder.tag.display_sources": "Источники информации", + "create.ponder.tag.display_sources.description": "Компоненты или блоки, которые предлагают данные, которые можно прочитать с помощью Передатчика информации", + "create.ponder.tag.logistics": "Логистика", "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", - "create.ponder.tag.display_targets": "Цели для Передатчика информации", + "create.ponder.tag.display_targets": "Визуализаторы информации", "create.ponder.tag.display_targets.description": "Компоненты или блоки, которые могут обрабатывать и отображать данные, полученные от Передатчика информации", "create.ponder.tag.train_related": "Железнодорожное оборудование", - "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении Железнодорожных штуковин", + "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении железнодорожных штуковин", - "create.ponder.analog_lever.header": "Управлением сигналом используя Аналоговый рычаг", - "create.ponder.analog_lever.text_1": "Аналоговый рычаг создан как компактный и точный источник Редстоун сигнала", + "create.ponder.analog_lever.header": "Управлением редстоун-сигналом используя Аналоговый рычаг", + "create.ponder.analog_lever.text_1": "Аналоговый рычаг создан как компактный и точный источник редстоун-сигнала", "create.ponder.analog_lever.text_2": "ПКМ, чтобы увеличить силу выходного сигнала", - "create.ponder.analog_lever.text_3": "ПКМ крадучись, чтобы уменьшить силу выходного сигнала снова", + "create.ponder.analog_lever.text_3": "ПКМ крадучись, чтобы уменьшить силу выходного сигнала", "create.ponder.andesite_tunnel.header": "Использованием Андезитовых туннелей", - "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать Конвейеры", - "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть соединения сбоку...", + "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать конвейеры", + "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть доступный выход сбоку...", "create.ponder.andesite_tunnel.text_3": "...он будет отделять ровно один предмет из любых проходящих мимо стаков", "create.ponder.andesite_tunnel.text_4": "Остаток продолжит свой путь", - "create.ponder.auto_schedule.header": "Станциями и Расписаниями", + "create.ponder.auto_schedule.header": "Станцией и автоматической выдачей Расписания", "create.ponder.auto_schedule.text_1": "Расписания могут использоваться для предоставления машинистам пункта назначения", - "create.ponder.auto_schedule.text_2": "Компараторы будут получать сигнал всякий раз, когда присутствует поезд", - "create.ponder.auto_schedule.text_3": "Имейте в виду, что к станции можно подойти только с указанного направления", - "create.ponder.auto_schedule.text_4": "Станции также можно использовать для автоматического назначения новых расписаний", - "create.ponder.auto_schedule.text_5": "Расписание, положенное на станцию, будет автоматически скопировано для машиниста поезда", + "create.ponder.auto_schedule.text_2": "Компараторы будут получать редстоун-сигнал всегда, когда поезд прибыл на Станцию", + "create.ponder.auto_schedule.text_3": "Имейте в виду, что к Станции можно подойти только с указанного направления", + "create.ponder.auto_schedule.text_4": "Станции также можно использовать для автоматического назначения новых Расписаний", + "create.ponder.auto_schedule.text_5": "Расписание, положенное на Станцию, будет автоматически скопировано для машиниста поезда", "create.ponder.auto_schedule.text_6": "В отличии от ручной выдачи, машинисты не заберут его с собой", - "create.ponder.basin.header": "Обработкой предметов в Чаше", + "create.ponder.basin.header": "Обработкой предметов в Чашах", "create.ponder.basin.text_1": "Чаша может хранить предметы и жидкости для обработки", - "create.ponder.basin.text_2": "После обработки, чаши пытаются вывести результат под любой из их сторон", + "create.ponder.basin.text_2": "После обработки, Чаши пытаются вывести результат под любую доступную сторону", "create.ponder.basin.text_3": "Когда предоставлен подходящий компонент, у Чаши появится выходящий кран", "create.ponder.basin.text_4": "Несколько вариантов применимы здесь", "create.ponder.basin.text_5": "Вывод чаши будет пойман инвентарём ниже", "create.ponder.basin.text_6": "Без выходящего крана, Чаша будет оставлять предметы, полученные в результате обработки", "create.ponder.basin.text_7": "Это может быть полезно, если продукт должен быть использован повторно как ингредиент", - "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из чаши", + "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из Чаши", "create.ponder.basin.text_9": "Фильтр может быть необходим для избежания извлечения необработанных предметов", "create.ponder.bearing_modes.header": "Режимами движения Механического подшипника", - "create.ponder.bearing_modes.text_1": "Когда остановлен, подшипник установит структуру на ближайшем выровненным по сетке блоков углу", - "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не возвращать структуру в твёрдое состояние, или только возле начального угла", + "create.ponder.bearing_modes.text_1": "Когда остановлен, Подшипник установит структуру на ближайшем выровненным по сетке блоков углу", + "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не превращать структуру в блоки, или только на начальной позиции", - "create.ponder.belt_casing.header": "Обрамлением ремней", - "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации Механических ремней (конвейера)", - "create.ponder.belt_casing.text_2": "Используйте Ключ, чтобы убрать обрамление", + "create.ponder.belt_casing.header": "Обрамлением конвейеров", + "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации конвейеров", + "create.ponder.belt_casing.text_2": "Используйте Гаечный ключ, чтобы убрать обрамление", "create.ponder.belt_connector.header": "Использованием Механических ремней", - "create.ponder.belt_connector.text_1": "ПКМ по двум валам предметом ремня соединит их вместе в конвейер", - "create.ponder.belt_connector.text_2": "Случайные выделения могут быть отменены нажатием ПКМ Крадучись", - "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены по всей длине конвейера", + "create.ponder.belt_connector.text_1": "ПКМ по двум валам Ремнём соединит их вместе в конвейер", + "create.ponder.belt_connector.text_2": "Ошибочные выделения могут быть отменены нажатием ПКМ крадучись", + "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены в любую часть конвейера", "create.ponder.belt_connector.text_4": "Валы, соединённые через ремни, будут вращаться с той же скоростью и направлением", - "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Ключом", + "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Гаечным ключом", "create.ponder.belt_connector.text_6": "Механические ремни могут быть окрашены в эстетических целях", "create.ponder.belt_directions.header": "Возможными расположениями Механических ремней", "create.ponder.belt_directions.text_1": "Ремни не могут соединяться в произвольных направлениях", - "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально", - "create.ponder.belt_directions.text_3": "2. Они могут соединяться по диагонали", - "create.ponder.belt_directions.text_4": "3. Они могут соединяться вертикально", - "create.ponder.belt_directions.text_5": "4. И они могут соединять вертикальные валы горизонтально", - "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать Длины от 2 до 20 блоков", + "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально;", + "create.ponder.belt_directions.text_3": "2. по диагонали;", + "create.ponder.belt_directions.text_4": "3. и вертикально;", + "create.ponder.belt_directions.text_5": "4. И также они могут соединять вертикальные Валы горизонтально", + "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать длины от 2 до 20 блоков", "create.ponder.belt_transport.header": "Использованием Механических ремней для логистики", - "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать Предметы и другие Сущности", - "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с ремня", + "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать предметы и другие сущности", + "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с конвейера", "create.ponder.blaze_burner.header": "Кормлением Горелок всполоха", - "create.ponder.blaze_burner.text_1": "Горелки всполохов дают тепло предметам, обрабатывающимся в Чаше", + "create.ponder.blaze_burner.text_1": "Горелки всполохов нагревают предметы, обрабатывающиеся в Чаше", "create.ponder.blaze_burner.text_2": "Для этого, всполох должен быть накормлен воспламеняемыми предметами", "create.ponder.blaze_burner.text_3": "С Тортом всполоха, горелка может достигать ещё большего уровня нагрева", "create.ponder.blaze_burner.text_4": "Процесс кормления может быть автоматизирован, используя Автономный активатор или Механическую руку", "create.ponder.brass_funnel.header": "Использованием Латунных воронок", - "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только одиночные предметы", - "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать до целого стака", + "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только один предмет за раз", + "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать их до целого стака", "create.ponder.brass_funnel.text_3": "Прокрутка на слоте фильтра позволяет точно регулировать размер извлекаемого стака", - "create.ponder.brass_funnel.text_4": "Используя предмет на слоте фильтра ограничит воронку до передачи только совпадающих стаков", + "create.ponder.brass_funnel.text_4": "Использование предмет на слоте фильтра, ограничит воронку до передачи только совпадающих предметов", "create.ponder.brass_tunnel.header": "Использованием Латунных туннелей", "create.ponder.brass_tunnel.text_1": "Латунные туннели могут быть использованы, чтобы накрывать конвейеры", "create.ponder.brass_tunnel.text_2": "Латунные туннели имеют слот для фильтра на каждой открытой стороне", "create.ponder.brass_tunnel.text_3": "Фильтр на входящих соединениях блокирует неподходящие предметы", - "create.ponder.brass_tunnel.text_4": "Фильтр на выходящих соединениях может быть использован для сортировки предметов по типу", + "create.ponder.brass_tunnel.text_4": "Фильтр на выходящих соединениях может быть использован для сортировки предметов", "create.ponder.brass_tunnel.text_5": "Всегда, когда у проходящего предмета есть несколько доступных выходов, режим распределения решит что с ним делать", "create.ponder.brass_tunnel.text_6": "Латунные туннели на параллельных конвейерах формируют группы", "create.ponder.brass_tunnel.text_7": "Входящие предметы будут распределены между всеми соединёнными выходами", - "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок туннеля напрямую", + "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок Туннеля напрямую", - "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунных туннелей", - "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения Латунного туннеля", - "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальная настройка для Латунных туннелей", + "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунного туннеля", + "create.ponder.brass_tunnel_modes.text_1": "Используя Гаечный ключ, вы можете настроить режим распределения Латунного туннеля", + "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальный режим для Латунных туннелей", "create.ponder.brass_tunnel_modes.text_11": "Предметы могут пройти только если у каждого туннеля в группе есть ожидающий у входа предмет", "create.ponder.brass_tunnel_modes.text_12": "Это подразумевает, что все конвейеры поставляют предметы с равной скоростью", "create.ponder.brass_tunnel_modes.text_2": "«Разделение» попытается распределить стак поровну между доступными выходами", @@ -2207,54 +2211,54 @@ "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» сохраняет цельные стаки и отдаёт их выходам по очереди", "create.ponder.brass_tunnel_modes.text_6": "Опять же, если выход не может принять больше предметов, он будет пропущен", "create.ponder.brass_tunnel_modes.text_7": "«Строго по кругу» никогда не пропускает выходы", - "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайшее» приоритизирует ближайшие выходы от места подачи предметов", + "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайший» приоритизирует ближайшие выходы от места подачи предметов", "create.ponder.brass_tunnel_modes.text_9": "«Случайно» будет отдавать целые стаки случайно выбранным выходам", "create.ponder.cart_assembler.header": "Движением структур при помощи Сборщиков вагонеток", - "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые структуры к проходящим мимо вагонеткам", - "create.ponder.cart_assembler.text_2": "Без редстоун сигнала они разбирают вагонеточные штуковины обратно в блоки", - "create.ponder.cart_assembler.text_3": "Использование Ключа на вагонетке позволит вам унести Штуковину куда-то ещё", + "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые сверху структуры к проезжающим через них вагонетки", + "create.ponder.cart_assembler.text_2": "Без редстоун-сигнала они разбирают штуковины обратно в блоки", + "create.ponder.cart_assembler.text_3": "Использование Гаечного ключа на вагонетке позволит вам унести Вагонеточную штуковину куда-то ещё", "create.ponder.cart_assembler_dual.header": "Сборкой Штуковин-экипажей", "create.ponder.cart_assembler_dual.text_1": "Всегда, когда два Сборщика вагонеток имеют общую прикреплённую структуру...", - "create.ponder.cart_assembler_dual.text_2": "активация любого из них создаст Штуковину-экипаж", + "create.ponder.cart_assembler_dual.text_2": "...активация любого из них создаст Штуковину-экипаж", "create.ponder.cart_assembler_dual.text_3": "Эти вагонетки будут вести себя так, будто они соединены Соединителем вагонеток", "create.ponder.cart_assembler_modes.header": "Настройкой ориентации Вагонеточных штуковин", "create.ponder.cart_assembler_modes.text_1": "Вагонеточные штуковины будут поворачиваться в сторону движения их вагонеток", - "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона конструкции будет считаться передней", - "create.ponder.cart_assembler_modes.text_3": "Если сборщик настроен на блокировку вращения, то ориентация штуковин никогда не изменится", + "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона штуковины будет считаться передней", + "create.ponder.cart_assembler_modes.text_3": "Если Сборщик настроен на блокирование вращения, то ориентация штуковин никогда не изменится", "create.ponder.cart_assembler_rails.header": "Другими типами вагонеток и рельс", "create.ponder.cart_assembler_rails.text_1": "Сборщики вагонеток на обычных рельсах не будут влиять на движение проходящих вагонеток", "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", - "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основание", - "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут поддерживать себя запитанными, используя топливо из присоединённых инвентарей", + "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основания для Вагонеточных штуковин", + "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут ехать самостоятельно, используя топливо из присоединённых инвентарей", - "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами", + "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами в корпусе", "create.ponder.chain_drive.text_1": "Цепные приводы передают силу вращения друг другу", - "create.ponder.chain_drive.text_2": "Все валы соединённые таким образом будут вращаться в одном направлении", + "create.ponder.chain_drive.text_2": "Все Валы соединённые таким образом будут вращаться в одном направлении", "create.ponder.chain_drive.text_3": "Любая часть в ряду может быть повёрнута на 90 градусов", - "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными механизмами", - "create.ponder.chain_gearshift.text_1": "Неактивные Цепные механизмы ведут себя точно так же, как Цепные приводы", - "create.ponder.chain_gearshift.text_2": "Когда активирован, скорость, передаваемая другим Цепным механизмам в ряду удваивается", - "create.ponder.chain_gearshift.text_3": "Когда активированный Цепной механизм не является источником, его скорость будет снижена вдвое", - "create.ponder.chain_gearshift.text_4": "В обоих случаях Цепные приводы в ряду всегда вращаются с 2x скоростью активированного Цепного механизма", - "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, это умножение может быть настроено более точно между 1 и 2", + "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными коробками передач", + "create.ponder.chain_gearshift.text_1": "Неактивные Цепные коробки передач ведут себя точно так же, как Цепные приводы", + "create.ponder.chain_gearshift.text_2": "При активации, скорость, передаваемая другим Цепным коробкам передач в ряду удваивается", + "create.ponder.chain_gearshift.text_3": "Когда активированная Цепная коробка передач не является источником, его скорость будет снижена вдвое", + "create.ponder.chain_gearshift.text_4": "В обоих случаях Цепные приводы в ряду всегда вращаются с 2x скоростью активированной Цепной коробки передач", + "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, изменение скорости может быть настроено более точно, нежели в 1 или в 2 раза", "create.ponder.chain_gearshift.text_6": "12 об./мин.", "create.ponder.chute.header": "Транспортировкой предметов вниз через Желоба", "create.ponder.chute.text_1": "Желоба могут транспортировать предметы вертикально вниз", - "create.ponder.chute.text_2": "Используя Ключ, вы можете создать окно", - "create.ponder.chute.text_3": "Установка желобов на стороны других желобов сделает их диагональными", + "create.ponder.chute.text_2": "Используя Гаечный ключ, вы можете создать окно", + "create.ponder.chute.text_3": "Установка Желобов на стороны других желобов сделает их диагональными", "create.ponder.chute_upward.header": "Транспортировкой предметов вверх через Желоба", "create.ponder.chute_upward.text_1": "Используя Вентилятор в корпусе внизу или наверху, Жёлоб может перемещать предметы вверх", - "create.ponder.chute_upward.text_2": "Осмотр желобов в Инженерных очках показывает информацию о направлении движения", + "create.ponder.chute_upward.text_2": "Осмотр Желобов в Инженерных очках показывает информацию о направлении движения", "create.ponder.chute_upward.text_3": "На «заблокированном» конце предметы должны быть введены/выведены сбоку", - "create.ponder.clockwork_bearing.header": "Оживлением структур Часовым механизмом", + "create.ponder.clockwork_bearing.header": "Оживлением структур Часовыми механизмами", "create.ponder.clockwork_bearing.text_1": "Часовые механизмы прикрепляются к блокам спереди", "create.ponder.clockwork_bearing.text_2": "При получении силы вращения структура повернётся в зависимости от текущего часа", "create.ponder.clockwork_bearing.text_3": "3:00", @@ -2262,11 +2266,11 @@ "create.ponder.clockwork_bearing.text_5": "ПКМ по механизму, чтобы остановить или вновь запустить структуру", "create.ponder.clockwork_bearing.text_6": "Вторая структура может быть добавлена спереди Часовой стрелки", "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой суперклеем или чем-то схожим", - "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как Минутная стрелка", + "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как минутная стрелка", - "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцепления", + "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцеплений", "create.ponder.clutch.text_1": "Сцепление передаёт вращение по прямой", - "create.ponder.clutch.text_2": "При активации Редстоуном оно разрывает соединение", + "create.ponder.clutch.text_2": "При активации редстоун-сигналом оно разрывает соединение", "create.ponder.cog_speedup.header": "Переключением передач Шестернями", "create.ponder.cog_speedup.text_1": "Большие и Маленькие шестерни могут соединяться по диагонали", @@ -2284,8 +2288,8 @@ "create.ponder.creative_fluid_tank.header": "Использованием Творческих жидкостных баков", "create.ponder.creative_fluid_tank.text_1": "Творческий жидкостный бак может использоваться для обеспечения бесконечного запаса жидкости", - "create.ponder.creative_fluid_tank.text_2": "Щелкните ПКМ предметом, содержащим жидкость, чтобы настроить его", - "create.ponder.creative_fluid_tank.text_3": "Сети труб могут бесконечно вытягивать заданную жидкость из резервуара", + "create.ponder.creative_fluid_tank.text_2": "Щёлкните ПКМ предметом, содержащим жидкость, чтобы настроить его", + "create.ponder.creative_fluid_tank.text_3": "Трубопроводы могут бесконечно вытягивать заданную жидкость из резервуара", "create.ponder.creative_fluid_tank.text_4": "Любые жидкости, закачанные обратно в творческий жидкостный бак, будут уничтожены", "create.ponder.creative_motor.header": "Генерацией силы вращения Творческими моторами", @@ -2295,13 +2299,13 @@ "create.ponder.creative_motor_mojang.header": "Загадкой от Mojang", "create.ponder.crushing_wheels.header": "Обработкой предметов Колёсами дробления", - "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может молоть предметы очень эффективно", - "create.ponder.crushing_wheels.text_2": "Сила вращения должна вращать их друг в друга", + "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может очень эффективно дробить предметы", + "create.ponder.crushing_wheels.text_2": "Кинетическая энергия должна вращать их друг в друга", "create.ponder.crushing_wheels.text_3": "Предметы брошенные или введённые в них сверху будут обработаны", - "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматическим способом", + "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматически", "create.ponder.deployer.header": "Использованием Автономных активаторов", - "create.ponder.deployer.text_1": "При наличии силы вращения автономный активатор может имитировать действия игрока", + "create.ponder.deployer.text_1": "При наличии силы вращения Автономный активатор может имитировать действия игрока", "create.ponder.deployer.text_10": "ПКМ спереди, чтобы дать ему предмет для использования", "create.ponder.deployer.text_11": "Предметы также могут быть введены автоматически", "create.ponder.deployer.text_12": "Автономные активаторы имеют слот для фильтра", @@ -2315,25 +2319,25 @@ "create.ponder.deployer.text_6": "Использовать предметы;", "create.ponder.deployer.text_7": "Активировать блоки;", "create.ponder.deployer.text_8": "Собирать блоки;", - "create.ponder.deployer.text_9": "и Атаковать мобов", + "create.ponder.deployer.text_9": "и атаковать мобов", - "create.ponder.deployer_contraption.header": "Использованием Автономных активаторов на штуковинах", - "create.ponder.deployer_contraption.text_1": "Всегда, когда автономные активаторы движутся как часть движимой штуковины...", - "create.ponder.deployer_contraption.text_2": "Они активируются на каждом посещённом месте, используя предметы из любых инвентарей на штуковине", - "create.ponder.deployer_contraption.text_3": "Слот для Фильтра может быть использован, чтобы уточнить, какие предметы ему брать", + "create.ponder.deployer_contraption.header": "Использованием Автономного активатора на штуковинах", + "create.ponder.deployer_contraption.text_1": "Всегда, когда Автономные активаторы движутся как часть штуковины...", + "create.ponder.deployer_contraption.text_2": "...они активируются на каждом посещённом блоке, используя предметы из любых хранилищ на штуковине", + "create.ponder.deployer_contraption.text_3": "Слот для фильтра может быть использован, чтобы уточнить, какие предметы ему использовать", "create.ponder.deployer_modes.header": "Режимами Автономного активатора", - "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодействие", - "create.ponder.deployer_modes.text_2": "Используя Ключ, вы можете установить его на имитацию ЛКМ", + "create.ponder.deployer_modes.text_1": "По умолчанию, Активатор имитирует ПКМ-взаимодействие", + "create.ponder.deployer_modes.text_2": "Используя Гаечный ключ, вы можете установить его на имитацию ЛКМ", - "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономных активаторов", + "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономного активатора", "create.ponder.deployer_processing.text_1": "Держа подходящий предмет/инструмент, автономные активаторы могут обрабатывать предметы под собой", "create.ponder.deployer_processing.text_2": "Принимаемые предметы можно бросить или положить на депо под автономным активатором", "create.ponder.deployer_processing.text_3": "Когда предметы находятся на конвейере...", - "create.ponder.deployer_processing.text_4": "автономный активатор будет удерживать и обрабатывать их автоматически", + "create.ponder.deployer_processing.text_4": "...автономный активатор будет удерживать и обрабатывать их автоматически", - "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоуном", - "create.ponder.deployer_redstone.text_1": "При активации Редстоуном активатор перестанет работать", + "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоун-сигналом", + "create.ponder.deployer_redstone.text_1": "При активации редстоун-сигналом активатор перестанет работать", "create.ponder.deployer_redstone.text_2": "Перед остановкой, Активатор завершит все начатые действия", "create.ponder.deployer_redstone.text_3": "Таким образом, инвертированный импульс может быть использован для вызова ровно одного срабатывания", @@ -2341,7 +2345,7 @@ "create.ponder.depot.text_1": "Депо могут служить как «стационарный» элемент конвейера", "create.ponder.depot.text_2": "ПКМ, что бы самостоятельно положить или забрать предметы с них", "create.ponder.depot.text_3": "Так же, как Механические ремни, оно может предоставлять предметы для обработки", - "create.ponder.depot.text_4": "...а также поставлять предметы Механическим рукам", + "create.ponder.depot.text_4": "А также поставлять предметы Механическим рукам", "create.ponder.display_board.header": "Использованием Механического табло", "create.ponder.display_board.text_1": "Механическое табло — это масштабируемая альтернатива табличкам", @@ -2353,18 +2357,18 @@ "create.ponder.display_link.header": "Настройкой Передатчиков информации", "create.ponder.display_link.text_1": "Передатчик информации может использоваться для визуализации динамической информации", - "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное табло...", + "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное Табло...", "create.ponder.display_link.text_3": "...затем прикрепите его к блоку для чтения информации из него", - "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, какая информация будет отправляется", - "create.ponder.display_link.text_5": "Теперь табло будет получать информацию от передатчика", + "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, куда и какая информация будет отправляется", + "create.ponder.display_link.text_5": "Теперь Табло будет получать информацию от Передатчика", "create.ponder.display_link.text_6": "Не каждый блок может выступать в качестве источника информации", "create.ponder.display_link.text_7": "Каждый совместимый блок предоставляет уникальную информацию", - "create.ponder.display_link.text_8": "Передатчик информации может работать с несколькими различными дисплеями", + "create.ponder.display_link.text_8": "Передатчик информации может отправлять информацию некоторым другим блокам", - "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоуном", - "create.ponder.display_link_redstone.text_1": "При питании от редстоуна Передатчик информации перестаёт отправлять обновления", + "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоун-сигналом", + "create.ponder.display_link_redstone.text_1": "При питании от редстоун-сигнала Передатчик информации перестаёт отправлять обновления", "create.ponder.display_link_redstone.text_2": "После отключения питания таймер сбрасывается, и новая информация отправляется немедленно", - "create.ponder.display_link_redstone.text_3": "Сигналы редстоуна, отправляемые Источниками информации, не оказывают эффекта на Передатчик ", + "create.ponder.display_link_redstone.text_3": "Редстоун-сигналы, отправляемые Источниками информации, не оказывают эффекта на Передатчик", "create.ponder.empty_blaze_burner.header": "Поимкой всполохов в Горелку", "create.ponder.empty_blaze_burner.text_1": "ПКМ по всполоху с пустой горелкой, чтобы захватить его", @@ -2375,35 +2379,35 @@ "create.ponder.empty_blaze_burner.text_6": "Однако они не будут подходить для промышленного нагрева", "create.ponder.encased_fluid_pipe.header": "Обрамлением Жидкостных труб", - "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для украшения декорации труб.", - "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они скрываются, заключенные в обрамление трубы блокируются в текущем состоянии", - "create.ponder.encased_fluid_pipe.text_3": "Они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", + "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для обрамления Труб", + "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они будут скрыты в корпусе, обрамлённые Трубы блокируются в текущем состоянии", + "create.ponder.encased_fluid_pipe.text_3": "Также они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", - "create.ponder.fan_direction.header": "Воздушным потоком Вентилятора в корпусе", - "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания Воздушного потока", + "create.ponder.fan_direction.header": "Воздушным потоком Вентиляторов в корпусе", + "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания воздушного потока", "create.ponder.fan_direction.text_2": "Сила и направление потока зависят от подаваемого вращения", - "create.ponder.fan_processing.header": "Обработкой предметов используя Вентиляторы в корпусе", - "create.ponder.fan_processing.text_1": "Проходя через лаву, Воздушный поток становится Горячим", - "create.ponder.fan_processing.text_2": "Предметы в этой области будут переплавлены", - "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда будут сожжены", - "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для Копчения с огнём", - "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт Промывающую установку", + "create.ponder.fan_processing.header": "Обработкой предметов используя Вентилятор в корпусе", + "create.ponder.fan_processing.text_1": "Проходя через лаву, воздушный поток становится горячим", + "create.ponder.fan_processing.text_2": "Предметы в его области действия будут переплавлены", + "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда сгорят", + "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для копчения дымом от огня", + "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт промывающую установку", "create.ponder.fan_processing.text_6": "Несколько новых вариантов обработки делаются с её помощью", "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность установки", "create.ponder.fan_processing.text_8": "Обработка Вентиляторами может быть применена к предметам на конвейерах или депо", "create.ponder.fluid_pipe_flow.header": "Перемещением жидкостей при помощи Жидкостных труб", "create.ponder.fluid_pipe_flow.text_1": "Жидкостные трубы могут соединять два или более источников и потребителей жидкости", - "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно прямому отрезку трубы", + "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно на прямом отрезке трубы", "create.ponder.fluid_pipe_flow.text_3": "Трубы с окнами не будут соединяться ни с какими другими рядом идущими отрезками труб", - "create.ponder.fluid_pipe_flow.text_4": "Приводимые в действие механическими помпами, трубы могут транспортировать жидкости", + "create.ponder.fluid_pipe_flow.text_4": "Приводимые в действие Механическими помпами, трубы могут транспортировать жидкости", "create.ponder.fluid_pipe_flow.text_5": "Сначала жидкость не выкачивается", - "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают свое содержимое", - "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки труб никогда «физически» не содержат никакой жидкости", + "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают своё содержимое", + "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки Труб никогда «физически» не содержат никакой жидкости", "create.ponder.fluid_pipe_interaction.header": "Опустошением и наполнением Жидкостных контейнеров", - "create.ponder.fluid_pipe_interaction.text_1": "Концы сети труб могут взаимодействовать с различными блоками", + "create.ponder.fluid_pipe_interaction.text_1": "Концы трубопровода могут взаимодействовать с различными блоками", "create.ponder.fluid_pipe_interaction.text_2": "Любой блок с возможностью хранения жидкости может быть заполнен или опустошен", "create.ponder.fluid_pipe_interaction.text_3": "Источники прямо перед открытым концом можно откачать...", "create.ponder.fluid_pipe_interaction.text_4": "...в то время как выливание в незаполненное пространство может создать источники", @@ -2419,51 +2423,51 @@ "create.ponder.fluid_tank_storage.text_1": "Жидкостные баки можно использовать для хранения большого количества жидкости", "create.ponder.fluid_tank_storage.text_2": "Трубы могут закачивать и выкачивать жидкости с любой стороны", "create.ponder.fluid_tank_storage.text_3": "Содержащаяся жидкость может быть измерена с помощью компаратора", - "create.ponder.fluid_tank_storage.text_4": "Однако в режиме выживания жидкость нельзя добавлять или извлекать вручную", - "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать чаши, предметные осушители и дозаторы для опустошения или наполнения содерж. жидкость предметов", + "create.ponder.fluid_tank_storage.text_4": "Однако, в режиме выживания жидкость нельзя добавлять или извлекать вручную", + "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать Чаши, Осушители предметов и Дозаторы для опустошения или наполнения содержащих жидкость предметов", - "create.ponder.funnel_compat.header": "Совместимостью Воронок", + "create.ponder.funnel_compat.header": "Совместимостью Воронки", "create.ponder.funnel_compat.text_1": "Воронки должны хорошо взаимодействовать с многими компонентами:", - "create.ponder.funnel_compat.text_2": "Вертикальные пилы", - "create.ponder.funnel_compat.text_3": "Депо", - "create.ponder.funnel_compat.text_4": "Предметные осушители", + "create.ponder.funnel_compat.text_2": "Вертикальные пилы;", + "create.ponder.funnel_compat.text_3": "Депо;", + "create.ponder.funnel_compat.text_4": "и Осушители предметов", - "create.ponder.funnel_direction.header": "Направлением передачи Воронок", - "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, она забирает предметы из инвентаря", - "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она кладёт предметы в инвентарь", - "create.ponder.funnel_direction.text_3": "Используя Ключ, вы можете изменить направление Воронки", + "create.ponder.funnel_direction.header": "Направлением передачи Воронки", + "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, Воронка забирает предметы из хранилища", + "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она добавляет предметы в инвентарь", + "create.ponder.funnel_direction.text_3": "Используя Гаечный ключ, вы можете изменить направление Воронки", "create.ponder.funnel_direction.text_4": "Те же правила применяются для большинства направлений", "create.ponder.funnel_direction.text_5": "Воронки на конвейерах будут извлекать/вводить предметы в зависимости от направления их движения", "create.ponder.funnel_intro.header": "Использованием Воронок", - "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из и в инвентари", + "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из/в хранилища", - "create.ponder.funnel_redstone.header": "Управлением Воронок редстоуном", - "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не даст любой воронке работать", + "create.ponder.funnel_redstone.header": "Управлением Воронкой редстоун-сигналом", + "create.ponder.funnel_redstone.text_1": "Редстоун-сигнал не даст любой Воронке работать", - "create.ponder.funnel_transfer.header": "Передачей Воронками напрямую", + "create.ponder.funnel_transfer.header": "Передачей Воронкой напрямую", "create.ponder.funnel_transfer.text_1": "Воронки не могут перемещать предметы напрямую между закрытыми инвентарями", "create.ponder.funnel_transfer.text_2": "Желоба или Умные желоба могут лучше подходить для этих целей", "create.ponder.funnel_transfer.text_3": "То же касается и горизонтального перемещения. Механический ремень должен здесь помочь", - "create.ponder.gantry_carriage.header": "Использованием Шасси портального крана", + "create.ponder.gantry_carriage.header": "Использованием Шасси портальных кранов", "create.ponder.gantry_carriage.text_1": "Шасси портального крана могут прикрепляться и двигаться вдоль Вала портального крана", "create.ponder.gantry_carriage.text_2": "Крановые установки могут двигать присоединённые Блоки", "create.ponder.gantry_cascaded.header": "Созданием Многоступенчатого портального крана", - "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в суперклее", - "create.ponder.gantry_cascaded.text_2": "То же относится и к шасси на движущихся Валах портального крана", - "create.ponder.gantry_cascaded.text_3": "Таким образом крановая система может покрывать несколько осей движения", + "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к Шасси без нужды в Суперклее", + "create.ponder.gantry_cascaded.text_2": "То же относится и к Шасси на движущихся Валах портального крана", + "create.ponder.gantry_cascaded.text_3": "Таким образом крановая установка может покрывать несколько осей движения", "create.ponder.gantry_direction.header": "Направлением движения крана", "create.ponder.gantry_direction.text_1": "Валы портального крана могут иметь два противоположных направления", - "create.ponder.gantry_direction.text_2": "Направление движения шасси зависит от ориентации их валов", - "create.ponder.gantry_direction.text_3": "...а также от направления вращения вала", + "create.ponder.gantry_direction.text_2": "Направление движения Шасси зависит от ориентации их Валов", + "create.ponder.gantry_direction.text_3": "А также от направления вращения Вала", "create.ponder.gantry_direction.text_4": "Те же правила относятся к передаваемому вращению", - "create.ponder.gantry_redstone.header": "Подачей энергии на кран", - "create.ponder.gantry_redstone.text_1": "Активированные редстоуном валы крана перестают двигать шасси", - "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу шасси", + "create.ponder.gantry_redstone.header": "Краном и редстоун-сигнале", + "create.ponder.gantry_redstone.text_1": "Активированные редстоун-сигналом валы крана перестают двигать Шасси", + "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу Шасси", "create.ponder.gantry_shaft.header": "Использованием Валов портального крана", "create.ponder.gantry_shaft.text_1": "Валы портального крана составляют основу крановой установки. По ним будут двигаться присоединённые Шасси", @@ -2475,50 +2479,50 @@ "create.ponder.gearbox.text_3": "Валы по углам поворачиваются в зеркальных направлениях", "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированны", - "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивного механизма", - "create.ponder.gearshift.text_1": "Реверсивные механизмы передают вращение по прямой", - "create.ponder.gearshift.text_2": "При активации редстоуном, они реверсируют передачу", + "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивных коробок передач", + "create.ponder.gearshift.text_1": "Реверсивные коробки передач передают вращение по прямой", + "create.ponder.gearshift.text_2": "При активации редстоун-сигналом, они реверсируют передачу", - "create.ponder.hand_crank.header": "Генерацией силы вращения при помощи Рукояток", + "create.ponder.hand_crank.header": "Генерацией силы вращения Рукоятками", "create.ponder.hand_crank.text_1": "Рукоятки могут быть использованы игроками для создания силы вращения вручную", - "create.ponder.hand_crank.text_2": "Держите ПКМ, чтобы повернуть их против часовой стрелки", + "create.ponder.hand_crank.text_2": "Зажмите ПКМ, чтобы повернуть их против часовой стрелки", "create.ponder.hand_crank.text_3": "Их скорость вращения относительно высока", - "create.ponder.hand_crank.text_4": "Держите ПКМ крадучись, чтобы повернуть её по часовой стрелке", + "create.ponder.hand_crank.text_4": "Зажмите ПКМ крадучись, чтобы повернуть её по часовой стрелке", - "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкива со шлангом", + "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкивов со шлангом", "create.ponder.hose_pulley.text_1": "Шкивы со шлангом можно использовать для заполнения или осушения больших объёмов жидкости", "create.ponder.hose_pulley.text_2": "С помощью кинетической энергии можно регулировать длину шланга", "create.ponder.hose_pulley.text_3": "Шкив сматывается, если обратить вращение", - "create.ponder.hose_pulley.text_4": "С противоположной стороны можно подключать трубы", - "create.ponder.hose_pulley.text_5": "Присоединённые сети труб могут либо подавать жидкость в шланг...", + "create.ponder.hose_pulley.text_4": "С противоположной стороны можно подключать Трубы", + "create.ponder.hose_pulley.text_5": "Присоединённый водопровод может либо подавать жидкость в шланг...", "create.ponder.hose_pulley.text_6": "...либо вытягивать её, осушая водоем", - "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения шкивом полностью зависит от пропускной способности жидкостной сети", + "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения Шкивом полностью зависит от пропускной способности трубопровода", "create.ponder.hose_pulley_infinite.header": "Пассивным заполнением и осушением больших объёмов жидкости", "create.ponder.hose_pulley_infinite.text_1": "При развертывании Шкива со шлангом в достаточно большой океан...", - "create.ponder.hose_pulley_infinite.text_2": "Он будет предоставлять/поглощать жидкости без влияния на источник", - "create.ponder.hose_pulley_infinite.text_3": "Сети труб могут неограниченно передавать жидкости из/в такие шкивы", + "create.ponder.hose_pulley_infinite.text_2": "...он будет выкачивать/закачивать жидкость без влияния на источник", + "create.ponder.hose_pulley_infinite.text_3": "Трубопроводы могут неограниченно передавать жидкости из/в такие Шкивы", "create.ponder.hose_pulley_level.header": "Уровнем заполнения и осушения Шкива со шлангом", - "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве шланга — он не может работать", + "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве — он не может работать", "create.ponder.hose_pulley_level.text_2": "Осушение происходит сверху вниз", "create.ponder.hose_pulley_level.text_3": "Уровень поверхности окажется чуть ниже того места, где заканчивается шланг", - "create.ponder.hose_pulley_level.text_4": "Наполнение происходит снизу вверх", + "create.ponder.hose_pulley_level.text_4": "Заполнение происходит снизу вверх", "create.ponder.hose_pulley_level.text_5": "Заполняемый бассейн не будет наполняться выше уровня конца шланга", - "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Предметных осушителей", - "create.ponder.item_drain.text_1": "Предметные осушители могут извлекать жидкости из предметов", - "create.ponder.item_drain.text_2": "Щелкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", + "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Осушителей предметов", + "create.ponder.item_drain.text_1": "Осушители предметов могут извлекать жидкости из предметов", + "create.ponder.item_drain.text_2": "Щёлкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", "create.ponder.item_drain.text_3": "Когда предметы подаются со стороны...", "create.ponder.item_drain.text_4": "...они переворачиваются, выливая содержащуюся в них жидкость", - "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища осушителей", + "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища Осушителей", - "create.ponder.item_vault_sizes.header": "Размерами Хранилища предметов", + "create.ponder.item_vault_sizes.header": "Свойствами Хранилищ предметов", "create.ponder.item_vault_sizes.text_1": "Хранилища предметов можно объединять для увеличения общей вместимости", "create.ponder.item_vault_sizes.text_2": "Их базовая площадь может быть шириной до 3 блоков...", "create.ponder.item_vault_sizes.text_3": "...и увеличиваться в длину до 3 диаметров", - "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах", + "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах предметов", "create.ponder.item_vault_storage.text_1": "Хранилища предметов можно использовать для хранения большого количества предметов", "create.ponder.item_vault_storage.text_2": "Однако содержимое не может быть добавлено или взято вручную", "create.ponder.item_vault_storage.text_3": "Любые компоненты для передачи предметов могут как добавлять...", @@ -2533,7 +2537,7 @@ "create.ponder.linear_chassis_attachment.text_2": "Кликните ещё раз, чтобы сделать противоположную сторону липкой", "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, пустой рукой, чтобы убрать слизь", "create.ponder.linear_chassis_attachment.text_4": "Липкие грани Линейных шасси будут прикреплять ряд блоков перед ним", - "create.ponder.linear_chassis_attachment.text_5": "Используйте Ключ, чтобы настроить радиус прикрепления для этого шасси", + "create.ponder.linear_chassis_attachment.text_5": "Используйте Гаечный ключ, чтобы настроить радиус прикрепления для этого шасси", "create.ponder.linear_chassis_attachment.text_6": "Прокрутка при удерживании Ctrl настраивает радиус всех присоединённых шасси", "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Суперклея", "create.ponder.linear_chassis_attachment.text_8": "При помощи этих механик, структуры любой формы могут двигаться как Штуковина", @@ -2565,58 +2569,58 @@ "create.ponder.mechanical_arm_modes.text_1": "Входы", "create.ponder.mechanical_arm_modes.text_2": "Выходы", "create.ponder.mechanical_arm_modes.text_3": "Когда Рука выбирает между несколькими доступными выходами...", - "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из своей настройки", - "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Ключом позволит вам настроить это", + "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из выбранного режима распределения", + "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Гаечным ключом в руке позволит вам настроить это", "create.ponder.mechanical_arm_modes.text_6": "Режим «По кругу» переключается между всеми доступными выходами по очереди", "create.ponder.mechanical_arm_modes.text_7": "Если выход не может принять больше предметов, он будет пропущен", "create.ponder.mechanical_arm_modes.text_8": "«Строго по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", "create.ponder.mechanical_arm_modes.text_9": "«Предпочитать первичную цель» приоритизирует выходы, выбранные ранее при настройке этой Руки", - "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоуном", - "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоуном, Механические руки перестают работать", + "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоун-сигналом", + "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоун-сигналом, Механические руки перестают работать", "create.ponder.mechanical_arm_redstone.text_2": "Перед остановкой, они завершат все начатые действия", "create.ponder.mechanical_arm_redstone.text_3": "Таким образом, инвертированный импульс может использоваться для вызова ровно одного срабатывания", - "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механического подшипника", + "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механических подшипников", "create.ponder.mechanical_bearing.text_1": "Механические подшипники прикрепляют блоки перед ними", - "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во Вращающуюся штуковину", + "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во вращающуюся штуковину", "create.ponder.mechanical_crafter.header": "Настройкой Механических крафтеров", "create.ponder.mechanical_crafter.text_1": "Массив из Механических крафтеров можно использовать для автоматизации создания любого рецепта", - "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Ключа", + "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Гаечного ключа", "create.ponder.mechanical_crafter.text_3": "Для правильной установки все пути должны сходиться в один выход с любой стороны", "create.ponder.mechanical_crafter.text_4": "Продукты будут помещены в инвентарь у выхода", "create.ponder.mechanical_crafter.text_5": "Механическим крафтерам нужна сила вращения для работы", "create.ponder.mechanical_crafter.text_6": "ПКМ спереди, чтобы вставить предметы вручную", "create.ponder.mechanical_crafter.text_7": "Когда каждый слот на пути содержит предмет, процесс создания начнётся", - "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать Редстоун импульсом", + "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать редстоун-импульсом", "create.ponder.mechanical_crafter_connect.header": "Объединением инвентарей Механических крафтеров", - "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в крафтеры автоматически", - "create.ponder.mechanical_crafter_connect.text_2": "При помощи ключа сзади крафтеров, их инвентари можно объединить", - "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые крафтеры теперь будут доступны из одного места ввода", + "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в Крафтеры автоматически", + "create.ponder.mechanical_crafter_connect.text_2": "При помощи Гаечного ключа сзади крафтеров, их инвентари можно объединить", + "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые Крафтеры теперь будут доступны из одного места ввода", "create.ponder.mechanical_crafter_covers.header": "Закрытием слотов Механических крафтеров", - "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных крафтеров, чтобы закрыть пробелы на пути", - "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, крафтеры могут играть роль пустых слотов в схеме", - "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные ключом сзади также могут быть доступны через закрытые крафтеры", + "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных Крафтеров, чтобы закрыть пробелы на пути", + "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, Крафтеры могут играть роль пустых слотов в схеме", + "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные Гаечным ключом сзади также могут быть доступны через закрытые Крафтеры", - "create.ponder.mechanical_drill.header": "Ломанием блоков Механической Дрелью", + "create.ponder.mechanical_drill.header": "Разрушением блоков Механическими дрелями", "create.ponder.mechanical_drill.text_1": "При подаче вращения, Механическая дрель будет ломать блоки перед ней", - "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости", + "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости вращения", "create.ponder.mechanical_drill_contraption.header": "Использованием Механических дрелей на штуковинах", - "create.ponder.mechanical_drill_contraption.text_1": "Когда дрели движутся как часть движимой штуковины...", + "create.ponder.mechanical_drill_contraption.text_1": "Когда Дрели движутся как часть движимой штуковины...", "create.ponder.mechanical_drill_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", "create.ponder.mechanical_harvester.header": "Использованием Механических комбайнов на штуковинах", - "create.ponder.mechanical_harvester.text_1": "Когда комбайны движутся как часть движимой штуковины...", - "create.ponder.mechanical_harvester.text_2": "Они будут убирать зрелый урожай на своём пути и высаживать его снова", + "create.ponder.mechanical_harvester.text_1": "Когда Комбайны движутся как часть движимой штуковины...", + "create.ponder.mechanical_harvester.text_2": "...они будут убирать зрелый урожай на своём пути и высаживать его снова", "create.ponder.mechanical_mixer.header": "Обработкой предметов Механическим миксером", "create.ponder.mechanical_mixer.text_1": "При помощи Миксера и Чаши можно автоматизировать некоторые рецепты крафта", - "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают любые бесформенные рецепты крафта и некоторые другие", - "create.ponder.mechanical_mixer.text_3": "Некоторые из них требуют тепло от Горелки всполоха", + "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают бесформенную сборку и автоматическую варку зелий", + "create.ponder.mechanical_mixer.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_mixer.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", "create.ponder.mechanical_piston.header": "Перемещением структур при помощи Механических поршней", @@ -2629,68 +2633,68 @@ "create.ponder.mechanical_piston_modes.text_2": "Можно настроить его так, чтобы структура никогда не становилась блоками или только на начальной позиции", "create.ponder.mechanical_plough.header": "Использованием Механических плугов на штуковинах", - "create.ponder.mechanical_plough.text_1": "Когда плуги движутся как часть движимой штуковины...", + "create.ponder.mechanical_plough.text_1": "Когда Плуги движутся как часть движимой штуковины...", "create.ponder.mechanical_plough.text_2": "...они будут ломать блоки без твёрдого хитбокса", "create.ponder.mechanical_plough.text_3": "К тому же, плуги могут создавать пашню", - "create.ponder.mechanical_plough.text_4": "...они также могут толкать сущностей не причиняя им вреда", + "create.ponder.mechanical_plough.text_4": "Также они могут толкать сущностей не причиняя им вреда", - "create.ponder.mechanical_press.header": "Обработкой предметов Механическим прессом", + "create.ponder.mechanical_press.header": "Обработкой предметов Механическими прессами", "create.ponder.mechanical_press.text_1": "Механический пресс может обрабатывать предметы под собой", - "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Прессом", + "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Пресс", "create.ponder.mechanical_press.text_3": "Когда предметы подаются на конвейере...", - "create.ponder.mechanical_press.text_4": "Пресс будет задерживать и наполнять их автоматически", + "create.ponder.mechanical_press.text_4": "...Пресс будет задерживать и прессовать их автоматически", - "create.ponder.mechanical_press_compacting.header": "Спрессовыванием предметов Механическим прессом", - "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше упакует их", - "create.ponder.mechanical_press_compacting.text_2": "Спрессовывание включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", + "create.ponder.mechanical_press_compacting.header": "Спрессовыванием и сжатием предметов Механическим прессом", + "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше скомпонует их", + "create.ponder.mechanical_press_compacting.text_2": "Сжатие предметов и спрессовывание включают в себя любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", "create.ponder.mechanical_press_compacting.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_press_compacting.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", "create.ponder.mechanical_pump_flow.header": "Транспортировкой жидкостей при помощи Механических помп", - "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые сети из труб", + "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые трубопровод", "create.ponder.mechanical_pump_flow.text_2": "Когда работает, стрелка указывает направление потока", - "create.ponder.mechanical_pump_flow.text_3": "Часть сети сзади теперь качает жидкости...", - "create.ponder.mechanical_pump_flow.text_4": "...в то время как часть сети спереди передаёт их наружу", + "create.ponder.mechanical_pump_flow.text_3": "Часть трубопровода сзади теперь качает жидкости...", + "create.ponder.mechanical_pump_flow.text_4": "...в то время как часть трубопровода спереди передаёт их наружу", "create.ponder.mechanical_pump_flow.text_5": "Смена направления вращения изменяет направление потока", - "create.ponder.mechanical_pump_flow.text_6": "Используйте гаечный ключ, чтобы изменить направление помпы вручную", + "create.ponder.mechanical_pump_flow.text_6": "Используйте Гаечный ключ, чтобы изменить направление Помпы вручную", - "create.ponder.mechanical_pump_speed.header": "Производительностью Механических помп", - "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на трубы в радиусе 16 блоков", + "create.ponder.mechanical_pump_speed.header": "Производительностью Механической помпы", + "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на Трубы в радиусе 16 блоков", "create.ponder.mechanical_pump_speed.text_2": "Ускорение подаваемого вращения изменяет скорость распространения потоков...", "create.ponder.mechanical_pump_speed.text_3": "...также, как и скорость передачи жидкостей", - "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в общих сетях труб", + "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в одних трубопроводах", "create.ponder.mechanical_pump_speed.text_5": "Изменение их направления может помочь сонаправить направление их потоков", - "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механической пилой", + "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механическими пилами", "create.ponder.mechanical_saw_breaker.text_1": "При подаче вращения, Механическая пила будет пилить деревья прямо перед ней", - "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать последний блок дерева, соединённый с землёй", + "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать самый нижний блок дерева, соединённый с землёй", "create.ponder.mechanical_saw_contraption.header": "Использованием Механических пил на штуковинах", "create.ponder.mechanical_saw_contraption.text_1": "Когда пилы движутся как часть движимой штуковины...", "create.ponder.mechanical_saw_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механической пиле", + "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механических пилах", "create.ponder.mechanical_saw_processing.text_1": "Направленные вверх Механические пилы могут обрабатывать множество предметов", "create.ponder.mechanical_saw_processing.text_2": "Обработанные предметы всегда движутся против подаваемого на пилу вращения", - "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с Механическими ремнями (конвейером)", + "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с конвейером", "create.ponder.mechanical_saw_processing.text_4": "Когда из ингредиента можно получить несколько результатов, фильтр может уточнить его", "create.ponder.mechanical_saw_processing.text_5": "Без фильтра пила будет выбирать все возможные результаты по очереди", "create.ponder.millstone.header": "Обработкой предметов Жерновами", "create.ponder.millstone.text_1": "Жернова обрабатывают предметы перемалывая их", - "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны", - "create.ponder.millstone.text_3": "Бросьте или внесите предметы сверху", + "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны или валом снизу", + "create.ponder.millstone.text_3": "Бросьте или положите предметы сверху", "create.ponder.millstone.text_4": "После некоторого времени результат можно забрать при помощи ПКМ", - "create.ponder.millstone.text_5": "Продукты также можно вывести автоматически", + "create.ponder.millstone.text_5": "Продукты помола также можно вывести автоматически", "create.ponder.nixie_tube.header": "Использованием Газоразрядных индикаторов", - "create.ponder.nixie_tube.text_1": "При подаче редстоун сигнала, Газоразрядные индикаторы отобразят его силу.", - "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст.", - "create.ponder.nixie_tube.text_3": "Щелкните ПКМ с красителем, чтобы изменить цвет их дисплея", + "create.ponder.nixie_tube.text_1": "При подаче редстоун-сигнала, Газоразрядные индикаторы отобразят его силу", + "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст", + "create.ponder.nixie_tube.text_3": "Щёлкните ПКМ с красителем, чтобы изменить цвет их индикаторов", "create.ponder.piston_pole.header": "Удлинителями Механического поршня", "create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться", - "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.", + "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к задней части Механического поршня, определяет диапазон выдвижения", "create.ponder.portable_fluid_interface.header": "Портативным жидкостным интерфейсом на штуковинах", "create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны никаким трубам", @@ -2712,31 +2716,31 @@ "create.ponder.portable_storage_interface.text_7": "...или вывести их из штуковины", "create.ponder.portable_storage_interface.text_8": "Если на какое-то время прекратится обмен предметами — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса редстоуном", - "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса", + "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса хранения редстоун-сигналом", + "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун-сигнал предотвратит включение Портативного интерфейса", - "create.ponder.powered_latch.header": "Управлением сигналами при помощи Питаемого рычага", + "create.ponder.powered_latch.header": "Управлением редстоун-сигналами при помощи Питаемого рычага", "create.ponder.powered_latch.text_1": "Питаемый рычаг — управляемый редстоуном рычаг", "create.ponder.powered_latch.text_2": "Сигнал сзади включает его", - "create.ponder.powered_latch.text_3": "Сигналы сбоку обратно выключают его", + "create.ponder.powered_latch.text_3": "Сигналы сбоку, обратно, выключают его", "create.ponder.powered_latch.text_4": "Питаемые рычаги также можно переключать вручную", - "create.ponder.powered_toggle_latch.header": "Управлением сигналами при помощи Питаемого рычага-переключателя", + "create.ponder.powered_toggle_latch.header": "Управлением редстоун-сигналами при помощи Питаемого рычага-переключателя", "create.ponder.powered_toggle_latch.text_1": "Питаемый рычаг-переключатель — управляемый редстоуном рычаг", - "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние", + "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние...", "create.ponder.powered_toggle_latch.text_3": "...включают и снова выключают", "create.ponder.powered_toggle_latch.text_4": "Питаемые рычаги-переключатели также можно переключать вручную", "create.ponder.pulse_extender.header": "Использованием Редстоуновых удлинителей импульса", - "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстоуна, проходящего через него", + "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность редстоун-сигнала, проходящего через него", "create.ponder.pulse_extender.text_2": "Он активируется после небольшой задержки...", "create.ponder.pulse_extender.text_3": "...и выключается через настраиваемое время", - "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя", + "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя импульса", "create.ponder.pulse_extender.text_5": "Можно настроить задержку вплоть до 30 минут", "create.ponder.pulse_repeater.header": "Использованием Редстоуновых повторителей импульса", - "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстоуна до одного импульса", - "create.ponder.pulse_repeater.text_2": "С помощь колёсика мыши можно настроить время Импульсного повторителя", + "create.ponder.pulse_repeater.text_1": "Повторители импульса укоротят любой поступающий редстоун-сигнал до одного импульса", + "create.ponder.pulse_repeater.text_2": "С помощь прокрутки можно настроить время Повторителя импульса", "create.ponder.pulse_repeater.text_3": "Можно настроить задержку вплоть до 30 минут", "create.ponder.radial_chassis.header": "Присоединением блоков при помощи Радиальных шасси", @@ -2744,21 +2748,21 @@ "create.ponder.radial_chassis.text_2": "Когда один блок перемещается штуковиной, остальные двигаются с ним", "create.ponder.radial_chassis.text_3": "Боковые грани Радиального шасси можно сделать липкими", "create.ponder.radial_chassis.text_4": "Кликните ещё раз, чтобы сделать все остальные грани липкими", - "create.ponder.radial_chassis.text_5": "Нажмите Shift+ПКМ пустой рукой, чтобы убрать слизь", + "create.ponder.radial_chassis.text_5": "Нажмите ПКМ крадучись пустой рукой, чтобы убрать слизь", "create.ponder.radial_chassis.text_6": "Когда блок находится рядом с липкой гранью...", - "create.ponder.radial_chassis.text_7": "он присоединит все достижимые блоки в пределах радиуса на этом слое", - "create.ponder.radial_chassis.text_8": "При помощи ключа можно указать точный радиус для этого шасси", + "create.ponder.radial_chassis.text_7": "...он присоединит все достижимые блоки в пределах радиуса на этом слое", + "create.ponder.radial_chassis.text_8": "При помощи Гаечного ключа можно указать точный радиус для этого шасси", "create.ponder.radial_chassis.text_9": "Блоки не достижимые ни одной липкой гранью не прикрепятся", "create.ponder.redstone_contact.header": "Использованием Редстоуновых контактов", - "create.ponder.redstone_contact.text_1": "Редстоуновые контакты направленные друг на друга будут излучать редстоун сигнал", + "create.ponder.redstone_contact.text_1": "Редстоуновые контакты, направленные друг на друга, будут излучать редстоун-сигнал", "create.ponder.redstone_contact.text_2": "Также работает, когда один из них — часть двигающейся штуковины", - "create.ponder.redstone_link.header": "Использованием Редстоунового беспроводного передатчика сигнала", - "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун сигнал без проводов", - "create.ponder.redstone_link.text_2": "Нажмите Shift+ПКМ, чтобы переключить режим приёмника", - "create.ponder.redstone_link.text_3": "ПКМ ключом сделает то же самое", - "create.ponder.redstone_link.text_4": "Приёмники улавливают редстоун сигнал передатчиков в радиусе 128 блоков", + "create.ponder.redstone_link.header": "Использованием Редстоуновых беспроводных передатчиков сигнала", + "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун-сигнал без проводов", + "create.ponder.redstone_link.text_2": "Нажмите ПКМ крадучись, чтобы переключить режим приёмника", + "create.ponder.redstone_link.text_3": "ПКМ Гаечным ключом сделает то же самое", + "create.ponder.redstone_link.text_4": "Приёмники улавливают редстоун-сигнал передатчиков в радиусе 128 блоков", "create.ponder.redstone_link.text_5": "Положите предметы в два слота, чтобы указать частоту", "create.ponder.redstone_link.text_6": "Передатчики только одной частоты могут сообщаться", @@ -2766,7 +2770,7 @@ "create.ponder.rope_pulley.text_1": "Лебёдки могут двигать блоки вертикально при подаче вращения", "create.ponder.rope_pulley.text_2": "Направление и скорость движения зависят от исходного вращения", - "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковины", + "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковин", "create.ponder.rope_pulley_attachment.text_1": "Когда лебёдки перемещаются штуковиной...", "create.ponder.rope_pulley_attachment.text_2": "...их присоединённая структура движется с ними", "create.ponder.rope_pulley_attachment.text_3": "Учитывайте, что лебёдки можно выдвигать только пока они простаивают", @@ -2776,14 +2780,14 @@ "create.ponder.rope_pulley_modes.text_2": "Можно настроить её так, чтобы структура никогда не становилась блоками или только на начальной позиции", "create.ponder.rose_quartz_lamp.header": "Особенностями Фонаря из розового кварца", - "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по сигналу редстоуна", + "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по редстоун-сигналу", "create.ponder.rose_quartz_lamp.text_2": "После этого он сам станет источником сигнала", "create.ponder.rose_quartz_lamp.text_3": "Когда несколько Фонарей расположены в группе...", "create.ponder.rose_quartz_lamp.text_4": "...активация одного из Фонарей, сфокусирует сигнал на нём, деактивируя все остальные", "create.ponder.rose_quartz_lamp.text_5": "Компараторы выводят сигнал исходя из дистанции до ближайшего включённого Фонаря", "create.ponder.rose_quartz_lamp.text_6": "Фонари также можно переключать вручную с помощью Гаечного ключа", - "create.ponder.rotation_speed_controller.header": "Использованием Регулятора скорости вращения", + "create.ponder.rotation_speed_controller.header": "Использованием Регуляторов скорости вращения", "create.ponder.rotation_speed_controller.text_1": "Регуляторы скорости вращения передают вращение от своих осей на Большую шестерню выше них", "create.ponder.rotation_speed_controller.text_2": "Можно настроить передаваемую скорость при помощи прокрутки по соответствующему месту сбоку", @@ -2797,43 +2801,43 @@ "create.ponder.sail_frame.text_1": "Рамы парусов — удобные блоки для создания мельниц", "create.ponder.sail_frame.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", - "create.ponder.sequenced_gearshift.header": "Использованием Последовательной коробки передач", + "create.ponder.sequenced_gearshift.header": "Использованием Последовательных коробок передач", "create.ponder.sequenced_gearshift.text_1": "Последовательная коробка передач передает вращение по списку заданных инструкций", "create.ponder.sequenced_gearshift.text_2": "ПКМ, чтобы отрыть интерфейс для настройки", - "create.ponder.sequenced_gearshift.text_3": "При получении Редстоун сигнала, он начнёт выполнять заданные инструкции по порядку", - "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего Редстоун сигнала и начнёт сначала", - "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можно использовать для считывания текущего прогресса выполнения инструкций", + "create.ponder.sequenced_gearshift.text_3": "При получении редстоун-сигнал, он начнёт выполнять заданные инструкции по порядку", + "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего сигнала и начнёт сначала", + "create.ponder.sequenced_gearshift.text_5": "Можно использовать компаратор для считывания текущего прогресса выполнения инструкций", "create.ponder.shaft.header": "Передачей силы вращения при помощи Валов", "create.ponder.shaft.text_1": "Валы передают вращение по прямой", "create.ponder.shaft_casing.header": "Обрамлением Валов", - "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для декорации Валов", + "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для обрамления Валов", "create.ponder.smart_chute.header": "Фильтрацией предметов при помощи Умных желобов", "create.ponder.smart_chute.text_1": "Умные желоба — вертикальные желоба с дополнительным контролем", "create.ponder.smart_chute.text_2": "Предметы в слоте фильтра уточняют, что они могут забирать и передавать", "create.ponder.smart_chute.text_3": "Используйте Колесо Мыши для уточнения размера забираемого стака", - "create.ponder.smart_chute.text_4": "Редстоун сигнал выключает их", + "create.ponder.smart_chute.text_4": "Редстоун-сигнал выключает их", "create.ponder.smart_pipe.header": "Управлением жидкостным потоком с помощью Умных труб", "create.ponder.smart_pipe.text_1": "Умные трубы могут помочь управлять потоками по типам жидкостей", - "create.ponder.smart_pipe.text_2": "Размещенные непосредственно у источника, они могут указывать тип извлекаемой жидкости", - "create.ponder.smart_pipe.text_3": "Просто щелкните ПКМ на слоте фильтра с любым предметом, содержащим нужную жидкость", - "create.ponder.smart_pipe.text_4": "И при размещении глубже по сети труб умные трубы будут пропускать только подходящие жидкости.", + "create.ponder.smart_pipe.text_2": "Размещённые непосредственно у источника, они могут указывать тип извлекаемой жидкости", + "create.ponder.smart_pipe.text_3": "Просто щёлкните ПКМ по слоту фильтра с любым предметом, содержащим нужную жидкость", + "create.ponder.smart_pipe.text_4": "И при размещении дальше по трубопроводу Умные трубы будут пропускать только подходящие жидкости", "create.ponder.speedometer.header": "Мониторингом кинетической информации при помощи Спидометра", "create.ponder.speedometer.text_1": "Спидометры отображают текущую скорость присоединённых компонентов", "create.ponder.speedometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", - "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый Редстоун сигнал относительно измерений спидометра", + "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый редстоун-сигнал относительно измерений Спидометра", "create.ponder.spout_filling.header": "Наполнением предметов при помощи Дозатора", "create.ponder.spout_filling.text_1": "Дозатор может заполнять подходящие предметы, расположенные под ним", - "create.ponder.spout_filling.text_2": "К содержимому дозатора невозможно получить доступ вручную", + "create.ponder.spout_filling.text_2": "К содержимому Дозатора невозможно получить доступ вручную", "create.ponder.spout_filling.text_3": "Вместо этого можно использовать трубы для подачи в него жидкостей", "create.ponder.spout_filling.text_4": "Наполняемые предметы могут быть размещены на депо под дозатором", "create.ponder.spout_filling.text_5": "Когда предметы подаются конвейером...", - "create.ponder.spout_filling.text_6": "Дозатор будет удерживать и обрабатывать их автоматически", + "create.ponder.spout_filling.text_6": "...Дозатор будет удерживать и обрабатывать их автоматически", "create.ponder.stabilized_bearings.header": "Стабилизацией Штуковин", "create.ponder.stabilized_bearings.text_1": "Когда Механические подшипники являются частью двигающейся структуры...", @@ -2841,14 +2845,14 @@ "create.ponder.stabilized_bearings.text_3": "Опять же, подшипники присоединяют блоки перед ними", "create.ponder.stabilized_bearings.text_4": "И в результате целая под-структура будет держаться ровно", - "create.ponder.steam_engine.header": "Настройкой Паровых двигателей", + "create.ponder.steam_engine.header": "Генерацией силы вращения Паровыми двигателями", "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на Жидкостном баке", "create.ponder.steam_engine.text_10": "4 уровень", "create.ponder.steam_engine.text_11": "4 двигателя", "create.ponder.steam_engine.text_12": "8 уровень", "create.ponder.steam_engine.text_13": "8 двигателей", "create.ponder.steam_engine.text_2": "Нажмите по Двигателю Валом в руке, чтобы создать выход кинетической энергии", - "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и размером котла...", + "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и объёмом котла...", "create.ponder.steam_engine.text_4": "...они будут генерировать вращательную силу", "create.ponder.steam_engine.text_5": "Для минимальной установки требуется 4 Жидкостных бака", "create.ponder.steam_engine.text_6": "С помощью Горелки всполоха можно увеличить выходную мощность", @@ -2864,16 +2868,16 @@ "create.ponder.steam_whistle.text_5": "Переключайтесь между тремя разными октавами с помощью Гаечного ключа", "create.ponder.steam_whistle.text_6": "Инженерные очки помогут узнать текущую высоту звука", - "create.ponder.sticker.header": "Прикреплением блоков при помощи Липучки", - "create.ponder.sticker.text_1": "Липучки идеально подходят для Редстоун-управляемого присоединения блоков", - "create.ponder.sticker.text_2": "При получении сигнала они переключают своё состояние", - "create.ponder.sticker.text_3": "Если он теперь движется в штуковине, то блок будет двигаться с ним", - "create.ponder.sticker.text_4": "При повторном переключении блок больше не будет прикреплён", + "create.ponder.sticker.header": "Прикреплением блоков при помощи Блоков-липучек", + "create.ponder.sticker.text_1": "Блоки-липучки идеально подходят для редстоун-управляемого присоединения блоков", + "create.ponder.sticker.text_2": "При получении редстоун-сигнала они переключают своё состояние", + "create.ponder.sticker.text_3": "Если он движется в штуковине, то блок будет двигаться с ним", + "create.ponder.sticker.text_4": "При повторном сигнале блок больше не будет прикреплён", "create.ponder.stressometer.header": "Мониторингом кинетической информации при помощи Стрессометра", "create.ponder.stressometer.text_1": "Стрессометр отображает текущую допустимую нагрузку присоединённой кинетической сети", "create.ponder.stressometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", - "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун сигнал относительно измерений стрессометра", + "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун-сигнал относительно измерений стрессометра", "create.ponder.super_glue.header": "Присоединением блоков при помощи Суперклея", "create.ponder.super_glue.text_1": "Суперклей можно использовать между двумя любыми блоками", @@ -2886,7 +2890,7 @@ "create.ponder.track_chunks.header": "Пересечением поездом незагруженных чанков", "create.ponder.track_chunks.text_1": "Железнодорожные пути остаются функциональными вне загруженных чанков", "create.ponder.track_chunks.text_2": "Поезда будут путешествовать по неактивным участкам мира без каких либо проблем", - "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или красных сигналах Светофора", + "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или запрещающих сигналах Светофора", "create.ponder.track_chunks.text_4": "Однако дрели и другие машины на борту работать не будут", "create.ponder.track_chunks.text_5": "Оказавшись рядом с игроком, поезд снова появится", @@ -2908,15 +2912,15 @@ "create.ponder.track_portal.header": "Железнодорожными путями и портале Незера", "create.ponder.track_portal.text_1": "Пути, размещённые напротив портала Незера...", "create.ponder.track_portal.text_2": "...попытаются создать Пути на другой стороне", - "create.ponder.track_portal.text_3": "Поезда на этом пути теперь могут путешествовать по измерениям", + "create.ponder.track_portal.text_3": "Теперь поезда на данном направлении могут путешествовать по измерениям", - "create.ponder.train_assembly.header": "Сборкой поездов", + "create.ponder.train_assembly.header": "Сборкой поездов на Железнодорожных станциях", "create.ponder.train_assembly.text_1": "Выберите участок Железнодорожных путей, затем разместите рядом Станцию", "create.ponder.train_assembly.text_10": "Каждый поезд требует Контроллер поезда на борту", "create.ponder.train_assembly.text_11": "Дополнительный Контроллер позволяет отправляться со Станций в обоих направлениях", "create.ponder.train_assembly.text_12": "Откройте интерфейс Станции и подтвердите процесс сборки", "create.ponder.train_assembly.text_13": "Поезда можно разобрать обратно на блоки только на Станциях", - "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит на неё маркер этого места", + "create.ponder.train_assembly.text_14": "Использование на Станции карты — добавит на неё станционный маркер", "create.ponder.train_assembly.text_15": "Собранные поезда можно перемещать на ближайшие пути с помощью Гаечного ключа", "create.ponder.train_assembly.text_2": "Станции — это путевые точки вашей железнодорожной сети", "create.ponder.train_assembly.text_3": "Чтобы создать новый поезд, откройте интерфейс Станции и переключитесь в режим сборки", @@ -2927,99 +2931,99 @@ "create.ponder.train_assembly.text_8": "Собранные поезда будут двигаться быстрее, если они смогут найти топливо в прикреплённых сундуках или бочках", "create.ponder.train_assembly.text_9": "Топливо, находящееся в Хранилищах, не будет потребляться поездом", - "create.ponder.train_controls.header": "Управлением поездами", - "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой Железнодорожной штуковине", + "create.ponder.train_controls.header": "Управлением поездами с помощью Контроллера поезда", + "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой железнодорожной штуковине", "create.ponder.train_controls.text_2": "После сборки щёлкните ПКМ по блоку, чтобы начать движение", "create.ponder.train_controls.text_3": "Ускоряйте и управляйте поездом, используя клавиши движения", "create.ponder.train_controls.text_4": "При желании максимальную тягу можно настроить с помощью колёсика мыши", "create.ponder.train_controls.text_5": "Удерживайте Пробел, чтобы прибыть на Станцию рядом", "create.ponder.train_controls.text_6": "Поезда можно разобрать обратно на блоки только на Станциях", "create.ponder.train_controls.text_7": "Прикреплённые Свистки можно активировать клавишей бега", - "create.ponder.train_controls.text_8": "Нажмите Shift или кликните снова, чтобы перестать управлять поездом", + "create.ponder.train_controls.text_8": "Нажмите левый Shift или ПКМ по Контроллеру, чтобы перестать управлять поездом", "create.ponder.train_schedule.header": "Использованием Расписаний поездов", "create.ponder.train_schedule.text_1": "Расписания позволяют другим машинистам управлять поездами", - "create.ponder.train_schedule.text_2": "Щелкните ПКМ с предметом в руке, чтобы открыть его интерфейс", + "create.ponder.train_schedule.text_2": "Щёлкните ПКМ с предметом в руке, чтобы открыть его интерфейс", "create.ponder.train_schedule.text_3": "После составления расписание может быть передано машинисту поезда", "create.ponder.train_schedule.text_4": "Любой моб или Горелка всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", "create.ponder.train_schedule.text_5": "С помощью поводка можно легче усадить потенциального машиниста на его место", - "create.ponder.train_schedule.text_6": "Расписания можно забирать у машинистов в любой момент времени", + "create.ponder.train_schedule.text_6": "Расписания можно отзывать от машинистов в любой момент времени", "create.ponder.train_signal_placement.header": "Размещением Железнодорожных светофоров", "create.ponder.train_signal_placement.text_1": "Выберите Железнодорожный путь, затем разместите Светофор поблизости", "create.ponder.train_signal_placement.text_2": "Светофоры регулируют поток поездов, которые управляются не игроками", - "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать сигналы в противоположном направлении", - "create.ponder.train_signal_placement.text_4": "...если не добавлен второй Светофор, направленный в противоположную сторону", - "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигнальные огни более заметными", + "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать Светофоры в противоположном направлении...", + "create.ponder.train_signal_placement.text_4": "...если не был добавлен второй Светофор, направленный в противоположную сторону", + "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать их сигнальные огни более заметными", - "create.ponder.train_signal_redstone.header": "Железнодорожными светофорами и редстоуне", - "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоуна", - "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает сигнал редстоуна, получаемый компаратором", + "create.ponder.train_signal_redstone.header": "Железнодорожным светофором и редстоун-сигнале", + "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоун-сигнала", + "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает редстоун-сигнал, получаемый компаратором", "create.ponder.train_signal_signaling.header": "Предотвращением аварий с помощью Железнодорожных светофоров", "create.ponder.train_signal_signaling.text_1": "Светофоры делят пути на сегменты", "create.ponder.train_signal_signaling.text_2": "Если сегмент занят — проезд другим поездам запрещён", "create.ponder.train_signal_signaling.text_3": "Таким образом, каждый сегмент будет содержать только один поезд одновременно", "create.ponder.train_signal_signaling.text_4": "Второй режим Светофора доступен через переключение Гаечным ключом", - "create.ponder.train_signal_signaling.text_5": "Сегменты жёлтого сигнала обычно переходят в стандартные сигналы", + "create.ponder.train_signal_signaling.text_5": "Сегменты латунного Светофора обычно переходят в режим стандартного Светофора автоматически", "create.ponder.train_signal_signaling.text_6": "Этот особый сигнал может останавливать поезда при втором условии", "create.ponder.train_signal_signaling.text_7": "Он остановит поезда, которые при подъезде...", "create.ponder.train_signal_signaling.text_8": "...не смогут сразу покинуть сегмент", "create.ponder.train_signal_signaling.text_9": "Это помогает удерживать поезда, стоящие в очереди, вне загруженного сегмента", - "create.ponder.valve_handle.header": "Генерацией силы вращения при помощи Вентилей", - "create.ponder.valve_handle.text_1": "Игроки могут использовать вентили для применения силы вращения вручную", - "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против Часовой стрелки", - "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и точная", - "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по Часовой стрелке", + "create.ponder.valve_handle.header": "Генерацией силы вращения Вентилями", + "create.ponder.valve_handle.text_1": "Игроки могут использовать Вентили для применения силы вращения вручную", + "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против часовой стрелки", + "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и поступательная", + "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по часовой стрелке", "create.ponder.valve_handle.text_5": "Вентили можно окрашивать в эстетических целях", - "create.ponder.valve_pipe.header": "Управлением потоком жидкости с помощью Жидкостных клапанов", + "create.ponder.valve_pipe.header": "Управлением потоком с помощью Жидкостных клапанов", "create.ponder.valve_pipe.text_1": "Жидкостные клапаны помогают контролировать распространение жидкостей по трубопроводу", "create.ponder.valve_pipe.text_2": "Их входной вал контролирует, разрешена ли подача жидкости в данный момент", "create.ponder.valve_pipe.text_3": "При вращении в нужном направлении — клапан откроется", "create.ponder.valve_pipe.text_4": "Его можно снова закрыть, изменив направление вращения", - "create.ponder.water_wheel.header": "Генерацией силы вращения при помощи Водяных колёс", + "create.ponder.water_wheel.header": "Генерацией силы вращения Водяными колёс", "create.ponder.water_wheel.text_1": "Водяные колёса берут силу соседних потоков воды", "create.ponder.water_wheel.text_2": "Чем больше сторон запитано, тем быстрее будет вращаться Водяное колесо", "create.ponder.water_wheel.text_3": "Лопасти колеса должны быть направлены против течения", "create.ponder.water_wheel.text_4": "Направленное в противоположную сторону, не будет так же эффективно", "create.ponder.weighted_ejector.header": "Использованием Взвешенных катапульт", - "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа катапульту, чтобы выбрать место цели", + "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа Катапульту, чтобы выбрать место цели", "create.ponder.weighted_ejector.text_10": "Теперь она ограниченна этим размера стака и будет активироваться только тогда, когда удерживаемый стак достигнет этого количества", "create.ponder.weighted_ejector.text_11": "Другие сущности, встав на катапульту, будут всегда активировать её", - "create.ponder.weighted_ejector.text_2": "Установленная катапульта будет запускать объекты до отмеченного места", + "create.ponder.weighted_ejector.text_2": "Установленная Катапульта будет запускать объекты до отмеченного места", "create.ponder.weighted_ejector.text_3": "Подходящая цель может быть на любой дистанции и высоте в радиусе", "create.ponder.weighted_ejector.text_4": "Однако они не могут быть сбоку", "create.ponder.weighted_ejector.text_5": "Если не было выбрано подходящей цели, она будет целиться в блок перед ней", "create.ponder.weighted_ejector.text_6": "Предоставьте силу вращения, чтобы зарядить её", - "create.ponder.weighted_ejector.text_7": "Попадание предметов на катапульту вызывает её срабатывание", - "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место.", - "create.ponder.weighted_ejector.text_9": "При помощи Ключа можно настроить необходимый размер стака", + "create.ponder.weighted_ejector.text_7": "Попадание предметов на Катапульту вызывает её срабатывание", + "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место", + "create.ponder.weighted_ejector.text_9": "При помощи Гаечного ключа можно настроить необходимый размер стака", - "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенными катапультами редстоуном", - "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун сигнала катапульты не будут активироваться", + "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенной катапультой редстоун-сигналом", + "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун-сигнала катапульты не будут активироваться", "create.ponder.weighted_ejector_redstone.text_2": "Кроме того, наблюдатели могут определить, когда катапульты срабатывают", - "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенных катапульт", + "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенной катапульты", "create.ponder.weighted_ejector_tunnel.text_1": "Объединённые с Латунными туннелями, катапульты могут делить стаки предметов по определённому количеству", - "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайшее», чтобы приоритизировать выход сбоку", + "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайший», чтобы приоритизировать выход сбоку", "create.ponder.weighted_ejector_tunnel.text_3": "Размер стака, установленный на катапульте, теперь определяет отделяемое количество", "create.ponder.weighted_ejector_tunnel.text_4": "Пока новый стак нужного количества лежит на боковом выходе...", "create.ponder.weighted_ejector_tunnel.text_5": "...остаток продолжит свой путь", - "create.ponder.windmill_source.header": "Генерацией силы вращения при помощи Подшипников ветряной мельницы", + "create.ponder.windmill_source.header": "Генерацией силы вращения Подшипниками ветряной мельницы", "create.ponder.windmill_source.text_1": "Подшипники ветряной мельницы прикрепляются к блокам перед ними", "create.ponder.windmill_source.text_2": "Если прикреплено достаточно парусоподобных блоков, он может стать мельницей", - "create.ponder.windmill_source.text_3": "Активированный при помощи ПКМ, Подшипник ветр. мельницы начнёт вырабатывать силу вращения", + "create.ponder.windmill_source.text_3": "Активированный, при помощи ПКМ, Подшипник ветряной мельницы начнёт вырабатывать силу вращения", "create.ponder.windmill_source.text_4": "Количество парусов определяет скорость вращения", - "create.ponder.windmill_source.text_5": "Используйте ключ, чтобы настроить направление вращения", + "create.ponder.windmill_source.text_5": "Используйте Гаечный ключ, чтобы настроить направление вращения", "create.ponder.windmill_source.text_6": "ПКМ по подшипнику в любое время, чтобы остановить его и изменить структуру", - "create.ponder.windmill_source.text_7": "Щелкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", + "create.ponder.windmill_source.text_7": "Щёлкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", - "create.ponder.windmill_structure.header": "Установкой Ветряных мельниц", + "create.ponder.windmill_structure.header": "Установкой Ветряной мельницы", "create.ponder.windmill_structure.text_1": "Любая структура может считаться мельницей, пока она содержит как минимум 8 парусоподобных блоков", "_": "Thank you for translating Create!" diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json index 459b5f282..f4be7ff19 100644 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ b/src/main/resources/assets/create/lang/zh_cn.json @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "不可被烟熏", "create.item_attributes.blastable": "可被高炉冶炼", "create.item_attributes.blastable.inverted": "不可被高炉冶炼", + "create.item_attributes.compostable": "可被堆肥", + "create.item_attributes.compostable.inverted": "不可被堆肥", "create.item_attributes.shulker_level": "潜影盒是%1$s的", "create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的", "create.item_attributes.shulker_level.full": "满", @@ -1483,6 +1485,7 @@ "create.schedule.condition.threshold.equal": "恰好", "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s%3$s", "create.schedule.condition.threshold.matching_content": "匹配内容", + "create.schedule.condition.threshold.anything": "任意物品", "create.schedule.condition.threshold.item_measure": "物品度量", "create.schedule.condition.threshold.items": "个", "create.schedule.condition.threshold.stacks": "组", @@ -1490,6 +1493,7 @@ "create.schedule.condition.threshold.status": "货物:%1$s/%2$s %3$s", "create.schedule.condition.threshold.place_item": "参考物品", "create.schedule.condition.threshold.place_item_2": "可以使用过滤器", + "create.schedule.condition.threshold.place_item_3": "留空以匹配任意物品", "create.schedule.condition.fluid_threshold": "流体货物条件", "create.schedule.condition.item_threshold": "物品货物条件", "create.schedule.condition.redstone_link": "无线红石", diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/ametrine_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/ametrine_ore.json new file mode 100644 index 000000000..e3d193925 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/ametrine_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/ametrine" + } + ], + "results": [ + { + "item": "byg:ametrine_gems", + "count": 2 + }, + { + "item": "byg:ametrine_gems", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:cobbled_ether_stone", + "chance": 0.125 + } + ], + "processingTime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/anthracite_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/anthracite_ore.json new file mode 100644 index 000000000..2e20a7719 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/anthracite_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/anthracite" + } + ], + "results": [ + { + "item": "byg:anthracite", + "count": 2 + }, + { + "item": "byg:anthracite", + "chance": 0.5 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:brimstone", + "chance": 0.125 + } + ], + "processingTime": 150 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_gold_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_gold_ore.json new file mode 100644 index 000000000..b0715e556 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_gold_ore.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:blue_nether_gold_ore" + } + ], + "results": [ + { + "item": "minecraft:gold_nugget", + "count": 18 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:blue_netherrack", + "chance": 0.125 + } + ], + "processingTime": 350 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_quartz_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_quartz_ore.json new file mode 100644 index 000000000..8be7ff00f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/blue_nether_quartz_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:blue_nether_quartz_ore" + } + ], + "results": [ + { + "item": "minecraft:quartz", + "count": 2 + }, + { + "item": "minecraft:quartz", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:blue_netherrack", + "chance": 0.125 + } + ], + "processingTime": 350 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_gold_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_gold_ore.json new file mode 100644 index 000000000..e7a463b4c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_gold_ore.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:brimstone_nether_gold_ore" + } + ], + "results": [ + { + "item": "minecraft:gold_nugget", + "count": 18 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:brimstone", + "chance": 0.125 + } + ], + "processingTime": 350 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_quartz_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_quartz_ore.json new file mode 100644 index 000000000..e61446213 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/brimstone_nether_quartz_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:brimstone_nether_quartz_ore" + } + ], + "results": [ + { + "item": "minecraft:quartz", + "count": 2 + }, + { + "item": "minecraft:quartz", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:brimstone", + "chance": 0.125 + } + ], + "processingTime": 350 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/cryptic_redstone_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/cryptic_redstone_ore.json new file mode 100644 index 000000000..c0729eae8 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/cryptic_redstone_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:cryptic_redstone_ore" + } + ], + "results": [ + { + "item": "minecraft:redstone", + "count": 6 + }, + { + "item": "minecraft:redstone", + "chance": 0.5 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:cryptic_stone", + "chance": 0.125 + } + ], + "processingTime": 250 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/emeraldite_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/emeraldite_ore.json new file mode 100644 index 000000000..52ec123f3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/emeraldite_ore.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/emeraldite" + } + ], + "results": [ + { + "item": "byg:emeraldite_shards", + "count": 2 + }, + { + "item": "byg:emeraldite_shards", + "chance": 0.25 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:scoria_cobblestone", + "chance": 0.125 + } + ], + "processingTime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/lignite_ore.json b/src/main/resources/data/create/recipes/compat/byg/crushing/lignite_ore.json new file mode 100644 index 000000000..eaa60c70a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/lignite_ore.json @@ -0,0 +1,34 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/lignite" + } + ], + "results": [ + { + "item": "byg:lignite", + "count": 2 + }, + { + "item": "byg:lignite", + "count": 2, + "chance": 0.5 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "byg:cobbled_ether_stone", + "chance": 0.125 + } + ], + "processingTime": 300 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/pervaded_netherrack.json b/src/main/resources/data/create/recipes/compat/byg/crushing/pervaded_netherrack.json new file mode 100644 index 000000000..b691ba3fc --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/pervaded_netherrack.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:pervaded_netherrack" + } + ], + "results": [ + { + "item": "minecraft:glowstone_dust", + "count": 2 + }, + { + "item": "minecraft:glowstone_dust", + "chance": 0.5 + }, + { + "item": "create:experience_nugget", + "chance": 0.75 + }, + { + "item": "minecraft:netherrack", + "chance": 0.125 + } + ], + "processingTime": 150 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/crushing/red_rock.json b/src/main/resources/data/create/recipes/compat/byg/crushing/red_rock.json new file mode 100644 index 000000000..fd60af196 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/crushing/red_rock.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "byg:red_rock" + } + ], + "results": [ + { + "item": "minecraft:red_sand", + "count": 1 + } + ], + "processingTime": 150 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/filling/lush_grass_block.json b/src/main/resources/data/create/recipes/compat/byg/filling/lush_grass_block.json new file mode 100644 index 000000000..d7d76a5a0 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/filling/lush_grass_block.json @@ -0,0 +1,24 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:filling", + "ingredients": [ + { + "item": "byg:lush_dirt" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 500 + } + ], + "results": [ + { + "item": "byg:lush_grass_block" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/allium_flower_bush.json b/src/main/resources/data/create/recipes/compat/byg/milling/allium_flower_bush.json new file mode 100644 index 000000000..7e1b13591 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/allium_flower_bush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:allium_flower_bush" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/alpine_bellflower.json b/src/main/resources/data/create/recipes/compat/byg/milling/alpine_bellflower.json new file mode 100644 index 000000000..d79446013 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/alpine_bellflower.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:alpine_bellflower" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:blue_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/amaranth.json b/src/main/resources/data/create/recipes/compat/byg/milling/amaranth.json new file mode 100644 index 000000000..41ee3a5a1 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/amaranth.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:amaranth" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:red_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/angelica.json b/src/main/resources/data/create/recipes/compat/byg/milling/angelica.json new file mode 100644 index 000000000..d1b5b85cf --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/angelica.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:angelica" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/begonia.json b/src/main/resources/data/create/recipes/compat/byg/milling/begonia.json new file mode 100644 index 000000000..b78736a4c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/begonia.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:begonia" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/bistort.json b/src/main/resources/data/create/recipes/compat/byg/milling/bistort.json new file mode 100644 index 000000000..b551a5796 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/bistort.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:bistort" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/black_rose.json b/src/main/resources/data/create/recipes/compat/byg/milling/black_rose.json new file mode 100644 index 000000000..8befbc2be --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/black_rose.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:black_rose" + } + ], + "results": [ + { + "item": "minecraft:black_dye", + "count": 2 + }, + { + "item": "minecraft:black_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/blue_sage.json b/src/main/resources/data/create/recipes/compat/byg/milling/blue_sage.json new file mode 100644 index 000000000..2572c98aa --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/blue_sage.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:blue_sage" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 2 + }, + { + "item": "minecraft:cyan_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/california_poppy.json b/src/main/resources/data/create/recipes/compat/byg/milling/california_poppy.json new file mode 100644 index 000000000..28f1afab2 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/california_poppy.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:california_poppy" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/crocus.json b/src/main/resources/data/create/recipes/compat/byg/milling/crocus.json new file mode 100644 index 000000000..6787f77c5 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/crocus.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:crocus" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_amaranth.json b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_amaranth.json new file mode 100644 index 000000000..43b6e6df3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_amaranth.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:cyan_amaranth" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:light_blue_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_rose.json b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_rose.json new file mode 100644 index 000000000..274212fa7 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_rose.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:cyan_rose" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/cyan_tulip.json b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_tulip.json new file mode 100644 index 000000000..25ce67168 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/cyan_tulip.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:cyan_tulip" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/daffodil.json b/src/main/resources/data/create/recipes/compat/byg/milling/daffodil.json new file mode 100644 index 000000000..4a6e2a751 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/daffodil.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:daffodil" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:magenta_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/delphinium.json b/src/main/resources/data/create/recipes/compat/byg/milling/delphinium.json new file mode 100644 index 000000000..88ef340b6 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/delphinium.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:delphinium" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 3 + }, + { + "item": "minecraft:blue_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/fairy_slipper.json b/src/main/resources/data/create/recipes/compat/byg/milling/fairy_slipper.json new file mode 100644 index 000000000..8d1b62956 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/fairy_slipper.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:fairy_slipper" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/firecracker_flower_bush.json b/src/main/resources/data/create/recipes/compat/byg/milling/firecracker_flower_bush.json new file mode 100644 index 000000000..3df31f5ec --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/firecracker_flower_bush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:firecracker_flower_bush" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:red_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/foxglove.json b/src/main/resources/data/create/recipes/compat/byg/milling/foxglove.json new file mode 100644 index 000000000..ee00d0258 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/foxglove.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:foxglove" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "chance": 0.25 + }, + { + "item": "minecraft:light_gray_dye", + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/green_tulip.json b/src/main/resources/data/create/recipes/compat/byg/milling/green_tulip.json new file mode 100644 index 000000000..9a3cce6e9 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/green_tulip.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:green_tulip" + } + ], + "results": [ + { + "item": "minecraft:lime_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/guzmania.json b/src/main/resources/data/create/recipes/compat/byg/milling/guzmania.json new file mode 100644 index 000000000..066fc3f0b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/guzmania.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:guzmania" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "count": 1, + "chance": 0.25 + }, + { + "item": "minecraft:green_dye", + "count": 1, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/hydrangea_bush.json b/src/main/resources/data/create/recipes/compat/byg/milling/hydrangea_bush.json new file mode 100644 index 000000000..7dfd9e135 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/hydrangea_bush.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:hydrangea_bush" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:blue_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:white_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/incan_lily.json b/src/main/resources/data/create/recipes/compat/byg/milling/incan_lily.json new file mode 100644 index 000000000..c1fda1066 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/incan_lily.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:incan_lily" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:red_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/iris.json b/src/main/resources/data/create/recipes/compat/byg/milling/iris.json new file mode 100644 index 000000000..baf1db16e --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/iris.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:iris" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/japanese_orchid.json b/src/main/resources/data/create/recipes/compat/byg/milling/japanese_orchid.json new file mode 100644 index 000000000..08b9516e8 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/japanese_orchid.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:japanese_orchid" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/kovan_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/kovan_flower.json new file mode 100644 index 000000000..d39001b79 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/kovan_flower.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:kovan_flower" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/lazarus_bellflower.json b/src/main/resources/data/create/recipes/compat/byg/milling/lazarus_bellflower.json new file mode 100644 index 000000000..03ddff8b6 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/lazarus_bellflower.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:lazarus_bellflower" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/lollipop_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/lollipop_flower.json new file mode 100644 index 000000000..7709ddba6 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/lollipop_flower.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:lollipop_flower" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.25 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/magenta_amaranth.json b/src/main/resources/data/create/recipes/compat/byg/milling/magenta_amaranth.json new file mode 100644 index 000000000..7bd6881b2 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/magenta_amaranth.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:magenta_amaranth" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/magenta_tulip.json b/src/main/resources/data/create/recipes/compat/byg/milling/magenta_tulip.json new file mode 100644 index 000000000..896d92759 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/magenta_tulip.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:magenta_tulip" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/orange_amaranth.json b/src/main/resources/data/create/recipes/compat/byg/milling/orange_amaranth.json new file mode 100644 index 000000000..651d96b3f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/orange_amaranth.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:orange_amaranth" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:orange_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/orange_daisy.json b/src/main/resources/data/create/recipes/compat/byg/milling/orange_daisy.json new file mode 100644 index 000000000..e9899d178 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/orange_daisy.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:orange_daisy" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "chance": 0.2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/osiria_rose.json b/src/main/resources/data/create/recipes/compat/byg/milling/osiria_rose.json new file mode 100644 index 000000000..f48b02772 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/osiria_rose.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:osiria_rose" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/peach_leather_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/peach_leather_flower.json new file mode 100644 index 000000000..1dab952c8 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/peach_leather_flower.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:peach_leather_flower" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium.json b/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium.json new file mode 100644 index 000000000..d84264494 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium.json @@ -0,0 +1,30 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:pink_allium" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:purple_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium_flower_bush.json b/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium_flower_bush.json new file mode 100644 index 000000000..b64c9e751 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/pink_allium_flower_bush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:pink_allium_flower_bush" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_anemone.json b/src/main/resources/data/create/recipes/compat/byg/milling/pink_anemone.json new file mode 100644 index 000000000..662ec8559 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/pink_anemone.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:pink_anemone" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "count": 2, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/pink_daffodil.json b/src/main/resources/data/create/recipes/compat/byg/milling/pink_daffodil.json new file mode 100644 index 000000000..1260be7bf --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/pink_daffodil.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:pink_daffodil" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:white_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/protea_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/protea_flower.json new file mode 100644 index 000000000..92ef8901c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/protea_flower.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:protea_flower" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + }, + { + "item": "minecraft:purple_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_amaranth.json b/src/main/resources/data/create/recipes/compat/byg/milling/purple_amaranth.json new file mode 100644 index 000000000..c687f173a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/purple_amaranth.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:purple_amaranth" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 3 + }, + { + "item": "minecraft:green_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:purple_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_sage.json b/src/main/resources/data/create/recipes/compat/byg/milling/purple_sage.json new file mode 100644 index 000000000..277836734 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/purple_sage.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:purple_sage" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/purple_tulip.json b/src/main/resources/data/create/recipes/compat/byg/milling/purple_tulip.json new file mode 100644 index 000000000..b6bae22b5 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/purple_tulip.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:purple_tulip" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/richea.json b/src/main/resources/data/create/recipes/compat/byg/milling/richea.json new file mode 100644 index 000000000..80f30e43f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/richea.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:richea" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:brown_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/rose.json b/src/main/resources/data/create/recipes/compat/byg/milling/rose.json new file mode 100644 index 000000000..199b7c819 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/rose.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:rose" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/silver_vase_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/silver_vase_flower.json new file mode 100644 index 000000000..a35be9df4 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/silver_vase_flower.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:silver_vase_flower" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:white_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/snowdrops.json b/src/main/resources/data/create/recipes/compat/byg/milling/snowdrops.json new file mode 100644 index 000000000..7d951f554 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/snowdrops.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:snowdrops" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + }, + { + "item": "minecraft:white_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/tall_allium.json b/src/main/resources/data/create/recipes/compat/byg/milling/tall_allium.json new file mode 100644 index 000000000..bd3572e89 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/tall_allium.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:tall_allium" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 3 + }, + { + "item": "minecraft:purple_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/tall_pink_allium.json b/src/main/resources/data/create/recipes/compat/byg/milling/tall_pink_allium.json new file mode 100644 index 000000000..d74d86fd6 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/tall_pink_allium.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:tall_pink_allium" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 3 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.05 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/torch_ginger.json b/src/main/resources/data/create/recipes/compat/byg/milling/torch_ginger.json new file mode 100644 index 000000000..a8d711643 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/torch_ginger.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:torch_ginger" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/violet_leather_flower.json b/src/main/resources/data/create/recipes/compat/byg/milling/violet_leather_flower.json new file mode 100644 index 000000000..2e4603d9e --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/violet_leather_flower.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:violet_leather_flower" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_anemone.json b/src/main/resources/data/create/recipes/compat/byg/milling/white_anemone.json new file mode 100644 index 000000000..117cf07b5 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/white_anemone.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:white_anemone" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:light_gray_dye", + "count": 2, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_puffball_cap.json b/src/main/resources/data/create/recipes/compat/byg/milling/white_puffball_cap.json new file mode 100644 index 000000000..24a0873df --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/white_puffball_cap.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:white_puffball_cap" + } + ], + "results": [ + { + "item": "byg:white_puffball_spores", + "chance": 0.25 + } + ], + "processingTime": 150 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/white_sage.json b/src/main/resources/data/create/recipes/compat/byg/milling/white_sage.json new file mode 100644 index 000000000..5f2588938 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/white_sage.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:white_sage" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:gray_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_cyclamen.json b/src/main/resources/data/create/recipes/compat/byg/milling/winter_cyclamen.json new file mode 100644 index 000000000..9c5f840ba --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/winter_cyclamen.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:winter_cyclamen" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_rose.json b/src/main/resources/data/create/recipes/compat/byg/milling/winter_rose.json new file mode 100644 index 000000000..9716223a9 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/winter_rose.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:winter_rose" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/winter_scilla.json b/src/main/resources/data/create/recipes/compat/byg/milling/winter_scilla.json new file mode 100644 index 000000000..b06c7cc56 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/winter_scilla.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:winter_scilla" + } + ], + "results": [ + { + "item": "minecraft:light_blue_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/yellow_daffodil.json b/src/main/resources/data/create/recipes/compat/byg/milling/yellow_daffodil.json new file mode 100644 index 000000000..fa33746ec --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/yellow_daffodil.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:yellow_daffodil" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.1 + }, + { + "item": "minecraft:pink_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/milling/yellow_tulip.json b/src/main/resources/data/create/recipes/compat/byg/milling/yellow_tulip.json new file mode 100644 index 000000000..d1a947c79 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/milling/yellow_tulip.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "byg:yellow_tulip" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json b/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json new file mode 100644 index 000000000..b4d6896c2 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/pressing/lush_grass_path.json @@ -0,0 +1,24 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:pressing", + "ingredients": [ + [ + { + "item": "byg:lush_grass_block" + }, + { + "item": "byg:lush_dirt" + } + ] + ], + "results": [ + { + "item": "byg:lush_grass_path" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/byg/splashing/cryptic_magma_block.json b/src/main/resources/data/create/recipes/compat/byg/splashing/cryptic_magma_block.json new file mode 100644 index 000000000..7c8ced440 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/byg/splashing/cryptic_magma_block.json @@ -0,0 +1,19 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "byg:cryptic_magma_block" + } + ], + "results": [ + { + "item": "minecraft:obsidian" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/farmersdelight/haunting/rotten_tomato.json b/src/main/resources/data/create/recipes/compat/farmersdelight/haunting/rotten_tomato.json new file mode 100644 index 000000000..06b30d74a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/farmersdelight/haunting/rotten_tomato.json @@ -0,0 +1,19 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "farmersdelight" + } + ], + "type": "create:haunting", + "ingredients": [ + { + "item": "farmersdelight:tomato" + } + ], + "results": [ + { + "item": "farmersdelight:rotten_tomato" + } + ] +} \ No newline at end of file