mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-20 17:15:34 +01:00
Merge branch 'mc1.18/dev' into fr-translate
This commit is contained in:
commit
744967a0af
52 changed files with 16033 additions and 11550 deletions
|
@ -11,7 +11,7 @@
|
|||
|
||||
<p>Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration and Aesthetic Automation.</p>
|
||||
<p>The added elements of tech are designed to leave as many design choices to the player as possible. With Create, the game isn't played inside a bunch of UIs, it challenges you to setup contraptions of animated components working together in many possible arrangements.</p>
|
||||
<p>Create's visual in-game documentation called 'Ponder' will guide you though all added mechanics and gadgets.</p>
|
||||
<p>Create's visual in-game documentation called 'Ponder' will guide you through all added mechanics and gadgets.</p>
|
||||
<p> </p>
|
||||
<p align="center"><a href="https://github.com/Creators-of-Create/Create/issues"><img src="https://i.imgur.com/qPmjSXy.png" width="160" /></a> <a href="https://www.youtube.com/channel/UCrKV2QTuyGcv4E3eSJpBiYA/playlists"><img src="https://i.imgur.com/L1bU9mr.png" width="160" /></a><a href="https://discord.gg/hmaD7Se"><img src="https://i.imgur.com/uf6V9ZX.png" width="160" /></a> <a href="https://github.com/Creators-of-Create/Create/wiki/Supporting-the-Project"><img src="https://i.imgur.com/fHQ45KR.png" width="227" /></a></p>
|
||||
|
||||
|
|
|
@ -209,6 +209,15 @@ jar {
|
|||
}
|
||||
}
|
||||
|
||||
task jarJarRelease {
|
||||
doLast {
|
||||
tasks.jarJar {
|
||||
classifier = ''
|
||||
}
|
||||
}
|
||||
finalizedBy tasks.jarJar
|
||||
}
|
||||
|
||||
java {
|
||||
withSourcesJar()
|
||||
withJavadocJar()
|
||||
|
|
|
@ -287,7 +287,7 @@ bff90a8d674a839b13fd9cd1f78bf3d0ad9fad4f assets/create/blockstates/limestone_pil
|
|||
3b3250d6e209403a93d025604a8081087965016e assets/create/blockstates/mechanical_arm.json
|
||||
ddcf4bb281e046fbb1026b8f46a2cf12448598df assets/create/blockstates/mechanical_bearing.json
|
||||
5586beef2d9183dc34d8e8d2723620c0569592ae assets/create/blockstates/mechanical_crafter.json
|
||||
044db7d50e19008bae8bf3325eac2ed0eb1ea6d2 assets/create/blockstates/mechanical_drill.json
|
||||
0cfa8a4a37f4142fa07e04666e0aef080c517053 assets/create/blockstates/mechanical_drill.json
|
||||
0fb175e5260ec60e130e589d682a4d3301d7364e assets/create/blockstates/mechanical_harvester.json
|
||||
d9afcfa27c42df5fd54a7b783acb0eb45ddf5aa5 assets/create/blockstates/mechanical_mixer.json
|
||||
da612a05f94dc19e07e250efc35a7b2839d2ee76 assets/create/blockstates/mechanical_piston.json
|
||||
|
@ -559,22 +559,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
|
|||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json
|
||||
f9fcf3163210806f6cea642b13d36632f3f3c533 assets/create/lang/en_us.json
|
||||
fcf6c0723f89de67ab5f30e01305522b236bd824 assets/create/lang/unfinished/de_de.json
|
||||
9083ade329d6b2c7469339f2c7ab54d7866f90ff assets/create/lang/unfinished/es_cl.json
|
||||
db21f76f89573602c77b988371453013bac530cb assets/create/lang/unfinished/es_es.json
|
||||
b1ed4fc7258f6fb93127e84ed4364f7cc224be2b assets/create/lang/unfinished/fr_fr.json
|
||||
7cf94dae2536d27f32cfe7aad3a9a9eb7b9978ac assets/create/lang/unfinished/it_it.json
|
||||
b8252343025f1555ae717e03b7503bfd9c1069f7 assets/create/lang/unfinished/ja_jp.json
|
||||
bcc01ee88c1877e46f280c967d92b506d328b08d assets/create/lang/unfinished/ko_kr.json
|
||||
4fd2bf884f18bf833d9819aed2f6fe83cc8ea9a6 assets/create/lang/unfinished/nl_nl.json
|
||||
e32d5b48ca498b97e036f5cdf0f3b4192b478adf assets/create/lang/unfinished/pl_pl.json
|
||||
f9d8fdca30725e5e340f7c2727eb3da197081a25 assets/create/lang/unfinished/pt_br.json
|
||||
f5648cf550a440d2c60dcb7f8b4605d89f0f9713 assets/create/lang/unfinished/pt_pt.json
|
||||
6f283e7589df6c2293be271846535887bf5a288c assets/create/lang/unfinished/ro_ro.json
|
||||
119f9953874f07d016fd9602510221de0cd1730b assets/create/lang/unfinished/ru_ru.json
|
||||
6a5ab805701021b67b4585f0ae014e4b509d8c45 assets/create/lang/unfinished/zh_cn.json
|
||||
a6eff86622e24eda8f490587734c19526d0c6ecf assets/create/lang/unfinished/zh_tw.json
|
||||
e7f1b8936615740097ac1104733b4a07e7778653 assets/create/lang/en_us.json
|
||||
c7648afaddb071fa781b341ada4cc246efd13ebe assets/create/lang/unfinished/de_de.json
|
||||
be902a94314922103460c7f299aa66aacf0b9ab6 assets/create/lang/unfinished/es_cl.json
|
||||
d21e553df8120d658acf1de99e2fb1ed38133659 assets/create/lang/unfinished/es_es.json
|
||||
d358cfb91006a018d80906c983a96df1564ae032 assets/create/lang/unfinished/fr_fr.json
|
||||
f1356bd4507e49751126446bdc607f29c1dd80c3 assets/create/lang/unfinished/it_it.json
|
||||
c3a30c7f396e79039c6d16f2787bb68ebaa8c3ac assets/create/lang/unfinished/ja_jp.json
|
||||
711c41782772ab9d0de06d76c70600ba37412542 assets/create/lang/unfinished/ko_kr.json
|
||||
022e7d040a6fa1ab11edeb9dc0c4dbb530a85564 assets/create/lang/unfinished/nl_nl.json
|
||||
1b8fe7bbf2a312d3cbc1680116dab2b620d08c4d assets/create/lang/unfinished/pl_pl.json
|
||||
90fd5500247f22dbed498b350e6331b1d5dadd81 assets/create/lang/unfinished/pt_br.json
|
||||
4ebb68c5eb6964ca5081f74416d8a624fdeaef60 assets/create/lang/unfinished/pt_pt.json
|
||||
b7f314a1ac2595651ec4578add55525387c734db assets/create/lang/unfinished/ro_ro.json
|
||||
7b72045f7f9de2f80ba78eb9caad7d081e7ee38f assets/create/lang/unfinished/ru_ru.json
|
||||
2ef4e37bf007e3cf6e5b14819048cb80e6d84628 assets/create/lang/unfinished/zh_cn.json
|
||||
ebc88d8b1f6115b6c3303ec4357c565049888a96 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
|
||||
|
@ -5649,6 +5649,7 @@ c98ffdc2780c2a7690c590f46f014aeee7b0b504 data/create/tags/items/create_ingots.js
|
|||
4480f211f4a37bfee193eba945bc9f5a8d2c6e34 data/create/tags/items/crushed_ores.json
|
||||
67385d5198d0796ec8f0d2c6ae144c672f4317a1 data/create/tags/items/modded_stripped_logs.json
|
||||
27a1074a88a7b939c811341086afece325ed724c data/create/tags/items/modded_stripped_wood.json
|
||||
7973972edb524683ef365bc103fcfcde0858a854 data/create/tags/items/pressurized_air_sources.json
|
||||
bce28787b0271382842823d04a977912a88b01c2 data/create/tags/items/sandpaper.json
|
||||
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json
|
||||
0f4276a6b7da5f4dee8909802e6717a4c97f0555 data/create/tags/items/sleepers.json
|
||||
|
|
|
@ -1,27 +1,53 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down": {
|
||||
"facing=down,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up": {
|
||||
"facing=up,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block"
|
||||
},
|
||||
"facing=north": {
|
||||
"facing=north,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south": {
|
||||
"facing=south,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west": {
|
||||
"facing=west,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east": {
|
||||
"facing=east,waterlogged=false": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block"
|
||||
},
|
||||
"facing=north,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,waterlogged=true": {
|
||||
"model": "create:block/mechanical_drill/block",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
|
|
|
@ -1365,6 +1365,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "Fans pull from Above",
|
||||
"create.tooltip.chute.fans_pull_down": "Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "Contains: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "Deployer Information",
|
||||
"create.tooltip.deployer.using": "Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "Currently distributing:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "Right-Click to retrieve",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 980",
|
||||
"_": "Missing Localizations: 984",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "Ventiladores tirando desde arriba",
|
||||
"create.tooltip.chute.fans_pull_down": "Ventiladores tirando desde abajo",
|
||||
"create.tooltip.chute.contains": "Contiene: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
|
||||
"_": "Missing Localizations: 1768",
|
||||
|
||||
"_": "->------------------------] Éléments de jeu [------------------------<-",
|
||||
|
@ -1366,6 +1367,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 646",
|
||||
"_": "Missing Localizations: 650",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます",
|
||||
"create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます",
|
||||
"create.tooltip.chute.contains": "内容物: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "配布中",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "右クリックで取り出し",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2479",
|
||||
"_": "Missing Localizations: 2483",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1513",
|
||||
"_": "Missing Localizations: 1327",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
|||
"block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito",
|
||||
"block.create.andesite_encased_shaft": "Eixo revestido com latão",
|
||||
"block.create.andesite_funnel": "Funil de Andesito",
|
||||
"block.create.andesite_ladder": "UNLOCALIZED: Andesite Ladder",
|
||||
"block.create.andesite_ladder": "Escada de mão de andesito",
|
||||
"block.create.andesite_pillar": "Pilar de andesito",
|
||||
"block.create.andesite_tunnel": "Tunel de Andesito",
|
||||
"block.create.asurine": "Asurino",
|
||||
|
@ -40,7 +40,7 @@
|
|||
"block.create.brass_encased_large_cogwheel": "Roda dentada grande revestida com latão",
|
||||
"block.create.brass_encased_shaft": "Eixo Revestido com Latão",
|
||||
"block.create.brass_funnel": "Funil de Latão",
|
||||
"block.create.brass_ladder": "UNLOCALIZED: Brass Ladder",
|
||||
"block.create.brass_ladder": "Escada de mão de latão",
|
||||
"block.create.brass_tunnel": "Tunel de Latão",
|
||||
"block.create.brown_nixie_tube": "Tubo de nixie marrom",
|
||||
"block.create.brown_sail": "Vela marrom",
|
||||
|
@ -56,10 +56,10 @@
|
|||
"block.create.cogwheel": "Roda Dentada",
|
||||
"block.create.content_observer": "Observador de Conteúdo",
|
||||
"block.create.controller_rail": "Trilho Controlador",
|
||||
"block.create.controls": "UNLOCALIZED: Train Controls",
|
||||
"block.create.controls": "Controles do trem",
|
||||
"block.create.copper_backtank": "Tanque Traseiro de Cobre",
|
||||
"block.create.copper_casing": "Revestimento de Cobre",
|
||||
"block.create.copper_ladder": "UNLOCALIZED: Copper Ladder",
|
||||
"block.create.copper_ladder": "Escada de mão de cobre",
|
||||
"block.create.copper_shingle_slab": "Laje de telha de cobre",
|
||||
"block.create.copper_shingle_stairs": "Escada de telha de cobre",
|
||||
"block.create.copper_shingles": "Telha de cobre",
|
||||
|
@ -201,8 +201,8 @@
|
|||
"block.create.deployer": "Implantador",
|
||||
"block.create.depot": "Depósito",
|
||||
"block.create.diorite_pillar": "Pilar de diorito",
|
||||
"block.create.display_board": "UNLOCALIZED: Display Board",
|
||||
"block.create.display_link": "UNLOCALIZED: Display Link",
|
||||
"block.create.display_board": "Placa de exibição",
|
||||
"block.create.display_link": "Conexão de placa de exibição",
|
||||
"block.create.dripstone_pillar": "Pilar de espeleotema",
|
||||
"block.create.encased_chain_drive": "Correia Revestida",
|
||||
"block.create.encased_fan": "Ventilador Revestida",
|
||||
|
@ -213,15 +213,15 @@
|
|||
"block.create.exposed_copper_tile_slab": "Laje de ladrilho de cobre exposta",
|
||||
"block.create.exposed_copper_tile_stairs": "Escada de ladrilho de cobre exposta",
|
||||
"block.create.exposed_copper_tiles": "Ladrilho de cobre exposto",
|
||||
"block.create.fake_track": "UNLOCALIZED: Track Marker for Maps",
|
||||
"block.create.fake_track": "Marcador de trilhos para mapa",
|
||||
"block.create.fluid_pipe": "Cano de Fluido",
|
||||
"block.create.fluid_tank": "Tanque de fluido",
|
||||
"block.create.fluid_valve": "Válvula",
|
||||
"block.create.flywheel": "Volante de inércia",
|
||||
"block.create.framed_glass": "Vidro emoldurado",
|
||||
"block.create.framed_glass_door": "UNLOCALIZED: Framed Glass Door",
|
||||
"block.create.framed_glass_door": "Porta de vidro emoldurado",
|
||||
"block.create.framed_glass_pane": "Vidraça emoldurada",
|
||||
"block.create.framed_glass_trapdoor": "UNLOCALIZED: Framed Glass Trapdoor",
|
||||
"block.create.framed_glass_trapdoor": "Alçapão de vidro emoldurado",
|
||||
"block.create.gantry_carriage": "Carruagem de Pórtico",
|
||||
"block.create.gantry_shaft": "Eixo de Pórtico",
|
||||
"block.create.gearbox": "Caixa de Transmissão",
|
||||
|
@ -248,7 +248,7 @@
|
|||
"block.create.item_vault": "Cofre de itens",
|
||||
"block.create.jungle_window": "Janela da selva",
|
||||
"block.create.jungle_window_pane": "Vidraça da selva",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_bogey": "Roda grande do trem",
|
||||
"block.create.large_cogwheel": "Roda dentada grande",
|
||||
"block.create.layered_andesite": "Andesito estratificado",
|
||||
"block.create.layered_asurine": "Asurino estratificado",
|
||||
|
@ -302,8 +302,8 @@
|
|||
"block.create.mechanical_pump": "Bomba Mecânica",
|
||||
"block.create.mechanical_saw": "Serra Mecânica",
|
||||
"block.create.metal_bracket": "Suporte de metal",
|
||||
"block.create.metal_girder": "UNLOCALIZED: Metal Girder",
|
||||
"block.create.metal_girder_encased_shaft": "UNLOCALIZED: Metal Girder Encased Shaft",
|
||||
"block.create.metal_girder": "Viga de metal",
|
||||
"block.create.metal_girder_encased_shaft": "Eixo revestido com viga de metal",
|
||||
"block.create.millstone": "Pedra de Moer",
|
||||
"block.create.minecart_anchor": "Ancóra de carrinho de Mina",
|
||||
"block.create.mysterious_cuckoo_clock": "Relógio cuckoo",
|
||||
|
@ -332,7 +332,7 @@
|
|||
"block.create.pink_toolbox": "Caixa de ferramentas rosa",
|
||||
"block.create.pink_valve_handle": "Válvula rosa",
|
||||
"block.create.piston_extension_pole": "Vara de Extensão do Pistão",
|
||||
"block.create.placard": "UNLOCALIZED: Placard",
|
||||
"block.create.placard": "Cartaz",
|
||||
"block.create.polished_cut_andesite": "Andesito lapidado polido",
|
||||
"block.create.polished_cut_andesite_slab": "Laje de andesito lapidado polido",
|
||||
"block.create.polished_cut_andesite_stairs": "Escada de andesito lapidado polido",
|
||||
|
@ -392,9 +392,9 @@
|
|||
"block.create.portable_fluid_interface": "Interface de fluidos portátil",
|
||||
"block.create.portable_storage_interface": "Interface de armazenamento portátil",
|
||||
"block.create.powered_latch": "Trava de redstone",
|
||||
"block.create.powered_shaft": "UNLOCALIZED: Powered Shaft",
|
||||
"block.create.powered_toggle_latch": "Trave de alternância de redstone",
|
||||
"block.create.pulley_magnet": "Imã da Polia",
|
||||
"block.create.powered_shaft": "Eixo energizado",
|
||||
"block.create.powered_toggle_latch": "Trava de alternância de redstone",
|
||||
"block.create.pulley_magnet": "Ímã da Polia",
|
||||
"block.create.pulse_extender": "Extensor de pulso",
|
||||
"block.create.pulse_repeater": "Repetidor de Pulso",
|
||||
"block.create.purple_nixie_tube": "Tubo nixie roxo",
|
||||
|
@ -403,7 +403,7 @@
|
|||
"block.create.purple_toolbox": "Caixa de ferramentas roxa",
|
||||
"block.create.purple_valve_handle": "válvula roxa",
|
||||
"block.create.radial_chassis": "Chassis Radial",
|
||||
"block.create.railway_casing": "UNLOCALIZED: Train Casing",
|
||||
"block.create.railway_casing": "Revestimento de trem",
|
||||
"block.create.raw_zinc_block": "Bloco de zinco bruto",
|
||||
"block.create.red_nixie_tube": "Tubo nixie vermelho",
|
||||
"block.create.red_sail": "Vela vermelha",
|
||||
|
@ -415,11 +415,11 @@
|
|||
"block.create.refined_radiance_casing": "Revestimento Brilhante",
|
||||
"block.create.rope": "Corda",
|
||||
"block.create.rope_pulley": "Polia",
|
||||
"block.create.rose_quartz_block": "UNLOCALIZED: Block of Rose Quartz",
|
||||
"block.create.rose_quartz_lamp": "UNLOCALIZED: Rose Quartz Lamp",
|
||||
"block.create.rose_quartz_tiles": "UNLOCALIZED: Rose Quartz Tiles",
|
||||
"block.create.rotation_speed_controller": "Controlador de Velocidade Rotacional",
|
||||
"block.create.sail_frame": "moldura de vela",
|
||||
"block.create.rose_quartz_block": "Bloco de quartzo rosa",
|
||||
"block.create.rose_quartz_lamp": "Lâmpada de quartzo rosa",
|
||||
"block.create.rose_quartz_tiles": "Telha de quartzo rosa",
|
||||
"block.create.rotation_speed_controller": "Controlador de velocidade rotacional",
|
||||
"block.create.sail_frame": "Moldura de vela",
|
||||
"block.create.schematic_table": "Mesa de Esquema",
|
||||
"block.create.schematicannon": "Canhão de Esquema",
|
||||
"block.create.scorchia": "Escória negra",
|
||||
|
@ -427,8 +427,8 @@
|
|||
"block.create.scoria": "Escória",
|
||||
"block.create.scoria_pillar": "Pilar de escória",
|
||||
"block.create.secondary_linear_chassis": "Chassis linear secundário",
|
||||
"block.create.sequenced_gearshift": "Câmbio sequenciado",
|
||||
"block.create.shadow_steel_casing": "Revestiment das Sombras",
|
||||
"block.create.sequenced_gearshift": "Câmbio sequencial",
|
||||
"block.create.shadow_steel_casing": "Revestimento das Sombras",
|
||||
"block.create.shaft": "Eixo",
|
||||
"block.create.small_andesite_brick_slab": "Laje de tijolos pequenos de andesito",
|
||||
"block.create.small_andesite_brick_stairs": "Escada de tijolos pequenos de andesito",
|
||||
|
@ -438,7 +438,7 @@
|
|||
"block.create.small_asurine_brick_stairs": "Escada de tijolos pequenos de Asurino",
|
||||
"block.create.small_asurine_brick_wall": "Muro de tijolos pequenos de Asurino",
|
||||
"block.create.small_asurine_bricks": "Tijolos pequenos de Asurino",
|
||||
"block.create.small_bogey": "UNLOCALIZED: Small Bogey",
|
||||
"block.create.small_bogey": "Roda do trem pequena",
|
||||
"block.create.small_calcite_brick_slab": "Laje de tijolos pequenos de calcita",
|
||||
"block.create.small_calcite_brick_stairs": "Escada de tijolos pequenos de calcita",
|
||||
"block.create.small_calcite_brick_wall": "Muro de tijolos pequenos de calcita",
|
||||
|
@ -471,7 +471,7 @@
|
|||
"block.create.small_ochrum_brick_stairs": "Escada de tijolos pequenos de Ocrom",
|
||||
"block.create.small_ochrum_brick_wall": "Muro de tijolos pequenos de Ocrom",
|
||||
"block.create.small_ochrum_bricks": "Tijolos pequenos de Ocrom",
|
||||
"block.create.small_rose_quartz_tiles": "UNLOCALIZED: Small Rose Quartz Tiles",
|
||||
"block.create.small_rose_quartz_tiles": "Telha de quartzo rosa pequena",
|
||||
"block.create.small_scorchia_brick_slab": "Laje de tijolos pequenos de escória negra",
|
||||
"block.create.small_scorchia_brick_stairs": "Escada de tijolos pequenos de escória negra",
|
||||
"block.create.small_scorchia_brick_wall": "Muro de tijolos pequenos de escória negra",
|
||||
|
@ -494,21 +494,21 @@
|
|||
"block.create.spout": "Bica",
|
||||
"block.create.spruce_window": "Janela de pinheiro",
|
||||
"block.create.spruce_window_pane": "Vidraça de pinheiro",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.steam_engine": "Motor a vapor",
|
||||
"block.create.steam_whistle": "Apito a vapor",
|
||||
"block.create.steam_whistle_extension": "Extensão do apito a vapor",
|
||||
"block.create.sticker": "Adesivo",
|
||||
"block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento",
|
||||
"block.create.stockpile_switch": "Disjuntor de Armazenamento",
|
||||
"block.create.stressometer": "Estressómetro",
|
||||
"block.create.tiled_glass": "Vidro Entalhado",
|
||||
"block.create.tiled_glass_pane": "Vidraça Entalhada",
|
||||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_observer": "UNLOCALIZED: Train Observer",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.track": "Trilho do trem",
|
||||
"block.create.track_observer": "Observador de trem",
|
||||
"block.create.track_signal": "Sinal de trem",
|
||||
"block.create.track_station": "Estação de trem",
|
||||
"block.create.train_door": "Porta de trem",
|
||||
"block.create.train_trapdoor": "Alçapão de trem",
|
||||
"block.create.tuff_pillar": "Pilar de tufo",
|
||||
"block.create.turntable": "Mesa giratória",
|
||||
"block.create.veridium": "Veridiano",
|
||||
|
@ -532,7 +532,7 @@
|
|||
"block.create.waxed_exposed_copper_tiles": "Ladrilhos de cobre exposto encerado",
|
||||
"block.create.waxed_oxidized_copper_shingle_slab": "Laje de telha de cobre oxidada encerada",
|
||||
"block.create.waxed_oxidized_copper_shingle_stairs": "Escada de telha de cobre oxidada encerada",
|
||||
"block.create.waxed_oxidized_copper_shingles": "Telha de cobre oxidada encerada",
|
||||
"block.create.waxed_oxidized_copper_shingles": "Telha de cobre oxidado encerada",
|
||||
"block.create.waxed_oxidized_copper_tile_slab": "Laje de ladrilhos de cobre oxidada encerada",
|
||||
"block.create.waxed_oxidized_copper_tile_stairs": "Escada de ladrilhos de cobre oxidada encerada",
|
||||
"block.create.waxed_oxidized_copper_tiles": "Ladrilhos de cobre oxidado encerado",
|
||||
|
@ -567,10 +567,10 @@
|
|||
"enchantment.create.capacity": "Capacidade",
|
||||
"enchantment.create.potato_recovery": "Recuperação de Batata",
|
||||
|
||||
"entity.create.carriage_contraption": "UNLOCALIZED: Carriage Contraption",
|
||||
"entity.create.carriage_contraption": "Engenhoca de carruagem",
|
||||
"entity.create.contraption": "Engenhoca",
|
||||
"entity.create.crafting_blueprint": "Esquema de Fabricação",
|
||||
"entity.create.gantry_contraption": "Engenhoca de Pórticolo",
|
||||
"entity.create.gantry_contraption": "Engenhoca de Pórtico",
|
||||
"entity.create.potato_projectile": "Projétil de batata",
|
||||
"entity.create.seat": "Assento",
|
||||
"entity.create.stationary_contraption": "Engenhoca estacionária",
|
||||
|
@ -595,8 +595,8 @@
|
|||
"item.create.chocolate_glazed_berries": "Baga com Cobertura de Chocolate",
|
||||
"item.create.chromatic_compound": "Composto Cromático",
|
||||
"item.create.cinder_flour": "Farinha de Netherrack",
|
||||
"item.create.copper_backtank": "Tanque Traseiro",
|
||||
"item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable",
|
||||
"item.create.copper_backtank": "Tanque Traseiro de cobre",
|
||||
"item.create.copper_backtank_placeable": "Tanque de cobre traseiro colocável",
|
||||
"item.create.copper_nugget": "Pepita de Cobre",
|
||||
"item.create.copper_sheet": "Chapa de Cobre",
|
||||
"item.create.crafter_slot_cover": "Cobertura do slot de fabricador",
|
||||
|
@ -631,7 +631,7 @@
|
|||
"item.create.honey_bucket": "Balde de Mel",
|
||||
"item.create.honeyed_apple": "Maçã com Cobertura de Mel",
|
||||
"item.create.incomplete_precision_mechanism": "Mecanismo de Precisão",
|
||||
"item.create.incomplete_track": "UNLOCALIZED: Incomplete Track",
|
||||
"item.create.incomplete_track": "trilho incompleto",
|
||||
"item.create.iron_sheet": "Chapa de Ferro",
|
||||
"item.create.linked_controller": "Controle conectado",
|
||||
"item.create.minecart_contraption": "Engenhoca de Carrinho de Mina",
|
||||
|
@ -646,15 +646,15 @@
|
|||
"item.create.refined_radiance": "Luz Refinada",
|
||||
"item.create.rose_quartz": "Quartzo Rosa",
|
||||
"item.create.sand_paper": "Lixa",
|
||||
"item.create.schedule": "UNLOCALIZED: Train Schedule",
|
||||
"item.create.schedule": "Programação do trem",
|
||||
"item.create.schematic": "Esquema",
|
||||
"item.create.schematic_and_quill": "Esquema e pena",
|
||||
"item.create.shadow_steel": "Aço sombrio",
|
||||
"item.create.sturdy_sheet": "UNLOCALIZED: Sturdy Sheet",
|
||||
"item.create.sturdy_sheet": "Chapa resistente",
|
||||
"item.create.super_glue": "Super Cola",
|
||||
"item.create.sweet_roll": "Rolinho Doce",
|
||||
"item.create.tree_fertilizer": "Fertilizante de Árvore",
|
||||
"item.create.unprocessed_obsidian_sheet": "UNLOCALIZED: Unprocessed Obsidian Sheet",
|
||||
"item.create.unprocessed_obsidian_sheet": "Chapa de obsidiana não processada",
|
||||
"item.create.vertical_gearbox": "Caixa de Transmissão Vertical",
|
||||
"item.create.wand_of_symmetry": "Varinha de Simetria",
|
||||
"item.create.wheat_flour": "Farinha de trigo",
|
||||
|
@ -669,29 +669,29 @@
|
|||
"advancement.create.root": "Bem vindo a Create",
|
||||
"advancement.create.root.desc": "É hora de construir engenhocas maravilhosas",
|
||||
"advancement.create.andesite_alloy": "Aliterações Em abundância",
|
||||
"advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.",
|
||||
"advancement.create.andesite_alloy.desc": "Materiais do Create têm nomes estranhos, a liga de andesito é um deles.",
|
||||
"advancement.create.andesite_casing": "A era do andesito",
|
||||
"advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.",
|
||||
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk",
|
||||
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
|
||||
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker",
|
||||
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan",
|
||||
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
|
||||
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
|
||||
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared",
|
||||
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
|
||||
"advancement.create.compacting": "UNLOCALIZED: Compactification",
|
||||
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items",
|
||||
"advancement.create.mechanical_press": "Bonk",
|
||||
"advancement.create.mechanical_press.desc": "Crie algumas chapas na prensa mecânica",
|
||||
"advancement.create.encased_fan": "Fazedor de vento",
|
||||
"advancement.create.encased_fan.desc": "Coloque e ative um ventilador revestido",
|
||||
"advancement.create.fan_processing": "Processando por particulas",
|
||||
"advancement.create.fan_processing.desc": "Use um ventilador revestido para processar materiais",
|
||||
"advancement.create.saw_processing": "O mais temido da oficina",
|
||||
"advancement.create.saw_processing.desc": "Use uma serra mecânica de pé para processar materiais",
|
||||
"advancement.create.compacting": "Compactação",
|
||||
"advancement.create.compacting.desc": "Use uma prensa e uma bacia para criar menos itens de mais itens",
|
||||
"advancement.create.belt": "Correia de alga",
|
||||
"advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecânica.",
|
||||
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
|
||||
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
|
||||
"advancement.create.funnel": "Estética de aeroporto",
|
||||
"advancement.create.funnel.desc": "Extraia ou insira itens num container usando um funil de andesito",
|
||||
"advancement.create.chute": "Caindo",
|
||||
"advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.",
|
||||
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up",
|
||||
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
|
||||
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
|
||||
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
|
||||
"advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecânica.",
|
||||
"advancement.create.mechanical_mixer": "Misturando",
|
||||
"advancement.create.mechanical_mixer.desc": "Combina ingredientes em uma batedeira mecânica",
|
||||
"advancement.create.burner": "Fogueira viva",
|
||||
"advancement.create.burner.desc": "Obtenha um queimador de blaze",
|
||||
"advancement.create.water_wheel": "aproveitamento hidráulico",
|
||||
"advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!",
|
||||
"advancement.create.windmill": "Uma brisa moderada",
|
||||
|
@ -700,160 +700,160 @@
|
|||
"advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.",
|
||||
"advancement.create.millstone": "Moedor portátil",
|
||||
"advancement.create.millstone.desc": "Coloque e energize uma pedra de moer",
|
||||
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
|
||||
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
|
||||
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
|
||||
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board",
|
||||
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange",
|
||||
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption",
|
||||
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out",
|
||||
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench",
|
||||
"advancement.create.super_glue": "Área de conexão",
|
||||
"advancement.create.super_glue.desc": "Cole alguns blocos em um grupo",
|
||||
"advancement.create.contraption_actors": "Movimento com proposito",
|
||||
"advancement.create.contraption_actors.desc": "Crie uma engenhoca com brocas, serras ou coletores a bordo",
|
||||
"advancement.create.portable_storage_interface": "Troca por drive-thru",
|
||||
"advancement.create.portable_storage_interface.desc": "Use uma interface de armazenamento portátil para extrair ou inserir itens numa engenhoca",
|
||||
"advancement.create.wrench_goggles": "Bem equipado",
|
||||
"advancement.create.wrench_goggles.desc": "Equipe um óculos do engenheiro e uma chave inglesa",
|
||||
"advancement.create.stressometer": "Mas quão estressado exatamente?",
|
||||
"advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por atraves dos seus óculos para ler o valor exato.",
|
||||
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?",
|
||||
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
|
||||
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
|
||||
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
|
||||
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
|
||||
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector",
|
||||
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
|
||||
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
|
||||
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
|
||||
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
|
||||
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
|
||||
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs",
|
||||
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
|
||||
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
|
||||
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
|
||||
"advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)",
|
||||
"advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps",
|
||||
"advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por através dos seus óculos para ler o valor exato.",
|
||||
"advancement.create.cuckoo_clock": "Mas é a hora?",
|
||||
"advancement.create.cuckoo_clock.desc": "testemunhe seu relógio cuckoo anunciar a hora de dormir",
|
||||
"advancement.create.windmill_maxed": "Uma brisa forte",
|
||||
"advancement.create.windmill_maxed.desc": "Monte um moinho de vento com força maxima",
|
||||
"advancement.create.ejector_maxed": "Campeão do trampolim",
|
||||
"advancement.create.ejector_maxed.desc": "Seja lançado mais de 30 blocos por um ejetor ponderado",
|
||||
"advancement.create.pulley_maxed": "Corda para lugar nenhum",
|
||||
"advancement.create.pulley_maxed.desc": "Extenda uma corda por mais de 200 blocos de profundidade",
|
||||
"advancement.create.cart_pickup": "Braçõs fortes",
|
||||
"advancement.create.cart_pickup.desc": "Pegue uma engenhoca de carrinho de minas com pelos menos 200 blocos colados",
|
||||
"advancement.create.anvil_plough": "Artilharia de ferreiro",
|
||||
"advancement.create.anvil_plough.desc": "Lance uma bigorna com um arador mecânico",
|
||||
"advancement.create.lava_wheel_00000": "Roda de magma",
|
||||
"advancement.create.lava_wheel_00000.desc": "Isso nãoi deveria ter funcionado§7\n(Hidden Advancement)",
|
||||
"advancement.create.hand_crank_000": "Sessão de malhação",
|
||||
"advancement.create.hand_crank_000.desc": "Use uma manivela até estar completamente exausto§7\n(Hidden Advancement)",
|
||||
"advancement.create.belt_funnel_kiss": "Os pombinhos",
|
||||
"advancement.create.belt_funnel_kiss.desc": "Faça dois funis de esteira beijarem.",
|
||||
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
|
||||
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
|
||||
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks",
|
||||
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation",
|
||||
"advancement.create.stressometer_maxed": "Perfeitamente estressado",
|
||||
"advancement.create.stressometer_maxed.desc": "Consiga uma leitura de 100% de um estressómetro§7\n(Hidden Advancement)",
|
||||
"advancement.create.copper": "Rochas mais resistentes",
|
||||
"advancement.create.copper.desc": "Acumule cobre para as suas explorações na manipulações de fluido",
|
||||
"advancement.create.copper_casing": "A era do cobre",
|
||||
"advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.",
|
||||
"advancement.create.spout": "Sploosh",
|
||||
"advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.",
|
||||
"advancement.create.drain": "UNLOCALIZED: Tumble Draining",
|
||||
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain",
|
||||
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
|
||||
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque",
|
||||
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
|
||||
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
|
||||
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
|
||||
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure",
|
||||
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
|
||||
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water",
|
||||
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
|
||||
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
|
||||
"advancement.create.drain": "Cambalhotas de drenagem",
|
||||
"advancement.create.drain.desc": "Assista um item contendo fluidos ser esvaziado por um dreno de itens",
|
||||
"advancement.create.steam_engine": "A usina",
|
||||
"advancement.create.steam_engine.desc": "Use um motor a vapor para gerar torque",
|
||||
"advancement.create.steam_whistle": "Voz de um anjo",
|
||||
"advancement.create.steam_whistle.desc": "Ative um apito a vapor",
|
||||
"advancement.create.backtank": "Pressão para ir",
|
||||
"advancement.create.backtank.desc": "Crie um tanque traseiro de cobre e faça ele acumular pressão",
|
||||
"advancement.create.diving_suit": "Preparado para as profundezas",
|
||||
"advancement.create.diving_suit.desc": "Equipe um capacete de mergulhador junto com o seu tanque traseiro de cobre e pule na água",
|
||||
"advancement.create.mechanical_pump_0": "Sobre pressão",
|
||||
"advancement.create.mechanical_pump_0.desc": "Coloque e ative uma bomba mecânica",
|
||||
"advancement.create.glass_pipe": "Espião de fluxo",
|
||||
"advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.",
|
||||
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
|
||||
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block",
|
||||
"advancement.create.water_supply": "Coletor de poças",
|
||||
"advancement.create.water_supply.desc": "Use a extremidade sugante de um cano ou bomba para coletar blocos de água",
|
||||
"advancement.create.hose_pulley": "Vazamento industrial",
|
||||
"advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.",
|
||||
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
|
||||
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate",
|
||||
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
|
||||
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House",
|
||||
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
|
||||
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite",
|
||||
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
|
||||
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
|
||||
"advancement.create.foods": "UNLOCALIZED: Balanced Diet",
|
||||
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout",
|
||||
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
|
||||
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)",
|
||||
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
|
||||
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)",
|
||||
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!",
|
||||
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
|
||||
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
|
||||
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)",
|
||||
"advancement.create.chocolate_bucket": "Um mundo de imaginação",
|
||||
"advancement.create.chocolate_bucket.desc": "Obtenha um balde de chocolate derretido",
|
||||
"advancement.create.honey_drain": "Apicultura autônoma",
|
||||
"advancement.create.honey_drain.desc": "Use canos para sugar o mel de colmeias ou colmeias artificiais",
|
||||
"advancement.create.hose_pulley_lava": "Extraindo o manto",
|
||||
"advancement.create.hose_pulley_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito",
|
||||
"advancement.create.steam_engine_maxed": "Todo o vapor",
|
||||
"advancement.create.steam_engine_maxed.desc": "Opere uma caldeira na potencia maxima",
|
||||
"advancement.create.foods": "Dieta equilibrada",
|
||||
"advancement.create.foods.desc": "Crie bagas doces com chocolate, maçã com cobertura de mel e um rolinho doce; todas da mesma bica",
|
||||
"advancement.create.diving_suit_lava": "Nadando com os lavagantes",
|
||||
"advancement.create.diving_suit_lava.desc": "Tente mergulhar na lava com o seu equipamento de mergulho de cobre§7\n(Hidden Advancement)",
|
||||
"advancement.create.chained_drain": "Rolando",
|
||||
"advancement.create.chained_drain.desc": "Assista um item se mover através de uma fileira de drenos de item§7\n(Hidden Advancement)",
|
||||
"advancement.create.cross_streams": "Não cruze os fluxos!",
|
||||
"advancement.create.cross_streams.desc": "Assista dois fluidos se encontrarem na sua rede de canos§7\n(Hidden Advancement)",
|
||||
"advancement.create.pipe_organ": "Órgão de tubo",
|
||||
"advancement.create.pipe_organ.desc": "Conecte 12 apitos a vapor com afinação diferentes a um único tanque de fluidos§7\n(Hidden Advancement)",
|
||||
"advancement.create.brass": "Ligas de verdade",
|
||||
"advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.",
|
||||
"advancement.create.brass_casing": "a era do latão",
|
||||
"advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.",
|
||||
"advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds",
|
||||
"advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz",
|
||||
"advancement.create.rose_quartz": "Diamantes rosa",
|
||||
"advancement.create.rose_quartz.desc": "Pula alguns quartzos rosas",
|
||||
"advancement.create.deployer": "Cutuque, coloque e ataque",
|
||||
"advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.",
|
||||
"advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de você mesmo.",
|
||||
"advancement.create.precision_mechanism": "Curiosidades complexas",
|
||||
"advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.",
|
||||
"advancement.create.speed_controller": "Engenheiros odiam ele!",
|
||||
"advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.",
|
||||
"advancement.create.mechanical_arm": "Mâos ocupadas!",
|
||||
"advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.",
|
||||
"advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly",
|
||||
"advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters",
|
||||
"advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saídas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.",
|
||||
"advancement.create.mechanical_crafter": "Fabricação automatica",
|
||||
"advancement.create.mechanical_crafter.desc": "Coloque e ative alguns fabricadores mecânicos and power some Mechanical Crafters",
|
||||
"advancement.create.crushing_wheel": "Par de gigantes",
|
||||
"advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.",
|
||||
"advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense",
|
||||
"advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell",
|
||||
"advancement.create.haunted_bell": "Sentido sombrio",
|
||||
"advancement.create.haunted_bell.desc": "toque um sino assombrado",
|
||||
"advancement.create.clockwork_bearing": "Hora da engenhoca",
|
||||
"advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.",
|
||||
"advancement.create.display_link": "UNLOCALIZED: Big Data",
|
||||
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information",
|
||||
"advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de relógio.",
|
||||
"advancement.create.display_link": "Grandes dados",
|
||||
"advancement.create.display_link.desc": "Use uma conexão de placa de exibição para visualizar informações",
|
||||
"advancement.create.potato_cannon": "Fwoomp!",
|
||||
"advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.",
|
||||
"advancement.create.extendo_grip": "Boioioing!",
|
||||
"advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.",
|
||||
"advancement.create.linked_controller": "UNLOCALIZED: Remote Activation",
|
||||
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
|
||||
"advancement.create.linked_controller": "Ativação remota",
|
||||
"advancement.create.linked_controller.desc": "Ative uma coneção de redstone usando um controle conectado",
|
||||
"advancement.create.arm_blaze_burner": "Combuste-tron",
|
||||
"advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.",
|
||||
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it",
|
||||
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed",
|
||||
"advancement.create.crusher_maxed_0000": "Triturando",
|
||||
"advancement.create.crusher_maxed_0000.desc": "Opere um par de rodas de moer na velocidade maxima",
|
||||
"advancement.create.arm_many_targets": "Organiza-tron",
|
||||
"advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.",
|
||||
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
|
||||
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other",
|
||||
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
|
||||
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
|
||||
"advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saída.",
|
||||
"advancement.create.potato_cannon_collide": "Fogos de artificios vegetais",
|
||||
"advancement.create.potato_cannon_collide.desc": "Colida diferentes tipos de projéteis do canhão de batata",
|
||||
"advancement.create.self_deploying": "Carrinho com auto-condução",
|
||||
"advancement.create.self_deploying.desc": "Crie uma engenhoca de carrinho de minas que coloque trilhos à frente de si mesmo",
|
||||
"advancement.create.fist_bump": "Bate isso, mano!",
|
||||
"advancement.create.fist_bump.desc": "Faça dois implantadores baterem com o punho.",
|
||||
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
|
||||
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
|
||||
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent",
|
||||
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)",
|
||||
"advancement.create.crafter_lazy_000": "Medidas desesperadas",
|
||||
"advancement.create.crafter_lazy_000.desc": "Drasticamente desacelere um fabricador mecânico para procrastinar numa verdadeira infraestrutura§7\n(Hidden Advancement)",
|
||||
"advancement.create.extendo_grip_dual": "Extensão completa",
|
||||
"advancement.create.extendo_grip_dual.desc": "Empunhe duas extensões de pegadores para ter alcance super-humano§7\n(Hidden Advancement)",
|
||||
"advancement.create.musical_arm": "toque minha musica!",
|
||||
"advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.",
|
||||
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
|
||||
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian",
|
||||
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
|
||||
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components",
|
||||
"advancement.create.train": "UNLOCALIZED: All Aboard!",
|
||||
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
|
||||
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
|
||||
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule",
|
||||
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
|
||||
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
|
||||
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
|
||||
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
|
||||
"advancement.create.track_0": "UNLOCALIZED: A new Gauge",
|
||||
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
|
||||
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!",
|
||||
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
|
||||
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
|
||||
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal",
|
||||
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
|
||||
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press",
|
||||
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
|
||||
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length",
|
||||
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
|
||||
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages",
|
||||
"advancement.create.long_travel": "UNLOCALIZED: Field Trip",
|
||||
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
|
||||
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
|
||||
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)",
|
||||
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
|
||||
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)",
|
||||
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
|
||||
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)",
|
||||
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
|
||||
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
|
||||
"advancement.create.sturdy_sheet": "As rochas mais resistentes",
|
||||
"advancement.create.sturdy_sheet.desc": "Monte uma chapa resistente refinado obsidiana esmagada",
|
||||
"advancement.create.train_casing_00": "A era da logistica",
|
||||
"advancement.create.train_casing_00.desc": "Use chapas resistente para criar o revestimento para componentes ferroviários",
|
||||
"advancement.create.train": "Todos a bordo!",
|
||||
"advancement.create.train.desc": "Monte o seu primeiro trem",
|
||||
"advancement.create.conductor": "Condutor instrutor",
|
||||
"advancement.create.conductor.desc": "Instrua um maquinista com uma programação",
|
||||
"advancement.create.track_signal": "Controle de tráfego",
|
||||
"advancement.create.track_signal.desc": "Coloque um sinal de trem",
|
||||
"advancement.create.display_board_0": "Horarios dinâmicos",
|
||||
"advancement.create.display_board_0.desc": "Exiba a previsão de chegada de um trem na sua placa de exibição com a ajuda da conexão de placa de exibição",
|
||||
"advancement.create.track_0": "Uma nova medida",
|
||||
"advancement.create.track_0.desc": "Obtenha alguns trilhos de trem",
|
||||
"advancement.create.train_whistle": "Choo choo!",
|
||||
"advancement.create.train_whistle.desc": "Monte um apito a vapor no seu trem e ative ele enquanto dirige",
|
||||
"advancement.create.train_portal": "Transporte dimensional",
|
||||
"advancement.create.train_portal.desc": "Ande de trem através de um portal do Nether",
|
||||
"advancement.create.track_crafting_factory": "Fabrica de trilhos",
|
||||
"advancement.create.track_crafting_factory.desc": "Produza mais de 1000 trilhos de trem no mesmo fabricador mecânico",
|
||||
"advancement.create.long_bend": "A curva mais longa",
|
||||
"advancement.create.long_bend.desc": "Crie uma seção de trilho curvada que abrange mais de 30 blocos de comprimento",
|
||||
"advancement.create.long_train": "Esforços ambiciosos",
|
||||
"advancement.create.long_train.desc": "Crie um trem com pelo menos 6 vagões",
|
||||
"advancement.create.long_travel": "Viagem de campo",
|
||||
"advancement.create.long_travel.desc": "Deixe um assento de trem a mais de 5000 blocos de distância da onde você começou a viagem",
|
||||
"advancement.create.train_roadkill": "Atropelamento",
|
||||
"advancement.create.train_roadkill.desc": "Atropele um inimigo com o seu trem§7\n(Hidden Advancement)",
|
||||
"advancement.create.red_signal": "Motorista expert",
|
||||
"advancement.create.red_signal.desc": "Atravesse um sinal vermelho com o seu trem§7\n(Hidden Advancement)",
|
||||
"advancement.create.train_crash": "Serviço terrivel",
|
||||
"advancement.create.train_crash.desc": "Testemunhe uma batida de trem como um passageiro§7\n(Hidden Advancement)",
|
||||
"advancement.create.train_crash_backwards": "Ponto cego",
|
||||
"advancement.create.train_crash_backwards.desc": "Bata em outro trem enquanto dirige para trás§7\n(Hidden Advancement)",
|
||||
|
||||
|
||||
"_": "->------------------------] UI & Messages [------------------------<-",
|
||||
|
@ -875,7 +875,7 @@
|
|||
"death.attack.create.potato_cannon.item": "%1$s foi atirado por %2$s usando %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado",
|
||||
"death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado",
|
||||
"death.attack.create.run_over": "UNLOCALIZED: %1$s was run over by %2$s",
|
||||
"death.attack.create.run_over": "%1$s foi atropelado por %2$s",
|
||||
|
||||
"create.block.deployer.damage_source_name": "Implantador rebelde",
|
||||
"create.block.cart_assembler.invalid": "Coloque o seu montador de carrinho de minas num trilho",
|
||||
|
@ -896,14 +896,14 @@
|
|||
"create.recipe.fan_haunting": "Assombração em massa",
|
||||
"create.recipe.fan_haunting.fan": "Ventilador atrás do fogo das almas ",
|
||||
"create.recipe.fan_blasting": "Fundição em massa",
|
||||
"create.recipe.fan_blasting.fan": "entilador atrás de lava",
|
||||
"create.recipe.fan_blasting.fan": "ventilador atrás de lava",
|
||||
"create.recipe.pressing": "Prensando",
|
||||
"create.recipe.mixing": "Misturando",
|
||||
"create.recipe.deploying": "Implantando",
|
||||
"create.recipe.automatic_shapeless": "Fabricação sem forma automático",
|
||||
"create.recipe.automatic_brewing": "Produção de poções",
|
||||
"create.recipe.packing": "Compactando",
|
||||
"create.recipe.automatic_packing": "Compactamento automático",
|
||||
"create.recipe.automatic_packing": "Compactação automático",
|
||||
"create.recipe.sawing": "Serrando",
|
||||
"create.recipe.mechanical_crafting": "Fabricação mecânica",
|
||||
"create.recipe.automatic_shaped": "Fabricação com forma automática",
|
||||
|
@ -913,8 +913,8 @@
|
|||
"create.recipe.mystery_conversion": "Conversão misteriosa",
|
||||
"create.recipe.spout_filling": "Preenchimento com bica",
|
||||
"create.recipe.draining": "Drenação de item",
|
||||
"create.recipe.item_application": "UNLOCALIZED: Manual Item Application",
|
||||
"create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe",
|
||||
"create.recipe.item_application": "Aplicação de item manual",
|
||||
"create.recipe.item_application.any_axe": "Qualquer machado",
|
||||
"create.recipe.sequenced_assembly": "Montagem sequenciada",
|
||||
"create.recipe.assembly.next": "Proximo: %1$s",
|
||||
"create.recipe.assembly.step": "Passo %1$s:",
|
||||
|
@ -938,26 +938,26 @@
|
|||
"create.generic.length": "Comprimento",
|
||||
"create.generic.speed": "Velocidade",
|
||||
"create.generic.delay": "Demorada",
|
||||
"create.generic.duration": "UNLOCALIZED: Duration",
|
||||
"create.generic.timeUnit": "UNLOCALIZED: Time Unit",
|
||||
"create.generic.duration": "Duração",
|
||||
"create.generic.timeUnit": "Unidade de tempo",
|
||||
"create.generic.unit.ticks": "Ticks",
|
||||
"create.generic.unit.seconds": "Segundos",
|
||||
"create.generic.unit.minutes": "Minutos",
|
||||
"create.generic.daytime.hour": "UNLOCALIZED: Hour",
|
||||
"create.generic.daytime.minute": "UNLOCALIZED: Minute",
|
||||
"create.generic.daytime.second": "UNLOCALIZED: Second",
|
||||
"create.generic.daytime.pm": "UNLOCALIZED: pm",
|
||||
"create.generic.daytime.am": "UNLOCALIZED: am",
|
||||
"create.generic.daytime.hour": "Horas",
|
||||
"create.generic.daytime.minute": "Minuto",
|
||||
"create.generic.daytime.second": "Segundo",
|
||||
"create.generic.daytime.pm": "Da tarde",
|
||||
"create.generic.daytime.am": "Da manhã",
|
||||
"create.generic.unit.rpm": "RPM",
|
||||
"create.generic.unit.stress": "us",
|
||||
"create.generic.unit.degrees": "°",
|
||||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.unit.buckets": "UNLOCALIZED: B",
|
||||
"create.generic.unit.buckets": "B",
|
||||
"create.generic.clockwise": "Sentido horário",
|
||||
"create.generic.counter_clockwise": "Sentido anti-horário",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
"create.generic.pitch": "UNLOCALIZED: Pitch: %1$s",
|
||||
"create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
|
||||
"create.generic.in_quotes": "\"%1$s\"",
|
||||
"create.generic.pitch": "Afinação: %1$s",
|
||||
"create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
|
||||
|
||||
"create.action.scroll": "Rolar",
|
||||
"create.action.confirm": "Confirmar",
|
||||
|
@ -1241,7 +1241,7 @@
|
|||
"create.item_attributes.damaged": "Está danificado",
|
||||
"create.item_attributes.damaged.inverted": "Não está danificado",
|
||||
"create.item_attributes.badly_damaged": "Está severamente danificado",
|
||||
"create.item_attributes.badly_damaged.inverted": "Não esta severamente danificado",
|
||||
"create.item_attributes.badly_damaged.inverted": "Não está severamente danificado",
|
||||
"create.item_attributes.not_stackable": "Não pode ser empilhado",
|
||||
"create.item_attributes.not_stackable.inverted": "Pode ser empilhado",
|
||||
"create.item_attributes.equipable": "Pode ser equipado",
|
||||
|
@ -1295,8 +1295,8 @@
|
|||
"create.item_attributes.astralsorcery_constellation.inverted": "Não esta sintonizado a %1$s",
|
||||
"create.item_attributes.astralsorcery_crystal": "Tem atributos de cristais %1$s",
|
||||
"create.item_attributes.astralsorcery_crystal.inverted": "Não tem atributos de cristais %1$s",
|
||||
"create.item_attributes.astralsorcery_perk_gem": " %1$s Tem um atributo de benefio",
|
||||
"create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s Não tem um atributo de benefio",
|
||||
"create.item_attributes.astralsorcery_perk_gem": " %1$s Tem um atributo de beneficio",
|
||||
"create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s Não tem um atributo de benefício",
|
||||
|
||||
"create.gui.attribute_filter.no_selected_attributes": "Nenhum atributo selecionado",
|
||||
"create.gui.attribute_filter.selected_attributes": "Atributos selecionados:",
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "Ventiladores sugam de cima",
|
||||
"create.tooltip.chute.fans_pull_down": "Ventiladores sugam de baixo",
|
||||
"create.tooltip.chute.contains": "Contem: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "Distribuindo:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": " > %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "Clique direito para recuperar item",
|
||||
|
@ -1391,9 +1395,9 @@
|
|||
"create.hint.hose_pulley.title": "Abastecimento sem fundo",
|
||||
"create.hint.hose_pulley": "O corpo de fluido selecionado é considerado infinito.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "Sem alvos",
|
||||
"create.hint.mechanical_arm_no_targets": "Aparentemente esse _Braço_ _Mecânico_ não foi designado nenhum _alvo._ Selecione esteiras, depósitos, funis e outros blocos com o _botão direito do mouse_ enquanto _segurando_ o _Braço_ _Mecanico_ na sua _mão_.",
|
||||
"create.hint.mechanical_arm_no_targets": "Aparentemente esse _Braço_ _Mecânico_ não foi designado nenhum _alvo._ Selecione esteiras, depósitos, funis e outros blocos com o _botão direito do mouse_ enquanto _segurando_ o _Braço_ _Mecânico_ na sua _mão_.",
|
||||
"create.hint.empty_bearing.title": "Atualizar o rolamento",
|
||||
"create.hint.empty_bearing": " _clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.",
|
||||
"create.hint.empty_bearing": " clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.",
|
||||
"create.hint.full_deployer.title": "Implantador transbordando de itens",
|
||||
"create.hint.full_deployer": "Aparenta que esse _inplantador_ contém _itens_ em _excesso_ que precisam ser _extraídos._ Use um _funil,_ _funil de andesito/latão_ ou outros meios para extrair os itens excedentes.",
|
||||
|
||||
|
@ -1721,7 +1725,7 @@
|
|||
"create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory",
|
||||
"create.super_glue.success": "UNLOCALIZED: Applying Glue...",
|
||||
|
||||
"create.gui.config.overlay1": "Oi :)",
|
||||
"create.gui.config.overlay1": "UNLOCALIZED: Hi :)",
|
||||
"create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay",
|
||||
"create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse",
|
||||
"create.gui.config.overlay4": "UNLOCALIZED: to move this preview",
|
||||
|
@ -1747,17 +1751,17 @@
|
|||
"create.subtitle.contraption_disassemble": "Engenhoca para",
|
||||
"create.subtitle.peculiar_bell_use": "Sino peculiar toca",
|
||||
"create.subtitle.worldshaper_place": "Zaps do terraformador",
|
||||
"create.subtitle.whistle_train_manual": "UNLOCALIZED: Train honks",
|
||||
"create.subtitle.steam": "UNLOCALIZED: Steam noises",
|
||||
"create.subtitle.whistle_train_manual": "Buzinas de trem",
|
||||
"create.subtitle.steam": "Sons de vapor",
|
||||
"create.subtitle.saw_activate_stone": "Serra mecânica ativa",
|
||||
"create.subtitle.schematicannon_finish": "Ding do canhão de esquema",
|
||||
"create.subtitle.crafter_craft": "Fabricador fábrica",
|
||||
"create.subtitle.wrench_remove": "Componente quebra",
|
||||
"create.subtitle.train3": "UNLOCALIZED: Bogey wheels rumble muffled",
|
||||
"create.subtitle.whistle": "UNLOCALIZED: Whistling",
|
||||
"create.subtitle.train3": "Tremer abafado das rodas do trem",
|
||||
"create.subtitle.whistle": "Apito",
|
||||
"create.subtitle.cogs": "tremer da rodas dentadas",
|
||||
"create.subtitle.slime_added": "Slime sendo espremido",
|
||||
"create.subtitle.whistle_train_low": "UNLOCALIZED: Low whistling",
|
||||
"create.subtitle.whistle_train_low": "Apito baixo",
|
||||
"create.subtitle.schematicannon_launch_block": "Canhão de esquema atira",
|
||||
"create.subtitle.controller_take": "Atril esvaziado",
|
||||
"create.subtitle.crafter_click": "Clicks do fabricador",
|
||||
|
@ -1779,14 +1783,14 @@
|
|||
"create.subtitle.wrench_rotate": "Chave inglesa usada",
|
||||
"create.subtitle.potato_hit": "Impacto vegetal",
|
||||
"create.subtitle.saw_activate_wood": "Serra mecânica ativa",
|
||||
"create.subtitle.whistle_high": "UNLOCALIZED: High whistling",
|
||||
"create.subtitle.whistle_train_manual_low": "UNLOCALIZED: Train honks",
|
||||
"create.subtitle.whistle_train": "UNLOCALIZED: Whistling",
|
||||
"create.subtitle.whistle_high": "Apito alto",
|
||||
"create.subtitle.whistle_train_manual_low": "Buzinas de trem",
|
||||
"create.subtitle.whistle_train": "Apito",
|
||||
"create.subtitle.haunted_bell_convert": "Sino assombrado acorda",
|
||||
"create.subtitle.train": "UNLOCALIZED: Bogey wheels rumble",
|
||||
"create.subtitle.train": "Tremer das rodas do trem",
|
||||
"create.subtitle.deny": "Boop de negação",
|
||||
"create.subtitle.controller_click": "Clicks do controle",
|
||||
"create.subtitle.whistle_low": "UNLOCALIZED: Low whistling",
|
||||
"create.subtitle.whistle_low": "Apito baixo",
|
||||
"create.subtitle.copper_armor_equip": "Tilintar dos equipamentos de mergulho",
|
||||
"create.subtitle.mechanical_press_activation": "Clang da prensa mecânica",
|
||||
"create.subtitle.contraption_assemble": "Engenhoca move",
|
||||
|
@ -1803,13 +1807,13 @@
|
|||
"item.create.example_item.tooltip.control1": "Quando Ctrl pressed",
|
||||
"item.create.example_item.tooltip.action1": "These controls are displayed.",
|
||||
|
||||
"block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET",
|
||||
"block.create.wooden_bracket.tooltip": "Suporte de madeira",
|
||||
"block.create.wooden_bracket.tooltip.summary": "_Decore_ seus _eixos, rodas dentadas_ e _canos_com um pedaço aconchegante e de madeira de reforço.",
|
||||
|
||||
"block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET",
|
||||
"block.create.metal_bracket.tooltip": "Suporte de ferro",
|
||||
"block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.",
|
||||
|
||||
"block.create.seat.tooltip": "UNLOCALIZED: SEAT",
|
||||
"block.create.seat.tooltip": "Assento",
|
||||
"block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.",
|
||||
"block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat",
|
||||
"block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.",
|
||||
|
@ -1837,10 +1841,10 @@
|
|||
"item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking",
|
||||
"item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_",
|
||||
|
||||
"item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores",
|
||||
"item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ÁRVORE",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de árvores",
|
||||
"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.tree_fertilizer.tooltip.behaviour1": "Cresce Árvores independentemente das suas Regras de espaço",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
|
@ -1874,7 +1878,7 @@
|
|||
"item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_",
|
||||
|
||||
"item.create.schematic.tooltip": "ESQUEMA",
|
||||
"item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.",
|
||||
"item.create.schematic.tooltip.summary": "Contém uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.",
|
||||
"item.create.schematic.tooltip.condition1": "Quando Em mãos",
|
||||
"item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela",
|
||||
"item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado",
|
||||
|
@ -1952,7 +1956,7 @@
|
|||
"block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.",
|
||||
|
||||
"block.create.creative_crate.tooltip": "Caixa Criativa",
|
||||
"block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos",
|
||||
"block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canhões de Esquema próximos",
|
||||
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
|
||||
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2188",
|
||||
"_": "Missing Localizations: 2192",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 647",
|
||||
"_": "Missing Localizations: 651",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "Ventilatoarele trag de Sus",
|
||||
"create.tooltip.chute.fans_pull_down": "Ventilatoarele trag de Jos",
|
||||
"create.tooltip.chute.contains": "Conține: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "Distribuie Curent:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "Click Dreapta pentru a recupera",
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1038",
|
||||
"_": "Missing Localizations: 1042",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1366,6 +1366,10 @@
|
|||
"create.tooltip.chute.fans_pull_up": "鼓風機從下方進行吸引",
|
||||
"create.tooltip.chute.fans_pull_down": "鼓風機從上方進行吸引",
|
||||
"create.tooltip.chute.contains": "物品: %1$s x%2$s",
|
||||
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
|
||||
"create.tooltip.deployer.using": "UNLOCALIZED: Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "UNLOCALIZED: Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "UNLOCALIZED: Holding: %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.contains": "正在處理",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "右鍵取回",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:copper_backtank"
|
||||
]
|
||||
}
|
|
@ -248,6 +248,7 @@ public class AllItems {
|
|||
|
||||
COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new CopperBacktankItem(p, COPPER_BACKTANK_PLACEABLE))
|
||||
.model(AssetLookup.customGenericItemModel("_", "item"))
|
||||
.tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag)
|
||||
.register(),
|
||||
|
||||
DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new)
|
||||
|
|
|
@ -221,6 +221,7 @@ public class AllTags {
|
|||
MODDED_STRIPPED_WOOD,
|
||||
CASING,
|
||||
SLEEPERS,
|
||||
PRESSURIZED_AIR_SOURCES,
|
||||
|
||||
STRIPPED_LOGS(FORGE),
|
||||
STRIPPED_WOOD(FORGE),
|
||||
|
@ -445,7 +446,7 @@ public class AllTags {
|
|||
strippedWoodCompat(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
|
||||
"magic", "umbran", "hellbark");
|
||||
strippedWoodCompat(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
|
||||
|
||||
|
||||
AllItemTags.MODDED_STRIPPED_LOGS.addOptional(Mods.BYG, "stripped_bulbis_stem");
|
||||
AllItemTags.MODDED_STRIPPED_WOOD.addOptional(Mods.BYG, "stripped_bulbis_wood");
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simibubi.create.api.behaviour;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
|
@ -14,7 +15,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||
|
||||
public abstract class BlockSpoutingBehaviour {
|
||||
|
||||
private static final HashMap<ResourceLocation, BlockSpoutingBehaviour> BLOCK_SPOUTING_BEHAVIOURS = new HashMap<>();
|
||||
private static final Map<ResourceLocation, BlockSpoutingBehaviour> BLOCK_SPOUTING_BEHAVIOURS = new HashMap<>();
|
||||
|
||||
public static void addCustomSpoutInteraction(ResourceLocation resourceLocation,
|
||||
BlockSpoutingBehaviour movementBehaviour) {
|
||||
|
|
|
@ -36,7 +36,7 @@ public class RotationPropagator {
|
|||
* Determines the change in rotation between two attached kinetic entities. For
|
||||
* instance, an axis connection returns 1 while a 1-to-1 gear connection
|
||||
* reverses the rotation and therefore returns -1.
|
||||
*
|
||||
*
|
||||
* @param from
|
||||
* @param to
|
||||
* @return
|
||||
|
@ -201,7 +201,7 @@ public class RotationPropagator {
|
|||
|
||||
/**
|
||||
* Insert the added position to the kinetic network.
|
||||
*
|
||||
*
|
||||
* @param worldIn
|
||||
* @param pos
|
||||
*/
|
||||
|
@ -215,7 +215,7 @@ public class RotationPropagator {
|
|||
|
||||
/**
|
||||
* Search for sourceless networks attached to the given entity and update them.
|
||||
*
|
||||
*
|
||||
* @param currentTE
|
||||
*/
|
||||
private static void propagateNewSource(KineticTileEntity currentTE) {
|
||||
|
@ -230,11 +230,14 @@ public class RotationPropagator {
|
|||
|
||||
if (newSpeed == 0 && oppositeSpeed == 0)
|
||||
continue;
|
||||
|
||||
|
||||
boolean incompatible =
|
||||
Math.signum(newSpeed) != Math.signum(speedOfNeighbour) && (newSpeed != 0 && speedOfNeighbour != 0);
|
||||
|
||||
boolean tooFast = Math.abs(newSpeed) > AllConfigs.SERVER.kinetics.maxRotationSpeed.get();
|
||||
boolean tooFast = Math.abs(newSpeed) > AllConfigs.SERVER.kinetics.maxRotationSpeed.get()
|
||||
|| Math.abs(oppositeSpeed) > AllConfigs.SERVER.kinetics.maxRotationSpeed.get();
|
||||
// Check for both the new speed and the opposite speed, just in case
|
||||
|
||||
boolean speedChangedTooOften = currentTE.getFlickerScore() > MAX_FLICKER_SCORE;
|
||||
if (tooFast || speedChangedTooOften) {
|
||||
world.destroyBlock(pos, true);
|
||||
|
@ -300,7 +303,7 @@ public class RotationPropagator {
|
|||
|
||||
/**
|
||||
* Remove the given entity from the network.
|
||||
*
|
||||
*
|
||||
* @param worldIn
|
||||
* @param pos
|
||||
* @param removedTE
|
||||
|
@ -333,7 +336,7 @@ public class RotationPropagator {
|
|||
/**
|
||||
* Clear the entire subnetwork depending on the given entity and find a new
|
||||
* source
|
||||
*
|
||||
*
|
||||
* @param updateTE
|
||||
*/
|
||||
private static void propagateMissingSource(KineticTileEntity updateTE) {
|
||||
|
|
|
@ -26,6 +26,8 @@ public class TorquePropagator {
|
|||
public KineticNetwork getOrCreateNetworkFor(KineticTileEntity te) {
|
||||
Long id = te.network;
|
||||
KineticNetwork network;
|
||||
if (!networks.containsKey(te.getLevel()))
|
||||
networks.put(te.getLevel(), new HashMap<>());
|
||||
Map<Long, KineticNetwork> map = networks.get(te.getLevel());
|
||||
if (id == null)
|
||||
return null;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simibubi.create.content.contraptions.base;
|
||||
|
||||
import com.simibubi.create.foundation.utility.DirectionHelper;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -15,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
|
||||
public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBlock {
|
||||
public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBlock implements ITransformableBlock {
|
||||
|
||||
public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE = BooleanProperty.create("axis_along_first");
|
||||
|
||||
|
@ -53,7 +54,7 @@ public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBloc
|
|||
|
||||
if (faceAxis.isHorizontal()) {
|
||||
alongFirst = faceAxis == Axis.Z;
|
||||
Direction positivePerpendicular = DirectionHelper.getPositivePerpendicular(faceAxis);
|
||||
Direction positivePerpendicular = faceAxis == Axis.X ? Direction.SOUTH : Direction.EAST;
|
||||
|
||||
boolean shaftAbove = prefersConnectionTo(world, pos, Direction.UP, true);
|
||||
boolean shaftBelow = prefersConnectionTo(world, pos, Direction.DOWN, true);
|
||||
|
@ -121,6 +122,23 @@ public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBloc
|
|||
return super.rotate(state, rot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState transform(BlockState state, StructureTransform transform) {
|
||||
if (transform.mirror != null) {
|
||||
state = mirror(state, transform.mirror);
|
||||
}
|
||||
|
||||
if (transform.rotationAxis == Direction.Axis.Y) {
|
||||
return rotate(state, transform.rotation);
|
||||
}
|
||||
|
||||
Direction newFacing = transform.rotateFacing(state.getValue(FACING));
|
||||
if (transform.rotationAxis == newFacing.getAxis() && transform.rotation.ordinal() % 2 == 1) {
|
||||
state = state.cycle(AXIS_ALONG_FIRST_COORDINATE);
|
||||
}
|
||||
return state.setValue(FACING, newFacing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
return face.getAxis() == getRotationAxis(state);
|
||||
|
|
|
@ -15,12 +15,19 @@ import net.minecraft.util.Mth;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.SimpleWaterloggedBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.level.material.PushReaction;
|
||||
import net.minecraft.world.level.pathfinder.PathComputationType;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
|
@ -29,11 +36,12 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
|||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class DrillBlock extends DirectionalKineticBlock implements ITE<DrillTileEntity> {
|
||||
public class DrillBlock extends DirectionalKineticBlock implements ITE<DrillTileEntity>, SimpleWaterloggedBlock {
|
||||
public static DamageSource damageSourceDrill = new DamageSource("create.mechanical_drill").bypassArmor();
|
||||
|
||||
public DrillBlock(Properties properties) {
|
||||
super(properties);
|
||||
registerDefaultState(super.defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,6 +91,31 @@ public class DrillBlock extends DirectionalKineticBlock implements ITE<DrillTile
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidState getFluidState(BlockState state) {
|
||||
return state.getValue(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getSource(false) : Fluids.EMPTY.defaultFluidState();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||
builder.add(BlockStateProperties.WATERLOGGED);
|
||||
super.createBlockStateDefinition(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState,
|
||||
LevelAccessor world, BlockPos pos, BlockPos neighbourPos) {
|
||||
if (state.getValue(BlockStateProperties.WATERLOGGED))
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world));
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||
FluidState FluidState = context.getLevel().getFluidState(context.getClickedPos());
|
||||
return super.getStateForPlacement(context).setValue(BlockStateProperties.WATERLOGGED, Boolean.valueOf(FluidState.getType() == Fluids.WATER));
|
||||
}
|
||||
|
||||
public static double getDamage(float speed) {
|
||||
float speedAbs = Math.abs(speed);
|
||||
double sub1 = Math.min(speedAbs / 16, 2);
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.jozufozu.flywheel.core.PartialModel;
|
|||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate.StressImpact;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
|
||||
import com.simibubi.create.content.curiosities.tools.SandPaperItem;
|
||||
|
@ -22,16 +23,19 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
|||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
|
@ -459,6 +463,42 @@ public class DeployerTileEntity extends KineticTileEntity {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||
Lang.translate("tooltip.deployer.header")
|
||||
.forGoggles(tooltip);
|
||||
|
||||
float stressAtBase = calculateStressApplied();
|
||||
|
||||
if (StressImpact.isEnabled() && !Mth.equal(stressAtBase, 0)) {
|
||||
Lang.translate("tooltip.stressImpact")
|
||||
.style(ChatFormatting.GRAY)
|
||||
.forGoggles(tooltip);
|
||||
|
||||
float stressTotal = stressAtBase * Math.abs(getTheoreticalSpeed());
|
||||
|
||||
Lang.number(stressTotal)
|
||||
.translate("generic.unit.stress")
|
||||
.style(ChatFormatting.AQUA)
|
||||
.space()
|
||||
.add(Lang.translate("gui.goggles.at_current_speed")
|
||||
.style(ChatFormatting.DARK_GRAY))
|
||||
.forGoggles(tooltip, 1);
|
||||
}
|
||||
|
||||
Lang.translate("tooltip.deployer." + (mode == Mode.USE ? "using" : "punching"))
|
||||
.style(ChatFormatting.YELLOW)
|
||||
.forGoggles(tooltip);
|
||||
|
||||
if (!heldItem.isEmpty()) {
|
||||
Lang.translate("tooltip.deployer.contains", new TranslatableComponent(heldItem.getDescriptionId()).getString(), heldItem.getCount())
|
||||
.style(ChatFormatting.GREEN)
|
||||
.forGoggles(tooltip);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public float getHandOffset(float partialTicks) {
|
||||
if (isVirtual())
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement;
|
||||
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public interface ITransformableBlock {
|
||||
BlockState transform(BlockState state, StructureTransform transform);
|
||||
}
|
|
@ -4,13 +4,6 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert
|
|||
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING;
|
||||
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
||||
import com.simibubi.create.foundation.utility.DirectionHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -30,7 +23,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.properties.AttachFace;
|
||||
import net.minecraft.world.level.block.state.properties.BellAttachType;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.DirectionProperty;
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.block.state.properties.Half;
|
||||
|
@ -55,7 +47,7 @@ public class StructureTransform {
|
|||
}
|
||||
|
||||
public StructureTransform(BlockPos offset, Axis axis, Rotation rotation, Mirror mirror) {
|
||||
this(offset, rotation == Rotation.NONE ? 0 : (4 - rotation.ordinal())*90, axis, rotation, mirror);
|
||||
this(offset, rotation == Rotation.NONE ? 0 : (4 - rotation.ordinal()) * 90, axis, rotation, mirror);
|
||||
}
|
||||
|
||||
public StructureTransform(BlockPos offset, float xRotation, float yRotation, float zRotation) {
|
||||
|
@ -96,7 +88,7 @@ public class StructureTransform {
|
|||
vec = VecHelper.rotate(vec, angle, rotationAxis);
|
||||
return vec;
|
||||
}
|
||||
|
||||
|
||||
public Vec3 applyWithoutOffset(Vec3 localVec) {
|
||||
Vec3 vec = localVec;
|
||||
if (mirror != null)
|
||||
|
@ -124,16 +116,18 @@ public class StructureTransform {
|
|||
}
|
||||
|
||||
/**
|
||||
* Minecraft does not support blockstate rotation around axes other than y. Add
|
||||
* specific cases here for blockstates, that should react to rotations around
|
||||
* horizontal axes
|
||||
* Vanilla does not support block state rotation around axes other than Y. Add
|
||||
* specific cases here for vanilla block states so that they can react to rotations
|
||||
* around horizontal axes. For Create blocks, implement ITransformableBlock.
|
||||
*/
|
||||
public BlockState apply(BlockState state) {
|
||||
Block block = state.getBlock();
|
||||
if (block instanceof ITransformableBlock transformable)
|
||||
return transformable.transform(state, this);
|
||||
|
||||
if (mirror != null)
|
||||
state = state.mirror(mirror);
|
||||
|
||||
Block block = state.getBlock();
|
||||
|
||||
if (rotationAxis == Axis.Y) {
|
||||
if (block instanceof BellBlock) {
|
||||
if (state.getValue(BlockStateProperties.BELL_ATTACHMENT) == BellAttachType.DOUBLE_WALL)
|
||||
|
@ -141,12 +135,10 @@ public class StructureTransform {
|
|||
return state.setValue(BellBlock.FACING,
|
||||
rotation.rotate(state.getValue(BellBlock.FACING)));
|
||||
}
|
||||
|
||||
return state.rotate(rotation);
|
||||
}
|
||||
|
||||
if (block instanceof AbstractChassisBlock)
|
||||
return rotateChassis(state);
|
||||
|
||||
if (block instanceof FaceAttachedHorizontalDirectionalBlock) {
|
||||
DirectionProperty facingProperty = FaceAttachedHorizontalDirectionalBlock.FACING;
|
||||
EnumProperty<AttachFace> faceProperty = FaceAttachedHorizontalDirectionalBlock.FACE;
|
||||
|
@ -185,30 +177,11 @@ public class StructureTransform {
|
|||
return state;
|
||||
}
|
||||
|
||||
if (AllBlocks.BELT.has(state)) {
|
||||
state = transformBelt(state, halfTurn);
|
||||
return state;
|
||||
}
|
||||
|
||||
if (state.hasProperty(FACING)) {
|
||||
Direction newFacing = transformFacing(state.getValue(FACING));
|
||||
if (state.hasProperty(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE)) {
|
||||
if (rotationAxis == newFacing.getAxis() && rotation.ordinal() % 2 == 1)
|
||||
state = state.cycle(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE);
|
||||
}
|
||||
state = state.setValue(FACING, newFacing);
|
||||
|
||||
state = state.setValue(FACING, rotateFacing(state.getValue(FACING)));
|
||||
} else if (state.hasProperty(AXIS)) {
|
||||
state = state.setValue(AXIS, transformAxis(state.getValue(AXIS)));
|
||||
|
||||
state = state.setValue(AXIS, rotateAxis(state.getValue(AXIS)));
|
||||
} else if (halfTurn) {
|
||||
|
||||
if (state.hasProperty(FACING)) {
|
||||
Direction stateFacing = state.getValue(FACING);
|
||||
if (stateFacing.getAxis() == rotationAxis)
|
||||
return state;
|
||||
}
|
||||
|
||||
if (state.hasProperty(HORIZONTAL_FACING)) {
|
||||
Direction stateFacing = state.getValue(HORIZONTAL_FACING);
|
||||
if (stateFacing.getAxis() == rotationAxis)
|
||||
|
@ -216,6 +189,7 @@ public class StructureTransform {
|
|||
}
|
||||
|
||||
state = state.rotate(rotation);
|
||||
|
||||
if (state.hasProperty(SlabBlock.TYPE) && state.getValue(SlabBlock.TYPE) != SlabType.DOUBLE)
|
||||
state = state.setValue(SlabBlock.TYPE,
|
||||
state.getValue(SlabBlock.TYPE) == SlabType.BOTTOM ? SlabType.TOP : SlabType.BOTTOM);
|
||||
|
@ -244,125 +218,21 @@ public class StructureTransform {
|
|||
return state;
|
||||
}
|
||||
|
||||
protected BlockState transformBelt(BlockState state, boolean halfTurn) {
|
||||
Direction initialDirection = state.getValue(BeltBlock.HORIZONTAL_FACING);
|
||||
boolean diagonal =
|
||||
state.getValue(BeltBlock.SLOPE) == BeltSlope.DOWNWARD || state.getValue(BeltBlock.SLOPE) == BeltSlope.UPWARD;
|
||||
|
||||
if (!diagonal) {
|
||||
for (int i = 0; i < rotation.ordinal(); i++) {
|
||||
Direction direction = state.getValue(BeltBlock.HORIZONTAL_FACING);
|
||||
BeltSlope slope = state.getValue(BeltBlock.SLOPE);
|
||||
boolean vertical = slope == BeltSlope.VERTICAL;
|
||||
boolean horizontal = slope == BeltSlope.HORIZONTAL;
|
||||
boolean sideways = slope == BeltSlope.SIDEWAYS;
|
||||
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope newSlope = BeltSlope.VERTICAL;
|
||||
|
||||
if (vertical) {
|
||||
if (direction.getAxis() == rotationAxis) {
|
||||
newDirection = direction.getCounterClockWise();
|
||||
newSlope = BeltSlope.SIDEWAYS;
|
||||
} else {
|
||||
newSlope = BeltSlope.HORIZONTAL;
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == Axis.Z)
|
||||
newDirection = direction.getOpposite();
|
||||
}
|
||||
}
|
||||
|
||||
if (sideways) {
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == rotationAxis)
|
||||
newSlope = BeltSlope.HORIZONTAL;
|
||||
else
|
||||
newDirection = direction.getCounterClockWise();
|
||||
}
|
||||
|
||||
if (horizontal) {
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == rotationAxis)
|
||||
newSlope = BeltSlope.SIDEWAYS;
|
||||
else if (direction.getAxis() != Axis.Z)
|
||||
newDirection = direction.getOpposite();
|
||||
}
|
||||
|
||||
state = state.setValue(BeltBlock.HORIZONTAL_FACING, newDirection);
|
||||
state = state.setValue(BeltBlock.SLOPE, newSlope);
|
||||
}
|
||||
|
||||
} else if (initialDirection.getAxis() != rotationAxis) {
|
||||
for (int i = 0; i < rotation.ordinal(); i++) {
|
||||
Direction direction = state.getValue(BeltBlock.HORIZONTAL_FACING);
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope slope = state.getValue(BeltBlock.SLOPE);
|
||||
boolean upward = slope == BeltSlope.UPWARD;
|
||||
boolean downward = slope == BeltSlope.DOWNWARD;
|
||||
|
||||
// Rotate diagonal
|
||||
if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ downward ^ direction.getAxis() == Axis.Z) {
|
||||
state = state.setValue(BeltBlock.SLOPE, upward ? BeltSlope.DOWNWARD : BeltSlope.UPWARD);
|
||||
} else {
|
||||
state = state.setValue(BeltBlock.HORIZONTAL_FACING, newDirection);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (halfTurn) {
|
||||
Direction direction = state.getValue(BeltBlock.HORIZONTAL_FACING);
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope slope = state.getValue(BeltBlock.SLOPE);
|
||||
boolean vertical = slope == BeltSlope.VERTICAL;
|
||||
|
||||
if (diagonal) {
|
||||
state = state.setValue(BeltBlock.SLOPE, slope == BeltSlope.UPWARD ? BeltSlope.DOWNWARD
|
||||
: slope == BeltSlope.DOWNWARD ? BeltSlope.UPWARD : slope);
|
||||
} else if (vertical) {
|
||||
state = state.setValue(BeltBlock.HORIZONTAL_FACING, newDirection);
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
public Axis transformAxis(Axis axisIn) {
|
||||
Direction facing = Direction.get(AxisDirection.POSITIVE, axisIn);
|
||||
facing = transformFacing(facing);
|
||||
Axis axis = facing.getAxis();
|
||||
return axis;
|
||||
}
|
||||
|
||||
public Direction transformFacing(Direction facing) {
|
||||
public Direction mirrorFacing(Direction facing) {
|
||||
if (mirror != null)
|
||||
facing = mirror.mirror(facing);
|
||||
for (int i = 0; i < rotation.ordinal(); i++)
|
||||
facing = DirectionHelper.rotateAround(facing, rotationAxis);
|
||||
return mirror.mirror(facing);
|
||||
return facing;
|
||||
}
|
||||
|
||||
private BlockState rotateChassis(BlockState state) {
|
||||
if (rotation == Rotation.NONE)
|
||||
return state;
|
||||
public Axis rotateAxis(Axis axis) {
|
||||
Direction facing = Direction.get(AxisDirection.POSITIVE, axis);
|
||||
return rotateFacing(facing).getAxis();
|
||||
}
|
||||
|
||||
BlockState rotated = state.setValue(AXIS, transformAxis(state.getValue(AXIS)));
|
||||
AbstractChassisBlock block = (AbstractChassisBlock) state.getBlock();
|
||||
|
||||
for (Direction face : Iterate.directions) {
|
||||
BooleanProperty glueableSide = block.getGlueableSide(rotated, face);
|
||||
if (glueableSide != null)
|
||||
rotated = rotated.setValue(glueableSide, false);
|
||||
}
|
||||
|
||||
for (Direction face : Iterate.directions) {
|
||||
BooleanProperty glueableSide = block.getGlueableSide(state, face);
|
||||
if (glueableSide == null || !state.getValue(glueableSide))
|
||||
continue;
|
||||
Direction rotatedFacing = transformFacing(face);
|
||||
BooleanProperty rotatedGlueableSide = block.getGlueableSide(rotated, rotatedFacing);
|
||||
if (rotatedGlueableSide != null)
|
||||
rotated = rotated.setValue(rotatedGlueableSide, true);
|
||||
}
|
||||
|
||||
return rotated;
|
||||
public Direction rotateFacing(Direction facing) {
|
||||
for (int i = 0; i < rotation.ordinal(); i++)
|
||||
facing = facing.getClockWise(rotationAxis);
|
||||
return facing;
|
||||
}
|
||||
|
||||
public static StructureTransform fromBuffer(FriendlyByteBuf buffer) {
|
||||
|
|
|
@ -3,6 +3,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch
|
|||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
@ -26,7 +28,7 @@ import net.minecraft.world.phys.BlockHitResult;
|
|||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, ITE<ChassisTileEntity> {
|
||||
public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, ITE<ChassisTileEntity>, ITransformableBlock {
|
||||
|
||||
public AbstractChassisBlock(Properties properties) {
|
||||
super(properties);
|
||||
|
@ -132,6 +134,44 @@ public abstract class AbstractChassisBlock extends RotatedPillarBlock implements
|
|||
return mirrored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState transform(BlockState state, StructureTransform transform) {
|
||||
if (transform.mirror != null) {
|
||||
state = mirror(state, transform.mirror);
|
||||
}
|
||||
|
||||
if (transform.rotationAxis == Direction.Axis.Y) {
|
||||
return rotate(state, transform.rotation);
|
||||
}
|
||||
return transformInner(state, transform);
|
||||
}
|
||||
|
||||
protected BlockState transformInner(BlockState state, StructureTransform transform) {
|
||||
if (transform.rotation == Rotation.NONE)
|
||||
return state;
|
||||
|
||||
BlockState rotated = state.setValue(AXIS, transform.rotateAxis(state.getValue(AXIS)));
|
||||
AbstractChassisBlock block = (AbstractChassisBlock) state.getBlock();
|
||||
|
||||
for (Direction face : Iterate.directions) {
|
||||
BooleanProperty glueableSide = block.getGlueableSide(rotated, face);
|
||||
if (glueableSide != null)
|
||||
rotated = rotated.setValue(glueableSide, false);
|
||||
}
|
||||
|
||||
for (Direction face : Iterate.directions) {
|
||||
BooleanProperty glueableSide = block.getGlueableSide(state, face);
|
||||
if (glueableSide == null || !state.getValue(glueableSide))
|
||||
continue;
|
||||
Direction rotatedFacing = transform.rotateFacing(face);
|
||||
BooleanProperty rotatedGlueableSide = block.getGlueableSide(rotated, rotatedFacing);
|
||||
if (rotatedGlueableSide != null)
|
||||
rotated = rotated.setValue(rotatedGlueableSide, true);
|
||||
}
|
||||
|
||||
return rotated;
|
||||
}
|
||||
|
||||
public abstract BooleanProperty getGlueableSide(BlockState state, Direction face);
|
||||
|
||||
protected boolean glueAllowedOnSide(BlockGetter world, BlockPos pos, BlockState state, Direction side) {
|
||||
|
|
|
@ -7,6 +7,8 @@ import com.simibubi.create.AllTileEntities;
|
|||
import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.KineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||
|
||||
|
@ -35,7 +37,7 @@ import net.minecraftforge.api.distmarker.Dist;
|
|||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
||||
public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements ITE<SequencedGearshiftTileEntity> {
|
||||
public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements ITE<SequencedGearshiftTileEntity>, ITransformableBlock {
|
||||
|
||||
public static final BooleanProperty VERTICAL = BooleanProperty.create("vertical");
|
||||
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
||||
|
@ -166,4 +168,24 @@ public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implemen
|
|||
.intValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState transform(BlockState state, StructureTransform transform) {
|
||||
if (transform.mirror != null) {
|
||||
state = mirror(state, transform.mirror);
|
||||
}
|
||||
|
||||
if (transform.rotationAxis == Direction.Axis.Y) {
|
||||
return rotate(state, transform.rotation);
|
||||
}
|
||||
|
||||
if (transform.rotation.ordinal() % 2 == 1) {
|
||||
if (transform.rotationAxis != state.getValue(HORIZONTAL_AXIS)) {
|
||||
return state.cycle(VERTICAL);
|
||||
} else if (state.getValue(VERTICAL)) {
|
||||
return state.cycle(VERTICAL).cycle(HORIZONTAL_AXIS);
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ import com.simibubi.create.AllTileEntities;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.content.contraptions.processing.EmptyingByBasin;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlicer.Feedback;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType;
|
||||
|
@ -82,7 +84,7 @@ import net.minecraftforge.common.Tags;
|
|||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEntity>, ISpecialBlockItemRequirement {
|
||||
public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEntity>, ISpecialBlockItemRequirement, ITransformableBlock {
|
||||
|
||||
public static final Property<BeltSlope> SLOPE = EnumProperty.create("slope", BeltSlope.class);
|
||||
public static final Property<BeltPart> PART = EnumProperty.create("part", BeltPart.class);
|
||||
|
@ -594,6 +596,100 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
|
|||
return rotate;
|
||||
}
|
||||
|
||||
public BlockState transform(BlockState state, StructureTransform transform) {
|
||||
if (transform.mirror != null) {
|
||||
state = mirror(state, transform.mirror);
|
||||
}
|
||||
|
||||
if (transform.rotationAxis == Direction.Axis.Y) {
|
||||
return rotate(state, transform.rotation);
|
||||
}
|
||||
return transformInner(state, transform);
|
||||
}
|
||||
|
||||
protected BlockState transformInner(BlockState state, StructureTransform transform) {
|
||||
boolean halfTurn = transform.rotation == Rotation.CLOCKWISE_180;
|
||||
|
||||
Direction initialDirection = state.getValue(HORIZONTAL_FACING);
|
||||
boolean diagonal =
|
||||
state.getValue(SLOPE) == BeltSlope.DOWNWARD || state.getValue(SLOPE) == BeltSlope.UPWARD;
|
||||
|
||||
if (!diagonal) {
|
||||
for (int i = 0; i < transform.rotation.ordinal(); i++) {
|
||||
Direction direction = state.getValue(HORIZONTAL_FACING);
|
||||
BeltSlope slope = state.getValue(SLOPE);
|
||||
boolean vertical = slope == BeltSlope.VERTICAL;
|
||||
boolean horizontal = slope == BeltSlope.HORIZONTAL;
|
||||
boolean sideways = slope == BeltSlope.SIDEWAYS;
|
||||
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope newSlope = BeltSlope.VERTICAL;
|
||||
|
||||
if (vertical) {
|
||||
if (direction.getAxis() == transform.rotationAxis) {
|
||||
newDirection = direction.getCounterClockWise();
|
||||
newSlope = BeltSlope.SIDEWAYS;
|
||||
} else {
|
||||
newSlope = BeltSlope.HORIZONTAL;
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == Axis.Z)
|
||||
newDirection = direction.getOpposite();
|
||||
}
|
||||
}
|
||||
|
||||
if (sideways) {
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == transform.rotationAxis)
|
||||
newSlope = BeltSlope.HORIZONTAL;
|
||||
else
|
||||
newDirection = direction.getCounterClockWise();
|
||||
}
|
||||
|
||||
if (horizontal) {
|
||||
newDirection = direction;
|
||||
if (direction.getAxis() == transform.rotationAxis)
|
||||
newSlope = BeltSlope.SIDEWAYS;
|
||||
else if (direction.getAxis() != Axis.Z)
|
||||
newDirection = direction.getOpposite();
|
||||
}
|
||||
|
||||
state = state.setValue(HORIZONTAL_FACING, newDirection);
|
||||
state = state.setValue(SLOPE, newSlope);
|
||||
}
|
||||
|
||||
} else if (initialDirection.getAxis() != transform.rotationAxis) {
|
||||
for (int i = 0; i < transform.rotation.ordinal(); i++) {
|
||||
Direction direction = state.getValue(HORIZONTAL_FACING);
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope slope = state.getValue(SLOPE);
|
||||
boolean upward = slope == BeltSlope.UPWARD;
|
||||
boolean downward = slope == BeltSlope.DOWNWARD;
|
||||
|
||||
// Rotate diagonal
|
||||
if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ downward ^ direction.getAxis() == Axis.Z) {
|
||||
state = state.setValue(SLOPE, upward ? BeltSlope.DOWNWARD : BeltSlope.UPWARD);
|
||||
} else {
|
||||
state = state.setValue(HORIZONTAL_FACING, newDirection);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (halfTurn) {
|
||||
Direction direction = state.getValue(HORIZONTAL_FACING);
|
||||
Direction newDirection = direction.getOpposite();
|
||||
BeltSlope slope = state.getValue(SLOPE);
|
||||
boolean vertical = slope == BeltSlope.VERTICAL;
|
||||
|
||||
if (diagonal) {
|
||||
state = state.setValue(SLOPE, slope == BeltSlope.UPWARD ? BeltSlope.DOWNWARD
|
||||
: slope == BeltSlope.DOWNWARD ? BeltSlope.UPWARD : slope);
|
||||
} else if (vertical) {
|
||||
state = state.setValue(HORIZONTAL_FACING, newDirection);
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) {
|
||||
return false;
|
||||
|
|
|
@ -6,12 +6,15 @@ import com.simibubi.create.content.contraptions.base.CasingBlock;
|
|||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity;
|
||||
import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement;
|
||||
import com.simibubi.create.content.schematics.ItemRequirement;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.VoxelShaper;
|
||||
import com.tterrag.registrate.util.entry.BlockEntry;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -29,6 +32,8 @@ import net.minecraft.world.level.BlockGetter;
|
|||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Mirror;
|
||||
import net.minecraft.world.level.block.Rotation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
@ -38,7 +43,7 @@ import net.minecraft.world.phys.BlockHitResult;
|
|||
import net.minecraft.world.phys.HitResult;
|
||||
|
||||
public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
|
||||
implements ICogWheel, ITE<SimpleKineticTileEntity>, ISpecialBlockItemRequirement {
|
||||
implements ICogWheel, ITE<SimpleKineticTileEntity>, ISpecialBlockItemRequirement, ITransformableBlock {
|
||||
|
||||
public static final BooleanProperty TOP_SHAFT = BooleanProperty.create("top_shaft");
|
||||
public static final BooleanProperty BOTTOM_SHAFT = BooleanProperty.create("bottom_shaft");
|
||||
|
@ -120,6 +125,16 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
|
|||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) {
|
||||
originalState = swapShaftsForRotation(originalState, Rotation.CLOCKWISE_90, targetedFace.getAxis());
|
||||
return originalState.setValue(RotatedPillarKineticBlock.AXIS,
|
||||
VoxelShaper
|
||||
.axisAsFace(originalState.getValue(RotatedPillarKineticBlock.AXIS))
|
||||
.getClockWise(targetedFace.getAxis())
|
||||
.getAxis());
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
|
||||
if (context.getLevel().isClientSide)
|
||||
|
@ -170,6 +185,81 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
|
|||
return state.getValue(AXIS);
|
||||
}
|
||||
|
||||
public BlockState swapShafts(BlockState state) {
|
||||
boolean bottom = state.getValue(BOTTOM_SHAFT);
|
||||
boolean top = state.getValue(TOP_SHAFT);
|
||||
state = state.setValue(BOTTOM_SHAFT, top);
|
||||
state = state.setValue(TOP_SHAFT, bottom);
|
||||
return state;
|
||||
}
|
||||
|
||||
public BlockState swapShaftsForRotation(BlockState state, Rotation rotation, Direction.Axis rotationAxis) {
|
||||
if (rotation == Rotation.NONE) {
|
||||
return state;
|
||||
}
|
||||
|
||||
Direction.Axis axis = state.getValue(AXIS);
|
||||
if (axis == rotationAxis) {
|
||||
return state;
|
||||
}
|
||||
|
||||
if (rotation == Rotation.CLOCKWISE_180) {
|
||||
return swapShafts(state);
|
||||
}
|
||||
|
||||
boolean clockwise = rotation == Rotation.CLOCKWISE_90;
|
||||
|
||||
if (rotationAxis == Direction.Axis.X) {
|
||||
if ( axis == Direction.Axis.Z && !clockwise
|
||||
|| axis == Direction.Axis.Y && clockwise) {
|
||||
return swapShafts(state);
|
||||
}
|
||||
} else if (rotationAxis == Direction.Axis.Y) {
|
||||
if ( axis == Direction.Axis.X && !clockwise
|
||||
|| axis == Direction.Axis.Z && clockwise) {
|
||||
return swapShafts(state);
|
||||
}
|
||||
} else if (rotationAxis == Direction.Axis.Z) {
|
||||
if ( axis == Direction.Axis.Y && !clockwise
|
||||
|| axis == Direction.Axis.X && clockwise) {
|
||||
return swapShafts(state);
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState mirror(BlockState state, Mirror mirror) {
|
||||
Direction.Axis axis = state.getValue(AXIS);
|
||||
if (axis == Direction.Axis.X && mirror == Mirror.FRONT_BACK
|
||||
|| axis == Direction.Axis.Z && mirror == Mirror.LEFT_RIGHT) {
|
||||
return swapShafts(state);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState rotate(BlockState state, Rotation rotation) {
|
||||
state = swapShaftsForRotation(state, rotation, Direction.Axis.Y);
|
||||
return super.rotate(state, rotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState transform(BlockState state, StructureTransform transform) {
|
||||
if (transform.mirror != null) {
|
||||
state = mirror(state, transform.mirror);
|
||||
}
|
||||
|
||||
if (transform.rotationAxis == Direction.Axis.Y) {
|
||||
return rotate(state, transform.rotation);
|
||||
}
|
||||
|
||||
state = swapShaftsForRotation(state, transform.rotation, transform.rotationAxis);
|
||||
state = state.setValue(AXIS, transform.rotateAxis(state.getValue(AXIS)));
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
|
||||
return ItemRequirement
|
||||
|
|
|
@ -9,7 +9,6 @@ import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock;
|
|||
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
|
||||
import com.simibubi.create.foundation.utility.DirectionHelper;
|
||||
import com.simibubi.create.foundation.utility.VoxelShaper;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -81,20 +80,20 @@ public interface IWrenchable {
|
|||
|
||||
if (targetedFace.getAxis() == Direction.Axis.Y) {
|
||||
if (originalState.hasProperty(HorizontalAxisKineticBlock.HORIZONTAL_AXIS))
|
||||
return originalState.setValue(HorizontalAxisKineticBlock.HORIZONTAL_AXIS, DirectionHelper
|
||||
.rotateAround(VoxelShaper.axisAsFace(originalState.getValue(HorizontalAxisKineticBlock.HORIZONTAL_AXIS)),
|
||||
targetedFace.getAxis())
|
||||
return originalState.setValue(HorizontalAxisKineticBlock.HORIZONTAL_AXIS, VoxelShaper
|
||||
.axisAsFace(originalState.getValue(HorizontalAxisKineticBlock.HORIZONTAL_AXIS))
|
||||
.getClockWise(targetedFace.getAxis())
|
||||
.getAxis());
|
||||
if (originalState.hasProperty(HorizontalKineticBlock.HORIZONTAL_FACING))
|
||||
return originalState.setValue(HorizontalKineticBlock.HORIZONTAL_FACING, DirectionHelper
|
||||
.rotateAround(originalState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING), targetedFace.getAxis()));
|
||||
return originalState.setValue(HorizontalKineticBlock.HORIZONTAL_FACING, originalState
|
||||
.getValue(HorizontalKineticBlock.HORIZONTAL_FACING).getClockWise(targetedFace.getAxis()));
|
||||
}
|
||||
|
||||
if (originalState.hasProperty(RotatedPillarKineticBlock.AXIS))
|
||||
return originalState.setValue(RotatedPillarKineticBlock.AXIS,
|
||||
DirectionHelper
|
||||
.rotateAround(VoxelShaper.axisAsFace(originalState.getValue(RotatedPillarKineticBlock.AXIS)),
|
||||
targetedFace.getAxis())
|
||||
VoxelShaper
|
||||
.axisAsFace(originalState.getValue(RotatedPillarKineticBlock.AXIS))
|
||||
.getClockWise(targetedFace.getAxis())
|
||||
.getAxis());
|
||||
|
||||
if (!originalState.hasProperty(DirectionalKineticBlock.FACING))
|
||||
|
@ -111,7 +110,7 @@ public interface IWrenchable {
|
|||
} else {
|
||||
do {
|
||||
newState = newState.setValue(DirectionalKineticBlock.FACING,
|
||||
DirectionHelper.rotateAround(newState.getValue(DirectionalKineticBlock.FACING), targetedFace.getAxis()));
|
||||
newState.getValue(DirectionalKineticBlock.FACING).getClockWise(targetedFace.getAxis()));
|
||||
if (targetedFace.getAxis() == Direction.Axis.Y
|
||||
&& newState.hasProperty(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE))
|
||||
newState = newState.cycle(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE);
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.curiosities.armor;
|
|||
import com.simibubi.create.AllEnchantments;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
|
@ -28,7 +29,7 @@ public class BackTankUtil {
|
|||
|
||||
public static ItemStack get(LivingEntity entity) {
|
||||
for (ItemStack itemStack : entity.getArmorSlots())
|
||||
if (AllItems.COPPER_BACKTANK.isIn(itemStack))
|
||||
if (AllTags.AllItemTags.PRESSURIZED_AIR_SOURCES.matches(itemStack))
|
||||
return itemStack;
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
|
|
@ -151,7 +151,10 @@ public class ArmInteractionPoint {
|
|||
if (type == null)
|
||||
return null;
|
||||
BlockPos pos = NbtUtils.readBlockPos(nbt.getCompound("Pos")).offset(anchor);
|
||||
ArmInteractionPoint point = type.createPoint(level, pos, level.getBlockState(pos));
|
||||
BlockState state = level.getBlockState(pos);
|
||||
if (!type.canCreatePoint(level, pos, state))
|
||||
return null;
|
||||
ArmInteractionPoint point = type.createPoint(level, pos, state);
|
||||
if (point == null)
|
||||
return null;
|
||||
point.deserialize(nbt, anchor);
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
|||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.SectionPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
|
@ -39,6 +40,7 @@ import net.minecraft.world.level.Level;
|
|||
import net.minecraft.world.level.block.JukeboxBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkSource;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
|
@ -410,10 +412,45 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE
|
|||
notifyUpdate();
|
||||
}
|
||||
|
||||
// ClientLevel#hasChunk (and consequently #isAreaLoaded) always returns true,
|
||||
// so manually check the ChunkSource to avoid weird behavior on the client side
|
||||
protected boolean isAreaActuallyLoaded(BlockPos center, int range) {
|
||||
if (!level.isAreaLoaded(center, range)) {
|
||||
return false;
|
||||
}
|
||||
if (level.isClientSide) {
|
||||
int minY = center.getY() - range;
|
||||
int maxY = center.getY() + range;
|
||||
if (maxY < level.getMinBuildHeight() || minY >= level.getMaxBuildHeight()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int minX = center.getX() - range;
|
||||
int minZ = center.getZ() - range;
|
||||
int maxX = center.getX() + range;
|
||||
int maxZ = center.getZ() + range;
|
||||
|
||||
int minChunkX = SectionPos.blockToSectionCoord(minX);
|
||||
int maxChunkX = SectionPos.blockToSectionCoord(maxX);
|
||||
int minChunkZ = SectionPos.blockToSectionCoord(minZ);
|
||||
int maxChunkZ = SectionPos.blockToSectionCoord(maxZ);
|
||||
|
||||
ChunkSource chunkSource = level.getChunkSource();
|
||||
for (int chunkX = minChunkX; chunkX <= maxChunkX; ++chunkX) {
|
||||
for (int chunkZ = minChunkZ; chunkZ <= maxChunkZ; ++chunkZ) {
|
||||
if (!chunkSource.hasChunk(chunkX, chunkZ)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void initInteractionPoints() {
|
||||
if (!updateInteractionPoints || interactionPointTag == null)
|
||||
return;
|
||||
if (!level.isAreaLoaded(worldPosition, getRange() + 1))
|
||||
if (!isAreaActuallyLoaded(worldPosition, getRange() + 1))
|
||||
return;
|
||||
inputs.clear();
|
||||
outputs.clear();
|
||||
|
@ -506,7 +543,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE
|
|||
previousTarget = previousPoint == null ? ArmAngleTarget.NO_TARGET
|
||||
: previousPoint.getTargetAngles(worldPosition, ceiling);
|
||||
if (previousPoint != null)
|
||||
previousBaseAngle = previousPoint.getTargetAngles(worldPosition, ceiling).baseAngle;
|
||||
previousBaseAngle = previousTarget.baseAngle;
|
||||
|
||||
ArmInteractionPoint targetedPoint = getTargetedInteractionPoint();
|
||||
if (targetedPoint != null)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.simibubi.create.foundation.block;
|
||||
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.utility.DirectionHelper;
|
||||
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
|
@ -31,7 +30,7 @@ public class WrenchableDirectionalBlock extends DirectionalBlock implements IWre
|
|||
if (facing.getAxis() == targetedFace.getAxis())
|
||||
return originalState;
|
||||
|
||||
Direction newFacing = DirectionHelper.rotateAround(facing, targetedFace.getAxis());
|
||||
Direction newFacing = facing.getClockWise(targetedFace.getAxis());
|
||||
|
||||
return originalState.setValue(FACING, newFacing);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import com.simibubi.create.content.logistics.trains.CameraDistanceModifier;
|
||||
|
@ -26,15 +27,13 @@ public abstract class CameraMixin {
|
|||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@Inject(
|
||||
@ModifyArg(
|
||||
method = "Lnet/minecraft/client/Camera;setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;move(DDD)V", ordinal = 0),
|
||||
cancellable = true
|
||||
index = 0
|
||||
)
|
||||
public void modifySetup(BlockGetter pLevel, Entity pEntity, boolean pDetached, boolean pThirdPersonReverse, float pPartialTick, CallbackInfo ci) {
|
||||
move(-this.getMaxZoom(4.0D * CameraDistanceModifier.getMultiplier(AnimationTickHolder.getPartialTicks())), 0, 0);
|
||||
ci.cancel();
|
||||
public double modifyCameraOffset(double originalValue) {
|
||||
return -this.getMaxZoom(4.0D * CameraDistanceModifier.getMultiplier(AnimationTickHolder.getPartialTicks()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import static net.minecraft.core.Direction.DOWN;
|
||||
import static net.minecraft.core.Direction.EAST;
|
||||
import static net.minecraft.core.Direction.NORTH;
|
||||
import static net.minecraft.core.Direction.SOUTH;
|
||||
import static net.minecraft.core.Direction.UP;
|
||||
import static net.minecraft.core.Direction.WEST;
|
||||
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
|
||||
/**
|
||||
* A bunch of methods that got stripped out of Direction in 1.15
|
||||
*
|
||||
* @author Mojang
|
||||
*/
|
||||
public class DirectionHelper {
|
||||
|
||||
public static Direction rotateAround(Direction dir, Direction.Axis axis) {
|
||||
switch (axis) {
|
||||
case X:
|
||||
if (dir != WEST && dir != EAST) {
|
||||
return rotateX(dir);
|
||||
}
|
||||
|
||||
return dir;
|
||||
case Y:
|
||||
if (dir != UP && dir != DOWN) {
|
||||
return dir.getClockWise();
|
||||
}
|
||||
|
||||
return dir;
|
||||
case Z:
|
||||
if (dir != NORTH && dir != SOUTH) {
|
||||
return rotateZ(dir);
|
||||
}
|
||||
|
||||
return dir;
|
||||
default:
|
||||
throw new IllegalStateException("Unable to get CW facing for axis " + axis);
|
||||
}
|
||||
}
|
||||
|
||||
public static Direction rotateX(Direction dir) {
|
||||
switch (dir) {
|
||||
case NORTH:
|
||||
return DOWN;
|
||||
case EAST:
|
||||
case WEST:
|
||||
default:
|
||||
throw new IllegalStateException("Unable to get X-rotated facing of " + dir);
|
||||
case SOUTH:
|
||||
return UP;
|
||||
case UP:
|
||||
return NORTH;
|
||||
case DOWN:
|
||||
return SOUTH;
|
||||
}
|
||||
}
|
||||
|
||||
public static Direction rotateZ(Direction dir) {
|
||||
switch (dir) {
|
||||
case EAST:
|
||||
return DOWN;
|
||||
case SOUTH:
|
||||
default:
|
||||
throw new IllegalStateException("Unable to get Z-rotated facing of " + dir);
|
||||
case WEST:
|
||||
return UP;
|
||||
case UP:
|
||||
return EAST;
|
||||
case DOWN:
|
||||
return WEST;
|
||||
}
|
||||
}
|
||||
|
||||
public static Direction getPositivePerpendicular(Axis horizontalAxis) {
|
||||
return horizontalAxis == Axis.X ? SOUTH : EAST;
|
||||
}
|
||||
|
||||
}
|
|
@ -28,7 +28,7 @@ public enum Pointing implements StringRepresentable {
|
|||
Direction top = axis == Axis.Y ? Direction.SOUTH : Direction.UP;
|
||||
int rotations = direction.getAxisDirection() == AxisDirection.NEGATIVE ? 4 - ordinal() : ordinal();
|
||||
for (int i = 0; i < rotations; i++)
|
||||
top = DirectionHelper.rotateAround(top, axis);
|
||||
top = top.getClockWise(axis);
|
||||
return top;
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -529,6 +529,11 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "Contains: %1$s x%2$s",
|
||||
|
||||
"create.tooltip.deployer.header": "Deployer Information",
|
||||
"create.tooltip.deployer.using": "Deployer is Using",
|
||||
"create.tooltip.deployer.punching": "Deployer is Punching",
|
||||
"create.tooltip.deployer.contains": "Holding: %1$s x%2$s",
|
||||
|
||||
"create.tooltip.brass_tunnel.contains": "Currently distributing:",
|
||||
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
|
||||
"create.tooltip.brass_tunnel.retrieve": "Right-Click to retrieve",
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue