diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 5fff6584f..d01f7f693 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -406,20 +406,21 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -97e9ee471ea650f6b7f3d3f39f00201cd5ad752d assets/create/lang/en_ud.json -514ab1f6fa3d24dc575a5dcaaaa96a8009da7414 assets/create/lang/en_us.json -7e45e9a69fb4d21d199174673f2ea6fe35ee6859 assets/create/lang/unfinished/de_de.json -2af0dd8cd0776b8ed5110990405f3cd515abe8e8 assets/create/lang/unfinished/es_es.json -90fc3a9475b957eebf10380a960416b072987541 assets/create/lang/unfinished/es_mx.json -997cc00c6a9afbb142e25c5a1840908363afad41 assets/create/lang/unfinished/fr_fr.json -6a9c89ff7a7c2df5f78a6a739a204744a4a5607a assets/create/lang/unfinished/it_it.json -e21697e70444e3c8fb367b7a4fe867726157390d assets/create/lang/unfinished/ja_jp.json -9f2d7b6fc84f6257837b4c517489f6ef31a4e1a5 assets/create/lang/unfinished/ko_kr.json -5bcfe026f3bb3f0aa0ea415e54dedad4195bb70a assets/create/lang/unfinished/nl_nl.json -bc60cb08266e8d13523d086cdb85aa12da78a47b assets/create/lang/unfinished/pt_br.json -288e3e76a1aa090a676415aeb9f5383b3386e40d assets/create/lang/unfinished/ru_ru.json -0b6852ca1cea71d24cfdee7004ab37fa7810a0fe assets/create/lang/unfinished/zh_cn.json -619d82eba592f4ae88ddbc2c9dfae02627876300 assets/create/lang/unfinished/zh_tw.json +0e10e87986a76f18efeb1255f2c025d1aad8f8fa assets/create/lang/en_ud.json +949bac58ef9534024eac6d9082f5d241ce5b91f3 assets/create/lang/en_us.json +26ab60b925659e6daac2e449267d202c68cafe94 assets/create/lang/unfinished/de_de.json +78086e1c23ce96db3a9ec3d304d7418f39ed96fa assets/create/lang/unfinished/es_es.json +62fcca040385405c7655ea6e4b524b2a5e652e4c assets/create/lang/unfinished/es_mx.json +0f527cc6472caec6ec090985c5000e6f7f93208f assets/create/lang/unfinished/fr_fr.json +812f7e66a1d5a06a7b81a41216ee2151e678db69 assets/create/lang/unfinished/it_it.json +8122ad97eac98b1f549a08e623066be1ffd3a29e assets/create/lang/unfinished/ja_jp.json +2c3a1bd28a6a08bec850cc36735204c59045b188 assets/create/lang/unfinished/ko_kr.json +27559156601b57cc2e9fae07a92c7f79a7f4e473 assets/create/lang/unfinished/nl_nl.json +f401f044ec0785b9399d29d2a82f0f998a2a4db7 assets/create/lang/unfinished/pl_pl.json +fa22d8055979012a45a6648009ef0094be4560d8 assets/create/lang/unfinished/pt_br.json +d1b6b069a4547c107c58af4f8837f3cc843e1613 assets/create/lang/unfinished/ru_ru.json +b1650c7805cfe03c6b3b9d43f96964b695f55415 assets/create/lang/unfinished/zh_cn.json +8052350b58969035d456f882fa5624ee16a0024c 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 @@ -1305,7 +1306,6 @@ b50e3471476783be80f28bb4e3543f5a426b9eb6 assets/create/models/item/dark_scoria_b e67fe11e9036c81f0f54d368b41a971822a84a32 assets/create/models/item/dark_scoria_cobblestone_stairs.json 6e6867197215635b7febac7ffca77b763c021cc4 assets/create/models/item/dark_scoria_cobblestone_wall.json f5b2995929ac9dca9857d4618660ffa7778d5618 assets/create/models/item/dark_scoria_pillar.json -f06f56ffb1cd7c9a2b81c65f7796726692e5cc59 assets/create/models/item/deforester.json 2104c1276259ab67b94f3d4fe97e14b6bc6941ac assets/create/models/item/deployer.json 84d87f715efab45dc7bcb2e3c0870ed56fa20ee9 assets/create/models/item/depot.json a97ca9b6fc3e10a9c9409b27458a852222045e4e assets/create/models/item/diorite_bricks.json @@ -1408,7 +1408,6 @@ e7daa31c1fc445d542bad476dfe1d6a8811f2070 assets/create/models/item/gray_seat.jso 1c9c9157a06108bf58967bfc4fb069c35d20e90a assets/create/models/item/green_seat.json ecb9f32f62d3fa43fb226ab85adc2eb229fdfb77 assets/create/models/item/green_valve_handle.json 398b1a7c76c7bdb6a23b1248fdce98f6d835467f assets/create/models/item/hand_crank.json -cfab82a2cf7495d21778c1de9730a26afbdd523d assets/create/models/item/handheld_blockzapper.json dee43bf1a9c211a752fac2c07aeba123f7f0c914 assets/create/models/item/handheld_worldshaper.json f0d5af58e23e2705b3ef675c30bdf85ed9567c57 assets/create/models/item/honey_bucket.json 068729724f5f7b276b9bc378e533898a92e8debe assets/create/models/item/honeyed_apple.json @@ -1648,8 +1647,8 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear 866fbb0ce2878a73e0440d1caf6534c8bd7c384f assets/create/models/item/zinc_ingot.json a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json -71739e613693c476e481dfcf38628a4f52f0f570 assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +7b73f40a65af0c2288c886928c609ec783c0fc40 assets/create/sounds.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json @@ -1674,7 +1673,6 @@ d1015e059a2f2008a364b6d045a011a6d671f20d data/create/advancements/copper_casing. 8e2a12a26218a46665c46f350ef9c3418a901988 data/create/advancements/crafter.json d1fbc14303c7327e9fc02e505e7e434591b7f785 data/create/advancements/crushing_wheel.json e9e1789de5cd5577a801a09d489a13f2c98779dc data/create/advancements/cuckoo.json -0761f3e12d587fec7a2ddf326b43969d262771e3 data/create/advancements/deforester.json 2a96fad5b44b62f233c9af5b4a637faf32ce24af data/create/advancements/deployer.json eb8e7c13163923d2f88c999c6eb5afa4b7d2426e data/create/advancements/dual_extendo_grip.json 04eaf829696d735244c0e4798dd3bdeb26e13a32 data/create/advancements/electron_tube.json @@ -1773,8 +1771,6 @@ c368cadffa9177fefb9e92ff4453b40bc8dd670d data/create/advancements/recipes/create 4bb60ef5e186f12a9d52e61319db8c78300c64ab data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json dd487f98c411f1ff22cb7fc208b8cc24b27deb2f data/create/advancements/recipes/create.base/crafting/appliances/dough.json 51cdcf168087f47e4458eed7543d227da1ee5ca0 data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json -eba09a9ca1c5c249517da9b3a883479fd6480ac6 data/create/advancements/recipes/create.base/crafting/curiosities/deforester.json -0479fa3c10130c799269c40df6b18deb3a3d8331 data/create/advancements/recipes/create.base/crafting/curiosities/handheld_blockzapper.json d531f87f425d199aee4777a588c1cd6cab6f5173 data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json 2eef3201017af03f6a2f0f015645e3ff5e25d9c1 data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json 80155fa8e28e7de87adad3dc2cd79564496d7ef7 data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json @@ -2365,13 +2361,11 @@ b69d174d7a5e9eab8ca013b66bc9d02244d7f9a3 data/create/advancements/spout.json 15f73da913c54cd2f945e4d7402fb8d587cbaa9f data/create/advancements/spout_potion.json 0efdaf483d84791044f085f79197b6bab3e15872 data/create/advancements/stressometer.json 1aceaa6e47709aa03f3d4f606fa5dcaacc899835 data/create/advancements/tunnel.json -42461143b64112fdf6f123b9fcd44b5457df3915 data/create/advancements/upgraded_zapper.json 4fef92dce84fa1a075db31fb33081f5fb8ec7e9e data/create/advancements/upward_chute.json fe37896bb804d2be9b8abf3744c5b9b7bc1c086e data/create/advancements/wand_of_symmetry.json 2c278dc6e6e4c12c0cfce22b5192844586a2d5c1 data/create/advancements/water_wheel.json d6b94fd499cb4fb0ae587b0e9e7088832f67fe01 data/create/advancements/windmill.json 4513d0c4dd40c948028a3fc8e6f3b4d0356c0a90 data/create/advancements/wrench.json -33c1224f4f6a7bb0a3439eb0f8b8af9341b62574 data/create/advancements/zapper.json 054392b614e410c6d1b37c546b4bfd36f50aec4a data/create/loot_tables/blocks/acacia_window.json 64b95066bf96a3f0de95919d526243ba4f5a3ade data/create/loot_tables/blocks/acacia_window_pane.json 113f225f01d45c420ee038e8aad3d6c5e836dea2 data/create/loot_tables/blocks/adjustable_chain_gearshift.json @@ -2846,8 +2840,6 @@ f7879d404d7a848d818278b4e788f285a9087e63 data/create/recipes/compacting/blaze_ca 19526da3a59fc136654ff1bc93c0251581f397a9 data/create/recipes/crafting/appliances/dough.json 7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json b159ba84428eee6ef6e23df1766f2a18f2c8a63e data/create/recipes/crafting/appliances/tree_fertilizer.json -8c00fe124ea516511f00a89bcf9e63a6d1fa47e4 data/create/recipes/crafting/curiosities/deforester.json -87a4a5ec53a0f8e125dfdbd77906a418a9b83d9c data/create/recipes/crafting/curiosities/handheld_blockzapper.json 660e92da2b1b6698b1c0df74bd74a56a25fb3eca data/create/recipes/crafting/curiosities/minecart_coupling.json fcbc04d0a7eaf820a74bc7e4736a4a581e0a9dff data/create/recipes/crafting/curiosities/wand_of_symmetry.json cc56d21a25286a9024e506dde9fa161230eaf46d data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 33c7d7480..5d42d7042 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -449,7 +449,6 @@ "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", - "item.create.deforester": "\u0279\u01DD\u0287s\u01DD\u0279o\u025F\u01DD\u15E1", "item.create.dough": "\u0265bno\u15E1", "item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E", "item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E", @@ -459,8 +458,7 @@ "item.create.furnace_minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W \u01DD\u0254\u0250u\u0279n\u2132", "item.create.goggles": "s\u01DD\u05DFbbo\u2141 s,\u0279\u01DD\u01DDu\u0131bu\u018E", "item.create.golden_sheet": "\u0287\u01DD\u01DD\u0265S u\u01DDp\u05DFo\u2141", - "item.create.handheld_blockzapper": "\u0279\u01DDdd\u0250z\u029E\u0254o\u05DF\u15FA p\u05DF\u01DD\u0265pu\u0250H", - "item.create.handheld_worldshaper": "\u0279\u01DDd\u0250\u0265sp\u05DF\u0279oM p\u05DF\u01DD\u0265pu\u0250H", + "item.create.handheld_worldshaper": "\u0279\u01DDd\u0250\u0265sp\u05DF\u0279oM \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", "item.create.honey_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u028E\u01DDuoH", "item.create.honeyed_apple": "\u01DD\u05DFdd\u2C6F p\u01DD\u028E\u01DDuoH", "item.create.integrated_circuit": "\u0287\u0131n\u0254\u0279\u0131\u0186 p\u01DD\u0287\u0250\u0279b\u01DD\u0287uI", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 04ab46cf4..99e1675fc 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -455,7 +455,6 @@ "item.create.crushed_tin_ore": "Crushed Tin Ore", "item.create.crushed_uranium_ore": "Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Crushed Zinc Ore", - "item.create.deforester": "Deforester", "item.create.dough": "Dough", "item.create.electron_tube": "Electron Tube", "item.create.empty_blaze_burner": "Empty Blaze Burner", @@ -465,8 +464,7 @@ "item.create.furnace_minecart_contraption": "Furnace Minecart Contraption", "item.create.goggles": "Engineer's Goggles", "item.create.golden_sheet": "Golden Sheet", - "item.create.handheld_blockzapper": "Handheld Blockzapper", - "item.create.handheld_worldshaper": "Handheld Worldshaper", + "item.create.handheld_worldshaper": "Creative Worldshaper", "item.create.honey_bucket": "Honey Bucket", "item.create.honeyed_apple": "Honeyed Apple", "item.create.integrated_circuit": "Integrated Circuit", @@ -644,14 +642,8 @@ "advancement.create.refined_radiance.desc": "Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "The Chromatic Age", "advancement.create.chromatic_age.desc": "Create casing blocks of the light and dark.", - "advancement.create.zapper": "Building With Style", - "advancement.create.zapper.desc": "Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", - "advancement.create.deforester": "Radiant Chopping", - "advancement.create.deforester.desc": "Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip.", "advancement.create.dual_extendo_grip": "Ultimate Boing-age", @@ -694,7 +686,6 @@ "create.recipe.automatic_shaped": "Automated Shaped Crafting", "create.recipe.block_cutting": "Block Cutting", "create.recipe.wood_cutting": "Wood Cutting", - "create.recipe.blockzapper_upgrade": "Handheld Blockzapper", "create.recipe.sandpaper_polishing": "Sandpaper Polishing", "create.recipe.mystery_conversion": "Mysterious Conversion", "create.recipe.spout_filling": "Filling by Spout", @@ -751,20 +742,16 @@ "create.orientation.alongZ": "Along Z", "create.orientation.alongX": "Along X", - "create.gui.blockzapper.title": "Handheld Blockzapper", - "create.gui.blockzapper.replaceMode": "Replace Mode", - "create.gui.blockzapper.searchDiagonal": "Follow Diagonals", - "create.gui.blockzapper.searchFuzzy": "Ignore Material Borders", - "create.gui.blockzapper.range": "Spread Range", - "create.gui.blockzapper.needsUpgradedAmplifier": "Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Pattern", - "create.gui.blockzapper.pattern.solid": "Solid", - "create.gui.blockzapper.pattern.checkered": "Checkerboard", - "create.gui.blockzapper.pattern.inversecheckered": "Inverted Checkerboard", - "create.gui.blockzapper.pattern.chance25": "25% Roll", - "create.gui.blockzapper.pattern.chance50": "50% Roll", - "create.gui.blockzapper.pattern.chance75": "75% Roll", - "create.gui.terrainzapper.title": "Handheld Worldshaper", + "create.gui.terrainzapper.title": "Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "Pattern", + "create.gui.terrainzapper.pattern.solid": "Solid", + "create.gui.terrainzapper.pattern.checkered": "Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "25% Roll", + "create.gui.terrainzapper.pattern.chance50": "50% Roll", + "create.gui.terrainzapper.pattern.chance75": "75% Roll", "create.gui.terrainzapper.placement": "Placement", "create.gui.terrainzapper.placement.merged": "Merged", "create.gui.terrainzapper.placement.attached": "Attached", @@ -773,6 +760,8 @@ "create.gui.terrainzapper.brush.cuboid": "Cuboid", "create.gui.terrainzapper.brush.sphere": "Sphere", "create.gui.terrainzapper.brush.cylinder": "Cylinder", + "create.gui.terrainzapper.brush.surface": "Surface", + "create.gui.terrainzapper.brush.cluster": "Cluster", "create.gui.terrainzapper.tool": "Tool", "create.gui.terrainzapper.tool.fill": "Fill", "create.gui.terrainzapper.tool.place": "Place", @@ -782,19 +771,8 @@ "create.gui.terrainzapper.tool.flatten": "Flatten", "create.terrainzapper.shiftRightClickToSet": "Shift-Right-Click to Select a Shape", - - "create.blockzapper.usingBlock": "Using: %1$s", - "create.blockzapper.componentUpgrades": "Component Upgrades:", - "create.blockzapper.component.body": "Body", - "create.blockzapper.component.amplifier": "Amplifier", - "create.blockzapper.component.accelerator": "Accelerator", - "create.blockzapper.component.retriever": "Retriever", - "create.blockzapper.component.scope": "Scope", - "create.blockzapper.componentTier.none": "None", - "create.blockzapper.componentTier.brass": "Brass", - "create.blockzapper.componentTier.chromatic": "Chromatic", - "create.blockzapper.leftClickToSet": "Left-Click a Block to set Material", - "create.blockzapper.empty": "Out of Blocks!", + "create.terrainzapper.usingBlock": "Using: %1$s", + "create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "Minecarts cannot have more than two couplings each", "create.minecart_coupling.unloaded": "Parts of your train seem to be in unloaded chunks", @@ -1154,20 +1132,26 @@ "create.subtitle.cogs": "Cogwheels rumble", "create.subtitle.slime_added": "Slime squishes", + "create.subtitle.contraption_disassemble": "Contraption stops", + "create.subtitle.wrench_rotate": "Wrench used", "create.subtitle.mixing": "Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Affirmative ding", + "create.subtitle.worldshaper_place": "Worldshaper zaps", "create.subtitle.depot_slide": "Item slides", - "create.subtitle.blockzapper_place": "Blockzapper zaps", + "create.subtitle.deny": "Declining boop", "create.subtitle.blaze_munch": "Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "Schematicannon fires", "create.subtitle.funnel_flap": "Funnel Flaps", "create.subtitle.schematicannon_finish": "Schematicannon dings", "create.subtitle.scroll_value": "Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Mechanical Press clangs", - "create.subtitle.blockzapper_deny": "Declining boop", + "create.subtitle.contraption_assemble": "Contraption moves", + "create.subtitle.crafter_craft": "Crafter crafts", "create.subtitle.cranking": "Hand Crank turns", + "create.subtitle.crafter_click": "Crafter clicks", + "create.subtitle.wrench_remove": "Component breaks", "create.subtitle.depot_plop": "Item lands", + "create.subtitle.confirm": "Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1273,15 +1257,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "R-Click while Sneaking", "item.create.wand_of_symmetry.tooltip.action3": "Opens the _Configuration Interface_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Novel gadget for placing or exchanging blocks at a distance.", - "item.create.handheld_blockzapper.tooltip.control1": "L-Click at Block", - "item.create.handheld_blockzapper.tooltip.action1": "Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_blockzapper.tooltip.control2": "R-Click at Block", - "item.create.handheld_blockzapper.tooltip.action2": "_Places_ or _Replaces_ the targeted block.", - "item.create.handheld_blockzapper.tooltip.control3": "R-Click while Sneaking", - "item.create.handheld_blockzapper.tooltip.action3": "Opens the _Configuration Interface_.", - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "Handy tool for creating _landscapes_ and _terrain features_.", "item.create.handheld_worldshaper.tooltip.control1": "L-Click at Block", @@ -1296,9 +1271,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling", "item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_", - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "A _radiant axe_ able to chop down trees in a split second.", - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", 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 cf3ae191f..d28a04eb6 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: 921", + "_": "Missing Localizations: 935", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", - "item.create.deforester": "Entforster", "item.create.dough": "Teig", "item.create.electron_tube": "Elektronenröhre", "item.create.empty_blaze_burner": "Leerer Lohenbrenner", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Antriebsloren Vorrichtung", "item.create.goggles": "Ingenieursbrille", "item.create.golden_sheet": "Goldblech", - "item.create.handheld_blockzapper": "Blockpistole", "item.create.handheld_worldshaper": "Geländeformer", "item.create.honey_bucket": "Honigeimer", "item.create.honeyed_apple": "Honigapfel", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.zapper": "UNLOCALIZED: Building With Style", - "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", - "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", "advancement.create.dual_extendo_grip": "Ultimatives Boing-Zeitalter", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", "create.recipe.block_cutting": "Schneiden von Blöcken", "create.recipe.wood_cutting": "Schneiden von Holz", - "create.recipe.blockzapper_upgrade": "Blockpistole", "create.recipe.sandpaper_polishing": "Schleifen", "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", "create.recipe.spout_filling": "Befüllung per Ausguss", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Entlang Z", "create.orientation.alongX": "Entlang X", - "create.gui.blockzapper.title": "Blockpistole", - "create.gui.blockzapper.replaceMode": "Austauschmodus", - "create.gui.blockzapper.searchDiagonal": "Diagonalen folgen", - "create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren", - "create.gui.blockzapper.range": "Reichweite", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", - "create.gui.blockzapper.patternSection": "Muster", - "create.gui.blockzapper.pattern.solid": "Fest", - "create.gui.blockzapper.pattern.checkered": "Schachbrett", - "create.gui.blockzapper.pattern.inversecheckered": "Inverses Schachbrett", - "create.gui.blockzapper.pattern.chance25": "25%-Chance", - "create.gui.blockzapper.pattern.chance50": "50%-Chance", - "create.gui.blockzapper.pattern.chance75": "75%-Chance", "create.gui.terrainzapper.title": "Tragbarer Geländeformer", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "Platzierung", "create.gui.terrainzapper.placement.merged": "Zusammengeführt", "create.gui.terrainzapper.placement.attached": "Angefügt", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "Quader", "create.gui.terrainzapper.brush.sphere": "Kugel", "create.gui.terrainzapper.brush.cylinder": "Zylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "Werkzeug", "create.gui.terrainzapper.tool.fill": "Füllen", "create.gui.terrainzapper.tool.place": "Platzieren", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "Abflachen", "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", - - "create.blockzapper.usingBlock": "Auswahl: %1$s", - "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", - "create.blockzapper.component.body": "Rumpf", - "create.blockzapper.component.amplifier": "Verstärker", - "create.blockzapper.component.accelerator": "Beschleuniger", - "create.blockzapper.component.retriever": "Empfänger", - "create.blockzapper.component.scope": "Fernrohr", - "create.blockzapper.componentTier.none": "Nichts", - "create.blockzapper.componentTier.brass": "Messing", - "create.blockzapper.componentTier.chromatic": "Chromatisch", - "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", - "create.blockzapper.empty": "Keine Blöcke übrig!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "Schleim matscht", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Bestätigendes Ding", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "Blöcke zappen an Ort und Stelle", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Lohe kaut glücklich", "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "Bauplankanone endet", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", - "create.subtitle.blockzapper_deny": "Ablehnendes Boop", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", - "item.create.handheld_blockzapper.tooltip": "BLOCKPISTOLE", - "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", - "item.create.handheld_blockzapper.tooltip.control1": "L-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", - "item.create.handheld_blockzapper.tooltip.control2": "R-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", - "item.create.handheld_blockzapper.tooltip.control3": "R-Klick beim Schleichen", - "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", - "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", - "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant axe_ able to chop down trees in a split second.", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", 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 6b9899146..838d09dcf 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: 614", + "_": "Missing Localizations: 636", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Mineral de estaño molido", "item.create.crushed_uranium_ore": "Mineral de uranio molido", "item.create.crushed_zinc_ore": "Mineral de zinc molido", - "item.create.deforester": "Deforestador", "item.create.dough": "Masilla", "item.create.electron_tube": "Tubo de electrones", "item.create.empty_blaze_burner": "Quemador de Blaze vacío", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Artilugio de vagoneta de horno", "item.create.goggles": "Gafas del Ingeniero", "item.create.golden_sheet": "Lámina de oro", - "item.create.handheld_blockzapper": "Blockzapper", "item.create.handheld_worldshaper": "Worldshaper", "item.create.honey_bucket": "Cubo de miel", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "Crea un Resplandor refinado, una poderosa sustancia cromática.", "advancement.create.chromatic_age": "La edad cromática", "advancement.create.chromatic_age.desc": "Crear bloques de revestimiento de la luz y la oscuridad.", - "advancement.create.zapper": "Construir con estilo", - "advancement.create.zapper.desc": "Construye un Blockzapper. Una pistola láser radiante que te ayuda a construir.", - "advancement.create.upgraded_zapper": "Radiante sobrecarga", - "advancement.create.upgraded_zapper.desc": "Crear y activar un Blockzapper totalmente mejorado.", "advancement.create.wand_of_symmetry": "Espejos radiantes", "advancement.create.wand_of_symmetry.desc": "Crear un bastón de simetría.", - "advancement.create.deforester": "Picado radiante", - "advancement.create.deforester.desc": "Crea un Deforestador y despídete del bosque local.", "advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip.desc": "Hazte con un Agarre extentido.", "advancement.create.dual_extendo_grip": "La última edad del boing", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "Elaboración automatizada de productos con forma", "create.recipe.block_cutting": "Corte de bloques", "create.recipe.wood_cutting": "Corte de maderas", - "create.recipe.blockzapper_upgrade": "Blockzapper", "create.recipe.sandpaper_polishing": "Pulido con papel de lija", "create.recipe.mystery_conversion": "Conversión misteriosa", "create.recipe.spout_filling": "Llenar por el pico", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "A lo largo de Z", "create.orientation.alongX": "A lo largo de X", - "create.gui.blockzapper.title": "Blockzapper", - "create.gui.blockzapper.replaceMode": "Modo de sustitución", - "create.gui.blockzapper.searchDiagonal": "Seguir las diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorar los bordes del material", - "create.gui.blockzapper.range": "Alcance del margen de maniobra", - "create.gui.blockzapper.needsUpgradedAmplifier": "Requiere un amplificador mejorado", - "create.gui.blockzapper.patternSection": "Patrón", - "create.gui.blockzapper.pattern.solid": "Sólido", - "create.gui.blockzapper.pattern.checkered": "Tablero de ajedrez", - "create.gui.blockzapper.pattern.inversecheckered": "Tablero de ajedrez invertido", - "create.gui.blockzapper.pattern.chance25": "25% Roll", - "create.gui.blockzapper.pattern.chance50": "50% Roll", - "create.gui.blockzapper.pattern.chance75": "75% Roll", "create.gui.terrainzapper.title": "Worldshaper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "Colocación", "create.gui.terrainzapper.placement.merged": "Fusionado", "create.gui.terrainzapper.placement.attached": "Adjuntado", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "Cuboide", "create.gui.terrainzapper.brush.sphere": "Esfera", "create.gui.terrainzapper.brush.cylinder": "Cilindro", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "Herramienta", "create.gui.terrainzapper.tool.fill": "Llenar", "create.gui.terrainzapper.tool.place": "Sitio", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "Aplanar", "create.terrainzapper.shiftRightClickToSet": "Shift+Clic con el botón derecho para seleccionar una forma", - - "create.blockzapper.usingBlock": "Utilizando: %1$s", - "create.blockzapper.componentUpgrades": "Mejoras de componentes:", - "create.blockzapper.component.body": "Cuerpo", - "create.blockzapper.component.amplifier": "Amplificador", - "create.blockzapper.component.accelerator": "Acelerador", - "create.blockzapper.component.retriever": "Recuperador", - "create.blockzapper.component.scope": "Mira telescópica", - "create.blockzapper.componentTier.none": "Ninguno", - "create.blockzapper.componentTier.brass": "Latón", - "create.blockzapper.componentTier.chromatic": "Cromático", - "create.blockzapper.leftClickToSet": "Clic izquierdo en un bloque para establecer el material", - "create.blockzapper.empty": "Sin bloques!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener más de dos enganches cada una", "create.minecart_coupling.unloaded": "Algunas partes de su tren parecen estar en chunks no cargados", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "Slime aplastado", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Ding afirmativo", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "Los bloques se colocan en su sitio", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Blaze mastica felizmente", "create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "Acabados de Schematicannon", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa", - "create.subtitle.blockzapper_deny": "Boop declinante", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "Click derecho mientras se agacha", "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz de Configuración_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Novedoso artefacto para colocar o intercambiar bloques a distancia", - "item.create.handheld_blockzapper.tooltip.control1": "Click izquierdo en un bloque", - "item.create.handheld_blockzapper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo", - "item.create.handheld_blockzapper.tooltip.control2": "Click derecho en un bloque", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ o _Reemplaza_ el bloque objetivo", - "item.create.handheld_blockzapper.tooltip.control3": "Click derecho mientras se agacha", - "item.create.handheld_blockzapper.tooltip.action3": "Abre la _Interfaz de Configuración_", - "item.create.handheld_worldshaper.tooltip": "WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "Práctica herramienta para crear _paisajes_ y _características del terreno_", "item.create.handheld_worldshaper.tooltip.control1": "Click izquierdo en un bloque", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Cuando se utiliza en un árbol joven", "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles _independientemente_ de sus condiciones de _espacio_", - "item.create.deforester.tooltip": "DEFORESTADOR", - "item.create.deforester.tooltip.summary": "Un hacha _radiante_ capaz de talar árboles en una fracción de segundo", - "item.create.extendo_grip.tooltip": "AGARRE EXTENDIDO", "item.create.extendo_grip.tooltip.summary": "¡Boioioing! Aumenta enormemente la _distancia de alcance_ del portador", "item.create.extendo_grip.tooltip.condition1": "Cuando está fuera de la mano", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_mx.json b/src/generated/resources/assets/create/lang/unfinished/es_mx.json index 76705092c..5e4233492 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_mx.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_mx.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1272", + "_": "Missing Localizations: 1259", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Mineral de Estaño Molido", "item.create.crushed_uranium_ore": "Mineral de Uranio Molido", "item.create.crushed_zinc_ore": "Mineral de Zinc Molido", - "item.create.deforester": "Deforestador", "item.create.dough": "Masa", "item.create.electron_tube": "Válvula Electrónica", "item.create.empty_blaze_burner": "Quemador de Blaze Vacío", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Artefacto de Vagón con Horno", "item.create.goggles": "Gafas de Protección para Ingenieros", "item.create.golden_sheet": "Lámina de Oro", - "item.create.handheld_blockzapper": "Pistola de Manipulación de Bloques", "item.create.handheld_worldshaper": "Pistola de Manipulación de Mundo", "item.create.honey_bucket": "Cubeta de Miel", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.zapper": "UNLOCALIZED: Building With Style", - "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", - "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "UNLOCALIZED: Along Z", "create.orientation.alongX": "UNLOCALIZED: Along X", - "create.gui.blockzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.blockzapper.replaceMode": "UNLOCALIZED: Replace Mode", - "create.gui.blockzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.blockzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.blockzapper.range": "UNLOCALIZED: Spread Range", - "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.blockzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.blockzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.blockzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.blockzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.blockzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.blockzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - - "create.blockzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.blockzapper.componentUpgrades": "UNLOCALIZED: Component Upgrades:", - "create.blockzapper.component.body": "UNLOCALIZED: Body", - "create.blockzapper.component.amplifier": "UNLOCALIZED: Amplifier", - "create.blockzapper.component.accelerator": "UNLOCALIZED: Accelerator", - "create.blockzapper.component.retriever": "UNLOCALIZED: Retriever", - "create.blockzapper.component.scope": "UNLOCALIZED: Scope", - "create.blockzapper.componentTier.none": "UNLOCALIZED: None", - "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", - "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - "create.blockzapper.empty": "UNLOCALIZED: Out of Blocks!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative ding", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "UNLOCALIZED: Blockzapper zaps", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining boop", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "Click Derecho cuando se esta agachado", "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Novedoso artilugio para colocar o intercambiar bloques a distancia.", - "item.create.handheld_blockzapper.tooltip.control1": "Click Izquierdo a un bloque", - "item.create.handheld_blockzapper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.", - "item.create.handheld_blockzapper.tooltip.control2": "Click Derecho en un bloque", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ o _reemplaza_ el bloque objetivo.", - "item.create.handheld_blockzapper.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._", - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "Una herramienta útil para crear _paisajes_ y _características_ en el _terreno._", "item.create.handheld_worldshaper.tooltip.control1": "Click Izquierdo a un bloque", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un retoño de árbol", "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles, sin importar el espacio entre ellos.", - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "Un _hacha_ _radiante_ capaz de cortar árboles en una fracción de segundo.", - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "Boioioing! En gran medida, _aumenta_ _la_ _distancia_ _de_ _alcance_ del portador.", "item.create.extendo_grip.tooltip.condition1": "Cuando está en la mano secundaria", 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 7de31748c..5dbf5571b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1171", + "_": "Missing Localizations: 1187", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Etain concassé", "item.create.crushed_uranium_ore": "Uranium concassé", "item.create.crushed_zinc_ore": "Zinc concassé", - "item.create.deforester": "Déforesteur", "item.create.dough": "Pâte", "item.create.electron_tube": "Tube électronique", "item.create.empty_blaze_burner": "Brûleur à blaze vide", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Engin de wagon avec fourneau", "item.create.goggles": "Lunettes d'ingénieur", "item.create.golden_sheet": "Feuille d'or", - "item.create.handheld_blockzapper": "Blockzappeur portable", "item.create.handheld_worldshaper": "Térraformeur portable", "item.create.honey_bucket": "Seau de miel", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.zapper": "UNLOCALIZED: Building With Style", - "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", - "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", "create.recipe.block_cutting": "Coupe de bloc", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "Blockzappeur portable", "create.recipe.sandpaper_polishing": "Polissage au papier de verre", "create.recipe.mystery_conversion": "Métamorphose chromatique", "create.recipe.spout_filling": "Remplissage par un bec verseur", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Sur Z", "create.orientation.alongX": "Sur X", - "create.gui.blockzapper.title": "Blockzappeur portable", - "create.gui.blockzapper.replaceMode": "Mode de remplacement", - "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", - "create.gui.blockzapper.range": "Plage de propagation", - "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", - "create.gui.blockzapper.patternSection": "Motif", - "create.gui.blockzapper.pattern.solid": "Solide", - "create.gui.blockzapper.pattern.checkered": "Quamechanical_drillage", - "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", - "create.gui.blockzapper.pattern.chance25": "25%", - "create.gui.blockzapper.pattern.chance50": "50%", - "create.gui.blockzapper.pattern.chance75": "75%", "create.gui.terrainzapper.title": "Térraformeur portable", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "Placement", "create.gui.terrainzapper.placement.merged": "Fusionner", "create.gui.terrainzapper.placement.attached": "Attacher", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "Cuboïde", "create.gui.terrainzapper.brush.sphere": "Sphère", "create.gui.terrainzapper.brush.cylinder": "Cylindre", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "Outil", "create.gui.terrainzapper.tool.fill": "Remplir", "create.gui.terrainzapper.tool.place": "Placer", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "Applatir", "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", - - "create.blockzapper.usingBlock": "Utilisation: %1$s", - "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", - "create.blockzapper.component.body": "Corps", - "create.blockzapper.component.amplifier": "Amplifieur", - "create.blockzapper.component.accelerator": "Accélérateur", - "create.blockzapper.component.retriever": "Récupérateur", - "create.blockzapper.component.scope": "Lunette", - "create.blockzapper.componentTier.none": "Aucun", - "create.blockzapper.componentTier.brass": "Laiton", - "create.blockzapper.componentTier.chromatic": "Chromatique", - "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", - "create.blockzapper.empty": "Plus de blocs!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "Bruit de slime", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Ding d'affirmation", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "Blocs se zappant en place", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "Tir de schémacanon", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "Fin de schémacanon", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", - "create.subtitle.blockzapper_deny": "Boop de déclin", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPEUR", - "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", - "item.create.handheld_blockzapper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", - "item.create.handheld_blockzapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", - "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'rotor", "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_", - "item.create.deforester.tooltip": "DÉFORESTEUR", - "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des rotors en une fraction de seconde.", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", 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 c306ac7a8..82e91b1f4 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: 631", + "_": "Missing Localizations: 653", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Stagno grezzo frantumato", "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", - "item.create.deforester": "Deforestatore", "item.create.dough": "Impasto", "item.create.electron_tube": "Valvola", "item.create.empty_blaze_burner": "Inceneritore di blaze vuoto", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Contrazione per carrello da miniera con fornace", "item.create.goggles": "Occhiali da ingegnere", "item.create.golden_sheet": "Lamiera d'oro", - "item.create.handheld_blockzapper": "Zapper di blocchi portatile", "item.create.handheld_worldshaper": "Plasmatore del mondo portatile", "item.create.honey_bucket": "Secchio di miele", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "Crea la radiance raffinata, una sostanza cromatica potente.", "advancement.create.chromatic_age": "L'era cromatica", "advancement.create.chromatic_age.desc": "Crea involucri di luce e d'ombra.", - "advancement.create.zapper": "Stile nella costruzione", - "advancement.create.zapper.desc": "Crea uno zapper di blocchi. Una pistola laser che ti aiuta a costruire.", - "advancement.create.upgraded_zapper": "Overdrive", - "advancement.create.upgraded_zapper.desc": "Crea e attiva uno zapper di blocchi potenziato al massimo.", "advancement.create.wand_of_symmetry": "Perfettamente simmetrico", "advancement.create.wand_of_symmetry.desc": "Crea un'asta di simmetria.", - "advancement.create.deforester": "Deforestazione avanzata", - "advancement.create.deforester.desc": "Crea un deforestatore. Ciao ciao alberelli...", "advancement.create.extendo_grip": "BOIOIOING", "advancement.create.extendo_grip.desc": "Procurati una presa extendo.", "advancement.create.dual_extendo_grip": "Boingaggio estremo", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "Costruzione con forma automatizzata", "create.recipe.block_cutting": "Taglio di blocchi", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "Zapper di blocchi portatile", "create.recipe.sandpaper_polishing": "Levigamento da carta vetrata", "create.recipe.mystery_conversion": "Metamorfosi cromatica", "create.recipe.spout_filling": "Riempimento da spruzzo", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Lungo Z", "create.orientation.alongX": "Lungo X", - "create.gui.blockzapper.title": "Zapper di blocchi", - "create.gui.blockzapper.replaceMode": "Modalità sostituzione", - "create.gui.blockzapper.searchDiagonal": "Segui diagonali", - "create.gui.blockzapper.searchFuzzy": "Ignora i bordi dei materiali", - "create.gui.blockzapper.range": "Gamma diffusione", - "create.gui.blockzapper.needsUpgradedAmplifier": "Richiede aggiornamento dell'amplificatore", - "create.gui.blockzapper.patternSection": "Schema", - "create.gui.blockzapper.pattern.solid": "Solido", - "create.gui.blockzapper.pattern.checkered": "Scacchiera", - "create.gui.blockzapper.pattern.inversecheckered": "Scacchiera invertita", - "create.gui.blockzapper.pattern.chance25": "Riempito al 25%", - "create.gui.blockzapper.pattern.chance50": "Riempito al 50%", - "create.gui.blockzapper.pattern.chance75": "Riempito al 75%", "create.gui.terrainzapper.title": "Plasmatore del mondo", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "Piazzamento", "create.gui.terrainzapper.placement.merged": "Fuso", "create.gui.terrainzapper.placement.attached": "Attaccato", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "Cuboide", "create.gui.terrainzapper.brush.sphere": "Sferico", "create.gui.terrainzapper.brush.cylinder": "Cilindrico", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "Strumento", "create.gui.terrainzapper.tool.fill": "Riempi", "create.gui.terrainzapper.tool.place": "Piazza", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "Appiattisci", "create.terrainzapper.shiftRightClickToSet": "Clic destro e shift per selezionare una forma", - - "create.blockzapper.usingBlock": "In utilizzo: %1$s", - "create.blockzapper.componentUpgrades": "Componenti:", - "create.blockzapper.component.body": "Corpo", - "create.blockzapper.component.amplifier": "Amplificatore", - "create.blockzapper.component.accelerator": "Acceleratore", - "create.blockzapper.component.retriever": "Retriever", - "create.blockzapper.component.scope": "Portata", - "create.blockzapper.componentTier.none": "Nessuno", - "create.blockzapper.componentTier.brass": "Ottone", - "create.blockzapper.componentTier.chromatic": "Cromatico", - "create.blockzapper.leftClickToSet": "Clic sinistro su un blocco per impostare il materiale", - "create.blockzapper.empty": "Fuori dai blocchi!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "I carrelli da miniera non possono avere più di due agganci ciascuno", "create.minecart_coupling.unloaded": "Parti del tuo treno sembrano essere in mezzo a chunk non caricati", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "Slime schiacciato", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Ding affermativo", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "Posiziona blocchi nello spazio", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Il blaze lo gusta felicemente", "create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "Finiture cannoneschematico", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Pressa meccanica attiva", - "create.subtitle.blockzapper_deny": "Boop in calo", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "Clic destro da accovacciato", "item.create.wand_of_symmetry.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_", - "item.create.handheld_blockzapper.tooltip": "ZAPPER DI BLOCCHI PORTATILE", - "item.create.handheld_blockzapper.tooltip.summary": "Nuovo gadget per posizionare o scambiare blocchi a distanza.", - "item.create.handheld_blockzapper.tooltip.control1": "Clic sinistro su un blocco", - "item.create.handheld_blockzapper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", - "item.create.handheld_blockzapper.tooltip.control2": "Clic destro su un blocco", - "item.create.handheld_blockzapper.tooltip.action2": "_Piazza_ o _sostituisce_ il blocco selezionato.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic destro da accovacciato", - "item.create.handheld_blockzapper.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_.", - "item.create.handheld_worldshaper.tooltip": "PLASMATORE DEL MONDO PORTATILE", "item.create.handheld_worldshaper.tooltip.summary": "Strumento per la creazione di _paesaggi_ e _caratteristiche_ _del_ _terreno_.", "item.create.handheld_worldshaper.tooltip.control1": "Clic sinistro su un blocco", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Se utilizzato su un arboscello", "item.create.tree_fertilizer.tooltip.behaviour1": "Fa crescere gli alberi _indipendentemente_ dalle _condizioni_ _di_ _spazio_", - "item.create.deforester.tooltip": "DEFORESTATORE", - "item.create.deforester.tooltip.summary": "Un'_ascia_ _radiante_ in grado di abbattere alberi in una frazione di secondo.", - "item.create.extendo_grip.tooltip": "PRESA EXTENDO", "item.create.extendo_grip.tooltip.summary": "Boioioing! _Incrementa notevolmente la distanza per piazzare_ di chi lo brandisce.", "item.create.extendo_grip.tooltip.condition1": "Quando in mano secondaria", 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 1847cbfab..bae1281d3 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: 613", + "_": "Missing Localizations: 17", "_": "->------------------------] Game Elements [------------------------<-", @@ -164,7 +164,7 @@ "block.create.gabbro_cobblestone_stairs": "斑れい岩の丸石の階段", "block.create.gabbro_cobblestone_wall": "斑れい岩の丸石の壁", "block.create.gabbro_pillar": "斑れい岩の柱", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", + "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", "block.create.gearbox": "ギアボックス", "block.create.gearshift": "ギアシフト", @@ -350,7 +350,7 @@ "block.create.red_valve_handle": "赤色のバルブハンドル", "block.create.redstone_contact": "レッドストーンコンタクト", "block.create.redstone_link": "レッドストーンリンク", - "block.create.refined_radiance_casing": "極光体ケーシング", + "block.create.refined_radiance_casing": "光輝ケーシング", "block.create.reinforced_rail": "補強レール", "block.create.rope": "ロープ", "block.create.rope_pulley": "ローププーリー", @@ -374,19 +374,19 @@ "block.create.shaft": "シャフト", "block.create.smart_chute": "スマートシュート", "block.create.smart_fluid_pipe": "スマート液体パイプ", - "block.create.speedometer": "回転速度メーター", + "block.create.speedometer": "速度メーター", "block.create.spout": "アイテム注液口", "block.create.spruce_window": "マツの窓", "block.create.spruce_window_pane": "マツの窓パネル", - "block.create.sticker": "UNLOCALIZED: Sticker", + "block.create.sticker": "スティッカー", "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", "block.create.stockpile_switch": "在庫スイッチ", "block.create.stressometer": "応力メーター", "block.create.tiled_glass": "タイルガラス", "block.create.tiled_glass_pane": "タイルガラス板", "block.create.turntable": "ターンテーブル", - "block.create.vertical_framed_glass": "垂直ガラス窓", - "block.create.vertical_framed_glass_pane": "垂直ガラス窓板", + "block.create.vertical_framed_glass": "縦型ガラス窓", + "block.create.vertical_framed_glass_pane": "縦型ガラス窓板", "block.create.warped_window": "歪んだ窓", "block.create.warped_window_pane": "歪んだ窓パネル", "block.create.water_wheel": "水車", @@ -394,13 +394,13 @@ "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", - "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの塀", + "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの壁", "block.create.weathered_limestone_cobblestone": "風化した石灰岩の丸石", "block.create.weathered_limestone_cobblestone_slab": "風化した石灰岩の丸石のハーフブロック", "block.create.weathered_limestone_cobblestone_stairs": "風化した石灰岩の丸石の階段", "block.create.weathered_limestone_cobblestone_wall": "風化した石灰岩の丸石の壁", "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "重量射出機", "block.create.white_sail": "白色の帆", "block.create.white_seat": "白色のシート", "block.create.white_valve_handle": "白色のバルブハンドル", @@ -416,7 +416,7 @@ "entity.create.gantry_contraption": "ガントリーからくり", "entity.create.seat": "シート", "entity.create.stationary_contraption": "付設からくり", - "entity.create.super_glue": "強力接着剤", + "entity.create.super_glue": "超粘着剤", "fluid.create.milk": "牛乳", "fluid.create.potion": "ポーション", @@ -430,16 +430,16 @@ "item.create.blaze_cake_base": "ブレイズケーキの型", "item.create.brass_hand": "真鍮の手", "item.create.brass_ingot": "真鍮インゴット", - "item.create.brass_nugget": "真鍮ナゲット", + "item.create.brass_nugget": "真鍮塊", "item.create.brass_sheet": "真鍮シート", "item.create.builders_tea": "建築家のお茶", "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", + "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", "item.create.copper_ingot": "銅インゴット", - "item.create.copper_nugget": "銅ナゲット", + "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", "item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "砕いた錫鉱石", "item.create.crushed_uranium_ore": "砕いたウラン鉱石", "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", - "item.create.deforester": "デフォレスター", "item.create.dough": "生地", "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", @@ -466,27 +465,26 @@ "item.create.furnace_minecart_contraption": "からくりかまど付きトロッコ", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "携帯型ブロックザッパー", "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", "item.create.honey_bucket": "ハチミツ入りバケツ", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", + "item.create.honeyed_apple": "リンゴのハチミツかけ", "item.create.integrated_circuit": "集積回路", "item.create.iron_sheet": "鉄板", "item.create.lapis_sheet": "ラピスラズリ板", - "item.create.minecart_contraption": "からくりトロッコ", + "item.create.minecart_contraption": "からくり付きトロッコ", "item.create.minecart_coupling": "トロッコ連結器", "item.create.polished_rose_quartz": "磨かれたローズクォーツ", "item.create.powdered_obsidian": "黒曜石の粉", "item.create.propeller": "プロペラ", "item.create.red_sand_paper": "赤い紙やすり", - "item.create.refined_radiance": "洗練された極光体", + "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", "item.create.sand_paper": "紙やすり", "item.create.schematic": "概略図", "item.create.schematic_and_quill": "概略図と羽根ペン", "item.create.shadow_steel": "シャドウスチール", - "item.create.super_glue": "強力接着剤", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", + "item.create.super_glue": "超粘着剤", + "item.create.sweet_roll": "スイートロール", "item.create.tree_fertilizer": "樹木の肥料", "item.create.vertical_gearbox": "垂直ギアボックス", "item.create.wand_of_symmetry": "対称の杖", @@ -494,19 +492,19 @@ "item.create.whisk": "泡立て器", "item.create.wrench": "レンチ", "item.create.zinc_ingot": "亜鉛インゴット", - "item.create.zinc_nugget": "亜鉛ナゲット", + "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.its_alive": "こいつ…動くぞ!", "advancement.create.its_alive.desc": "機械の回転を初めて見る", "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて速度を変更する", + "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", "advancement.create.overstressed": "超過応力", "advancement.create.overstressed.desc": "応力の限界を肌で感じる", "advancement.create.belt": "コンブ駆動", @@ -540,7 +538,7 @@ "advancement.create.stressometer": "正確な応力は?", "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", "advancement.create.aesthetics": "装飾ブーム!", - "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に腕木や腕金を取り付ける", + "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に木製ブラケットや金属ブラケットを取り付ける", "advancement.create.reinforced": "補強ブーム!", "advancement.create.reinforced.desc": "シャフト、パイプ、メカニカルベルトなどにケーシングブロックを取り付ける", "advancement.create.water_wheel": "水力を使おう", @@ -608,7 +606,7 @@ "advancement.create.infinite_chocolate": "空想に溺れて", "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", "advancement.create.crafter": "自動作業台", - "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を与える", + "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", "advancement.create.clockwork_bearing": "時計仕掛け", "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", "advancement.create.nixie_tube": "イカした看板", @@ -624,11 +622,11 @@ "advancement.create.integrated_circuit": "複素数の計算", "advancement.create.integrated_circuit.desc": "集積回路を組み立てる", "advancement.create.mechanical_arm": "手が離せない!", - "advancement.create.mechanical_arm.desc": "搬入先と搬出先を設定したメカニカルアームを設置して、稼働させ、あなたのために一生懸命労働している様子を見る", + "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して、稼働させ、あなたのために一生懸命労働している様子を見る", "advancement.create.musical_arm": "お気に入りの曲を流して!", "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", "advancement.create.arm_many_targets": "整理整頓", - "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、出力先を設定する", + "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", "advancement.create.arm_blaze_burner": "燃料補給", "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", "advancement.create.fist_bump": "グータッチだ、兄弟!", @@ -637,22 +635,16 @@ "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", "advancement.create.blaze_cake": "シュガー・ラッシュ", "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.chromatic_compound": "二極性鉱物", + "advancement.create.chromatic_compound": "二極性化合物", "advancement.create.chromatic_compound.desc": "色彩の化合物を作る", "advancement.create.shadow_steel": "奈落からの帰還", "advancement.create.shadow_steel.desc": "究極の虚無、「シャドウスチール」を作る", - "advancement.create.refined_radiance": "眩い光", - "advancement.create.refined_radiance.desc": "究極の色彩物質、「洗練された極光体」を作る", + "advancement.create.refined_radiance": "光輝の吹入", + "advancement.create.refined_radiance.desc": "究極の色彩、「高貴な光輝」を作る", "advancement.create.chromatic_age": "色彩の時代", "advancement.create.chromatic_age.desc": "光と闇のケーシングを作る", - "advancement.create.zapper": "風格ある建築", - "advancement.create.zapper.desc": "建築に役立つレーザー銃、ブロックザッパーを作る", - "advancement.create.upgraded_zapper": "究極の輝き", - "advancement.create.upgraded_zapper.desc": "ブロックザッパーを最大までアップグレードする", "advancement.create.wand_of_symmetry": "輝く鏡", "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", - "advancement.create.deforester": "輝く斧", - "advancement.create.deforester.desc": "デフォレスターを作って、地元の森に別れを告げる", "advancement.create.extendo_grip": "ビヨヨーン!", "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", @@ -673,7 +665,7 @@ "death.attack.create.mechanical_saw": "%1$s はメカニカルソーで半分にカットされた", "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", - "create.block.deployer.damage_source_name": "変異デプロイヤー", + "create.block.deployer.damage_source_name": "悪いデプロイヤー", "create.block.cart_assembler.invalid": "トロッコアセンブラはレールの上にのみ設置できます", "create.recipe.crushing": "粉砕", @@ -695,29 +687,28 @@ "create.recipe.automatic_shaped": "自動定形クラフト", "create.recipe.block_cutting": "自動石切", "create.recipe.wood_cutting": "自動製材", - "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "不思議な変換", + "create.recipe.mystery_conversion": "神秘の変転", "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムの排液", - "create.recipe.processing.chance": "%1$s%% チャンス", + "create.recipe.draining": "アイテムから排液", + "create.recipe.processing.chance": "%1$s%%チャンス", "create.recipe.heat_requirement.none": "加熱不要", "create.recipe.heat_requirement.heated": "加熱が必要", - "create.recipe.heat_requirement.superheated": "超加熱が必要", + "create.recipe.heat_requirement.superheated": "極度の加熱が必要", "create.generic.range": "範囲", "create.generic.radius": "半径", "create.generic.width": "幅", "create.generic.height": "高さ", "create.generic.length": "長さ", - "create.generic.speed": "速度", + "create.generic.speed": "回転速度", "create.generic.delay": "遅延", "create.generic.unit.ticks": "ティック", "create.generic.unit.seconds": "秒", "create.generic.unit.minutes": "分", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "度", "create.generic.unit.millibuckets": "%1$smB", "create.generic.clockwise": "時計回り", "create.generic.counter_clockwise": "反時計回り", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Z に沿る", "create.orientation.alongX": "X に沿る", - "create.gui.blockzapper.title": "携帯型ブロックザッパー", - "create.gui.blockzapper.replaceMode": "置換モード", - "create.gui.blockzapper.searchDiagonal": "対角線にフォロー", - "create.gui.blockzapper.searchFuzzy": "素材の境界を無視", - "create.gui.blockzapper.range": "範囲", - "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードが必要", - "create.gui.blockzapper.patternSection": "模様", - "create.gui.blockzapper.pattern.solid": "敷き詰め", - "create.gui.blockzapper.pattern.checkered": "市松模様", - "create.gui.blockzapper.pattern.inversecheckered": "逆市松模様", - "create.gui.blockzapper.pattern.chance25": "25%", - "create.gui.blockzapper.pattern.chance50": "50%", - "create.gui.blockzapper.pattern.chance75": "75%", - "create.gui.terrainzapper.title": "携帯型ワールドシェイパー", + "create.gui.terrainzapper.title": "携帯型ワールドシェーパー", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "配置", "create.gui.terrainzapper.placement.merged": "合併", "create.gui.terrainzapper.placement.attached": "添える", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "直方体", "create.gui.terrainzapper.brush.sphere": "球体", "create.gui.terrainzapper.brush.cylinder": "円筒", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "ツール", "create.gui.terrainzapper.tool.fill": "埋立", "create.gui.terrainzapper.tool.place": "設置", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "なだらかに", "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", - - "create.blockzapper.usingBlock": "使用中: %1$s", - "create.blockzapper.componentUpgrades": "コンポーネントアップグレード:", - "create.blockzapper.component.body": "ボディー", - "create.blockzapper.component.amplifier": "増幅", - "create.blockzapper.component.accelerator": "加速", - "create.blockzapper.component.retriever": "レトリーバー", - "create.blockzapper.component.scope": "範囲", - "create.blockzapper.componentTier.none": "無し", - "create.blockzapper.componentTier.brass": "真鍮", - "create.blockzapper.componentTier.chromatic": "色彩", - "create.blockzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", - "create.blockzapper.empty": "ブロック不足!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", @@ -831,25 +809,25 @@ "create.gui.goggles.generator_stats": "原動機の統計:", "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の速度", + "create.gui.goggles.at_current_speed": "現在の回転速度", "create.gui.goggles.pole_length": "ポールの長さ:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: 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.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.structureTooLarge": "からくりに含まれるブロックが多すぎます。\n最大値: %1$s", "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられている拡張ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "計器の情報:", + "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています。", + "create.gui.assembly.exception.not_enough_sails": "この構造物は帆ブロックが足りていません。: %1$s\nAが最低でも%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.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_の影響が大きい機械の速度を_下げて_ください。", + "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", "create.gui.stockpile_switch.title": "在庫スイッチ", @@ -860,34 +838,34 @@ "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.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度分だけ回す", "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": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "持続時間", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "一定時間待つ", + "create.gui.sequenced_gearshift.instruction.delay": "遅延", + "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": "回転速度, 方向", "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": "2番目の位置セット。", + "create.schematicAndQuill.firstPos": "最初の位置セット", + "create.schematicAndQuill.secondPos": "2番目の位置セット", "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", - "create.schematicAndQuill.abort": "選択を削除しました。", + "create.schematicAndQuill.abort": "選択を削除しました", "create.schematicAndQuill.title": "概略図名:", "create.schematicAndQuill.convert": "保存してすぐに適用", "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使用してください", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", "create.schematic.position": "位置", "create.schematic.rotation": "回転", "create.schematic.rotation.none": "無し", @@ -904,33 +882,33 @@ "create.schematic.tool.rotate": "回転", "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.move.description.0": "概略図を水平に動かします。", - "create.schematic.tool.move.description.1": "概略図を向け、 [Ctrl]-スクロールして押し出します。", + "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.move.description.0": "概略図を水平に動かします", + "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.0": "概略図を垂直に動かします", + "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.2": "このツールはクリエイティブモード専用です。", + "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します", + "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.0": "選択した面に沿って概略図を反転します", + "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": "ファイルを更新する", @@ -942,8 +920,8 @@ "create.gui.schematicTable.finished": "アップロードが完了しました!", "create.gui.schematicannon.title": "概略図砲", "create.gui.schematicannon.listPrinter": "材料リストプリンター", - "create.gui.schematicannon.gunpowderLevel": "火薬残量 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "残りのショット数: %1$s", + "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", + "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %1$s", "create.gui.schematicannon.optionEnabled": "現在 有効", "create.gui.schematicannon.optionDisabled": "現在 無効", @@ -954,7 +932,7 @@ "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", - "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください", + "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストをプリントアウトします。", "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", @@ -1006,8 +984,8 @@ "create.item_attributes.smokable.inverted": "燻製器で調理不可能か", "create.item_attributes.crushable": "粉砕可能か", "create.item_attributes.crushable.inverted": "粉砕不可能か", - "create.item_attributes.blastable": "高炉で精錬可能か", - "create.item_attributes.blastable.inverted": "高炉で精錬不可能か", + "create.item_attributes.blastable": "溶鉱炉で精錬可能か", + "create.item_attributes.blastable.inverted": "溶鉱炉で精錬不可能か", "create.item_attributes.enchanted": "エンチャント済みか", "create.item_attributes.enchanted.inverted": "エンチャントなしか", "create.item_attributes.damaged": "破損してるか", @@ -1028,10 +1006,10 @@ "create.item_attributes.added_by.inverted": "%1$sによって追加されていないか", "create.item_attributes.has_enchant": "エンチャントされているか%1$s", "create.item_attributes.has_enchant.inverted": "エンチャントがされていないか", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.color": "%1$sで染められているか", + "create.item_attributes.color.inverted": "%1$sで染められていないか", + "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", + "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", "create.item_attributes.has_fluid": "%1$sを含んでいるか", "create.item_attributes.has_fluid.inverted": "%1$sを含んでいないか", "create.item_attributes.has_name": "%1$sの名前が付けられているか", @@ -1067,8 +1045,8 @@ "create.gui.attribute_filter.deny_list.description": "選択された属性を持たない場合、アイテムは通り抜けます。", "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し", + "create.tooltip.holdForControls": "操作方法を確認するには [%1$s] を長押し", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "必要な回転速度: %1$s", @@ -1087,18 +1065,18 @@ "create.tooltip.generationSpeed": "%1$s %2$sを生成", "create.tooltip.analogStrength": "アナログ強度: %1$s/15", - "create.mechanical_arm.extract_from": "%1$s からアイテムを取得", - "create.mechanical_arm.deposit_to": "%1$s にアイテムを預ける", + "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.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + "create.weighted_ejector.target_set": "ターゲットを選択", + "create.weighted_ejector.target_not_valid": "隣接ブロックへの射出(ターゲットが無効)", + "create.weighted_ejector.no_target": "隣接ブロックへの射出(ターゲットが選択されていない)", + "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": "強制順繰り分配", @@ -1108,18 +1086,18 @@ "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.items_move_down": "アイテムを下方向に移動します。", - "create.tooltip.chute.items_move_up": "アイテムを上方向に移動します。", - "create.tooltip.chute.no_fans_attached": "ファンは接続されていません。", - "create.tooltip.chute.fans_push_up": "下からファンが押しています。", - "create.tooltip.chute.fans_push_down": "ファンが上から押しています。", - "create.tooltip.chute.fans_pull_up": "ファンが上から引っ張っています。", - "create.tooltip.chute.fans_pull_down": "ファンが下から引っ張っています。", + "create.tooltip.chute.items_move_down": "アイテムを下方向に移動します", + "create.tooltip.chute.items_move_up": "アイテムを上方向に移動します", + "create.tooltip.chute.no_fans_attached": "ファンは接続されていません", + "create.tooltip.chute.fans_push_up": "下からファンが押しています", + "create.tooltip.chute.fans_push_down": "ファンが上から押しています", + "create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます", + "create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます", "create.tooltip.chute.contains": "内容物: %1$s x%2$s", "create.hint.hose_pulley.title": "底なし搬出", @@ -1148,27 +1126,33 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", + "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", "_": "->------------------------] Subtitles [------------------------<-", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", + "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "成功音", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "ブロックを発射して設置する", + "create.subtitle.contraption_disassemble": "からくりが止まる", + "create.subtitle.wrench_rotate": "レンチを使う", + "create.subtitle.mixing": "混ぜる音", + "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.depot_slide": "アイテムが滑る", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "ブレイズの咀嚼音", "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.funnel_flap": "ファンネルがはためく", "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.mechanical_press_activation": "メカニカルプレスが作動する", - "create.subtitle.blockzapper_deny": "失敗音", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.scroll_value": "スクロールのカチカチ音", + "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", + "create.subtitle.contraption_assemble": "からくりが動く", + "create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする", + "create.subtitle.cranking": "ハンドクランクが回る", + "create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音", + "create.subtitle.wrench_remove": "機械を壊す", + "create.subtitle.depot_plop": "デプロイヤーにアイテムが入れられる", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1178,7 +1162,7 @@ "item.create.example_item.tooltip.condition1": "これをしたとき", "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことを行います。(シフトを押したときに表示される)", "item.create.example_item.tooltip.condition2": "そしてこれをしたとき", - "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加することができます。", + "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加できます。", "item.create.example_item.tooltip.control1": "Ctrlを押したとき", "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", @@ -1197,7 +1181,7 @@ "block.create.encased_fluid_pipe.tooltip.summary": "銅ケーシングに覆われた液体パイプ", "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。色々な色に染められます。", + "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", "block.create.seat.tooltip.condition1": "右クリックしたとき", "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", @@ -1205,15 +1189,15 @@ "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_達に美味しいご馳走を。彼らを燃え上がらせよう(物理)!", "block.create.fluid_pipe.tooltip": "液体パイプ", - "block.create.fluid_pipe.tooltip.summary": "_液体_の運搬に使用します。液体運搬にはメカニカルポンプが必要です。", - "block.create.fluid_pipe.tooltip.condition1": "液体運搬", - "block.create.fluid_pipe.tooltip.behaviour1": "_タンク_や_鉢_などの_液体コンテナ_に接続できます。また、パイプの端が露出しているので液体を吹き出したり設置したりできます。液漏れ注意!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", + "block.create.fluid_pipe.tooltip.summary": "_液体_の輸送に使います。_液体_輸送にはメカニカルポンプが必要です。", + "block.create.fluid_pipe.tooltip.condition1": "液体輸送", + "block.create.fluid_pipe.tooltip.behaviour1": "_タンク_や_鉢_などの_液体コンテナ_に繋がります。また、_パイプ_の端が露出しているので液体を吹き出したり設置したりできます。液漏れ注意!", + "block.create.fluid_pipe.tooltip.condition2": "レンチで右クリックしたとき", + "block.create.fluid_pipe.tooltip.behaviour2": "可能ならパイプに窓を設けます。", "block.create.hose_pulley.tooltip": "ホースプーリー", "block.create.hose_pulley.tooltip.summary": "ワールドの大量の_液体_を_吸引_したり、_放出_したりするのに使います。", - "block.create.hose_pulley.tooltip.condition1": "回転したとき", + "block.create.hose_pulley.tooltip.condition1": "回転力を供給したとき", "block.create.hose_pulley.tooltip.behaviour1": "ホースを_上げ下げ_して、どの程度の_高さ_まで_吸引_や_放出_を行うか決めます。", "block.create.hose_pulley.tooltip.condition2": "プーリー本体から液体を吸い込むとき", "block.create.hose_pulley.tooltip.behaviour2": "ホースの端がおろされた本体から_液体_ブロックを_吸引_し始めます。非常に_大量_の液体は_無限_と_みなされます_。", @@ -1223,43 +1207,43 @@ "block.create.fluid_tank.tooltip": "液体タンク", "block.create.fluid_tank.tooltip.summary": "あなたのお気に入りのあらゆる_液体_を_貯蔵_できます。縦横に並べて大きさを調整できます。", "block.create.fluid_tank.tooltip.condition1": "レンチで右クリックしたとき", - "block.create.fluid_tank.tooltip.behaviour1": "窓の設定を変更します。", + "block.create.fluid_tank.tooltip.behaviour1": "窓の付けたり、外したりします。", "block.create.creative_fluid_tank.tooltip": "クリエイティブ液体タンク", - "block.create.creative_fluid_tank.tooltip.summary": "この_液体タンク_は、あらゆる液体を無限に複製することができます。縦横に並べて大きさを調整できます。", + "block.create.creative_fluid_tank.tooltip.summary": "この_液体タンク_は、あらゆる液体を無限に複製します。縦横に並べて大きさを調整できます。", "block.create.creative_fluid_tank.tooltip.condition1": "液体がタンクに入っているとき", "block.create.creative_fluid_tank.tooltip.behaviour1": "このタンクから何かを_取り出す_と、指定された液体が_無限_に_供給_されます。このタンクに_搬入_された液体は_消滅_します。", "block.create.creative_fluid_tank.tooltip.condition2": "レンチで左クリックしたとき", - "block.create.creative_fluid_tank.tooltip.behaviour2": "窓の設定を変更します。", + "block.create.creative_fluid_tank.tooltip.behaviour2": "窓を付け外しします。", "block.create.fluid_valve.tooltip": "液体バルブ", "block.create.fluid_valve.tooltip.summary": "パイプ内の液体の流れを止めます。", "block.create.fluid_valve.tooltip.condition1": "液体制御", - "block.create.fluid_valve.tooltip.behaviour1": "_回転力_を加えると_バルブ_は強制的に閉じ、液体の流れを止めます。_回転_方向を逆にするとバルブが再び開きます。", + "block.create.fluid_valve.tooltip.behaviour1": "_回転力_を加えると_バルブ_は強制的に閉じ、_液体_の流れを止めます。_回転_方向を逆にするとバルブが再び開きます。", "block.create.mechanical_pump.tooltip": "メカニカルポンプ", - "block.create.mechanical_pump.tooltip.summary": "_回転力_を使って_パイプ_に沿って_液体_を移動させます。", - "block.create.mechanical_pump.tooltip.condition1": "液体移動", - "block.create.mechanical_pump.tooltip.behaviour1": "_回転力_を加えるとパイプを流れる_液体_を移動させる圧力が発生します。_回転方向_を逆にすると、_液体_の流れる方向を切り替えられます。", + "block.create.mechanical_pump.tooltip.summary": "_回転力_を使って_パイプ_に沿って_液体_を輸送します。両方向に最大効果範囲があります。(デフォルト16ブロック)", + "block.create.mechanical_pump.tooltip.condition1": "液体輸送", + "block.create.mechanical_pump.tooltip.behaviour1": "_回転力_を加えると_パイプ_を流れる_液体_を移動させる圧力が発生します。_回転方向_を逆にすると、_液体_の流れる方向を切り替えられます。", "block.create.mechanical_pump.tooltip.control1": "レンチで右クリックしたとき", - "block.create.mechanical_pump.tooltip.action1": "ポンプの方向を反転させ、デフォルトの流れる方向を切り替えます。", + "block.create.mechanical_pump.tooltip.action1": "_ポンプ_の方向を反転させ、デフォルトの流れる方向を切り替えます。", "block.create.smart_fluid_pipe.tooltip": "スマート液体パイプ", - "block.create.smart_fluid_pipe.tooltip.summary": "フィルター付きの_液体パイプ_。特定の_液体_を通過させるか設定できます。", + "block.create.smart_fluid_pipe.tooltip.summary": "フィルター付きの_液体パイプ_。どの_液体_を通過させるか設定できます。", "block.create.smart_fluid_pipe.tooltip.condition1": "液体を搬入したとき", "block.create.smart_fluid_pipe.tooltip.behaviour1": "フィルターに合わない液体を搬入したスマート液体パイプは、流れを遮断します。", "block.create.smart_fluid_pipe.tooltip.condition2": "液体コンテナに隣接しているとき", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "あらゆる容器から_流れ出す_スマート液体パイプは、その_フィルター_に合った液体のみを搬入します。", + "block.create.smart_fluid_pipe.tooltip.behaviour2": "あらゆる容器から_流れ出す_スマート液体パイプは、その_フィルター_に_合った_液体のみを搬入します。", "block.create.spout.tooltip": "アイテム注液口", - "block.create.spout.tooltip.summary": "液体を注入する注液器。", + "block.create.spout.tooltip.summary": "_液体_を注入する注液器。", "block.create.spout.tooltip.condition1": "液体充填", - "block.create.spout.tooltip.behaviour1": "_バケツ_や_瓶_のような_容器アイテム_を下に置くと、貯蔵された液体でそれを満たします。", + "block.create.spout.tooltip.behaviour1": "_バケツ_や_瓶_のような_容器アイテム_を下に置くと、貯蔵された_液体_でそれを満たします。", "block.create.spout.tooltip.condition2": "液体自動化", "block.create.spout.tooltip.behaviour2": "_ベルト_や_デポ_の上に置かれたアイテム注液口は、その下を通過する_容器アイテム_に反応します。", "block.create.item_drain.tooltip": "アイテム排液口", - "block.create.item_drain.tooltip.summary": "_液体アイテム_を空にする格子付きデポ。", + "block.create.item_drain.tooltip.summary": "_液体アイテム_を空にする格子の付いたデポ。", "block.create.item_drain.tooltip.condition1": "液体排液", "block.create.item_drain.tooltip.behaviour1": "_バケツ_や_ボトル_などの_液体入り容器_を横から搬入すると、アイテム排液口はその_液体入り容器_に空にしようとします。その後、アイテムは反対側に排出されます。", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます。", - "item.create.handheld_blockzapper.tooltip": "携帯型ブロックザッパー", - "item.create.handheld_blockzapper.tooltip.summary": "離れた場所にブロックを設置または交換する新しいガジェット。", - "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_blockzapper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_配置_または_置換_します。", - "item.create.handheld_blockzapper.tooltip.control3": "スニークしながら右クリックしたとき。", - "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_を開きます。", - "item.create.handheld_worldshaper.tooltip": "携帯型ワールドシェーパー", "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作成する便利なツール。", "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", @@ -1295,15 +1270,12 @@ "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.deforester.tooltip": "デフォレスター", - "item.create.deforester.tooltip.summary": "一瞬で木を切り倒すことができる_輝く斧_。", + "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.filter.tooltip": "フィルター", "item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。", @@ -1320,17 +1292,17 @@ "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.behaviour1": "画面上のツールを使ってホログラムを配置します。", "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", - "item.create.schematic.tooltip.action1": "正確な_座標_を入力する_インターフェース_を開きます。", + "item.create.schematic.tooltip.action1": "正確な_座標_を入力する_インターフェース_を開きます", "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", - "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存するために使用されます。", + "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存できます。", "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", @@ -1343,28 +1315,28 @@ "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", "block.create.schematicannon.tooltip": "概略図砲", - "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。隣接するインベントリからのアイテムを自動搬入し、_火薬_を燃料として使用します。", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", + "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。隣接する収納ブロックからのアイテムを自動搬入し、_火薬_を燃料とします。", + "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", + "block.create.schematicannon.tooltip.behaviour1": "_インターフェース_を開きます。", "block.create.schematic_table.tooltip": "概略図テーブル", "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", - "block.create.schematic_table.tooltip.condition1": "空の概略図が与えられたとき", + "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", "item.create.goggles.tooltip": "ゴーグル", - "item.create.goggles.tooltip.summary": "有用な回転力の情報を視界に映す眼鏡。", + "item.create.goggles.tooltip.summary": "有用な_回転力_の_情報_を視界に映す眼鏡。", "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "設置された機械の_速度レベル_および、_機械_の_応力の影響_と_容量_を_色付きのインジケーター_で表示します。", + "item.create.goggles.tooltip.behaviour1": "設置された機械の_回転速度_および、_機械_の_応力への影響_と_許容量_を_色付きのインジケーター_で表示します。", "item.create.goggles.tooltip.condition2": "計器を見たとき", - "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの_速度_または_応力_に関する詳細情報を表示します。", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", + "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの_回転速度_または_応力_に関する詳細情報を表示します。", + "item.create.goggles.tooltip.condition3": "液体コンテナを見たとき", + "item.create.goggles.tooltip.behaviour3": "ブロックの_容量_と、その中に貯蔵されている_液体_の詳細情報を表示します。", "item.create.wrench.tooltip": "レンチ", - "item.create.wrench.tooltip.summary": "動的からくりに取り組むための便利なツール。コンポーネントの_回転_、_解体_、_設定_に使用できます。", + "item.create.wrench.tooltip.summary": "機械いじりに便利な道具。機械の_回転_、_解体_、_設定_に使います。", "item.create.wrench.tooltip.control1": "機械を右クリックしたとき", - "item.create.wrench.tooltip.action1": "操作した面に向かって、または面から離れるように機械を_回転_させます。", + "item.create.wrench.tooltip.action1": "操作した面に向かって、または面から離れるように_機械_を_回転_させます。", "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", "item.create.wrench.tooltip.action2": "_機械を分解_し、_インベントリ_に戻します。", @@ -1374,7 +1346,7 @@ "block.create.cuckoo_clock.tooltip": "鳩時計", "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい細工。", "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", - "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れにプレイヤーが_眠れるようになるとすぐ_に_アクティブ_になります。", + "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れに_プレイヤーが眠れる_時間になるとすぐに_再生_します。", "block.create.turntable.tooltip": "ターンテーブル", "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", @@ -1387,744 +1359,744 @@ "block.create.portable_fluid_interface.tooltip.behaviour2": "アクティブな接続を即座に_切断_します。", "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。", - "block.create.stockpile_switch.tooltip.condition1": "下限を下回ったとき", - "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信号を停止", + "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", + "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", + "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.adjustable_crate.tooltip": "可変クレート", - "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で制御できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", + "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", + "block.create.adjustable_crate.tooltip.behaviour1": "_インターフェース_を開きます。", "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.controller_rail.tooltip": "コントローラーレール", - "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる一方通行の_パワード_レール", + "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", "block.create.controller_rail.tooltip.condition1": "レッドストーン信号を受けたとき", - "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。強度の異なる2つのコントローラレールにレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", + "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した移動速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。2つのコントローラレールに強度の異なるレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", "item.create.sand_paper.tooltip": "紙やすり", "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": "_やる気_がみなぎる、一日の始まりに最適な飲み物。", - "item.create.refined_radiance.tooltip": "洗練された極光体", - "item.create.refined_radiance.tooltip.summary": "_吸収した輝き_から鍛造した色彩の化合物。", + "item.create.refined_radiance.tooltip": "高貴な光輝", + "item.create.refined_radiance.tooltip.summary": "_吸収した光輝_から鍛造した色彩素材。", "item.create.shadow_steel.tooltip": "シャドウスチール", - "item.create.shadow_steel.tooltip.summary": "_奈落の虚無_から鍛造した色彩の化合物。", + "item.create.shadow_steel.tooltip.summary": "_奈落の虚無_から鍛造した色彩素材。", "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": "2台のトロッコを連結します。それらは移動中に一定の距離を保とうします。", + "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "作業中です!", "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", - "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使用するたびに死にます。そう、いつでもね。", + "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使うたびに死にます。そう、いつでもね。", "create.tooltip.randomWipDescription2": "自己責任。", "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。*人差し指を振って*ちっちっちっ、解散!", "create.tooltip.randomWipDescription4": "このアイテムは10秒で自爆します。10、9、8 ...", "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", - "create.tooltip.randomWipDescription6": "このアイテムを使用することにより、お客様はここに免責事項に同意し、その条件に同意するものとします。", + "create.tooltip.randomWipDescription6": "このアイテムを使うことにより、お客様は免責事項に同意し、その条件を承諾するものとします。", "create.tooltip.randomWipDescription7": "これは君に向いていないかもしれない。あれはどう??", - "create.tooltip.randomWipDescription8": "それを使ったことをすぐ後悔する。", + "create.tooltip.randomWipDescription8": "それを使ったことをすぐ後悔するだろう。", "_": "->------------------------] Ponder Content [------------------------<-", - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exacly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", + "create.ponder.hold_to_ponder": "[%1$s] を長押しして思案画面を開く", + "create.ponder.subject": "このシーンの主題", + "create.ponder.pondering": "思案中...", + "create.ponder.identify_mode": "確認モードになっています.\n [%1$s] で一時停止を解除", + "create.ponder.associated": "関連項目", + "create.ponder.close": "閉じる", + "create.ponder.identify": "ブロック名を確認", + "create.ponder.next": "次のシーン", + "create.ponder.previous": "前のシーン", + "create.ponder.replay": "最初から", + "create.ponder.think_back": "戻る", + "create.ponder.slow_text": "熟考(スロー再生)", + "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", + "create.ponder.shared.rpm32": "32 RPM", + "create.ponder.shared.sneak_and": "スニーク +", + "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", + "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", + "create.ponder.shared.rpm8": "8 RPM", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm16_source": "動力源: 16 RPM", + "create.ponder.shared.rpm16": "16 RPM", + "create.ponder.tag.kinetic_sources": "原動機", + "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", + "create.ponder.tag.contraption_actor": "からくり構造部品", + "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", + "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", + "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", + "create.ponder.tag.logistics": "輸送機械", + "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", + "create.ponder.tag.movement_anchor": "からくり機械", + "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", + "create.ponder.tag.creative": "クリエイティブ限定", + "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", + "create.ponder.tag.kinetic_relays": "伝達機械", + "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", + "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", + "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", + "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", + "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", + "create.ponder.tag.decoration": "装飾", + "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", + "create.ponder.tag.kinetic_appliances": "作業機械", + "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", + "create.ponder.tag.redstone": "制御機械", + "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", + "create.ponder.tag.fluids": "液体制御機械", + "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", + + "create.ponder.adjustable_pulse_repeater.header": "可変パルスリピーターによる信号制御", + "create.ponder.adjustable_pulse_repeater.text_1": "可変パルスリピーターは信号を遅延し、短いパルスにして出力します", + "create.ponder.adjustable_pulse_repeater.text_2": "マウスホイールで遅延時間を調整できます", + "create.ponder.adjustable_pulse_repeater.text_3": "最大30分まで遅延時間を調整できます", + + "create.ponder.adjustable_repeater.header": "可変リピーターによる信号制御", + "create.ponder.adjustable_repeater.text_1": "可変リピーターは通常のレッドストーンリピーターと同様の動作をします", + "create.ponder.adjustable_repeater.text_2": "決められた時間だけ遅延します...", + "create.ponder.adjustable_repeater.text_3": "...そして同じ時間だけクールダウンします", + "create.ponder.adjustable_repeater.text_4": "マウスホイールで遅延時間を調整できます", + "create.ponder.adjustable_repeater.text_5": "最大30分まで遅延時間を調整できます", + + "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.andesite_tunnel.header": "安山岩トンネルの使い方", + "create.ponder.andesite_tunnel.text_1": "安山岩のトンネルは、ベルトを隠せます", + "create.ponder.andesite_tunnel.text_2": "安山岩のトンネルが横につながっていると...", + "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", + "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", + + "create.ponder.basin.header": "鉢によるアイテム加工", + "create.ponder.basin.text_1": "鉢には材料となるアイテムや液体を入れられます", + "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_9": "未処理のアイテムが搬出されないように、フィルターが必要になる場合があります", + + "create.ponder.bearing_modes.header": ":メカニカルベアリングの動作モード", + "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_connector.header": "メカニカルベルトの使い方", + "create.ponder.belt_connector.text_1": "メカニカルベルトを持って2つのシャフトを右クリックすると、シャフトにベルトコンベアを繋げて設置されます", + "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_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_transport.header": "メカニカルベルトによる運搬", + "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_2": "その為には、ブレイズに燃料を与える必要があります", + "create.ponder.blaze_burner.text_3": "ブレイズケーキを与えると、バーナーはさらに強力な火力を出せます", + "create.ponder.blaze_burner.text_4": "供給作業は、デプロイヤーやメカニカルアームで自動化できます", + + "create.ponder.brass_funnel.header": "真鍮ファンネル", + "create.ponder.brass_funnel.text_1": "安山岩ファンネルでは、1回につき1つのアイテムしか搬出できません", + "create.ponder.brass_funnel.text_2": "真鍮ファンネルは、最大で1スタックのアイテムを搬出できます", + "create.ponder.brass_funnel.text_3": "フィルタースロットを見ながらスクロールすると、取り出すアイテム数を正確に調整できます", + "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_5": "通過するアイテムが複数の口から搬出できる場合は、モードによってどのように搬出されるかが決まります", + "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮製トンネルは接続されます", + "create.ponder.brass_tunnel.text_7": "搬入したアイテムは、接続されているすべての搬出口に分配されます", + "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.text_11": "アイテムはグループ内の全てのトンネルがアイテムを搬入できる場合のみ通過を許可します", + "create.ponder.brass_tunnel_modes.text_12": "これにより、影響を受ける全てのベルトに同じ割合でアイテムを供給できます", + "create.ponder.brass_tunnel_modes.text_2": "「スタック分割」は、アイテムを通せる搬出口の間でアイテムスタックを均等に分配しようとします", + "create.ponder.brass_tunnel_modes.text_3": "搬出口がアイテムを通せない場合はスキップされます ", + "create.ponder.brass_tunnel_modes.text_4": "「強制スタック分割」は搬出をスキップせず、それができるようになるまで待機します", + "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_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_dual.header": "列車を組み立てる", + "create.ponder.cart_assembler_dual.text_1": "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_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.chain_drive.header": "ケース入りチェーンドライブによる回転力の伝達", + "create.ponder.chain_drive.text_1": "チェーンドライブは、一列に並べると回転を伝達します", + "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": "信号を受けている時は、列内の他のチェーンドライブに伝達される速度が2倍になります", + "create.ponder.chain_gearshift.text_3": "信号を受けているチェーンギアシフトが動力源に無い場合、速度が半分になります", + "create.ponder.chain_gearshift.text_4": "いずれの場合も、列内のチェーンドライブは常に「信号入りチェーンギアシフト」の2倍の速度で動作します", + "create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます", + "create.ponder.chain_gearshift.text_6": "12 RPM", + + "create.ponder.chute.header": "シュートでの下方向へ運搬", + "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", + "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_3": "ブロックで詰まっている端では、アイテムを側面から搬出入する必要があります", + + "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", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します", + "create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます", + "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などでくっついていないことを確認してください", + "create.ponder.clockwork_bearing.text_8": "2つ目の構造物は分針として回転します", + + "create.ponder.clutch.header": "クラッチによる回転力の制御", + "create.ponder.clutch.text_1": "クラッチは直線に回転を伝達します", + "create.ponder.clutch.text_2": "レッドストーン信号を受けると、回転の伝達を停止します", + + "create.ponder.cog_speedup.header": "歯車による回転速度変化", + "create.ponder.cog_speedup.text_1": "大小の歯車は斜めに接続できます", + "create.ponder.cog_speedup.text_2": "大きな歯車から歯車に接続すると、伝達される回転速度が2倍になります", + "create.ponder.cog_speedup.text_3": "逆に接続すると、伝達される回転速度が半分になります", + + "create.ponder.cogwheel.header": "歯車による回転力の伝達", + "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", + "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", + + "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", + "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで調整できる原動機です", + "create.ponder.creative_motor.text_2": "背面パネルを見てスクロールすると、モーターの回転速度を変更できます", + + "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", + "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.deployer.header": "デプロイヤーの使い方", + "create.ponder.deployer.text_1": "回転力を供給したデプロイヤーは、プレイヤーの動作を模倣できます", + "create.ponder.deployer.text_10": "前面へアイテムを右クリックして、アイテムを搬出入できます", + "create.ponder.deployer.text_11": "自動でアイテムを搬出入することもできます", + "create.ponder.deployer.text_12": "デプロイヤーはフィルタースロットを持っています", + "create.ponder.deployer.text_13": "フィルターを設定すると、一致するアイテムを持っている時だけ稼働します", + "create.ponder.deployer.text_14": "また、フィルターに一致するアイテムのみが搬入されるようになり...", + "create.ponder.deployer.text_15": "...一致しないアイテムのみが搬出されます", + "create.ponder.deployer.text_2": "動作は、常に前方2ブロックの位置へ行われます", + "create.ponder.deployer.text_3": "真正面のブロックが邪魔になることはありません", + "create.ponder.deployer.text_4": "デプロイヤーは以下の動作に使えます", + "create.ponder.deployer.text_5": "ブロックの設置", + "create.ponder.deployer.text_6": "アイテムの使用", + "create.ponder.deployer.text_7": "ブロックの使用", + "create.ponder.deployer.text_8": "ブロックの収穫", + "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_modes.header": "デプロイヤーのモード", + "create.ponder.deployer_modes.text_1": "デフォルトでは、デプロイヤーは右クリックの動作を模倣します", + "create.ponder.deployer_modes.text_2": "レンチを使えば、左クリックの動作を模倣するように設定できます", + + "create.ponder.deployer_redstone.header": "レッドストーン信号によるデプロイヤーの制御", + "create.ponder.deployer_redstone.text_1": "レッドストーン信号を受けている間、デプロイヤーは稼働しません", + "create.ponder.deployer_redstone.text_2": "デプロイヤーは停止する前に、開始したサイクルは終了させます", + "create.ponder.deployer_redstone.text_3": "その為、オフのパルス信号を使って丁度1サイクルだけ稼働させられます", + + "create.ponder.depot.header": "デポの使い方", + "create.ponder.depot.text_1": "デポは動かないメカニカルベルトのようなブロックです", + "create.ponder.depot.text_2": "右クリックして、手動でのアイテム搬出入できます", + "create.ponder.depot.text_3": "メカニカルベルトのように、載せたアイテムを加工できます", + "create.ponder.depot.text_4": "また、メカニカルアームにアイテムを供給することもできます", + + "create.ponder.empty_blaze_burner.header": "空のブレイズバーナーの使い方", + "create.ponder.empty_blaze_burner.text_1": "空のバーナーでブレイズを右クリックし捕獲できます", + "create.ponder.empty_blaze_burner.text_2": "また、ブレイズはスポーンブロックから直接捕獲することもできます", + "create.ponder.empty_blaze_burner.text_3": "これで、様々な機械で利用する理想的な熱源が得られます", + "create.ponder.empty_blaze_burner.text_4": "空のブレイズバーナーは火打石と打ち金を使って火を付ければ装飾にも使えます", + "create.ponder.empty_blaze_burner.text_5": "しかし、これは加工用の熱源には適していません", + + "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.text_6": "この気流を使って、いくつかの面白い加工ができます", + "create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります", + "create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます", + + "create.ponder.fan_source.header": "ケース入りファンによる回転力の生成", + "create.ponder.fan_source.text_1": "ファンを熱源に向けて設置すると、回転力を生成できます", + "create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます", + + "create.ponder.flywheel.header": "勢車による回転力の生成", + "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、勢車が必要です", + "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", + "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", + + "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_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_redstone.header": "レッドストーンコントロール", + "create.ponder.funnel_redstone.text_1": "レッドストーン信号によって、ファンネルが動作を防げます", + + "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.furnace_engine.header": "かまどエンジンによる回転力の生成", + "create.ponder.furnace_engine.text_1": "かまどエンジンは、取り付けたかまどの稼働中に回転力を生成します", + "create.ponder.furnace_engine.text_2": "この回転力は、非常に大きな応力許容量を持っています", + "create.ponder.furnace_engine.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", + + "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_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_4": "キャリッジへ伝達する回転力も同じルールが適用されます", + + "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": "ガントリーシャフトは、ガントリー機構の基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", + "create.ponder.gantry_shaft.text_2": "ガントリーによるからくりは、取り付けたブロックを動かせます", + + "create.ponder.gearbox.header": "ギアボックスによる回転力の伝達", + "create.ponder.gearbox.text_1": "回転軸の向きを変えようとすると、すぐに機構がかさばってしまいます", + "create.ponder.gearbox.text_2": "これをコンパクトにしたものがギアボックスです", + "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.hand_crank.header": "ハンドクランクによる回転力の生成", + "create.ponder.hand_crank.text_1": "ハンドクランクは手動で回転力を生み出す機械です", + "create.ponder.hand_crank.text_2": "右クリックし続けると、反時計回りに回転します", + "create.ponder.hand_crank.text_3": "回転速度は比較的速めです", + "create.ponder.hand_crank.text_4": "スニークしながら右クリックし続けると、時計回りに回転します", + + "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", + "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", + "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", + + "create.ponder.linear_chassis_attachment.header": "リニアシャーシによるブロックの取り付け", + "create.ponder.linear_chassis_attachment.text_1": "リニアシャーシの特定の面は特殊な粘着面にできます", + "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_6": "CTRLを押しながらスクロールすると、接続している全てのシャーシブロックの範囲を調整できます", + "create.ponder.linear_chassis_attachment.text_7": "他の面にブロックを接着するには、超粘着剤を使う必要があります", + "create.ponder.linear_chassis_attachment.text_8": "この仕組みを使えば、どんな形の構造物もからくりとして動かせます", + + "create.ponder.linear_chassis_group.header": "リニアシャーシをグループで動かす", + "create.ponder.linear_chassis_group.text_1": "リニアシャーシは、隣の同じシャーシブロックと接続します", + "create.ponder.linear_chassis_group.text_2": "からくり機械で1つを動かすと、他のリニアシャーシも一緒に動きます", + "create.ponder.linear_chassis_group.text_3": "異なる種類のシャーシや、別の方向を向いているシャーシは接続されません", + + "create.ponder.mechanical_arm.header": "メカニカルアームの設定", + "create.ponder.mechanical_arm.text_1": "メカニカルアームを設置する前に、搬入元と搬出先を設定しなければなりません", + "create.ponder.mechanical_arm.text_2": "特定のブロックをターゲットと設定するには、アームを持ったまま右クリックしましょう", + "create.ponder.mechanical_arm.text_3": "搬入元(青)と搬出先(オレンジ)を切り替えるには、もう1度右クリックします", + "create.ponder.mechanical_arm.text_4": "アームを持ったまま左クリックすると選択が解除されます", + "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定されたブロックをターゲットにします", + "create.ponder.mechanical_arm.text_6": "範囲内であれば、複数の搬入元と搬出先を設定できます", + "create.ponder.mechanical_arm.text_7": "しかし、あらゆる機械やブロックをターゲットにできるわけではありません", + "create.ponder.mechanical_arm.text_8": "そんな時はファンネルやデポを経由させましょう", + + "create.ponder.mechanical_arm_filtering.header": "メカニカルアームの搬出フィルタリング", + "create.ponder.mechanical_arm_filtering.text_1": "搬入元", + "create.ponder.mechanical_arm_filtering.text_2": "搬出先", + "create.ponder.mechanical_arm_filtering.text_3": "フィルターを使ってアームが搬出入するアイテムを制限したいと思っても", + "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体には、フィルタリングオプションがありません", + "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮製ファンネル等をターゲットにした場合、アームにそのフィルターが反映されます", + "create.ponder.mechanical_arm_filtering.text_6": "アームは賢いので、搬出できないアイテムを拾うことはありません", + + "create.ponder.mechanical_arm_modes.header": "メカニカルアームの分配モード", + "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_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.text_2": "ただし、停止する前に開始した搬出入が終わるまで稼働し続けます", + "create.ponder.mechanical_arm_redstone.text_3": "それを利用し、反転したパルス信号を使って1回だけ稼働させられます", + + "create.ponder.mechanical_bearing.header": "メカニカルベアリングによる構造物の移動", + "create.ponder.mechanical_bearing.text_1": "メカニカルベアリングは、前方にブロックを取り付けられます", + "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_3": "動かすためにはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", + "create.ponder.mechanical_crafter.text_4": "完成品は外に向かうベルトが指す方向にある収納ブロックに搬出されます", + "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを動かすには回転力が必要です", + "create.ponder.mechanical_crafter.text_6": "前面を右クリックすると手動でアイテムを搬入できます", + "create.ponder.mechanical_crafter.text_7": "1つのクラフターに続くベルトの全スロットにアイテムが入ると、クラフトが開始されます", + "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_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_drill.header": "メカニカルドリルでブロックを破壊する", + "create.ponder.mechanical_drill.text_1": "メカニカルドリルは回転力を供給すると、目の前のブロックを破壊します", + "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_2": "...ドリルは、移動先のブロックを破壊します", + + "create.ponder.mechanical_harvester.header": "からくりに組み込んでのメカニカルハーベスターの使い方", + "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_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", + + "create.ponder.mechanical_piston.header": "メカニカルピストンによる構造物の移動", + "create.ponder.mechanical_piston.text_1": "メカニカルピストンは、前方にあるブロックを動かせます", + "create.ponder.mechanical_piston.text_2": "移動の速度と方向は、供給する回転力に依存します", + "create.ponder.mechanical_piston.text_3": "粘着性メカニカルピストンは、取り付けられたブロックを引き戻せます", + + "create.ponder.mechanical_piston_modes.header": "メカニカルピストンの動作モード", + "create.ponder.mechanical_piston_modes.text_1": "ピストンの動作が止まると、移動した構造物はブロックへ戻ります", + "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定できます", + + "create.ponder.mechanical_plough.header": "からくりに組み込んでのメカニカルプラウの使い方", + "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_press.header": "メカニカルプレスによるアイテム加工", + "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置されたアイテムを加工できます", + "create.ponder.mechanical_press.text_2": "加工するアイテムは下に落としたり、プレス機の下にあるデポに置いたり", + "create.ponder.mechanical_press.text_3": "アイテムがベルトへ供給されると...", + "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.text_3": "これらのレシピの中には、ブレイズバーナーの熱を必要とするものがあります", + "create.ponder.mechanical_press_compacting.text_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", + + "create.ponder.mechanical_saw_breaker.header": "メカニカルソーによる伐採", + "create.ponder.mechanical_saw_breaker.text_1": "メカニカルソーは回転力を供給すると、目の前の木を伐採できます", + "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.text_1": "上向きのメカニカルソーは、様々なアイテムを加工できます", + "create.ponder.mechanical_saw_processing.text_2": "加工されたアイテムは、常にソーの回転方向とは逆に移動します", + "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_4": "しばらく待った後、右クリックで完成品を取り出せます", + "create.ponder.millstone.text_5": "加工品を搬出して自動化することもできます", + + "create.ponder.nixie_tube.header": "ニキシー管の使い方", + "create.ponder.nixie_tube.text_1": "ニキシー管は受けたレッドストーン信号の強度を表示します", + "create.ponder.nixie_tube.text_2": "金床で名付けた名札を使って、好きな文字を表示することもできます", + + "create.ponder.piston_pole.header": "ピストン延長ポール", + "create.ponder.piston_pole.text_1": "ポールが無いとメカニカルピストンは動きません", + "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", + + "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", + "create.ponder.portable_storage_interface.text_1": "稼働中のからくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", + "create.ponder.portable_storage_interface.text_2": "この装置は、からくりを停止することなく、収納ブロックと搬出入できます", + "create.ponder.portable_storage_interface.text_3": "1~2ブロックの間隔をあけて、二つ目のインターフェースを設置しましょう", + "create.ponder.portable_storage_interface.text_4": "両者がすれ違うたびに接続されます", + "create.ponder.portable_storage_interface.text_5": "接続されている間、設置されている方のインターフェースはからくり内全ての収納ブロックのように振る舞います", + "create.ponder.portable_storage_interface.text_6": "アイテムを搬入したり...", + "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.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_4": "パワードラッチは、手動でも切り替えられます", + + "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_3": "何度も信号を送るとオンとオフと繰り返します", + "create.ponder.powered_toggle_latch.text_4": "パワードトグルラッチは、手動で切り替えることもできます", + + "create.ponder.pulse_repeater.header": "パルスリピーターによる信号制御", + "create.ponder.pulse_repeater.text_1": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", + + "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", + "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同種のシャーシブロックと繋がります", + "create.ponder.radial_chassis.text_2": "からくり機械によって1つが動かされると、他も一緒に動きます", + "create.ponder.radial_chassis.text_3": "ラジアルシャーシの側面を粘着面にできます", + "create.ponder.radial_chassis.text_4": "もう一度クリックすると、他の全ての面も粘着面になります", + "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_9": "どの粘着面とも繋がっていないブロックはくっつきません", + + "create.ponder.redstone_contact.header": "レッドストーンコンタクト", + "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": "モードを切り替えるには、スニークしながら右クリックします", + "create.ponder.redstone_link.text_3": "レンチをもって右クリックでも、モードを切り替えられます", + "create.ponder.redstone_link.text_4": "受信機は、128ブロック以内の送信機のレッドストーン信号を受信します", + "create.ponder.redstone_link.text_5": "2つのスロットにアイテムを設定すると、周波数を設定できます", + "create.ponder.redstone_link.text_6": "周波数が一致するリンク同士のみが送受信を行います", + + "create.ponder.rope_pulley.header": "ローププーリーによる構造物の移動", + "create.ponder.rope_pulley.text_1": "ローププーリーは、回転力を供給するとブロックを垂直に動かせます", + "create.ponder.rope_pulley.text_2": "移動の方向と速度は、供給される回転力に依存します", + + "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": "プーリーが稼働している間は動かせないことに注意してください", + + "create.ponder.rope_pulley_modes.header": "ローププーリーの動作モード", + "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", + "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定することも、動かし始めた場所でのみブロックに戻るように設定することもできます", + + "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", + "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", + "create.ponder.rotation_speed_controller.text_2": "側面のパネルを見てスクロールすると、伝達する回転速度を調整できます", + + "create.ponder.sail.header": "帆による風車の組み立て", + "create.ponder.sail.text_1": "帆は、風車を作るのに便利なブロックです", + "create.ponder.sail.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", + "create.ponder.sail.text_3": "染料で右クリックして染色できます", + "create.ponder.sail.text_4": "ハサミで右クリックすると、フレームに戻せます", + + "create.ponder.sail_frame.header": "帆フレームによる風車の組み立て", + "create.ponder.sail_frame.text_1": "帆フレームは、風車を作るのに便利なブロックです", + "create.ponder.sail_frame.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", + + "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.shaft.header": "シャフトによる回転力の伝達", + "create.ponder.shaft.text_1": "シャフトはまっすぐに回転を伝達します", + + "create.ponder.shaft_casing.header": "ケース入りシャフト", + "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.speedometer.header": "速度メーターによる動力情報の監視", + "create.ponder.speedometer.text_1": "速度メーターは、接続された機械の現在の回転速度を表示します", + "create.ponder.speedometer.text_2": "エンジニアのゴーグルを装着していると、より詳細な情報を得られます", + "create.ponder.speedometer.text_3": "コンパレータは、速度メーターの測定値に応じたレッドストーン信号を出力します", + + "create.ponder.stabilized_bearings.header": "からくりの角度の固定", + "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているとき ...", + "create.ponder.stabilized_bearings.text_2": "...自身の角度を真っ直ぐに保とうとします", + "create.ponder.stabilized_bearings.text_3": "ベアリングにブロックを取り付けると", + "create.ponder.stabilized_bearings.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.super_glue.header": "超粘着剤によるブロックの取り付け", + "create.ponder.super_glue.text_1": "超粘着剤は、任意の2つのブロックの間に塗れます", + "create.ponder.super_glue.text_2": "貼り付けたブロックは、からくりに組み込まれると一緒に動きます", + "create.ponder.super_glue.text_3": "超粘着剤をオフハンドで持つと...", + "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", + "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", + + "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.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_10": "スタック数を設定すると、保持しているスタックがその量に達したときのみ射出するようになります", + "create.ponder.weighted_ejector.text_11": "他のエンティティが射出機を踏むと、いつでも射出機が稼働します", + "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_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.text_1": "真鍮製トンネルと組み合わせて、アイテムスタックを特定の量だけ分割できます", + "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.text_1": "風車ベアリングは手前にブロックを取り付けられます", + "create.ponder.windmill_source.text_2": "帆とみなされるブロックを十分な数取り付けられていれば、風車として機能します", + "create.ponder.windmill_source.text_3": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", + "create.ponder.windmill_source.text_4": "回転速度は帆ブロックの数で決まります", + "create.ponder.windmill_source.text_5": "レンチを使って回転方向を変えられます", + "create.ponder.windmill_source.text_6": "いつでもベアリングを右クリックすれば、回転を停止させて構造物を組み立てなおせます", + + "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/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 560628b7e..ee9042656 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: 684", + "_": "Missing Localizations: 706", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", - "item.create.deforester": "산림파괴자", "item.create.dough": "반죽", "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 장치", "item.create.goggles": "엔지니어의 고글", "item.create.golden_sheet": "금 판", - "item.create.handheld_blockzapper": "휴대용 블록발사기", "item.create.handheld_worldshaper": "휴대용 세계편집기", "item.create.honey_bucket": "꿀 양동이", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", "advancement.create.chromatic_age": "양극 시대", "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", - "advancement.create.zapper": "나는 스타일있게 건축해", - "advancement.create.zapper.desc": "당신의 건축을 도와줄 멋진 레이저 건, 휴대용 블록발사기를 만드세요.", - "advancement.create.upgraded_zapper": "화려한 빛이 날 감싸네", - "advancement.create.upgraded_zapper.desc": "완전히 업그레이드된 휴대용 블록발사기를 만들고 써보세요.", "advancement.create.wand_of_symmetry": "빛나는 건축", "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.deforester": "빛나는 벌목", - "advancement.create.deforester.desc": "산림파괴자를 만들고, 숲에게 작별인사를 하세요.", "advancement.create.extendo_grip": "띠요오옹!", "advancement.create.extendo_grip.desc": "외장형 연장 팔을 드세요.", "advancement.create.dual_extendo_grip": "궁극의 띠용!", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "유형 자동 조합", "create.recipe.block_cutting": "블 절단", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "휴대용 블록발사기 업그레이드", "create.recipe.sandpaper_polishing": "사포질", "create.recipe.mystery_conversion": "?", "create.recipe.spout_filling": "채우기", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Z좌표를 따라", "create.orientation.alongX": "X좌표를 따라", - "create.gui.blockzapper.title": "휴대용 블록발사기", - "create.gui.blockzapper.replaceMode": "대체 모드", - "create.gui.blockzapper.searchDiagonal": "대각선을 따라", - "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", - "create.gui.blockzapper.range": "범위", - "create.gui.blockzapper.needsUpgradedAmplifier": "업그레이드가 필요합니다", - "create.gui.blockzapper.patternSection": "패턴 설정", - "create.gui.blockzapper.pattern.solid": "원형", - "create.gui.blockzapper.pattern.checkered": "체스판", - "create.gui.blockzapper.pattern.inversecheckered": "반전된 체스판", - "create.gui.blockzapper.pattern.chance25": "랜덤으로 25% 채우기", - "create.gui.blockzapper.pattern.chance50": "랜덤으로 50% 채우기", - "create.gui.blockzapper.pattern.chance75": "랜덤으로 75% 채우기", "create.gui.terrainzapper.title": "휴대용 세계편집기", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "설치방식", "create.gui.terrainzapper.placement.merged": "선택한 블록에", "create.gui.terrainzapper.placement.attached": "선택한 블록 옆에", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "정육면체", "create.gui.terrainzapper.brush.sphere": "구", "create.gui.terrainzapper.brush.cylinder": "원통", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "도구", "create.gui.terrainzapper.tool.fill": "채우기", "create.gui.terrainzapper.tool.place": "설치", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "평탄화", "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", - - "create.blockzapper.usingBlock": "현재 블록: %1$s", - "create.blockzapper.componentUpgrades": "부품 업그레이드:", - "create.blockzapper.component.body": "몸통", - "create.blockzapper.component.amplifier": "증폭기", - "create.blockzapper.component.accelerator": "가속기", - "create.blockzapper.component.retriever": "회수기", - "create.blockzapper.component.scope": "스코프", - "create.blockzapper.componentTier.none": "없음", - "create.blockzapper.componentTier.brass": "황동", - "create.blockzapper.componentTier.chromatic": "혼돈의 결정체", - "create.blockzapper.leftClickToSet": "좌클릭으로 블록 설정하기", - "create.blockzapper.empty": "블록이 없습니다!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "광산 수레는 최대 2개의 커플링만 가질 수 있습니다", "create.minecart_coupling.unloaded": "열차 일부분이 로딩되지 않은 청크에 있는 것 같습니다", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "슬라임이 철퍽거림", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "확인 효과음", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "블록이 순간이동됨", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함", "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "압착기가 가동됨", - "create.subtitle.blockzapper_deny": "취소 효과음", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블록을 교체, 설치하는 놀라운 도구입니다.", - "item.create.handheld_blockzapper.tooltip.control1": "블록을 보고 좌클릭", - "item.create.handheld_blockzapper.tooltip.action1": "이 도구로 설치할 블록을 설정합니다.", - "item.create.handheld_blockzapper.tooltip.control2": "블록을 보고 우클릭", - "item.create.handheld_blockzapper.tooltip.action2": "해당 위치에 설정된 블록으로 설치하거나 교체합니다.", - "item.create.handheld_blockzapper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _창_을 엽니다.", - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", "item.create.handheld_worldshaper.tooltip.control1": "블록을 보고 좌클릭", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "수 초 만에 나무를 쓰러뜨리는 _놀라운_ _도끼_입니다.", - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "띠요오옹! 사용자의 _사거리_를 늘려줍니다.", "item.create.extendo_grip.tooltip.condition1": "다른 손에 있을 때", 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 fd213b6f6..a1da4d3be 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: 1561", + "_": "Missing Localizations: 1570", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "Ontbosser", "item.create.dough": "Deeg", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", @@ -466,8 +465,7 @@ "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "Ingenieur's Bril", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Blokzapper", - "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper", "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.zapper": "UNLOCALIZED: Building With Style", - "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", - "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", "create.recipe.block_cutting": "Blok Zagen", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "Blokzapper", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Langs Z-as", "create.orientation.alongX": "Langs X-as", - "create.gui.blockzapper.title": "Blokzapper", - "create.gui.blockzapper.replaceMode": "Vervang Modus", - "create.gui.blockzapper.searchDiagonal": "Volg Diagonalen", - "create.gui.blockzapper.searchFuzzy": "Negeer materiaal granzen", - "create.gui.blockzapper.range": "Verspreid bereik", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benodigd een opgewaardeerde versterker", - "create.gui.blockzapper.patternSection": "Patronen", - "create.gui.blockzapper.pattern.solid": "Vast", - "create.gui.blockzapper.pattern.checkered": "Schaakbord", - "create.gui.blockzapper.pattern.inversecheckered": "Omgekeerd Schaakbord", - "create.gui.blockzapper.pattern.chance25": "25% Gedraaid", - "create.gui.blockzapper.pattern.chance50": "50% Gedraaid", - "create.gui.blockzapper.pattern.chance75": "75% Gedraaid", - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - - "create.blockzapper.usingBlock": "Gebruikt: %1$s", - "create.blockzapper.componentUpgrades": "Component Upgrades:", - "create.blockzapper.component.body": "Lichaam", - "create.blockzapper.component.amplifier": "Versterker", - "create.blockzapper.component.accelerator": "Accelerator", - "create.blockzapper.component.retriever": "Ontvanger", - "create.blockzapper.component.scope": "Omvang", - "create.blockzapper.componentTier.none": "Geen", - "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", - "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Klik met links op een Blok om een Materiaal te kiezen", - "create.blockzapper.empty": "De Blokken zijn op!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative ding", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "UNLOCALIZED: Blockzapper zaps", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining boop", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", "item.create.wand_of_symmetry.tooltip.action3": "Opent de _Configuratie_ _Interface_", - "item.create.handheld_blockzapper.tooltip": "BLOKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Ongebruikelijke gadget voor het plaatsen en verwissel van blokken over een afstand", - "item.create.handheld_blockzapper.tooltip.control1": "L-Klik op een Blok", - "item.create.handheld_blockzapper.tooltip.action1": "Zet het doelwit blok om naar het geselecteerde blok.", - "item.create.handheld_blockzapper.tooltip.control2": "R-Klik op een Blok", - "item.create.handheld_blockzapper.tooltip.action2": "_Plaatst_ of _Vervangt_ het doelwit blok.", - "item.create.handheld_blockzapper.tooltip.control3": "R-Click while Sneaking", - "item.create.handheld_blockzapper.tooltip.action3": "Opent de _Configuratie_ _Interface_", - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Wanneer gebruikt op Kiemplanten", "item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte", - "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", - "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant axe_ able to chop down trees in a split second.", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json new file mode 100644 index 000000000..b907c7c33 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -0,0 +1,2103 @@ +{ + "_": "Missing Localizations: 31", + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "Akacjowe okno", + "block.create.acacia_window_pane": "Akacjowa szyba okienna", + "block.create.adjustable_chain_gearshift": "Regulowany przekładnik łańcuchowy", + "block.create.adjustable_crate": "Regulowana skrzynka", + "block.create.adjustable_pulse_repeater": "Regulowany przekaźnik pulsu", + "block.create.adjustable_repeater": "Regulowany przekaźnik", + "block.create.analog_lever": "Dźwignia analogowa", + "block.create.andesite_belt_funnel": "Andezytowy lejek taśmowy", + "block.create.andesite_bricks": "Andezytowe cegły", + "block.create.andesite_bricks_slab": "Andezytowa ceglana płyta", + "block.create.andesite_bricks_stairs": "Andezytowe ceglane schody", + "block.create.andesite_bricks_wall": "Andezytowy ceglany murek", + "block.create.andesite_casing": "Andezytowa obudowa", + "block.create.andesite_cobblestone": "Andezytowy bruk", + "block.create.andesite_cobblestone_slab": "Andezytowa brukowa płyta", + "block.create.andesite_cobblestone_stairs": "Andezytowe brukowe schody", + "block.create.andesite_cobblestone_wall": "Andezytowy brukowy murek", + "block.create.andesite_encased_shaft": "Andezytowy izolowany wał", + "block.create.andesite_funnel": "Andezytowy lejek", + "block.create.andesite_pillar": "Andezytowy filar", + "block.create.andesite_tunnel": "Andezytowy tunel", + "block.create.basin": "Tygiel", + "block.create.belt": "Taśma", + "block.create.birch_window": "Brzozowe okno", + "block.create.birch_window_pane": "Brzozowa szyba okienna", + "block.create.black_sail": "Czarny żagiel", + "block.create.black_seat": "Czarne siedzenie", + "block.create.black_valve_handle": "Czarne pokrętło", + "block.create.blaze_burner": "Płomienny palnik", + "block.create.blue_sail": "Niebieski żagiel", + "block.create.blue_seat": "Niebieskie siedzenie", + "block.create.blue_valve_handle": "Niebieskie pokrętło", + "block.create.brass_belt_funnel": "Mosiężny lejek taśmowy", + "block.create.brass_block": "Blok mosiądzu", + "block.create.brass_casing": "Mosiężna obudowa", + "block.create.brass_encased_shaft": "Mosiężny izolowany wał", + "block.create.brass_funnel": "Mosiężny lejek", + "block.create.brass_tunnel": "Mosiężny tunel", + "block.create.brown_sail": "Brązowy żagiel", + "block.create.brown_seat": "Brązowe siedzenie", + "block.create.brown_valve_handle": "Brązowe pokrętło", + "block.create.cart_assembler": "Monter wagoników", + "block.create.chiseled_dark_scoria": "Rzeźbiony ciemny żużel", + "block.create.chiseled_dolomite": "Rzeźbiony dolomit", + "block.create.chiseled_gabbro": "Rzeźbione gabro", + "block.create.chiseled_limestone": "Rzeźbiony wapień", + "block.create.chiseled_scoria": "Rzeźbiony żużel", + "block.create.chiseled_weathered_limestone": "Rzeźbiony zwietrzały wapień", + "block.create.chocolate": "Czekolada", + "block.create.chute": "Zsyp", + "block.create.clockwork_bearing": "Mechanizm zegarowy", + "block.create.clutch": "Sprzęgło", + "block.create.cogwheel": "Koło zębate", + "block.create.content_observer": "Detektor zawartości", + "block.create.controller_rail": "Tory sterujące", + "block.create.copper_block": "Blok miedzi", + "block.create.copper_casing": "Miedziana Obudowa", + "block.create.copper_ore": "Ruda miedzi", + "block.create.copper_shingles": "Miedziane dachówki", + "block.create.copper_tiles": "Miedziane kafelki", + "block.create.copper_valve_handle": "Miedziane pokrętło", + "block.create.creative_crate": "Kreatywna skrzynka", + "block.create.creative_fluid_tank": "Kreatywny zbiornik", + "block.create.creative_motor": "Kreatywny silnik", + "block.create.crimson_window": "Szkarłatne okno", + "block.create.crimson_window_pane": "Szkarłatna szyba okienna", + "block.create.crushing_wheel": "Koło kruszące", + "block.create.crushing_wheel_controller": "Sterownik koła kruszącego", + "block.create.cuckoo_clock": "Zegar z kukułką", + "block.create.cyan_sail": "Błękitny żagiel", + "block.create.cyan_seat": "Błękitne siedzenie", + "block.create.cyan_valve_handle": "Błękitne pokrętło", + "block.create.dark_oak_window": "Ciemnodębowe okno", + "block.create.dark_oak_window_pane": "Ciemnodębowa szyba okienna", + "block.create.dark_scoria": "Ciemny żużel", + "block.create.dark_scoria_bricks": "Ciemne żużlowe cegły", + "block.create.dark_scoria_bricks_slab": "Ciemna żużlowa ceglana płyta", + "block.create.dark_scoria_bricks_stairs": "Ciemne żużlowe ceglane schody", + "block.create.dark_scoria_bricks_wall": "Ciemny żużlowy ceglany murek", + "block.create.dark_scoria_cobblestone": "Ciemny żużlowy bruk", + "block.create.dark_scoria_cobblestone_slab": "Ciemna żużlowa płyta", + "block.create.dark_scoria_cobblestone_stairs": "Ciemne żużlowe schody", + "block.create.dark_scoria_cobblestone_wall": "Ciemny żużlowy murek", + "block.create.dark_scoria_pillar": "Ciemny żużlowy filar", + "block.create.deployer": "Aplikator", + "block.create.depot": "Składnica", + "block.create.diorite_bricks": "Diorytowe cegły", + "block.create.diorite_bricks_slab": "Diorytowa ceglana płyta", + "block.create.diorite_bricks_stairs": "Diorytowe ceglane schody", + "block.create.diorite_bricks_wall": "Diorytowy ceglany murek", + "block.create.diorite_cobblestone": "Diorytowy bruk", + "block.create.diorite_cobblestone_slab": "Diorytowa brukowa płyta", + "block.create.diorite_cobblestone_stairs": "Diorytowe brukowe schody", + "block.create.diorite_cobblestone_wall": "Diorytowy brukowy murek", + "block.create.diorite_pillar": "Diorytowy filar", + "block.create.dolomite": "Dolomit", + "block.create.dolomite_bricks": "Dolomitowe cegły", + "block.create.dolomite_bricks_slab": "Dolomitowa ceglana płyta", + "block.create.dolomite_bricks_stairs": "Dolomitowe ceglane schody", + "block.create.dolomite_bricks_wall": "Dolomitowy ceglany murek", + "block.create.dolomite_cobblestone": "Dolomitowy bruk", + "block.create.dolomite_cobblestone_slab": "Dolomitowa brukowa płyta", + "block.create.dolomite_cobblestone_stairs": "Dolomitowe brukowe schody", + "block.create.dolomite_cobblestone_wall": "Dolomitowy brukowy murek", + "block.create.dolomite_pillar": "Dolomitowy filar", + "block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy", + "block.create.encased_fan": "Izolowany wiatrak", + "block.create.encased_fluid_pipe": "Izolowana rura", + "block.create.fancy_andesite_bricks": "Eleganckie andezytowe cegły", + "block.create.fancy_andesite_bricks_slab": "Elegancka andezytowa ceglana płyta", + "block.create.fancy_andesite_bricks_stairs": "Eleganckie andezytowe ceglane schody", + "block.create.fancy_andesite_bricks_wall": "Elegancki andezytowy ceglany murek", + "block.create.fancy_dark_scoria_bricks": "Eleganckie ciemnożużlowe cegły", + "block.create.fancy_dark_scoria_bricks_slab": "Elegancka ciemnożużlowa ceglana płyta", + "block.create.fancy_dark_scoria_bricks_stairs": "Eleganckie ciemnożużlowe ceglane schody", + "block.create.fancy_dark_scoria_bricks_wall": "Elegancki ciemnożużlowy ceglany murek", + "block.create.fancy_diorite_bricks": "Eleganckie diorytowe cegły", + "block.create.fancy_diorite_bricks_slab": "Elegancka diorytowa ceglana płyta", + "block.create.fancy_diorite_bricks_stairs": "Eleganckie diorytowe ceglane schody", + "block.create.fancy_diorite_bricks_wall": "Elegancki diorytowy ceglany murek", + "block.create.fancy_dolomite_bricks": "Eleganckie dolomitowe cegły", + "block.create.fancy_dolomite_bricks_slab": "Elegancka dolomitowa ceglana płyta", + "block.create.fancy_dolomite_bricks_stairs": "Eleganckie dolomitowe ceglane schody", + "block.create.fancy_dolomite_bricks_wall": "Elegancki dolomitowy ceglany murek", + "block.create.fancy_gabbro_bricks": "Eleganckie gabrowe cegły", + "block.create.fancy_gabbro_bricks_slab": "Elegancka gabrowa ceglana płyta", + "block.create.fancy_gabbro_bricks_stairs": "Eleganckie gabrowe ceglane schody", + "block.create.fancy_gabbro_bricks_wall": "Elegancki gabrowy ceglany murek", + "block.create.fancy_granite_bricks": "Eleganckie granitowe cegły", + "block.create.fancy_granite_bricks_slab": "Elegancka granitowa ceglana płyta", + "block.create.fancy_granite_bricks_stairs": "Eleganckie granitowe ceglane schody", + "block.create.fancy_granite_bricks_wall": "Elegancki granitowy ceglany murek", + "block.create.fancy_limestone_bricks": "Eleganckie wapienne cegły", + "block.create.fancy_limestone_bricks_slab": "Elegancka wapienna ceglana płyta", + "block.create.fancy_limestone_bricks_stairs": "Eleganckie wapienne ceglane schody", + "block.create.fancy_limestone_bricks_wall": "Elegancki wapienny ceglany murek", + "block.create.fancy_scoria_bricks": "Eleganckie żużlowe cegły", + "block.create.fancy_scoria_bricks_slab": "Elegancka żużlowa ceglana płyta", + "block.create.fancy_scoria_bricks_stairs": "Eleganckie żużlowe ceglane schody", + "block.create.fancy_scoria_bricks_wall": "Elegancki żużlowy ceglany murek", + "block.create.fancy_weathered_limestone_bricks": "Eleganckie zwietrzałe wapienne cegły", + "block.create.fancy_weathered_limestone_bricks_slab": "Elegancka zwietrzała wapienna ceglana płyta", + "block.create.fancy_weathered_limestone_bricks_stairs": "Eleganckie zwietrzałe wapienne ceglane schody", + "block.create.fancy_weathered_limestone_bricks_wall": "Elegancki zwietrzały wapienny ceglany murek", + "block.create.fluid_pipe": "Rura", + "block.create.fluid_tank": "Zbiornik", + "block.create.fluid_valve": "Zawór", + "block.create.flywheel": "Koło zamachowe", + "block.create.framed_glass": "Oprawione okno", + "block.create.framed_glass_pane": "Oprawiona szyba", + "block.create.furnace_engine": "Silnik spalinowy", + "block.create.gabbro": "Gabro", + "block.create.gabbro_bricks": "Gabrowe cegły", + "block.create.gabbro_bricks_slab": "Gabrowa ceglana płyta", + "block.create.gabbro_bricks_stairs": "Gabrowe ceglane schody", + "block.create.gabbro_bricks_wall": "Gabrowy ceglany murek", + "block.create.gabbro_cobblestone": "Gabrowy bruk", + "block.create.gabbro_cobblestone_slab": "Gabrowa brukowa płyta", + "block.create.gabbro_cobblestone_stairs": "Gabrowe brukowe schody", + "block.create.gabbro_cobblestone_wall": "Gabrowy brukowy murek", + "block.create.gabbro_pillar": "Gabrowy filar", + "block.create.gantry_carriage": "Przenośnik suwnicowy", + "block.create.gantry_shaft": "Suwnica", + "block.create.gearbox": "Przekładnia", + "block.create.gearshift": "Przekładnik", + "block.create.glass_fluid_pipe": "Szklana rura", + "block.create.granite_bricks": "Granitowe cegły", + "block.create.granite_bricks_slab": "Granitowa ceglana płyta", + "block.create.granite_bricks_stairs": "Granitowe ceglane schody", + "block.create.granite_bricks_wall": "Granitowy ceglany murek", + "block.create.granite_cobblestone": "Granitowy bruk", + "block.create.granite_cobblestone_slab": "Granitowa brukowa płyta", + "block.create.granite_cobblestone_stairs": "Granitowe brukowe schody", + "block.create.granite_cobblestone_wall": "Granitowy brukowy murek", + "block.create.granite_pillar": "Granitowy filar", + "block.create.gray_sail": "Szary żagiel", + "block.create.gray_seat": "Szare siedzenie", + "block.create.gray_valve_handle": "Szare pokrętło", + "block.create.green_sail": "Zielony żagiel", + "block.create.green_seat": "Zielone siedzenie", + "block.create.green_valve_handle": "Zielone pokrętło", + "block.create.hand_crank": "Ręczna korba", + "block.create.honey": "Miód", + "block.create.horizontal_framed_glass": "Poziome oprawione szkło", + "block.create.horizontal_framed_glass_pane": "Pozioma oprawiona szyba", + "block.create.hose_pulley": "Krążek z wężem", + "block.create.item_drain": "Odpływ", + "block.create.jungle_window": "Dżunglowe okno", + "block.create.jungle_window_pane": "Dżunglowa szyba okienna", + "block.create.large_cogwheel": "Duże koło zębate", + "block.create.layered_andesite": "Warstwowy andezyt", + "block.create.layered_dark_scoria": "Warstwowy ciemny żużel", + "block.create.layered_diorite": "Warstwowy dioryt", + "block.create.layered_dolomite": "Warstwowy dolomit", + "block.create.layered_gabbro": "Warstwowe gabro", + "block.create.layered_granite": "Warstwowy granit", + "block.create.layered_limestone": "Warstwowy wapień", + "block.create.layered_scoria": "Warstwowy żużel", + "block.create.layered_weathered_limestone": "Warstwowy zwietrzały wapień", + "block.create.light_blue_sail": "Jasnoniebieski żagiel", + "block.create.light_blue_seat": "Jasnoniebieskie siedzenie", + "block.create.light_blue_valve_handle": "Jasnoniebieskie pokrętło", + "block.create.light_gray_sail": "Jasnoszary żagiel", + "block.create.light_gray_seat": "Jasnoszare siedzenie", + "block.create.light_gray_valve_handle": "Jasnoszare pokrętło", + "block.create.lime_sail": "Jasnozielony żagiel", + "block.create.lime_seat": "Jasnozielone siedzenie", + "block.create.lime_valve_handle": "Jasnozielone pokrętło", + "block.create.limesand": "Piasek wapienny", + "block.create.limestone": "Wapień", + "block.create.limestone_bricks": "Wapienne cegły", + "block.create.limestone_bricks_slab": "Wapienna ceglana płyta", + "block.create.limestone_bricks_stairs": "Wapienne ceglane schody", + "block.create.limestone_bricks_wall": "Wapienny ceglany murek", + "block.create.limestone_cobblestone": "Wapienny bruk", + "block.create.limestone_cobblestone_slab": "Wapienna brukowa płyta", + "block.create.limestone_cobblestone_stairs": "Wapienne brukowe schody", + "block.create.limestone_cobblestone_wall": "Wapienny brukowy murek", + "block.create.limestone_pillar": "Wapienny filar", + "block.create.linear_chassis": "Stelaż liniowy", + "block.create.lit_blaze_burner": "Zapalony płomienny palnik", + "block.create.magenta_sail": "Karmazynowy żagiel", + "block.create.magenta_seat": "Karmazynowe siedzenie", + "block.create.magenta_valve_handle": "Karmazynowe pokrętło", + "block.create.mechanical_arm": "Ramie mechaniczne", + "block.create.mechanical_bearing": "Mechaniczne łożysko", + "block.create.mechanical_crafter": "Mechaniczny stół rzemieślniczy", + "block.create.mechanical_drill": "Mechaniczne wiertło", + "block.create.mechanical_harvester": "Mechaniczna żniwiarka", + "block.create.mechanical_mixer": "Mechaniczny mikser", + "block.create.mechanical_piston": "Mechaniczny tłok", + "block.create.mechanical_piston_head": "Głowica mechanicznego tłoka", + "block.create.mechanical_plough": "Mechaniczny pług", + "block.create.mechanical_press": "Mechaniczna prasa", + "block.create.mechanical_pump": "Mechaniczna pompa", + "block.create.mechanical_saw": "Mechaniczna piła", + "block.create.metal_bracket": "Metalowy wspornik", + "block.create.millstone": "Młynek", + "block.create.minecart_anchor": "Kotwica wagonikowa", + "block.create.mossy_andesite": "Omszony andezyt", + "block.create.mossy_dark_scoria": "Zamszony ciemny żużel", + "block.create.mossy_diorite": "Zamszony dioryt", + "block.create.mossy_dolomite": "Zamszony dolomit", + "block.create.mossy_gabbro": "Zamszone gabro", + "block.create.mossy_granite": "Zamszony granit", + "block.create.mossy_limestone": "Zamszony wapień", + "block.create.mossy_scoria": "Zamszony żużel", + "block.create.mossy_weathered_limestone": "Zamszony zwietrzały wapień", + "block.create.mysterious_cuckoo_clock": "Zegar z kukułką", + "block.create.natural_scoria": "Naturalny żużel", + "block.create.nixie_tube": "Lampa cyfrowa", + "block.create.nozzle": "Dysza", + "block.create.oak_window": "Dębowe okno", + "block.create.oak_window_pane": "Dębowa szyba okienna", + "block.create.orange_sail": "Pomarańczowy żagiel", + "block.create.orange_seat": "Pomarańczowe siedzenie", + "block.create.orange_valve_handle": "Pomarańczowe pokrętło", + "block.create.ornate_iron_window": "Ozdobne żelazne okno", + "block.create.ornate_iron_window_pane": "Ozdobna żelazne szyba okienna", + "block.create.overgrown_andesite": "Zarośnięty andezyt", + "block.create.overgrown_dark_scoria": "Zarośnięty ciemny żużel", + "block.create.overgrown_diorite": "Zarośnięty dioryt", + "block.create.overgrown_dolomite": "Zarośnięty dolomit", + "block.create.overgrown_gabbro": "Zarośnięte gabro", + "block.create.overgrown_granite": "Zarośnięty granit", + "block.create.overgrown_limestone": "Zarośnięty wapień", + "block.create.overgrown_scoria": "Zarośnięty żużel", + "block.create.overgrown_weathered_limestone": "Zarośnięty zwietrzały wapień", + "block.create.paved_andesite": "Wygładzony andezyt", + "block.create.paved_andesite_slab": "Wygładzona andezytowa płyta", + "block.create.paved_andesite_stairs": "Wygładzone andezytowe schody", + "block.create.paved_andesite_wall": "Wygładzony andezytowy murek", + "block.create.paved_dark_scoria": "Wygładzony ciemny żużel", + "block.create.paved_dark_scoria_slab": "Wygładzona ciemnożużlowa płyta", + "block.create.paved_dark_scoria_stairs": "Wygładzone ciemnożużlowe schody", + "block.create.paved_dark_scoria_wall": "Wygładzony ciemnożużlowy murek", + "block.create.paved_diorite": "Wygładzony dioryt", + "block.create.paved_diorite_slab": "Wygładzona diorytowa płyta", + "block.create.paved_diorite_stairs": "Wygładzone diorytowe schody", + "block.create.paved_diorite_wall": "Wygładzony diorytowy murek", + "block.create.paved_dolomite": "Wygładzony dolomit", + "block.create.paved_dolomite_slab": "Wygładzona dolomitowa płyta", + "block.create.paved_dolomite_stairs": "Wygładzone dolomitowe schody", + "block.create.paved_dolomite_wall": "Wygładzony dolomitowy murek", + "block.create.paved_gabbro": "Wygładzone gabro", + "block.create.paved_gabbro_slab": "Wygładzona gabrowa płyta", + "block.create.paved_gabbro_stairs": "Wygładzone gabrowe schody", + "block.create.paved_gabbro_wall": "Wygładzony gabrowy murek", + "block.create.paved_granite": "Wygładzony granit", + "block.create.paved_granite_slab": "Wygładzona granitowa płyta", + "block.create.paved_granite_stairs": "Wygładzone granitowe schody", + "block.create.paved_granite_wall": "Wygładzony granitowy murek", + "block.create.paved_limestone": "Wygładzony wapień", + "block.create.paved_limestone_slab": "Wygładzona wapienna płyta", + "block.create.paved_limestone_stairs": "Wygładzone wapienne schody", + "block.create.paved_limestone_wall": "Wygładzony wapienny murek", + "block.create.paved_scoria": "Wygładzony żużel", + "block.create.paved_scoria_slab": "Wygładzona żużlowa płyta", + "block.create.paved_scoria_stairs": "Wygładzone żużlowe schody", + "block.create.paved_scoria_wall": "Wygładzony żużlowy murek", + "block.create.paved_weathered_limestone": "Wygładzony zwietrzały wapień", + "block.create.paved_weathered_limestone_slab": "Wygładzona zwietrzała wapienna płyta", + "block.create.paved_weathered_limestone_stairs": "Wygładzone zwietrzałe wapienne schody", + "block.create.paved_weathered_limestone_wall": "Wygładzony zwietrzały wapienny murek", + "block.create.pink_sail": "Różowy żagiel", + "block.create.pink_seat": "Różowe siedzenie", + "block.create.pink_valve_handle": "Różowe pokrętło", + "block.create.piston_extension_pole": "Przedłużenie tłoka", + "block.create.polished_dark_scoria": "Wypolerowany ciemny żużel", + "block.create.polished_dark_scoria_slab": "Wypolerowana ciemnożużlowa płyta", + "block.create.polished_dark_scoria_stairs": "Wypolerowane ciemnożużlowe schody", + "block.create.polished_dark_scoria_wall": "Wypolerowany ciemnożużlowy murek", + "block.create.polished_dolomite": "Wypolerowany dolomit", + "block.create.polished_dolomite_slab": "Wypolerowana dolomitowa płyta", + "block.create.polished_dolomite_stairs": "Wypolerowane dolomitowe schody", + "block.create.polished_dolomite_wall": "Wypolerowany dolomitowy murek", + "block.create.polished_gabbro": "Wypolerowane gabro", + "block.create.polished_gabbro_slab": "Wypolerowana gabrowa płyta", + "block.create.polished_gabbro_stairs": "Wypolerowane gabrowe schody", + "block.create.polished_gabbro_wall": "Wypolerowany gabrowy murek", + "block.create.polished_limestone": "Wypolerowany wapień", + "block.create.polished_limestone_slab": "Wypolerowana wapienna płyta", + "block.create.polished_limestone_stairs": "Wypolerowane wapienne schody", + "block.create.polished_limestone_wall": "Wypolerowany wapienny murek", + "block.create.polished_scoria": "Wypolerowany żużel", + "block.create.polished_scoria_slab": "Wypolerowana żużlowa płyta", + "block.create.polished_scoria_stairs": "Wypolerowane żużlowe schody", + "block.create.polished_scoria_wall": "Wypolerowany żużlowy murek", + "block.create.polished_weathered_limestone": "Wypolerowany zwietrzały wapień", + "block.create.polished_weathered_limestone_slab": "Wypolerowana zwietrzała wapienna płyta", + "block.create.polished_weathered_limestone_stairs": "Wypolerowane zwietrzałe wapienne schody", + "block.create.polished_weathered_limestone_wall": "Wypolerowany zwietrzały wapienny murek", + "block.create.portable_fluid_interface": "Przenośny interfejs płynów", + "block.create.portable_storage_interface": "Przenośny interfejs magazynu", + "block.create.powered_latch": "Zaawansowany zasilany przełącznik", + "block.create.powered_toggle_latch": "Zasilany przełącznik", + "block.create.pulley_magnet": "Krążek z magnesem", + "block.create.pulse_repeater": "Przekaźnik pulsowy", + "block.create.purple_sail": "Fioletowy żagiel", + "block.create.purple_seat": "Fioletowe siedzenie", + "block.create.purple_valve_handle": "Fioletowe pokrętło", + "block.create.radial_chassis": "Stelaż promienisty", + "block.create.red_sail": "Czerwony żagiel", + "block.create.red_seat": "Czerwone siedzenie", + "block.create.red_valve_handle": "Czerwone pokrętło", + "block.create.redstone_contact": "Przełącznik kontaktowy", + "block.create.redstone_link": "Emiter sygnału", + "block.create.refined_radiance_casing": "Świetlista obudowa", + "block.create.reinforced_rail": "Wzmocnione tory", + "block.create.rope": "Lina", + "block.create.rope_pulley": "Krążek z liną", + "block.create.rotation_speed_controller": "Sterownik prędkości obrotu", + "block.create.sail_frame": "Rama żagla", + "block.create.schematic_table": "Stół do planowania", + "block.create.schematicannon": "Schematoarmata", + "block.create.scoria": "Żużel", + "block.create.scoria_bricks": "Żużlowe cegły", + "block.create.scoria_bricks_slab": "Żużlowa ceglana płyta", + "block.create.scoria_bricks_stairs": "Żużlowe ceglane schody", + "block.create.scoria_bricks_wall": "Żużlowy ceglany murek", + "block.create.scoria_cobblestone": "Żużlowy bruk", + "block.create.scoria_cobblestone_slab": "Żużlowa brukowa płyta", + "block.create.scoria_cobblestone_stairs": "Żużlowe brukowe schody", + "block.create.scoria_cobblestone_wall": "Żużlowy brukowy murek", + "block.create.scoria_pillar": "Żużlowy filar", + "block.create.secondary_linear_chassis": "Drugorzędny liniowy stelaż", + "block.create.sequenced_gearshift": "Przekładnik sekwencjonalny", + "block.create.shadow_steel_casing": "Mroczna obudowa", + "block.create.shaft": "Wał", + "block.create.smart_chute": "Inteligentny Zsyp", + "block.create.smart_fluid_pipe": "Inteligentna rura", + "block.create.speedometer": "Prędkościomierz", + "block.create.spout": "Kanister", + "block.create.spruce_window": "Świerkowe okno", + "block.create.spruce_window_pane": "Świerkowa szyba okienna", + "block.create.sticker": "Przyklejacz", + "block.create.sticky_mechanical_piston": "Lepki mechaniczny tłok", + "block.create.stockpile_switch": "Przełącznik zawartościowy", + "block.create.stressometer": "Miernik obciążenia", + "block.create.tiled_glass": "Kafelkowane szkło", + "block.create.tiled_glass_pane": "Kafelkowana szyba", + "block.create.turntable": "Talerz obrotowy", + "block.create.vertical_framed_glass": "Pionowe oprawione szkło", + "block.create.vertical_framed_glass_pane": "Pionowa oprawiona szyba", + "block.create.warped_window": "Spaczone okno", + "block.create.warped_window_pane": "Spaczona szyba okienna", + "block.create.water_wheel": "Koło wodne", + "block.create.weathered_limestone": "Zwietrzały wapień", + "block.create.weathered_limestone_bricks": "Zwietrzałe wapienne cegły", + "block.create.weathered_limestone_bricks_slab": "Zwietrzała wapienna ceglana płyta", + "block.create.weathered_limestone_bricks_stairs": "Zwietrzałe wapienne ceglane schody", + "block.create.weathered_limestone_bricks_wall": "Zwietrzały wapienny ceglany murek", + "block.create.weathered_limestone_cobblestone": "Zwietrzały wapienny bruk", + "block.create.weathered_limestone_cobblestone_slab": "Zwietrzała wapienna brukowa płyta", + "block.create.weathered_limestone_cobblestone_stairs": "Zwietrzałe wapienne brukowe schody", + "block.create.weathered_limestone_cobblestone_wall": "Zwietrzały wapienny brukowy murek", + "block.create.weathered_limestone_pillar": "Zwietrzały wapienny filar", + "block.create.weighted_ejector": "Wyrzutnia odważnikowa", + "block.create.white_sail": "Biały żagiel", + "block.create.white_seat": "Białe siedzenie", + "block.create.white_valve_handle": "Białe pokrętło", + "block.create.windmill_bearing": "Łożysko wiatraka", + "block.create.wooden_bracket": "Drewniany wspornik", + "block.create.yellow_sail": "Żółty żagiel", + "block.create.yellow_seat": "Żółte siedzenie", + "block.create.yellow_valve_handle": "Żółte pokrętło", + "block.create.zinc_block": "Blok cynku", + "block.create.zinc_ore": "Ruda cynku", + + "entity.create.contraption": "Maszyna", + "entity.create.gantry_contraption": "Maszyna suwnicowa", + "entity.create.seat": "Siedzenie", + "entity.create.stationary_contraption": "Maszyna stacjonarna", + "entity.create.super_glue": "Super Glue", + + "fluid.create.milk": "Mleko", + "fluid.create.potion": "Mikstura", + "fluid.create.tea": "Herbatka Budowniczego", + + "item.create.andesite_alloy": "Stop andezytu", + "item.create.attribute_filter": "Filtr atrybutowy", + "item.create.bar_of_chocolate": "Tabliczka czekolady", + "item.create.belt_connector": "Taśma", + "item.create.blaze_cake": "Płomienne ciasto", + "item.create.blaze_cake_base": "Baza płomiennego ciasta", + "item.create.brass_hand": "Mosiężna dłoń", + "item.create.brass_ingot": "Sztabka mosiądzu", + "item.create.brass_nugget": "Bryłka mosiądzu", + "item.create.brass_sheet": "Arkusz mosiądzu", + "item.create.builders_tea": "Herbatka Budowniczego", + "item.create.chest_minecart_contraption": "Maszyna w wagoniku ze skrzynią", + "item.create.chocolate_bucket": "Wiadro czekolady", + "item.create.chocolate_glazed_berries": "Jagody w czekoladzie", + "item.create.chromatic_compound": "Związek chromatyczny", + "item.create.cinder_flour": "Rozżarzona mąka", + "item.create.copper_ingot": "Sztabka miedzi", + "item.create.copper_nugget": "Bryłka miedzi", + "item.create.copper_sheet": "Arkusz miedzi", + "item.create.crafter_slot_cover": "Przykrywka na slot stołu rzemieślniczego", + "item.create.crushed_aluminum_ore": "Rozkruszona ruda żelaza", + "item.create.crushed_brass": "Rozkruszony mosiądz", + "item.create.crushed_copper_ore": "Rozkruszona ruda miedzi", + "item.create.crushed_gold_ore": "Rozkruszona ruda złota", + "item.create.crushed_iron_ore": "Rozkruszona ruda żelaza", + "item.create.crushed_lead_ore": "Rozkruszona ruda ołowiu", + "item.create.crushed_nickel_ore": "Rozkruszona ruda niklu", + "item.create.crushed_osmium_ore": "Rozkruszona ruda osmu", + "item.create.crushed_platinum_ore": "Rozkruszona ruda platyny", + "item.create.crushed_quicksilver_ore": "Rozkruszona ruda rtęci", + "item.create.crushed_silver_ore": "Rozkruszona ruda srebra", + "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", + "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", + "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", + "item.create.dough": "Ciasto", + "item.create.electron_tube": "Lampa elektronowa", + "item.create.empty_blaze_burner": "Pusty płomienny palnik", + "item.create.empty_schematic": "Pusty schemat", + "item.create.extendo_grip": "Wydłużony Chwytak", + "item.create.filter": "Filtr", + "item.create.furnace_minecart_contraption": "Maszyna w wagoniku z piecem", + "item.create.goggles": "Gogle inżyniera", + "item.create.golden_sheet": "Arkusz złota", + "item.create.handheld_worldshaper": "Ręczny kształter", + "item.create.honey_bucket": "Wiadro miodu", + "item.create.honeyed_apple": "Jabłko w miodzie", + "item.create.integrated_circuit": "Układ scalony", + "item.create.iron_sheet": "Arkusz żelaza", + "item.create.lapis_sheet": "Arkusz lazurytu", + "item.create.minecart_contraption": "Maszyna w wagoniku", + "item.create.minecart_coupling": "Łącznik wagoników", + "item.create.polished_rose_quartz": "Wypolerowany kwarc różowy", + "item.create.powdered_obsidian": "Sproszkowany obsydian", + "item.create.propeller": "Śmigło", + "item.create.red_sand_paper": "Czerwony papier ścierny", + "item.create.refined_radiance": "Świetlisty materiał", + "item.create.rose_quartz": "Kwarc różowy", + "item.create.sand_paper": "Papier ścierny", + "item.create.schematic": "Schemat", + "item.create.schematic_and_quill": "Schemat z piórem", + "item.create.shadow_steel": "Mroczna stal", + "item.create.super_glue": "Super Glue", + "item.create.sweet_roll": "Słodka bułka", + "item.create.tree_fertilizer": "Nawóz do drzew", + "item.create.vertical_gearbox": "Pionowa przekładnia", + "item.create.wand_of_symmetry": "Różdżka symetrii", + "item.create.wheat_flour": "Mąka pszenna", + "item.create.whisk": "Trzepaczka", + "item.create.wrench": "Klucz", + "item.create.zinc_ingot": "Sztabka cynku", + "item.create.zinc_nugget": "Bryłka cynku", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "Witaj w Create", + "advancement.create.root.desc": "Czas, aby zacząć tworzyć wspaniałe Maszyny!", + "advancement.create.andesite_alloy": "Słynne stopy", + "advancement.create.andesite_alloy.desc": "Materiały z Create mają czasami dziwne nazwy, stop andezytu jest jednym z nich.", + "advancement.create.its_alive": "To żyje!", + "advancement.create.its_alive.desc": "Patrz, jak Twój pierwszy ruchomy komponent się obraca.", + "advancement.create.shifting_gears": "Przekładnia", + "advancement.create.shifting_gears.desc": "Połącz duże koło zębate i małe koło zębate, co pozwoli zmienić prędkość obrotu Twojej maszyny.", + "advancement.create.overstressed": "Przeciążenie", + "advancement.create.overstressed.desc": "Doświadcz limitów obciążenia z pierwszej ręki.", + "advancement.create.belt": "Taśma produkcyjna", + "advancement.create.belt.desc": "Połącz dwa wały tworząc taśmociąg.", + "advancement.create.tunnel": "Światełko w tunelu", + "advancement.create.tunnel.desc": "Ulepsz swój taśmociąg dodając tunel.", + "advancement.create.splitter_tunnel": "Dziel i rządź", + "advancement.create.splitter_tunnel.desc": "Stwórz rozdzielacz przy pomocy kilku mosiężnych tuneli.", + "advancement.create.chute": "Czarna dziura", + "advancement.create.chute.desc": "Postaw zsyp - pionową część taśmociągu.", + "advancement.create.upward_chute": "Powietrzne porwanie", + "advancement.create.upward_chute.desc": "Wrzuć przedmiot do zsypu z wiatrakiem.", + "advancement.create.belt_funnel": "Sprzęt produkcyjny", + "advancement.create.belt_funnel.desc": "Postaw lejek lub składnicę na taśmociągu, aby dodać dodatkowe funkcje.", + "advancement.create.belt_funnel_kiss": "Zakochana para", + "advancement.create.belt_funnel_kiss.desc": "Spraw, aby dwa lejki na taśmociągu się pocałowały", + "advancement.create.fan": "Wisząc w powietrzu", + "advancement.create.fan.desc": "Unieś się w powietrze na izolowanym wiatraku.", + "advancement.create.fan_lava": "Ogrzewanie geotermalne", + "advancement.create.fan_lava.desc": "Wpadnij w strumień powietrza zdolnego do topienia metali.", + "advancement.create.fan_water": "Myjnia automatyczna", + "advancement.create.fan_water.desc": "Wpadnij w strumień powietrza przenoszącego krople wody.", + "advancement.create.fan_smoke": "Wędzarnia", + "advancement.create.fan_smoke.desc": "Wpadnij w strumień powietrza z dymem.", + "advancement.create.wrench": "Poręczna konfiguracja", + "advancement.create.wrench.desc": "Wytwórz klucz pomocny w pracy z maszynami.", + "advancement.create.goggles": "Stress-O-Vision", + "advancement.create.goggles.desc": "Wytwórz gogle inżyniera, które pomogą Ci w zdobyciu większej ilości informacji o ruchomych komponentach.", + "advancement.create.speedometer": "Ale że jak szybko?", + "advancement.create.speedometer.desc": "Połóż i wpraw w ruch prędkościomierz. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", + "advancement.create.stressometer": "Ale że jakie obciążenie?", + "advancement.create.stressometer.desc": "Połóż i wpraw w ruch miernik obciążenia. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", + "advancement.create.aesthetics": "Estetyka!", + "advancement.create.aesthetics.desc": "Postaw wsporniki przy wale, rurze i kole zębatym.", + "advancement.create.reinforced": "Wzmocnienie!", + "advancement.create.reinforced.desc": "Użyj pasujących obudów na wale, rurze i kole zębatym.", + "advancement.create.water_wheel": "Energia odnawialna", + "advancement.create.water_wheel.desc": "Postaw koło wodne i spraw, aby zaczęło się kręcić!", + "advancement.create.chocolate_wheel": "Smakowita energia", + "advancement.create.chocolate_wheel.desc": "Wpraw w ruch koło wodne przy pomocy gorącej czekolady.", + "advancement.create.lava_wheel": "Koło magmowe", + "advancement.create.lava_wheel.desc": "To nigdy nie powinno było zadziałać.", + "advancement.create.cuckoo": "To już czas?", + "advancement.create.cuckoo.desc": "Bądź świadkiem tego, jak zegar z kukułką ogłasza porę snu.", + "advancement.create.millstone": "Kieszonkowy rozgniatacz", + "advancement.create.millstone.desc": "Postaw i wpraw w ruch młynek.", + "advancement.create.windmill": "Łagodna bryza", + "advancement.create.windmill.desc": "Skonstruuj działający wiatrak.", + "advancement.create.maxed_windmill": "Silna bryza", + "advancement.create.maxed_windmill.desc": "Skonstruuj wiatrak o maksymalnej sile.", + "advancement.create.andesite_casing": "Epoka andezytu łupanego", + "advancement.create.andesite_casing.desc": "Użyj stopu andezytu, aby wytworzyć podstawową obudowę.", + "advancement.create.mechanical_drill": "Wiertło stacjonarne", + "advancement.create.mechanical_drill.desc": "Postaw i wpraw w ruch mechaniczne wiertło.", + "advancement.create.press": "Prasa nie do końca drukarska", + "advancement.create.press.desc": "Wpraw w ruch prasę i wytłocz kilka metalowych arkuszy.", + "advancement.create.polished_rose_quartz": "Różowe diamenty", + "advancement.create.polished_rose_quartz.desc": "Poleruj różowy kwarc papierem ściernym tak długo, aż będzie przezroczysty.", + "advancement.create.electron_tube": "Beep Boop", + "advancement.create.electron_tube.desc": "Wytwórz kilka lamp elektronowych, przydatnych do konstrukcji mniej prymitywnych maszyn.", + "advancement.create.mechanical_saw": "Siekiera stacjonarna", + "advancement.create.mechanical_saw.desc": "Postaw i wpraw w ruch mechaniczną piłę.", + "advancement.create.basin": "Tygiel kulturowy", + "advancement.create.basin.desc": "Postaw tygiel i wrzuć do niego kilka przedmiotów.", + "advancement.create.mixer": "Pomieszanie z poplątaniem", + "advancement.create.mixer.desc": "Postaw nad tyglem mechaniczny mikser i użyj go do zmieszania przedmiotów na jednolitą masę.", + "advancement.create.blaze_burner": "Żywy ogień", + "advancement.create.blaze_burner.desc": "Zdobądź płomienny palnik.", + "advancement.create.compact": "Zautomatyzowane prasowanie", + "advancement.create.compact.desc": "Użyj prasy i tygla do sprasowania przedmiotów.", + "advancement.create.brass": "Prawdziwe stopy", + "advancement.create.brass.desc": "Zmieszaj sproszkowaną miedź i sproszkowany cynk, tworząc mosiądz.", + "advancement.create.brass_casing": "Epoka brązu", + "advancement.create.brass_casing.desc": "Użyj nowo poznany mosiądz i odrobiny drewna, aby wytworzyć ulepszoną obudowę.", + "advancement.create.copper_casing": "Epoka miedzi", + "advancement.create.copper_casing.desc": "Użyj arkuszy miedzi i odrobiny drewna, aby wytworzyć miedzianą obudowę.", + "advancement.create.spout": "Plum", + "advancement.create.spout.desc": "Patrz jak przedmiot napełnia się płynem przy użyciu kanistra.", + "advancement.create.spout_potion": "Globalny browar", + "advancement.create.spout_potion.desc": "Patrz jak butelka napełnia się miksturą.", + "advancement.create.chocolate": "Świat wyobraźni", + "advancement.create.chocolate.desc": "Zdobądź wiadro płynnej czekolady.", + "advancement.create.item_drain": "Szybki odpływ", + "advancement.create.item_drain.desc": "Patrz jak przedmiot jest opróżniany przy użyciu odpływu.", + "advancement.create.chained_item_drain": "Niech się dzieje!", + "advancement.create.chained_item_drain.desc": "Patrz jak przedmiot toczy się przez wiele połączonych odpływów.", + "advancement.create.glass_pipe": "Płynny podglądacz", + "advancement.create.glass_pipe.desc": "Patrz jak ciecz płynie przez rurę z okienkiem. Użyj klucza na prostej rurze, aby dodać do niej okno.", + "advancement.create.pipe_collision": "Nigdy nie krzyżuj strumieni!", + "advancement.create.pipe_collision.desc": "Patrz jak dwie ciecze spotykają się w Twoim systemie rur.", + "advancement.create.pipe_spill": "Mamy wyciek!", + "advancement.create.pipe_spill.desc": "Patrz jak otwarta część rury stawia lub pochłania ciecze.", + "advancement.create.hose_pulley": "Wyciek przemysłowy", + "advancement.create.hose_pulley.desc": "Obniż krążek z wężem, aby osuszyć lub wypełnić płynem jakiś obszar.", + "advancement.create.infinite_water": "Osuszanie oceanu", + "advancement.create.infinite_water.desc": "Wypompuj trochę wody z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", + "advancement.create.infinite_lava": "Prosto z jądra Ziemi", + "advancement.create.infinite_lava.desc": "Wypompuj trochę lawy z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", + "advancement.create.infinite_chocolate": "Tonę we własnej wyobraźni", + "advancement.create.infinite_chocolate.desc": "Wypompuj trochę czekolady z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", + "advancement.create.crafter": "Linia produkcyjna", + "advancement.create.crafter.desc": "Postaw i wpraw w ruch mechaniczny stół rzemieślniczy.", + "advancement.create.clockwork_bearing": "Jaką mamy godzinę?", + "advancement.create.clockwork_bearing.desc": "Skonstruuj strukturę obracającą się na mechanizmie zegarowym.", + "advancement.create.nixie_tube": "Oznaka stylu", + "advancement.create.nixie_tube.desc": "Wytwórz i postaw parę lamp cyfrowych.", + "advancement.create.deployer": "Postaw i zniszcz", + "advancement.create.deployer.desc": "Postaw i wpraw w ruch aplikator, Twoje idealne odbicie.", + "advancement.create.speed_controller": "Inżynierowie go nienawidzą!", + "advancement.create.speed_controller.desc": "Postaw sterownik prędkości obrotu, najlepsze narzędzie do zmiany przekładni.", + "advancement.create.flywheel": "Serce Fabryki", + "advancement.create.flywheel.desc": "Skutecznie podłącz silnik do koła zamachowego.", + "advancement.create.overstress_flywheel": "Wysoki poziom obciążenia", + "advancement.create.overstress_flywheel.desc": "Przeładuj silnik spalinowy.", + "advancement.create.integrated_circuit": "Skomplikowane obliczenia", + "advancement.create.integrated_circuit.desc": "Złóż układ scalony.", + "advancement.create.mechanical_arm": "Ręce pełne roboty", + "advancement.create.mechanical_arm.desc": "Wytwórz ramię mechaniczne, wybierz miejsca wejścia i wyjścia, postaw je i wpraw w ruch. Patrz jak robi wszystko za Ciebie.", + "advancement.create.musical_arm": "Zagraj coś dla mnie!", + "advancement.create.musical_arm.desc": "Patrz jak mechaniczne ramię obsługuje szafę grającą.", + "advancement.create.arm_many_targets": "Organizer", + "advancement.create.arm_many_targets.desc": "Zaprogramuj ramię mechaniczne z przynajmniej dziesięcioma miejscami wyjścia.", + "advancement.create.arm_blaze_burner": "Automatyczny wlot paliwowy", + "advancement.create.arm_blaze_burner.desc": "Poinstruuj ramię mechaniczne, jak napełniać płomienny palnik.", + "advancement.create.fist_bump": "Żółwik!", + "advancement.create.fist_bump.desc": "Spraw, aby dwa aplikatory stuknęły się pięścią.", + "advancement.create.crushing_wheel": "Nierozłączna para", + "advancement.create.crushing_wheel.desc": "Wytwórz parę kół kruszących, aby kruszyły więcej materiałów w krótszym czasie.", + "advancement.create.blaze_cake": "Przypływ energii", + "advancement.create.blaze_cake.desc": "Upiecz dla swojego palnika pyszne ciasto.", + "advancement.create.chromatic_compound": "Minerały dwubiegunowe", + "advancement.create.chromatic_compound.desc": "Wytwórz sztabkę związku chromatycznego.", + "advancement.create.shadow_steel": "Dar otchłani", + "advancement.create.shadow_steel.desc": "Uzyskaj mroczną stal, sztabkę pełną nicości.", + "advancement.create.refined_radiance": "Czysty blask", + "advancement.create.refined_radiance.desc": "Uzyskaj świetlisty materiał, silną substancję chromatyczną.", + "advancement.create.chromatic_age": "Epoka kolorów", + "advancement.create.chromatic_age.desc": "Wytwórz jasną i mroczną obudowę.", + "advancement.create.wand_of_symmetry": "Symetria.", + "advancement.create.wand_of_symmetry.desc": "Zdobądź różdżkę symetrii.", + "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", + "advancement.create.extendo_grip.desc": "Złap w ręce Wydłużony Chwytak.", + "advancement.create.dual_extendo_grip": "Bioniczne modyfikacje", + "advancement.create.dual_extendo_grip.desc": "Użyj dwóch Wydłużonych Chwytaków, aby posiąść nadludzki zasięg.", + "advancement.create.eob": "Koniec Bety", + "advancement.create.eob.desc": "Bądź gotowy na więcej treści w przyszłości. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Palety Create", + + "death.attack.create.crush": "Gracz %1$s został zgnieciony przez koło kruszące", + "death.attack.create.fan_fire": "Gracz %1$s poparzył się gorącym powietrzem", + "death.attack.create.fan_lava": "Gracz %1$s poparzył się kroplami lawy", + "death.attack.create.mechanical_drill": "Gracz %1$s nabił się na mechaniczne wiertło", + "death.attack.create.mechanical_saw": "Gracz %1$s został przecięty na pół przez mechaniczną piłę", + "death.attack.create.cuckoo_clock_explosion": "Gracz %1$s został wysadzony w powietrze przez uszkodzony zegar z kukułką", + + "create.block.deployer.damage_source_name": "zbuntowany aplikator", + "create.block.cart_assembler.invalid": "Postaw monter wagoników na torze", + + "create.recipe.crushing": "Kruszenie", + "create.recipe.milling": "Mielenie", + "create.recipe.fan_washing": "Hurtowe płukanie", + "create.recipe.fan_washing.fan": "Wiatrak za płynącą wodą", + "create.recipe.fan_smoking": "Hurtowe wędzenie", + "create.recipe.fan_smoking.fan": "Wiatrak za ogniem", + "create.recipe.fan_blasting": "Hurtowe topienie", + "create.recipe.fan_blasting.fan": "Wiatrak za lawą", + "create.recipe.pressing": "Tłoczenie", + "create.recipe.mixing": "Mieszanie", + "create.recipe.automatic_shapeless": "Zautomatyzowanie nieokreślone konstruowanie", + "create.recipe.automatic_brewing": "Zautomatyzowane warzenie", + "create.recipe.packing": "Prasowanie", + "create.recipe.automatic_packing": "Zautomatyzowane pakowanie", + "create.recipe.sawing": "Cięcie", + "create.recipe.mechanical_crafting": "Mechaniczne konstruowanie", + "create.recipe.automatic_shaped": "Zautomatyzowane określone konstruowanie", + "create.recipe.block_cutting": "Cięcie bloków", + "create.recipe.wood_cutting": "Cięcie drewna", + "create.recipe.sandpaper_polishing": "Polerowanie papierem ściernym", + "create.recipe.mystery_conversion": "Tajemnicza przemiana", + "create.recipe.spout_filling": "Wypełnianie", + "create.recipe.draining": "Osuszanie", + "create.recipe.processing.chance": "%1$s%% szans", + "create.recipe.heat_requirement.none": "Nie wymaga podgrzewania", + "create.recipe.heat_requirement.heated": "Podrzewane", + "create.recipe.heat_requirement.superheated": "Silnie podgrzewane", + + "create.generic.range": "Zasięg", + "create.generic.radius": "Promień", + "create.generic.width": "Szerokość", + "create.generic.height": "Wysokość", + "create.generic.length": "Długość", + "create.generic.speed": "Prędkość", + "create.generic.delay": "Opóźnienie", + "create.generic.unit.ticks": "Tiki", + "create.generic.unit.seconds": "Sekundy", + "create.generic.unit.minutes": "Minuty", + "create.generic.unit.rpm": "Ob/min", + "create.generic.unit.stress": "JO", + "create.generic.unit.degrees": "°", + "create.generic.unit.millibuckets": "%1$smW", + "create.generic.clockwise": "Zgodnie ze wskazówkami zegara", + "create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara", + + "create.action.scroll": "Przewiń", + "create.action.confirm": "Potwierdź", + "create.action.abort": "Przerwij", + "create.action.saveToFile": "Zapisz", + "create.action.discard": "Odrzuć", + + "create.keyinfo.toolmenu": "Menu narzędzi", + "create.keyinfo.scrollup": "Symuluj przewijanie w górę (w świecie)", + "create.keyinfo.scrolldown": "Symuluj przewijanie w dół (w świecie)", + + "create.gui.scrollInput.defaultTitle": "Wybierz opcję:", + "create.gui.scrollInput.scrollToModify": "Przewiń, aby zmodyfikować", + "create.gui.scrollInput.scrollToAdjustAmount": "Przewiń, aby dostosować ilość", + "create.gui.scrollInput.scrollToSelect": "Przewiń, aby wybrać", + "create.gui.scrollInput.shiftScrollsFaster": "Naciśnij Shift, aby przewijać szybciej", + "create.gui.toolmenu.focusKey": "Przytrzymaj [%1$s], aby skupić", + "create.gui.toolmenu.cycle": "[SCROLL] przewijać", + "create.gui.symmetryWand.mirrorType": "Odbicie lustrzane", + "create.gui.symmetryWand.orientation": "Orientacja", + + "create.symmetry.mirror.plane": "Odbij lustrzanie raz", + "create.symmetry.mirror.doublePlane": "Prostokątnie", + "create.symmetry.mirror.triplePlane": "Ośmiokątnie", + + "create.orientation.orthogonal": "ortogonalnie", + "create.orientation.diagonal": "ukośnie", + "create.orientation.horizontal": "poziomo", + "create.orientation.alongZ": "Wzdłuż Z", + "create.orientation.alongX": "Wzdłuż X", + + "create.gui.terrainzapper.title": "Ręczny kształter", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", + "create.gui.terrainzapper.placement": "Położenie", + "create.gui.terrainzapper.placement.merged": "Połączony", + "create.gui.terrainzapper.placement.attached": "Przyłączony", + "create.gui.terrainzapper.placement.inserted": "Wstawiony", + "create.gui.terrainzapper.brush": "Pędzel", + "create.gui.terrainzapper.brush.cuboid": "Prostopadłościan", + "create.gui.terrainzapper.brush.sphere": "Kula", + "create.gui.terrainzapper.brush.cylinder": "Walec", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", + "create.gui.terrainzapper.tool": "Narzędzie", + "create.gui.terrainzapper.tool.fill": "Wypełnianie", + "create.gui.terrainzapper.tool.place": "Stawianie", + "create.gui.terrainzapper.tool.replace": "Zamiana", + "create.gui.terrainzapper.tool.clear": "Czyszczenie", + "create.gui.terrainzapper.tool.overlay": "Pokrywanie", + "create.gui.terrainzapper.tool.flatten": "Wypłaszczanie", + + "create.terrainzapper.shiftRightClickToSet": "Shift+Prawe kliknięcie, aby wybrać kształt", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", + + "create.minecart_coupling.two_couplings_max": "Wagoniki nie mogą mieć więcej niż dwa łączniki każdy", + "create.minecart_coupling.unloaded": "Część twojego pociągu wydaje się być w niezaładowanych Chunkach.", + "create.minecart_coupling.no_loops": "Łączniki nie mogą tworzyć pętli", + "create.minecart_coupling.removed": "Usunięto z wagonika wszystkie łączniki", + "create.minecart_coupling.too_far": "Wagoniki są zbyt daleko od siebie", + + "create.contraptions.movement_mode": "Tryb poruszania", + "create.contraptions.movement_mode.move_place": "Zawsze stawiaj przy zatrzymaniu", + "create.contraptions.movement_mode.move_place_returned": "Stawiaj jedynie w pozycji startu", + "create.contraptions.movement_mode.move_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona", + "create.contraptions.movement_mode.rotate_place": "Zawsze stawiaj przy zatrzymaniu", + "create.contraptions.movement_mode.rotate_place_returned": "Stawiaj jedynie blisko kąta początkowego", + "create.contraptions.movement_mode.rotate_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona\n", + "create.contraptions.cart_movement_mode": "Tryb poruszania wagonika", + "create.contraptions.cart_movement_mode.rotate": "Zawsze kieruj w stronę ruchu", + "create.contraptions.cart_movement_mode.rotate_paused": "Zatrzymaj komponenty podczas obrotu", + "create.contraptions.cart_movement_mode.rotation_locked": "Zablokuj obrót", + "create.contraptions.windmill.rotation_direction": "Kierunek obrotu", + "create.contraptions.clockwork.clock_hands": "Wskazówki zegara", + "create.contraptions.clockwork.hour_first": "Najpierw wskazówka godzinowa", + "create.contraptions.clockwork.minute_first": "Najpierw wskazówka minutowa", + "create.contraptions.clockwork.hour_first_24": "Najpierw wskazówka 24-godzinna", + + "create.logistics.filter": "Filtr", + "create.logistics.recipe_filter": "Filtr receptur", + "create.logistics.fluid_filter": "Filtr płynów", + "create.logistics.firstFrequency": "Częst. #1", + "create.logistics.secondFrequency": "Częst. #2", + "create.logistics.filter.apply": "Zastosowano filtr na %1$s.", + "create.logistics.filter.apply_click_again": "Zastosowano filtr na %1$s; kliknij ponownie, aby skopiować ilość.", + "create.logistics.filter.apply_count": "Zastosowano limit wyciągania do filtra.", + + "create.gui.goggles.generator_stats": "Właściwości generatora:", + "create.gui.goggles.kinetic_stats": "Właściwości kinetyczne:", + "create.gui.goggles.at_current_speed": "przy obecnej prędkości", + "create.gui.goggles.pole_length": "Długość przedłużenia:", + "create.gui.goggles.fluid_container": "Informacje o zbiorniku:", + "create.gui.goggles.fluid_container.capacity": "Pojemność:", + "create.gui.assembly.exception": "Nie udało się zmontować maszyny:", + "create.gui.assembly.exception.unmovableBlock": "Nieprzesuwalny bloki (%4$s) na [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Blok na [%1$s,%2$s,%3$s] nie był w załadowanym Chunku", + "create.gui.assembly.exception.structureTooLarge": "Zbyt dużo bloków w maszynie. Ustawione maksimum to: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Zbyt dużo przedłużeń tłoka. Ustawione maksimum to: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Brakuje kilku przedłużeń tłoka", + "create.gui.assembly.exception.not_enough_sails": "Przyczepiona struktura nie zawiera wystarczająco żaglo-podobnych bloków: %1$s Wymagane minimum to %2$s", + "create.gui.gauge.info_header": "Informacje miernika:", + "create.gui.speedometer.title": "Prędkość obrotu", + "create.gui.stressometer.title": "Obciążenie systemu", + "create.gui.stressometer.capacity": "Pozostała pojemność", + "create.gui.stressometer.overstressed": "Przeciążenie", + "create.gui.stressometer.no_rotation": "Brak obrotu", + "create.gui.contraptions.not_fast_enough": "Wygląda na to, że %1$s_nie_ obraca się z _wystarczającą_ _prędkością_.", + "create.gui.contraptions.network_overstressed": "Wygląda na to, że ta maszyna jest _przeciążona_. Dodaj więcej źródeł lub _spowolnij_ komponenty z wysoką _wartością_ _obciążenia_.", + "create.gui.adjustable_crate.title": "Regulowana skrzynka", + "create.gui.adjustable_crate.storageSpace": "Pojemność", + "create.gui.stockpile_switch.title": "Przełącznik zawartościowy", + "create.gui.stockpile_switch.invert_signal": "Odwróć sygnał", + "create.gui.stockpile_switch.move_to_lower_at": "Zmień na niższą wartość przy %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Zmień na wyższą wartość przy %1$s%%", + "create.gui.sequenced_gearshift.title": "Przekładnik sekwencjonalny", + "create.gui.sequenced_gearshift.instruction": "Instrukcja", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Obróć o kąt", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Obróć", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Kąt", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Obróć, aby przesunąć tłok/krążek/przenośnik suwnicowy", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Tłok", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Dystans", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Opóźnienie czasowe", + "create.gui.sequenced_gearshift.instruction.delay": "Opóźn.", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Czas trwania", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Koniec", + "create.gui.sequenced_gearshift.instruction.end": "Koniec", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Czekaj na kolejny puls", + "create.gui.sequenced_gearshift.instruction.await": "Czekaj", + "create.gui.sequenced_gearshift.speed": "Prędkość, kierunek", + "create.gui.sequenced_gearshift.speed.forward": "Prędkość wejściowa, do przodu", + "create.gui.sequenced_gearshift.speed.forward_fast": "Podwójna prędkość, do przodu", + "create.gui.sequenced_gearshift.speed.back": "Prędkość wejściowa, odwrotnie", + "create.gui.sequenced_gearshift.speed.back_fast": "Podwójna prędkość, odwrotnie", + + "create.schematicAndQuill.dimensions": "Wielkość schematu: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Ustawiono pierwszą pozycję.", + "create.schematicAndQuill.secondPos": "Ustawiono drugą pozycję.", + "create.schematicAndQuill.noTarget": "Trzymaj [Ctrl], aby zaznaczyć bloki powietrza.", + "create.schematicAndQuill.abort": "Usunięto zaznaczenie.", + "create.schematicAndQuill.title": "Nazwa schematu:", + "create.schematicAndQuill.convert": "Zapisz i wyślij natychmiastowo", + "create.schematicAndQuill.fallbackName": "Nowy schemat", + "create.schematicAndQuill.saved": "Zapisano jako %1$s", + + "create.schematic.invalid": "[!] Nieprawidłowy przedmiot - użyj stołu do planowania", + "create.schematic.position": "Pozycja", + "create.schematic.rotation": "Obrót", + "create.schematic.rotation.none": "Brak", + "create.schematic.rotation.cw90": "Zgodnie z zegarem 90", + "create.schematic.rotation.cw180": "Zgodnie z zegarem 180", + "create.schematic.rotation.cw270": "Zgodnie z zegarem 270", + "create.schematic.mirror": "Odbij", + "create.schematic.mirror.none": "Brak", + "create.schematic.mirror.frontBack": "Przód-tył", + "create.schematic.mirror.leftRight": "Prawo-lewo", + "create.schematic.tool.deploy": "Pozycja", + "create.schematic.tool.move": "Przesuń XZ", + "create.schematic.tool.movey": "Przesuń Y", + "create.schematic.tool.rotate": "Obróć", + "create.schematic.tool.print": "Drukuj", + "create.schematic.tool.flip": "Odbij", + "create.schematic.tool.deploy.description.0": "Przesuwa strukturę na pozycję.", + "create.schematic.tool.deploy.description.1": "Kliknij PPM na ziemię, aby postawić.", + "create.schematic.tool.deploy.description.2": "Trzymaj [Ctrl], aby zaznaczyć w określonej odległości.", + "create.schematic.tool.deploy.description.3": "[Ctrl]+Przewijanie, aby zmienić dystans", + "create.schematic.tool.move.description.0": "Przesuwa schemat poziomo.", + "create.schematic.tool.move.description.1": "Wskaż na schemat i [Ctrl]+Przewijaj, aby popchnąć.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Przesuwa schemat pionowo.", + "create.schematic.tool.movey.description.1": "[Ctrl]+Przewijanie, aby przesunąć w górę/dół.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Obraca schemat wokół jego środka.", + "create.schematic.tool.rotate.description.1": "[Ctrl]+Przewijanie, aby obrócić o 90 stopni.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Natychmiastowo stawia strukturę w świecie.", + "create.schematic.tool.print.description.1": "Kliknij PPM, aby potwierdzić ustawienie w obecnej pozycji.", + "create.schematic.tool.print.description.2": "Ta funkcja jest tylko dla trybu kreatywnego.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Odbija schemat w stronę, w jakiej wskazałeś.", + "create.schematic.tool.flip.description.1": "Wskaż na schemat [Ctrl]+Przewijaj, aby odbić", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Synchronizacja...", + "create.schematics.uploadTooLarge": "Twój schemat przekracza limity ustanowione przez serwer.", + "create.schematics.maxAllowedSize": "Maksymalna wielkość schematu to:", + + "create.gui.schematicTable.refresh": "Odśwież pliki", + "create.gui.schematicTable.open_folder": "Otwórz folder", + "create.gui.schematicTable.title": "Stół do planowania", + "create.gui.schematicTable.availableSchematics": "Dostępne schematy", + "create.gui.schematicTable.noSchematics": "Brak zapisanych schematów", + "create.gui.schematicTable.uploading": "Wysyłanie...", + "create.gui.schematicTable.finished": "Wysyłanie zakończone!", + "create.gui.schematicannon.title": "Schematoarmata", + "create.gui.schematicannon.listPrinter": "Drukowanie listy", + "create.gui.schematicannon.gunpowderLevel": "Ilość prochu: %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Pozostałe wystrzały: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Wliczając zapas: %1$s", + "create.gui.schematicannon.optionEnabled": "Obecnie włączone", + "create.gui.schematicannon.optionDisabled": "Obecnie wyłączone\n", + "create.gui.schematicannon.showOptions": "Pokaż ustawienia drukowania", + "create.gui.schematicannon.option.dontReplaceSolid": "Nie zastępuj stałych bloków", + "create.gui.schematicannon.option.replaceWithSolid": "Zastępuj stałe stałymi", + "create.gui.schematicannon.option.replaceWithAny": "Zastępuj stałe dowolnymi", + "create.gui.schematicannon.option.replaceWithEmpty": "Zastępuj stałe pustymi", + "create.gui.schematicannon.option.skipMissing": "Pomijaj brakujące bloki", + "create.gui.schematicannon.option.skipTileEntities": "Chroń byty bloków", + "create.gui.schematicannon.slot.gunpowder": "Dodaj prochu, aby załadować armatę", + "create.gui.schematicannon.slot.listPrinter": "Daj tu książki, aby wydrukować listę", + "create.gui.schematicannon.slot.schematic": "Daj tu swój schemat. Upewnij się, że jest postawiony w odpowiednim miejscu.", + "create.gui.schematicannon.option.skipMissing.description": "Jeśli armata nie znajdzie wymaganego bloku, przejdzie w następne miejsce", + "create.gui.schematicannon.option.skipTileEntities.description": "Armata będzie unikać zastępowania bloków przechowujących dane, takich jak skrzynie.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Armata nigdy nie będzie zastępować jakichkolwiek stałych bloków, jedynie nie-stałe i powietrze.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera stały blok w tym miejscu.", + "create.gui.schematicannon.option.replaceWithAny.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera dowolny blok w tym miejscu.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Armata usunie wszystkie bloki, wliczając te zastępowane przez powietrze.", + + "create.schematicannon.status.idle": "Niepracująca", + "create.schematicannon.status.ready": "Gotowa", + "create.schematicannon.status.running": "Działająca", + "create.schematicannon.status.finished": "Ukończone", + "create.schematicannon.status.paused": "Wstrzymana", + "create.schematicannon.status.stopped": "Zatrzymana", + "create.schematicannon.status.noGunpowder": "Koniec prochu", + "create.schematicannon.status.targetNotLoaded": "Cel nie jest załadowany", + "create.schematicannon.status.targetOutsideRange": "Cel jest za daleko", + "create.schematicannon.status.searching": "Szukanie", + "create.schematicannon.status.skipping": "Pomijanie", + "create.schematicannon.status.missingBlock": "Brakujący przedmiot:", + "create.schematicannon.status.placing": "Stawianie", + "create.schematicannon.status.clearing": "Usuwanie bloków", + "create.schematicannon.status.schematicInvalid": "Nieprawidłowy schemat", + "create.schematicannon.status.schematicNotPlaced": "Schemat nieustawiony", + "create.schematicannon.status.schematicExpired": "Schemat wygasł", + + "create.materialChecklist": "Lista materiałów", + "create.materialChecklist.blocksNotLoaded": "* Zastrzeżenie *\\n\\n Lista materiałów może być  niedokładna, bo znaczące Chunki nie są załadowane.", + + "create.gui.filter.deny_list": "Lista zabroniona", + "create.gui.filter.deny_list.description": "Przedmioty są przepuszczane, jeśli NIE pasują do żadnego z powyższych. Pusta lista przepuszcza wszystko.", + "create.gui.filter.allow_list": "Lista dozwolona", + "create.gui.filter.allow_list.description": "Przedmioty są przepuszczane, jeśli pasują do któregoś z powyższych. Pusta lista odrzuca wszystko", + "create.gui.filter.respect_data": "Bierz dane pod uwagę", + "create.gui.filter.respect_data.description": "Przedmioty pasują jedynie, jeśli ich wytrzymałość, zaklęcia i inne właściwości również pasują.", + "create.gui.filter.ignore_data": "Ignoruj dane", + "create.gui.filter.ignore_data.description": "Przedmioty pasują  pomimo ich właściwości.", + + "create.item_attributes.placeable": "jest stawialny", + "create.item_attributes.placeable.inverted": "nie jest stawialny", + "create.item_attributes.consumable": "jadalny", + "create.item_attributes.consumable.inverted": "niejadalny", + "create.item_attributes.smeltable": "może zostać przepalony", + "create.item_attributes.smeltable.inverted": "nie może zostać przepalony", + "create.item_attributes.washable": "może zostać opłukany", + "create.item_attributes.washable.inverted": "nie może zostać opłukany", + "create.item_attributes.smokable": "może być wędzony", + "create.item_attributes.smokable.inverted": "nie może być wędzony", + "create.item_attributes.crushable": "może być rozkruszony", + "create.item_attributes.crushable.inverted": "nie może być rozkruszony", + "create.item_attributes.blastable": "może być stopiony w piecu hutniczym", + "create.item_attributes.blastable.inverted": "nie może być stopiony w piecu hutniczym", + "create.item_attributes.enchanted": "jest zaklęty", + "create.item_attributes.enchanted.inverted": "nie jest zaklęty", + "create.item_attributes.damaged": "jest uszkodzony", + "create.item_attributes.damaged.inverted": "nie jest uszkodzony", + "create.item_attributes.badly_damaged": "jest silnie uszkodzony", + "create.item_attributes.badly_damaged.inverted": "nie jest silnie uszkodzony", + "create.item_attributes.not_stackable": "nie może być grupowany", + "create.item_attributes.not_stackable.inverted": "może być grupowany", + "create.item_attributes.equipable": "może zostać założony", + "create.item_attributes.equipable.inverted": "nie może zostać założony", + "create.item_attributes.furnace_fuel": "jest paliwem dla pieca", + "create.item_attributes.furnace_fuel.inverted": "nie jest paliwem dla pieca", + "create.item_attributes.in_tag": "posiada znacznik %1$s", + "create.item_attributes.in_tag.inverted": "nie posiada znacznika %1$s", + "create.item_attributes.in_item_group": "jest w grupie \"%1$s\"", + "create.item_attributes.in_item_group.inverted": "nie jest w grupie \"%1$s\"", + "create.item_attributes.added_by": "dodany przez %1$s", + "create.item_attributes.added_by.inverted": "niedodany przez %1$s", + "create.item_attributes.has_enchant": "posiada zaklęcie %1$s", + "create.item_attributes.has_enchant.inverted": "nie posiada zaklęcia %1$s", + "create.item_attributes.color": "jest zafarbowane, kolor %1$s", + "create.item_attributes.color.inverted": "nie jest zafarbowane, kolor %1$s", + "create.item_attributes.max_enchanted": "jest zaklęte na maksymalny poziom", + "create.item_attributes.max_enchanted.inverted": "nie jest zaklęte na maksymalny poziom", + "create.item_attributes.has_fluid": "zawiera %1$s", + "create.item_attributes.has_fluid.inverted": "nie zawiera %1$s", + "create.item_attributes.has_name": "posiada nazwę %1$s", + "create.item_attributes.has_name.inverted": "nie posiada nazwy %1$s", + "create.item_attributes.book_author": "autorem jest %1$s", + "create.item_attributes.book_author.inverted": "autorem nie jest %1$s", + "create.item_attributes.book_copy_original": "jest oryginałem", + "create.item_attributes.book_copy_original.inverted": "nie jest oryginałem", + "create.item_attributes.book_copy_first": "jest kopią oryginału", + "create.item_attributes.book_copy_first.inverted": "nie jest kopią oryginału", + "create.item_attributes.book_copy_second": "jest kopią kopii", + "create.item_attributes.book_copy_second.inverted": "nie jest kopią kopii", + "create.item_attributes.book_copy_tattered": "jest postrzępiona", + "create.item_attributes.book_copy_tattered.inverted": "nie jest postrzępiona", + "create.item_attributes.astralsorcery_crystal": "posiada właściwości kryształu %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "nie posiada właściwości kryształu %1$s", + "create.item_attributes.astralsorcery_constellation": "jest dopasowany do %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "nie jest dopasowany do %1$s", + "create.item_attributes.astralsorcery_perk_gem": "posiada dodatkową właściwość %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "nie posiada dodatkowej właściwości %1$s", + "create.item_attributes.astralsorcery_amulet": "ulepsza %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "nie ulepsza %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Brak wybranych właściwości", + "create.gui.attribute_filter.selected_attributes": "Wybrane właściwości:", + "create.gui.attribute_filter.add_attribute": "Dodaj właściwość do listy ", + "create.gui.attribute_filter.add_inverted_attribute": "Dodaj przeciwną właściwość do listy", + "create.gui.attribute_filter.allow_list_disjunctive": "Lista dozwolona (dowolny)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada dowolny z wybranych właściwości.", + "create.gui.attribute_filter.allow_list_conjunctive": "Lista dozwolona (wszystkie)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada WSZYSTKIE z wybranych właściwości.", + "create.gui.attribute_filter.deny_list": "Lista zabroniona", + "create.gui.attribute_filter.deny_list.description": "Przedmioty są przepuszczane jedynie, jeśli nie posiadają ŻADNEGO z wybranych właściwości.", + "create.gui.attribute_filter.add_reference_item": "Dodaj przedmiot źródłowy", + + "create.tooltip.holdForDescription": "Przytrzymaj [%1$s], aby zobaczyć podsumowanie", + "create.tooltip.holdForControls": "Przytrzymaj [%1$s], aby zobaczyć sterowanie", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Wymagana prędkość: %1$s", + "create.tooltip.speedRequirement.none": "Brak", + "create.tooltip.speedRequirement.medium": "Umiarkowana", + "create.tooltip.speedRequirement.high": "Wysoka", + "create.tooltip.stressImpact": "Wpływ na obciążenie: %1$s", + "create.tooltip.stressImpact.low": "Niski", + "create.tooltip.stressImpact.medium": "Umiarkowany\n", + "create.tooltip.stressImpact.high": "Wysoki", + "create.tooltip.stressImpact.overstressed": "Przeciążenie", + "create.tooltip.capacityProvided": "Odporność na obciążenie: %1$s", + "create.tooltip.capacityProvided.low": "Niska", + "create.tooltip.capacityProvided.medium": "Średnia", + "create.tooltip.capacityProvided.high": "Wysoka", + "create.tooltip.generationSpeed": "Wytwarza %1$s %2$s", + "create.tooltip.analogStrength": "Siła analogowa: %1$s/15", + + "create.mechanical_arm.extract_from": "Wyciągaj przedmioty z %1$s", + "create.mechanical_arm.deposit_to": "Wkładaj przedmioty do %1$s", + "create.mechanical_arm.summary": "Mechaniczne ramię ma %1$s wejść i %2$s wyjść.", + "create.mechanical_arm.points_outside_range": "Usunięto %1$s wybranych punktów interakcji z powodu limitów zasięgu", + + "create.weighted_ejector.target_set": "Wybrano cel", + "create.weighted_ejector.target_not_valid": "Wyrzuca do  przylegających bloków (cel był nieprawidłowy)", + "create.weighted_ejector.no_target": "Wyrzuca do  przylegających bloków (nie wybrano celu)", + "create.weighted_ejector.targeting": "Wyrzuca do [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Wielkość wyrzucanego stosu", + + "create.logistics.when_multiple_outputs_available": "Kiedy wybrano wiele wyjść", + + "create.mechanical_arm.selection_mode.round_robin": "Dookoła", + "create.mechanical_arm.selection_mode.forced_round_robin": "Dookoła (wymuszone)", + "create.mechanical_arm.selection_mode.prefer_first": "Preferuj pierwszy cel", + + "create.tunnel.selection_mode.split": "Podziel", + "create.tunnel.selection_mode.forced_split": "Wymuś podział", + "create.tunnel.selection_mode.round_robin": "Dookoła", + "create.tunnel.selection_mode.forced_round_robin": "Dookoła (wymuszone)", + "create.tunnel.selection_mode.prefer_nearest": "Preferuj najbliższe", + "create.tunnel.selection_mode.randomize": "Losowo", + "create.tunnel.selection_mode.synchronize": "Synchronizuj wejścia", + + "create.tooltip.chute.header": "Informacja o zsypie", + "create.tooltip.chute.items_move_down": "Przedmioty w dół", + "create.tooltip.chute.items_move_up": "Przedmioty w górę", + "create.tooltip.chute.no_fans_attached": "Brak przyłączonych wiatraków", + "create.tooltip.chute.fans_push_up": "Wiatraki pchają od dołu", + "create.tooltip.chute.fans_push_down": "Wiatraki pchają od góry", + "create.tooltip.chute.fans_pull_up": "Wiatraki ciągną od góry", + "create.tooltip.chute.fans_pull_down": "Wiatraki ciągną od dołu", + "create.tooltip.chute.contains": "Zawiera: %1$s x%2$s", + + "create.hint.hose_pulley.title": "Niewyczerpany zapas", + "create.hint.hose_pulley": "Wybrane zbiornik cieczy jest uznany za nieskończony", + "create.hint.mechanical_arm_no_targets.title": "Brak celi", + "create.hint.mechanical_arm_no_targets": "Wygląda na to, że żadne _cele_ nie zostały przypisane do tego _mechanicznego_ _ramienia_. Wybierz taśmociągi, składnice, lejki i inne bloki _klikając_ na nie _PPM_, trzymając w _ręce_ _mechaniczne_ _ramię_", + "create.hint.empty_bearing.title": "Aktualizuj łożysko", + "create.hint.empty_bearing": "_Kliknij_ na łożysko _PPM_ pustą ręką, aby _przyczepić_ do niego strukturę zbudowaną z przodu.", + "create.hint.full_deployer.title": "Nadmiar przedmiotów w aplikatorze", + "create.hint.full_deployer": "Wygląda na to, że ten _aplikator_ zawiera _nadmiar_ _przedmiotów_, które muszą zostać _wyciągnięte_. Użyj _leji_, _lejków_ lub innych sposobów, aby uwolnić od przepełnienia.", + + "create.gui.config.overlay1": "Cześć :)", + "create.gui.config.overlay2": "To jest przykładowa nakładka", + "create.gui.config.overlay3": "Kliknij lub przeciągnij myszką", + "create.gui.config.overlay4": "aby przesunąć ten podgląd", + "create.gui.config.overlay5": "Naciśnij ESC, aby opuścić ten ekran", + "create.gui.config.overlay6": "i zapisać nową pozycję", + "create.gui.config.overlay7": "Uruchom \"/create overlay reset\"", + "create.gui.config.overlay8": "aby zresetować pozycję", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Obecne opóźnienie serwera to %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Serwer jest teraz opóźniony o %s >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Serwer wrócił do standardowej prędkości :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: Użyj \"/killtps stop\", aby przywrócić serwer do standardowej prędkości", + "create.command.killTPSCommand.status.usage.1": "[Create]: Użyj \"/killtps start\", aby sztucznie spowolnić serwer\n", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", + + + "_": "->------------------------] Subtitles [------------------------<-", + + "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", + "create.subtitle.slime_added": "Szlam plaska", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", + "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", + "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", + "create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa", + "create.subtitle.schematicannon_launch_block": "Schematoarmata strzela", + "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.schematicannon_finish": "Schematoarmata skończyła", + "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", + "create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", + "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", + "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "PRZYKŁADOWY PRZEDMIOT (jedynie znacznik, że ten dymek istnieje)", + "item.create.example_item.tooltip.summary": "Krótki opis przedmiotu. _Podkreślenia_, ha, podkreślają termin.", + "item.create.example_item.tooltip.condition1": "Kiedy to", + "item.create.example_item.tooltip.behaviour1": "Wtedy ten przedmiot to robi (zachowania pokazują się przy Shifcie)", + "item.create.example_item.tooltip.condition2": "A kiedy to", + "item.create.example_item.tooltip.behaviour2": "Możesz dodać tak wiele zachowań jak chcesz", + "item.create.example_item.tooltip.control1": "Kiedy przyciśnięto Ctrl", + "item.create.example_item.tooltip.action1": "Wyświetla się sterowanie.", + + "block.create.wooden_bracket.tooltip": "DREWNIANY WSPORNIK", + "block.create.wooden_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ drewnianą i przytulną podporą.", + + "block.create.metal_bracket.tooltip": "METALOWY WSPORNIK", + "block.create.metal_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ wytrzymałą, przemysłową podporą.", + + "block.create.copper_casing.tooltip": "MIEDZIANA OBUDOWA", + "block.create.copper_casing.tooltip.summary": "Solidna obudowa dla maszyn, z wieloma zastosowaniami. Przydatna w dekoracji.", + "block.create.copper_casing.tooltip.condition1": "Kiedy użyta na rurze", + "block.create.copper_casing.tooltip.behaviour1": "_Przykrywa_ rurę _miedzianą obudową_.  Połączenia izolowanych rur zostaną _unieruchomione_ i nie będą reagować na zmiany w ich otoczeniu.", + + "block.create.encased_fluid_pipe.tooltip": "IZOLOWANA RURA", + "block.create.encased_fluid_pipe.tooltip.summary": "Rura _przykryta_ miedzianą obudową.", + + "block.create.seat.tooltip": "SIEDZENIE", + "block.create.seat.tooltip.summary": "Usiądź i ciesz się jazdą! Przyczepi gracza do _ruchomej maszyny_.  Również świetne do tworzenia stojących mebli! Dostępne w wielu kolorach.", + "block.create.seat.tooltip.condition1": "Kliknięcie PPM na siedzenie", + "block.create.seat.tooltip.behaviour1": "Sadza gracza na _siedzeniu_. Naciśnij lewy Shift, aby opuścić _siedzenie_.", + + "item.create.blaze_cake.tooltip": "PŁOMIENNE CIASTO", + "item.create.blaze_cake.tooltip.summary": "Pyszna przekąska dla Twoich cięzko pracujących _płomiennych palników_. Rozpala je wszystkie!", + + "block.create.fluid_pipe.tooltip": "RURA", + "block.create.fluid_pipe.tooltip.summary": "Używana do transportu _płynów_. _Mechaniczna pompa_ jest potrzebna, aby wprawić płyny w ruch.", + "block.create.fluid_pipe.tooltip.condition1": "Transport płynów", + "block.create.fluid_pipe.tooltip.behaviour1": "Może połączyć się ze pojemnikami, takimi jak _tygle_ czy _zbiorniki_. Odsłonięte zakończenia rur mogą osuszać lub wypełniać płynami. Uważaj na przecieki!", + "block.create.fluid_pipe.tooltip.condition2": "Kliknięcie PPM z użyciem klucza", + "block.create.fluid_pipe.tooltip.behaviour2": "Tworzy w rurze _okno_, jeśli jest to możliwe.", + + "block.create.hose_pulley.tooltip": "KRĄŻEK Z WĘŻEM", + "block.create.hose_pulley.tooltip.summary": "Używane do _osuszania_ lub _wypełniania_ płynami.", + "block.create.hose_pulley.tooltip.condition1": "Kiedy zasilone siłą obrotową", + "block.create.hose_pulley.tooltip.behaviour1": "_Podnosi_ lub _opuszcza_ wąż; pozycja węża określa, do jakiej _wysokości_ będzie on działał.", + "block.create.hose_pulley.tooltip.condition2": "Kiedy płyny wyciągane są z węża", + "block.create.hose_pulley.tooltip.behaviour2": "Rozpoczyna _osuszanie_ bloków ze zbiornika, do którego opuszczono wąż. Bardzo duże zbiorniki będą uznawane za _nieskończone_.", + "block.create.hose_pulley.tooltip.condition3": "Kiedy płyny pompowane są do węża\n", + "block.create.hose_pulley.tooltip.behaviour3": "Rozpoczyna _wypełnianie_ bloków płynem, aż do wysokości węża.", + + "block.create.fluid_tank.tooltip": "ZBIORNIK", + "block.create.fluid_tank.tooltip.summary": "_Składuje_ wszystkie Twoje ulubione _płyny_. Zmienia rozmiar wraz z wysokością i szerokością.", + "block.create.fluid_tank.tooltip.condition1": "Kliknięcie PPM kluczem", + "block.create.fluid_tank.tooltip.behaviour1": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", + + "block.create.creative_fluid_tank.tooltip": "KREATYWNY ZBIORNIK", + "block.create.creative_fluid_tank.tooltip.summary": "Ten _zbiornik_ pozwala na nieskończone powielanie każdego płynu. Zmienia rozmiar wraz z wysokością i szerokością.", + "block.create.creative_fluid_tank.tooltip.condition1": "Kiedy w zbiorniku", + "block.create.creative_fluid_tank.tooltip.behaviour1": "Wszystko, co _wyciąga_ z tego zbiornika będzie dostarczać _nieskończoną ilość_ wybranego płynu. Płyny wpompowane do tego zbiornika będą niszczone.", + "block.create.creative_fluid_tank.tooltip.condition2": "Kliknięcie PPM kluczem", + "block.create.creative_fluid_tank.tooltip.behaviour2": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", + + "block.create.fluid_valve.tooltip": "ZAWÓR", + "block.create.fluid_valve.tooltip.summary": "Zatrzymuje przepływ płynu przez rurę", + "block.create.fluid_valve.tooltip.condition1": "Kontrola nad przepływem", + "block.create.fluid_valve.tooltip.behaviour1": "Zastosowanie _siły obrotu_ zamknie _zawór_, zatrzymując przepływ płynu. Odwróć kierunek siły obrotu, aby _otworzyć_ zawór.", + + "block.create.mechanical_pump.tooltip": "MECHANICZNA POMPA", + "block.create.mechanical_pump.tooltip.summary": "Pobiera _siłę obrotu_ i używa jej, aby pompować płyn przez _rurę_. Posiada maksymalny zasięg w obie strony. (domyślnie 16 bloków)", + "block.create.mechanical_pump.tooltip.condition1": "Przepływ", + "block.create.mechanical_pump.tooltip.behaviour1": "Zastosowanie _siły obrotu_ wytwarza ciśnienie, które przepycha _płyn_ przez system _rur_. Odwróć kierunek siły obrotu, aby odwrócić kierunek przepływu.", + "block.create.mechanical_pump.tooltip.control1": "Kliknięcie PPM kluczem", + "block.create.mechanical_pump.tooltip.action1": "Odwraca kierunek _pompowania_.", + + "block.create.smart_fluid_pipe.tooltip": "INTELIGENTA RURA", + "block.create.smart_fluid_pipe.tooltip.summary": "Rura z _filtrem_. Może wybrać, jakie płyny mogą zostać przepuszczone.", + "block.create.smart_fluid_pipe.tooltip.condition1": "Kiedy płyny są wepchnięte", + "block.create.smart_fluid_pipe.tooltip.behaviour1": "Inteligentne rury otrzymujące płyn, który nie pasuje do filtra, zablokują przepływ.", + "block.create.smart_fluid_pipe.tooltip.condition2": "Kiedy przylegający do zbiornika", + "block.create.smart_fluid_pipe.tooltip.behaviour2": "Inteligentne rury _rozpoczynające_ przepływ z dowolnego zbiornika będą wyciągać jedynie te płyny, które _pasują_ do _filtra_.", + + "block.create.spout.tooltip": "KANISTER", + "block.create.spout.tooltip.summary": "Przydatny do _napełniania_ płynami.", + "block.create.spout.tooltip.condition1": "Transport płynów", + "block.create.spout.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest położona pod spodem, kanister spróbuje napełnić go przechowywanym wewnątrz _płynem_.", + "block.create.spout.tooltip.condition2": "Automatyzacja płynów", + "block.create.spout.tooltip.behaviour2": "Kanister postawiony nad _taśmociągiem_ lub _składnicą_ automatycznie zareaguje na _pojemniki_ przechodzące pod spodem.", + + "block.create.item_drain.tooltip": "ODPŁYW", + "block.create.item_drain.tooltip.summary": "Metalowa kratka do opróżniania _pojemników_ z _płynami_.", + "block.create.item_drain.tooltip.condition1": "Transport płynów", + "block.create.item_drain.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest wsadzony od boku, odpływ spróbuje opróżnić go do własnego zbiornika. Przedmiot będzie następnie wyrzucony drugą stroną.", + + "item.create.wand_of_symmetry.tooltip": "RÓŻDŻKA SYMETRII", + "item.create.wand_of_symmetry.tooltip.summary": "Idealnie odbija lustrzanie bloki wzdłuż wybranych płaszczyzn.", + "item.create.wand_of_symmetry.tooltip.condition1": "Kiedy w pasku szybkiego wyboru", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Pozostaje aktywna", + "item.create.wand_of_symmetry.tooltip.control1": "Kliknięcie PPM na ziemię", + "item.create.wand_of_symmetry.tooltip.action1": "_Tworzy_ lub _przenosi_ lustro", + "item.create.wand_of_symmetry.tooltip.control2": "Kliknięcie PPM w powietrzu", + "item.create.wand_of_symmetry.tooltip.action2": "_Usuwa_ aktywne lustro", + "item.create.wand_of_symmetry.tooltip.control3": "Kliknięcie PPM w czasie skradania", + "item.create.wand_of_symmetry.tooltip.action3": "Otwiera _ustawienia_.", + + "item.create.handheld_worldshaper.tooltip": "RĘCZNY KSZTAŁTOWACZ", + "item.create.handheld_worldshaper.tooltip.summary": "Poręczne narzędzie do tworzenia _krajobrazów_ i _cech terenu_.", + "item.create.handheld_worldshaper.tooltip.control1": "Kliknięcie LPM na blok", + "item.create.handheld_worldshaper.tooltip.action1": "Przypisuje do narzędzia wybrany blok.", + "item.create.handheld_worldshaper.tooltip.control2": "Kliknięcie PPM na blok", + "item.create.handheld_worldshaper.tooltip.action2": "Stosuje obecnie wybrany _pędzel_ i _narzędzie_ w docelowej lokalizacji.", + "item.create.handheld_worldshaper.tooltip.control3": "Kliknięcie PPM w czasie skradania", + "item.create.handheld_worldshaper.tooltip.action3": "Otwiera _ustawienia_.", + + "item.create.tree_fertilizer.tooltip": "NAWÓZ DO DRZEW", + "item.create.tree_fertilizer.tooltip.summary": "Silna kombinacja minerałów odpowiednich do nawożenia pospolitych gatunków drzew", + "item.create.tree_fertilizer.tooltip.condition1": "Kiedy użyto na sadzonce", + "item.create.tree_fertilizer.tooltip.behaviour1": "Przyspiesza wzrost drzew, _pomimo dostępnej przestrzeni_.", + + "item.create.extendo_grip.tooltip": "WYDŁUŻONY CHWYTAK", + "item.create.extendo_grip.tooltip.summary": "Mocno _wydłuża zasięg_ rąk posiadacza.", + "item.create.extendo_grip.tooltip.condition1": "Kiedy w drugiej ręce", + "item.create.extendo_grip.tooltip.behaviour1": "_Wydłuża zasięg_ głównej ręki.", + + "item.create.filter.tooltip": "FILTR", + "item.create.filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy przedmiotów zawartej w filtrze lub wielu filtrach schowanych jeden w drugi.", + "item.create.filter.tooltip.condition1": "Kiedy w slocie na filtr", + "item.create.filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", + "item.create.filter.tooltip.condition2": "Kliknięcie PPM", + "item.create.filter.tooltip.behaviour2": "Otwiera _ustawienia_.", + + "item.create.attribute_filter.tooltip": "FILTR ATRYBUTOWY", + "item.create.attribute_filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy właściwości przedmiotów zawartej w filtrze.", + "item.create.attribute_filter.tooltip.condition1": "Kiedy w slocie na filtr", + "item.create.attribute_filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", + "item.create.attribute_filter.tooltip.condition2": "Kliknięcie PPM", + "item.create.attribute_filter.tooltip.behaviour2": "Otwiera _ustawienia_.", + + "item.create.empty_schematic.tooltip": "PUSTY SCHEMAT", + "item.create.empty_schematic.tooltip.summary": "Używany, jako składnik do receptur i do pisania w _stole do planowania_.", + + "item.create.schematic.tooltip": "SCHEMAT", + "item.create.schematic.tooltip.summary": "Przechowuje strukturę do postawienia w świecie. Ustaw hologram według uznania i użyj _Schematoarmaty_, aby ją zbudować.", + "item.create.schematic.tooltip.condition1": "Kiedy w ręce", + "item.create.schematic.tooltip.behaviour1": "Może zostać _ustawiona_ z użyciem narzędzi wyświetlonych na ekranie.", + "item.create.schematic.tooltip.control1": "Kliknięcie PPM w czasie skradania", + "item.create.schematic.tooltip.action1": "Otwiera _ustawienia_.", + + "item.create.schematic_and_quill.tooltip": "SCHEMAT Z PIÓREM", + "item.create.schematic_and_quill.tooltip.summary": "Używany do zapisania struktury z Twojego świata do pliku .nbt", + "item.create.schematic_and_quill.tooltip.condition1": "Krok 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Zaznacz dwa rogi prawym przyciskiem myszy.", + "item.create.schematic_and_quill.tooltip.condition2": "Krok 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_[Ctrl]+Przewijaj_ patrząc się na ściany, aby dostosować rozmiar. Kliknij znowu PPM, aby zapisać.", + "item.create.schematic_and_quill.tooltip.control1": "Kliknięcie PPM", + "item.create.schematic_and_quill.tooltip.action1": "Wybierz róg/potwierdź zapisanie.", + "item.create.schematic_and_quill.tooltip.control2": "Trzymane w ręce + Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Zaznacz rogi _w powietrzu_. _Przewijaj_, aby dostosować dystans.", + "item.create.schematic_and_quill.tooltip.control3": "Kliknięcie PPM w czasie skradania", + "item.create.schematic_and_quill.tooltip.action3": "_Resetuje_ i usuwa zaznaczenie.", + + "block.create.schematicannon.tooltip": "SCHEMATOARMATA", + "block.create.schematicannon.tooltip.summary": "Strzela blokami, aby odtworzyć wybrany schemat w świecie. Zużywa przedmioty z sąsiadujących bloków, potrzebuje _prochu_ jako paliwo.", + "block.create.schematicannon.tooltip.condition1": "Kliknięcie PPM", + "block.create.schematicannon.tooltip.behaviour1": "Otwiera _interfejs_.", + + "block.create.schematic_table.tooltip": "STÓŁ DO PLANOWANIA", + "block.create.schematic_table.tooltip.summary": "Przypisuje zapisane schematy do _pustego schematu_.", + "block.create.schematic_table.tooltip.condition1": "Kiedy włożono pusty schemat", + "block.create.schematic_table.tooltip.behaviour1": "Pobiera wybrany plik z Twojego folderu ze schematami", + + "item.create.goggles.tooltip": "GOGLE", + "item.create.goggles.tooltip.summary": "Para okularów służąca do rozszerzania Twojej wizji o _przydatne informacje_.", + "item.create.goggles.tooltip.condition1": "Kiedy założone", + "item.create.goggles.tooltip.behaviour1": "Pokazuje _kolorowe wskazówki_ odpowiadające _prędkości obrotu_ komponentu, jak i również ich _wpływ_ oraz _odporność na obciążenie_.", + "item.create.goggles.tooltip.condition2": "Patrząc na miernik", + "item.create.goggles.tooltip.behaviour2": "Pokazuje szczegółowe informacje na temat _prędkości_ lub _obciążenia_ systemu, do którego miernik jest podłączony.", + "item.create.goggles.tooltip.condition3": "Patrząc na zbiorniki", + "item.create.goggles.tooltip.behaviour3": "Pokazuje szczegółowe informacje na temat _pojemności_ zbiornika i wszelkich _płynów_ przechowywanych wewnątrz.", + + "item.create.wrench.tooltip": "KLUCZ", + "item.create.wrench.tooltip.summary": "Przydatne narzędzie do pracy z maszynami. Może być użyty do _obracania_, _rozbiórki_ i _konfiguracji_ komponentów.", + "item.create.wrench.tooltip.control1": "Kliknięcie PPM na ruchomy blok", + "item.create.wrench.tooltip.action1": "_Obraca_ komponenty do- lub od- strony, na którą kliknięto.", + "item.create.wrench.tooltip.control2": "Kliknięcie PPM w czasie skradania", + "item.create.wrench.tooltip.action2": "_Rozmontowuje_ komponenty i wkłada je z powrotem do _Twojego ekwipunku_.", + + "block.create.nozzle.tooltip": "DYSZA", + "block.create.nozzle.tooltip.summary": "Przyczep do przedniej części _izolowanego wiatraka_, aby rozprowadzić jego efekt na _wszystkie strony_.", + + "block.create.cuckoo_clock.tooltip": "ZEGAR Z KUKUŁKĄ", + "block.create.cuckoo_clock.tooltip.summary": "Kunsztowny wytwór do _dekoracji_ przestrzeni mieszkalnej i _mierzenia czasu_.", + "block.create.cuckoo_clock.tooltip.condition1": "Kiedy zasilony siłą obrotową", + "block.create.cuckoo_clock.tooltip.behaviour1": "Pokazuje _obecny czas_ i gra melodyjkę dwa razy dziennie. Aktywuje się raz w _południe_ i raz o zmierzchu, jak tylko _możliwy jest sen_.", + + "block.create.turntable.tooltip": "TALERZ OBROTOWY", + "block.create.turntable.tooltip.summary": "Zamienia _siłę obrotu_ na _chorobę lokomocyjną_.", + + "block.create.portable_fluid_interface.tooltip": "PRZENOŚNY INTERFEJS PŁYNÓW", + "block.create.portable_fluid_interface.tooltip.summary": "Przenośne miejsce wymiany służące do _transportu płynów_ z- i do _struktury_ przesuwanej przez tłok, łożysko, wagonik, lub krążek. Dwa interfejsy muszą być _skierowane w swoją stronę_ i być _od 1 do 2 bloków_ od siebie.", + "block.create.portable_fluid_interface.tooltip.condition1": "W czasie poruszania", + "block.create.portable_fluid_interface.tooltip.behaviour1": "Współpracuje ze stojącymi _przenośnymi interfejsami magazynu_, aby przetransportować płyn z- lub do maszyny. Rury wpychające lub wyciągające ze _stojącego interfejsu_ będą działać na zbiorniki _bezpośrednio w maszynie_. Maszyna na chwile stanie, aby wymienić płyny.", + "block.create.portable_fluid_interface.tooltip.condition2": "Kiedy zasilony przez Redstone", + "block.create.portable_fluid_interface.tooltip.behaviour2": "Natychmiastowo _ucina_ jakiekolwiek aktywne połączenia.", + + "block.create.stockpile_switch.tooltip": "PRZEŁĄCZNIK ZAWARTOŚCIOWY", + "block.create.stockpile_switch.tooltip.summary": "Przełącza sygnał Redstone bazując na _ilości przedmiotów_ przechowywanych w sąsiadującym bloku. Może posiadać filtr. W odróżnieniu od _komparatora_, przełącznik zawartościowy pozwala na konfigurację _progów_, przy których sygnały są odwrotne.", + "block.create.stockpile_switch.tooltip.condition1": "Kliknięcie PPM", + "block.create.stockpile_switch.tooltip.behaviour1": "Otwiera _ustawienia_.", + + "block.create.content_observer.tooltip": "DETEKTOR ZAWARTOŚCI", + "block.create.content_observer.tooltip.summary": "_Wykrywa przedmioty_ zawarte w sąsiadującym _bloku_ lub _taśmociągu_, które pasują do ustalonego filtra. Kiedy obserwowany blok _zawiera_ ten przedmiot, detektor wyśle _sygnał Redstone_.", + + "block.create.adjustable_crate.tooltip": "REGULOWANA SKRZYNKA", + "block.create.adjustable_crate.tooltip.summary": "Ta skrzynia pozwala na _ręczną kontrolę_ jej pojemności. Może pomieścić do _16 stosów_ dowolnego przedmiotu. Działa z _komparatorami_.", + "block.create.adjustable_crate.tooltip.condition1": "Kliknięcie PPM", + "block.create.adjustable_crate.tooltip.behaviour1": "Otwiera _interfejs_.", + + "block.create.creative_crate.tooltip": "SKRZYNKA BEZ DNA", + "block.create.creative_crate.tooltip.summary": "Ta skrzynia pozwala na _nieskończone powielanie_ dowolnego przedmiotu. Postaw obok _Schematoarmaty_, aby usunąć wszelkie wymagania dotyczące materiałów.", + "block.create.creative_crate.tooltip.condition1": "Kiedy przedmiot jest w slocie na filtr", + "block.create.creative_crate.tooltip.behaviour1": "Bloki _wyciągające_ przedmioty z tego bloku będą miały _nieskończony zapas_ wybranego przedmiotu. Przedmioty włożone do tej skrzynki będą _usuwane_.", + + "block.create.controller_rail.tooltip": "TORY STERUJĄCE", + "block.create.controller_rail.tooltip.summary": "_Wielokierunkowy_ zasilany tor pozwalający na _dokładną kontrolę_ nad _prędkością wagonika_.", + "block.create.controller_rail.tooltip.condition1": "Kiedy zasilone przez Redstone", + "block.create.controller_rail.tooltip.behaviour1": "_Przyspiesza_ lub _spowalnia_ przejeżdżające _wagoniki_, bazując na sile sygnału. Przekazuje sygnał do sąsiadujących torów. Zasilenie dwóch połączonych torów innymi siłami sygnału spowoduje, że tory pomiędzy nimi będą miały stopniowo zmieniającą się siłę sygnału.", + + "item.create.sand_paper.tooltip": "PAPIER ŚCIERNY", + "item.create.sand_paper.tooltip.summary": "Szorstki papier używany do _polerowania_ materiałów. Może być automatycznie wykorzystywany z użyciem _aplikatora_.", + "item.create.sand_paper.tooltip.condition1": "Kiedy użyto", + "item.create.sand_paper.tooltip.behaviour1": "_Poleruje_ przedmioty trzymane w _drugiej ręce_ lub _leżące na ziemi_ w linii wzroku.", + + "item.create.builders_tea.tooltip": "HERBATKA BUDOWNICZEGO", + "item.create.builders_tea.tooltip.summary": "Idealny napój na początek dnia - _sycący_ i _motywujący_", + + "item.create.refined_radiance.tooltip": "ŚWIETLISTY MATERIAŁ", + "item.create.refined_radiance.tooltip.summary": "Chromatyczny materiał powstały z _absorbcji światła_.", + + "item.create.shadow_steel.tooltip": "MROCZNA STAL", + "item.create.shadow_steel.tooltip.summary": "Chromatyczny materiał powstały w _otchłani_.", + + "item.create.minecart_coupling.tooltip": "ŁĄCZNIK WAGONIKÓW", + "item.create.minecart_coupling.tooltip.summary": "_Łączy_ wszystkie Twoje _wagoniki_ lub _maszyny torowe_, tworząc majestatyczny pociąg.", + "item.create.minecart_coupling.tooltip.condition1": "Kiedy użyto na wagoniku", + "item.create.minecart_coupling.tooltip.behaviour1": "_Łączy_ dwa wagoniki, próbując utrzymać je w stałej odległości od siebie.", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "Praca w toku!", + "create.tooltip.randomWipDescription0": "Trzymać z dala od dzieci.", + "create.tooltip.randomWipDescription1": "Mała panda ginie za każdym razem, kiedy patrzysz na ten przedmiot. Za. Każdym. Razem.", + "create.tooltip.randomWipDescription2": "Używaj na własną odpowiedzialność.", + "create.tooltip.randomWipDescription3": "To nie ten przedmiot, którego szukasz, proszę się rozejść.", + "create.tooltip.randomWipDescription4": "Ten przedmiot ulegnie autodestrukcji za 10 sekund. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Uwierz mi, jest bezużyteczny.", + "create.tooltip.randomWipDescription6": "Używając tego przedmiotu, zgadzasz się na warunki umowy.", + "create.tooltip.randomWipDescription7": "Ten przedmiot chyba nie jest dla Ciebie. A może ten?", + "create.tooltip.randomWipDescription8": "Użyj tego i natychmiast będziesz tego żałował.", + + + "_": "->------------------------] Ponder Content [------------------------<-", + + "create.ponder.hold_to_ponder": "Przytrzymaj [%1$s], aby przeanalizować", + "create.ponder.subject": "Temat tej sceny", + "create.ponder.pondering": "Temat analizy:", + "create.ponder.identify_mode": "Tryb identyfikacji aktywny. Naciśnij [%1$s], aby wyłączyć", + "create.ponder.associated": "Powiązane hasła", + "create.ponder.close": "Zamknij", + "create.ponder.identify": "Identyfikacja", + "create.ponder.next": "Następna scena", + "create.ponder.previous": "Poprzednia scena", + "create.ponder.replay": "Powtórka", + "create.ponder.think_back": "Powrót", + "create.ponder.slow_text": "Komfortowe czytanie", + "create.ponder.shared.movement_anchors": "Z pomocą stelaży lub Super Glue, większe struktury mogą być przesuwane.", + "create.ponder.shared.rpm32": "32 Ob/min", + "create.ponder.shared.sneak_and": "Skradanie +", + "create.ponder.shared.storage_on_contraption": "Pojemniki przyłączone do maszyny będą podnosiły przedmioty automatycznie", + "create.ponder.shared.behaviour_modify_wrench": "To zachowanie może być zmodyfikowane przy pomocy klucza", + "create.ponder.shared.rpm8": "8 Ob/min", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm16_source": "Źródło: 16 Ob/min", + "create.ponder.shared.rpm16": "16 Ob/min", + "create.ponder.tag.kinetic_sources": "Źródła siły obrotowej", + "create.ponder.tag.kinetic_sources.description": "Komponenty, które generują siłę obrotu", + "create.ponder.tag.contraption_actor": "Komponenty aktywne maszyn", + "create.ponder.tag.contraption_actor.description": "Komponenty, które posiadają specjalne zachowanie będąc podłączonymi do maszyny", + "create.ponder.tag.arm_targets": "Cele dla mechanicznego ramienia", + "create.ponder.tag.arm_targets.description": "Komponenty, które mogą być wybrane, jako wejście lub wyjście dla mechanicznego ramienia", + "create.ponder.tag.logistics": "Transport przedmiotów", + "create.ponder.tag.logistics.description": "Komponenty, które pomagają w transporcie przedmiotów", + "create.ponder.tag.movement_anchor": "Komponenty ruchome", + "create.ponder.tag.movement_anchor.description": "Komponenty, które pozwalają na tworzenie ruchomych maszyn, poruszając ją na wiele różnych sposobów.", + "create.ponder.tag.creative": "Tryb kreatywny", + "create.ponder.tag.creative.description": "Komponenty niedostępne na trybie przetrwania", + "create.ponder.tag.kinetic_relays": "Bloki obrotowe", + "create.ponder.tag.kinetic_relays.description": "Komponenty, które pomagają w przekazywaniu siły obrotowej w inne miejsca", + "create.ponder.tag.windmill_sails": "Bloki żaglo-podobne", + "create.ponder.tag.windmill_sails.description": "Bloki, które dokładają się do siły, z jaką obracają się łopaty maszyny wiatrakowej.", + "create.ponder.tag.contraption_assembly": "Bloki do tworzenia maszyn", + "create.ponder.tag.contraption_assembly.description": "Narzędzia i komponenty używane do konstrukcji ruchomych maszyn", + "create.ponder.tag.decoration": "Dekoracje", + "create.ponder.tag.decoration.description": "Komponenty używane głównie do celów estetycznych", + "create.ponder.tag.kinetic_appliances": "Urządzenia obrotowe", + "create.ponder.tag.kinetic_appliances.description": "Komponenty używające siły obrotowej", + "create.ponder.tag.redstone": "Komponenty logiczne", + "create.ponder.tag.redstone.description": "Komponenty przydatne w Redstonie", + "create.ponder.tag.fluids": "Manipulator płynów", + "create.ponder.tag.fluids.description": "Komponenty przydatne przy pracy z płynami", + + "create.ponder.adjustable_pulse_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników pulsu", + "create.ponder.adjustable_pulse_repeater.text_1": "Regulowane przekaźniki pulsu emitują krótki puls po opóźnieniu", + "create.ponder.adjustable_pulse_repeater.text_2": "Używając rolki w myszce można modyfikować opóźnienie", + "create.ponder.adjustable_pulse_repeater.text_3": "Opóźnienia mogą mieć nawet do 30 minut", + + "create.ponder.adjustable_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników\n", + "create.ponder.adjustable_repeater.text_1": "Regulowane przekaźniki zachowują się podobnie do zwykłych przekaźników", + "create.ponder.adjustable_repeater.text_2": "Ładują się przez określony czas...", + "create.ponder.adjustable_repeater.text_3": "...i stygną przez ten sam czas", + "create.ponder.adjustable_repeater.text_4": "Używając rolki w myszce można modyfikować czas ładowania", + "create.ponder.adjustable_repeater.text_5": "Czasy ładowania mogą mieć nawet do 30 minut", + + "create.ponder.analog_lever.header": "Kontrola sygnałów z wykorzystaniem dźwigni analogowej", + "create.ponder.analog_lever.text_1": "Dźwignie analogowe są kompaktowymi i dokładnymi źródłami sygnału Redstone", + "create.ponder.analog_lever.text_2": "Kliknij PPM, aby zwiększyć wysyłaną przez nie siłę sygnału ", + "create.ponder.analog_lever.text_3": "Kliknij PPM skradając się, aby zmniejszyć wysyłaną przez nie siłę sygnału ", + + "create.ponder.andesite_tunnel.header": "Używanie andezytowych tuneli", + "create.ponder.andesite_tunnel.text_1": "Andezytowe tunele mogą być użyte do przykrycia Twoich taśmociągów", + "create.ponder.andesite_tunnel.text_2": "Kiedy andezytowy tunel ma połączenie z jego boku...", + "create.ponder.andesite_tunnel.text_3": "...będzie oddzielał dokładnie jeden przedmiot na każde wyjście", + "create.ponder.andesite_tunnel.text_4": "Reszta przedmiotów będzie kontynuowało swoją podróż", + + "create.ponder.basin.header": "Przetwarzanie przedmiotów w tyglu", + "create.ponder.basin.text_1": "Tygiel może przechowywać przedmioty i płyny do późniejszej obróbki", + "create.ponder.basin.text_2": "Po obróbce, tygle spróbują wyrzucić gotowy przedmiot z boku, jeden blok pod spodem", + "create.ponder.basin.text_3": "Jeśli stoi tam odpowiedni komponent, z boku tygla pojawi się wylot", + "create.ponder.basin.text_4": "Jest tu wiele opcji", + "create.ponder.basin.text_5": "Produkty będą pobrane przez poniższy pojemnik", + "create.ponder.basin.text_6": "Bez wylotu, tygiel zachowa produkty przez niego wytworzone", + "create.ponder.basin.text_7": "Może to być przydatne, jeśli przedmioty te muszą być ponownie użyte jako składniki", + "create.ponder.basin.text_8": "Gotowe przedmioty muszą być wyciągnięte z tygla", + "create.ponder.basin.text_9": "Filtr może być przydatny, aby zapobiec wyciąganiu nieprzerobionych przedmiotów", + + "create.ponder.bearing_modes.header": "Tryby ruchu dla mechanicznego łożyska", + "create.ponder.bearing_modes.text_1": "Kiedy zatrzymane, mechaniczne łożysko umieści strukturę w najbliższej możliwej przestrzeni", + "create.ponder.bearing_modes.text_2": "Może zostać ustawiony, aby nigdy nie powracał do stałych bloków, lub tylko blisko kąta, z jakiego zaczął", + + "create.ponder.belt_casing.header": "Przykrywanie taśmociągów", + "create.ponder.belt_casing.text_1": "Mosiężne lub andezytowe obudowy mogą być użyte do dekoracji taśmociągów", + "create.ponder.belt_casing.text_2": "Klucz może zostać użyty do usunięcia obudowy", + + "create.ponder.belt_connector.header": "Używanie taśmociągów", + "create.ponder.belt_connector.text_1": "Kliknięcie PPM na dwa wały połączy je taśmociągiem", + "create.ponder.belt_connector.text_2": "Przypadkowe wybory mogą być anulowane klikając na nie PPM skradając się", + "create.ponder.belt_connector.text_3": "Dodatkowe wały mogą zostać dodane w środku taśmociągu", + "create.ponder.belt_connector.text_4": "Wały połączone taśmociągiem będą się obracały z taką samą prędkością i kierunkiem", + "create.ponder.belt_connector.text_5": "Dodatkowe wały mogą zostać usunięte przy pomocy klucza", + "create.ponder.belt_connector.text_6": "Taśmociągi mogą zostać zabarwione w celach estetycznych", + + "create.ponder.belt_directions.header": "Prawidłowe orientacje taśmociągów", + "create.ponder.belt_directions.text_1": "Taśmociągi nie mogą się łączyć w losowych kierunkach", + "create.ponder.belt_directions.text_2": "1. Mogą się łączyć poziomo", + "create.ponder.belt_directions.text_3": "2. Mogą się łączyć ukośnie", + "create.ponder.belt_directions.text_4": "3. Mogą się łączyć pionowo", + "create.ponder.belt_directions.text_5": "4. I mogą łączyć pionowe wały poziomo", + "create.ponder.belt_directions.text_6": "To są wszystkie możliwe kierunki połączeń. Taśmociągi mogą mieć dowolną długość od 2 do 20 bloków", + + "create.ponder.belt_transport.header": "Używanie taśmociągów w celach logistycznych", + "create.ponder.belt_transport.text_1": "Ruchome taśmociągi będą przesuwały przedmioty lub inne byty", + "create.ponder.belt_transport.text_2": "Kliknij PPM pustą ręką, aby zabrać przedmiot z taśmociągu", + + "create.ponder.blaze_burner.header": "Napełnianie płomiennych palników", + "create.ponder.blaze_burner.text_1": "Płomienne palniki dają ciepło potrzebne do obróbki niektórych przedmiotów w tyglu", + "create.ponder.blaze_burner.text_2": "Aby uzyskać ciepło, płomyk uwięziony wewnątrz musi dostać jakieś łatwopalne przedmioty", + "create.ponder.blaze_burner.text_3": "Z użyciem płomiennego ciasta, palnik może uzyskać szczególnie wysoką temperaturę", + "create.ponder.blaze_burner.text_4": "Dostarczanie płomykowi przedmiotów może zostać zautomatyzowane z użyciem aplikatorów lub mechanicznych ramion", + + "create.ponder.brass_funnel.header": "Mosiężny lejek", + "create.ponder.brass_funnel.text_1": "Andezytowe lejki mogą pobierać jedynie pojedyncze przedmioty", + "create.ponder.brass_funnel.text_2": "Mosiężne lejki mogą pobierać nawet pełne stosy", + "create.ponder.brass_funnel.text_3": "Przewijanie na slocie filtrującym pozwala na precyzyjną kontrolę nad maksymalną wielkością stosu", + "create.ponder.brass_funnel.text_4": "Użycie przedmiotów patrząc na slot filtrujący spowoduje, że lejek będzie przesyłał tylko pasujące przedmioty", + + "create.ponder.brass_tunnel.header": "Używanie mosiężnych tuneli", + "create.ponder.brass_tunnel.text_1": "Mosiężne tunele mogą być użyte do przykrycia Twoich taśmociągów", + "create.ponder.brass_tunnel.text_2": "Mosiężne tunele posiadają slot filtrujący na każdej otwartej stronie", + "create.ponder.brass_tunnel.text_3": "Filtry przy wejściach zwyczajnie nie przepuszczają niepasujących przedmiotów", + "create.ponder.brass_tunnel.text_4": "Filtry przy wyjściach mogą być użyte do sortowania przedmiotów", + "create.ponder.brass_tunnel.text_5": "Jeśli przedmiot ma wiele możliwych wyjść, tryb dystrybucji zdecyduje jak mają się zachować", + "create.ponder.brass_tunnel.text_6": "Tunele na przylegających taśmociągach stworzą połączenie", + "create.ponder.brass_tunnel.text_7": "Przybyłe przedmioty będą dystrybuowane na wszystkie połączone wyjścia", + "create.ponder.brass_tunnel.text_8": "Przedmioty mogą być również wrzucone prosto do tunelu", + + "create.ponder.brass_tunnel_modes.header": "Tryby dystrybucji mosiężnego tunelu", + "create.ponder.brass_tunnel_modes.text_1": "Tryb dystrybucji mosiężnego tunelu może zostać wybrany z użyciem klucza", + "create.ponder.brass_tunnel_modes.text_10": "'Synchronizuj wejścia' jest trybem unikalnym dla mosiężnych tuneli", + "create.ponder.brass_tunnel_modes.text_11": "Przedmioty są przepuszczane jedynie, kiedy przed każdym połączonym tunelem czeka przedmiot", + "create.ponder.brass_tunnel_modes.text_12": "Dzięki temu mamy pewność, że każdy taśmociąg przesyła przedmioty z taką samą szybkością", + "create.ponder.brass_tunnel_modes.text_2": "Tryb 'Podziel' będzie starał się rozdzielić przedmioty do każdego wyjścia po równo", + "create.ponder.brass_tunnel_modes.text_3": "Jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", + "create.ponder.brass_tunnel_modes.text_4": "Tryb 'Wymuś podział' nigdy nie pominie żadnego wyjścia, a zamiast tego będzie czekał, aż wszystkie będą wolne", + "create.ponder.brass_tunnel_modes.text_5": "Tryb 'Dookoła' zachowuje wielkość stosu, i rozprowadza je do każdego wyjścia po kolei", + "create.ponder.brass_tunnel_modes.text_6": "Znowu: jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", + "create.ponder.brass_tunnel_modes.text_7": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia", + "create.ponder.brass_tunnel_modes.text_8": "Tryb 'Preferuj najbliższe' priorytetyzuje najbliższe wyjście od wejścia, z którego przybył przedmiot", + "create.ponder.brass_tunnel_modes.text_9": "Tryb 'Losowo' rozdystrybuuje całe stosy do losowych wyjść", + + "create.ponder.cart_assembler.header": "Przesuwanie maszyn z użyciem montera wagoników", + "create.ponder.cart_assembler.text_1": "Zasilony monter wagoników przyczepia dołączone struktury do przejeżdżających wagoników", + "create.ponder.cart_assembler.text_2": "Niezasilony, odczepia struktury on przejeżdżających wagoników", + "create.ponder.cart_assembler.text_3": "Klucz pomoże Ci przenieść gotowy wagonik w inne miejsce", + + "create.ponder.cart_assembler_dual.header": "Konstruowanie wielowagonikowych struktur", + "create.ponder.cart_assembler_dual.text_1": "Jeśli dwa montery wagoników dzielą ze sobą jedną strukturę...", + "create.ponder.cart_assembler_dual.text_2": "...zasilenie dowolnego z nich przyczepi konstrukcję do obu wagoników", + "create.ponder.cart_assembler_dual.text_3": "Wagoniki będą się zachowywać jak te połączone łącznikiem", + + "create.ponder.cart_assembler_modes.header": "Dostosowywanie orientacji maszyn w wagoniku", + "create.ponder.cart_assembler_modes.text_1": "Maszyny w wagoniku obracają się wraz z wagonikiem", + "create.ponder.cart_assembler_modes.text_2": "Jeśli monter jest ustawiony na tryb 'Zablokuj obrót', maszyna nigdy nie zmieni swojej orientacji", + + "create.ponder.cart_assembler_rails.header": "Inne typy wagoników i torów", + "create.ponder.cart_assembler_rails.text_1": "Montery wagoników stojące na zwykłych torach nie zmienią prędkości przejeżdżającego wagonika", + "create.ponder.cart_assembler_rails.text_2": "Jeśli stoi na zasilanych lub sterujących torach, wagonik będzie stał w miejscu tak długo, aż nie zostaną tory zasilone", + "create.ponder.cart_assembler_rails.text_3": "Inne typy wagoników mogą być użyte jako baza dla maszyny", + "create.ponder.cart_assembler_rails.text_4": "Wagoniki z piecem będą ciągle zasilane, pobierając paliwo z doczepionych pojemników", + + "create.ponder.chain_drive.header": "Przekazywanie siły obrotowej z użyciem przekaźników łańcuchowych", + "create.ponder.chain_drive.text_1": "Przekaźniki łańcuchowe przekazują obroty do wszystkich połączonych przekaźników", + "create.ponder.chain_drive.text_2": "Wszystkie wały połączone w ten sposób będą obracać się w tą samą stronę", + "create.ponder.chain_drive.text_3": "Dowolna część w rzędzie może być obrócona o 90 stopni", + + "create.ponder.chain_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników łańcuchowych", + "create.ponder.chain_gearshift.text_1": "Niezasilone przekładniki łańcuchowe zachowują się dokładnie tak samo jak przekaźniki łańcuchowe", + "create.ponder.chain_gearshift.text_2": "Kiedy zasilone, prędkość przekazywana do pozostałych przekładników jest podwojona", + "create.ponder.chain_gearshift.text_3": "Jeśli zasilony przekładnik nie jest źródłem obrotów, jego prędkość będzie zmniejszona dwukrotnie", + "create.ponder.chain_gearshift.text_4": "W oby przypadkach, pozostałe przekładniki będą pracować z dwukrotnie większą prędkością niż ten, który jest zasilony", + "create.ponder.chain_gearshift.text_5": "Z użyciem sygnałów analogowych, ta różnica może być dostosowana z większą dokładnością - pomiędzy 1 a 2x", + "create.ponder.chain_gearshift.text_6": "12 Ob/min", + + "create.ponder.chute.header": "Transport przedmiotów w dół z użyciem zsypów", + "create.ponder.chute.text_1": "Zsypy mogą transportować przedmioty pionowo z- i do pojemników", + "create.ponder.chute.text_2": "Używając klucza można stworzyć okno", + "create.ponder.chute.text_3": "Stawiając zsyp na bocznej stronie innego zsypu, będzie on skośny", + + "create.ponder.chute_upward.header": "Transport przedmiotów w górę przez zsypy", + "create.ponder.chute_upward.text_1": "Używając izolowanych wiatraków pod zsypem możliwy jest transport przedmiotów w górę zsypu", + "create.ponder.chute_upward.text_2": "Patrzenie na zsyp przez Gogle Inżyniera pokazuje informacje o kierunku funkcjonowania zsypu", + "create.ponder.chute_upward.text_3": "Od 'zablokowanej' strony przedmioty muszą być wkładane/wyciągane od boku", + + "create.ponder.clockwork_bearing.header": "Używanie mechanizmu zegarowego", + "create.ponder.clockwork_bearing.text_1": "Mechanizmy zegarowe przyczepiają do siebie bloki, które mają z przodu", + "create.ponder.clockwork_bearing.text_2": "Po dostarczeniu siły obrotowej, struktura obróci się, pokazując obecną godzinę", + "create.ponder.clockwork_bearing.text_3": "3:00", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "Kliknij PPM na mechanizm, aby zatrzymać lub rozpocząć obrót struktury", + "create.ponder.clockwork_bearing.text_6": "Przed wskazówką godzinową, można dodać kolejną strukturę", + "create.ponder.clockwork_bearing.text_7": "Upewnij się, że obie struktury nie są ze sobą połączone", + "create.ponder.clockwork_bearing.text_8": "Druga struktura będzie działać jak wskazówka minutowa", + + "create.ponder.clutch.header": "Kontrolowanie obrotu z użyciem sprzęgła", + "create.ponder.clutch.text_1": "Sprzęgło przekazuje obrót w linii prostej", + "create.ponder.clutch.text_2": "Zasilony, przerywa połączenie", + + "create.ponder.cog_speedup.header": "Przekładnia z kół zębatych", + "create.ponder.cog_speedup.text_1": "Duże i małe koła zębate mogą być połączone po ukosie", + "create.ponder.cog_speedup.text_2": "Przekazując z dużego koła na małe, prędkość wzrośnie dwukrotnie", + "create.ponder.cog_speedup.text_3": "Przekazując na odwrót, prędkość spadnie dwukrotnie", + + "create.ponder.cogwheel.header": "Przekazywanie obrotu z użyciem kół zębatych", + "create.ponder.cogwheel.text_1": "Koła zębate przekazują obrót do sąsiadujących kół", + "create.ponder.cogwheel.text_2": "Koła połączone w ten sposób będą obracać się w przeciwnych kierunkach", + + "create.ponder.creative_motor.header": "Generowanie siły obrotowej z użyciem kreatywnego silnika", + "create.ponder.creative_motor.text_1": "Kreatywny silnik to kompaktowe i regulowane źródło siły obrotowej", + "create.ponder.creative_motor.text_2": "Przewijanie patrząc na tylny panel zmienia prędkość obrotu", + + "create.ponder.crushing_wheels.header": "Kruszenie przedmiotów", + "create.ponder.crushing_wheels.text_1": "Para kół kruszących kruszy przedmioty niezwykle efektywnie", + "create.ponder.crushing_wheels.text_2": "Powinny się one kręcić w przeciwnych kierunkach", + "create.ponder.crushing_wheels.text_3": "Przedmioty wrzucone od góry będą kruszone", + "create.ponder.crushing_wheels.text_4": "Przedmioty mogą zostać wrzucone i odebrane automatycznie", + + "create.ponder.deployer.header": "Używanie aplikatora", + "create.ponder.deployer.text_1": "Aplikator może imitować niektóre zachowania gracza, z użyciem siły obrotowej", + "create.ponder.deployer.text_10": "Kliknij PPM jego przód, aby dać mu przedmiot", + "create.ponder.deployer.text_11": "Przedmioty mogą też zostać dostarczone automatycznie", + "create.ponder.deployer.text_12": "Aplikatory posiadają slot filtrujący", + "create.ponder.deployer.text_13": "Kiedy filtr jest skonfigurowany, aplikator użyje tylko pasujących przedmiotów", + "create.ponder.deployer.text_14": "Od teraz jedynie pasujące przedmioty mogą być włożone...", + "create.ponder.deployer.text_15": "...i jedynie niepasujące przedmioty mogą być wyciągnięte", + "create.ponder.deployer.text_2": "Aplikator może używać przedmiotów jedynie 2 bloki przed nim", + "create.ponder.deployer.text_3": "Bloki bezpośrednio przed nim nie ograniczają go", + "create.ponder.deployer.text_4": "Aplikatory mogą:", + "create.ponder.deployer.text_5": "Stawiać bloki,", + "create.ponder.deployer.text_6": "Używać przedmiotów,", + "create.ponder.deployer.text_7": "Aktywować bloki,", + "create.ponder.deployer.text_8": "Kopać bloki", + "create.ponder.deployer.text_9": "i atakować moby", + + "create.ponder.deployer_contraption.header": "Używanie aplikatorów w maszynach", + "create.ponder.deployer_contraption.text_1": "Kiedy aplikatory są przesuwane, jako część ruchomej maszyny...", + "create.ponder.deployer_contraption.text_2": "...aktywują się przy każdym odwiedzonym bloku, pobierając przedmioty z pojemników przyczepionych do maszyny", + "create.ponder.deployer_contraption.text_3": "Slot filtrujący może być użyty do sprecyzowania, jakich przedmiotów używać", + + "create.ponder.deployer_modes.header": "Tryby aplikatora", + "create.ponder.deployer_modes.text_1": "Domyślnie, aplikator imituje prawe kliknięcie", + "create.ponder.deployer_modes.text_2": "Może być przestawiony na lewe kliknięcie używając klucza", + + "create.ponder.deployer_redstone.header": "Kontrolowanie aplikatorów z użyciem Redstone'a", + "create.ponder.deployer_redstone.text_1": "Zasilone przez Redstone, aplikatory nie aktywują się", + "create.ponder.deployer_redstone.text_2": "Przed zatrzymaniem, aplikatory dokończą już zaczętą czynność", + "create.ponder.deployer_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc aplikator dokładnie raz", + + "create.ponder.depot.header": "Używanie składnic", + "create.ponder.depot.text_1": "Składnice działają jak nieruchome elementy taśmociągu", + "create.ponder.depot.text_2": "Kliknij PPM, aby ręcznie położyć lub podnieść z niej przedmiot", + "create.ponder.depot.text_3": "Podobnie jak taśmociągi, składnica może dostarczać przedmioty do obróbki...", + "create.ponder.depot.text_4": "…jak i również dla mechanicznych ramion", + + "create.ponder.empty_blaze_burner.header": "Używanie pustych płomiennych palników", + "create.ponder.empty_blaze_burner.text_1": "Kliknij PPM na Płomyka trzymają w ręce pusty palnik, aby uwięzić go w środku", + "create.ponder.empty_blaze_burner.text_2": "Ewentualnie, Płomyk może być zabrany prosto z jego Spawnera", + "create.ponder.empty_blaze_burner.text_3": "Masz teraz idealne źródło ciepła dla przeróżnych maszyn", + "create.ponder.empty_blaze_burner.text_4": "Dla celów dekoracyjnych, puste palniki można też zapalić krzesiwem", + "create.ponder.empty_blaze_burner.text_5": "Nie będzie on dawał jednak ciepła", + + "create.ponder.fan_direction.header": "Przepływ powietrza przez izolowane wiatraki", + "create.ponder.fan_direction.text_1": "Izolowane wiatraki używają siły obrotowej, aby wytworzyć przepływ powietrza", + "create.ponder.fan_direction.text_2": "Siła i kierunek przepływu zależy od właściwości siły obrotu", + + "create.ponder.fan_processing.header": "Obróbka przedmiotów z użyciem izolowanych wiatraków", + "create.ponder.fan_processing.text_1": "Przepływając przez lawę, powietrze staje się gorące", + "create.ponder.fan_processing.text_2": "Przedmioty, które wpadną na jego drogę będą wytopione", + "create.ponder.fan_processing.text_3": "Wrzucone jedzenie będzie spalone na popiół", + "create.ponder.fan_processing.text_4": "Zamiast lawy można użyć ognia, aby wędzić surowe jedzenie", + "create.ponder.fan_processing.text_5": "Powietrze przepływające przez wodę będzie płukało przedmioty", + "create.ponder.fan_processing.text_6": "W ten sposób z niepozornych przedmiotów można otrzymać przedmioty znacznie bardziej interesujące...", + "create.ponder.fan_processing.text_7": "Prędkość wiatraka nie wpływa na szybkość obróbki, a jedynie na jego zasięg!", + "create.ponder.fan_processing.text_8": "Przepływ powietrza działa również na przedmioty na taśmociągach lub składnicach", + + "create.ponder.fan_source.header": "Generowanie siły obrotowej z użyciem izolowanych wiatraków", + "create.ponder.fan_source.text_1": "Wiatraki skierowane w stronę źródła ciepła generują siłę obrotową", + "create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów", + + "create.ponder.flywheel.header": "Generowanie siły obrotowej z użyciem koła zamachowego", + "create.ponder.flywheel.text_1": "Koła zamachowe są wymagane, aby generować siłę obrotową przy pomocy silnika spalinowego", + "create.ponder.flywheel.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", + "create.ponder.flywheel.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", + + "create.ponder.funnel_compat.header": "Kompatybilność lejków", + "create.ponder.funnel_compat.text_1": "Lejki działają też z wieloma innymi komponentami", + "create.ponder.funnel_compat.text_2": "Pionowe piły", + "create.ponder.funnel_compat.text_3": "Składnice", + "create.ponder.funnel_compat.text_4": "Odpływy", + + "create.ponder.funnel_direction.header": "Kierunek transportu", + "create.ponder.funnel_direction.text_1": "Postawiony normalnie, wyciąga przedmioty z pojemnika", + "create.ponder.funnel_direction.text_2": "Postawiony w czasie skradania, wkłada przedmioty do pojemnika", + "create.ponder.funnel_direction.text_3": "Używając klucza, lejek może być odwrócony już po postawieniu", + "create.ponder.funnel_direction.text_4": "Takie same zasady stosują się do większości orientacji", + "create.ponder.funnel_direction.text_5": "Lejki na taśmociągach będą wyciągały/wkładały, bazując na ich kierunku poruszania się", + + "create.ponder.funnel_intro.header": "Używanie lejków", + "create.ponder.funnel_intro.text_1": "Lejki są idealne to transportu przedmiotów z- i do pojemników", + + "create.ponder.funnel_redstone.header": "Kontrola Redstonem", + "create.ponder.funnel_redstone.text_1": "Zasilenie spowoduje, że lejek przestanie działać", + + "create.ponder.funnel_transfer.header": "Bezpośredni transport", + "create.ponder.funnel_transfer.text_1": "Lejki nie mogą bezpośrednio transportować pomiędzy zamkniętymi pojemnikami", + "create.ponder.funnel_transfer.text_2": "Zsypy lub inteligentne zsypy mogą bardziej się do tego nadawać", + "create.ponder.funnel_transfer.text_3": "To samo tyczy się transportu poziomego. Taśmociąg może tutaj pomóc", + + "create.ponder.furnace_engine.header": "Generowanie siły obrotowej z użyciem silnika spalinowego", + "create.ponder.furnace_engine.text_1": "Silniki spalinowe generują siłę obrotową, gdy podłączonym do niego piec jest aktywny", + "create.ponder.furnace_engine.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", + "create.ponder.furnace_engine.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", + + "create.ponder.gantry_carriage.header": "Używanie przenośników suwnicowych", + "create.ponder.gantry_carriage.text_1": "Przenośnik suwnicowy może być zamontowany i przesuwany po suwnicy", + "create.ponder.gantry_carriage.text_2": "Może on przenosić dołączone bloki", + + "create.ponder.gantry_cascaded.header": "Kaskadowe suwnice", + "create.ponder.gantry_cascaded.text_1": "Suwnice można dołączyć do przenośnika suwnicowego bez użycia Super Glue", + "create.ponder.gantry_cascaded.text_2": "To samo tyczy się przenośników zamontowanych na przesuwanej suwnicy", + "create.ponder.gantry_cascaded.text_3": "Dlatego więc system suwnic może posiadać wiele osi ruchu", + + "create.ponder.gantry_direction.header": "Kierunek ruchu przenośnika", + "create.ponder.gantry_direction.text_1": "Suwnice mogą mieć odwrotne orientacje", + "create.ponder.gantry_direction.text_2": "Kierunek ruchu przenośnika zależy od orientacji jego suwnicy", + "create.ponder.gantry_direction.text_3": "…jak i kierunku obrotu suwnicy", + "create.ponder.gantry_direction.text_4": "Te same zasady stosują się do obrotu dołączonych elementów", + + "create.ponder.gantry_redstone.header": "Przenoszenie obrotu przez przenośniki", + "create.ponder.gantry_redstone.text_1": "Zasilone suwnice zatrzymują swoje przenośniki", + "create.ponder.gantry_redstone.text_2": "Zamiast tego, jej obrót przekazywany jest do wyjściowego wała przenośnika", + + "create.ponder.gantry_shaft.header": "Używanie suwnic", + "create.ponder.gantry_shaft.text_1": "Suwnice są podstawą całego mechanizmu suwnicowego. Dołączone przenośniki będą poruszać się wzdłuż suwnic", + "create.ponder.gantry_shaft.text_2": "Mechanizmy suwnicowe mogą przesuwać dołączone bloki", + + "create.ponder.gearbox.header": "Przenoszenie siły obrotowej z użyciem przekładni", + "create.ponder.gearbox.text_1": "Zmiany osi obrotu mogą bardzo szybko stać się bardzo duże", + "create.ponder.gearbox.text_2": "Przekładnia jest bardziej kompaktową wersją tego mechanizmu", + "create.ponder.gearbox.text_3": "Wały dookoła rogów obracają się w lustrzanych kierunkach", + "create.ponder.gearbox.text_4": "Proste połączenie będzie odwrócone", + + "create.ponder.gearshift.header": "Przenoszenie siły obrotowej z użyciem przekładnika", + "create.ponder.gearshift.text_1": "Przekładniki przenoszą obrót w linii prostej", + "create.ponder.gearshift.text_2": "Kiedy zasilone, kierunek obrotu odwraca się", + + "create.ponder.hand_crank.header": "Generowanie siły obrotowej z użyciem ręcznej korby", + "create.ponder.hand_crank.text_1": "Korby mogą być użyte przez gracza, aby ręcznie wprawić komponent w ruch", + "create.ponder.hand_crank.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", + "create.ponder.hand_crank.text_3": "Wytwarzana prędkość jest dosyć duża!", + "create.ponder.hand_crank.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", + + "create.ponder.large_cogwheel.header": "Przekazywanie siły obrotowej z użyciem dużych kół zębatych", + "create.ponder.large_cogwheel.text_1": "Duże koła zębate mogą się łączyć ze sobą pod kątem prostym", + "create.ponder.large_cogwheel.text_2": "Pomogą one w przekazywaniu siły obrotowej na inne osie obrotu", + + "create.ponder.linear_chassis_attachment.header": "Dołączanie bloków do stelaża liniowego", + "create.ponder.linear_chassis_attachment.text_1": "Odkryte strony stelaża mogą być oblepione szlamem", + "create.ponder.linear_chassis_attachment.text_2": "Kliknij ponownie, aby oblepić również drugą stronę", + "create.ponder.linear_chassis_attachment.text_3": "Kliknij PPM skradając się, aby usunąć szlam", + "create.ponder.linear_chassis_attachment.text_4": "Lepkie strony zabiorą ze sobą linie bloków przed sobą", + "create.ponder.linear_chassis_attachment.text_5": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", + "create.ponder.linear_chassis_attachment.text_6": "Trzymając CTRL i przewijając dostosujesz maksymalny zasięg wszystkich połączonych stelaży", + "create.ponder.linear_chassis_attachment.text_7": "Przyłączanie bloków do innej strony wymaga użycia Super Glue", + "create.ponder.linear_chassis_attachment.text_8": "Z wykorzystaniem tych mechanik, struktury w każdym kształcie mogą tworzyć maszyną", + + "create.ponder.linear_chassis_group.header": "Przesuwanie liniowych stelaży w grupach", + "create.ponder.linear_chassis_group.text_1": "Liniowe stelaże łączą się z identycznymi stelażami obok nich", + "create.ponder.linear_chassis_group.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne są ciągnięte za nim", + "create.ponder.linear_chassis_group.text_3": "Stelaże innego typu lub postawione w innym kierunku nie zostaną połączone", + + "create.ponder.mechanical_arm.header": "Ustawianie mechanicznych ramion", + "create.ponder.mechanical_arm.text_1": "Wejścia i wyjścia muszą zostać przypisane do ramienia, zanim będzie można je postawić", + "create.ponder.mechanical_arm.text_2": "Kliknij PPM na blok trzymając ramię, aby przypisać do niego cel", + "create.ponder.mechanical_arm.text_3": "Kliknij ponownie, aby przełączyć pomiędzy wejściem (niebieski) i wyjściem (pomarańczowy)", + "create.ponder.mechanical_arm.text_4": "Kliknij LPM, aby usunąć zaznaczenie", + "create.ponder.mechanical_arm.text_5": "Po postawieniu, mechaniczne ramię będzie operować pomiędzy wybranymi blokami", + "create.ponder.mechanical_arm.text_6": "Mogą one mieć dowolną ilość wejść i wyjść w ich zasięgu", + "create.ponder.mechanical_arm.text_7": "Nie z każdym blokiem zawierającym przedmioty może ono jednak bezpośrednio pracować", + "create.ponder.mechanical_arm.text_8": "Lejki i składnice mogą zapełnić tą lukę", + + "create.ponder.mechanical_arm_filtering.header": "Filtrowanie wyjść z mechanicznego ramienia", + "create.ponder.mechanical_arm_filtering.text_1": "Wejścia", + "create.ponder.mechanical_arm_filtering.text_2": "Wyjścia", + "create.ponder.mechanical_arm_filtering.text_3": "Czasami potrzebne jest ograniczenie celów ramienia przy pomocy filtra", + "create.ponder.mechanical_arm_filtering.text_4": "Mechaniczne ramiona nie posiadają żadnych opcji filtrowanie same w sobie", + "create.ponder.mechanical_arm_filtering.text_5": "Mosiężne lejki ustawione jako cele komunikują ramieniu informacje o swoim filtrze", + "create.ponder.mechanical_arm_filtering.text_6": "Ramię jest wystarczająco mądre, aby nie podnosić przedmiotów, których nie mogłoby odstawić", + + "create.ponder.mechanical_arm_modes.header": "Tryby dystrybucji mechanicznego ramienia", + "create.ponder.mechanical_arm_modes.text_1": "Wejście", + "create.ponder.mechanical_arm_modes.text_2": "Wyjście", + "create.ponder.mechanical_arm_modes.text_3": "Kiedykolwiek ramię musi wybrać pomiędzy wieloma możliwymi wyjściami...", + "create.ponder.mechanical_arm_modes.text_4": "…będzie działać zgodnie z jego ustawieniami", + "create.ponder.mechanical_arm_modes.text_5": "Przewijanie trzymając klucz pozwoli ci na konfigurację", + "create.ponder.mechanical_arm_modes.text_6": "Tryb 'Dookoła' zwyczajnie pozwala na cykl pomiędzy wszystkimi dostępnymi wyjściami", + "create.ponder.mechanical_arm_modes.text_7": "Jeśli wyjście nie może przyjąć więcej przedmiotów, będzie ono pominięte", + "create.ponder.mechanical_arm_modes.text_8": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia i poczeka, aż będzie ono wolne", + "create.ponder.mechanical_arm_modes.text_9": "Tryb 'Preferuj pierwszy cel' priorytetyzuje cele ustawione przed postawieniem jako pierwsze", + + "create.ponder.mechanical_arm_redstone.header": "Kontrolowanie mechanicznych ramion z użyciem Redstone'a", + "create.ponder.mechanical_arm_redstone.text_1": "Kiedy zasilone, mechaniczne ramię przestanie działać", + "create.ponder.mechanical_arm_redstone.text_2": "Przed zatrzymaniem, ramiona dokończą zaczętą już czynność", + "create.ponder.mechanical_arm_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc ramię dokładnie raz", + + "create.ponder.mechanical_bearing.header": "Przesuwanie struktur z użyciem mechanicznego łożyska", + "create.ponder.mechanical_bearing.text_1": "Mechaniczne łożysko przyczepia do siebie blok, który jest przed nim", + "create.ponder.mechanical_bearing.text_2": "W momencie otrzymania siły obrotowej, stworzy on obracającą się maszynę", + + "create.ponder.mechanical_crafter.header": "Ustawianie mechanicznych stołów rzemieślniczych", + "create.ponder.mechanical_crafter.text_1": "Grupa mechanicznych stołów rzemieślniczych może być użyta, aby zautomatyzować każdą recepturę", + "create.ponder.mechanical_crafter.text_2": "Używając klucza, ścieżki stołów mogą zostać ułożone", + "create.ponder.mechanical_crafter.text_3": "Aby układ był poprawny, wszystkie ścieżki muszą prowadzić do jednego wyjścia po dowolnej stronie", + "create.ponder.mechanical_crafter.text_4": "Produkty będą umieszczone w bloku przy wyjściu", + "create.ponder.mechanical_crafter.text_5": "Mechaniczne stoły rzemieślnicze wymagają siły obrotowej, aby pracować", + "create.ponder.mechanical_crafter.text_6": "Kliknij PPM na ich przody, aby ręcznie włożyć tam przedmioty", + "create.ponder.mechanical_crafter.text_7": "Kiedy każdy slot zawiera przedmiot, rozpocznie się proces konstruowania", + "create.ponder.mechanical_crafter.text_8": "Dla receptur, które nie zajmują wszystkich slotów, start konstruowania można rozpocząć zasilając dowolny z nich", + + "create.ponder.mechanical_crafter_connect.header": "Łączenie ekwipunków mechanicznych stołów rzemieślniczych", + "create.ponder.mechanical_crafter_connect.text_1": "Przedmioty mogą być włożone do stołów automatycznie", + "create.ponder.mechanical_crafter_connect.text_2": "Klikając na ich tył kluczem, mechaniczne stoły rzemieślnicze może połączyć ze sobą", + "create.ponder.mechanical_crafter_connect.text_3": "Wszystkie połączone stoły mogą przyjmować teraz przedmioty z jednego miejsca", + + "create.ponder.mechanical_crafter_covers.header": "Przykrywanie slotów mechanicznych stołów rzemieślniczych", + "create.ponder.mechanical_crafter_covers.text_1": "Niektóre receptury wymagają zapełnienia dziury pomiędzy poszczególnymi stołami", + "create.ponder.mechanical_crafter_covers.text_2": "Używając przykrywek na slot, można wyłączyć jeden stół z użytku. Nie będzie on przyjmował przedmiotów, ale będzie łączył sąsiadujące sloty w jedną całość", + "create.ponder.mechanical_crafter_covers.text_3": "Połączone stoły również działają w przypadku przykrycia jednego ze slotów", + + "create.ponder.mechanical_drill.header": "Niszczenie bloków mechanicznym wiertłem", + "create.ponder.mechanical_drill.text_1": "Po otrzymaniu siły obrotowej, mechaniczne wiertło będzie niszczyć bloki bezpośrednio przed nim", + "create.ponder.mechanical_drill.text_2": "Jego prędkość niszczenia zależy od prędkości siły obrotowej", + + "create.ponder.mechanical_drill_contraption.header": "Używanie mechanicznych wierteł w maszynach", + "create.ponder.mechanical_drill_contraption.text_1": "Kiedy wiertła są przesuwane razem z maszyną...", + "create.ponder.mechanical_drill_contraption.text_2": "…zniszczą one bloki na ich drodze", + + "create.ponder.mechanical_harvester.header": "Używanie mechanicznych żniwiarek w maszynach", + "create.ponder.mechanical_harvester.text_1": "Kiedy żniwiarki są przesuwane razem z maszyną...", + "create.ponder.mechanical_harvester.text_2": "…zbiorą one dojrzałe plony na ich drodze", + + "create.ponder.mechanical_mixer.header": "Obróbka przedmiotów z użyciem mechanicznego miksera", + "create.ponder.mechanical_mixer.text_1": "Używając miksera i tygla, niektóre receptury mogą być zautomatyzowane", + "create.ponder.mechanical_mixer.text_2": "Dostępne są wszystkie receptury nieokreślone, plus kilka innych", + "create.ponder.mechanical_mixer.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", + "create.ponder.mechanical_mixer.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", + + "create.ponder.mechanical_piston.header": "Przesuwanie struktur z użyciem mechanicznego tłoka", + "create.ponder.mechanical_piston.text_1": "Mechaniczny tłok może przesuwać znajdujące się przed nim bloki", + "create.ponder.mechanical_piston.text_2": "Prędkość i kierunek ruchu zależy od dostarczonej siły obrotowej", + "create.ponder.mechanical_piston.text_3": "Lepkie mechaniczne tłoki mogą przyciągać doczepione bloki", + + "create.ponder.mechanical_piston_modes.header": "Tryby ruchu mechanicznych tłoków", + "create.ponder.mechanical_piston_modes.text_1": "Kiedy tłok zatrzyma się, przesuwana struktura znów stanie się zwyczajnymi blokami", + "create.ponder.mechanical_piston_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", + + "create.ponder.mechanical_plough.header": "Używanie mechanicznych pługów w maszynach", + "create.ponder.mechanical_plough.text_1": "Kiedy pługi są przesuwane razem z maszyną...", + "create.ponder.mechanical_plough.text_2": "…zniszczą one niesolidne bloki na ich drodze", + "create.ponder.mechanical_plough.text_3": "Dodatkowo, pługi mogą orać pola", + "create.ponder.mechanical_plough.text_4": "…mogą też odrzucać moby bez ranienia ich", + + "create.ponder.mechanical_press.header": "Obróbka przedmiotów z użyciem mechanicznej prasy", + "create.ponder.mechanical_press.text_1": "Mechaniczna prasa może przetwarzać przedmioty znajdujące się pod nią", + "create.ponder.mechanical_press.text_2": "Przedmioty wejściowe mogą być rzucone pod prasę lub położone na składnicy", + "create.ponder.mechanical_press.text_3": "Kiedy przedmioty znajdują się na taśmociągu...", + "create.ponder.mechanical_press.text_4": "…prasa zatrzyma je i przetworzy - wszystko automatycznie", + + "create.ponder.mechanical_press_compacting.header": "Zbijanie przedmiotów z użyciem mechanicznej prasy", + "create.ponder.mechanical_press_compacting.text_1": "Prasowanie przedmiotów znajdujących się w tyglu sprawi, że staną się zbite", + "create.ponder.mechanical_press_compacting.text_2": "Można w ten sposób przetworzyć każdą recepturę, która wypełnia jednym przedmiotem kwadrat 2x2 lub 3x3", + "create.ponder.mechanical_press_compacting.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", + "create.ponder.mechanical_press_compacting.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", + + "create.ponder.mechanical_saw_breaker.header": "Ścinanie drzew z użyciem mechanicznej piły", + "create.ponder.mechanical_saw_breaker.text_1": "Po otrzymaniu siły obrotowej, mechaniczna piła zetnie każde znajdujące się przed nią drzewo", + "create.ponder.mechanical_saw_breaker.text_2": "Aby całkowicie ściąć drzewo, piła musi zniszczyć każdy blok łączący je z ziemią", + + "create.ponder.mechanical_saw_contraption.header": "Używanie mechanicznych pił w maszynach", + "create.ponder.mechanical_saw_contraption.text_1": "Kiedy piły są przesuwane razem z maszyną...", + "create.ponder.mechanical_saw_contraption.text_2": "…zetną one drzewa na ich drodze", + + "create.ponder.mechanical_saw_processing.header": "Obróbka przedmiotów z użyciem mechanicznej piły", + "create.ponder.mechanical_saw_processing.text_1": "Skierowana w górę mechaniczna piła może przetwarzać wiele różnych przedmiotów", + "create.ponder.mechanical_saw_processing.text_2": "Przerabiany przedmiot zawsze przesuwa się przeciwnie do kierunku obrotu piły", + "create.ponder.mechanical_saw_processing.text_3": "Piły mogą współpracować z taśmociągami", + "create.ponder.mechanical_saw_processing.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", + "create.ponder.mechanical_saw_processing.text_5": "Bez ustawionego filtra, piła przejdzie przez wszystkie receptury po kolei", + + "create.ponder.millstone.header": "Obróbka przedmiotów w młynku", + "create.ponder.millstone.text_1": "Młynek przetwarza przedmioty mieląc je", + "create.ponder.millstone.text_2": "Może być wprawiony w ruch od boku z użyciem kół zębatych", + "create.ponder.millstone.text_3": "Wrzuć lub włóż przedmiot od góry", + "create.ponder.millstone.text_4": "Po jakimś czasie, produkty mogą być zabrane prawym kliknięciem", + "create.ponder.millstone.text_5": "…lub w zautomatyzowany sposób", + + "create.ponder.nixie_tube.header": "Używanie lamp cyfrowych", + "create.ponder.nixie_tube.text_1": "Kiedy zasilone, lampy cyfrowe wyświetlą siłę sygnału Redstone, jaki otrzymują", + "create.ponder.nixie_tube.text_2": "Używając znaczników i kowadła można wyświetlić własny tekst", + + "create.ponder.piston_pole.header": "Przedłużenia tłoka", + "create.ponder.piston_pole.text_1": "Bez przyłączonych przedłużeń, mechaniczny tłok nie może się wysunąć", + "create.ponder.piston_pole.text_2": "Długość przedłużenia z tyłu ustala maksymalny zasięg tłoka", + + "create.ponder.portable_storage_interface.header": "Używanie przenośnych interfejsów magazynu", + "create.ponder.portable_storage_interface.text_1": "Pojemniki na ruchomych maszynach nie mogą być otwarte przez gracza", + "create.ponder.portable_storage_interface.text_2": "Ten komponent może współpracować z zawartością maszyny bez potrzeby jej zatrzymywania", + "create.ponder.portable_storage_interface.text_3": "Postaw drugi w odstępie od 1 do 2 bloków", + "create.ponder.portable_storage_interface.text_4": "Kiedy będą blisko siebie połączą się", + "create.ponder.portable_storage_interface.text_5": "Kiedy są połączone, stojący interfejs będzie reprezentował wszystkie pojemniki znajdujące się na maszynie", + "create.ponder.portable_storage_interface.text_6": "Przedmioty mogą być wsadzone...", + "create.ponder.portable_storage_interface.text_7": "…lub wyciągnięte z maszyny", + "create.ponder.portable_storage_interface.text_8": "W momencie, kiedy przed dłuższy czas żadne przedmioty nie będą wymieniane, maszyna zostanie odłączone i będzie kontynuowała swoją pracę", + + "create.ponder.portable_storage_interface_redstone.header": "Kontrola Redstonem", + "create.ponder.portable_storage_interface_redstone.text_1": "Zasilenie Redstonem zapobiegnie połączeniu się interfejsów", + + "create.ponder.powered_latch.header": "Kontrola sygnału z użyciem zaawansowanego zasilanego przełącznika", + "create.ponder.powered_latch.text_1": "Zaawansowane zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", + "create.ponder.powered_latch.text_2": "Sygnały otrzymane z tyłu włączają je...", + "create.ponder.powered_latch.text_3": "...a sygnały od boku wyłączają", + "create.ponder.powered_latch.text_4": "Zaawansowane zasilane przełączniki mogą też być przełączone ręcznie", + + "create.ponder.powered_toggle_latch.header": "Kontrola sygnału z użyciem zasilanego przełącznika", + "create.ponder.powered_toggle_latch.text_1": "Zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", + "create.ponder.powered_toggle_latch.text_2": "Sygnały otrzymane z tyłu przełączają je", + "create.ponder.powered_toggle_latch.text_3": "włączone... wyłączone...", + "create.ponder.powered_toggle_latch.text_4": "Zasilane przełączniki mogą też być przełączone ręcznie", + + "create.ponder.pulse_repeater.header": "Kontrola sygnału z użyciem przekaźników pulsowych", + "create.ponder.pulse_repeater.text_1": "Przekaźniki pulsowe skrócą dowolny sygnał do pojedynczego pulsu", + + "create.ponder.radial_chassis.header": "Przyłączanie bloków z użyciem stelaża promienistego", + "create.ponder.radial_chassis.text_1": "Stelaże promieniste łączą się z identycznymi stelażami w jednym rzędzie", + "create.ponder.radial_chassis.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne również się przesuwają", + "create.ponder.radial_chassis.text_3": "Boczne ściany stelaży promienistych mogą zostać oblepione szlamem", + "create.ponder.radial_chassis.text_4": "Kliknij ponownie, aby oblepić wszystkie strony", + "create.ponder.radial_chassis.text_5": "Kliknij PPM skradając się, aby usunąć szlam", + "create.ponder.radial_chassis.text_6": "Lepkie strony zabiorą ze sobą przyczepione bloki...", + "create.ponder.radial_chassis.text_7": "...w określonym zasięgu", + "create.ponder.radial_chassis.text_8": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", + "create.ponder.radial_chassis.text_9": "Bloki, które nie są w żaden sposób połączone z lepką stroną stelaża nie będą przesuwane", + + "create.ponder.redstone_contact.header": "Przełącznik kontaktowy", + "create.ponder.redstone_contact.text_1": "Przełączniki kontaktowe skierowane w swoją stronę będą emitować sygnał Redstone", + "create.ponder.redstone_contact.text_2": "Działa to też w momencie, kiedy jeden z nich jest częścią ruchomej maszyny", + + "create.ponder.redstone_link.header": "Używanie emiterów sygnału", + "create.ponder.redstone_link.text_1": "Emitery sygnału mogą przesyłać sygnał Redstone bezprzewodowo", + "create.ponder.redstone_link.text_2": "Kliknij PPM skradając się, aby przełączyć na tryb odbierania", + "create.ponder.redstone_link.text_3": "Prawe kliknięcie kluczek robi dokładnie to samo", + "create.ponder.redstone_link.text_4": "Odbiorniki emitują sygnał Redstone nadajników w zasięgu 128 bloków", + "create.ponder.redstone_link.text_5": "Wkładając przedmioty do dwóch slotów można sprecyzować częstotliwość", + "create.ponder.redstone_link.text_6": "Jedynie emitery z pasującymi częstotliwościami będą się ze sobą komunikować", + + "create.ponder.rope_pulley.header": "Przesuwanie struktur z użyciem krążków z liną", + "create.ponder.rope_pulley.text_1": "Krążki z liną mogę przesuwać pionowo bloki z wykorzystaniem siły obrotowej", + "create.ponder.rope_pulley.text_2": "Prędkość i kierunek ruchu zależą od dostarczonej siły obrotowej", + + "create.ponder.rope_pulley_attachment.header": "Przesuwanie krążków jako część maszyny", + "create.ponder.rope_pulley_attachment.text_1": "Kiedy krążek jest częścią ruchomej maszyny...", + "create.ponder.rope_pulley_attachment.text_2": "...przyczepiona do niego struktura również się przesunie", + "create.ponder.rope_pulley_attachment.text_3": "Pamiętaj, że krążki mogą pracować jedynie, jeśli same się nie poruszają", + + "create.ponder.rope_pulley_modes.header": "Tryby ruchu krążków z liną", + "create.ponder.rope_pulley_modes.text_1": "Kiedy krążek przestaje się obracać, przyczepiona do niego struktura staje się z powrotem blokami", + "create.ponder.rope_pulley_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", + + "create.ponder.rotation_speed_controller.header": "Używanie sterownika prędkości obrotu", + "create.ponder.rotation_speed_controller.text_1": "Sterownik prędkości obrotu może przekazywać siłę obrotową z jego osi do dużego koła zębatego ponad nim", + "create.ponder.rotation_speed_controller.text_2": "Patrząc się na jego bok i przewijając można dostosować wyjściową prędkość", + + "create.ponder.sail.header": "Konstruowanie wiatraków z użyciem żagli", + "create.ponder.sail.text_1": "Żagle to bloki przydatne do konstrukcji wiatraków", + "create.ponder.sail.text_2": "Przyłączą się one do innych bloków i żagli, bez potrzeby użycia Super Glue lub stelaży", + "create.ponder.sail.text_3": "Kliknij PPM trzymając barwnik, aby je pomalować", + "create.ponder.sail.text_4": "Kliknij PPM trzymając nożyce, aby usunąć żagiel i zostawić samą ramę", + + "create.ponder.sail_frame.header": "Konstrukcja wiatraków z użyciem ram żagla", + "create.ponder.sail_frame.text_1": "Ramy żagla to bloki przydatne do konstrukcji wiatraków", + "create.ponder.sail_frame.text_2": "Przyłączą się one do innych bloków i ram, bez potrzeby użycia Super Glue lub stelaży", + + "create.ponder.sequenced_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników sekwencjonalnych", + "create.ponder.sequenced_gearshift.text_1": "Przekładniki sekwencjonalne przekazują obrót poprzez wyznaczoną listę instrukcji", + "create.ponder.sequenced_gearshift.text_2": "Kliknij PPM, aby otworzyć interfejs", + "create.ponder.sequenced_gearshift.text_3": "Kiedy zostanie zasilony Redstonem, rozpocznie wykonywać swoją ustaloną sekwencję", + "create.ponder.sequenced_gearshift.text_4": "Po zakończeniu, czeka na następny sygnał i zaczyna od nowa", + "create.ponder.sequenced_gearshift.text_5": "Komparator może być użyty do odczytania obecnego postępu", + + "create.ponder.shaft.header": "Przekazywanie siły obrotowej z użyciem wałów", + "create.ponder.shaft.text_1": "Wały przekazują siłę obrotową w linii prostej", + + "create.ponder.shaft_casing.header": "Izolowanie wałów", + "create.ponder.shaft_casing.text_1": "Mosiężna lub andezytowa obudowa może być użyta do udekorowania wałów", + + "create.ponder.smart_chute.header": "Sortowanie przedmiotów z użyciem inteligentnych zsypów", + "create.ponder.smart_chute.text_1": "Inteligentny zsyp to pionowy zsyp z dodatkową kontrolą", + "create.ponder.smart_chute.text_2": "Poprzez slot filtrujący można zdecydować, które przedmioty mogą być transportowane", + "create.ponder.smart_chute.text_3": "Użyj rolki w myszce, aby sprecyzować maksymalną wielkość stosu", + "create.ponder.smart_chute.text_4": "Sygnał Redstone zatrzyma działanie inteligentnych zsypów", + + "create.ponder.speedometer.header": "Monitorowanie prędkości obrotu z użyciem prędkościomierza", + "create.ponder.speedometer.text_1": "Prędkościomierz wyświetla obecną prędkość przyłączonych komponentów", + "create.ponder.speedometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", + "create.ponder.speedometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach prędkościomierza", + + "create.ponder.stabilized_bearings.header": "Stabilizowanie maszyn", + "create.ponder.stabilized_bearings.text_1": "Kiedy łożyska mechaniczne są częścią ruchomej maszyny...", + "create.ponder.stabilized_bearings.text_2": "...będą utrzymywać swoją obrotową część w pozycji wyjściowej", + "create.ponder.stabilized_bearings.text_3": "Znowu, łożysko przyłączy do siebie bloki znajdujące się przed nim", + "create.ponder.stabilized_bearings.text_4": "Rezultatem tego będzie to, że pod-maszyna będzie utrzymywała się w tej samej pozycji", + + "create.ponder.sticker.header": "Przyczepianie bloków z użyciem przyklejacza", + "create.ponder.sticker.text_1": "Przyklejacze są idealne do kontrolowanego przez Redstone przyczepiania bloków", + "create.ponder.sticker.text_2": "Po otrzymaniu sygnału, zmieni on swoje ułożenie", + "create.ponder.sticker.text_3": "Jeśli jest przesunięty razem z maszyną, przyklejony blok również się przesunie", + "create.ponder.sticker.text_4": "Po ponownym zasileniu blok zostanie odczepiony", + + "create.ponder.stressometer.header": "Monitorowanie obciążenia z użyciem miernika obciążenia", + "create.ponder.stressometer.text_1": "Miernik obciążenia wyświetla odporność na obciążenie systemu, do którego jest podłączony", + "create.ponder.stressometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", + "create.ponder.stressometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach miernika", + + "create.ponder.super_glue.header": "Przyklejanie bloków z użycie Super Glue", + "create.ponder.super_glue.text_1": "Super Glue może zostać użyty pomiędzy dwoma blokami", + "create.ponder.super_glue.text_2": "Przyklejone bloki będą przesuwane razem ze strukturą, do której są przyklejone", + "create.ponder.super_glue.text_3": "Kiedy Super Glue jest trzymany w drugiej ręce...", + "create.ponder.super_glue.text_4": "...stawiane bloki będą automatycznie przyklejane", + "create.ponder.super_glue.text_5": "Super Glue może zostać usunięty lewym kliknięciem", + + "create.ponder.valve_handle.header": "Generowanie siły obrotowej z użyciem pokręteł", + "create.ponder.valve_handle.text_1": "Pokrętła mogą być użyte, aby ręcznie wytworzyć siłę obrotową bezpośrednio w miejscu postawienia", + "create.ponder.valve_handle.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", + "create.ponder.valve_handle.text_3": "Wytwarzana prędkość jest niewielka, ale pozwala na dokładny obrót", + "create.ponder.valve_handle.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", + "create.ponder.valve_handle.text_5": "Pokrętła mogą być zabarwione dla celów dekoracyjnych", + + "create.ponder.water_wheel.header": "Generowanie siły obrotowej z użyciem kół wodnych", + "create.ponder.water_wheel.text_1": "Koła wodne pobierają energię z prądów wodnych", + "create.ponder.water_wheel.text_2": "Im więcej stron ma dostęp do wody, tym szybciej koło się będzie obracać", + "create.ponder.water_wheel.text_3": "Łopaty koła wodnego powinny być zorientowane przeciwnie do prądu", + "create.ponder.water_wheel.text_4": "Będąc zorientowane z prądem nie będą zbyt efektywne", + + "create.ponder.weighted_ejector.header": "Używanie wyrzutni odważnikowych", + "create.ponder.weighted_ejector.text_1": "Kliknij PPM skradając się i mając w ręce wyrzutnię, aby wybrać jego cel", + "create.ponder.weighted_ejector.text_10": "Od teraz aktywuje się tylko w momencie, jeśli wystarczająca ilość przedmiotów znajdzie się na jego wierzchu", + "create.ponder.weighted_ejector.text_11": "Inne moby zawsze zostaną wyrzucone", + "create.ponder.weighted_ejector.text_2": "Postawiona wyrzutnia będzie strzelała przedmiotami w wybrane miejsce", + "create.ponder.weighted_ejector.text_3": "Cel może być na dowolnej wysokości i odległości w zasięgu wyrzutni", + "create.ponder.weighted_ejector.text_4": "Nie mogą być jednak przesunięte w bok", + "create.ponder.weighted_ejector.text_5": "Jeśli nie wybrano żadnego celu, wyrzuci ona przedmioty na blok bezpośrednio przed sobą", + "create.ponder.weighted_ejector.text_6": "Dostarcz siłę obrotową, aby ją załadować", + "create.ponder.weighted_ejector.text_7": "Przedmioty znajdujące się na jej wierzchu aktywują ją", + "create.ponder.weighted_ejector.text_8": "Jeśli celem jest blok mogący przechowywać przedmioty, wyrzutnia poczeka aż będzie tam miejsce", + "create.ponder.weighted_ejector.text_9": "Używając klucza można wybrać wielkość stosu, jaki ma być wyrzucony", + + "create.ponder.weighted_ejector_redstone.header": "Kontrolowanie wyrzutni odważnikowych z użyciem Redstone'a", + "create.ponder.weighted_ejector_redstone.text_1": "Zasilona Redstonem, wyrzutnia nie aktywuje się", + "create.ponder.weighted_ejector_redstone.text_2": "Ponad to, detektory mogą wykrywać, kiedy wyrzutnia się aktywuje", + + "create.ponder.weighted_ejector_tunnel.header": "Rozdzielanie stosów z użyciem wyrzutni odważnikowych", + "create.ponder.weighted_ejector_tunnel.text_1": "W połączeniu z mosiężnymi tunelami, wyrzutnie mogą", + "create.ponder.weighted_ejector_tunnel.text_2": "Po pierwsze, ustaw tunel na tryb 'Preferuj najbliższy', aby zpriorytetyzować boczne wyjście", + "create.ponder.weighted_ejector_tunnel.text_3": "Wielkość stosu ustawiona na wyrzutni ustala ilość, jaka ma być oddzielona", + "create.ponder.weighted_ejector_tunnel.text_4": "W momencie, kiedy stos o określonym rozmiarze opuści tunel...", + "create.ponder.weighted_ejector_tunnel.text_5": "...pozostała część będzie kontynuować swoją podróż", + + "create.ponder.windmill_source.header": "Generowanie siły obrotowej z użyciem łożysk wiatraka", + "create.ponder.windmill_source.text_1": "Łożysko wiatraka przyczepia do siebie bloki, które znajdują się przed nimi", + "create.ponder.windmill_source.text_2": "Jeśli wystarczająco żaglo-podobnych bloków jest przyłączonych do niego, może działać jak wiatrak", + "create.ponder.windmill_source.text_3": "Po aktywacji prawym kliknięciem, łożysko wiatraka zacznie generować siłę obrotową", + "create.ponder.windmill_source.text_4": "Ilość żagli ustala prędkość obrotu", + "create.ponder.windmill_source.text_5": "Użyj klucza, aby dostosować kierunek obrotu", + "create.ponder.windmill_source.text_6": "Kliknij PPM na łożysko, aby zatrzymać obrót i zmodyfikować dołączoną strukturę", + + "create.ponder.windmill_structure.header": "Wiatraki", + "create.ponder.windmill_structure.text_1": "Każda struktura jest uznawana za wiatrak w momencie, kiedy ma w sobie co najmniej 8 żaglo-podobnych bloków", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file 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 d29401108..338fb9e10 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: 1615", + "_": "Missing Localizations: 1622", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "UNLOCALIZED: Deforester", "item.create.dough": "Massa", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", @@ -466,8 +465,7 @@ "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Blockzapper Portátil", - "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper", "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.zapper": "UNLOCALIZED: Building With Style", - "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", - "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", - "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", - "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", - "create.gui.blockzapper.title": "Blockzapper Portátil", - "create.gui.blockzapper.replaceMode": "Modo de Substituição", - "create.gui.blockzapper.searchDiagonal": "Seguir as Diagonais", - "create.gui.blockzapper.searchFuzzy": "Ignorar Material nas Bordas", - "create.gui.blockzapper.range": "Raio de Expansão", - "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Padrões", - "create.gui.blockzapper.pattern.solid": "Sólido", - "create.gui.blockzapper.pattern.checkered": "Xadrez", - "create.gui.blockzapper.pattern.inversecheckered": "Xadrez invertido", - "create.gui.blockzapper.pattern.chance25": "25% de chance", - "create.gui.blockzapper.pattern.chance50": "50% de chance", - "create.gui.blockzapper.pattern.chance75": "75% de chance", - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - - "create.blockzapper.usingBlock": "Usando: %1$s", - "create.blockzapper.componentUpgrades": "Melhorias do Componente:", - "create.blockzapper.component.body": "Corpo", - "create.blockzapper.component.amplifier": "Amplificador", - "create.blockzapper.component.accelerator": "Acelerador", - "create.blockzapper.component.retriever": "Retornador", - "create.blockzapper.component.scope": "Mira", - "create.blockzapper.componentTier.none": "Nada", - "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", - "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", - "create.blockzapper.empty": "Sem Blocos!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative ding", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "UNLOCALIZED: Blockzapper zaps", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining boop", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", - "item.create.handheld_blockzapper.tooltip.control1": "B-Esquerdo no Bloco", - "item.create.handheld_blockzapper.tooltip.action1": "Define os blocos colocados pela ferramenta no bloco de destino.", - "item.create.handheld_blockzapper.tooltip.control2": "B-Direito em Bloco", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ ou _Substitui_ o bloco alvo.", - "item.create.handheld_blockzapper.tooltip.control3": "B-Direito equando Abaixado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", - "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", - "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant axe_ able to chop down trees in a split second.", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", 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 4e61e7a7c..c03df85e7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 528", + "_": "Missing Localizations: 550", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "Дроблёная оловянная руда", "item.create.crushed_uranium_ore": "Дроблёная урановая руда", "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", - "item.create.deforester": "Уничтожитель леса", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", "item.create.empty_blaze_burner": "Пустая горелека Всполоха", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "Печно-вагонеточная штуковина", "item.create.goggles": "Инженерные очки", "item.create.golden_sheet": "Золотой лист", - "item.create.handheld_blockzapper": "Ручная блоковая пушка", "item.create.handheld_worldshaper": "Ручной редактор мира", "item.create.honey_bucket": "Ведро мёда", "item.create.honeyed_apple": "Яблоко в меду", @@ -508,7 +506,7 @@ "advancement.create.shifting_gears": "Механизм переключения", "advancement.create.shifting_gears.desc": "Подсоедините большую шестерню к шестерне, что позволит изменить скорость вращения.", "advancement.create.overstressed": "Перегрузка", - "advancement.create.overstressed.desc": "Испытайте предельную перегрузку из первых рук.", + "advancement.create.overstressed.desc": "Столкнитесь с предельной перегрузкой лицом к лицу.", "advancement.create.belt": "Передайте за проезд!", "advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.", "advancement.create.tunnel": "В укрытие!", @@ -645,18 +643,12 @@ "advancement.create.refined_radiance.desc": "Создайте изысканное сияние, мощное хроматическое вещество.", "advancement.create.chromatic_age": "Хроматический век", "advancement.create.chromatic_age.desc": "Создайте блоки корпуса из света и тьмы.", - "advancement.create.zapper": "Строительство со стилем", - "advancement.create.zapper.desc": "Создайте ручную блоковую пушку, которая поможет вам строить.", - "advancement.create.upgraded_zapper": "Сияющий овердрайв", - "advancement.create.upgraded_zapper.desc": "Создайте и активируйте полностью модернизированную ручную блоковую пушку.", "advancement.create.wand_of_symmetry": "Сияющие зеркала", "advancement.create.wand_of_symmetry.desc": "Создайте жезл симметрии.", - "advancement.create.deforester": "Лучистая рубка", - "advancement.create.deforester.desc": "Создайте уничтожитель леса и попрощайтесь с местным лесом.", "advancement.create.extendo_grip": "Кипение!", "advancement.create.extendo_grip.desc": "Возьмите в руки удлинённую руку", "advancement.create.dual_extendo_grip": "Окончательное выкипание", - "advancement.create.dual_extendo_grip.desc": "Две удлинённой руки для сверхчеловеческого охвата.", + "advancement.create.dual_extendo_grip.desc": "Две удлинённых руки для сверхчеловеческого охвата.", "advancement.create.eob": "Конец бета-версии", "advancement.create.eob.desc": "Ожидайте больше контента здесь в будущем. <3", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "Автоматическая форменная сборка", "create.recipe.block_cutting": "Резка блока", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "Ручная блоковая пушка", "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", "create.recipe.spout_filling": "Заполнение дозатором", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "Вдоль Z", "create.orientation.alongX": "Вдоль X", - "create.gui.blockzapper.title": "Ручная блоковая пушка", - "create.gui.blockzapper.replaceMode": "Режим замены", - "create.gui.blockzapper.searchDiagonal": "Следовать по диагонали", - "create.gui.blockzapper.searchFuzzy": "Игнорировать границы материала", - "create.gui.blockzapper.range": "Диапазон распространения", - "create.gui.blockzapper.needsUpgradedAmplifier": "Требуется модернизированный усилитель", - "create.gui.blockzapper.patternSection": "Шаблон", - "create.gui.blockzapper.pattern.solid": "Всё", - "create.gui.blockzapper.pattern.checkered": "Шахматная доска", - "create.gui.blockzapper.pattern.inversecheckered": "Перевернутая шахматная доска", - "create.gui.blockzapper.pattern.chance25": "25% крен", - "create.gui.blockzapper.pattern.chance50": "50% крен", - "create.gui.blockzapper.pattern.chance75": "75% крен", "create.gui.terrainzapper.title": "Ручной редактор мира", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "Размещение", "create.gui.terrainzapper.placement.merged": "Слитый", "create.gui.terrainzapper.placement.attached": "Прикреплённый", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "Куб", "create.gui.terrainzapper.brush.sphere": "Сфера", "create.gui.terrainzapper.brush.cylinder": "Цилиндр", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "Инструмент", "create.gui.terrainzapper.tool.fill": "Заполнить", "create.gui.terrainzapper.tool.place": "Поставить", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "Выравнивание", "create.terrainzapper.shiftRightClickToSet": "ПКМ крадучись, чтобы выбрать форму", - - "create.blockzapper.usingBlock": "С помощью: %1$s", - "create.blockzapper.componentUpgrades": "Обновления компонентов:", - "create.blockzapper.component.body": "Корпус", - "create.blockzapper.component.amplifier": "Усилитель", - "create.blockzapper.component.accelerator": "Ускоритель", - "create.blockzapper.component.retriever": "Поисковик", - "create.blockzapper.component.scope": "Объем", - "create.blockzapper.componentTier.none": "Нет", - "create.blockzapper.componentTier.brass": "Латунный", - "create.blockzapper.componentTier.chromatic": "Хроматический", - "create.blockzapper.leftClickToSet": "Щелкните ЛКМ по блоку, чтобы выбрать материал", - "create.blockzapper.empty": "Вне блоков!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только две связи", "create.minecart_coupling.unloaded": "Кажется, часть вашего поезда в незагруженных чанках", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "Намазывание слизи", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "Утвердительный динь", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "Блок запрыгивает на место", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Всполох радостно жуёт", "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Механический пресс активирован", - "create.subtitle.blockzapper_deny": "Тихий буп", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадучись", "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Новейшее устройство для размещения или замены блоков на расстоянии.", - "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_blockzapper.tooltip.action1": "Устанавливает выбранный блок как материал.", - "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", - "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_blockzapper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "Удобный инструмент для создания _ландшафтов_ и _рельефа_ _местности_.", "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ на блок", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья,_независимо_ от _условий_ _их_ _расположения_", - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "_Уничтожитель_ _леса_, способен рубить деревья за доли секунды.", - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", "item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке", 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 ef0da1165..15c2d7434 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: 628", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,7 +9,7 @@ "block.create.adjustable_crate": "可调节板条箱", "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", "block.create.adjustable_repeater": "可调节中继器", - "block.create.analog_lever": "可调节拉杆", + "block.create.analog_lever": "模拟拉杆", "block.create.andesite_belt_funnel": "安山岩传送带漏斗", "block.create.andesite_bricks": "安山岩砖", "block.create.andesite_bricks_slab": "安山岩砖台阶", @@ -67,8 +67,8 @@ "block.create.creative_crate": "创造板条箱", "block.create.creative_fluid_tank": "创造流体储罐", "block.create.creative_motor": "创造马达", - "block.create.crimson_window": "赤红窗户", - "block.create.crimson_window_pane": "赤红窗户板", + "block.create.crimson_window": "绯红窗户", + "block.create.crimson_window_pane": "绯红窗户板", "block.create.crushing_wheel": "粉碎轮", "block.create.crushing_wheel_controller": "粉碎轮控制器", "block.create.cuckoo_clock": "布谷鸟闹钟", @@ -153,7 +153,7 @@ "block.create.flywheel": "飞轮", "block.create.framed_glass": "边框玻璃", "block.create.framed_glass_pane": "边框玻璃板", - "block.create.furnace_engine": "熔炼引擎", + "block.create.furnace_engine": "熔炉引擎", "block.create.gabbro": "辉长岩", "block.create.gabbro_bricks": "辉长岩砖", "block.create.gabbro_bricks_slab": "辉长岩砖台阶", @@ -164,8 +164,8 @@ "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", "block.create.gabbro_pillar": "竖纹辉长岩", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", + "block.create.gantry_carriage": "起重机取物器", + "block.create.gantry_shaft": "起重机杆", "block.create.gearbox": "十字齿轮箱", "block.create.gearshift": "反转齿轮箱", "block.create.glass_fluid_pipe": "玻璃流体管道", @@ -338,7 +338,7 @@ "block.create.portable_fluid_interface": "移动式流体接口", "block.create.portable_storage_interface": "移动式存储接口", "block.create.powered_latch": "锁存器", - "block.create.powered_toggle_latch": "T触发器", + "block.create.powered_toggle_latch": "转换锁存器", "block.create.pulley_magnet": "滑轮磁铁", "block.create.pulse_repeater": "脉冲中继器", "block.create.purple_sail": "紫色风帆", @@ -349,7 +349,7 @@ "block.create.red_seat": "红色坐垫", "block.create.red_valve_handle": "红色阀门手轮", "block.create.redstone_contact": "接触式红石信号发生器", - "block.create.redstone_link": "无限红石信号终端", + "block.create.redstone_link": "无线红石信号终端", "block.create.refined_radiance_casing": "光辉机壳", "block.create.reinforced_rail": "强化铁轨", "block.create.rope": "绳索", @@ -378,7 +378,7 @@ "block.create.spout": "注液器", "block.create.spruce_window": "云杉窗户", "block.create.spruce_window_pane": "云杉窗户板", - "block.create.sticker": "UNLOCALIZED: Sticker", + "block.create.sticker": "黏着器", "block.create.sticky_mechanical_piston": "黏性动力活塞", "block.create.stockpile_switch": "存量转换器", "block.create.stressometer": "应力表", @@ -400,7 +400,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "弹射置物台", "block.create.white_sail": "白色风帆", "block.create.white_seat": "白色坐垫", "block.create.white_valve_handle": "白色阀门手轮", @@ -412,10 +412,10 @@ "block.create.zinc_block": "锌块", "block.create.zinc_ore": "锌矿石", - "entity.create.contraption": "结构", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", + "entity.create.contraption": "装置", + "entity.create.gantry_contraption": "起重机装置", "entity.create.seat": "坐垫", - "entity.create.stationary_contraption": "固定结构", + "entity.create.stationary_contraption": "固定装置", "entity.create.super_glue": "强力胶", "fluid.create.milk": "牛奶", @@ -426,8 +426,8 @@ "item.create.attribute_filter": "属性过滤器", "item.create.bar_of_chocolate": "巧克力棒", "item.create.belt_connector": "传送带", - "item.create.blaze_cake": "熔岩蛋糕", - "item.create.blaze_cake_base": "熔岩蛋糕胚", + "item.create.blaze_cake": "烈焰蛋糕", + "item.create.blaze_cake_base": "烈焰蛋糕胚", "item.create.brass_hand": "黄铜手部零件", "item.create.brass_ingot": "黄铜锭", "item.create.brass_nugget": "黄铜粒", @@ -435,7 +435,7 @@ "item.create.builders_tea": "建造工茶饮", "item.create.chest_minecart_contraption": "装配过的动力矿车", "item.create.chocolate_bucket": "巧克力桶", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", + "item.create.chocolate_glazed_berries": "巧克力包层浆果", "item.create.chromatic_compound": "异彩化合物", "item.create.cinder_flour": "下界面粉", "item.create.copper_ingot": "铜锭", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "粉碎锡矿石", "item.create.crushed_uranium_ore": "粉碎铀矿石", "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.deforester": "树林毁灭者", "item.create.dough": "面团", "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", @@ -466,10 +465,9 @@ "item.create.furnace_minecart_contraption": "装配过的动力矿车", "item.create.goggles": "工程师护目镜", "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "手持式方块放置器", "item.create.handheld_worldshaper": "手持式环境塑形器", "item.create.honey_bucket": "蜂蜜桶", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", + "item.create.honeyed_apple": "蜜渍苹果", "item.create.integrated_circuit": "集成电路板", "item.create.iron_sheet": "铁板", "item.create.lapis_sheet": "青金石板", @@ -486,7 +484,7 @@ "item.create.schematic_and_quill": "蓝图与笔", "item.create.shadow_steel": "暗影钢", "item.create.super_glue": "强力胶", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", + "item.create.sweet_roll": "甜甜卷", "item.create.tree_fertilizer": "树木肥料", "item.create.vertical_gearbox": "竖直十字齿轮箱", "item.create.wand_of_symmetry": "对称之杖", @@ -501,7 +499,7 @@ "advancement.create.root": "欢迎来到机械动力", "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", - "advancement.create.andesite_alloy": "头韵狂魔", + "advancement.create.andesite_alloy": "头韵狂魔(Alliterations Aplenty)", "advancement.create.andesite_alloy.desc": "机械动力的材料名字都很古怪,安山合金(Andesite Alloy)就是其中之一。", "advancement.create.its_alive": "鲜活的机械生命", "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转。", @@ -512,7 +510,7 @@ "advancement.create.belt": "海带传动", "advancement.create.belt.desc": "用传送带连接两个传动杆", "advancement.create.tunnel": "找掩护!", - "advancement.create.tunnel.desc": "用隧道修饰传送带。", + "advancement.create.tunnel.desc": "用隧道装饰传送带。", "advancement.create.splitter_tunnel": "分而治之", "advancement.create.splitter_tunnel.desc": "用黄铜隧道设计一个分流器。", "advancement.create.chute": "轰然倒塌", @@ -541,14 +539,14 @@ "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", "advancement.create.aesthetics": "美观,即是一切!", "advancement.create.aesthetics.desc": "将支架放在传动杆,管道和齿轮上。", - "advancement.create.reinforced": "Boom~加强!", + "advancement.create.reinforced": "Boom~ 加强!", "advancement.create.reinforced.desc": "在传动杆,管道和传送带上使用机壳加固。", "advancement.create.water_wheel": "治水", "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", "advancement.create.chocolate_wheel": "味美动力", "advancement.create.chocolate_wheel.desc": "用熔融巧克力驱动水车。", "advancement.create.lava_wheel": "风火轮", - "advancement.create.lava_wheel.desc": "它本不应该起作用的...", + "advancement.create.lava_wheel.desc": "它本不应该起作用的......", "advancement.create.cuckoo": "到点了吗?", "advancement.create.cuckoo.desc": "目睹布谷鸟钟宣布就寝时间。", "advancement.create.millstone": "便携式粉碎机", @@ -565,7 +563,7 @@ "advancement.create.press.desc": "使用辊压机来辊压一些板子", "advancement.create.polished_rose_quartz": "粉色钻石", "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", - "advancement.create.electron_tube": "哔~~哔~~", + "advancement.create.electron_tube": "哔~~ 哔~~", "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", "advancement.create.mechanical_saw": "一刀两断", "advancement.create.mechanical_saw.desc": "放置一个动力锯并且为其供能", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "制作一个光辉石", "advancement.create.chromatic_age": "异彩纪元", "advancement.create.chromatic_age.desc": "创造出光与影的机壳。", - "advancement.create.zapper": "讲究的建筑师", - "advancement.create.zapper.desc": "制作一个非常方便的手持方块放置器", - "advancement.create.upgraded_zapper": "来自异世界的超频", - "advancement.create.upgraded_zapper.desc": "制作一个完全升级的手持方块放置器", "advancement.create.wand_of_symmetry": "简单的镜面几何学", "advancement.create.wand_of_symmetry.desc": "制作一个对称之杖", - "advancement.create.deforester": "超时空砍伐", - "advancement.create.deforester.desc": "制作一个森林毁灭者,然后跟你后院的树林说再见吧", "advancement.create.extendo_grip": "biu biu biu!", "advancement.create.extendo_grip.desc": "获得一个伸缩机械手", "advancement.create.dual_extendo_grip": "biu——biu——biu——", @@ -674,7 +666,7 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s被布谷鸟钟炸得粉身碎骨", "create.block.deployer.damage_source_name": "二五仔机械手", - "create.block.cart_assembler.invalid": "将您的矿车装备器放在铁轨上", + "create.block.cart_assembler.invalid": "请将矿车装配器放置在铁轨上", "create.recipe.crushing": "粉碎", "create.recipe.milling": "研磨", @@ -694,8 +686,7 @@ "create.recipe.mechanical_crafting": "自动合成", "create.recipe.automatic_shaped": "自动合成", "create.recipe.block_cutting": "方块切割", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "手持式方块放置器", + "create.recipe.wood_cutting": "木材切割", "create.recipe.sandpaper_polishing": "砂纸打磨", "create.recipe.mystery_conversion": "神秘转化", "create.recipe.spout_filling": "注液", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "以z轴对齐", "create.orientation.alongX": "以x轴对齐", - "create.gui.blockzapper.title": "手持式方块放置机", - "create.gui.blockzapper.replaceMode": "替换模式", - "create.gui.blockzapper.searchDiagonal": "对角线延伸", - "create.gui.blockzapper.searchFuzzy": "忽视种类分界", - "create.gui.blockzapper.range": "延伸范围", - "create.gui.blockzapper.needsUpgradedAmplifier": "需要升级范围扩大器", - "create.gui.blockzapper.patternSection": "模式", - "create.gui.blockzapper.pattern.solid": "实心", - "create.gui.blockzapper.pattern.checkered": "棋盘", - "create.gui.blockzapper.pattern.inversecheckered": "反转棋盘", - "create.gui.blockzapper.pattern.chance25": "25% ", - "create.gui.blockzapper.pattern.chance50": "50% ", - "create.gui.blockzapper.pattern.chance75": "75% ", "create.gui.terrainzapper.title": "手持式环境塑形器", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "放置模式", "create.gui.terrainzapper.placement.merged": "结合", "create.gui.terrainzapper.placement.attached": "依附", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "矩形体", "create.gui.terrainzapper.brush.sphere": "球体", "create.gui.terrainzapper.brush.cylinder": "圆柱体", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "填充类型", "create.gui.terrainzapper.tool.fill": "填充", "create.gui.terrainzapper.tool.place": "复写", @@ -782,20 +771,9 @@ "create.gui.terrainzapper.tool.overlay": "覆盖", "create.gui.terrainzapper.tool.flatten": "平整", - "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右键以设置塑形类型", - - "create.blockzapper.usingBlock": "使用:%1$s", - "create.blockzapper.componentUpgrades": "组件升级:", - "create.blockzapper.component.body": "放置器机体", - "create.blockzapper.component.amplifier": "范围扩大器", - "create.blockzapper.component.accelerator": "射击加速器", - "create.blockzapper.component.retriever": "物品回捡器", - "create.blockzapper.component.scope": "距离观察镜", - "create.blockzapper.componentTier.none": "无", - "create.blockzapper.componentTier.brass": "黄铜", - "create.blockzapper.componentTier.chromatic": "异彩化合物", - "create.blockzapper.leftClickToSet": "左击方块将其设定为放置方块", - "create.blockzapper.empty": "方块不足!", + "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右击以设置塑形类型", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器", "create.minecart_coupling.unloaded": "有一部分火车存在于未加载区块中", @@ -804,16 +782,16 @@ "create.minecart_coupling.too_far": "矿车距离你太远了", "create.contraptions.movement_mode": "运动模式", - "create.contraptions.movement_mode.move_place": "停止时总是实体化方块", - "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置实体化方块", - "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才实体化方块", - "create.contraptions.movement_mode.rotate_place": "停止时总是实体化方块", - "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度实体化方块", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才实体化方块", + "create.contraptions.movement_mode.move_place": "停止时总是将装置方块化", + "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置才将装置方块化", + "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才将装置方块化", + "create.contraptions.movement_mode.rotate_place": "停止时总是将装置方块化", + "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.cart_movement_mode.rotation_locked": "装置方向保持不变", "create.contraptions.windmill.rotation_direction": "旋转方向", "create.contraptions.clockwork.clock_hands": "钟表指针", "create.contraptions.clockwork.hour_first": "时针优先", @@ -825,23 +803,23 @@ "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": "已将过滤应用于%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": "动力学状态:", "create.gui.goggles.at_current_speed": "当前速度应力值", "create.gui.goggles.pole_length": "活塞杆长度:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "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.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.gauge.info_header": "仪表信息:", "create.gui.speedometer.title": "旋转速度", "create.gui.stressometer.title": "网络应力", @@ -858,19 +836,19 @@ "create.gui.stockpile_switch.move_to_upper_at": "移至上线%1$s%%", "create.gui.sequenced_gearshift.title": "可编程齿轮箱", "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "以特定的角度进行旋转", "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", + "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": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "时间延迟", + "create.gui.sequenced_gearshift.instruction.delay": "延迟", + "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": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", + "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": "两倍速,正向", @@ -905,7 +883,7 @@ "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.1": "在地面上单击鼠标右击以放置。", "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择。", "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离。", "create.schematic.tool.move.description.0": "水平移动蓝图", @@ -921,7 +899,7 @@ "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": "沿你选择的面翻转蓝图。", @@ -1018,8 +996,8 @@ "create.item_attributes.not_stackable.inverted": "可堆叠", "create.item_attributes.equipable": "可装备", "create.item_attributes.equipable.inverted": "不可装备", - "create.item_attributes.furnace_fuel": "是燃料", - "create.item_attributes.furnace_fuel.inverted": "不是燃料", + "create.item_attributes.furnace_fuel": "可作为燃料", + "create.item_attributes.furnace_fuel.inverted": "不可作为燃料", "create.item_attributes.in_tag": "标签是%1$s", "create.item_attributes.in_tag.inverted": "标签不是%1$s", "create.item_attributes.in_item_group": "属于%1$s", @@ -1028,32 +1006,32 @@ "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": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.color": "染色为%1$s", + "create.item_attributes.color.inverted": "未被染成%1$s", + "create.item_attributes.max_enchanted": "已达到最高附魔等", + "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", "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.book_copy_original": "是原创的", - "create.item_attributes.book_copy_original.inverted": "不是原创的", + "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.astralsorcery_crystal": "具有晶体属性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶体属性%1$s", - "create.item_attributes.astralsorcery_constellation": "与%1$s调谐", - "create.item_attributes.astralsorcery_constellation.inverted": "未与%1$s调谐", - "create.item_attributes.astralsorcery_perk_gem": "具有特殊属性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊属性%1$s", - "create.item_attributes.astralsorcery_amulet": "提升%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "不提升%1$s", + "create.item_attributes.book_copy_tattered": "拷贝次数已不可查", + "create.item_attributes.book_copy_tattered.inverted": "不是拷贝次数已不可查", + "create.item_attributes.astralsorcery_crystal": "有水晶石属性%1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "没有水晶石属性%1$s", + "create.item_attributes.astralsorcery_constellation": "与%1$s共鸣", + "create.item_attributes.astralsorcery_constellation.inverted": "不与%1$s共鸣", + "create.item_attributes.astralsorcery_perk_gem": "带有有星能力属性%1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "不带有星能力属性%1$s", + "create.item_attributes.astralsorcery_amulet": "璀璨棱镜增强%1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "璀璨棱镜未增强%1$s", "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", "create.gui.attribute_filter.selected_attributes": "已选择的属性:", @@ -1067,8 +1045,8 @@ "create.gui.attribute_filter.deny_list.description": "只要没有上述属性,就可以通过", "create.gui.attribute_filter.add_reference_item": "添加参考物品", - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.holdForDescription": "按住 [%1$s] 可查看概要", + "create.tooltip.holdForControls": "按住 [%1$s] 可查看控制方法", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "需求转速:%1$s", @@ -1089,14 +1067,14 @@ "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.summary": "动力臂当前有%1$s个输入,%2$s个输出。", "create.mechanical_arm.points_outside_range": "由于距离限制,选定的交互点%1$s已被移除。", - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + "create.weighted_ejector.target_set": "目标已选取", + "create.weighted_ejector.target_not_valid": "弹射至临近方块(目标无效)", + "create.weighted_ejector.no_target": "弹射至临近方块(未选择目标)", + "create.weighted_ejector.targeting": "弹射至[%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "弹射物品堆数量", "create.logistics.when_multiple_outputs_available": "当多个输出可用时", @@ -1104,8 +1082,8 @@ "create.mechanical_arm.selection_mode.forced_round_robin": "强制轮询调度", "create.mechanical_arm.selection_mode.prefer_first": "第一目标优先", - "create.tunnel.selection_mode.split": "分摊", - "create.tunnel.selection_mode.forced_split": "强制分摊", + "create.tunnel.selection_mode.split": "分流", + "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": "最近优先", @@ -1125,9 +1103,9 @@ "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": "_机械手_包含_过剩的物品,_需要被_提取。你需要_使用_料斗,__漏斗_或其他方法将溢出释放出来。", @@ -1148,27 +1126,33 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", + "create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态", "_": "->------------------------] Subtitles [------------------------<-", "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "粘液:挤碎声", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "选择方块", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "放置方块", - "create.subtitle.blaze_munch": "烈焰人:开心地咀嚼着", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", + "create.subtitle.blaze_munch": "烈焰人:咀嚼", "create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "蓝图加农炮:完成任务", + "create.subtitle.schematicannon_finish": "蓝图加农炮:叮", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "辊压机:工作中", - "create.subtitle.blockzapper_deny": "放置失败", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1183,10 +1167,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.copper_casing.tooltip": "铜机壳", "block.create.copper_casing.tooltip.summary": "具有多种用途的坚固机壳,可用于装饰。", @@ -1198,10 +1182,10 @@ "block.create.seat.tooltip": "坐垫", "block.create.seat.tooltip.summary": "坐下来享受旅程吧!坐垫将会把玩家固定在一个移动装置上。也可以用来作为居家装饰,毕竟他有许多颜色。", - "block.create.seat.tooltip.condition1": "右键坐垫", + "block.create.seat.tooltip.condition1": "右击坐垫", "block.create.seat.tooltip.behaviour1": "会使得玩家坐在_坐垫_上,L-Shift可离开_坐垫_。", - "item.create.blaze_cake.tooltip": "熔岩蛋糕", + "item.create.blaze_cake.tooltip": "烈焰蛋糕", "item.create.blaze_cake.tooltip.summary": "为辛勤劳作的_烈焰人_精心准备的美味。让他们兴奋起来吧!", "block.create.fluid_pipe.tooltip": "流体管道", @@ -1222,14 +1206,14 @@ "block.create.fluid_tank.tooltip": "流体储罐", "block.create.fluid_tank.tooltip.summary": "_存储_任意_流体_,根据整体结构的宽和高决定其储存容量", - "block.create.fluid_tank.tooltip.condition1": "使用扳手右键", + "block.create.fluid_tank.tooltip.condition1": "使用扳手右击", "block.create.fluid_tank.tooltip.behaviour1": "打开或关闭窗户", "block.create.creative_fluid_tank.tooltip": "创造流体储罐", "block.create.creative_fluid_tank.tooltip.summary": "此流体储罐能够_无限的复制_任何流体,根据整体结构的宽和高决定其储存容量", "block.create.creative_fluid_tank.tooltip.condition1": "罐中装有流体时", "block.create.creative_fluid_tank.tooltip.behaviour1": "任意的_流体提取设备_能够从中提取无穷无尽的指定流体,流体的导入功能同时也会无效。", - "block.create.creative_fluid_tank.tooltip.condition2": "使用扳手右键", + "block.create.creative_fluid_tank.tooltip.condition2": "使用扳手右击", "block.create.creative_fluid_tank.tooltip.behaviour2": "打开或关闭窗户", "block.create.fluid_valve.tooltip": "流体阀门", @@ -1241,14 +1225,14 @@ "block.create.mechanical_pump.tooltip.summary": "_接入动力_,能迫使流体_沿管道指定方向移动_。在两个方向上都有_最大的作用范围_。(默认为16个方块距离)", "block.create.mechanical_pump.tooltip.condition1": "流体流向", "block.create.mechanical_pump.tooltip.behaviour1": "_接入动力_后会产生压力,迫使流体通过管道。_反转动力_的方向以切换流体_流向_。", - "block.create.mechanical_pump.tooltip.control1": "扳手右键时", + "block.create.mechanical_pump.tooltip.control1": "扳手右击时", "block.create.mechanical_pump.tooltip.action1": "反转泵的方向,从而改变默认的流体流向", "block.create.smart_fluid_pipe.tooltip": "智能流体管道", "block.create.smart_fluid_pipe.tooltip.summary": "带有过滤器的_流体管道_。可以指定其只流通特定的_流体_。", "block.create.smart_fluid_pipe.tooltip.condition1": "当流体进入时", "block.create.smart_fluid_pipe.tooltip.behaviour1": "进入的流体与_过滤器_不匹配时,智能管道将_阻止_其通过。", - "block.create.smart_fluid_pipe.tooltip.condition2": "与_流体容器相邻_时", + "block.create.smart_fluid_pipe.tooltip.condition2": "与流体容器相邻时", "block.create.smart_fluid_pipe.tooltip.behaviour2": "_智能管道_会开始从_相邻的任何容器_中抽取与其过滤器匹配的流体。", "block.create.spout.tooltip": "注液器", @@ -1267,22 +1251,13 @@ "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.control1": "当右键地面时", + "item.create.wand_of_symmetry.tooltip.control1": "当右击地面时", "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜面。", - "item.create.wand_of_symmetry.tooltip.control2": "当右键空气时", + "item.create.wand_of_symmetry.tooltip.control2": "当右击空气时", "item.create.wand_of_symmetry.tooltip.action2": "_删除_镜面。", - "item.create.wand_of_symmetry.tooltip.control3": "当潜行右键时", + "item.create.wand_of_symmetry.tooltip.control3": "当潜行右击时", "item.create.wand_of_symmetry.tooltip.action3": "打开_配置界面_。", - "item.create.handheld_blockzapper.tooltip": "手持式方块放置器", - "item.create.handheld_blockzapper.tooltip.summary": "新颖的小工具,可以远距离放置或更换方块。", - "item.create.handheld_blockzapper.tooltip.control1": "当左击方块时", - "item.create.handheld_blockzapper.tooltip.action1": "将工具放置的方块设置为该方块。", - "item.create.handheld_blockzapper.tooltip.control2": "当右击方块时", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替换_目标方块。", - "item.create.handheld_blockzapper.tooltip.control3": "当潜行右击时", - "item.create.handheld_blockzapper.tooltip.action3": "打开_配置界面_。", - "item.create.handheld_worldshaper.tooltip": "手持式环境塑形器", "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", "item.create.handheld_worldshaper.tooltip.control1": "当左击方块时", @@ -1297,26 +1272,23 @@ "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", "item.create.tree_fertilizer.tooltip.behaviour1": "使得该树_无视_它的_生长空间条件_,立刻长大。", - "item.create.deforester.tooltip": "树林毁灭者", - "item.create.deforester.tooltip.summary": "一把_光辉四溢的斧子_,能够瞬间砍倒一棵树", - "item.create.extendo_grip.tooltip": "伸缩机械手", "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。", "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", "item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。", "item.create.filter.tooltip": "过滤器", - "item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个 _相嵌套的过滤器_相匹配。", + "item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。", "item.create.filter.tooltip.condition1": "放置于过滤插槽中时", "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.filter.tooltip.condition2": "当右键时", + "item.create.filter.tooltip.condition2": "当右击时", "item.create.filter.tooltip.behaviour2": "打开_配置面板_。", "item.create.attribute_filter.tooltip": "属性过滤器", "item.create.attribute_filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品_属性_以及_分类_相匹配。", "item.create.attribute_filter.tooltip.condition1": "放置于过滤插槽中时", "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.attribute_filter.tooltip.condition2": "当右键时", + "item.create.attribute_filter.tooltip.condition2": "当右击时", "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_。", "item.create.empty_schematic.tooltip": "空白蓝图", @@ -1326,16 +1298,16 @@ "item.create.schematic.tooltip.summary": "可将结构部署并放置到世界中,将蓝图全息影像部署完毕后,使用_蓝图加农炮_进行结构建造。", "item.create.schematic.tooltip.condition1": "当手持蓝图时", "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具调整位置", - "item.create.schematic.tooltip.control1": "当潜行右键时", + "item.create.schematic.tooltip.control1": "当潜行右击时", "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面。", "item.create.schematic_and_quill.tooltip": "蓝图与笔", "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到 .nbt 文件。", "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与笔右键选择两个对角点", + "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与笔右击选择两个对角点", "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "对准选定区域,按住 Ctrl 键并滑动鼠标滚轮,可以调整选区的大小,右键保存。", - "item.create.schematic_and_quill.tooltip.control1": "右键", + "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": "可在_空中_选择点,_滑动滚轮_可调整距离。", @@ -1358,14 +1330,14 @@ "item.create.goggles.tooltip.behaviour1": "根据对应动力组件的_转速等级_,显示它的_颜色指示器_,也会显示这个组件的_应力影响_以及_应力量_。", "item.create.goggles.tooltip.condition2": "当看向仪表时", "item.create.goggles.tooltip.behaviour2": "将会显示与仪表相连的网络的_转速_、_应力_等详细信息。", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", + "item.create.goggles.tooltip.condition3": "当看向流体容器时", + "item.create.goggles.tooltip.behaviour3": "显示出方块的_容量_细节,以及其中包含的所有_流体_。", "item.create.wrench.tooltip": "扳手", "item.create.wrench.tooltip.summary": "操控动力组件的使用工具。可用于_旋转_,_拆除_以及_配置_组件。", - "item.create.wrench.tooltip.control1": "当右键点击_动力方块_时", + "item.create.wrench.tooltip.control1": "当右击_动力方块_时", "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", - "item.create.wrench.tooltip.control2": "当潜行右键时", + "item.create.wrench.tooltip.control2": "当潜行右击时", "item.create.wrench.tooltip.action2": "会_拆除动力组件_并将其移动到你的背包中。", "block.create.nozzle.tooltip": "分散网", @@ -1377,18 +1349,18 @@ "block.create.cuckoo_clock.tooltip.behaviour1": "显示_当前时间_并且一天会咕咕两次。_中午_咕咕一次,_黄昏可以睡觉_的时候咕咕一次 ", "block.create.turntable.tooltip": "转盘", - "block.create.turntable.tooltip.summary": "让旋转动力给你带来一场刺激的旋转风车体验。", + "block.create.turntable.tooltip.summary": "让旋转力给你带来一场刺激的旋转风车体验。", "block.create.portable_fluid_interface.tooltip": "移动流体接口", - "block.create.portable_fluid_interface.tooltip.summary": "为动力活塞、装配矿车、旋转轴承、滑轮_等移动结构_设计的_流体接口_,_移动结构_和_固定结构_之间的流体交换站,两个接口会面时将_自动对接_,且必须彼此隔开1-2个方块。", - "block.create.portable_fluid_interface.tooltip.condition1": "装配在移动结构上时", - "block.create.portable_fluid_interface.tooltip.behaviour1": "移动到能够满足与_固定结构_上的_移动式流体接口_对接的条件后,移动结构会_短暂地停下_,开始对接,并直接与_移动结构上的_流体储罐_交互,进行流体的_导入导出_。", + "block.create.portable_fluid_interface.tooltip.summary": "为动力活塞、装配矿车、旋转轴承、滑轮_等运动结构_设计的_流体接口_,_运动结构_和_固定结构_之间的流体交换站,两个接口会面时将_自动对接_,且必须彼此隔开 1-2 个方块。", + "block.create.portable_fluid_interface.tooltip.condition1": "装配在运动结构上时", + "block.create.portable_fluid_interface.tooltip.behaviour1": "移动到能够满足与_固定结构_上的_移动式流体接口_对接的条件后,运动结构会_短暂地停下_,开始对接,并直接与_运动结构_上的_流体储罐_交互,进行流体的_导入导出_。", "block.create.portable_fluid_interface.tooltip.condition2": "通入红石信号时时", "block.create.portable_fluid_interface.tooltip.behaviour2": "立即断开任何处于激活状态的连接。", "block.create.stockpile_switch.tooltip": "存量转换器", "block.create.stockpile_switch.tooltip.summary": "根据连接的容器中_储存物品_的数量切换红石信号强度。自带有过滤槽,与_比较器_不同的是,你可以配置_存量转换器_信号反转的_阈值_。", - "block.create.stockpile_switch.tooltip.condition1": "当右键时", + "block.create.stockpile_switch.tooltip.condition1": "当右击时", "block.create.stockpile_switch.tooltip.behaviour1": "打开_配置界面_。", "block.create.content_observer.tooltip": "物品侦测器", @@ -1402,7 +1374,7 @@ "block.create.creative_crate.tooltip": "创造板条箱", "block.create.creative_crate.tooltip.summary": "这种_储存容器_可以无限地复制任何物品。它还可以移除附近的_蓝图加农炮_的材料需求。", "block.create.creative_crate.tooltip.condition1": "当标记了物品时", - "block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_ ,而任何_放置_到容器中的物品都会被_送入虚空_", + "block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_,而任何_放置_到容器中的物品都会被_送入虚空_", "block.create.controller_rail.tooltip": "控制铁轨", "block.create.controller_rail.tooltip.summary": "一种_汇流的,受红石信号影响的_铁轨,可以_较好地控制_经过矿车的_移动速度_。", @@ -1443,688 +1415,688 @@ "_": "->------------------------] Ponder Content [------------------------<-", - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exacly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", + "create.ponder.hold_to_ponder": "按住 [%1$s] 开始思索", + "create.ponder.subject": "情景主题", + "create.ponder.pondering": "思索...", + "create.ponder.identify_mode": "名称显示模式开,[%1$s]来继续思索", + "create.ponder.associated": "关联词条", + "create.ponder.close": "思索结束", + "create.ponder.identify": "显示方块名称", + "create.ponder.next": "下一情景", + "create.ponder.previous": "前一情景", + "create.ponder.replay": "重放", + "create.ponder.think_back": "回想", + "create.ponder.slow_text": "舒适阅读", + "create.ponder.shared.movement_anchors": "有了底盘和强力胶,移动起大型结构轻轻松松。", + "create.ponder.shared.rpm32": "32 RPM", + "create.ponder.shared.sneak_and": "潜行 +", + "create.ponder.shared.storage_on_contraption": "与装置相接的存储空间,会自动将装置遇到的掉落物拾取到空间内。", + "create.ponder.shared.behaviour_modify_wrench": "可以用扳手调整它的行为。", + "create.ponder.shared.rpm8": "8 RPM", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm16_source": "动力源:16 R", + "create.ponder.shared.rpm16": "16 RPM", + "create.ponder.tag.kinetic_sources": "动力源", + "create.ponder.tag.kinetic_sources.description": "能够发生动力的组件。", + "create.ponder.tag.contraption_actor": "装置执行组件", + "create.ponder.tag.contraption_actor.description": "能在移动的装置上执行特殊功能的组件", + "create.ponder.tag.arm_targets": "机械臂的工作目标", + "create.ponder.tag.arm_targets.description": "该组件可做为机械臂的输入或者输出点。", + "create.ponder.tag.logistics": "物品运输", + "create.ponder.tag.logistics.description": "该组件可以协助物品运输", + "create.ponder.tag.movement_anchor": "运动源泉", + "create.ponder.tag.movement_anchor.description": "有了它,运动装置才得以可能,它可以以数种方式使相接的结构运动起来。", + "create.ponder.tag.creative": "创造模式", + "create.ponder.tag.creative.description": "总有些东西是生存模式得不到的。", + "create.ponder.tag.kinetic_relays": "动力方块", + "create.ponder.tag.kinetic_relays.description": "用于传递旋转力的组件。", + "create.ponder.tag.windmill_sails": "风车轴承的帆", + "create.ponder.tag.windmill_sails.description": "在进行风车组装时会被算入风车旋转力的方块,这些方块的效能都是一样的。", + "create.ponder.tag.contraption_assembly": "方块连接物件", + "create.ponder.tag.contraption_assembly.description": "将各个组件连接以便同时运动的物件", + "create.ponder.tag.decoration": "装饰", + "create.ponder.tag.decoration.description": "装饰是这些组件的常见用法。", + "create.ponder.tag.kinetic_appliances": "动力设备", + "create.ponder.tag.kinetic_appliances.description": "这些组件可以利用旋转力进行工作。", + "create.ponder.tag.redstone": "逻辑组件", + "create.ponder.tag.redstone.description": "这些组件会在红石工程中发挥大用处。", + "create.ponder.tag.fluids": "流体操纵器械", + "create.ponder.tag.fluids.description": "这些组件可以用于传递流体,以及利用流体进行工作。", + + "create.ponder.adjustable_pulse_repeater.header": "使用可调节脉冲中继器控制信号发送", + "create.ponder.adjustable_pulse_repeater.text_1": "可调节脉冲中继器在一段延时之后会发出一道短时脉冲", + "create.ponder.adjustable_pulse_repeater.text_2": "滑动滚轮即可更改延时时间", + "create.ponder.adjustable_pulse_repeater.text_3": "延时配置范围的上限为 30 分钟", + + "create.ponder.adjustable_repeater.header": "使用可调节中继器控制信号发送", + "create.ponder.adjustable_repeater.text_1": "可调节中继器与常规的中继器的行为较为相似", + "create.ponder.adjustable_repeater.text_2": "它们会进行一段时间的充能,时长为设定的时间...", + "create.ponder.adjustable_repeater.text_3": "...然后以同样的时长逐渐退出充能状态", + "create.ponder.adjustable_repeater.text_4": "滑动滚轮即可更改充能时间", + "create.ponder.adjustable_repeater.text_5": "延时配置范围的上限为 30 分钟", + + "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.andesite_tunnel.header": "安山隧道用法", + "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.basin.header": "工作盆内物品处理", + "create.ponder.basin.text_1": "一个可以对放入的物品以及流体进行处理的盆", + "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_9": "若是加装过滤,那么你便无需担心会将未被处理的物品抽取出来了", + + "create.ponder.bearing_modes.header": "动力轴承的运动模式", + "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_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_4": "通过传送带相连的传动杆,会以相同的转速以及方向进行旋转", + "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_transport.header": "在物流中使用传送带", + "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_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_3": "对着过滤槽滑动滚轮,还可以精确调节黄铜漏斗的提取数量。", + "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_5": "如果有数种匹配的物品通过,那么隧道的分配模式将会决定这些物品何去何从", + "create.ponder.brass_tunnel.text_6": "连接了平行传送带的黄铜隧道,会将隧道、传送带组成一个组", + "create.ponder.brass_tunnel.text_7": "输入组内的物品会被分配到所有组内连接的对象中", + "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.text_11": "只有在组内全部的隧道都有一个等待通过的物品时,物品才能通过此隧道", + "create.ponder.brass_tunnel_modes.text_12": "这确保了所有受影响的传送带能够以相同的速率进行物品补给", + "create.ponder.brass_tunnel_modes.text_2": "“分流”会尝试将物品堆分流传输到可用的输出端", + "create.ponder.brass_tunnel_modes.text_3": "如果某个输出端无法容纳更多的物品,那么此出口不纳入分流的运算中", + "create.ponder.brass_tunnel_modes.text_4": "“强制分流”不会跳过某个输出端,而是一直等待着此输出端能够容纳更多物品,才会继续物品传输", + "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_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_dual.header": "组装连接结构", + "create.ponder.cart_assembler_dual.text_1": "若两个装配矿车分享了同一个结构", + "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_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.chain_drive.header": "使用链式传动箱传动旋转力", + "create.ponder.chain_drive.text_1": "同一行上的链式传动箱会相互间传递旋转", + "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": "在这两种情况中,同一组的其他链式传动箱的转速都为被充能的可调节链式传动箱的两倍", + "create.ponder.chain_gearshift.text_5": "转速的倍率可在 x1 和 x2 间根据红石信号的强弱来精确调整", + "create.ponder.chain_gearshift.text_6": "12 RPM", + + "create.ponder.chute.header": "使用溜槽向下运输物品", + "create.ponder.chute.text_1": "溜槽可在两个存储空间之间垂直传送物品", + "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_3": "在溜槽“被挡住的”底端,物品只能从侧边进行提取或输入", + + "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", + "create.ponder.clockwork_bearing.text_4": "4:00", + "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.clutch.header": "使用离合器控制旋转力", + "create.ponder.clutch.text_1": "离合器能将旋转力直线传递", + "create.ponder.clutch.text_2": "当被红石充能,离合器会断开动力传递", + + "create.ponder.cog_speedup.header": "使用齿轮来换挡变速", + "create.ponder.cog_speedup.text_1": "大齿轮与小齿轮可以斜向传递动力", + "create.ponder.cog_speedup.text_2": "从大齿轮传递动力至小齿轮时,转速翻倍", + "create.ponder.cog_speedup.text_3": "从小齿轮传递动力至大齿轮时,转速减半", + + "create.ponder.cogwheel.header": "使用齿轮来传递旋转力", + "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", + "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", + + "create.ponder.creative_motor.header": "使用创造马达发生旋转", + "create.ponder.creative_motor.text_1": "创造马达不仅能够手动调配输出旋转力,而且体积相当小巧", + "create.ponder.creative_motor.text_2": "对其背侧面板滚动滑轮,可以改变马达的输出旋转转速", + + "create.ponder.crushing_wheels.header": "使用粉碎轮处理物品", + "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.deployer.header": "使用机械手", + "create.ponder.deployer.text_1": "接入旋转力,机械手便可以模仿玩家的交互行为", + "create.ponder.deployer.text_10": "对着机械手的前部右击,即可将手上的物品给予它使用", + "create.ponder.deployer.text_11": "物品也可以自动化输入到机械手内", + "create.ponder.deployer.text_12": "机械手附带一个过滤槽", + "create.ponder.deployer.text_13": "当设定了过滤后,只有当它的手中物品与过滤相匹配时,它才会工作", + "create.ponder.deployer.text_14": "只有与过滤匹配的物品才可输入...", + "create.ponder.deployer.text_15": "...只有不匹配的物品方可被抽取出来", + "create.ponder.deployer.text_2": "它只会与它正前方两格处的位置进行交互", + "create.ponder.deployer.text_3": "放在在它面前的方块不会阻拦它的工作", + "create.ponder.deployer.text_4": "机械手可以:", + "create.ponder.deployer.text_5": "放置方块", + "create.ponder.deployer.text_6": "使用物品", + "create.ponder.deployer.text_7": "激活方块", + "create.ponder.deployer.text_8": "采收方块", + "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_modes.header": "机械手的模式", + "create.ponder.deployer_modes.text_1": "在默认情况下,机械手模仿玩家的右击交互", + "create.ponder.deployer_modes.text_2": "使用扳手可以将模式调整为模仿玩家的左击交互", + + "create.ponder.deployer_redstone.header": "使用红石控制机械手", + "create.ponder.deployer_redstone.text_1": "当被红石充能时,机械手会停止工作", + "create.ponder.deployer_redstone.text_2": "在停止工作前,机械手会完成当前正在进行的工作周期", + "create.ponder.deployer_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制机械手,使其每次只进行单个周期的工作", + + "create.ponder.depot.header": "使用置物台", + "create.ponder.depot.text_1": "置物台可以被当成一个“静止的”传送带原件使用", + "create.ponder.depot.text_2": "右击可以手动放置或取下物品", + "create.ponder.depot.text_3": "与传送带一样,它也可以将其内的物品转送到其他设备中进行加工...", + "create.ponder.depot.text_4": "...同时物品也可以被机械手存取", + + "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃烧室", + "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃烧室右击烈焰人来抓取烈焰人", + "create.ponder.empty_blaze_burner.text_2": "或者,也可以通过右击烈焰人刷怪笼来填充激活烈焰人燃烧室", + "create.ponder.empty_blaze_burner.text_3": "这样,你便有了一个可供部分机器加工的热源", + "create.ponder.empty_blaze_burner.text_4": "如果是为了美观,空的烈焰人燃烧室也可以被打火石点燃", + "create.ponder.empty_blaze_burner.text_5": "但是,这样的热源不足以给机器提加工供足够的热量", + + "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.text_6": "这种加工方法可以做到不少有趣的事情", + "create.ponder.fan_processing.text_7": "鼓风机的转速对加工的速度没有影响,只影响气流的吹拂距离", + "create.ponder.fan_processing.text_8": "而那些放置在置物台或者传送带上的物品,鼓风机也是可以处理的", + + "create.ponder.fan_source.header": "使用鼓风机来产生旋转力", + "create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力", + "create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力", + + "create.ponder.flywheel.header": "使用飞轮来产生旋转力", + "create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力", + "create.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值", + "create.ponder.flywheel.text_3": "使用高炉会使得引擎的效率翻倍", + + "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_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_redstone.header": "红石信号控制", + "create.ponder.funnel_redstone.text_1": "红石信号会使漏斗停止工作", + + "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.furnace_engine.header": "使用熔炉引擎生产旋转力", + "create.ponder.furnace_engine.text_1": "熔炉引擎会在与其相连熔炉工作时生产旋转力", + "create.ponder.furnace_engine.text_2": "如此产生的旋转力具有非常大的应力值", + "create.ponder.furnace_engine.text_3": "使用高炉会使得引擎的效率翻倍", + + "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_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_4": "在旋转传递中,此规则同样适用", + + "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": "起重机杆组成了起重机结构的基础。与其相接的载物器可以沿着杆进行移动。", + "create.ponder.gantry_shaft.text_2": "起重机结构可以移动与其相接的方块。", + + "create.ponder.gearbox.header": "使用十字齿轮箱传递旋转力", + "create.ponder.gearbox.text_1": "更改旋转轴,很容易使得整个旋转体系变得臃肿不堪", + "create.ponder.gearbox.text_2": "十字齿轮箱则是替代方案,它的体积更为小巧紧", + "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.hand_crank.header": "使用手摇曲柄产生旋转力", + "create.ponder.hand_crank.text_1": "玩家可以使用手摇曲柄来手动产生旋转力", + "create.ponder.hand_crank.text_2": "按住右键可以逆时针旋转它", + "create.ponder.hand_crank.text_3": "它产生的转速相对较高", + "create.ponder.hand_crank.text_4": "潜行长按右键可以顺时针旋转它", + + "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", + "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", + "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", + + "create.ponder.linear_chassis_attachment.header": "使用机壳底盘黏合方块", + "create.ponder.linear_chassis_attachment.text_1": "它的开放面可以变为黏性面", + "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_6": "按住 Ctrl 滑动滚轮,你可以一次性调节所有底盘的影响范围", + "create.ponder.linear_chassis_attachment.text_7": "若想让底盘的其他面也能粘方块,你需要用到强力胶", + "create.ponder.linear_chassis_attachment.text_8": "利用这些机制,任何形状的机制都可以像装置那样移动", + + "create.ponder.linear_chassis_group.header": "成组移动机壳底盘", + "create.ponder.linear_chassis_group.text_1": "相邻的机壳底盘可以相互连接在一起", + "create.ponder.linear_chassis_group.text_2": "其中的一个底盘若被移动,其余的底盘也会跟着移动", + "create.ponder.linear_chassis_group.text_3": "不同种类的底盘,或者是朝向不一致的底盘,将不会相连", + + "create.ponder.mechanical_arm.header": "配置动力臂", + "create.ponder.mechanical_arm.text_1": "你得在放置动力臂之前就配置好它的输入以及输出端", + "create.ponder.mechanical_arm.text_2": "手持动力臂右击某个存储空间,可以将其指定为目标", + "create.ponder.mechanical_arm.text_3": "再次右击可以将其在输入端(蓝色)以及输出端(橙色)之间切换", + "create.ponder.mechanical_arm.text_4": "左击此组件可以移除选择", + "create.ponder.mechanical_arm.text_5": "将动力臂放下来后,它会将此前选择的方块作为目标", + "create.ponder.mechanical_arm.text_6": "在有效范围内,机械臂可以有任意数量的输出以及输入端", + "create.ponder.mechanical_arm.text_7": "然而,并不是所有的存储空间可以被直接交互", + "create.ponder.mechanical_arm.text_8": "在此情况下,漏斗和置物台可以解决此问题", + + "create.ponder.mechanical_arm_filtering.header": "过滤动力臂的输出端", + "create.ponder.mechanical_arm_filtering.text_1": "输入", + "create.ponder.mechanical_arm_filtering.text_2": "输出", + "create.ponder.mechanical_arm_filtering.text_3": "有时,你会想着利用某种过滤限制动力臂的目标", + "create.ponder.mechanical_arm_filtering.text_4": "动力臂自身并不提供任何过滤选项", + "create.ponder.mechanical_arm_filtering.text_5": "然而,若将黄铜漏斗作为目标,则漏斗的过滤槽则可以应用至动力臂上", + "create.ponder.mechanical_arm_filtering.text_6": "动力臂足够智能,它不会去拿取那些它无法分配的物品", + + "create.ponder.mechanical_arm_modes.header": "动力臂的分配模式", + "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_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.text_2": "在停止工作前,它会完成当前正在进行的工作周期", + "create.ponder.mechanical_arm_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制动力臂,使其每次只进行单个周期的工作", + + "create.ponder.mechanical_bearing.header": "使用动力轴承移动结构", + "create.ponder.mechanical_bearing.text_1": "动力轴承会与其前方的方块黏合在一起", + "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_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_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_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_drill.header": "使用动力钻头破坏方块", + "create.ponder.mechanical_drill.text_1": "当向其通入旋转力后,动力钻头会破坏它面前的方块", + "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_2": "...它会破坏掉它撞上的方块", + + "create.ponder.mechanical_harvester.header": "在装置中使用动力收割机", + "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_4": "过滤槽可用于解决两个配方相互冲突的情况", + + "create.ponder.mechanical_piston.header": "使用动力活塞移动结构", + "create.ponder.mechanical_piston.text_1": "动力活塞可以移动它前方的方块", + "create.ponder.mechanical_piston.text_2": "移动速度和方向取决于通入活塞的旋转力", + "create.ponder.mechanical_piston.text_3": "黏性动力活塞可以将相接的方块拉回来", + + "create.ponder.mechanical_piston_modes.header": "动力活塞的移动模式", + "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移动的结构就会回退到方块状态", + "create.ponder.mechanical_piston_modes.text_2": "你也可以将其配置为从不方块化,或者只在起始位置方块化", + + "create.ponder.mechanical_plough.header": "在装置中使用动力犁", + "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_press.header": "使用动力辊轧机处理物品", + "create.ponder.mechanical_press.text_1": "动力辊轧机可以处理位于其下方的物品", + "create.ponder.mechanical_press.text_2": "在其下方丢入物品,或者将物品放在置物台上,都算作有效的物品输入", + "create.ponder.mechanical_press.text_3": "若物品被输入时正位于传送带上...", + "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.text_3": "一些配方可能需要烈焰人燃烧室提供热量", + "create.ponder.mechanical_press_compacting.text_4": "过滤槽可用于解决两个配方相互冲突的情况", + + "create.ponder.mechanical_saw_breaker.header": "使用动力锯伐木", + "create.ponder.mechanical_saw_breaker.text_1": "向其通入旋转力后,动力锯可以直接砍伐掉它面前的树木", + "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.text_1": "面向朝上的动力锯可以将物品处理为其变种", + "create.ponder.mechanical_saw_processing.text_2": "处理过后的物品的弹出方向始终与通入锯中的旋转转向相反", + "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_4": "一段时间过后,右击石磨可以拿出其中的产物", + "create.ponder.millstone.text_5": "产物的提取也是可以自动化的", + + "create.ponder.nixie_tube.header": "使用辉光管", + "create.ponder.nixie_tube.text_1": "通入红石信号后,辉光管会显示出红石信号的强度", + "create.ponder.nixie_tube.text_2": "使用命名牌在铁砧上为其命名,可以自定义它的显示文本", + + "create.ponder.piston_pole.header": "活塞延长杆", + "create.ponder.piston_pole.text_1": "若无相接的延长杆,动力活塞无法移动其他方块", + "create.ponder.piston_pole.text_2": "在其背面安装的延长杆长度,决定了活塞的推动范围", + + "create.ponder.portable_storage_interface.header": "装置存储交换", + "create.ponder.portable_storage_interface.text_1": "玩家无法与运动装置内的存储空间进行交互", + "create.ponder.portable_storage_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的存储空间进行交互", + "create.ponder.portable_storage_interface.text_3": "放置第二个接口时,记得要与装置接口相隔 1 格或者 2 格的距离", + "create.ponder.portable_storage_interface.text_4": "当它们彼此经过时,它们会连接在一起", + "create.ponder.portable_storage_interface.text_5": "连接状态下,固定侧接口便会作为整个装置的存储空间代理", + "create.ponder.portable_storage_interface.text_6": "物品会被输入到装置内...", + "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.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_4": "你也可以手动切换其状态", + + "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_3": "...开启或者是关闭", + "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", + + "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", + "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", + + "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", + "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", + "create.ponder.radial_chassis.text_2": "当其中的一个底盘被装置带动时,其余的底盘也会被带动", + "create.ponder.radial_chassis.text_3": "底盘的侧边可以变为黏性面", + "create.ponder.radial_chassis.text_4": "再次点击黏性面,可以让其所有面都变得带黏性", + "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_9": "黏性面一侧的不可及方块不会被黏着", + + "create.ponder.redstone_contact.header": "接触式红石信号发生器", + "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": "潜行右击可以改变其接收模式", + "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": "只有频道相互匹配的终端方可互通", + + "create.ponder.rope_pulley.header": "使用绳索滑轮移动结构", + "create.ponder.rope_pulley.text_1": "绳索滑轮在接受旋转力时可以垂直移动方块结构", + "create.ponder.rope_pulley.text_2": "移动的方向及速度取决于提供的转速", + + "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": "注意,只有绳索滑轮停止工作时才能被移动", + + "create.ponder.rope_pulley_modes.header": "绳索滑轮的运动模式", + "create.ponder.rope_pulley_modes.text_1": "当绳索滑轮停止运动时,它所附属的移动结构便会方块化", + "create.ponder.rope_pulley_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的初始位置方块化", + + "create.ponder.rotation_speed_controller.header": "使用转速控制器", + "create.ponder.rotation_speed_controller.text_1": "转速控制器将旋转力从其转轴传递至它上方的大齿轮", + "create.ponder.rotation_speed_controller.text_2": "在其侧面滚动鼠标滚轮,可以调节输出转速", + + "create.ponder.sail.header": "使用风帆来组装风车", + "create.ponder.sail.text_1": "风帆是制作风车的趁手材料", + "create.ponder.sail.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", + "create.ponder.sail.text_3": "手持染料右击可对其染色", + "create.ponder.sail.text_4": "手持剪刀右击可剪除帆布,使其变回风帆框架", + + "create.ponder.sail_frame.header": "使用风帆框架来组装风车", + "create.ponder.sail_frame.text_1": "风帆框架是制作风车的趁手材料", + "create.ponder.sail_frame.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", + + "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.shaft.header": "使用传动杆传递旋转力", + "create.ponder.shaft.text_1": "传动杆能直线传递旋转力", + + "create.ponder.shaft_casing.header": "传动杆箱", + "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.speedometer.header": "使用速度表来监测转速", + "create.ponder.speedometer.text_1": "速度表能显示相接组件的转速", + "create.ponder.speedometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", + "create.ponder.speedometer.text_3": "红石比较器可以根据速度表的数值输出不同强弱的红石信号", + + "create.ponder.stabilized_bearings.header": "装置固定朝向", + "create.ponder.stabilized_bearings.text_1": "当动力轴承在结构被带动时...", + "create.ponder.stabilized_bearings.text_2": "...它会确保它转盘的垂直朝向不变", + "create.ponder.stabilized_bearings.text_3": "跟默认的一样,动力轴承会黏着它前方的方块", + "create.ponder.stabilized_bearings.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.super_glue.header": "使用强力胶来黏附方块", + "create.ponder.super_glue.text_1": "强力胶可以在任意两个方块间使用", + "create.ponder.super_glue.text_2": "当被粘合的方块被组装为装置时,他们会一起运动", + "create.ponder.super_glue.text_3": "当强力胶在副手时...", + "create.ponder.super_glue.text_4": "...新放置的方块会自动被黏附在所放置方块的面上", + "create.ponder.super_glue.text_5": "左击可以清除强力胶", + + "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.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_10": "现在,只有等被放置的物品数量等于所设定数量时,弹射置物台才会弹射物品", + "create.ponder.weighted_ejector.text_11": "当其他实体站在弹射置物台上时会被直接弹射", + "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_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.text_1": "与黄铜隧道搭配使用时,弹射置物台可以将物品以特定数量进行分流", + "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.text_1": "在风车轴承会黏附它前方的方块", + "create.ponder.windmill_source.text_2": "如果有足够多的风帆方块黏附于其上,那么整体结构便可被视为风车", + "create.ponder.windmill_source.text_3": "右击启动后,风车轴承会开始产生旋转力", + "create.ponder.windmill_source.text_4": "产生的转速取决于风帆方块的数量", + "create.ponder.windmill_source.text_5": "使用扳手可以调整风车的旋转方向", + "create.ponder.windmill_source.text_6": "任何时候右击轴承,都可以将其停止,这样方便于你修改风车的结构", + + "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/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index e7fb6b633..2beea3cc9 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: 633", + "_": "Missing Localizations: 655", "_": "->------------------------] Game Elements [------------------------<-", @@ -456,7 +456,6 @@ "item.create.crushed_tin_ore": "碎狀錫礦石", "item.create.crushed_uranium_ore": "碎狀鈾礦石", "item.create.crushed_zinc_ore": "碎狀鋅礦石", - "item.create.deforester": "連根拔樹斧", "item.create.dough": "麵團", "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", @@ -466,7 +465,6 @@ "item.create.furnace_minecart_contraption": "裝配過的機械礦車", "item.create.goggles": "MR護目鏡", "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "方塊放置器", "item.create.handheld_worldshaper": "地形雕塑器", "item.create.honey_bucket": "蜂蜜桶", "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", @@ -645,14 +643,8 @@ "advancement.create.refined_radiance.desc": "製作光輝石", "advancement.create.chromatic_age": "繽紛時代", "advancement.create.chromatic_age.desc": "創造出光與影的機殼。", - "advancement.create.zapper": "專業的建築師", - "advancement.create.zapper.desc": "製作一個非常方便的方塊放置器", - "advancement.create.upgraded_zapper": "來自異世界的超頻", - "advancement.create.upgraded_zapper.desc": "製作一個完全升級的方塊放置器", "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", - "advancement.create.deforester": "超時空砍伐", - "advancement.create.deforester.desc": "製作一個連根拔樹斧,然後跟你後院的樹林道別吧", "advancement.create.extendo_grip": "piu piu piu!", "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", "advancement.create.dual_extendo_grip": "piu——piu——piu——", @@ -695,7 +687,6 @@ "create.recipe.automatic_shaped": "自動合成", "create.recipe.block_cutting": "方塊切割", "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.blockzapper_upgrade": "方塊放置器", "create.recipe.sandpaper_polishing": "砂紙打磨", "create.recipe.mystery_conversion": "神秘轉化", "create.recipe.spout_filling": "注液", @@ -752,20 +743,16 @@ "create.orientation.alongZ": "以z軸對齊", "create.orientation.alongX": "以x軸對齊", - "create.gui.blockzapper.title": "方塊放置機", - "create.gui.blockzapper.replaceMode": "替換模式", - "create.gui.blockzapper.searchDiagonal": "對角線延伸", - "create.gui.blockzapper.searchFuzzy": "忽視種類分界", - "create.gui.blockzapper.range": "延伸範圍", - "create.gui.blockzapper.needsUpgradedAmplifier": "需要升級範圍擴大器", - "create.gui.blockzapper.patternSection": "模式", - "create.gui.blockzapper.pattern.solid": "實心", - "create.gui.blockzapper.pattern.checkered": "棋盤", - "create.gui.blockzapper.pattern.inversecheckered": "反轉棋盤", - "create.gui.blockzapper.pattern.chance25": "25% ", - "create.gui.blockzapper.pattern.chance50": "50% ", - "create.gui.blockzapper.pattern.chance75": "75% ", "create.gui.terrainzapper.title": "地形雕塑器", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", "create.gui.terrainzapper.placement": "放置模式", "create.gui.terrainzapper.placement.merged": "結合", "create.gui.terrainzapper.placement.attached": "依附", @@ -774,6 +761,8 @@ "create.gui.terrainzapper.brush.cuboid": "矩形體", "create.gui.terrainzapper.brush.sphere": "球體", "create.gui.terrainzapper.brush.cylinder": "圓柱體", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", "create.gui.terrainzapper.tool": "填充類型", "create.gui.terrainzapper.tool.fill": "填充", "create.gui.terrainzapper.tool.place": "覆寫", @@ -783,19 +772,8 @@ "create.gui.terrainzapper.tool.flatten": "平整", "create.terrainzapper.shiftRightClickToSet": "Shift+滑鼠右鍵 以設定雕塑類型", - - "create.blockzapper.usingBlock": "使用:%1$s", - "create.blockzapper.componentUpgrades": "零件升級:", - "create.blockzapper.component.body": "放置器機體", - "create.blockzapper.component.amplifier": "範圍擴大器", - "create.blockzapper.component.accelerator": "射擊加速器", - "create.blockzapper.component.retriever": "物品撿回器", - "create.blockzapper.component.scope": "距離觀察鏡", - "create.blockzapper.componentTier.none": "無", - "create.blockzapper.componentTier.brass": "黃銅", - "create.blockzapper.componentTier.chromatic": "異彩化合物", - "create.blockzapper.leftClickToSet": "左鍵點擊方塊以設定方塊種類", - "create.blockzapper.empty": "方塊不足!", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", "create.minecart_coupling.two_couplings_max": "礦車無法被連接兩個以上的礦車連結器", "create.minecart_coupling.unloaded": "有一部份礦車存在於未讀取區塊中", @@ -1155,20 +1133,26 @@ "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", "create.subtitle.slime_added": "黏液擠壓", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.blockzapper_confirm": "選擇方塊", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.blockzapper_place": "放置方塊", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "烈焰使者開心地吃著", "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "液壓機工作", - "create.subtitle.blockzapper_deny": "放置失敗", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1274,15 +1258,6 @@ "item.create.wand_of_symmetry.tooltip.control3": "當潛行右鍵時", "item.create.wand_of_symmetry.tooltip.action3": "打開_gui界面_", - "item.create.handheld_blockzapper.tooltip": "方塊放置器", - "item.create.handheld_blockzapper.tooltip.summary": "新穎的小工具,可以遠距離放置或更換方塊。", - "item.create.handheld_blockzapper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_blockzapper.tooltip.action1": "設定放置此方塊。", - "item.create.handheld_blockzapper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替換_目標方塊。", - "item.create.handheld_blockzapper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_blockzapper.tooltip.action3": "打開_gui界面_", - "item.create.handheld_worldshaper.tooltip": "環境塑形器", "item.create.handheld_worldshaper.tooltip.summary": "_大面積_更改地形的手持工具", "item.create.handheld_worldshaper.tooltip.control1": "當左鍵方塊時", @@ -1297,9 +1272,6 @@ "item.create.tree_fertilizer.tooltip.condition1": "在樹苗上使用時", "item.create.tree_fertilizer.tooltip.behaviour1": "無論_生長時間_多少,直接長大", - "item.create.deforester.tooltip": "連根拔樹斧", - "item.create.deforester.tooltip.summary": "_連根拔樹斧_,從最根砍樹時,能夠瞬間連根拔起一棵樹", - "item.create.extendo_grip.tooltip": "伸縮機械手", "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。", "item.create.extendo_grip.tooltip.condition1": "放置於副手欄時", diff --git a/src/generated/resources/assets/create/models/item/deforester.json b/src/generated/resources/assets/create/models/item/deforester.json deleted file mode 100644 index 00fa0cc0c..000000000 --- a/src/generated/resources/assets/create/models/item/deforester.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/deforester/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/handheld_blockzapper.json b/src/generated/resources/assets/create/models/item/handheld_blockzapper.json deleted file mode 100644 index a48ce16e4..000000000 --- a/src/generated/resources/assets/create/models/item/handheld_blockzapper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/handheld_blockzapper/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/sounds.json b/src/generated/resources/assets/create/sounds.json index 9ce292b97..24f47e279 100644 --- a/src/generated/resources/assets/create/sounds.json +++ b/src/generated/resources/assets/create/sounds.json @@ -8,38 +8,72 @@ ], "subtitle": "create.subtitle.blaze_munch" }, - "blockzapper_confirm": { + "cogs": { + "sounds": [ + "create:cogs" + ], + "subtitle": "create.subtitle.cogs" + }, + "confirm": { "sounds": [ { "name": "minecraft:block.note_block.bell", "type": "event" } ], - "subtitle": "create.subtitle.blockzapper_confirm" + "subtitle": "create.subtitle.confirm" }, - "blockzapper_deny": { + "contraption_assemble": { "sounds": [ { - "name": "minecraft:block.note_block.bass", + "name": "minecraft:block.wooden_trapdoor.open", "type": "event" } ], - "subtitle": "create.subtitle.blockzapper_deny" + "subtitle": "create.subtitle.contraption_assemble" }, - "blockzapper_place": { + "contraption_assemble_compounded_1": { "sounds": [ { - "name": "minecraft:block.note_block.basedrum", + "name": "minecraft:block.chest.open", + "type": "event" + } + ] + }, + "contraption_disassemble": { + "sounds": [ + { + "name": "minecraft:block.iron_trapdoor.close", "type": "event" } ], - "subtitle": "create.subtitle.blockzapper_place" + "subtitle": "create.subtitle.contraption_disassemble" }, - "cogs": { + "crafter_click": { "sounds": [ - "create:cogs" + { + "name": "minecraft:block.netherite_block.hit", + "type": "event" + } ], - "subtitle": "create.subtitle.cogs" + "subtitle": "create.subtitle.crafter_click" + }, + "crafter_click_compounded_1": { + "sounds": [ + { + "name": "minecraft:block.wooden_trapdoor.open", + "type": "event" + } + ] + }, + "crafter_craft": { + "sounds": [ + { + "name": "minecraft:entity.item.break", + "type": "event" + } + ], + "subtitle": "create.subtitle.crafter_craft" }, "cranking": { "sounds": [ @@ -58,6 +92,15 @@ } ] }, + "deny": { + "sounds": [ + { + "name": "minecraft:block.note_block.bass", + "type": "event" + } + ], + "subtitle": "create.subtitle.deny" + }, "depot_plop": { "sounds": [ { @@ -179,5 +222,40 @@ } ], "subtitle": "create.subtitle.slime_added" + }, + "worldshaper_place": { + "sounds": [ + { + "name": "minecraft:block.note_block.basedrum", + "type": "event" + } + ], + "subtitle": "create.subtitle.worldshaper_place" + }, + "wrench_remove": { + "sounds": [ + { + "name": "minecraft:entity.item.pickup", + "type": "event" + } + ], + "subtitle": "create.subtitle.wrench_remove" + }, + "wrench_remove_compounded_1": { + "sounds": [ + { + "name": "minecraft:block.netherite_block.hit", + "type": "event" + } + ] + }, + "wrench_rotate": { + "sounds": [ + { + "name": "minecraft:block.wooden_trapdoor.close", + "type": "event" + } + ], + "subtitle": "create.subtitle.wrench_rotate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/deforester.json b/src/generated/resources/data/create/advancements/deforester.json deleted file mode 100644 index c0db60900..000000000 --- a/src/generated/resources/data/create/advancements/deforester.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "parent": "create:refined_radiance", - "display": { - "icon": { - "item": "create:deforester", - "nbt": "{Damage:0}" - }, - "title": { - "translate": "advancement.create.deforester" - }, - "description": { - "translate": "advancement.create.deforester.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:deforester" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/deforester.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/deforester.json deleted file mode 100644 index 31d8dbe0f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/deforester.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/curiosities/deforester" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/curiosities/deforester" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/handheld_blockzapper.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/handheld_blockzapper.json deleted file mode 100644 index 737429783..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/handheld_blockzapper.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/curiosities/handheld_blockzapper" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/curiosities/handheld_blockzapper" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/upgraded_zapper.json b/src/generated/resources/data/create/advancements/upgraded_zapper.json deleted file mode 100644 index 870723d1a..000000000 --- a/src/generated/resources/data/create/advancements/upgraded_zapper.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "parent": "create:zapper", - "display": { - "icon": { - "item": "create:handheld_blockzapper", - "nbt": "{Retriever:\"Chromatic\",Scope:\"Chromatic\",Amplifier:\"Chromatic\",Body:\"Chromatic\",Accelerator:\"Chromatic\"}" - }, - "title": { - "translate": "advancement.create.upgraded_zapper" - }, - "description": { - "translate": "advancement.create.upgraded_zapper.desc" - }, - "frame": "challenge", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:upgraded_zapper", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/zapper.json b/src/generated/resources/data/create/advancements/zapper.json deleted file mode 100644 index 07313062d..000000000 --- a/src/generated/resources/data/create/advancements/zapper.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:refined_radiance", - "display": { - "icon": { - "item": "create:handheld_blockzapper" - }, - "title": { - "translate": "advancement.create.zapper" - }, - "description": { - "translate": "advancement.create.zapper.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:handheld_blockzapper" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/curiosities/deforester.json b/src/generated/resources/data/create/recipes/crafting/curiosities/deforester.json deleted file mode 100644 index de44f0a44..000000000 --- a/src/generated/resources/data/create/recipes/crafting/curiosities/deforester.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EG", - "EO", - " O" - ], - "key": { - "E": { - "item": "create:refined_radiance" - }, - "G": { - "item": "create:cogwheel" - }, - "O": { - "tag": "forge:obsidian" - } - }, - "result": { - "item": "create:deforester" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/curiosities/handheld_blockzapper.json b/src/generated/resources/data/create/recipes/crafting/curiosities/handheld_blockzapper.json deleted file mode 100644 index 02b7a8cd0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/curiosities/handheld_blockzapper.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " E", - " O ", - "OA " - ], - "key": { - "E": { - "item": "create:refined_radiance" - }, - "A": { - "item": "create:andesite_alloy" - }, - "O": { - "tag": "forge:obsidian" - } - }, - "result": { - "item": "create:handheld_blockzapper" - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index d6a27e9d0..102fc4412 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -1,38 +1,20 @@ package com.simibubi.create; -import static net.minecraft.state.properties.BlockStateProperties.FACING; -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; -import com.simibubi.create.foundation.render.backend.instancing.RenderMaterial; -import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; +import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.MatrixStacker; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.ModelBakeEvent; -import net.minecraftforge.client.event.ModelRegistryEvent; -import net.minecraftforge.client.model.ModelLoader; public class AllBlockPartials { - private static final List all = new ArrayList<>(); - - public static final AllBlockPartials SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), + public static final PartialModel SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), SCHEMATICANNON_PIPE = get("schematicannon/pipe"), SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFT_HALF = get("shaft_half"), @@ -123,124 +105,40 @@ public class AllBlockPartials { ; - public static final Map> PIPE_ATTACHMENTS = map(); - public static final Map BLAZES = map(); + public static final Map> PIPE_ATTACHMENTS = new HashMap<>(); + public static final Map BLAZES = new HashMap<>(); static { populateMaps(); } - ; - - private ResourceLocation modelLocation; - private IBakedModel bakedModel; - - private AllBlockPartials() {} - - private static void populateMaps() { - for (AttachmentTypes type : AttachmentTypes.values()) { + static void populateMaps() { + for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) { if (!type.hasModel()) continue; - Map map = map(); + Map map = new HashMap<>(); for (Direction d : Iterate.directions) { String asId = Lang.asId(type.name()); map.put(d, get("fluid_pipe/" + asId + "/" + Lang.asId(d.getString()))); } PIPE_ATTACHMENTS.put(type, map); } - for (HeatLevel heat : HeatLevel.values()) { - if (heat == HeatLevel.NONE) + for (BlazeBurnerBlock.HeatLevel heat : BlazeBurnerBlock.HeatLevel.values()) { + if (heat == BlazeBurnerBlock.HeatLevel.NONE) continue; BLAZES.put(heat, get("blaze_burner/blaze/" + heat.getString())); } } - private static Map map() { - return new HashMap<>(); + private static PartialModel getEntity(String path) { + return new PartialModel(new ResourceLocation(Create.ID, "entity/" + path)); } - private static AllBlockPartials getEntity(String path) { - AllBlockPartials partials = new AllBlockPartials(); - partials.modelLocation = new ResourceLocation(Create.ID, "entity/" + path); - all.add(partials); - return partials; + private static PartialModel get(String path) { + return new PartialModel(new ResourceLocation(Create.ID, "block/" + path)); } - private static AllBlockPartials get(String path) { - AllBlockPartials partials = new AllBlockPartials(); - partials.modelLocation = new ResourceLocation(Create.ID, "block/" + path); - all.add(partials); - return partials; + public static void clientInit() { + // init static fields } - - public static void onModelRegistry(ModelRegistryEvent event) { - for (AllBlockPartials partial : all) - ModelLoader.addSpecialModel(partial.modelLocation); - } - - public static void onModelBake(ModelBakeEvent event) { - Map modelRegistry = event.getModelRegistry(); - for (AllBlockPartials partial : all) - partial.bakedModel = modelRegistry.get(partial.modelLocation); - } - - public IBakedModel get() { - return bakedModel; - } - - public SuperByteBuffer renderOn(BlockState referenceState) { - return CreateClient.bufferCache.renderPartial(this, referenceState); - } - - public SuperByteBuffer renderOnDirectionalSouth(BlockState referenceState) { - Direction facing = referenceState.get(FACING); - return renderOnDirectionalSouth(referenceState, facing); - } - - public SuperByteBuffer renderOnDirectional(BlockState referenceState) { - Direction facing = referenceState.get(FACING); - return renderOnDirectional(referenceState, facing); - } - - public SuperByteBuffer renderOnHorizontal(BlockState referenceState) { - Direction facing = referenceState.get(HORIZONTAL_FACING); - return renderOnDirectionalSouth(referenceState, facing); - } - - public SuperByteBuffer renderOnDirectionalSouth(BlockState referenceState, Direction facing) { - MatrixStack ms = new MatrixStack(); - // TODO 1.15 find a way to cache this model matrix computation - MatrixStacker.of(ms) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); - return CreateClient.bufferCache.renderDirectionalPartial(this, referenceState, facing, ms); - } - - public SuperByteBuffer renderOnDirectional(BlockState referenceState, Direction facing) { - MatrixStack ms = new MatrixStack(); - // TODO 1.15 find a way to cache this model matrix computation - MatrixStacker.of(ms) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .unCentre(); - return CreateClient.bufferCache.renderDirectionalPartial(this, referenceState, facing, ms); - } - - public > M getModel(RenderMaterial mat, BlockState referenceState, - Direction facing) { - Supplier ms = () -> { - MatrixStack stack = new MatrixStack(); - MatrixStacker.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); - return stack; - }; - return mat.getModel(this, referenceState, facing, ms); - } - } diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index fb06bd42f..bf7e9dc14 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -179,6 +179,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.data.ShapedRecipeBuilder; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; +import net.minecraft.item.Rarity; import net.minecraft.state.properties.PistonType; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -336,6 +337,7 @@ public class AllBlocks { .blockstate(new CreativeMotorGenerator()::generate) .transform(StressConfigDefaults.setCapacity(16384.0)) .item() + .properties(p -> p.rarity(Rarity.EPIC)) .transform(customItemModel()) .register(); @@ -644,6 +646,7 @@ public class AllBlocks { .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::creative)) .addLayer(() -> RenderType::getCutoutMipped) .item(FluidTankItem::new) + .properties(p -> p.rarity(Rarity.EPIC)) .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/fluid_tank/block_single_window")) .texture("5", p.modLoc("block/creative_fluid_tank_window_single")) .texture("1", p.modLoc("block/creative_fluid_tank")) diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 6554462e0..46998c185 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -1,10 +1,10 @@ package com.simibubi.create; -import static com.simibubi.create.AllTags.forgeItemTag; import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS; import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES; import static com.simibubi.create.AllTags.AllItemTags.NUGGETS; import static com.simibubi.create.AllTags.AllItemTags.PLATES; +import static com.simibubi.create.AllTags.forgeItemTag; import static com.simibubi.create.content.AllSections.CURIOSITIES; import static com.simibubi.create.content.AllSections.KINETICS; import static com.simibubi.create.content.AllSections.LOGISTICS; @@ -31,14 +31,10 @@ import com.simibubi.create.content.curiosities.ShadowSteelItem; import com.simibubi.create.content.curiosities.TreeFertilizerItem; import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandModel; -import com.simibubi.create.content.curiosities.tools.DeforesterItem; -import com.simibubi.create.content.curiosities.tools.DeforesterModel; import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; import com.simibubi.create.content.curiosities.tools.ExtendoGripModel; import com.simibubi.create.content.curiosities.tools.SandPaperItem; import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer.SandPaperModel; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperModel; import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem; import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperModel; import com.simibubi.create.content.logistics.item.filter.FilterItem; @@ -208,6 +204,25 @@ public class AllItems { .model(AssetLookup.itemModelWithPartials()) .register(); + public static final ItemEntry EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new) + .transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new)) + .model(AssetLookup.itemModelWithPartials()) + .register(); + + public static final ItemEntry WAND_OF_SYMMETRY = + REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) + .transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new)) + .model(AssetLookup.itemModelWithPartials()) + .register(); + + public static final ItemEntry WORLDSHAPER = + REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) + .properties(p -> p.rarity(Rarity.EPIC)) + .transform(CreateRegistrate.customRenderedItem(() -> WorldshaperModel::new)) + .lang("Creative Worldshaper") + .model(AssetLookup.itemModelWithPartials()) + .register(); + public static final ItemEntry MINECART_CONTRAPTION = REGISTRATE.item("minecart_contraption", MinecartContraptionItem::rideable) .register(); @@ -245,34 +260,6 @@ public class AllItems { REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new) .register(); - public static final ItemEntry BLOCKZAPPER = - REGISTRATE.item("handheld_blockzapper", BlockzapperItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> BlockzapperModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry WORLDSHAPER = - REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> WorldshaperModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry DEFORESTER = REGISTRATE.item("deforester", DeforesterItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> DeforesterModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry WAND_OF_SYMMETRY = - REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - // Schematics static { diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 908e39e87..910241dd6 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -19,7 +19,6 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeFactory; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperUpgradeRecipe; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.inventory.IInventory; @@ -34,9 +33,7 @@ import net.minecraftforge.event.RegistryEvent; public enum AllRecipeTypes { - BLOCKZAPPER_UPGRADE(BlockzapperUpgradeRecipe.Serializer::new, IRecipeType.CRAFTING), MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), - CONVERSION(processingSerializer(ConversionRecipe::new)), CRUSHING(processingSerializer(CrushingRecipe::new)), CUTTING(processingSerializer(CuttingRecipe::new)), diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index d6af82c45..32976ac3f 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -91,22 +91,22 @@ public class AllSoundEvents { .category(SoundCategory.BLOCKS) .build(), - BLOCKZAPPER_PLACE = create("blockzapper_place").subtitle("Blockzapper zaps") + WORLDSHAPER_PLACE = create("worldshaper_place").subtitle("Worldshaper zaps") .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BASEDRUM) .category(SoundCategory.PLAYERS) .build(), - + SCROLL_VALUE = create("scroll_value").subtitle("Scroll-input clicks") .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_HAT, .124f, 1f) .category(SoundCategory.PLAYERS) .build(), - BLOCKZAPPER_CONFIRM = create("blockzapper_confirm").subtitle("Affirmative ding") + CONFIRM = create("confirm").subtitle("Affirmative ding") .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BELL, 0.5f, 0.8f) .category(SoundCategory.PLAYERS) .build(), - BLOCKZAPPER_DENY = create("blockzapper_deny").subtitle("Declining boop") + DENY = create("deny").subtitle("Declining boop") .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BASS, 1f, 0.5f) .category(SoundCategory.PLAYERS) .build(), @@ -115,6 +115,39 @@ public class AllSoundEvents { .category(SoundCategory.BLOCKS) .build(), + CONTRAPTION_ASSEMBLE = create("contraption_assemble").subtitle("Contraption moves") + .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN, .5f, .5f) + .playExisting(SoundEvents.BLOCK_CHEST_OPEN, .045f, .74f) + .category(SoundCategory.BLOCKS) + .build(), + + CONTRAPTION_DISASSEMBLE = create("contraption_disassemble").subtitle("Contraption stops") + .playExisting(SoundEvents.BLOCK_IRON_TRAPDOOR_CLOSE, .35f, .75f) + .category(SoundCategory.BLOCKS) + .build(), + + WRENCH_ROTATE = create("wrench_rotate").subtitle("Wrench used") + .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_CLOSE, .25f, 1.25f) + .category(SoundCategory.BLOCKS) + .build(), + + WRENCH_REMOVE = create("wrench_remove").subtitle("Component breaks") + .playExisting(SoundEvents.ENTITY_ITEM_PICKUP, .25f, .75f) + .playExisting(SoundEvents.BLOCK_NETHERITE_BLOCK_HIT, .25f, .75f) + .category(SoundCategory.BLOCKS) + .build(), + + CRAFTER_CLICK = create("crafter_click").subtitle("Crafter clicks") + .playExisting(SoundEvents.BLOCK_NETHERITE_BLOCK_HIT, .25f, 1) + .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN, .125f, 1) + .category(SoundCategory.BLOCKS) + .build(), + + CRAFTER_CRAFT = create("crafter_craft").subtitle("Crafter crafts") + .playExisting(SoundEvents.ENTITY_ITEM_BREAK, .125f, .75f) + .category(SoundCategory.BLOCKS) + .build(), + BLAZE_MUNCH = create("blaze_munch").subtitle("Blaze Burner munches") .playExisting(SoundEvents.ENTITY_GENERIC_EAT, .5f, 1f) .category(SoundCategory.BLOCKS) diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index f1d0ef977..4442b5b5d 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -28,6 +28,7 @@ import com.simibubi.create.foundation.render.KineticRenderer; import com.simibubi.create.foundation.render.SuperByteBufferCache; import com.simibubi.create.foundation.render.backend.Backend; import com.simibubi.create.foundation.render.backend.OptifineHandler; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; import com.simibubi.create.foundation.utility.WorldAttached; import com.simibubi.create.foundation.utility.ghost.GhostBlocks; @@ -119,7 +120,7 @@ public class CreateClient { if (resourceManager instanceof IReloadableResourceManager) ((IReloadableResourceManager) resourceManager).addReloadListener(new ResourceReloadHandler()); - + AllBlockPartials.clientInit(); } public static void onTextureStitch(TextureStitchEvent.Pre event) { @@ -133,7 +134,7 @@ public class CreateClient { public static void onModelBake(ModelBakeEvent event) { Map modelRegistry = event.getModelRegistry(); - AllBlockPartials.onModelBake(event); + PartialModel.onModelBake(event); getCustomBlockModels() .foreach((block, modelFunc) -> swapModels(modelRegistry, getAllBlockStateModelLocations(block), modelFunc)); @@ -146,7 +147,7 @@ public class CreateClient { } public static void onModelRegistry(ModelRegistryEvent event) { - AllBlockPartials.onModelRegistry(event); + PartialModel.onModelRegistry(event); getCustomRenderedItems().foreach((item, modelFunc) -> modelFunc.apply(null) .getModelLocations() 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 adbcf7883..9e1511e9e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -17,7 +17,6 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; import com.simibubi.create.compat.jei.category.BlockCuttingCategory; import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe; -import com.simibubi.create.compat.jei.category.BlockzapperUpgradeCategory; import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.compat.jei.category.CrushingCategory; import com.simibubi.create.compat.jei.category.FanBlastingCategory; @@ -54,7 +53,6 @@ import mezz.jei.api.registration.IGuiHandlerRegistration; import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; -import mezz.jei.api.registration.ISubtypeRegistration; import mezz.jei.api.runtime.IIngredientManager; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -110,11 +108,6 @@ public class CreateJEI implements IModPlugin { .catalystStack(ProcessingViaFanCategory.getFan("fan_blasting")) .build(), - blockzapper = register("blockzapper_upgrade", BlockzapperUpgradeCategory::new) - .recipes(AllRecipeTypes.BLOCKZAPPER_UPGRADE.serializer.getRegistryName()) - .catalyst(AllItems.BLOCKZAPPER::get) - .build(), - mixing = register("mixing", MixingCategory::standard).recipes(AllRecipeTypes.MIXING::getType) .catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.BASIN::get) @@ -208,11 +201,6 @@ public class CreateJEI implements IModPlugin { return new CategoryBuilder(name, supplier); } - @Override - public void registerItemSubtypes(ISubtypeRegistration registration) { - registration.useNbtForSubtypes(AllItems.BLOCKZAPPER.get()); - } - @Override public void registerCategories(IRecipeCategoryRegistration registration) { ALL.forEach(registration::addRecipeCategories); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BlockzapperUpgradeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BlockzapperUpgradeCategory.java deleted file mode 100644 index 427f83df2..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/BlockzapperUpgradeCategory.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import static com.simibubi.create.foundation.gui.AllGuiTextures.BLOCKZAPPER_UPGRADE_RECIPE; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.compat.jei.ScreenResourceWrapper; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperUpgradeRecipe; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.Lang; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.util.NonNullList; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class BlockzapperUpgradeCategory extends CreateRecipeCategory { - - public BlockzapperUpgradeCategory() { - super(itemIcon(AllItems.BLOCKZAPPER.get()), new ScreenResourceWrapper(BLOCKZAPPER_UPGRADE_RECIPE)); - } - - @Override - public Class getRecipeClass() { - return BlockzapperUpgradeRecipe.class; - } - - @Override - public void setIngredients(BlockzapperUpgradeRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, BlockzapperUpgradeRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - ShapedRecipe shape = recipe.getRecipe(); - NonNullList shapedIngredients = shape.getIngredients(); - - int top = 0; - int left = 0; - - int i = 0; - for (int y = 0; y < shape.getRecipeHeight(); y++) { - for (int x = 0; x < shape.getRecipeWidth(); x++) { - itemStacks.init(i, true, left + x * 18, top + y * 18); - itemStacks.set(i, Arrays.asList(shapedIngredients.get(i) - .getMatchingStacks())); - i++; - } - } - } - - @Override - public List getTooltipStrings(BlockzapperUpgradeRecipe recipe, double mouseX, double mouseY) { - List list = new ArrayList<>(); - if (mouseX < 91 || mouseX > 91 + 52 || mouseY < 1 || mouseY > 53) - return list; - list.addAll(recipe.getRecipeOutput() - .getTooltip(Minecraft.getInstance().player, - Minecraft.getInstance().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED - : ITooltipFlag.TooltipFlags.NORMAL)); - return list; - } - - @Override - public void draw(BlockzapperUpgradeRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - FontRenderer font = Minecraft.getInstance().fontRenderer; - - IFormattableTextComponent textComponent = - new StringTextComponent("+ ") - .append(Lang.translate("blockzapper.component." + Lang.asId(recipe.getUpgradedComponent().name()))) - .formatted(recipe.getTier().color); - - font.drawWithShadow(matrixStack, textComponent, (BLOCKZAPPER_UPGRADE_RECIPE.width - font.getStringWidth(textComponent.getString())) / 2f, 57, 0x8B8B8B); - - GuiGameElement.of(recipe.getRecipeOutput()) - .at(90, 0) - .scale(3.5) - .render(matrixStack); - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java index 207baa023..2f03d2056 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java @@ -28,7 +28,7 @@ public abstract class ProcessingViaFanCategory> extends Cre public ProcessingViaFanCategory(IDrawable icon) { this(177, icon); } - + protected ProcessingViaFanCategory(int width, IDrawable icon) { super(icon, emptyBackground(width, 71)); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java index 8ec5983de..920ab0bf3 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.foundation.gui.GuiGameElement; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import mezz.jei.api.gui.drawable.IDrawable; import net.minecraft.util.math.vector.Vector3f; @@ -30,7 +31,7 @@ public class AnimatedBlazeBurner implements IDrawable { .scale(scale) .render(matrixStack); - AllBlockPartials blaze = AllBlockPartials.BLAZES.get(heatLevel); + PartialModel blaze = AllBlockPartials.BLAZES.get(heatLevel); GuiGameElement.of(blaze) .atLocal(1, 1.65, 1) .rotate(0, 180, 0) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java index ef9e662ce..fb0e5a880 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java @@ -2,6 +2,7 @@ package com.simibubi.create.compat.jei.category.animations; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.AnimationTickHolder; import mezz.jei.api.gui.drawable.IDrawable; @@ -14,15 +15,15 @@ public abstract class AnimatedKinetics implements IDrawable { public static float getCurrentAngle() { return ((AnimationTickHolder.getRenderTime()) * 4f) % 360; } - + protected BlockState shaft(Axis axis) { return AllBlocks.SHAFT.getDefaultState().with(BlockStateProperties.AXIS, axis); } - - protected AllBlockPartials cogwheel() { + + protected PartialModel cogwheel() { return AllBlockPartials.SHAFTLESS_COGWHEEL; } - + @Override public int getWidth() { return 50; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java index 80bc6a479..8e98eb372 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java @@ -20,7 +20,7 @@ public class AnimatedMillstone extends AnimatedKinetics { .rotateBlock(22.5, getCurrentAngle() * 2, 0) .scale(scale) .render(matrixStack); - + GuiGameElement.of(AllBlocks.MILLSTONE.getDefaultState()) .rotateBlock(22.5, 22.5, 0) .scale(scale) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java index 4b834f520..6d3664988 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java @@ -14,9 +14,9 @@ public class HalfShaftInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - Direction dir = getShaftDirection(); - return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, dir); - } + Direction dir = getShaftDirection(); + return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, dir); + } protected Direction getShaftDirection() { return blockState.get(BlockStateProperties.FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index d6dfbbdeb..93058fb64 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -581,7 +581,7 @@ public abstract class KineticTileEntity extends SmartTileEntity SoundScapes.playGeneralKineticAmbience(pos, pitch); Block block = getBlockState().getBlock(); - if (ICogWheel.isSmallCog(block) || ICogWheel.isSmallCog(block) || block instanceof GearboxBlock) + if (ICogWheel.isSmallCog(block) || ICogWheel.isLargeCog(block) || block instanceof GearboxBlock) SoundScapes.playCogwheelAmbience(pos, pitch); } 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 35af25c77..a74d1a200 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 @@ -15,6 +15,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTUtil; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; @@ -113,6 +114,7 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { float breakSpeed = getBreakSpeed(); destroyProgress += MathHelper.clamp((int) (breakSpeed / blockHardness), 1, 10 - destroyProgress); + world.playSound(null, pos, stateToBreak.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); if (destroyProgress >= 10) { onBlockBroken(stateToBreak); 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 8ce6019aa..14c090563 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 @@ -14,6 +14,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTUtil; import net.minecraft.util.DamageSource; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; @@ -164,7 +165,8 @@ public class BlockBreakingMovementBehaviour extends MovementBehaviour { float breakSpeed = MathHelper.clamp(Math.abs(context.getAnimationSpeed()) / 500f, 1 / 128f, 16f); destroyProgress += MathHelper.clamp((int) (breakSpeed / blockHardness), 1, 10 - destroyProgress); - + world.playSound(null, breakingPos, stateToBreak.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); + if (destroyProgress >= 10) { world.sendBlockBreakProgress(id, breakingPos, -1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java index ad6b2ce47..7d1bdd735 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; public class DrillInstance extends SingleRotatingInstance { @@ -20,6 +21,7 @@ public class DrillInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { BlockState referenceState = tile.getBlockState(); - return AllBlockPartials.DRILL_HEAD.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); + Direction facing = referenceState.get(FACING); + return getRotatingMaterial().getModel(AllBlockPartials.DRILL_HEAD, referenceState, facing); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java index 38f940dab..3734c3509 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -25,22 +26,18 @@ public class DrillRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return AllBlockPartials.DRILL_HEAD.renderOnDirectionalSouth(te.getBlockState()); - } - - protected static SuperByteBuffer getRotatingModel(BlockState state) { - return AllBlockPartials.DRILL_HEAD.renderOnDirectionalSouth(state); + return PartialBufferer.getFacing(AllBlockPartials.DRILL_HEAD, te.getBlockState()); } public static void renderInContraption(MovementContext context, MatrixStack ms, MatrixStack msLocal, IRenderTypeBuffer buffer) { - MatrixStack[] matrixStacks = new MatrixStack[] { ms, msLocal }; + MatrixStack[] matrixStacks = new MatrixStack[]{ms, msLocal}; BlockState state = context.state; - SuperByteBuffer superBuffer = AllBlockPartials.DRILL_HEAD.renderOn(state); + SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.DRILL_HEAD, state); Direction facing = state.get(DrillBlock.FACING); - + float speed = (float) (context.contraption.stalled - || !VecHelper.isVecPointingTowards(context.relativeMotion, facing + || !VecHelper.isVecPointingTowards(context.relativeMotion, facing .getOpposite()) ? context.getAnimationSpeed() : 0); float time = AnimationTickHolder.getRenderTime() / 20; float angle = (float) (((time * speed) % 360)); @@ -52,11 +49,11 @@ public class DrillRenderer extends KineticTileEntityRenderer { .rotateX(AngleHelper.verticalAngle(facing)) .rotateZ(angle) .unCentre(); - + superBuffer .light(msLocal.peek() .getModel()) .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); } -} \ No newline at end of file +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java index 5b50202e3..44cf29765 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java @@ -6,6 +6,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -31,28 +32,28 @@ public class HarvesterRenderer extends SafeTileEntityRenderer= 1000) { + AllSoundEvents.CRAFTER_CLICK.playOnServer(world, pos, 1, 2); + AllSoundEvents.CRAFTER_CRAFT.playOnServer(world, pos); + } + if (countDown < 0) { countDown = 0; if (!runLogic) @@ -391,7 +412,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { BlockState blockState = getBlockState(); boolean present = AllBlocks.MECHANICAL_CRAFTER.has(blockState); Vector3d vec = present ? Vector3d.of(blockState.get(HORIZONTAL_FACING) - .getDirectionVec()).scale(.75f) : Vector3d.ZERO; + .getDirectionVec()) + .scale(.75f) : Vector3d.ZERO; Vector3d ejectPos = VecHelper.getCenterOf(pos) .add(vec); groupedItems.grid.forEach((pair, stack) -> dropItem(ejectPos, stack)); 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 459842898..2b2bda8d6 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 @@ -6,6 +6,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; @@ -38,12 +39,12 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE getTileEntityClass() { return HandCrankTileEntity.class; } - + @Override public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java index 34751963a..843882dce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.crank; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.foundation.render.backend.core.ModelData; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.IDynamicInstance; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; @@ -22,21 +22,22 @@ public class HandCrankInstance extends SingleRotatingInstance implements IDynami public HandCrankInstance(InstancedTileRenderer modelManager, HandCrankTileEntity tile) { super(modelManager, tile); - this.tile = tile; + this.tile = tile; - Block block = blockState.getBlock(); - AllBlockPartials renderedHandle = null; - if (block instanceof HandCrankBlock) - renderedHandle = ((HandCrankBlock) block).getRenderedHandle(); - if (renderedHandle == null) - return; + Block block = blockState.getBlock(); + PartialModel renderedHandle = null; + if (block instanceof HandCrankBlock) + renderedHandle = ((HandCrankBlock) block).getRenderedHandle(); + if (renderedHandle == null) + return; - facing = blockState.get(BlockStateProperties.FACING); - InstancedModel model = renderedHandle.getModel(getTransformMaterial(), blockState, facing.getOpposite()); - crank = model.createInstance(); + facing = blockState.get(BlockStateProperties.FACING); + Direction opposite = facing.getOpposite(); + InstancedModel model = getTransformMaterial().getModel(renderedHandle, blockState, opposite); + crank = model.createInstance(); - rotateCrank(); - } + rotateCrank(); + } @Override public void beginFrame() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java index 11442df9e..7db258093 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java @@ -3,11 +3,12 @@ package com.simibubi.create.content.contraptions.components.crank; import static net.minecraft.state.properties.BlockStateProperties.FACING; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -31,17 +32,17 @@ public class HandCrankRenderer extends KineticTileEntityRenderer { BlockState state = te.getBlockState(); Block block = state.getBlock(); - AllBlockPartials renderedHandle = null; + PartialModel renderedHandle = null; if (block instanceof HandCrankBlock) renderedHandle = ((HandCrankBlock) block).getRenderedHandle(); if (renderedHandle == null) return; Direction facing = state.get(FACING); - SuperByteBuffer handle = renderedHandle.renderOnDirectionalSouth(state, facing.getOpposite()); + SuperByteBuffer handle = PartialBufferer.getFacing(renderedHandle, state, facing.getOpposite()); HandCrankTileEntity crank = (HandCrankTileEntity) te; kineticRotationTransform(handle, te, facing.getAxis(), - (crank.independentAngle + partialTicks * crank.chasingVelocity) / 360, light); + (crank.independentAngle + partialTicks * crank.chasingVelocity) / 360, light); handle.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java index 568030a94..a058b740c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java @@ -84,10 +84,10 @@ public class HandCrankTileEntity extends GeneratingKineticTileEntity { @Override public void tickAudio() { super.tickAudio(); - if (inUse > 0 && AnimationTickHolder.getTicks() % 2 == 0) { + if (inUse > 0 && AnimationTickHolder.getTicks() % 10 == 0) { if (!AllBlocks.HAND_CRANK.has(getBlockState())) return; - AllSoundEvents.CRANKING.playAt(world, pos, (inUse) / 5f, .65f + (10 - inUse) / 10f, true); + AllSoundEvents.CRANKING.playAt(world, pos, (inUse) / 2.5f, .65f + (10 - inUse) / 10f, true); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java index bca18a69a..e9e8c32d7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.contraptions.components.crank; import javax.annotation.ParametersAreNonnullByDefault; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.DyeHelper; import net.minecraft.block.BlockState; @@ -68,7 +68,7 @@ public class ValveHandleBlock extends HandCrankBlock { @Override @OnlyIn(Dist.CLIENT) - public AllBlockPartials getRenderedHandle() { + public PartialModel getRenderedHandle() { return null; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java index a62bf37d8..e91bc8a0d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionKineticRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionProgram; import com.simibubi.create.foundation.render.backend.core.ModelData; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.RenderMaterial; import com.simibubi.create.foundation.utility.AngleHelper; @@ -48,7 +49,7 @@ public class DeployerActorInstance extends ActorInstance { BlockState state = context.state; DeployerTileEntity.Mode mode = NBTHelper.readEnum(context.tileData, "Mode", DeployerTileEntity.Mode.class); - AllBlockPartials handPose = DeployerRenderer.getHandPose(mode); + PartialModel handPose = DeployerRenderer.getHandPose(mode); stationaryTimer = context.data.contains("StationaryTimer"); facing = state.get(FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index 2c6f55d18..9500a1ea5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -215,6 +215,7 @@ public class DeployerHandler { if (blockBreakingProgress != null) before = blockBreakingProgress.getValue(); progress += before; + world.playSound(null, clickedPos, clickedState.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); if (progress >= 1) { tryHarvestBlock(player.interactionManager, clickedPos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java index 3ffd3339b..31b1d7665 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.render.backend.core.OrientedData; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.IDynamicInstance; import com.simibubi.create.foundation.render.backend.instancing.ITickableInstance; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; @@ -31,7 +32,7 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, protected OrientedData hand; - AllBlockPartials currentHand; + PartialModel currentHand; float progress; private boolean newHand = false; @@ -89,7 +90,7 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, } private boolean updateHandPose() { - AllBlockPartials handPose = tile.getHandPose(); + PartialModel handPose = tile.getHandPose(); if (currentHand == handPose) return false; currentHand = handPose; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java index d9dd683c6..0261f9651 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java @@ -11,8 +11,10 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -117,14 +119,13 @@ public class DeployerRenderer extends SafeTileEntityRenderer BlockPos pos = te.getPos(); Vector3d offset = getHandOffset(te, partialTicks, blockState); - SuperByteBuffer pole = AllBlockPartials.DEPLOYER_POLE.renderOn(blockState); - SuperByteBuffer hand = te.getHandPose() - .renderOn(blockState); + SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); + SuperByteBuffer hand = PartialBufferer.get(te.getHandPose(), blockState); transform(te.getWorld(), pole.translate(offset.x, offset.y, offset.z), blockState, pos, true).renderInto(ms, - vb); + vb); transform(te.getWorld(), hand.translate(offset.x, offset.y, offset.z), blockState, pos, false).renderInto(ms, - vb); + vb); } protected Vector3d getHandOffset(DeployerTileEntity te, float partialTicks, BlockState blockState) { @@ -155,16 +156,16 @@ public class DeployerRenderer extends SafeTileEntityRenderer public static void renderInContraption(MovementContext context, MatrixStack ms, MatrixStack msLocal, IRenderTypeBuffer buffer) { - MatrixStack[] matrixStacks = new MatrixStack[] { ms, msLocal }; + MatrixStack[] matrixStacks = new MatrixStack[]{ms, msLocal}; IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); BlockState blockState = context.state; BlockPos pos = BlockPos.ZERO; Mode mode = NBTHelper.readEnum(context.tileData, "Mode", Mode.class); World world = context.world; - AllBlockPartials handPose = getHandPose(mode); + PartialModel handPose = getHandPose(mode); - SuperByteBuffer pole = AllBlockPartials.DEPLOYER_POLE.renderOn(blockState); - SuperByteBuffer hand = handPose.renderOn(blockState); + SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); + SuperByteBuffer hand = PartialBufferer.get(handPose, blockState); pole = transform(world, pole, blockState, pos, true); hand = transform(world, hand, blockState, pos, false); @@ -192,7 +193,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer .renderInto(ms, builder); } - static AllBlockPartials getHandPose(DeployerTileEntity.Mode mode) { + static PartialModel getHandPose(DeployerTileEntity.Mode mode) { return mode == DeployerTileEntity.Mode.PUNCH ? AllBlockPartials.DEPLOYER_HAND_PUNCHING : AllBlockPartials.DEPLOYER_HAND_POINTING; } 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 8705330ba..c1e5493a1 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 @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.curiosities.tools.SandPaperItem; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; @@ -113,7 +114,7 @@ public class DeployerTileEntity extends KineticTileEntity { @Override public void tick() { super.tick(); - + if (getSpeed() == 0) return; if (!world.isRemote && player != null && player.blockBreakingProgress != null) { @@ -331,7 +332,7 @@ public class DeployerTileEntity extends KineticTileEntity { private IItemHandlerModifiable createHandler() { return new DeployerItemHandler(this); } - + public void redstoneUpdate() { if (world.isRemote) return; @@ -342,7 +343,7 @@ public class DeployerTileEntity extends KineticTileEntity { sendData(); } - public AllBlockPartials getHandPose() { + public PartialModel getHandPose() { return mode == Mode.PUNCH ? AllBlockPartials.DEPLOYER_HAND_PUNCHING : heldItem.isEmpty() ? AllBlockPartials.DEPLOYER_HAND_POINTING : AllBlockPartials.DEPLOYER_HAND_HOLDING; } @@ -395,7 +396,7 @@ public class DeployerTileEntity extends KineticTileEntity { float progress = 0; int timerSpeed = getTimerSpeed(); - AllBlockPartials handPose = getHandPose(); + PartialModel handPose = getHandPose(); if (state == State.EXPANDING) progress = 1 - (timer - partialTicks * timerSpeed) / 1000f; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java index cb469d615..6491d16e3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java @@ -7,6 +7,7 @@ import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -30,17 +31,17 @@ public class EncasedFanRenderer extends KineticTileEntityRenderer { if (FastRenderDispatcher.available(te.getWorld())) return; Direction direction = te.getBlockState() - .get(FACING); + .get(FACING); IVertexBuilder vb = buffer.getBuffer(RenderType.getCutoutMipped()); int lightBehind = WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getPos().offset(direction.getOpposite())); int lightInFront = WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getPos().offset(direction)); - + SuperByteBuffer shaftHalf = - AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState(), direction.getOpposite()); + PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction.getOpposite()); SuperByteBuffer fanInner = - AllBlockPartials.ENCASED_FAN_INNER.renderOnDirectionalSouth(te.getBlockState(), direction.getOpposite()); - + PartialBufferer.getFacing(AllBlockPartials.ENCASED_FAN_INNER, te.getBlockState(), direction.getOpposite()); + float time = AnimationTickHolder.getRenderTime(te.getWorld()); float speed = te.getSpeed() * 5; if (speed > 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java index 05e921f0a..2feec9410 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java @@ -19,17 +19,17 @@ public class FanInstance extends KineticTileInstance { private final Direction opposite; public FanInstance(InstancedTileRenderer modelManager, EncasedFanTileEntity tile) { - super(modelManager, tile); + super(modelManager, tile); - direction = blockState.get(FACING); + direction = blockState.get(FACING); - opposite = direction.getOpposite(); - shaft = AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, opposite).createInstance(); - fan = AllBlockPartials.ENCASED_FAN_INNER.getModel(getRotatingMaterial(), blockState, opposite).createInstance(); + opposite = direction.getOpposite(); + shaft = getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite).createInstance(); + fan = getRotatingMaterial().getModel(AllBlockPartials.ENCASED_FAN_INNER, blockState, opposite).createInstance(); - setup(shaft); - setup(fan, getFanSpeed()); - } + setup(shaft); + setup(fan, getFanSpeed()); + } private float getFanSpeed() { float speed = tile.getSpeed() * 5; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java index d01c2633f..219adb6d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java @@ -46,24 +46,24 @@ public class FlyWheelInstance extends KineticTileInstance im protected float lastAngle = Float.NaN; public FlyWheelInstance(InstancedTileRenderer modelManager, FlywheelTileEntity tile) { - super(modelManager, tile); + super(modelManager, tile); - facing = blockState.get(HORIZONTAL_FACING); + facing = blockState.get(HORIZONTAL_FACING); - shaft = setup(shaftModel().createInstance()); + shaft = setup(shaftModel().createInstance()); - BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); - wheel = AllBlockPartials.FLYWHEEL.getModel(getTransformMaterial(), referenceState, referenceState.get(HORIZONTAL_FACING)).createInstance(); + BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); + wheel = getTransformMaterial().getModel(AllBlockPartials.FLYWHEEL, referenceState, referenceState.get(HORIZONTAL_FACING)).createInstance(); - connection = FlywheelBlock.getConnection(blockState); - if (connection != null) { - connectedLeft = blockState.get(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; + connection = FlywheelBlock.getConnection(blockState); + if (connection != null) { + connectedLeft = blockState.get(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; - boolean flipAngle = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; + boolean flipAngle = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; - connectorAngleMult = flipAngle ? -1 : 1; + connectorAngleMult = flipAngle ? -1 : 1; - RenderMaterial> mat = getTransformMaterial(); + RenderMaterial> mat = getTransformMaterial(); upperRotating = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState).createInstance(); lowerRotating = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState).createInstance(); @@ -159,8 +159,9 @@ public class FlyWheelInstance extends KineticTileInstance im } protected InstancedModel shaftModel() { - return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, facing.getOpposite()); - } + Direction opposite = facing.getOpposite(); + return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite); + } protected void transformConnector(MatrixStacker ms, boolean upper, boolean rotating, float angle, boolean flip) { float shift = upper ? 1 / 4f : -1 / 8f; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java index 03434b9e9..bf3b46295 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock.ConnectionState; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AngleHelper; @@ -17,6 +18,7 @@ import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; @@ -54,33 +56,39 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { boolean flip = blockState.get(FlywheelBlock.CONNECTION) == ConnectionState.LEFT; transformConnector( - rotateToFacing(AllBlockPartials.FLYWHEEL_UPPER_ROTATING.renderOn(blockState), connection), true, true, - rotation, flip).light(light) + rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true, + rotation, flip).light(light) .renderInto(ms, vb); transformConnector( - rotateToFacing(AllBlockPartials.FLYWHEEL_LOWER_ROTATING.renderOn(blockState), connection), false, true, - rotation, flip).light(light) + rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true, + rotation, flip).light(light) .renderInto(ms, vb); - - transformConnector(rotateToFacing(AllBlockPartials.FLYWHEEL_UPPER_SLIDING.renderOn(blockState), connection), - true, false, rotation, flip).light(light) + + transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState), connection), + true, false, rotation, flip).light(light) .renderInto(ms, vb); - transformConnector(rotateToFacing(AllBlockPartials.FLYWHEEL_LOWER_SLIDING.renderOn(blockState), connection), - false, false, rotation, flip).light(light) + transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState), connection), + false, false, rotation, flip).light(light) .renderInto(ms, vb); } - SuperByteBuffer wheel = AllBlockPartials.FLYWHEEL.renderOnHorizontal(blockState.rotate(Rotation.CLOCKWISE_90)); + renderFlywheel(te, ms, light, blockState, angle, vb); + } + + private void renderFlywheel(KineticTileEntity te, MatrixStack ms, int light, BlockState blockState, float angle, IVertexBuilder vb) { + BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); + Direction facing = referenceState.get(BlockStateProperties.HORIZONTAL_FACING); + SuperByteBuffer wheel = PartialBufferer.getFacing(AllBlockPartials.FLYWHEEL, referenceState, facing); kineticRotationTransform(wheel, te, blockState.get(HORIZONTAL_FACING) - .getAxis(), AngleHelper.rad(angle), light); + .getAxis(), AngleHelper.rad(angle), light); wheel.renderInto(ms, vb); } @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState(), te.getBlockState() - .get(HORIZONTAL_FACING) - .getOpposite()); + return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() + .get(BlockStateProperties.HORIZONTAL_FACING) + .getOpposite()); } protected SuperByteBuffer transformConnector(SuperByteBuffer buffer, boolean upper, boolean rotating, float angle, diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java index 268aa65cc..f3d07cf66 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import javax.annotation.Nullable; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.block.Block; @@ -37,12 +37,12 @@ public abstract class EngineBlock extends HorizontalBlock implements IWrenchable public boolean hasTileEntity(BlockState state) { return true; } - + @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { return ActionResultType.FAIL; } - + @Override public abstract TileEntity createTileEntity(BlockState state, IBlockReader world); @@ -88,14 +88,14 @@ public abstract class EngineBlock extends HorizontalBlock implements IWrenchable return true; } - + public static BlockPos getBaseBlockPos(BlockState state, BlockPos pos) { return pos.offset(state.get(HORIZONTAL_FACING).getOpposite()); } @Nullable @OnlyIn(Dist.CLIENT) - public abstract AllBlockPartials getFrameModel(); + public abstract PartialModel getFrameModel(); protected abstract boolean isValidBaseBlock(BlockState baseBlock, IBlockReader world, BlockPos pos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java index a88cbbd1a..3f76914d0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.render.backend.core.ModelData; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; import com.simibubi.create.foundation.render.backend.instancing.TileEntityInstance; import com.simibubi.create.foundation.utility.AngleHelper; @@ -25,7 +25,7 @@ public class EngineInstance extends TileEntityInstance { return; EngineBlock engineBlock = (EngineBlock) block; - AllBlockPartials frame = engineBlock.getFrameModel(); + PartialModel frame = engineBlock.getFrameModel(); Direction facing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java index 597895c48..42be5bedf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java @@ -1,8 +1,9 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -29,16 +30,16 @@ public class EngineRenderer extends SafeTileEntityRe .getBlock(); if (block instanceof EngineBlock) { EngineBlock engineBlock = (EngineBlock) block; - AllBlockPartials frame = engineBlock.getFrameModel(); + PartialModel frame = engineBlock.getFrameModel(); if (frame != null) { Direction facing = te.getBlockState() - .get(EngineBlock.HORIZONTAL_FACING); + .get(EngineBlock.HORIZONTAL_FACING); float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing)); - frame.renderOn(te.getBlockState()) - .rotateCentered(Direction.UP, angle) - .translate(0, 0, -1) - .light(WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getBlockState(), te.getPos())) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); + PartialBufferer.get(frame, te.getBlockState()) + .rotateCentered(Direction.UP, angle) + .translate(0, 0, -1) + .light(WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getBlockState(), te.getPos())) + .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java index 85a84e172..e50508ad0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.block.AbstractFurnaceBlock; @@ -41,7 +42,7 @@ public class FurnaceEngineBlock extends EngineBlock implements ITE getModel() { if (blockState.get(FACING).getAxis().isHorizontal()) { BlockState referenceState = blockState.rotate(tile.getWorld(), tile.getPos(), Rotation.CLOCKWISE_180); - return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); + Direction facing = referenceState.get(FACING); + return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, referenceState, facing); } else { return getRotatingMaterial().getModel(shaft()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java index 473879dba..5ab9a2960 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java @@ -9,8 +9,10 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -53,7 +55,7 @@ public class SawRenderer extends SafeTileEntityRenderer { protected void renderBlade(SawTileEntity te, MatrixStack ms, IRenderTypeBuffer buffer, int light) { BlockState blockState = te.getBlockState(); SuperByteBuffer superBuffer; - AllBlockPartials partial; + PartialModel partial; float speed = te.getSpeed(); ms.push(); @@ -77,13 +79,13 @@ public class SawRenderer extends SafeTileEntityRenderer { if (!blockState.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE)) MatrixStacker.of(ms) - .centre() - .rotateY(90) - .unCentre(); + .centre() + .rotateY(90) + .unCentre(); } - superBuffer = partial.renderOnDirectionalSouth(blockState); + superBuffer = PartialBufferer.getFacing(partial, blockState); superBuffer.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped())); + .renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped())); ms.pop(); } @@ -140,7 +142,7 @@ public class SawRenderer extends SafeTileEntityRenderer { protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { BlockState state = te.getBlockState(); if (state.get(FACING).getAxis().isHorizontal()) - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(state.rotate(te.getWorld(), te.getPos(), Rotation.CLOCKWISE_180)); + return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, state.rotate(te.getWorld(), te.getPos(), Rotation.CLOCKWISE_180)); return CreateClient.bufferCache.renderBlockIn(KineticTileEntityRenderer.KINETIC_TILE, getRenderedBlockState(te)); } @@ -171,14 +173,14 @@ public class SawRenderer extends SafeTileEntityRenderer { if (SawBlock.isHorizontal(state)) { if (shouldAnimate) - superBuffer = AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE.renderOn(state); + superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE, state); else - superBuffer = AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE.renderOn(state); + superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE, state); } else { if (shouldAnimate) - superBuffer = AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE.renderOn(state); + superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE, state); else - superBuffer = AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE.renderOn(state); + superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE, state); } for (MatrixStack m : matrixStacks) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java index a4ce86d26..f3c46d7d6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java @@ -4,6 +4,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.BackHalfShaftInstance; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.foundation.render.backend.core.OrientedData; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.render.backend.instancing.IDynamicInstance; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -31,7 +32,7 @@ public class BearingInstance e blockOrientation = getBlockStateOrientation(facing); - AllBlockPartials top = + PartialModel top = bearing.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; topInstance = getOrientedMaterial().getModel(top, blockState).createInstance(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java index 6a81320bd..cf6f59b7c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java @@ -4,8 +4,10 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.client.renderer.IRenderTypeBuffer; @@ -30,27 +32,27 @@ public class BearingRenderer extends KineticTileEntityRenderer { IBearingTileEntity bearingTe = (IBearingTileEntity) te; final Direction facing = te.getBlockState() - .get(BlockStateProperties.FACING); - AllBlockPartials top = - bearingTe.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = top.renderOn(te.getBlockState()); + .get(BlockStateProperties.FACING); + PartialModel top = + bearingTe.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; + SuperByteBuffer superBuffer = PartialBufferer.get(top, te.getBlockState()); float interpolatedAngle = bearingTe.getInterpolatedAngle(partialTicks - 1); kineticRotationTransform(superBuffer, te, facing.getAxis(), (float) (interpolatedAngle / 180 * Math.PI), light); if (facing.getAxis() - .isHorizontal()) + .isHorizontal()) superBuffer.rotateCentered(Direction.UP, - AngleHelper.rad(AngleHelper.horizontalAngle(facing.getOpposite()))); + AngleHelper.rad(AngleHelper.horizontalAngle(facing.getOpposite()))); superBuffer.rotateCentered(Direction.EAST, AngleHelper.rad(-90 - AngleHelper.verticalAngle(facing))); superBuffer.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); } @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState(), te.getBlockState() - .get(BearingBlock.FACING) - .getOpposite()); + return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() + .get(BearingBlock.FACING) + .getOpposite()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 239880bc0..d7ed6958b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -4,6 +4,7 @@ import static net.minecraft.state.properties.BlockStateProperties.FACING; import java.util.List; +import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; @@ -168,6 +169,8 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); movedContraption.setRotationAxis(direction.getAxis()); world.addEntity(movedContraption); + + AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos); running = true; angle = 0; @@ -181,8 +184,10 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity angle = 0; if (isWindmill()) applyRotation(); - if (movedContraption != null) + if (movedContraption != null) { movedContraption.disassemble(); + AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, pos); + } movedContraption = null; running = false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java index 4db44925a..9d776cb3a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java @@ -12,8 +12,10 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Ori import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionKineticRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.renderer.IRenderTypeBuffer; @@ -34,8 +36,8 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { if (FastRenderDispatcher.available()) return; Direction facing = context.state.get(BlockStateProperties.FACING); - AllBlockPartials top = AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = top.renderOn(context.state); + PartialModel top = AllBlockPartials.BEARING_TOP; + SuperByteBuffer superBuffer = PartialBufferer.get(top, context.state); float renderPartialTicks = AnimationTickHolder.getPartialTicks(); // rotate to match blockstate diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java index 83679ee68..1abccec33 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; @@ -28,7 +29,7 @@ public class StickerRenderer extends SafeTileEntityRenderer { if (FastRenderDispatcher.available(te.getWorld())) return; BlockState state = te.getBlockState(); - SuperByteBuffer head = AllBlockPartials.STICKER_HEAD.renderOn(state); + SuperByteBuffer head = PartialBufferer.get(AllBlockPartials.STICKER_HEAD, state); float offset = te.piston.getValue(AnimationTickHolder.getPartialTicks(te.getWorld())); if (te.getWorld() != Minecraft.getInstance().world && !te.isVirtual()) @@ -36,9 +37,9 @@ public class StickerRenderer extends SafeTileEntityRenderer { Direction facing = state.get(StickerBlock.FACING); head.matrixStacker() - .nudge(te.hashCode()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) + .nudge(te.hashCode()) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) .unCentre() .translate(0, (offset * offset) * 4 / 16f, 0); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java index 8faa4f599..72152ff04 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AngleHelper; @@ -54,16 +55,16 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { if (facing == Direction.NORTH || facing == Direction.EAST) angleForTe *= -1; - SuperByteBuffer cogs = AllBlockPartials.GANTRY_COGS.renderOn(state); + SuperByteBuffer cogs = PartialBufferer.get(AllBlockPartials.GANTRY_COGS, state); cogs.matrixStacker() - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(alongFirst ^ facing.getAxis() == Axis.Z ? 90 : 0) - .translate(0, -9 / 16f, 0) - .multiply(Vector3f.POSITIVE_X.getRadialQuaternion(-angleForTe)) - .translate(0, 9 / 16f, 0) - .unCentre(); + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) + .rotateY(alongFirst ^ facing.getAxis() == Axis.Z ? 90 : 0) + .translate(0, -9 / 16f, 0) + .multiply(Vector3f.POSITIVE_X.getRadialQuaternion(-angleForTe)) + .translate(0, 9 / 16f, 0) + .unCentre(); cogs.light(light) .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java index bad6186c7..bad9651ef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.piston; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; @@ -83,6 +84,8 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { applyContraptionPosition(); forceMove = true; world.addEntity(movedContraption); + + AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos); } @Override @@ -95,6 +98,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { if (movedContraption != null) { applyContraptionPosition(); movedContraption.disassemble(); + AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, pos); } running = false; movedContraption = null; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index f707114df..481b065d0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -2,12 +2,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pu import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.block.BlockState; @@ -24,11 +25,11 @@ import net.minecraft.world.World; public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { - private AllBlockPartials halfRope; - private AllBlockPartials halfMagnet; + private PartialModel halfRope; + private PartialModel halfMagnet; - public AbstractPulleyRenderer(TileEntityRendererDispatcher dispatcher, AllBlockPartials halfRope, - AllBlockPartials halfMagnet) { + public AbstractPulleyRenderer(TileEntityRendererDispatcher dispatcher, PartialModel halfRope, + PartialModel halfMagnet) { super(dispatcher); this.halfRope = halfRope; this.halfMagnet = halfMagnet; @@ -50,16 +51,16 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { boolean running = isRunning(te); Axis rotationAxis = ((IRotate) te.getBlockState() - .getBlock()).getRotationAxis(te.getBlockState()); + .getBlock()).getRotationAxis(te.getBlockState()); kineticRotationTransform(getRotatedCoil(te), te, rotationAxis, AngleHelper.rad(offset * 180), light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); + .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); World world = te.getWorld(); BlockState blockState = te.getBlockState(); BlockPos pos = te.getPos(); - SuperByteBuffer halfMagnet = this.halfMagnet.renderOn(blockState); - SuperByteBuffer halfRope = this.halfRope.renderOn(blockState); + SuperByteBuffer halfMagnet = PartialBufferer.get(this.halfMagnet, blockState); + SuperByteBuffer halfRope = PartialBufferer.get(this.halfRope, blockState); SuperByteBuffer magnet = renderMagnet(te); SuperByteBuffer rope = renderRope(te); @@ -89,7 +90,7 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected abstract Axis getShaftAxis(KineticTileEntity te); - protected abstract AllBlockPartials getCoil(); + protected abstract PartialModel getCoil(); protected abstract SuperByteBuffer renderRope(KineticTileEntity te); @@ -106,8 +107,7 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected SuperByteBuffer getRotatedCoil(KineticTileEntity te) { BlockState blockState = te.getBlockState(); - return getCoil().renderOnDirectionalSouth(blockState, - Direction.getFacingFromAxis(AxisDirection.POSITIVE, getShaftAxis(te))); + return PartialBufferer.getFacing(getCoil(), blockState, Direction.getFacingFromAxis(AxisDirection.POSITIVE, getShaftAxis(te))); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java index 8003596b2..a1adb0e43 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java @@ -28,7 +28,7 @@ public class HosePulleyInstance extends AbstractPulleyInstance { } protected InstancedModel getCoilModel() { - return AllBlockPartials.HOSE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); + return getOrientedMaterial().getModel(AllBlockPartials.HOSE_COIL, blockState, rotatingAbout); } protected InstancedModel getHalfRopeModel() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java index 740302722..4db922553 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java @@ -6,6 +6,7 @@ import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.util.Direction.Axis; @@ -24,7 +25,7 @@ public class PulleyRenderer extends AbstractPulleyRenderer { } @Override - protected AllBlockPartials getCoil() { + protected PartialModel getCoil() { return AllBlockPartials.ROPE_COIL; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java index 8eb8388e4..a3bf2dd82 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java @@ -29,7 +29,7 @@ public class RopePulleyInstance extends AbstractPulleyInstance { } protected InstancedModel getCoilModel() { - return AllBlockPartials.ROPE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); + return getOrientedMaterial().getModel(AllBlockPartials.ROPE_COIL, blockState, rotatingAbout); } protected InstancedModel getHalfRopeModel() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 2674f778a..83c39757f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -44,7 +44,6 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.world.IBlockDisplayReader; import net.minecraft.world.LightType; import net.minecraft.world.World; import net.minecraft.world.gen.feature.template.Template; @@ -52,57 +51,27 @@ import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.model.data.EmptyModelData; public class ContraptionRenderDispatcher { - public static final Int2ObjectMap renderers = new Int2ObjectOpenHashMap<>(); - public static final Compartment> CONTRAPTION = new Compartment<>(); - protected static PlacementSimulationWorld renderWorld; + public static final Int2ObjectMap renderers = new Int2ObjectOpenHashMap<>(); + public static final Compartment> CONTRAPTION = new Compartment<>(); + protected static PlacementSimulationWorld renderWorld; - public static void notifyLightPacket(IBlockDisplayReader world, int chunkX, int chunkZ) { - for (RenderedContraption renderer : renderers.values()) { - renderer.getLighter().lightVolume.notifyLightPacket(world, chunkX, chunkZ); - } - } + public static void tick() { + if (Minecraft.getInstance().isGamePaused()) return; - public static void renderTileEntities(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, - IRenderTypeBuffer buffer) { - PlacementSimulationWorld renderWorld = null; - if (Backend.canUseVBOs()) { - RenderedContraption renderer = getRenderer(world, c); + for (RenderedContraption contraption : renderers.values()) { + contraption.getLighter().tick(contraption); - renderWorld = renderer.renderWorld; - } - TileEntityRenderHelper.renderTileEntities(world, renderWorld, c.specialRenderedTileEntities, ms, msLocal, buffer); + contraption.kinetics.tick(); + } + } - } + public static void beginFrame(ActiveRenderInfo info, double camX, double camY, double camZ) { + for (RenderedContraption renderer : renderers.values()) { + renderer.beginFrame(info, camX, camY, camZ); + } + } - public static void tick() { - if (Minecraft.getInstance().isGamePaused()) return; - - for (RenderedContraption contraption : renderers.values()) { - contraption.getLighter().tick(contraption); - - contraption.kinetics.tick(); - } - } - - private static RenderedContraption getRenderer(World world, Contraption c) { - int entityId = c.entity.getEntityId(); - RenderedContraption contraption = renderers.get(entityId); - - if (contraption == null) { - contraption = new RenderedContraption(world, c); - renderers.put(entityId, contraption); - } - - return contraption; - } - - public static void beginFrame(ActiveRenderInfo info, double camX, double camY, double camZ) { - for (RenderedContraption renderer : renderers.values()) { - renderer.beginFrame(info, camX, camY, camZ); - } - } - - public static void renderLayer(RenderType layer, Matrix4f viewProjection, double camX, double camY, double camZ) { + public static void renderLayer(RenderType layer, Matrix4f viewProjection, double camX, double camY, double camZ) { removeDeadContraptions(); if (renderers.isEmpty()) return; @@ -121,79 +90,110 @@ public class ContraptionRenderDispatcher { if (Backend.canUseInstancing()) { for (RenderedContraption renderer : renderers.values()) { - renderer.kinetics.render(layer, viewProjection, camX, camY, camZ, renderer::setup); - renderer.teardown(); - } - } + renderer.kinetics.render(layer, viewProjection, camX, camY, camZ, renderer::setup); + renderer.teardown(); + } + } - layer.endDrawing(); - GL11.glDisable(GL13.GL_TEXTURE_3D); - GL13.glActiveTexture(GL40.GL_TEXTURE0); - } + layer.endDrawing(); + GL11.glDisable(GL13.GL_TEXTURE_3D); + GL13.glActiveTexture(GL40.GL_TEXTURE0); + } - public static void removeDeadContraptions() { - renderers.values().removeIf(renderer -> { - if (renderer.isDead()) { - renderer.invalidate(); - return true; - } - return false; - }); - } + private static RenderedContraption getRenderer(World world, Contraption c) { + int entityId = c.entity.getEntityId(); + RenderedContraption contraption = renderers.get(entityId); - public static void invalidateAll() { - for (RenderedContraption renderer : renderers.values()) { - renderer.invalidate(); - } + if (contraption == null) { + contraption = new RenderedContraption(world, c); + renderers.put(entityId, contraption); + } - renderers.clear(); - } + return contraption; + } - public static void render(AbstractContraptionEntity entity, MatrixStack ms, IRenderTypeBuffer buffers, - MatrixStack msLocal, Contraption contraption) { - if (Backend.canUseVBOs()) { - ContraptionRenderDispatcher.renderDynamic(entity.world, contraption, ms, msLocal, buffers); - } else { - ContraptionRenderDispatcher.renderDynamic(entity.world, contraption, ms, msLocal, buffers); - ContraptionRenderDispatcher.renderStructure(entity.world, contraption, ms, msLocal, buffers); - } - } + public static void render(AbstractContraptionEntity entity, MatrixStack ms, IRenderTypeBuffer buffers, + MatrixStack msLocal, Contraption contraption) { + if (Backend.canUseVBOs() && Backend.isFlywheelWorld(entity.world)) { + ContraptionRenderDispatcher.renderDynamic(entity.world, contraption, ms, msLocal, buffers); + } else { + ContraptionRenderDispatcher.renderDynamic(entity.world, contraption, ms, msLocal, buffers); + ContraptionRenderDispatcher.renderStructure(entity.world, contraption, ms, msLocal, buffers); + } + } - public static void renderDynamic(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, - IRenderTypeBuffer buffer) { - renderTileEntities(world, c, ms, msLocal, buffer); - if (buffer instanceof IRenderTypeBuffer.Impl) - ((IRenderTypeBuffer.Impl) buffer).draw(); - renderActors(world, c, ms, msLocal, buffer); - } + public static void renderStructure(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, + IRenderTypeBuffer buffer) { + SuperByteBufferCache bufferCache = CreateClient.bufferCache; + List blockLayers = RenderType.getBlockLayers(); - public static void renderStructure(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, - IRenderTypeBuffer buffer) { - SuperByteBufferCache bufferCache = CreateClient.bufferCache; - List blockLayers = RenderType.getBlockLayers(); + buffer.getBuffer(RenderType.getSolid()); + for (int i = 0; i < blockLayers.size(); i++) { + RenderType layer = blockLayers.get(i); + Pair key = Pair.of(c, i); + SuperByteBuffer contraptionBuffer = bufferCache.get(CONTRAPTION, key, () -> buildStructureBuffer(c, layer)); + if (contraptionBuffer.isEmpty()) + continue; + Matrix4f model = msLocal.peek() + .getModel(); + contraptionBuffer.light(model) + .renderInto(ms, buffer.getBuffer(layer)); + } + } - buffer.getBuffer(RenderType.getSolid()); - for (int i = 0; i < blockLayers.size(); i++) { - RenderType layer = blockLayers.get(i); - Pair key = Pair.of(c, i); - SuperByteBuffer contraptionBuffer = bufferCache.get(CONTRAPTION, key, () -> buildStructureBuffer(c, layer)); - if (contraptionBuffer.isEmpty()) - continue; - Matrix4f model = msLocal.peek() - .getModel(); - contraptionBuffer.light(model) - .renderInto(ms, buffer.getBuffer(layer)); - } - } + public static void renderDynamic(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, + IRenderTypeBuffer buffer) { + renderTileEntities(world, c, ms, msLocal, buffer); + if (buffer instanceof IRenderTypeBuffer.Impl) + ((IRenderTypeBuffer.Impl) buffer).draw(); + renderActors(world, c, ms, msLocal, buffer); + } - private static SuperByteBuffer buildStructureBuffer(Contraption c, RenderType layer) { - BufferBuilder builder = buildStructure(c, layer); - return new SuperByteBuffer(builder); - } + public static void renderTileEntities(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, + IRenderTypeBuffer buffer) { + PlacementSimulationWorld renderWorld = null; + if (Backend.canUseVBOs() && Backend.isFlywheelWorld(world)) { + RenderedContraption renderer = getRenderer(world, c); - public static BufferBuilder buildStructure(Contraption c, RenderType layer) { - if (renderWorld == null || renderWorld.getWorld() != Minecraft.getInstance().world) - renderWorld = new PlacementSimulationWorld(Minecraft.getInstance().world); + renderWorld = renderer.renderWorld; + } + TileEntityRenderHelper.renderTileEntities(world, renderWorld, c.specialRenderedTileEntities, ms, msLocal, buffer); + + } + + protected static void renderActors(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, + IRenderTypeBuffer buffer) { + MatrixStack[] matrixStacks = new MatrixStack[]{ms, msLocal}; + for (Pair actor : c.getActors()) { + MovementContext context = actor.getRight(); + if (context == null) + continue; + if (context.world == null) + context.world = world; + Template.BlockInfo blockInfo = actor.getLeft(); + for (MatrixStack m : matrixStacks) { + m.push(); + MatrixStacker.of(m) + .translate(blockInfo.pos); + } + + MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); + if (movementBehaviour != null) + movementBehaviour.renderInContraption(context, ms, msLocal, buffer); + + for (MatrixStack m : matrixStacks) + m.pop(); + } + } + + private static SuperByteBuffer buildStructureBuffer(Contraption c, RenderType layer) { + BufferBuilder builder = buildStructure(c, layer); + return new SuperByteBuffer(builder); + } + + public static BufferBuilder buildStructure(Contraption c, RenderType layer) { + if (renderWorld == null || renderWorld.getWorld() != Minecraft.getInstance().world) + renderWorld = new PlacementSimulationWorld(Minecraft.getInstance().world); ForgeHooksClient.setRenderLayer(layer); MatrixStack ms = new MatrixStack(); @@ -232,31 +232,6 @@ public class ContraptionRenderDispatcher { return builder; } - protected static void renderActors(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, - IRenderTypeBuffer buffer) { - MatrixStack[] matrixStacks = new MatrixStack[] { ms, msLocal }; - for (Pair actor : c.getActors()) { - MovementContext context = actor.getRight(); - if (context == null) - continue; - if (context.world == null) - context.world = world; - Template.BlockInfo blockInfo = actor.getLeft(); - for (MatrixStack m : matrixStacks) { - m.push(); - MatrixStacker.of(m) - .translate(blockInfo.pos); - } - - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); - if (movementBehaviour != null) - movementBehaviour.renderInContraption(context, ms, msLocal, buffer); - - for (MatrixStack m : matrixStacks) - m.pop(); - } - } - public static int getLight(World world, float lx, float ly, float lz) { BlockPos.Mutable pos = new BlockPos.Mutable(); float sky = 0, block = 0; @@ -292,14 +267,32 @@ public class ContraptionRenderDispatcher { return packedLight; } - public static int getLightOnContraption(MovementContext context) { - int entityId = context.contraption.entity.getEntityId(); + public static int getLightOnContraption(MovementContext context) { + int entityId = context.contraption.entity.getEntityId(); - RenderedContraption renderedContraption = renderers.get(entityId); - if (renderedContraption != null) { - return renderedContraption.renderWorld.getLightLevel(LightType.BLOCK, context.localPos); - } else { - return -1; - } - } + RenderedContraption renderedContraption = renderers.get(entityId); + if (renderedContraption != null) { + return renderedContraption.renderWorld.getLightLevel(LightType.BLOCK, context.localPos); + } else { + return -1; + } + } + + public static void invalidateAll() { + for (RenderedContraption renderer : renderers.values()) { + renderer.invalidate(); + } + + renderers.clear(); + } + + public static void removeDeadContraptions() { + renderers.values().removeIf(renderer -> { + if (renderer.isDead()) { + renderer.invalidate(); + return true; + } + return false; + }); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java index 9b5544c1b..0a6edeb8d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.ColorHelper; @@ -36,7 +37,7 @@ public class CouplingRenderer { c -> { if (c.getFirst().hasContraptionCoupling(true)) return; - CouplingRenderer.renderCoupling(ms, buffer, c.map(MinecartController::cart)); + CouplingRenderer.renderCoupling(ms, buffer, c.map(MinecartController::cart)); }); } @@ -47,37 +48,37 @@ public class CouplingRenderer { public static void renderCoupling(MatrixStack ms, IRenderTypeBuffer buffer, Couple carts) { ClientWorld world = Minecraft.getInstance().world; - + if (carts.getFirst() == null || carts.getSecond() == null) return; - + Couple lightValues = carts.map(c -> WorldRenderer.getLightmapCoordinates(world, new BlockPos(c.getBoundingBox() .getCenter()))); Vector3d center = carts.getFirst() - .getPositionVec() - .add(carts.getSecond() - .getPositionVec()) - .scale(.5f); + .getPositionVec() + .add(carts.getSecond() + .getPositionVec()) + .scale(.5f); Couple transforms = carts.map(c -> getSuitableCartEndpoint(c, center)); BlockState renderState = Blocks.AIR.getDefaultState(); IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); - SuperByteBuffer attachment = AllBlockPartials.COUPLING_ATTACHMENT.renderOn(renderState); - SuperByteBuffer ring = AllBlockPartials.COUPLING_RING.renderOn(renderState); - SuperByteBuffer connector = AllBlockPartials.COUPLING_CONNECTOR.renderOn(renderState); + SuperByteBuffer attachment = PartialBufferer.get(AllBlockPartials.COUPLING_ATTACHMENT, renderState); + SuperByteBuffer ring = PartialBufferer.get(AllBlockPartials.COUPLING_RING, renderState); + SuperByteBuffer connector = PartialBufferer.get(AllBlockPartials.COUPLING_CONNECTOR, renderState); Vector3d zero = Vector3d.ZERO; Vector3d firstEndpoint = transforms.getFirst() - .apply(zero); + .apply(zero); Vector3d secondEndpoint = transforms.getSecond() - .apply(zero); + .apply(zero); Vector3d endPointDiff = secondEndpoint.subtract(firstEndpoint); double connectorYaw = -Math.atan2(endPointDiff.z, endPointDiff.x) * 180.0D / Math.PI; double connectorPitch = Math.atan2(endPointDiff.y, endPointDiff.mul(1, 0, 1) - .length()) * 180 / Math.PI; + .length()) * 180 / Math.PI; MatrixStacker msr = MatrixStacker.of(ms); carts.forEachWithContext((cart, isFirst) -> { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java index 202a93992..470b5ab4e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; public class PumpCogInstance extends SingleRotatingInstance { @@ -19,7 +20,8 @@ public class PumpCogInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - BlockState referenceState = tile.getBlockState(); - return AllBlockPartials.MECHANICAL_PUMP_COG.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); - } + BlockState referenceState = tile.getBlockState(); + Direction facing = referenceState.get(FACING); + return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java index d8dd29f3d..8ecc077a4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.MatrixStacker; @@ -34,17 +35,17 @@ public class PumpRenderer extends KineticTileEntityRenderer { float angle = MathHelper.lerp(pump.arrowDirection.getValue(partialTicks), 0, 90) - 90; for (float yRot : new float[] { 0, 90 }) { ms.push(); - SuperByteBuffer arrow = AllBlockPartials.MECHANICAL_PUMP_ARROW.renderOn(blockState); + SuperByteBuffer arrow = PartialBufferer.get(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); Direction direction = blockState.get(PumpBlock.FACING); MatrixStacker.of(ms) - .centre() - .rotateY(AngleHelper.horizontalAngle(direction) + 180) - .rotateX(-AngleHelper.verticalAngle(direction) - 90) - .unCentre() - .translate(rotationOffset) - .rotateY(yRot) - .rotateZ(angle) - .translateBack(rotationOffset); + .centre() + .rotateY(AngleHelper.horizontalAngle(direction) + 180) + .rotateX(-AngleHelper.verticalAngle(direction) - 90) + .unCentre() + .translate(rotationOffset) + .rotateY(yRot) + .rotateZ(angle) + .translateBack(rotationOffset); arrow.light(light).renderInto(ms, buffer.getBuffer(RenderType.getSolid())); ms.pop(); } @@ -52,7 +53,7 @@ public class PumpRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return AllBlockPartials.MECHANICAL_PUMP_COG.renderOnDirectionalSouth(te.getBlockState()); + return PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PUMP_COG, te.getBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java index c0d4091c6..3e1a43506 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java @@ -3,7 +3,9 @@ package com.simibubi.create.content.contraptions.fluids.actors; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.AbstractPulleyRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.util.Direction.Axis; @@ -23,18 +25,18 @@ public class HosePulleyRenderer extends AbstractPulleyRenderer { } @Override - protected AllBlockPartials getCoil() { + protected PartialModel getCoil() { return AllBlockPartials.HOSE_COIL; } @Override protected SuperByteBuffer renderRope(KineticTileEntity te) { - return AllBlockPartials.HOSE.renderOn(te.getBlockState()); + return PartialBufferer.get(AllBlockPartials.HOSE, te.getBlockState()); } @Override protected SuperByteBuffer renderMagnet(KineticTileEntity te) { - return AllBlockPartials.HOSE_MAGNET.renderOn(te.getBlockState()); + return PartialBufferer.get(AllBlockPartials.HOSE_MAGNET, te.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java index cc4eaa7a4..2cbacbd36 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java @@ -3,6 +3,8 @@ package com.simibubi.create.content.contraptions.fluids.actors; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.fluid.FluidRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; @@ -20,7 +22,7 @@ public class SpoutRenderer extends SafeTileEntityRenderer { super(dispatcher); } - static final AllBlockPartials[] BITS = + static final PartialModel[] BITS = { AllBlockPartials.SPOUT_TOP, AllBlockPartials.SPOUT_MIDDLE, AllBlockPartials.SPOUT_BOTTOM }; @Override @@ -69,10 +71,10 @@ public class SpoutRenderer extends SafeTileEntityRenderer { squeeze = -1; ms.push(); - for (AllBlockPartials bit : BITS) { - bit.renderOn(te.getBlockState()) - .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); + for (PartialModel bit : BITS) { + PartialBufferer.get(bit, te.getBlockState()) + .light(light) + .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); ms.translate(0, -3 * squeeze / 32f, 0); } ms.pop(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java index 14439f84a..3d3a02951 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AngleHelper; @@ -31,7 +32,7 @@ public class FluidValveRenderer extends KineticTileEntityRenderer { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); BlockState blockState = te.getBlockState(); - SuperByteBuffer pointer = AllBlockPartials.FLUID_VALVE_POINTER.renderOn(blockState); + SuperByteBuffer pointer = PartialBufferer.get(AllBlockPartials.FLUID_VALVE_POINTER, blockState); Direction facing = blockState.get(FluidValveBlock.FACING); if (!(te instanceof FluidValveTileEntity)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java index 9102302d9..d77dd5520 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java @@ -3,31 +3,19 @@ package com.simibubi.create.content.contraptions.fluids.recipe; import java.util.ArrayList; import java.util.List; -import net.minecraft.client.resources.ReloadListener; +import com.simibubi.create.foundation.utility.ISimpleReloadListener; + import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IResourceManager; public class FluidTransferRecipes { public static List POTION_ITEMS = new ArrayList<>(); public static List FILLED_BUCKETS = new ArrayList<>(); - - - public static final ReloadListener LISTENER = new ReloadListener() { - - @Override - protected Object prepare(IResourceManager p_212854_1_, IProfiler p_212854_2_) { - return new Object(); - } - - @Override - protected void apply(Object p_212853_1_, IResourceManager p_212853_2_, IProfiler p_212853_3_) { - POTION_ITEMS.clear(); - FILLED_BUCKETS.clear(); - } - + public static final ISimpleReloadListener LISTENER = (resourceManager, profiler) -> { + POTION_ITEMS.clear(); + FILLED_BUCKETS.clear(); }; + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java index 7639a06ed..1219f058a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java @@ -15,8 +15,8 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.content.contraptions.processing.HeatCondition; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.ISimpleReloadListener; -import net.minecraft.client.resources.ReloadListener; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; @@ -24,8 +24,6 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionBrewing; import net.minecraft.potion.PotionUtils; import net.minecraft.potion.Potions; -import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IResourceManager; import net.minecraftforge.common.brewing.BrewingRecipeRegistry; import net.minecraftforge.common.brewing.IBrewingRecipe; import net.minecraftforge.common.brewing.VanillaBrewingRecipe; @@ -133,27 +131,17 @@ public class PotionMixingRecipeManager { .collect(Collectors.toList()); } - public static final ReloadListener LISTENER = new ReloadListener() { - - @Override - protected Object prepare(IResourceManager p_212854_1_, IProfiler p_212854_2_) { - return new Object(); - } - - @Override - protected void apply(Object p_212853_1_, IResourceManager p_212853_2_, IProfiler p_212853_3_) { - ALL.clear(); - getAllBrewingRecipes().forEach(recipe -> { - for (Ingredient ingredient : recipe.getIngredients()) { - for (ItemStack itemStack : ingredient.getMatchingStacks()) { - ALL.computeIfAbsent(itemStack.getItem(), t -> new ArrayList<>()) - .add(recipe); - return; - } + public static final ISimpleReloadListener LISTENER = (resourceManager, profiler) -> { + ALL.clear(); + getAllBrewingRecipes().forEach(recipe -> { + for (Ingredient ingredient : recipe.getIngredients()) { + for (ItemStack itemStack : ingredient.getMatchingStacks()) { + ALL.computeIfAbsent(itemStack.getItem(), t -> new ArrayList<>()) + .add(recipe); + return; } - }); - } - + } + }); }; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java index 333f65bbd..9ba2b63dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java @@ -2,12 +2,12 @@ package com.simibubi.create.content.contraptions.goggles; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.block.render.WrappedBakedModel; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; +import net.minecraftforge.client.model.BakedModelWrapper; -public class GogglesModel extends WrappedBakedModel { +public class GogglesModel extends BakedModelWrapper { public GogglesModel(IBakedModel template) { super(template); @@ -21,4 +21,4 @@ public class GogglesModel extends WrappedBakedModel { return super.handlePerspective(cameraTransformType, mat); } -} \ No newline at end of file +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java index df11ef484..1d3765ac6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java @@ -3,7 +3,9 @@ package com.simibubi.create.content.contraptions.processing.burner; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -30,11 +32,11 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer { DyeColor color = tile.color.orElse(null); for (boolean bottom : Iterate.trueAndFalse) { - AllBlockPartials beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom); + PartialModel beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom); SpriteShiftEntry spriteShift = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); InstancedModel beltModel = modelManager.getMaterial(KineticRenderMaterials.BELTS).getModel(beltPartial, blockState); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java index cde75cafc..668cbad48 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java @@ -3,12 +3,12 @@ package com.simibubi.create.content.contraptions.relays.belt; import static com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CASING_PROPERTY; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Random; import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; +import com.simibubi.create.foundation.block.render.QuadHelper; import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import com.simibubi.create.foundation.render.SuperByteBuffer; @@ -30,14 +30,16 @@ public class BeltModel extends BakedModelWrapper { @Override public List getQuads(BlockState state, Direction side, Random rand, IModelData extraData) { - List quads = new ArrayList<>(super.getQuads(state, side, rand, extraData)); + List quads = super.getQuads(state, side, rand, extraData); if (!extraData.hasProperty(CASING_PROPERTY)) return quads; CasingType type = extraData.getData(CASING_PROPERTY); if (type == CasingType.NONE || type == CasingType.BRASS) return quads; + quads = new ArrayList<>(quads); SpriteShiftEntry spriteShift = AllSpriteShifts.ANDESIDE_BELT_CASING; + VertexFormat format = DefaultVertexFormats.BLOCK; for (int i = 0; i < quads.size(); i++) { BakedQuad quad = quads.get(i); @@ -48,10 +50,7 @@ public class BeltModel extends BakedModelWrapper { TextureAtlasSprite original = quad.getSprite(); TextureAtlasSprite target = spriteShift.getTarget(); - BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), - quad.getTintIndex(), quad.getFace(), target, quad.hasShade()); - - VertexFormat format = DefaultVertexFormats.BLOCK; + BakedQuad newQuad = QuadHelper.clone(quad); int[] vertexData = newQuad.getVertexData(); for (int vertex = 0; vertex < vertexData.length; vertex += format.getIntegerSize()) { @@ -61,9 +60,9 @@ public class BeltModel extends BakedModelWrapper { float u = Float.intBitsToFloat(vertexData[uIndex]); float v = Float.intBitsToFloat(vertexData[vIndex]); vertexData[uIndex] = - Float.floatToRawIntBits(target.getInterpolatedU((SuperByteBuffer.getUnInterpolatedU(original, u)))); + Float.floatToRawIntBits(target.getInterpolatedU(SuperByteBuffer.getUnInterpolatedU(original, u))); vertexData[vIndex] = - Float.floatToRawIntBits(target.getInterpolatedV((SuperByteBuffer.getUnInterpolatedV(original, v)))); + Float.floatToRawIntBits(target.getInterpolatedV(SuperByteBuffer.getUnInterpolatedV(original, v))); } quads.set(i, newQuad); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index 6b8ace415..4beec3bb0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.relays.belt; import java.util.Random; +import java.util.function.Supplier; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; @@ -11,9 +12,11 @@ import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.ShadowRenderHelper; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -93,10 +96,10 @@ public class BeltRenderer extends SafeTileEntityRenderer { for (boolean bottom : Iterate.trueAndFalse) { - AllBlockPartials beltPartial = getBeltPartial(diagonal, start, end, bottom); + PartialModel beltPartial = getBeltPartial(diagonal, start, end, bottom); - SuperByteBuffer beltBuffer = beltPartial.renderOn(blockState) - .light(light); + SuperByteBuffer beltBuffer = PartialBufferer.get(beltPartial, blockState) + .light(light); SpriteShiftEntry spriteShift = getSpriteShiftEntry(color, diagonal, bottom); @@ -127,18 +130,20 @@ public class BeltRenderer extends SafeTileEntityRenderer { } if (te.hasPulley()) { - // TODO 1.15 find a way to cache this model matrix computation - MatrixStack modelTransform = new MatrixStack(); - Direction dir = blockState.get(BeltBlock.HORIZONTAL_FACING).rotateY(); - if (sideways) dir = Direction.UP; - msr = MatrixStacker.of(modelTransform); - msr.centre(); - if (dir.getAxis() == Axis.X) msr.rotateY(90); - if (dir.getAxis() == Axis.Y) msr.rotateX(90); - msr.rotateX(90); - msr.unCentre(); + Direction dir = sideways ? Direction.UP : blockState.get(BeltBlock.HORIZONTAL_FACING).rotateY(); - SuperByteBuffer superBuffer = CreateClient.bufferCache.renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, modelTransform); + Supplier matrixStackSupplier = () -> { + MatrixStack stack = new MatrixStack(); + MatrixStacker stacker = MatrixStacker.of(stack); + stacker.centre(); + if (dir.getAxis() == Axis.X) stacker.rotateY(90); + if (dir.getAxis() == Axis.Y) stacker.rotateX(90); + stacker.rotateX(90); + stacker.unCentre(); + return stack; + }; + + SuperByteBuffer superBuffer = CreateClient.bufferCache.renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, matrixStackSupplier); KineticTileEntityRenderer.standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb); } } @@ -155,7 +160,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { : bottom ? AllSpriteShifts.BELT_OFFSET : AllSpriteShifts.BELT; } - public static AllBlockPartials getBeltPartial(boolean diagonal, boolean start, boolean end, boolean bottom) { + public static PartialModel getBeltPartial(boolean diagonal, boolean start, boolean end, boolean bottom) { if (diagonal) { if (start) return AllBlockPartials.BELT_DIAGONAL_START; if (end) return AllBlockPartials.BELT_DIAGONAL_END; 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 1624eb195..6280c7bb7 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 @@ -495,7 +495,7 @@ public class BeltTileEntity extends KineticTileEntity implements LightUpdateList return empty; } - public static ModelProperty CASING_PROPERTY = new ModelProperty<>(); + public static final ModelProperty CASING_PROPERTY = new ModelProperty<>(); @Override public IModelData getModelData() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java index b0d587c34..28b3c46a6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.simibubi.create.foundation.block.render.WrappedBakedModel; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.VirtualEmptyModelData; @@ -15,11 +14,12 @@ import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockDisplayReader; +import net.minecraftforge.client.model.BakedModelWrapper; import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.client.model.data.ModelProperty; -public class BracketedKineticBlockModel extends WrappedBakedModel { +public class BracketedKineticBlockModel extends BakedModelWrapper { private static ModelProperty BRACKET_PROPERTY = new ModelProperty<>(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java index 92eab7077..f317fd24d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java @@ -30,12 +30,12 @@ public class SplitShaftInstance extends KineticTileInstance half = AllBlockPartials.SHAFT_HALF.getModel(rotatingMaterial, blockState, dir); + InstancedModel half = rotatingMaterial.getModel(AllBlockPartials.SHAFT_HALF, blockState, dir); - float splitSpeed = speed * tile.getRotationSpeedModifier(dir); + float splitSpeed = speed * tile.getRotationSpeedModifier(dir); - keys.add(setup(half.createInstance(), splitSpeed)); - } + keys.add(setup(half.createInstance(), splitSpeed)); + } } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java index a1cf575af..cac191681 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -51,7 +52,7 @@ public class SplitShaftRenderer extends KineticTileEntityRenderer { angle = angle / 180f * (float) Math.PI; SuperByteBuffer superByteBuffer = - AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState(), direction); + PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); kineticRotationTransform(superByteBuffer, te, axis, angle, light); superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java index bc89519bb..56c9fb89b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java @@ -6,8 +6,10 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock.Type; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.block.BlockState; @@ -25,11 +27,11 @@ public class GaugeRenderer extends KineticTileEntityRenderer { public static GaugeRenderer speed(TileEntityRendererDispatcher dispatcher) { return new GaugeRenderer(dispatcher, Type.SPEED); } - + public static GaugeRenderer stress(TileEntityRendererDispatcher dispatcher) { return new GaugeRenderer(dispatcher, Type.STRESS); } - + protected GaugeRenderer(TileEntityRendererDispatcher dispatcher, GaugeBlock.Type type) { super(dispatcher); this.type = type; @@ -45,17 +47,17 @@ public class GaugeRenderer extends KineticTileEntityRenderer { GaugeTileEntity gaugeTE = (GaugeTileEntity) te; int lightCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), gaugeState, te.getPos()); + PartialModel partialModel = (type == Type.SPEED ? AllBlockPartials.GAUGE_HEAD_SPEED : AllBlockPartials.GAUGE_HEAD_STRESS); SuperByteBuffer headBuffer = - (type == Type.SPEED ? AllBlockPartials.GAUGE_HEAD_SPEED : AllBlockPartials.GAUGE_HEAD_STRESS) - .renderOn(gaugeState); - SuperByteBuffer dialBuffer = AllBlockPartials.GAUGE_DIAL.renderOn(gaugeState); + PartialBufferer.get(partialModel, gaugeState); + SuperByteBuffer dialBuffer = PartialBufferer.get(AllBlockPartials.GAUGE_DIAL, gaugeState); float dialPivot = 5.75f / 16; float progress = MathHelper.lerp(partialTicks, gaugeTE.prevDialState, gaugeTE.dialState); for (Direction facing : Iterate.directions) { if (!((GaugeBlock) gaugeState.getBlock()).shouldRenderHeadOnFace(te.getWorld(), te.getPos(), gaugeState, - facing)) + facing)) continue; IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java index 62a2cd6b2..a991802fa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java @@ -36,20 +36,20 @@ public class GearboxInstance extends KineticTileInstance { RenderMaterial> rotatingMaterial = getRotatingMaterial(); for (Direction direction : Iterate.directions) { - final Direction.Axis axis = direction.getAxis(); - if (boxAxis == axis) - continue; + final Direction.Axis axis = direction.getAxis(); + if (boxAxis == axis) + continue; - InstancedModel shaft = AllBlockPartials.SHAFT_HALF.getModel(rotatingMaterial, blockState, direction); + InstancedModel shaft = rotatingMaterial.getModel(AllBlockPartials.SHAFT_HALF, blockState, direction); - RotatingData key = shaft.createInstance(); + RotatingData key = shaft.createInstance(); - key.setRotationAxis(Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis).getUnitVector()) - .setRotationalSpeed(getSpeed(direction)) - .setRotationOffset(getRotationOffset(axis)).setColor(tile) - .setPosition(getInstancePosition()) - .setBlockLight(blockLight) - .setSkyLight(skyLight); + key.setRotationAxis(Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis).getUnitVector()) + .setRotationalSpeed(getSpeed(direction)) + .setRotationOffset(getRotationOffset(axis)).setColor(tile) + .setPosition(getInstancePosition()) + .setBlockLight(blockLight) + .setSkyLight(skyLight); keys.put(direction, key); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java index 45463f007..72c2e09e8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -37,7 +38,7 @@ public class GearboxRenderer extends KineticTileEntityRenderer { if (boxAxis == axis) continue; - SuperByteBuffer shaft = AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState(), direction); + SuperByteBuffer shaft = PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); float offset = getRotationOffsetForPosition(te, pos, axis); float angle = (time * te.getSpeed() * 3f / 10) % 360; diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java index 5c28aef5a..52d9489c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.wrench; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; @@ -40,6 +42,9 @@ public interface IWrenchable { ((GeneratingKineticTileEntity) te).reActivateSource = true; } + if (world.getBlockState(context.getPos()) != state) + playRotateSound(world, context.getPos()); + return ActionResultType.SUCCESS; } @@ -60,10 +65,19 @@ public interface IWrenchable { }); state.spawnAdditionalDrops((ServerWorld) world, pos, ItemStack.EMPTY); world.destroyBlock(pos, false); + playRemoveSound(world, pos); } return ActionResultType.SUCCESS; } + default void playRemoveSound(World world, BlockPos pos) { + AllSoundEvents.WRENCH_REMOVE.playOnServer(world, pos, 1, Create.random.nextFloat() * .5f + .5f); + } + + default void playRotateSound(World world, BlockPos pos) { + AllSoundEvents.WRENCH_ROTATE.playOnServer(world, pos, 1, Create.random.nextFloat() + .5f); + } + default BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { BlockState newState = originalState; diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java index 8a9e75a53..bde917413 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java @@ -7,22 +7,23 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.item.ItemStack; import net.minecraft.util.math.vector.Vector3f; public class WrenchItemRenderer extends CustomRenderedItemModelRenderer { @Override - protected void render(ItemStack stack, WrenchModel model, PartialItemModelRenderer renderer, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - renderer.render(model.getBakedModel(), light); + protected void render(ItemStack stack, WrenchModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, + MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + renderer.render(model.getOriginalModel(), light); float xOffset = -1/16f; ms.translate(-xOffset, 0, 0); ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks()))); ms.translate(xOffset, 0, 0); - + renderer.render(model.getPartial("gear"), light); } - + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java index 288de4b54..bc2ebd9ef 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java @@ -60,9 +60,9 @@ public class SymmetryWandScreen extends AbstractSimiScreen { AllGuiTextures background = AllGuiTextures.WAND_OF_SYMMETRY; this.setWindowSize(background.width + 50, background.height + 50); - labelType = new Label(guiLeft + 49, guiTop + 26, StringTextComponent.EMPTY).colored(0xFFFFFFFF) + labelType = new Label(guiLeft + 49, guiTop + 28, StringTextComponent.EMPTY).colored(0xFFFFFFFF) .withShadow(); - labelAlign = new Label(guiLeft + 49, guiTop + 48, StringTextComponent.EMPTY).colored(0xFFFFFFFF) + labelAlign = new Label(guiLeft + 49, guiTop + 50, StringTextComponent.EMPTY).colored(0xFFFFFFFF) .withShadow(); int state = @@ -96,14 +96,14 @@ public class SymmetryWandScreen extends AbstractSimiScreen { widgets.add(labelAlign); widgets.add(areaType); widgets.add(labelType); - + confirmButton = new IconButton(guiLeft + background.width - 33, guiTop + background.height - 24, AllIcons.I_CONFIRM); widgets.add(confirmButton); } private void initAlign(SymmetryMirror element) { - if (areaAlign != null) + if (areaAlign != null) widgets.remove(areaAlign); areaAlign = new SelectionScrollInput(guiLeft + 45, guiTop + 43, 109, 18).forOptions(element.getAlignToolTips()) @@ -118,20 +118,18 @@ public class SymmetryWandScreen extends AbstractSimiScreen { @Override protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { AllGuiTextures.WAND_OF_SYMMETRY.draw(matrixStack, this, guiLeft, guiTop); - - textRenderer.drawWithShadow(matrixStack, wand.getDisplayName(), guiLeft + 11, guiTop + 3, 0xffffff); - + textRenderer.draw(matrixStack, wand.getDisplayName(), guiLeft + 11, guiTop + 4, 0x6B3802); renderBlock(matrixStack); GuiGameElement.of(wand) - .at(guiLeft + 190, guiTop + 420, -150) - .scale(4) - .rotate(-70, 20, 20) - .render(matrixStack); + .scale(4) + .rotate(-70, 20, 20) + .at(guiLeft + 170, guiTop + 490, -150) + .render(matrixStack); } protected void renderBlock(MatrixStack ms) { ms.push(); - ms.translate(guiLeft + 26f, guiTop + 37, 20); + ms.translate(guiLeft + 26f, guiTop + 39, 20); ms.scale(16, 16, 16); ms.multiply(new Vector3f(.3f, 1f, 0f).getDegreesQuaternion(-22.5f)); currentElement.applyModelTransform(ms); @@ -152,7 +150,7 @@ public class SymmetryWandScreen extends AbstractSimiScreen { client.player.setHeldItem(hand, heldItem); super.removed(); } - + @Override public boolean mouseClicked(double x, double y, int button) { if (confirmButton.isHovered()) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java index 69e68f142..51cd757ba 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java @@ -6,6 +6,7 @@ import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3f; @@ -13,21 +14,21 @@ import net.minecraft.util.math.vector.Vector3f; public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer { @Override - protected void render(ItemStack stack, SymmetryWandModel model, PartialItemModelRenderer renderer, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { + protected void render(ItemStack stack, SymmetryWandModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, + MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { float worldTime = AnimationTickHolder.getRenderTime() / 20; int maxLight = 0xF000F0; - renderer.render(model.getBakedModel(), light); + renderer.render(model.getOriginalModel(), light); renderer.renderSolidGlowing(model.getPartial("core"), maxLight); renderer.renderGlowing(model.getPartial("core_glow"), maxLight); float floating = MathHelper.sin(worldTime) * .05f; float angle = worldTime * -10 % 360; - + ms.translate(0, floating, 0); ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - + renderer.renderGlowing(model.getPartial("bits"), maxLight); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java index ccdd17720..805673bec 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java @@ -7,6 +7,7 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.MatrixStacker; @@ -86,7 +87,7 @@ public class CrossPlaneMirror extends SymmetryMirror { } @Override - public AllBlockPartials getModel() { + public PartialModel getModel() { return AllBlockPartials.SYMMETRY_CROSSPLANE; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java index d7cdd00b5..9e953ae5b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import net.minecraft.block.BlockState; import net.minecraft.util.IStringSerializable; @@ -17,13 +17,13 @@ public class EmptyMirror extends SymmetryMirror { public static enum Align implements IStringSerializable { None("none"); - + private final String name; private Align(String name) { this.name = name; } @Override public String getString() { return name; } @Override public String toString() { return name; } } - + public EmptyMirror(Vector3d pos) { super(pos); orientation = Align.None; @@ -50,10 +50,10 @@ public class EmptyMirror extends SymmetryMirror { } @Override - public AllBlockPartials getModel() { + public PartialModel getModel() { return null; } - + @Override public List getAlignToolTips() { return ImmutableList.of(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java index 497ecc269..53f8a55c3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java @@ -7,6 +7,7 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.MatrixStacker; @@ -82,7 +83,7 @@ public class PlaneMirror extends SymmetryMirror { } @Override - public AllBlockPartials getModel() { + public PartialModel getModel() { return AllBlockPartials.SYMMETRY_PLANE; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java index 33f4f5ff2..02e950e9e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java @@ -6,7 +6,7 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.BlockState; @@ -80,7 +80,7 @@ public abstract class SymmetryMirror { public abstract String typeName(); - public abstract AllBlockPartials getModel(); + public abstract PartialModel getModel(); public void applyModelTransform(MatrixStack ms) {} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java index 586b4145b..838d4b366 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java @@ -6,6 +6,7 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.backend.core.PartialModel; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.BlockState; @@ -43,7 +44,7 @@ public class TriplePlaneMirror extends SymmetryMirror { } @Override - public AllBlockPartials getModel() { + public PartialModel getModel() { return AllBlockPartials.SYMMETRY_TRIPLEPLANE; } @@ -54,12 +55,12 @@ public class TriplePlaneMirror extends SymmetryMirror { @Override public void setOrientation(int index) { } - + @Override public IStringSerializable getOrientation() { return CrossPlaneMirror.Align.Y; } - + @Override public List getAlignToolTips() { return ImmutableList.of(Lang.translate("orientation.horizontal")); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/AllToolTiers.java b/src/main/java/com/simibubi/create/content/curiosities/tools/AllToolTiers.java deleted file mode 100644 index 22ba52060..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/AllToolTiers.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.function.Supplier; - -import com.simibubi.create.AllItems; - -import net.minecraft.item.IItemTier; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.LazyValue; - -public enum AllToolTiers implements IItemTier { - - RADIANT(4, 1024, 16.0F, 3.5F, 10, () -> { - return Ingredient.fromItems(AllItems.REFINED_RADIANCE.get()); - }), - - ; - - private final int harvestLevel; - private final int maxUses; - private final float efficiency; - private final float attackDamage; - private final int enchantability; - private final LazyValue repairMaterial; - - private AllToolTiers(int harvestLevelIn, int maxUsesIn, float efficiencyIn, float attackDamageIn, - int enchantabilityIn, Supplier repairMaterialIn) { - this.harvestLevel = harvestLevelIn; - this.maxUses = maxUsesIn; - this.efficiency = efficiencyIn; - this.attackDamage = attackDamageIn; - this.enchantability = enchantabilityIn; - this.repairMaterial = new LazyValue<>(repairMaterialIn); - } - - public int getMaxUses() { - return this.maxUses; - } - - public float getEfficiency() { - return this.efficiency; - } - - public float getAttackDamage() { - return this.attackDamage; - } - - public int getHarvestLevel() { - return this.harvestLevel; - } - - public int getEnchantability() { - return this.enchantability; - } - - public Ingredient getRepairMaterial() { - return this.repairMaterial.getValue(); - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItem.java deleted file mode 100644 index 862b11161..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItem.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTags; -import com.simibubi.create.foundation.utility.TreeCutter; -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.AxeItem; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.event.world.BlockEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; - - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@EventBusSubscriber(bus = Bus.FORGE) -public class DeforesterItem extends AxeItem { - private static boolean deforesting = false; // required as to not run into "recursions" over forge events on tree cutting - - public DeforesterItem(Properties builder) { - super(AllToolTiers.RADIANT, 5.0F, -3.1F, builder); - } - - // Moved away from Item#onBlockDestroyed as it does not get called in Creative - public static void destroyTree(IWorld iWorld, BlockState state, BlockPos pos, - PlayerEntity player) { - - if (deforesting ||!(state.isIn(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(state)) || player.isSneaking() || !(iWorld instanceof World)) - return; - World worldIn = (World) iWorld; - Vector3d vec = player.getLookVec(); - - deforesting = true; - TreeCutter.findTree(worldIn, pos).destroyBlocks(worldIn, player, (dropPos, item) -> dropItemFromCutTree(worldIn, pos, vec, dropPos, item)); - deforesting = false; - } - - @SubscribeEvent - public static void onBlockDestroyed(BlockEvent.BreakEvent event) { - ItemStack heldItemMainhand = event.getPlayer().getHeldItemMainhand(); - if (!AllItems.DEFORESTER.isIn(heldItemMainhand)) - return; - destroyTree(event.getWorld(), event.getState(), event.getPos(), event.getPlayer()); - } - - public static void dropItemFromCutTree(World world, BlockPos breakingPos, Vector3d fallDirection, BlockPos pos, - ItemStack stack) { - float distance = (float) Math.sqrt(pos.distanceSq(breakingPos)); - Vector3d dropPos = VecHelper.getCenterOf(pos); - ItemEntity entity = new ItemEntity(world, dropPos.x, dropPos.y, dropPos.z, stack); - entity.setMotion(fallDirection.scale(distance / 20f)); - world.addEntity(entity); - } - - @Override - public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) { - if (!state.isIn(BlockTags.LEAVES)) - super.onBlockDestroyed(stack, world, state, pos, entity); - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java deleted file mode 100644 index 46712178b..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer; -import com.simibubi.create.foundation.item.PartialItemModelRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.vector.Vector3f; - -public class DeforesterItemRenderer extends CustomRenderedItemModelRenderer { - - @Override - protected void render(ItemStack stack, DeforesterModel model, PartialItemModelRenderer renderer, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - int maxLight = 0xF000F0; - float worldTime = AnimationTickHolder.getRenderTime(); - - renderer.renderSolid(model.getBakedModel(), light); - renderer.renderSolidGlowing(model.getPartial("core"), maxLight); - renderer.renderGlowing(model.getPartial("core_glow"), maxLight); - - float angle = worldTime * -.5f % 360; - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - renderer.renderSolid(model.getPartial("gear"), light); - } - - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java deleted file mode 100644 index 5fad1cfac..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.simibubi.create.foundation.block.render.CustomRenderedItemModel; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class DeforesterModel extends CustomRenderedItemModel { - - public DeforesterModel(IBakedModel template) { - super(template, "deforester"); - addPartials("gear", "core", "core_glow"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new DeforesterItemRenderer(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java index 2f09786c6..2869afcea 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java @@ -19,13 +19,12 @@ public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer(ActionResultType.FAIL, item); } @@ -202,7 +200,7 @@ public abstract class ZapperItem extends Item { public ITextComponent validateUsage(ItemStack item) { CompoundNBT tag = item.getOrCreateTag(); if (!canActivateWithoutSelectedBlock(item) && !tag.contains("BlockUsed")) - return Lang.createTranslationTextComponent("blockzapper.leftClickToSet"); + return Lang.createTranslationTextComponent("terrainzapper.leftClickToSet"); return null; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java index 056478073..9904b6d39 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java @@ -18,10 +18,10 @@ import net.minecraft.util.math.MathHelper; public abstract class ZapperItemRenderer extends CustomRenderedItemModelRenderer { @Override - protected void render(ItemStack stack, M model, PartialItemModelRenderer renderer, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { + protected void render(ItemStack stack, M model, PartialItemModelRenderer renderer, TransformType transformType, + MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { // Block indicator - if (model.getCurrentPerspective() == TransformType.GUI && stack.hasTag() && stack.getTag() + if (transformType == TransformType.GUI && stack.hasTag() && stack.getTag() .contains("BlockUsed")) renderBlockUsed(stack, ms, buffer, light, overlay); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java index bcf8f8e5c..f69316011 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java @@ -113,9 +113,9 @@ public class ZapperRenderHandler { } public static void playSound(Hand hand, BlockPos position) { - float pitch = hand == Hand.MAIN_HAND ? 2f : 0.9f; + float pitch = hand == Hand.MAIN_HAND ? 0.1f : 0.9f; Minecraft mc = Minecraft.getInstance(); - AllSoundEvents.BLOCKZAPPER_PLACE.play(mc.world, mc.player, position, 0.8f, pitch); + AllSoundEvents.WORLDSHAPER_PLACE.play(mc.world, mc.player, position, 0.1f, pitch); } public static void addBeam(LaserBeam beam) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java index ff58a8bf1..b62d2039d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java @@ -30,8 +30,8 @@ public class ZapperScreen extends AbstractSimiScreen { protected float animationProgress; protected AllGuiTextures background; private IconButton confirmButton; - - protected final ITextComponent patternSection = Lang.translate("gui.blockzapper.patternSection"); + + protected final ITextComponent patternSection = Lang.translate("gui.terrainzapper.patternSection"); protected ITextComponent title; protected Vector patternButtons; @@ -51,14 +51,15 @@ public class ZapperScreen extends AbstractSimiScreen { @Override protected void init() { animationProgress = 0; - setWindowSize(background.width + 40, background.height); + setWindowSize(background.width, background.height); super.init(); widgets.clear(); - - confirmButton = new IconButton(guiLeft + background.width - 53, guiTop + background.height - 24, AllIcons.I_CONFIRM); + + confirmButton = + new IconButton(guiLeft + background.width - 43, guiTop + background.height - 24, AllIcons.I_CONFIRM); widgets.add(confirmButton); - int i = guiLeft - 20; + int i = guiLeft - 10; int j = guiTop; CompoundNBT nbt = zapper.getOrCreateTag(); @@ -67,9 +68,10 @@ public class ZapperScreen extends AbstractSimiScreen { for (int col = 0; col <= 2; col++) { int id = patternButtons.size(); PlacementPatterns pattern = PlacementPatterns.values()[id]; - patternButtons.add(new IconButton(i + background.width - 76 + col * 18, j + 19 + row * 18, pattern.icon)); + patternButtons + .add(new IconButton(i + background.width - 76 + col * 18, j + 21 + row * 18, pattern.icon)); patternButtons.get(id) - .setToolTip(Lang.translate("gui.blockzapper.pattern." + pattern.translationKey)); + .setToolTip(Lang.translate("gui.terrainzapper.pattern." + pattern.translationKey)); } } @@ -82,7 +84,7 @@ public class ZapperScreen extends AbstractSimiScreen { @Override protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - int i = guiLeft - 20; + int i = guiLeft - 10; int j = guiTop; background.draw(matrixStack, this, i, j); @@ -93,7 +95,7 @@ public class ZapperScreen extends AbstractSimiScreen { } protected void drawOnBackground(MatrixStack matrixStack, int i, int j) { - textRenderer.drawWithShadow(matrixStack, title, i + 11, j + 3, brightColor); + textRenderer.draw(matrixStack, title, i + 11, j + 4, 0x54214F); } @Override @@ -122,7 +124,7 @@ public class ZapperScreen extends AbstractSimiScreen { nbt.putString("Pattern", PlacementPatterns.values()[patternButtons.indexOf(patternButton)].name()); } } - + if (confirmButton.isHovered()) { onClose(); return true; @@ -133,15 +135,16 @@ public class ZapperScreen extends AbstractSimiScreen { protected void renderZapper(MatrixStack matrixStack) { GuiGameElement.of(zapper) - .at((this.width - this.sWidth) / 2 + 200, this.height / 2 - this.sHeight / 4 + 25, -150) - .scale(4) - .render(matrixStack); + .scale(4) + .at((this.width - this.sWidth) / 2 + 220, this.height / 2 - this.sHeight / 4 + 27, -150) + .render(matrixStack); } protected void renderBlock(MatrixStack matrixStack) { matrixStack.push(); - matrixStack.translate(guiLeft + 7f, guiTop + 43.5f, 120); - matrixStack.multiply(new Vector3f(.5f, .9f, -.1f).getDegreesQuaternion(-30f)); + matrixStack.translate(guiLeft + 22f, guiTop + 42f, 120); + matrixStack.multiply(new Vector3f(1f, 0, 0).getDegreesQuaternion(-25f)); + matrixStack.multiply(new Vector3f(0, 1f, 0).getDegreesQuaternion(-45f)); matrixStack.scale(20, 20, 20); BlockState state = Blocks.AIR.getDefaultState(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java deleted file mode 100644 index 1a8cdb843..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java +++ /dev/null @@ -1,396 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.content.curiosities.zapper.PlacementPatterns; -import com.simibubi.create.content.curiosities.zapper.ZapperInteractionHandler; -import com.simibubi.create.content.curiosities.zapper.ZapperItem; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.item.ItemDescription; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.common.util.Constants.BlockFlags; -import net.minecraftforge.event.ForgeEventFactory; - -public class BlockzapperItem extends ZapperItem { - - public BlockzapperItem(Properties properties) { - super(properties); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - super.addInformation(stack, worldIn, tooltip, flagIn); - if (Screen.hasShiftDown()) { - - tooltip.add(new StringTextComponent("")); - ItemDescription.add(tooltip, Lang.translate("blockzapper.componentUpgrades").formatted(TextFormatting.WHITE)); - - for (Components c : Components.values()) { - ComponentTier tier = getTier(c, stack); - ITextComponent componentName = - Lang.translate("blockzapper.component." + Lang.asId(c.name())).formatted(TextFormatting.GRAY); - ITextComponent tierName = Lang.translate("blockzapper.componentTier." + Lang.asId(tier.name())).formatted(tier.color); - ItemDescription.add(tooltip, new StringTextComponent("> ").append(componentName).append(": ").append(tierName)); - } - } - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) { - if (group != Create.baseCreativeTab && group != ItemGroup.SEARCH) - return; - - ItemStack gunWithoutStuff = new ItemStack(this); - items.add(gunWithoutStuff); - - ItemStack gunWithGoldStuff = new ItemStack(this); - for (Components c : Components.values()) - setTier(c, ComponentTier.Brass, gunWithGoldStuff); - items.add(gunWithGoldStuff); - - ItemStack gunWithPurpurStuff = new ItemStack(this); - for (Components c : Components.values()) - setTier(c, ComponentTier.Chromatic, gunWithPurpurStuff); - items.add(gunWithPurpurStuff); - } - - @Override - protected boolean activate(World world, PlayerEntity player, ItemStack stack, BlockState selectedState, - BlockRayTraceResult raytrace, CompoundNBT data) { - CompoundNBT nbt = stack.getOrCreateTag(); - boolean replace = nbt.contains("Replace") && nbt.getBoolean("Replace"); - - List selectedBlocks = getSelectedBlocks(stack, world, player); - PlacementPatterns.applyPattern(selectedBlocks, stack); - Direction face = raytrace.getFace(); - - for (BlockPos placed : selectedBlocks) { - if (world.getBlockState(placed) == selectedState) - continue; - if (!selectedState.isValidPosition(world, placed)) - continue; - if (!player.isCreative() && !canBreak(stack, world.getBlockState(placed), world, placed,player)) - continue; - if (!player.isCreative() && BlockHelper.findAndRemoveInInventory(selectedState, player, 1) == 0) { - player.getCooldownTracker() - .setCooldown(stack.getItem(), 20); - player.sendStatusMessage( Lang.translate("blockzapper.empty").formatted(TextFormatting.RED), true); - return false; - } - - if (!player.isCreative() && replace) - dropBlocks(world, player, stack, face, placed); - - BlockState state = selectedState; - for (Direction updateDirection : Iterate.directions) - state = state.updatePostPlacement(updateDirection, - world.getBlockState(placed.offset(updateDirection)), world, placed, placed.offset(updateDirection)); - - BlockSnapshot blocksnapshot = BlockSnapshot.create(world.getRegistryKey(), world, placed); - FluidState FluidState = world.getFluidState(placed); - world.setBlockState(placed, FluidState.getBlockState(), BlockFlags.UPDATE_NEIGHBORS); - world.setBlockState(placed, state); - - if (ForgeEventFactory.onBlockPlace(player, blocksnapshot, Direction.UP)) { - blocksnapshot.restore(true, false); - return false; - } - setTileData(world, placed, state, data, player); - - if (player instanceof ServerPlayerEntity && world instanceof ServerWorld) { - ServerPlayerEntity serverPlayer = (ServerPlayerEntity) player; - CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, placed, new ItemStack(state.getBlock())); - - boolean fullyUpgraded = true; - for (Components c : Components.values()) { - if (getTier(c, stack) != ComponentTier.Chromatic) { - fullyUpgraded = false; - break; - } - } - if (fullyUpgraded) - AllTriggers.UPGRADED_ZAPPER.trigger(serverPlayer); - } - } - for (BlockPos placed : selectedBlocks) { - world.neighborChanged(placed, selectedState.getBlock(), placed); - } - - return true; - } - - @Override - public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { - if (AllItems.BLOCKZAPPER.isIn(stack)) { - CompoundNBT nbt = stack.getOrCreateTag(); - if (!nbt.contains("Replace")) - nbt.putBoolean("Replace", false); - if (!nbt.contains("Pattern")) - nbt.putString("Pattern", PlacementPatterns.Solid.name()); - if (!nbt.contains("SearchDiagonal")) - nbt.putBoolean("SearchDiagonal", false); - if (!nbt.contains("SearchMaterial")) - nbt.putBoolean("SearchMaterial", false); - if (!nbt.contains("SearchDistance")) - nbt.putInt("SearchDistance", 1); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - protected void openHandgunGUI(ItemStack handgun, boolean offhand) { - ScreenOpener.open(new BlockzapperScreen(handgun, offhand)); - } - - public static List getSelectedBlocks(ItemStack stack, World worldIn, PlayerEntity player) { - List list = new LinkedList<>(); - CompoundNBT tag = stack.getTag(); - if (tag == null) - return list; - - boolean searchDiagonals = tag.contains("SearchDiagonal") && tag.getBoolean("SearchDiagonal"); - boolean searchAcrossMaterials = tag.contains("SearchFuzzy") && tag.getBoolean("SearchFuzzy"); - boolean replace = tag.contains("Replace") && tag.getBoolean("Replace"); - int searchRange = tag.contains("SearchDistance") ? tag.getInt("SearchDistance") : 0; - - Set visited = new HashSet<>(); - List frontier = new LinkedList<>(); - - Vector3d start = player.getPositionVec() - .add(0, player.getEyeHeight(), 0); - Vector3d range = player.getLookVec() - .scale(ZapperInteractionHandler.getRange(stack)); - BlockRayTraceResult raytrace = player.world - .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.COLLIDER, FluidMode.NONE, player)); - BlockPos pos = raytrace.getPos() - .toImmutable(); - - if (pos == null) - return list; - - BlockState state = worldIn.getBlockState(pos); - Direction face = raytrace.getFace(); - List offsets = new LinkedList<>(); - - for (int x = -1; x <= 1; x++) - for (int y = -1; y <= 1; y++) - for (int z = -1; z <= 1; z++) - if (Math.abs(x) + Math.abs(y) + Math.abs(z) < 2 || searchDiagonals) - if (face.getAxis() - .getCoordinate(x, y, z) == 0) - offsets.add(new BlockPos(x, y, z)); - - BlockPos startPos = replace ? pos : pos.offset(face); - frontier.add(startPos); - - while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - if (!currentPos.withinDistance(startPos, searchRange)) - continue; - - // Replace Mode - if (replace) { - BlockState stateToReplace = worldIn.getBlockState(currentPos); - BlockState stateAboveStateToReplace = worldIn.getBlockState(currentPos.offset(face)); - - // Criteria - if (stateToReplace.getBlockHardness(worldIn, currentPos) == -1) - continue; - if (stateToReplace.getBlock() != state.getBlock() && !searchAcrossMaterials) - continue; - if (stateToReplace.getMaterial() - .isReplaceable()) - continue; - if (stateAboveStateToReplace.isSolid()) - continue; - list.add(currentPos); - - // Search adjacent spaces - for (BlockPos offset : offsets) - frontier.add(currentPos.add(offset)); - continue; - } - - // Place Mode - BlockState stateToPlaceAt = worldIn.getBlockState(currentPos); - BlockState stateToPlaceOn = worldIn.getBlockState(currentPos.offset(face.getOpposite())); - - // Criteria - if (stateToPlaceOn.getMaterial() - .isReplaceable()) - continue; - if (stateToPlaceOn.getBlock() != state.getBlock() && !searchAcrossMaterials) - continue; - if (!stateToPlaceAt.getMaterial() - .isReplaceable()) - continue; - list.add(currentPos); - - // Search adjacent spaces - for (BlockPos offset : offsets) - frontier.add(currentPos.add(offset)); - continue; - } - - return list; - } - - public static boolean canBreak(ItemStack stack, BlockState state, World world, BlockPos pos,PlayerEntity player) { - ComponentTier tier = getTier(Components.Body, stack); - float blockHardness = state.getBlockHardness(world, pos); - //If we can't change the block (e.g chunk protection) - if (!isAllowedToPlace(world,pos,player)){ - return false; - } - if (blockHardness == -1) - return false; - if (tier == ComponentTier.None) - return blockHardness < 3; - if (tier == ComponentTier.Brass) - return blockHardness < 6; - if (tier == ComponentTier.Chromatic) - return true; - - return false; - } - - public static boolean isAllowedToPlace(World world, BlockPos pos,PlayerEntity player){ - BlockSnapshot blocksnapshot = BlockSnapshot.create(world.getRegistryKey(), world, pos); - if (ForgeEventFactory.onBlockPlace(player, blocksnapshot, Direction.UP)) { - return false; - } - return true; - } - - public static int getMaxAoe(ItemStack stack) { - ComponentTier tier = getTier(Components.Amplifier, stack); - if (tier == ComponentTier.None) - return 2; - if (tier == ComponentTier.Brass) - return 4; - if (tier == ComponentTier.Chromatic) - return 8; - - return 0; - } - - @Override - protected int getCooldownDelay(ItemStack stack) { - return getCooldown(stack); - } - - public static int getCooldown(ItemStack stack) { - ComponentTier tier = getTier(Components.Accelerator, stack); - if (tier == ComponentTier.None) - return 10; - if (tier == ComponentTier.Brass) - return 6; - if (tier == ComponentTier.Chromatic) - return 2; - - return 20; - } - - @Override - protected int getZappingRange(ItemStack stack) { - ComponentTier tier = getTier(Components.Scope, stack); - if (tier == ComponentTier.None) - return 15; - if (tier == ComponentTier.Brass) - return 30; - if (tier == ComponentTier.Chromatic) - return 100; - - return 0; - } - - protected static void dropBlocks(World worldIn, PlayerEntity playerIn, ItemStack item, Direction face, - BlockPos placed) { - TileEntity tileentity = worldIn.getBlockState(placed) - .hasTileEntity() ? worldIn.getTileEntity(placed) : null; - - if (getTier(Components.Retriever, item) == ComponentTier.None) { - Block.spawnDrops(worldIn.getBlockState(placed), worldIn, placed.offset(face), tileentity); - } - - if (getTier(Components.Retriever, item) == ComponentTier.Brass) - Block.spawnDrops(worldIn.getBlockState(placed), worldIn, playerIn.getBlockPos(), tileentity); - - if (getTier(Components.Retriever, item) == ComponentTier.Chromatic) - for (ItemStack stack : Block.getDrops(worldIn.getBlockState(placed), (ServerWorld) worldIn, placed, - tileentity)) - if (!playerIn.inventory.addItemStackToInventory(stack)) - Block.spawnAsEntity(worldIn, placed, stack); - } - - public static ComponentTier getTier(Components component, ItemStack stack) { - if (!stack.hasTag() || !stack.getTag() - .contains(component.name())) - stack.getOrCreateTag() - .putString(component.name(), ComponentTier.None.name()); - return NBTHelper.readEnum(stack.getTag(), component.name(), ComponentTier.class); - } - - public static void setTier(Components component, ComponentTier tier, ItemStack stack) { - NBTHelper.writeEnum(stack.getOrCreateTag(), component.name(), tier); - } - - public static enum ComponentTier { - None(TextFormatting.DARK_GRAY), Brass(TextFormatting.GOLD), Chromatic(TextFormatting.LIGHT_PURPLE); - - public TextFormatting color; - - private ComponentTier(TextFormatting color) { - this.color = color; - } - - } - - public static enum Components { - Body, Amplifier, Accelerator, Retriever, Scope - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java deleted file mode 100644 index e59924335..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Accelerator; -import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Amplifier; -import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Body; -import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Retriever; -import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Scope; -import static java.lang.Math.max; -import static net.minecraft.util.math.MathHelper.clamp; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components; -import com.simibubi.create.foundation.item.PartialItemModelRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.item.ItemStack; -import net.minecraft.util.HandSide; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class BlockzapperItemRenderer extends ZapperItemRenderer { - - @Override - protected void render(ItemStack stack, BlockzapperModel model, PartialItemModelRenderer renderer, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - super.render(stack, model, renderer, ms, buffer, light, overlay); - - float pt = AnimationTickHolder.getPartialTicks(); - float worldTime = AnimationTickHolder.getRenderTime() / 20; - - renderer.render(model.getBakedModel(), light); - renderComponent(stack, model, Body, renderer, light); - renderComponent(stack, model, Amplifier, renderer, light); - renderComponent(stack, model, Retriever, renderer, light); - renderComponent(stack, model, Scope, renderer, light); - - ClientPlayerEntity player = Minecraft.getInstance().player; - boolean leftHanded = player.getPrimaryHand() == HandSide.LEFT; - boolean mainHand = player.getHeldItemMainhand() == stack; - boolean offHand = player.getHeldItemOffhand() == stack; - float animation = getAnimationProgress(pt, leftHanded, mainHand); - - // Core glows - float multiplier = MathHelper.sin(worldTime * 5); - if (mainHand || offHand) - multiplier = animation; - - int lightItensity = (int) (15 * clamp(multiplier, 0, 1)); - int glowLight = LightTexture.pack(lightItensity, max(lightItensity, 4)); - renderer.renderSolidGlowing(model.getPartial("core"), glowLight); - renderer.renderGlowing(model.getPartial("core_glow"), glowLight); - - if (BlockzapperItem.getTier(Amplifier, stack) != ComponentTier.None) { - renderer.renderSolidGlowing(model.getPartial("amplifier_core"), glowLight); - renderer.renderGlowing(model.getPartial("amplifier_core_glow"), glowLight); - } - - // Accelerator spins - float angle = worldTime * -25; - if (mainHand || offHand) - angle += 360 * animation; - - angle %= 360; - float offset = -.155f; - ms.translate(0, offset, 0); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle)); - ms.translate(0, -offset, 0); - renderComponent(stack, model, Accelerator, renderer, light); - } - - public void renderComponent(ItemStack stack, BlockzapperModel model, Components component, - PartialItemModelRenderer renderer, int light) { - ComponentTier tier = BlockzapperItem.getTier(component, stack); - IBakedModel partial = model.getComponentPartial(tier, component); - if (partial != null) - renderer.render(partial, light); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java deleted file mode 100644 index f5688e9f6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier; -import com.simibubi.create.foundation.block.render.CustomRenderedItemModel; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class BlockzapperModel extends CustomRenderedItemModel { - - public BlockzapperModel(IBakedModel template) { - super(template, "handheld_blockzapper"); - addPartials("core", "core_glow", "body", "amplifier_core", "amplifier_core_glow", "accelerator", "gold_body", - "gold_scope", "gold_amplifier", "gold_retriever", "gold_accelerator", "chorus_body", "chorus_scope", - "chorus_amplifier", "chorus_retriever", "chorus_accelerator"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new BlockzapperItemRenderer(); - } - - @Nullable - IBakedModel getComponentPartial(BlockzapperItem.ComponentTier tier, BlockzapperItem.Components component) { - String prefix = tier == ComponentTier.Chromatic ? "chorus_" : tier == ComponentTier.Brass ? "gold_" : ""; - return getPartial(prefix + Lang.asId(component.name())); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java deleted file mode 100644 index f897956a3..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import java.util.Collections; -import java.util.List; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; - -public class BlockzapperRenderHandler { - - private static List renderedShape; - - public static void tick() { - gatherSelectedBlocks(); - if (renderedShape.isEmpty()) - return; - - CreateClient.outliner.showCluster("blockzapper", renderedShape) - .colored(0xbfbfbf) - .lineWidth(1 / 32f) - .withFaceTexture(AllSpecialTextures.CHECKERED); - } - - protected static void gatherSelectedBlocks() { - ClientPlayerEntity player = Minecraft.getInstance().player; - ItemStack heldMain = player.getHeldItemMainhand(); - ItemStack heldOff = player.getHeldItemOffhand(); - boolean zapperInMain = AllItems.BLOCKZAPPER.isIn(heldMain); - boolean zapperInOff = AllItems.BLOCKZAPPER.isIn(heldOff); - - if (zapperInMain) { - CompoundNBT tag = heldMain.getOrCreateTag(); - if (!tag.contains("_Swap") || !zapperInOff) { - createOutline(player, heldMain); - return; - } - } - - if (zapperInOff) { - createOutline(player, heldOff); - return; - } - - renderedShape = Collections.emptyList(); - } - - private static void createOutline(ClientPlayerEntity player, ItemStack held) { - if (!held.getOrCreateTag().contains("BlockUsed")) { - renderedShape = Collections.emptyList(); - return; - } - renderedShape = BlockzapperItem.getSelectedBlocks(held, player.world, player); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperScreen.java deleted file mode 100644 index 3bdc13ee5..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperScreen.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import java.util.Collections; - -import com.simibubi.create.content.curiosities.zapper.ZapperScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.gui.widgets.Indicator; -import com.simibubi.create.foundation.gui.widgets.Indicator.State; -import com.simibubi.create.foundation.gui.widgets.Label; -import com.simibubi.create.foundation.gui.widgets.ScrollInput; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class BlockzapperScreen extends ZapperScreen { - - private final ITextComponent needsUpgradedAmplifier = Lang.translate("gui.blockzapper.needsUpgradedAmplifier"); - - private IconButton replaceModeButton; - private Indicator replaceModeIndicator; - private IconButton spreadDiagonallyButton; - private Indicator spreadDiagonallyIndicator; - private IconButton spreadMaterialButton; - private Indicator spreadMaterialIndicator; - - private ScrollInput spreadRangeInput; - private Label spreadRangeLabel; - - public BlockzapperScreen(ItemStack zapper, boolean offhand) { - super(AllGuiTextures.BLOCKZAPPER, zapper, offhand); - title = Lang.translate("gui.blockzapper.title"); - } - - @Override - protected void init() { - super.init(); - - int i = guiLeft - 20; - int j = guiTop; - CompoundNBT nbt = zapper.getOrCreateTag(); - - replaceModeIndicator = new Indicator(i + 49, j + 67, StringTextComponent.EMPTY); - replaceModeButton = new IconButton(i + 49, j + 73, AllIcons.I_REPLACE_SOLID); - if (nbt.contains("Replace") && nbt.getBoolean("Replace")) - replaceModeIndicator.state = State.ON; - replaceModeButton.setToolTip(Lang.translate("gui.blockzapper.replaceMode")); - - spreadDiagonallyIndicator = new Indicator(i + 8, j + 67, StringTextComponent.EMPTY); - spreadDiagonallyButton = new IconButton(i + 8, j + 73, AllIcons.I_FOLLOW_DIAGONAL); - if (nbt.contains("SearchDiagonal") && nbt.getBoolean("SearchDiagonal")) - spreadDiagonallyIndicator.state = State.ON; - spreadDiagonallyButton.setToolTip(Lang.translate("gui.blockzapper.searchDiagonal")); - - spreadMaterialIndicator = new Indicator(i + 26, j + 67, StringTextComponent.EMPTY); - spreadMaterialButton = new IconButton(i + 26, j + 73, AllIcons.I_FOLLOW_MATERIAL); - if (nbt.contains("SearchFuzzy") && nbt.getBoolean("SearchFuzzy")) - spreadMaterialIndicator.state = State.ON; - spreadMaterialButton.setToolTip(Lang.translate("gui.blockzapper.searchFuzzy")); - - spreadRangeLabel = new Label(i + 79, j + 78, StringTextComponent.EMPTY).withShadow().withSuffix("m"); - spreadRangeInput = new ScrollInput(i + 73, j + 73, 26, 18).withRange(1, BlockzapperItem.getMaxAoe(zapper)) - .setState(1).titled(Lang.translate("gui.blockzapper.range")).writingTo(spreadRangeLabel); - - if (nbt.contains("SearchDistance")) - spreadRangeInput.setState(nbt.getInt("SearchDistance")); - if (BlockzapperItem.getMaxAoe(zapper) == 2) - spreadRangeInput.getToolTip().add(1,needsUpgradedAmplifier.copy().formatted(TextFormatting.RED)); - - Collections.addAll(widgets, replaceModeButton, replaceModeIndicator, spreadDiagonallyButton, - spreadDiagonallyIndicator, spreadMaterialButton, spreadMaterialIndicator, spreadRangeLabel, - spreadRangeInput); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - CompoundNBT nbt = zapper.getTag(); - - if (replaceModeButton.isHovered()) { - boolean mode = nbt.contains("Replace") && nbt.getBoolean("Replace"); - mode = !mode; - replaceModeIndicator.state = mode ? State.ON : State.OFF; - nbt.putBoolean("Replace", mode); - } - - if (spreadDiagonallyButton.isHovered()) { - boolean mode = nbt.contains("SearchDiagonal") && nbt.getBoolean("SearchDiagonal"); - mode = !mode; - spreadDiagonallyIndicator.state = mode ? State.ON : State.OFF; - nbt.putBoolean("SearchDiagonal", mode); - } - - if (spreadMaterialButton.isHovered()) { - boolean mode = nbt.contains("SearchFuzzy") && nbt.getBoolean("SearchFuzzy"); - mode = !mode; - spreadMaterialIndicator.state = mode ? State.ON : State.OFF; - nbt.putBoolean("SearchFuzzy", mode); - } - - return super.mouseClicked(x, y, button); - } - - - @Override - protected void writeAdditionalOptions(CompoundNBT nbt) { - nbt.putInt("SearchDistance", spreadRangeInput.getState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperUpgradeRecipe.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperUpgradeRecipe.java deleted file mode 100644 index 41b736a41..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperUpgradeRecipe.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.blockzapper; - -import com.google.gson.JsonObject; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier; -import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components; - -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.registries.ForgeRegistryEntry; - -public class BlockzapperUpgradeRecipe implements ICraftingRecipe { - - private ShapedRecipe recipe; - private Components component; - private ComponentTier tier; - - public BlockzapperUpgradeRecipe(ShapedRecipe recipe, Components component, ComponentTier tier) { - this.recipe = recipe; - this.component = component; - this.tier = tier; - } - - @Override - public boolean matches(CraftingInventory inv, World worldIn) { - return getRecipe().matches(inv, worldIn); - } - - @Override - public NonNullList getIngredients() { - return recipe.getIngredients(); - } - - @Override - public ItemStack getCraftingResult(CraftingInventory inv) { - for (int slot = 0; slot < inv.getSizeInventory(); slot++) { - ItemStack handgun = inv.getStackInSlot(slot).copy(); - if (!AllItems.BLOCKZAPPER.isIn(handgun)) - continue; - BlockzapperItem.setTier(getUpgradedComponent(), getTier(), handgun); - return handgun; - } - return ItemStack.EMPTY; - } - - @Override - public ItemStack getRecipeOutput() { - ItemStack handgun = new ItemStack(AllItems.BLOCKZAPPER.get()); - BlockzapperItem.setTier(getUpgradedComponent(), getTier(), handgun); - return handgun; - } - - @Override - public boolean isDynamic() { - return true; - } - - @Override - public ResourceLocation getId() { - return getRecipe().getId(); - } - -// @Override -// public IRecipeType getType() { -// return AllRecipes.Types.BLOCKZAPPER_UPGRADE; -// } - - @Override - public IRecipeSerializer getSerializer() { - return AllRecipeTypes.BLOCKZAPPER_UPGRADE.serializer; - } - - public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { - - @Override - public BlockzapperUpgradeRecipe read(ResourceLocation recipeId, JsonObject json) { - ShapedRecipe recipe = IRecipeSerializer.CRAFTING_SHAPED.read(recipeId, json); - - Components component = Components.valueOf(JSONUtils.getString(json, "component")); - ComponentTier tier = ComponentTier.valueOf(JSONUtils.getString(json, "tier")); - return new BlockzapperUpgradeRecipe(recipe, component, tier); - } - - @Override - public BlockzapperUpgradeRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { - ShapedRecipe recipe = IRecipeSerializer.CRAFTING_SHAPED.read(recipeId, buffer); - - Components component = Components.valueOf(buffer.readString(buffer.readInt())); - ComponentTier tier = ComponentTier.valueOf(buffer.readString(buffer.readInt())); - return new BlockzapperUpgradeRecipe(recipe, component, tier); - } - - @Override - public void write(PacketBuffer buffer, BlockzapperUpgradeRecipe recipe) { - IRecipeSerializer.CRAFTING_SHAPED.write(buffer, recipe.getRecipe()); - - String name = recipe.getUpgradedComponent().name(); - String name2 = recipe.getTier().name(); - buffer.writeInt(name.length()); - buffer.writeString(name); - buffer.writeInt(name2.length()); - buffer.writeString(name2); - } - - } - - @Override - public boolean canFit(int width, int height) { - return getRecipe().canFit(width, height); - } - - public ShapedRecipe getRecipe() { - return recipe; - } - - public Components getUpgradedComponent() { - return component; - } - - public ComponentTier getTier() { - return tier; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java index f2cb47c88..8ff5ac568 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper; -import java.util.List; +import java.util.Collection; import com.simibubi.create.foundation.utility.Lang; @@ -8,6 +8,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.text.ITextComponent; +import net.minecraft.world.IWorld; public abstract class Brush { @@ -26,6 +27,22 @@ public abstract class Brush { this.param2 = param2; } + public TerrainTools[] getSupportedTools() { + return TerrainTools.values(); + } + + public TerrainTools redirectTool(TerrainTools tool) { + return tool; + } + + public boolean hasPlacementOptions() { + return true; + } + + public boolean hasConnectivityOptions() { + return false; + } + int getMax(int paramIndex) { return Integer.MAX_VALUE; } @@ -36,7 +53,7 @@ public abstract class Brush { ITextComponent getParamLabel(int paramIndex) { return Lang - .translate(paramIndex == 0 ? "generic.width" : paramIndex == 1 ? "generic.height" : "generic.length"); + .translate(paramIndex == 0 ? "generic.width" : paramIndex == 1 ? "generic.height" : "generic.length"); } public int get(int paramIndex) { @@ -47,6 +64,7 @@ public abstract class Brush { return BlockPos.ZERO; } - abstract List getIncludedPositions(); + public abstract Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, + Collection affectedPositions, TerrainTools usedTool); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java index 67e0f82c3..af409cc5a 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java @@ -9,7 +9,7 @@ import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3d; -public class CuboidBrush extends Brush { +public class CuboidBrush extends ShapedBrush { public static final int MAX_SIZE = 32; private List positions; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java index c2b7beb19..0ec8b4f99 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java @@ -17,7 +17,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.text.ITextComponent; -public class CylinderBrush extends Brush { +public class CylinderBrush extends ShapedBrush { public static final int MAX_RADIUS = 8; public static final int MAX_HEIGHT = 8; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java new file mode 100644 index 000000000..5305a65e5 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java @@ -0,0 +1,147 @@ +package com.simibubi.create.content.curiosities.zapper.terrainzapper; + +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.world.IWorld; + +public class DynamicBrush extends Brush { + + public static final int MAX_RADIUS = 10; + + private boolean surface; + + public DynamicBrush(boolean surface) { + super(1); + this.surface = surface; + } + + ITextComponent getParamLabel(int paramIndex) { + return Lang.translate("generic.range"); + } + + @Override + public TerrainTools[] getSupportedTools() { + return surface ? new TerrainTools[] { TerrainTools.Overlay, TerrainTools.Replace, TerrainTools.Clear } + : new TerrainTools[] { TerrainTools.Replace, TerrainTools.Clear }; + } + + @Override + public boolean hasPlacementOptions() { + return false; + } + + @Override + public boolean hasConnectivityOptions() { + return true; + } + + @Override + int getMax(int paramIndex) { + return MAX_RADIUS; + } + + @Override + int getMin(int paramIndex) { + return 1; + } + + @Override + public TerrainTools redirectTool(TerrainTools tool) { + if (tool == TerrainTools.Overlay) + return TerrainTools.Place; + return super.redirectTool(tool); + } + + @Override + public Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, + Collection affectedPositions, TerrainTools usedTool) { + + boolean searchDiagonals = param1 == 0; + boolean fuzzy = param2 == 0; + boolean replace = usedTool != TerrainTools.Overlay; + int searchRange = param0; + + Set visited = new HashSet<>(); + List frontier = new LinkedList<>(); + + BlockState state = world.getBlockState(targetPos); + List offsets = new LinkedList<>(); + + for (int x = -1; x <= 1; x++) + for (int y = -1; y <= 1; y++) + for (int z = -1; z <= 1; z++) + if (Math.abs(x) + Math.abs(y) + Math.abs(z) < 2 || searchDiagonals) + if (targetFace.getAxis() + .getCoordinate(x, y, z) == 0 || !surface) + offsets.add(new BlockPos(x, y, z)); + + BlockPos startPos = replace ? targetPos : targetPos.offset(targetFace); + frontier.add(startPos); + + while (!frontier.isEmpty()) { + BlockPos currentPos = frontier.remove(0); + if (visited.contains(currentPos)) + continue; + visited.add(currentPos); + if (!currentPos.withinDistance(startPos, searchRange)) + continue; + + // Replace Mode + if (replace) { + BlockState stateToReplace = world.getBlockState(currentPos); + BlockState stateAboveStateToReplace = world.getBlockState(currentPos.offset(targetFace)); + + // Criteria + if (stateToReplace.getBlockHardness(world, currentPos) == -1) + continue; + if (stateToReplace.getBlock() != state.getBlock() && !fuzzy) + continue; + if (stateToReplace.getMaterial() + .isReplaceable()) + continue; + if (BlockHelper.hasBlockSolidSide(stateAboveStateToReplace, world, currentPos.offset(targetFace), + targetFace.getOpposite()) && surface) + continue; + affectedPositions.add(currentPos); + + // Search adjacent spaces + for (BlockPos offset : offsets) + frontier.add(currentPos.add(offset)); + continue; + } + + // Place Mode + BlockState stateToPlaceAt = world.getBlockState(currentPos); + BlockState stateToPlaceOn = world.getBlockState(currentPos.offset(targetFace.getOpposite())); + + // Criteria + if (stateToPlaceOn.getMaterial() + .isReplaceable()) + continue; + if (stateToPlaceOn.getBlock() != state.getBlock() && !fuzzy) + continue; + if (!stateToPlaceAt.getMaterial() + .isReplaceable()) + continue; + affectedPositions.add(currentPos); + + // Search adjacent spaces + for (BlockPos offset : offsets) + frontier.add(currentPos.add(offset)); + continue; + } + + return affectedPositions; + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java new file mode 100644 index 000000000..f0e67f3c2 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java @@ -0,0 +1,29 @@ +package com.simibubi.create.content.curiosities.zapper.terrainzapper; + +import java.util.Collection; +import java.util.List; + +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; + +public abstract class ShapedBrush extends Brush { + + public ShapedBrush(int amtParams) { + super(amtParams); + } + + @Override + public Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, + Collection affectedPositions, TerrainTools usedTool) { + List includedPositions = getIncludedPositions(); + if (includedPositions == null) + return affectedPositions; + for (BlockPos blockPos : includedPositions) + affectedPositions.add(targetPos.add(blockPos)); + return affectedPositions; + } + + abstract List getIncludedPositions(); + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java index b7865c5ac..be7657398 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java @@ -13,7 +13,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.text.ITextComponent; -public class SphereBrush extends Brush { +public class SphereBrush extends ShapedBrush { public static final int MAX_RADIUS = 10; private Map> cachedBrushes; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java index 0088d025d..fa11468b6 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java @@ -5,6 +5,8 @@ public enum TerrainBrushes { Cuboid(new CuboidBrush()), Sphere(new SphereBrush()), Cylinder(new CylinderBrush()), + Surface(new DynamicBrush(true)), + Cluster(new DynamicBrush(false)), ; @@ -15,10 +17,6 @@ public enum TerrainBrushes { } public Brush get() { -// if (this == Cylinder) -// brush = new CylinderBrush(); -// if (this == Sphere) -// brush = new SphereBrush(); return brush; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java index 3abb7fe27..43ba4e9f5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java @@ -23,8 +23,10 @@ public enum TerrainTools { Replace(AllIcons.I_REPLACE), Clear(AllIcons.I_CLEAR), Overlay(AllIcons.I_OVERLAY), - Flatten(AllIcons.I_FLATTEN); + Flatten(AllIcons.I_FLATTEN), + ; + public String translationKey; public AllIcons icon; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java index 4e5df7686..86d74a5c6 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java @@ -74,10 +74,10 @@ public class WorldshaperItem extends ZapperItem { brush.set(params.getX(), params.getY(), params.getZ()); targetPos = targetPos.add(brush.getOffset(player.getLookVec(), raytrace.getFace(), option)); - for (BlockPos blockPos : brush.getIncludedPositions()) - affectedPositions.add(targetPos.add(blockPos)); + brush.addToGlobalPositions(world, targetPos, raytrace.getFace(), affectedPositions, tool); PlacementPatterns.applyPattern(affectedPositions, stack); - tool.run(world, affectedPositions, raytrace.getFace(), stateToUse, data, player); + brush.redirectTool(tool) + .run(world, affectedPositions, raytrace.getFace(), stateToUse, data, player); return true; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java index 88b5e5c86..9c2369935 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java @@ -12,6 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.item.ItemStack; import net.minecraft.util.HandSide; import net.minecraft.util.math.MathHelper; @@ -20,14 +21,14 @@ import net.minecraft.util.math.vector.Vector3f; public class WorldshaperItemRenderer extends ZapperItemRenderer { @Override - protected void render(ItemStack stack, WorldshaperModel model, PartialItemModelRenderer renderer, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - super.render(stack, model, renderer, ms, buffer, light, overlay); + protected void render(ItemStack stack, WorldshaperModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, + MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + super.render(stack, model, renderer, transformType, ms, buffer, light, overlay); float pt = AnimationTickHolder.getPartialTicks(); float worldTime = AnimationTickHolder.getRenderTime() / 20; - renderer.renderSolid(model.getBakedModel(), light); + renderer.renderSolid(model.getOriginalModel(), light); ClientPlayerEntity player = Minecraft.getInstance().player; boolean leftHanded = player.getPrimaryHand() == HandSide.LEFT; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java index 30566128b..9edd53a8d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java @@ -1,7 +1,8 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper; -import java.util.List; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Collection; +import java.util.function.Supplier; import com.simibubi.create.AllItems; import com.simibubi.create.AllSpecialTextures; @@ -23,18 +24,16 @@ import net.minecraft.util.math.vector.Vector3d; public class WorldshaperRenderHandler { - private static List renderedShape; - private static BlockPos renderedPosition; + private static Supplier> renderedPositions; public static void tick() { gatherSelectedBlocks(); - if (renderedPosition == null) + if (renderedPositions == null) return; - CreateClient.outliner.showCluster("terrainZapper", renderedShape.stream() - .map(pos -> pos.add(renderedPosition)) - .collect(Collectors.toList())) + CreateClient.outliner.showCluster("terrainZapper", renderedPositions.get()) .colored(0xbfbfbf) + .disableNormals() .lineWidth(1 / 32f) .withFaceTexture(AllSpecialTextures.CHECKERED); } @@ -60,21 +59,21 @@ public class WorldshaperRenderHandler { return; } - renderedPosition = null; + renderedPositions = null; } public static void createBrushOutline(CompoundNBT tag, ClientPlayerEntity player, ItemStack zapper) { if (!tag.contains("BrushParams")) { - renderedPosition = null; + renderedPositions = null; return; } Brush brush = NBTHelper.readEnum(tag, "Brush", TerrainBrushes.class) .get(); PlacementOptions placement = NBTHelper.readEnum(tag, "Placement", PlacementOptions.class); + TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); BlockPos params = NBTUtil.readBlockPos(tag.getCompound("BrushParams")); brush.set(params.getX(), params.getY(), params.getZ()); - renderedShape = brush.getIncludedPositions(); Vector3d start = player.getPositionVec() .add(0, player.getEyeHeight(), 0); @@ -83,12 +82,14 @@ public class WorldshaperRenderHandler { BlockRayTraceResult raytrace = player.world .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, player)); if (raytrace == null || raytrace.getType() == Type.MISS) { - renderedPosition = null; + renderedPositions = null; return; } - BlockPos pos = raytrace.getPos(); - renderedPosition = pos.add(brush.getOffset(player.getLookVec(), raytrace.getFace(), placement)); + BlockPos pos = raytrace.getPos() + .add(brush.getOffset(player.getLookVec(), raytrace.getFace(), placement)); + renderedPositions = + () -> brush.addToGlobalPositions(player.world, pos, raytrace.getFace(), new ArrayList<>(), tool); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java index 5a7c70d7f..6937f719d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java @@ -6,7 +6,10 @@ import java.util.Vector; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.content.curiosities.zapper.ZapperScreen; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widgets.IconButton; +import com.simibubi.create.foundation.gui.widgets.Indicator; +import com.simibubi.create.foundation.gui.widgets.Indicator.State; import com.simibubi.create.foundation.gui.widgets.Label; import com.simibubi.create.foundation.gui.widgets.ScrollInput; import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; @@ -26,7 +29,7 @@ public class WorldshaperScreen extends ZapperScreen { protected final ITextComponent placementSection = Lang.translate("gui.terrainzapper.placement"); protected final ITextComponent toolSection = Lang.translate("gui.terrainzapper.tool"); protected final List brushOptions = - Lang.translatedOptions("gui.terrainzapper.brush", "cuboid", "sphere", "cylinder"); + Lang.translatedOptions("gui.terrainzapper.brush", "cuboid", "sphere", "cylinder", "surface", "cluster"); protected Vector toolButtons; protected Vector placementButtons; @@ -35,6 +38,11 @@ public class WorldshaperScreen extends ZapperScreen { protected Label brushLabel; protected Vector brushParams; protected Vector