mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-11-10 20:11:35 +01:00
Merge remote-tracking branch 'origin/mc1.16/dev' into mc1.16/dev
# Conflicts: # src/main/java/com/simibubi/create/CreateClient.java # src/main/java/com/simibubi/create/compat/jei/category/BlockzapperUpgradeCategory.java # src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java # src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java
This commit is contained in:
commit
fd62f2f8f4
295 changed files with 12093 additions and 9440 deletions
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -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": "다른 손에 있을 때",
|
||||
|
|
|
@ -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",
|
||||
|
|
2103
src/generated/resources/assets/create/lang/unfinished/pl_pl.json
Normal file
2103
src/generated/resources/assets/create/lang/unfinished/pl_pl.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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",
|
||||
|
|
|
@ -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": "Находясь в другой руке",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -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": "放置於副手欄時",
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"parent": "create:item/deforester/item"
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"parent": "create:item/handheld_blockzapper/item"
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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<AllBlockPartials> 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<AttachmentTypes, Map<Direction, AllBlockPartials>> PIPE_ATTACHMENTS = map();
|
||||
public static final Map<HeatLevel, AllBlockPartials> BLAZES = map();
|
||||
public static final Map<FluidTransportBehaviour.AttachmentTypes, Map<Direction, PartialModel>> PIPE_ATTACHMENTS = new HashMap<>();
|
||||
public static final Map<BlazeBurnerBlock.HeatLevel, PartialModel> 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<Direction, AllBlockPartials> map = map();
|
||||
Map<Direction, PartialModel> 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 <T, U> Map<T, U> 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<ResourceLocation, IBakedModel> 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 extends InstancedModel<?>> M getModel(RenderMaterial<?, M> mat, BlockState referenceState,
|
||||
Direction facing) {
|
||||
Supplier<MatrixStack> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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<ExtendoGripItem> EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
||||
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<WorldshaperItem> 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<MinecartContraptionItem> 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<BlockzapperItem> BLOCKZAPPER =
|
||||
REGISTRATE.item("handheld_blockzapper", BlockzapperItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> BlockzapperModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<WorldshaperItem> WORLDSHAPER =
|
||||
REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> WorldshaperModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<DeforesterItem> DEFORESTER = REGISTRATE.item("deforester", DeforesterItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> DeforesterModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
||||
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<ExtendoGripItem> EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
// Schematics
|
||||
|
||||
static {
|
||||
|
|
|
@ -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)),
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<ResourceLocation, IBakedModel> 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()
|
||||
|
|
|
@ -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<T>(name, supplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerItemSubtypes(ISubtypeRegistration registration) {
|
||||
registration.useNbtForSubtypes(AllItems.BLOCKZAPPER.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registration) {
|
||||
ALL.forEach(registration::addRecipeCategories);
|
||||
|
|
|
@ -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<BlockzapperUpgradeRecipe> {
|
||||
|
||||
public BlockzapperUpgradeCategory() {
|
||||
super(itemIcon(AllItems.BLOCKZAPPER.get()), new ScreenResourceWrapper(BLOCKZAPPER_UPGRADE_RECIPE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends BlockzapperUpgradeRecipe> 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<Ingredient> 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<ITextComponent> getTooltipStrings(BlockzapperUpgradeRecipe recipe, double mouseX, double mouseY) {
|
||||
List<ITextComponent> 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())
|
||||
.<GuiGameElement.GuiRenderBuilder>at(90, 0)
|
||||
.scale(3.5)
|
||||
.render(matrixStack);
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@ public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> extends Cre
|
|||
public ProcessingViaFanCategory(IDrawable icon) {
|
||||
this(177, icon);
|
||||
}
|
||||
|
||||
|
||||
protected ProcessingViaFanCategory(int width, IDrawable icon) {
|
||||
super(icon, emptyBackground(width, 71));
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -14,9 +14,9 @@ public class HalfShaftInstance extends SingleRotatingInstance {
|
|||
|
||||
@Override
|
||||
protected InstancedModel<RotatingData> 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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<RotatingData> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<HarvesterTileEntit
|
|||
protected void renderSafe(HarvesterTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
|
||||
int light, int overlay) {
|
||||
BlockState blockState = te.getBlockState();
|
||||
SuperByteBuffer superBuffer = AllBlockPartials.HARVESTER_BLADE.renderOn(blockState);
|
||||
SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.HARVESTER_BLADE, blockState);
|
||||
transform(te.getWorld(), blockState.get(HarvesterBlock.HORIZONTAL_FACING), superBuffer,
|
||||
te.manuallyAnimatedSpeed);
|
||||
te.manuallyAnimatedSpeed);
|
||||
superBuffer.light(light)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped()));
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped()));
|
||||
}
|
||||
|
||||
public static void renderInContraption(MovementContext context, MatrixStack ms, MatrixStack msLocal,
|
||||
IRenderTypeBuffer buffers) {
|
||||
BlockState blockState = context.state;
|
||||
Direction facing = blockState.get(HORIZONTAL_FACING);
|
||||
SuperByteBuffer superBuffer = AllBlockPartials.HARVESTER_BLADE.renderOn(blockState);
|
||||
SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.HARVESTER_BLADE, blockState);
|
||||
float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())
|
||||
? context.getAnimationSpeed()
|
||||
: 0);
|
||||
? context.getAnimationSpeed()
|
||||
: 0);
|
||||
if (context.contraption.stalled)
|
||||
speed = 0;
|
||||
|
||||
transform(context.world, facing, superBuffer, speed);
|
||||
|
||||
superBuffer.light(msLocal.peek()
|
||||
.getModel(), ContraptionRenderDispatcher.getLightOnContraption(context))
|
||||
.getModel(), ContraptionRenderDispatcher.getLightOnContraption(context))
|
||||
.renderInto(ms, buffers.getBuffer(RenderType.getCutoutMipped()));
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,9 @@ import com.simibubi.create.AllBlockPartials;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
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.core.PartialModel;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
|
@ -63,16 +65,16 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer<Por
|
|||
for (MatrixStack ms : matrixStacks)
|
||||
ms.push();
|
||||
|
||||
SuperByteBuffer middle = getMiddleForState(blockState, lit).renderOn(blockState);
|
||||
SuperByteBuffer top = getTopForState(blockState).renderOn(blockState);
|
||||
SuperByteBuffer middle = PartialBufferer.get(getMiddleForState(blockState, lit), blockState);
|
||||
SuperByteBuffer top = PartialBufferer.get(getTopForState(blockState), blockState);
|
||||
|
||||
Direction facing = blockState.get(PortableStorageInterfaceBlock.FACING);
|
||||
for (MatrixStack ms : matrixStacks)
|
||||
MatrixStacker.of(ms)
|
||||
.centre()
|
||||
.rotateY(AngleHelper.horizontalAngle(facing))
|
||||
.rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90)
|
||||
.unCentre();
|
||||
.centre()
|
||||
.rotateY(AngleHelper.horizontalAngle(facing))
|
||||
.rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90)
|
||||
.unCentre();
|
||||
|
||||
for (MatrixStack ms : matrixStacks) {
|
||||
ms.translate(0, progress / 2f, 0);
|
||||
|
@ -109,7 +111,7 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer<Por
|
|||
return psi;
|
||||
}
|
||||
|
||||
static AllBlockPartials getMiddleForState(BlockState state, boolean lit) {
|
||||
static PartialModel getMiddleForState(BlockState state, boolean lit) {
|
||||
if (AllBlocks.PORTABLE_FLUID_INTERFACE.has(state))
|
||||
return lit ? AllBlockPartials.PORTABLE_FLUID_INTERFACE_MIDDLE_POWERED
|
||||
: AllBlockPartials.PORTABLE_FLUID_INTERFACE_MIDDLE;
|
||||
|
@ -117,7 +119,7 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer<Por
|
|||
: AllBlockPartials.PORTABLE_STORAGE_INTERFACE_MIDDLE;
|
||||
}
|
||||
|
||||
static AllBlockPartials getTopForState(BlockState state) {
|
||||
static PartialModel getTopForState(BlockState state) {
|
||||
if (AllBlocks.PORTABLE_FLUID_INTERFACE.has(state))
|
||||
return AllBlockPartials.PORTABLE_FLUID_INTERFACE_TOP;
|
||||
return AllBlockPartials.PORTABLE_STORAGE_INTERFACE_TOP;
|
||||
|
|
|
@ -6,7 +6,9 @@ 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.clock.CuckooClockTileEntity.Animation;
|
||||
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.utility.AngleHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -38,18 +40,18 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer {
|
|||
IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid());
|
||||
|
||||
// Render Hands
|
||||
SuperByteBuffer hourHand = AllBlockPartials.CUCKOO_HOUR_HAND.renderOn(blockState);
|
||||
SuperByteBuffer minuteHand = AllBlockPartials.CUCKOO_MINUTE_HAND.renderOn(blockState);
|
||||
SuperByteBuffer hourHand = PartialBufferer.get(AllBlockPartials.CUCKOO_HOUR_HAND, blockState);
|
||||
SuperByteBuffer minuteHand = PartialBufferer.get(AllBlockPartials.CUCKOO_MINUTE_HAND, blockState);
|
||||
float hourAngle = clock.hourHand.get(partialTicks);
|
||||
float minuteAngle = clock.minuteHand.get(partialTicks);
|
||||
rotateHand(hourHand, hourAngle, direction).light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
.renderInto(ms, vb);
|
||||
rotateHand(minuteHand, minuteAngle, direction).light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
.renderInto(ms, vb);
|
||||
|
||||
// Doors
|
||||
SuperByteBuffer leftDoor = AllBlockPartials.CUCKOO_LEFT_DOOR.renderOn(blockState);
|
||||
SuperByteBuffer rightDoor = AllBlockPartials.CUCKOO_RIGHT_DOOR.renderOn(blockState);
|
||||
SuperByteBuffer leftDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_LEFT_DOOR, blockState);
|
||||
SuperByteBuffer rightDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_RIGHT_DOOR, blockState);
|
||||
float angle = 0;
|
||||
float offset = 0;
|
||||
|
||||
|
@ -78,13 +80,13 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer {
|
|||
// Figure
|
||||
if (clock.animationType != Animation.NONE) {
|
||||
offset = -(angle / 135) * 1 / 2f + 10 / 16f;
|
||||
PartialModel partialModel = (clock.animationType == Animation.PIG ? AllBlockPartials.CUCKOO_PIG : AllBlockPartials.CUCKOO_CREEPER);
|
||||
SuperByteBuffer figure =
|
||||
(clock.animationType == Animation.PIG ? AllBlockPartials.CUCKOO_PIG : AllBlockPartials.CUCKOO_CREEPER)
|
||||
.renderOn(blockState);
|
||||
PartialBufferer.get(partialModel, blockState);
|
||||
figure.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(direction.rotateYCCW())));
|
||||
figure.translate(offset, 0, 0);
|
||||
figure.light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
.renderInto(ms, vb);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -94,10 +96,10 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer {
|
|||
return transform(AllBlockPartials.SHAFT_HALF, te);
|
||||
}
|
||||
|
||||
private SuperByteBuffer transform(AllBlockPartials partial, KineticTileEntity te) {
|
||||
return partial.renderOnDirectionalSouth(te.getBlockState(), te.getBlockState()
|
||||
.get(CuckooClockBlock.HORIZONTAL_FACING)
|
||||
.getOpposite());
|
||||
private SuperByteBuffer transform(PartialModel partial, KineticTileEntity te) {
|
||||
return PartialBufferer.getFacing(partial, te.getBlockState(), te.getBlockState()
|
||||
.get(CuckooClockBlock.HORIZONTAL_FACING)
|
||||
.getOpposite());
|
||||
}
|
||||
|
||||
private SuperByteBuffer rotateHand(SuperByteBuffer buffer, float angle, Direction facing) {
|
||||
|
|
|
@ -9,8 +9,10 @@ import com.simibubi.create.AllBlockPartials;
|
|||
import com.simibubi.create.AllSpriteShifts;
|
||||
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase;
|
||||
import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems;
|
||||
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.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
|
@ -155,7 +157,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
|
|||
IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid());
|
||||
|
||||
if (!FastRenderDispatcher.available(te.getWorld())) {
|
||||
SuperByteBuffer superBuffer = AllBlockPartials.SHAFTLESS_COGWHEEL.renderOn(blockState);
|
||||
SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState);
|
||||
standardKineticRotationTransform(superBuffer, te, light);
|
||||
superBuffer.rotateCentered(Direction.UP, (float) (blockState.get(HORIZONTAL_FACING).getAxis() != Direction.Axis.X ? 0 : Math.PI / 2));
|
||||
superBuffer.rotateCentered(Direction.EAST, (float) (Math.PI / 2));
|
||||
|
@ -180,7 +182,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
|
|||
if (te.phase == Phase.EXPORTING) {
|
||||
int textureIndex = (int) ((te.getCountDownSpeed() / 128f * AnimationTickHolder.getTicks()));
|
||||
beltBuffer.shiftUVtoSheet(AllSpriteShifts.CRAFTER_THINGIES, (textureIndex % 4) / 4f, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
beltBuffer.renderInto(ms, vb);
|
||||
beltFrameBuffer.renderInto(ms, vb);
|
||||
|
@ -193,11 +195,11 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
|
|||
|
||||
}
|
||||
|
||||
private SuperByteBuffer renderAndTransform(MechanicalCrafterTileEntity te, AllBlockPartials renderBlock,
|
||||
private SuperByteBuffer renderAndTransform(MechanicalCrafterTileEntity te, PartialModel renderBlock,
|
||||
BlockState crafterState, BlockPos pos) {
|
||||
SuperByteBuffer buffer = renderBlock.renderOn(crafterState);
|
||||
SuperByteBuffer buffer = PartialBufferer.get(renderBlock, crafterState);
|
||||
float xRot = crafterState.get(MechanicalCrafterBlock.POINTING)
|
||||
.getXRotation();
|
||||
.getXRotation();
|
||||
float yRot = AngleHelper.horizontalAngle(crafterState.get(HORIZONTAL_FACING));
|
||||
buffer.rotateCentered(Direction.UP, (float) ((yRot + 90) / 180 * Math.PI));
|
||||
buffer.rotateCentered(Direction.EAST, (float) ((xRot) / 180 * Math.PI));
|
||||
|
|
|
@ -11,6 +11,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput;
|
||||
import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems;
|
||||
|
@ -31,6 +32,8 @@ import net.minecraft.particles.ItemParticleData;
|
|||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.SoundEvents;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
|
@ -67,7 +70,12 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
|
|||
return stack;
|
||||
if (te.covered)
|
||||
return stack;
|
||||
return super.insertItem(slot, stack, simulate);
|
||||
ItemStack insertItem = super.insertItem(slot, stack, simulate);
|
||||
if (insertItem.getCount() != stack.getCount() && !simulate)
|
||||
te.getWorld()
|
||||
.playSound(null, te.getPos(), SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f,
|
||||
.5f);
|
||||
return insertItem;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -173,10 +181,12 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
|
|||
groupedItemsBeforeCraft = before;
|
||||
if (phaseBefore == Phase.EXPORTING && phase == Phase.WAITING) {
|
||||
Direction facing = getBlockState().get(MechanicalCrafterBlock.HORIZONTAL_FACING);
|
||||
Vector3d vec = Vector3d.of(facing.getDirectionVec()).scale(.75)
|
||||
Vector3d vec = Vector3d.of(facing.getDirectionVec())
|
||||
.scale(.75)
|
||||
.add(VecHelper.getCenterOf(pos));
|
||||
Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(getBlockState());
|
||||
vec = vec.add(Vector3d.of(targetDirection.getDirectionVec()).scale(1));
|
||||
vec = vec.add(Vector3d.of(targetDirection.getDirectionVec())
|
||||
.scale(1));
|
||||
world.addParticle(ParticleTypes.CRIT, vec.x, vec.y, vec.z, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
@ -275,6 +285,10 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
|
|||
Pointing pointing = getBlockState().get(MechanicalCrafterBlock.POINTING);
|
||||
groupedItems.mergeOnto(targetingCrafter.groupedItems, pointing);
|
||||
groupedItems = new GroupedItems();
|
||||
|
||||
float pitch = targetingCrafter.groupedItems.grid.size() * 1/16f + .5f;
|
||||
AllSoundEvents.CRAFTER_CLICK.playOnServer(world, pos, 1, pitch);
|
||||
|
||||
phase = Phase.WAITING;
|
||||
countDown = 0;
|
||||
sendData();
|
||||
|
@ -319,7 +333,14 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
|
|||
}
|
||||
}
|
||||
|
||||
int prev = countDown;
|
||||
countDown -= getCountDownSpeed();
|
||||
|
||||
if (countDown < 1000 && prev >= 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));
|
||||
|
|
|
@ -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<HandC
|
|||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||
return AllShapes.CRANK.get(state.get(FACING));
|
||||
}
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public AllBlockPartials getRenderedHandle() {
|
||||
public PartialModel getRenderedHandle() {
|
||||
return AllBlockPartials.HAND_CRANK_HANDLE;
|
||||
}
|
||||
|
||||
|
||||
public int getRotationSpeed() {
|
||||
return 32;
|
||||
}
|
||||
|
@ -117,7 +118,7 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE<HandC
|
|||
public Class<HandCrankTileEntity> getTileEntityClass() {
|
||||
return HandCrankTileEntity.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) {
|
||||
return false;
|
||||
|
|
|
@ -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<ModelData> model = renderedHandle.getModel(getTransformMaterial(), blockState, facing.getOpposite());
|
||||
crank = model.createInstance();
|
||||
facing = blockState.get(BlockStateProperties.FACING);
|
||||
Direction opposite = facing.getOpposite();
|
||||
InstancedModel<ModelData> model = getTransformMaterial().getModel(renderedHandle, blockState, opposite);
|
||||
crank = model.createInstance();
|
||||
|
||||
rotateCrank();
|
||||
}
|
||||
rotateCrank();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beginFrame() {
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<DeployerTileEntity>
|
|||
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<DeployerTileEntity>
|
|||
|
||||
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<DeployerTileEntity>
|
|||
.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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -19,17 +19,17 @@ public class FanInstance extends KineticTileInstance<EncasedFanTileEntity> {
|
|||
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;
|
||||
|
|
|
@ -46,24 +46,24 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> 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<?, InstancedModel<ModelData>> mat = getTransformMaterial();
|
||||
RenderMaterial<?, InstancedModel<ModelData>> 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<FlywheelTileEntity> im
|
|||
}
|
||||
|
||||
protected InstancedModel<RotatingData> 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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<EngineTileEntity> {
|
|||
return;
|
||||
|
||||
EngineBlock engineBlock = (EngineBlock) block;
|
||||
AllBlockPartials frame = engineBlock.getFrameModel();
|
||||
PartialModel frame = engineBlock.getFrameModel();
|
||||
|
||||
Direction facing = blockState.get(BlockStateProperties.HORIZONTAL_FACING);
|
||||
|
||||
|
|
|
@ -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<T extends EngineTileEntity> 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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<FurnaceEngine
|
|||
}
|
||||
|
||||
@Override
|
||||
public AllBlockPartials getFrameModel() {
|
||||
public PartialModel getFrameModel() {
|
||||
return AllBlockPartials.FURNACE_GENERATOR_FRAME;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,5 +18,5 @@ public class MillstoneRenderer extends KineticTileEntityRenderer {
|
|||
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
|
||||
return CreateClient.bufferCache.renderPartial(AllBlockPartials.MILLSTONE_COG, te.getBlockState());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,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;
|
||||
|
@ -40,7 +41,7 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer {
|
|||
|
||||
IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid());
|
||||
|
||||
SuperByteBuffer superBuffer = AllBlockPartials.SHAFTLESS_COGWHEEL.renderOn(blockState);
|
||||
SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState);
|
||||
standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb);
|
||||
|
||||
int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, pos);
|
||||
|
@ -49,16 +50,16 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer {
|
|||
float time = AnimationTickHolder.getRenderTime(te.getWorld());
|
||||
float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI;
|
||||
|
||||
SuperByteBuffer poleRender = AllBlockPartials.MECHANICAL_MIXER_POLE.renderOn(blockState);
|
||||
SuperByteBuffer poleRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_POLE, blockState);
|
||||
poleRender.translate(0, -renderedHeadOffset, 0)
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
|
||||
SuperByteBuffer headRender = AllBlockPartials.MECHANICAL_MIXER_HEAD.renderOn(blockState);
|
||||
SuperByteBuffer headRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState);
|
||||
headRender.rotateCentered(Direction.UP, angle)
|
||||
.translate(0, -renderedHeadOffset, 0)
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
.translate(0, -renderedHeadOffset, 0)
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, vb);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.motor;
|
|||
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 net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
|
@ -15,7 +16,7 @@ public class CreativeMotorRenderer extends KineticTileEntityRenderer {
|
|||
|
||||
@Override
|
||||
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
|
||||
return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouth(te.getBlockState());
|
||||
return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
package com.simibubi.create.content.contraptions.components.press;
|
||||
|
||||
import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_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;
|
||||
|
||||
|
@ -37,10 +40,10 @@ public class MechanicalPressRenderer extends KineticTileEntityRenderer {
|
|||
int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, pos);
|
||||
float renderedHeadOffset = ((MechanicalPressTileEntity) te).getRenderedHeadOffset(partialTicks);
|
||||
|
||||
SuperByteBuffer headRender = AllBlockPartials.MECHANICAL_PRESS_HEAD.renderOnHorizontal(blockState);
|
||||
SuperByteBuffer headRender = PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState, blockState.get(HORIZONTAL_FACING));
|
||||
headRender.translate(0, -renderedHeadOffset, 0)
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
.light(packedLightmapCoords)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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;
|
||||
import net.minecraft.util.Rotation;
|
||||
|
||||
public class SawInstance extends SingleRotatingInstance {
|
||||
|
@ -22,7 +23,8 @@ public class SawInstance extends SingleRotatingInstance {
|
|||
protected InstancedModel<RotatingData> 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());
|
||||
}
|
||||
|
|
|
@ -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<SawTileEntity> {
|
|||
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<SawTileEntity> {
|
|||
|
||||
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<SawTileEntity> {
|
|||
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<SawTileEntity> {
|
|||
|
||||
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) {
|
||||
|
|
|
@ -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<B extends KineticTileEntity & IBearingTileEntity> e
|
|||
|
||||
blockOrientation = getBlockStateOrientation(facing);
|
||||
|
||||
AllBlockPartials top =
|
||||
PartialModel top =
|
||||
bearing.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP;
|
||||
|
||||
topInstance = getOrientedMaterial().getModel(top, blockState).createInstance();
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<StickerTileEntity> {
|
|||
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<StickerTileEntity> {
|
|||
|
||||
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);
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class HosePulleyInstance extends AbstractPulleyInstance {
|
|||
}
|
||||
|
||||
protected InstancedModel<OrientedData> getCoilModel() {
|
||||
return AllBlockPartials.HOSE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout);
|
||||
return getOrientedMaterial().getModel(AllBlockPartials.HOSE_COIL, blockState, rotatingAbout);
|
||||
}
|
||||
|
||||
protected InstancedModel<OrientedData> getHalfRopeModel() {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ public class RopePulleyInstance extends AbstractPulleyInstance {
|
|||
}
|
||||
|
||||
protected InstancedModel<OrientedData> getCoilModel() {
|
||||
return AllBlockPartials.ROPE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout);
|
||||
return getOrientedMaterial().getModel(AllBlockPartials.ROPE_COIL, blockState, rotatingAbout);
|
||||
}
|
||||
|
||||
protected InstancedModel<OrientedData> getHalfRopeModel() {
|
||||
|
|
|
@ -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<RenderedContraption> renderers = new Int2ObjectOpenHashMap<>();
|
||||
public static final Compartment<Pair<Contraption, Integer>> CONTRAPTION = new Compartment<>();
|
||||
protected static PlacementSimulationWorld renderWorld;
|
||||
public static final Int2ObjectMap<RenderedContraption> renderers = new Int2ObjectOpenHashMap<>();
|
||||
public static final Compartment<Pair<Contraption, Integer>> 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<RenderType> blockLayers = RenderType.getBlockLayers();
|
||||
|
||||
public static void renderStructure(World world, Contraption c, MatrixStack ms, MatrixStack msLocal,
|
||||
IRenderTypeBuffer buffer) {
|
||||
SuperByteBufferCache bufferCache = CreateClient.bufferCache;
|
||||
List<RenderType> blockLayers = RenderType.getBlockLayers();
|
||||
buffer.getBuffer(RenderType.getSolid());
|
||||
for (int i = 0; i < blockLayers.size(); i++) {
|
||||
RenderType layer = blockLayers.get(i);
|
||||
Pair<Contraption, Integer> 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<Contraption, Integer> 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<Template.BlockInfo, MovementContext> 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<Template.BlockInfo, MovementContext> 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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<AbstractMinecartEntity> carts) {
|
||||
ClientWorld world = Minecraft.getInstance().world;
|
||||
|
||||
|
||||
if (carts.getFirst() == null || carts.getSecond() == null)
|
||||
return;
|
||||
|
||||
|
||||
Couple<Integer> 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<CartEndpoint> 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) -> {
|
||||
|
|
|
@ -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<RotatingData> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<SpoutTileEntity> {
|
|||
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<SpoutTileEntity> {
|
|||
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();
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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<ItemStack> POTION_ITEMS = new ArrayList<>();
|
||||
public static List<Item> FILLED_BUCKETS = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
public static final ReloadListener<Object> LISTENER = new ReloadListener<Object>() {
|
||||
|
||||
@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();
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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<Object> LISTENER = new ReloadListener<Object>() {
|
||||
|
||||
@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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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<IBakedModel> {
|
||||
|
||||
public GogglesModel(IBakedModel template) {
|
||||
super(template);
|
||||
|
@ -21,4 +21,4 @@ public class GogglesModel extends WrappedBakedModel {
|
|||
return super.handlePerspective(cameraTransformType, mat);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<BlazeBurnerTileE
|
|||
float renderTick = AnimationTickHolder.getRenderTime(te.getWorld()) + (te.hashCode() % 13) * 16f;
|
||||
float offset = (MathHelper.sin((float) ((renderTick / 16f) % (2 * Math.PI))) + .5f) / 16f;
|
||||
|
||||
AllBlockPartials blazeModel = AllBlockPartials.BLAZES.get(heatLevel);
|
||||
SuperByteBuffer blazeBuffer = blazeModel.renderOn(te.getBlockState());
|
||||
PartialModel blazeModel = AllBlockPartials.BLAZES.get(heatLevel);
|
||||
SuperByteBuffer blazeBuffer = PartialBufferer.get(blazeModel, te.getBlockState());
|
||||
blazeBuffer.rotateCentered(Direction.UP, AngleHelper.rad(te.headAngle.getValue(partialTicks)));
|
||||
blazeBuffer.translate(0, offset, 0);
|
||||
blazeBuffer.light(0xF000F0)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.mojang.blaze3d.vertex.IVertexBuilder;
|
|||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.CreateClient;
|
||||
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.tileEntity.renderer.SmartTileEntityRenderer;
|
||||
|
@ -43,10 +44,10 @@ public class SpeedControllerRenderer extends SmartTileEntityRenderer<SpeedContro
|
|||
BlockState blockState = tileEntityIn.getBlockState();
|
||||
boolean alongX = blockState.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X;
|
||||
|
||||
SuperByteBuffer bracket = AllBlockPartials.SPEED_CONTROLLER_BRACKET.renderOn(blockState);
|
||||
SuperByteBuffer bracket = PartialBufferer.get(AllBlockPartials.SPEED_CONTROLLER_BRACKET, blockState);
|
||||
bracket.translate(0, 1, 0);
|
||||
bracket.rotateCentered(Direction.UP,
|
||||
(float) (alongX ? Math.PI : Math.PI / 2));
|
||||
(float) (alongX ? Math.PI : Math.PI / 2));
|
||||
bracket.light(WorldRenderer.getLightmapCoordinates(world, pos.up()));
|
||||
bracket.renderInto(ms, builder);
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.base.KineticRenderMaterials;
|
|||
import com.simibubi.create.content.contraptions.base.KineticTileInstance;
|
||||
import com.simibubi.create.content.contraptions.base.RotatingData;
|
||||
import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
|
||||
import com.simibubi.create.foundation.render.backend.core.PartialModel;
|
||||
import com.simibubi.create.foundation.render.backend.instancing.InstanceData;
|
||||
import com.simibubi.create.foundation.render.backend.instancing.InstancedModel;
|
||||
import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer;
|
||||
|
@ -57,7 +58,7 @@ public class BeltInstance extends KineticTileInstance<BeltTileEntity> {
|
|||
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<BeltData> beltModel = modelManager.getMaterial(KineticRenderMaterials.BELTS).getModel(beltPartial, blockState);
|
||||
|
|
|
@ -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<IBakedModel> {
|
|||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, Random rand, IModelData extraData) {
|
||||
List<BakedQuad> quads = new ArrayList<>(super.getQuads(state, side, rand, extraData));
|
||||
List<BakedQuad> 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<IBakedModel> {
|
|||
|
||||
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<IBakedModel> {
|
|||
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);
|
||||
|
|
|
@ -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<BeltTileEntity> {
|
|||
|
||||
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<BeltTileEntity> {
|
|||
}
|
||||
|
||||
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<MatrixStack> 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<BeltTileEntity> {
|
|||
: 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;
|
||||
|
|
|
@ -495,7 +495,7 @@ public class BeltTileEntity extends KineticTileEntity implements LightUpdateList
|
|||
return empty;
|
||||
}
|
||||
|
||||
public static ModelProperty<CasingType> CASING_PROPERTY = new ModelProperty<>();
|
||||
public static final ModelProperty<CasingType> CASING_PROPERTY = new ModelProperty<>();
|
||||
|
||||
@Override
|
||||
public IModelData getModelData() {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue