diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 930143f56..2e20ab325 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -49,6 +49,7 @@ body: label: Mod Version description: The version of the mod you were using when the bug occured options: + - "0.4.0b" - "0.4.0a" - "0.4.0" - "0.3.2g" diff --git a/build.gradle b/build.gradle index 6d0dfe039..af3d0dfae 100644 --- a/build.gradle +++ b/build.gradle @@ -17,11 +17,10 @@ plugins { id 'com.matthewprenger.cursegradle' version "${cursegradle_version}" } apply plugin: 'net.minecraftforge.gradle' -// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' apply plugin: 'org.spongepowered.mixin' -apply plugin: 'org.parchmentmc.librarian.forgegradle' boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); // jozu: I use a gradle workspace with both projects. diff --git a/gradle.properties b/gradle.properties index 38c209086..c6bff3a9c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.4a +mod_version = 0.4b minecraft_version = 1.18.1 forge_version = 39.0.8 @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.4.2-rc.26 +flywheel_version = 1.18-0.5.1.42 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index b607c4402..e844a97e2 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -537,13 +537,13 @@ f7b78c385c001eccef20718886ec62aebb49920b assets/create/lang/unfinished/de_de.jso a8cc635c26b070336407991f068e7b42b476aed7 assets/create/lang/unfinished/es_es.json ce38f5577b7b96460025372563ee88cef2318e7c assets/create/lang/unfinished/fr_fr.json 2c85e6efd817348d94c55292e20fadf6b704209c assets/create/lang/unfinished/it_it.json -5f72b4b2cee27254765f63e309568bcec78959f4 assets/create/lang/unfinished/ja_jp.json -26880b09a44d9642be8764fbbae52e384fd5883b assets/create/lang/unfinished/ko_kr.json +f6ed2a6f0f241e73f1e6a88b8500043ef0668b1d assets/create/lang/unfinished/ja_jp.json +133188f5196da148f9dd8aa122d9b008daf36685 assets/create/lang/unfinished/ko_kr.json 983b53cab576e43b0e61f899590b6488d220cd36 assets/create/lang/unfinished/nl_nl.json 0d4aa18fa90d8620d4761ce2fbe900ef8f407a50 assets/create/lang/unfinished/pl_pl.json -776f4179fd212ca6faf0d66ad08bf204f019db6a assets/create/lang/unfinished/pt_br.json +2c765f1b8ea570d837212a7e86aec653fe155477 assets/create/lang/unfinished/pt_br.json 9a1d7bbd01321fae009c00bbf5b2bc091ef38e13 assets/create/lang/unfinished/ru_ru.json -703c7a655bedc1f1a59ba6c6df5a3f7f56f28bee assets/create/lang/unfinished/zh_cn.json +ecc1c5d0b5434804db76a5b6d4a589b16fa490be assets/create/lang/unfinished/zh_cn.json b316488ca9891c2444a6df03bc5ddfbcd1f84de0 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 @@ -4103,7 +4103,6 @@ a7c97582bae243ab04ff5ff9914b24af25d40d59 data/create/recipes/crushing/iron_horse 554b6555888fe01de349efaaab36b68a338ac397 data/create/recipes/crushing/iron_ore.json c9a9d6d28a7eac1210108d52840b60b26d58bcfe data/create/recipes/crushing/lapis_ore.json e870d049abc5cd5f389f70414c67e76ddc14060d data/create/recipes/crushing/leather_horse_armor.json -a3b45ccedd37bfc7e69eb72863576b6482f6fddf data/create/recipes/crushing/magma_block.json cc5a817901d6f0d68e4ceb3e65d7f2187ab37ceb data/create/recipes/crushing/nether_gold_ore.json 6cd97c6f12687790943db810f85036b02586c753 data/create/recipes/crushing/nether_quartz_ore.json 6e424d7e9f7d8b585384053a713db28f9d36448b data/create/recipes/crushing/nether_wart_block.json @@ -5216,10 +5215,14 @@ fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/forge/tags/items/storage_blocks.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/azalea_root_replaceable.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/minecraft/tags/blocks/beacon_base_blocks.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json 59681910c06f8b7385c6641a409d352056235506 data/minecraft/tags/blocks/mineable/axe.json f8c66b3808efb61d2d928748783bb7eb8a1357f9 data/minecraft/tags/blocks/mineable/pickaxe.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json 6bcabbc1c0479caa80a0ebc676bb34ce0052efb0 data/minecraft/tags/blocks/rails.json diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index c00561beb..ff5916b75 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,26 +1,26 @@ { - "_": "Missing Localizations: 333", + "_": "Missing Localizations: 3", "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓板", + "block.create.acacia_window_pane": "アカシアの板窓", "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", "block.create.analog_lever": "アナログレバー", - "block.create.andesite_belt_funnel": "安山岩のベルトファンネル", + "block.create.andesite_belt_funnel": "安山岩ベルトファンネル", "block.create.andesite_casing": "安山岩ケーシング", - "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", - "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", - "block.create.andesite_encased_shaft": "安山岩のケース入りシャフト", + "block.create.andesite_encased_cogwheel": "安山岩ケース入り歯車", + "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", + "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", "block.create.andesite_pillar": "安山岩の柱", "block.create.andesite_tunnel": "安山岩トンネル", - "block.create.asurine": "UNLOCALIZED: Asurine", - "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", + "block.create.asurine": "瑠璃岩", + "block.create.asurine_pillar": "瑠璃岩の柱", "block.create.basin": "鉢", "block.create.belt": "メカニカルベルト", "block.create.birch_window": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓板", + "block.create.birch_window_pane": "シラカバの板窓", "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", @@ -32,12 +32,12 @@ "block.create.blue_seat": "青色のシート", "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", + "block.create.brass_belt_funnel": "真鍮ベルトファンネル", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", - "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", - "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", - "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", + "block.create.brass_encased_cogwheel": "真鍮ケース入り歯車", + "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", + "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", @@ -45,7 +45,7 @@ "block.create.brown_seat": "茶色のシート", "block.create.brown_toolbox": "茶色の工具箱", "block.create.brown_valve_handle": "茶色のバルブハンドル", - "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", + "block.create.calcite_pillar": "方解石の柱", "block.create.cart_assembler": "トロッコアセンブラ", "block.create.chocolate": "チョコレート", "block.create.chute": "シュート", @@ -56,163 +56,163 @@ "block.create.controller_rail": "コントローラーレール", "block.create.copper_backtank": "銅のバックタンク", "block.create.copper_casing": "銅ケーシング", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "銅の屋根板のハーフブロック", + "block.create.copper_shingle_stairs": "銅の屋根板の階段", "block.create.copper_shingles": "銅の屋根板", - "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", - "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", + "block.create.copper_tile_slab": "銅タイルのハーフブロック", + "block.create.copper_tile_stairs": "銅タイルの階段", "block.create.copper_tiles": "銅のタイル", "block.create.copper_valve_handle": "銅のバルブハンドル", "block.create.creative_crate": "クリエティブクレート", "block.create.creative_fluid_tank": "クリエイティブ液体タンク", "block.create.creative_motor": "クリエイティブモーター", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimsite": "真紅岩", + "block.create.crimsite_pillar": "真紅岩の柱", "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓板", + "block.create.crimson_window_pane": "真紅の板窓", "block.create.crushing_wheel": "破砕ホイール", "block.create.crushing_wheel_controller": "破砕ホイールコントローラー", "block.create.cuckoo_clock": "鳩時計", - "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", - "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", - "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", - "block.create.cut_andesite_brick_wall": "UNLOCALIZED: Cut Andesite Brick Wall", - "block.create.cut_andesite_bricks": "UNLOCALIZED: Cut Andesite Bricks", - "block.create.cut_andesite_slab": "UNLOCALIZED: Cut Andesite Slab", - "block.create.cut_andesite_stairs": "UNLOCALIZED: Cut Andesite Stairs", - "block.create.cut_andesite_wall": "UNLOCALIZED: Cut Andesite Wall", - "block.create.cut_asurine": "UNLOCALIZED: Cut Asurine", - "block.create.cut_asurine_brick_slab": "UNLOCALIZED: Cut Asurine Brick Slab", - "block.create.cut_asurine_brick_stairs": "UNLOCALIZED: Cut Asurine Brick Stairs", - "block.create.cut_asurine_brick_wall": "UNLOCALIZED: Cut Asurine Brick Wall", - "block.create.cut_asurine_bricks": "UNLOCALIZED: Cut Asurine Bricks", - "block.create.cut_asurine_slab": "UNLOCALIZED: Cut Asurine Slab", - "block.create.cut_asurine_stairs": "UNLOCALIZED: Cut Asurine Stairs", - "block.create.cut_asurine_wall": "UNLOCALIZED: Cut Asurine Wall", - "block.create.cut_calcite": "UNLOCALIZED: Cut Calcite", - "block.create.cut_calcite_brick_slab": "UNLOCALIZED: Cut Calcite Brick Slab", - "block.create.cut_calcite_brick_stairs": "UNLOCALIZED: Cut Calcite Brick Stairs", - "block.create.cut_calcite_brick_wall": "UNLOCALIZED: Cut Calcite Brick Wall", - "block.create.cut_calcite_bricks": "UNLOCALIZED: Cut Calcite Bricks", - "block.create.cut_calcite_slab": "UNLOCALIZED: Cut Calcite Slab", - "block.create.cut_calcite_stairs": "UNLOCALIZED: Cut Calcite Stairs", - "block.create.cut_calcite_wall": "UNLOCALIZED: Cut Calcite Wall", - "block.create.cut_crimsite": "UNLOCALIZED: Cut Crimsite", - "block.create.cut_crimsite_brick_slab": "UNLOCALIZED: Cut Crimsite Brick Slab", - "block.create.cut_crimsite_brick_stairs": "UNLOCALIZED: Cut Crimsite Brick Stairs", - "block.create.cut_crimsite_brick_wall": "UNLOCALIZED: Cut Crimsite Brick Wall", - "block.create.cut_crimsite_bricks": "UNLOCALIZED: Cut Crimsite Bricks", - "block.create.cut_crimsite_slab": "UNLOCALIZED: Cut Crimsite Slab", - "block.create.cut_crimsite_stairs": "UNLOCALIZED: Cut Crimsite Stairs", - "block.create.cut_crimsite_wall": "UNLOCALIZED: Cut Crimsite Wall", - "block.create.cut_deepslate": "UNLOCALIZED: Cut Deepslate", - "block.create.cut_deepslate_brick_slab": "UNLOCALIZED: Cut Deepslate Brick Slab", - "block.create.cut_deepslate_brick_stairs": "UNLOCALIZED: Cut Deepslate Brick Stairs", - "block.create.cut_deepslate_brick_wall": "UNLOCALIZED: Cut Deepslate Brick Wall", - "block.create.cut_deepslate_bricks": "UNLOCALIZED: Cut Deepslate Bricks", - "block.create.cut_deepslate_slab": "UNLOCALIZED: Cut Deepslate Slab", - "block.create.cut_deepslate_stairs": "UNLOCALIZED: Cut Deepslate Stairs", - "block.create.cut_deepslate_wall": "UNLOCALIZED: Cut Deepslate Wall", - "block.create.cut_diorite": "UNLOCALIZED: Cut Diorite", - "block.create.cut_diorite_brick_slab": "UNLOCALIZED: Cut Diorite Brick Slab", - "block.create.cut_diorite_brick_stairs": "UNLOCALIZED: Cut Diorite Brick Stairs", - "block.create.cut_diorite_brick_wall": "UNLOCALIZED: Cut Diorite Brick Wall", - "block.create.cut_diorite_bricks": "UNLOCALIZED: Cut Diorite Bricks", - "block.create.cut_diorite_slab": "UNLOCALIZED: Cut Diorite Slab", - "block.create.cut_diorite_stairs": "UNLOCALIZED: Cut Diorite Stairs", - "block.create.cut_diorite_wall": "UNLOCALIZED: Cut Diorite Wall", - "block.create.cut_dripstone": "UNLOCALIZED: Cut Dripstone", - "block.create.cut_dripstone_brick_slab": "UNLOCALIZED: Cut Dripstone Brick Slab", - "block.create.cut_dripstone_brick_stairs": "UNLOCALIZED: Cut Dripstone Brick Stairs", - "block.create.cut_dripstone_brick_wall": "UNLOCALIZED: Cut Dripstone Brick Wall", - "block.create.cut_dripstone_bricks": "UNLOCALIZED: Cut Dripstone Bricks", - "block.create.cut_dripstone_slab": "UNLOCALIZED: Cut Dripstone Slab", - "block.create.cut_dripstone_stairs": "UNLOCALIZED: Cut Dripstone Stairs", - "block.create.cut_dripstone_wall": "UNLOCALIZED: Cut Dripstone Wall", - "block.create.cut_granite": "UNLOCALIZED: Cut Granite", - "block.create.cut_granite_brick_slab": "UNLOCALIZED: Cut Granite Brick Slab", - "block.create.cut_granite_brick_stairs": "UNLOCALIZED: Cut Granite Brick Stairs", - "block.create.cut_granite_brick_wall": "UNLOCALIZED: Cut Granite Brick Wall", - "block.create.cut_granite_bricks": "UNLOCALIZED: Cut Granite Bricks", - "block.create.cut_granite_slab": "UNLOCALIZED: Cut Granite Slab", - "block.create.cut_granite_stairs": "UNLOCALIZED: Cut Granite Stairs", - "block.create.cut_granite_wall": "UNLOCALIZED: Cut Granite Wall", - "block.create.cut_limestone": "UNLOCALIZED: Cut Limestone", - "block.create.cut_limestone_brick_slab": "UNLOCALIZED: Cut Limestone Brick Slab", - "block.create.cut_limestone_brick_stairs": "UNLOCALIZED: Cut Limestone Brick Stairs", - "block.create.cut_limestone_brick_wall": "UNLOCALIZED: Cut Limestone Brick Wall", - "block.create.cut_limestone_bricks": "UNLOCALIZED: Cut Limestone Bricks", - "block.create.cut_limestone_slab": "UNLOCALIZED: Cut Limestone Slab", - "block.create.cut_limestone_stairs": "UNLOCALIZED: Cut Limestone Stairs", - "block.create.cut_limestone_wall": "UNLOCALIZED: Cut Limestone Wall", - "block.create.cut_ochrum": "UNLOCALIZED: Cut Ochrum", - "block.create.cut_ochrum_brick_slab": "UNLOCALIZED: Cut Ochrum Brick Slab", - "block.create.cut_ochrum_brick_stairs": "UNLOCALIZED: Cut Ochrum Brick Stairs", - "block.create.cut_ochrum_brick_wall": "UNLOCALIZED: Cut Ochrum Brick Wall", - "block.create.cut_ochrum_bricks": "UNLOCALIZED: Cut Ochrum Bricks", - "block.create.cut_ochrum_slab": "UNLOCALIZED: Cut Ochrum Slab", - "block.create.cut_ochrum_stairs": "UNLOCALIZED: Cut Ochrum Stairs", - "block.create.cut_ochrum_wall": "UNLOCALIZED: Cut Ochrum Wall", - "block.create.cut_scorchia": "UNLOCALIZED: Cut Scorchia", - "block.create.cut_scorchia_brick_slab": "UNLOCALIZED: Cut Scorchia Brick Slab", - "block.create.cut_scorchia_brick_stairs": "UNLOCALIZED: Cut Scorchia Brick Stairs", - "block.create.cut_scorchia_brick_wall": "UNLOCALIZED: Cut Scorchia Brick Wall", - "block.create.cut_scorchia_bricks": "UNLOCALIZED: Cut Scorchia Bricks", - "block.create.cut_scorchia_slab": "UNLOCALIZED: Cut Scorchia Slab", - "block.create.cut_scorchia_stairs": "UNLOCALIZED: Cut Scorchia Stairs", - "block.create.cut_scorchia_wall": "UNLOCALIZED: Cut Scorchia Wall", - "block.create.cut_scoria": "UNLOCALIZED: Cut Scoria", - "block.create.cut_scoria_brick_slab": "UNLOCALIZED: Cut Scoria Brick Slab", - "block.create.cut_scoria_brick_stairs": "UNLOCALIZED: Cut Scoria Brick Stairs", - "block.create.cut_scoria_brick_wall": "UNLOCALIZED: Cut Scoria Brick Wall", - "block.create.cut_scoria_bricks": "UNLOCALIZED: Cut Scoria Bricks", - "block.create.cut_scoria_slab": "UNLOCALIZED: Cut Scoria Slab", - "block.create.cut_scoria_stairs": "UNLOCALIZED: Cut Scoria Stairs", - "block.create.cut_scoria_wall": "UNLOCALIZED: Cut Scoria Wall", - "block.create.cut_tuff": "UNLOCALIZED: Cut Tuff", - "block.create.cut_tuff_brick_slab": "UNLOCALIZED: Cut Tuff Brick Slab", - "block.create.cut_tuff_brick_stairs": "UNLOCALIZED: Cut Tuff Brick Stairs", - "block.create.cut_tuff_brick_wall": "UNLOCALIZED: Cut Tuff Brick Wall", - "block.create.cut_tuff_bricks": "UNLOCALIZED: Cut Tuff Bricks", - "block.create.cut_tuff_slab": "UNLOCALIZED: Cut Tuff Slab", - "block.create.cut_tuff_stairs": "UNLOCALIZED: Cut Tuff Stairs", - "block.create.cut_tuff_wall": "UNLOCALIZED: Cut Tuff Wall", - "block.create.cut_veridium": "UNLOCALIZED: Cut Veridium", - "block.create.cut_veridium_brick_slab": "UNLOCALIZED: Cut Veridium Brick Slab", - "block.create.cut_veridium_brick_stairs": "UNLOCALIZED: Cut Veridium Brick Stairs", - "block.create.cut_veridium_brick_wall": "UNLOCALIZED: Cut Veridium Brick Wall", - "block.create.cut_veridium_bricks": "UNLOCALIZED: Cut Veridium Bricks", - "block.create.cut_veridium_slab": "UNLOCALIZED: Cut Veridium Slab", - "block.create.cut_veridium_stairs": "UNLOCALIZED: Cut Veridium Stairs", - "block.create.cut_veridium_wall": "UNLOCALIZED: Cut Veridium Wall", + "block.create.cut_andesite": "安山岩の切石", + "block.create.cut_andesite_brick_slab": "安山岩の切石レンガのハーフブロック", + "block.create.cut_andesite_brick_stairs": "安山岩の切石レンガの階段", + "block.create.cut_andesite_brick_wall": "安山岩の切石レンガの塀", + "block.create.cut_andesite_bricks": "安山岩の切石レンガ", + "block.create.cut_andesite_slab": "安山岩の切石のハーフブロック", + "block.create.cut_andesite_stairs": "安山岩の切石の階段", + "block.create.cut_andesite_wall": "安山岩の切石の塀", + "block.create.cut_asurine": "瑠璃岩の切石", + "block.create.cut_asurine_brick_slab": "瑠璃岩の切石レンガのハーフブロック", + "block.create.cut_asurine_brick_stairs": "瑠璃岩の切石レンガの階段", + "block.create.cut_asurine_brick_wall": "瑠璃岩の切石レンガの塀", + "block.create.cut_asurine_bricks": "瑠璃岩の切石レンガ", + "block.create.cut_asurine_slab": "瑠璃岩の切石のハーフブロック", + "block.create.cut_asurine_stairs": "瑠璃岩の切石の階段", + "block.create.cut_asurine_wall": "瑠璃岩の切石の塀", + "block.create.cut_calcite": "方解石の切石", + "block.create.cut_calcite_brick_slab": "方解石の切石レンガのハーフブロック", + "block.create.cut_calcite_brick_stairs": "方解石の切石レンガの階段", + "block.create.cut_calcite_brick_wall": "方解石の切石レンガの塀", + "block.create.cut_calcite_bricks": "方解石の切石レンガ", + "block.create.cut_calcite_slab": "方解石の切石のハーフブロック", + "block.create.cut_calcite_stairs": "方解石の切石の階段", + "block.create.cut_calcite_wall": "方解石の切石の塀", + "block.create.cut_crimsite": "真紅岩の切石", + "block.create.cut_crimsite_brick_slab": "真紅岩の切石レンガのハーフブロック", + "block.create.cut_crimsite_brick_stairs": "真紅岩の切石レンガの階段", + "block.create.cut_crimsite_brick_wall": "真紅岩の切石レンガの塀", + "block.create.cut_crimsite_bricks": "真紅岩の切石レンガ", + "block.create.cut_crimsite_slab": "真紅岩の切石のハーフブロック", + "block.create.cut_crimsite_stairs": "真紅岩の切石の階段", + "block.create.cut_crimsite_wall": "真紅岩の切石の塀", + "block.create.cut_deepslate": "深層岩の切石", + "block.create.cut_deepslate_brick_slab": "深層岩の切石レンガのハーフブロック", + "block.create.cut_deepslate_brick_stairs": "深層岩の切石レンガの階段", + "block.create.cut_deepslate_brick_wall": "深層岩の切石レンガの塀", + "block.create.cut_deepslate_bricks": "深層岩の切石レンガ", + "block.create.cut_deepslate_slab": "深層岩の切石のハーフブロック", + "block.create.cut_deepslate_stairs": "深層岩の切石の階段", + "block.create.cut_deepslate_wall": "深層岩の切石の塀", + "block.create.cut_diorite": "閃緑岩の切石", + "block.create.cut_diorite_brick_slab": "閃緑岩の切石レンガのハーフブロック", + "block.create.cut_diorite_brick_stairs": "閃緑岩の切石レンガの階段", + "block.create.cut_diorite_brick_wall": "閃緑岩の切石レンガの塀", + "block.create.cut_diorite_bricks": "閃緑岩の切石レンガ", + "block.create.cut_diorite_slab": "閃緑岩の切石のハーフブロック", + "block.create.cut_diorite_stairs": "閃緑岩の切石の階段", + "block.create.cut_diorite_wall": "閃緑岩の切石の塀", + "block.create.cut_dripstone": "鍾乳石の切石", + "block.create.cut_dripstone_brick_slab": "鍾乳石の切石レンガのハーフブロック", + "block.create.cut_dripstone_brick_stairs": "鍾乳石の切石レンガの階段", + "block.create.cut_dripstone_brick_wall": "鍾乳石の切石レンガの塀", + "block.create.cut_dripstone_bricks": "鍾乳石の切石レンガ", + "block.create.cut_dripstone_slab": "鍾乳石の切石のハーフブロック", + "block.create.cut_dripstone_stairs": "鍾乳石の切石の階段", + "block.create.cut_dripstone_wall": "鍾乳石の切石の塀", + "block.create.cut_granite": "花崗岩の切石", + "block.create.cut_granite_brick_slab": "花崗岩の切石レンガのハーフブロック", + "block.create.cut_granite_brick_stairs": "花崗岩の切石レンガの階段", + "block.create.cut_granite_brick_wall": "花崗岩の切石レンガの塀", + "block.create.cut_granite_bricks": "花崗岩の切石レンガ", + "block.create.cut_granite_slab": "花崗岩の切石のハーフブロック", + "block.create.cut_granite_stairs": "花崗岩の切石の階段", + "block.create.cut_granite_wall": "花崗岩の切石の塀", + "block.create.cut_limestone": "石灰岩の切石", + "block.create.cut_limestone_brick_slab": "石灰岩の切石レンガのハーフブロック", + "block.create.cut_limestone_brick_stairs": "石灰岩の切石レンガの階段", + "block.create.cut_limestone_brick_wall": "石灰岩の切石レンガの塀", + "block.create.cut_limestone_bricks": "石灰岩の切石レンガ", + "block.create.cut_limestone_slab": "石灰岩の切石のハーフブロック", + "block.create.cut_limestone_stairs": "石灰岩の切石の階段", + "block.create.cut_limestone_wall": "石灰岩の切石の塀", + "block.create.cut_ochrum": "黄土岩の切石", + "block.create.cut_ochrum_brick_slab": "黄土岩の切石レンガのハーフブロック", + "block.create.cut_ochrum_brick_stairs": "黄土岩の切石レンガの階段", + "block.create.cut_ochrum_brick_wall": "黄土岩の切石レンガの塀", + "block.create.cut_ochrum_bricks": "黄土岩の切石レンガ", + "block.create.cut_ochrum_slab": "黄土岩の切石のハーフブロック", + "block.create.cut_ochrum_stairs": "黄土岩の切石の階段", + "block.create.cut_ochrum_wall": "黄土岩の切石の塀", + "block.create.cut_scorchia": "スコーチアの切石", + "block.create.cut_scorchia_brick_slab": "スコーチアの切石レンガのハーフブロック", + "block.create.cut_scorchia_brick_stairs": "スコーチアの切石レンガの階段", + "block.create.cut_scorchia_brick_wall": "スコーチアの切石レンガの塀", + "block.create.cut_scorchia_bricks": "スコーチアの切石レンガ", + "block.create.cut_scorchia_slab": "スコーチアの切石のハーフブロック", + "block.create.cut_scorchia_stairs": "スコーチアの切石の階段", + "block.create.cut_scorchia_wall": "スコーチアの切石の塀", + "block.create.cut_scoria": "スコリアの切石", + "block.create.cut_scoria_brick_slab": "スコリアの切石レンガのハーフブロック", + "block.create.cut_scoria_brick_stairs": "スコリアの切石レンガの階段", + "block.create.cut_scoria_brick_wall": "スコリアの切石レンガの塀", + "block.create.cut_scoria_bricks": "スコリアの切石レンガ", + "block.create.cut_scoria_slab": "スコリアの切石のハーフブロック", + "block.create.cut_scoria_stairs": "スコリアの切石の階段", + "block.create.cut_scoria_wall": "スコリアの切石の塀", + "block.create.cut_tuff": "凝灰岩の切石", + "block.create.cut_tuff_brick_slab": "凝灰岩の切石レンガのハーフブロック", + "block.create.cut_tuff_brick_stairs": "凝灰岩の切石レンガの階段", + "block.create.cut_tuff_brick_wall": "凝灰岩の切石レンガの塀", + "block.create.cut_tuff_bricks": "凝灰岩の切石レンガ", + "block.create.cut_tuff_slab": "凝灰岩の切石のハーフブロック", + "block.create.cut_tuff_stairs": "凝灰岩の切石の階段", + "block.create.cut_tuff_wall": "凝灰岩の切石の塀", + "block.create.cut_veridium": "翡翠岩の切石", + "block.create.cut_veridium_brick_slab": "翡翠岩の切石レンガのハーフブロック", + "block.create.cut_veridium_brick_stairs": "翡翠岩の切石レンガの階段", + "block.create.cut_veridium_brick_wall": "翡翠岩の切石レンガの塀", + "block.create.cut_veridium_bricks": "翡翠岩の切石レンガ", + "block.create.cut_veridium_slab": "翡翠岩の切石のハーフブロック", + "block.create.cut_veridium_stairs": "翡翠岩の切石の階段", + "block.create.cut_veridium_wall": "翡翠岩の切石の塀", "block.create.cyan_nixie_tube": "水色のニキシー管", "block.create.cyan_sail": "水色の帆", "block.create.cyan_seat": "水色のシート", "block.create.cyan_toolbox": "水色の工具箱", "block.create.cyan_valve_handle": "水色のバルブハンドル", "block.create.dark_oak_window": "ダークオークの窓", - "block.create.dark_oak_window_pane": "ダークオークの窓板", - "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", + "block.create.dark_oak_window_pane": "ダークオークの板窓", + "block.create.deepslate_pillar": "深層岩の柱", + "block.create.deepslate_zinc_ore": "深層亜鉛鉱石", "block.create.deployer": "デプロイヤー", "block.create.depot": "デポ", "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.dripstone_pillar": "鍾乳石の柱", "block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_fan": "ケース入りファン", "block.create.encased_fluid_pipe": "ケース入り液体パイプ", - "block.create.exposed_copper_shingle_slab": "UNLOCALIZED: Exposed Copper Shingle Slab", - "block.create.exposed_copper_shingle_stairs": "UNLOCALIZED: Exposed Copper Shingle Stairs", - "block.create.exposed_copper_shingles": "UNLOCALIZED: Exposed Copper Shingles", - "block.create.exposed_copper_tile_slab": "UNLOCALIZED: Exposed Copper Tile Slab", - "block.create.exposed_copper_tile_stairs": "UNLOCALIZED: Exposed Copper Tile Stairs", - "block.create.exposed_copper_tiles": "UNLOCALIZED: Exposed Copper Tiles", + "block.create.exposed_copper_shingle_slab": "風化した銅の屋根板のハーフブロック", + "block.create.exposed_copper_shingle_stairs": "風化した銅の屋根板の階段", + "block.create.exposed_copper_shingles": "風化した銅の屋根板", + "block.create.exposed_copper_tile_slab": "風化した銅タイルのハーフブロック", + "block.create.exposed_copper_tile_stairs": "風化した銅タイルの階段", + "block.create.exposed_copper_tiles": "風化した銅タイル", "block.create.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", + "block.create.flywheel": "弾み車", "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", + "block.create.framed_glass_pane": "ガラス板窓", "block.create.furnace_engine": "かまどエンジン", "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", @@ -234,27 +234,27 @@ "block.create.haunted_bell": "憑りつかれた鐘", "block.create.honey": "ハチミツ", "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "block.create.horizontal_framed_glass_pane": "横型ガラス板窓", "block.create.hose_pulley": "ホースプーリー", "block.create.item_drain": "アイテム排液口", - "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.item_vault": "アイテム保管庫", "block.create.jungle_window": "ジャングルの窓", - "block.create.jungle_window_pane": "ジャングルの窓板", + "block.create.jungle_window_pane": "ジャングルの板窓", "block.create.large_cogwheel": "大きな歯車", "block.create.layered_andesite": "安山岩の組石", - "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", - "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", - "block.create.layered_crimsite": "UNLOCALIZED: Layered Crimsite", - "block.create.layered_deepslate": "UNLOCALIZED: Layered Deepslate", + "block.create.layered_asurine": "瑠璃岩の組石", + "block.create.layered_calcite": "方解石の組石", + "block.create.layered_crimsite": "真紅岩の組石", + "block.create.layered_deepslate": "深層岩の組石", "block.create.layered_diorite": "閃緑岩の組石", - "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_dripstone": "鍾乳石の組石", "block.create.layered_granite": "花崗岩の組石", "block.create.layered_limestone": "石灰岩の組石", - "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", - "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", + "block.create.layered_ochrum": "黄土岩の組石", + "block.create.layered_scorchia": "スコーチアの組石", "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "凝灰岩の組石", + "block.create.layered_veridium": "翡翠岩の組石", "block.create.lectern_controller": "書見台コントローラー", "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", @@ -299,21 +299,21 @@ "block.create.nixie_tube": "ニキシー管", "block.create.nozzle": "ノズル", "block.create.oak_window": "オークの窓", - "block.create.oak_window_pane": "オークの窓板", - "block.create.ochrum": "UNLOCALIZED: Ochrum", - "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", + "block.create.oak_window_pane": "オークの板窓", + "block.create.ochrum": "黄土岩", + "block.create.ochrum_pillar": "黄土岩の柱", "block.create.orange_sail": "橙色の帆", "block.create.orange_seat": "橙色のシート", "block.create.orange_toolbox": "橙色の工具箱", "block.create.orange_valve_handle": "橙色のバルブハンドル", "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾ガラス板", - "block.create.oxidized_copper_shingle_slab": "UNLOCALIZED: Oxidized Copper Shingle Slab", - "block.create.oxidized_copper_shingle_stairs": "UNLOCALIZED: Oxidized Copper Shingle Stairs", - "block.create.oxidized_copper_shingles": "UNLOCALIZED: Oxidized Copper Shingles", - "block.create.oxidized_copper_tile_slab": "UNLOCALIZED: Oxidized Copper Tile Slab", - "block.create.oxidized_copper_tile_stairs": "UNLOCALIZED: Oxidized Copper Tile Stairs", - "block.create.oxidized_copper_tiles": "UNLOCALIZED: Oxidized Copper Tiles", + "block.create.ornate_iron_window_pane": "鉄の装飾板ガラス", + "block.create.oxidized_copper_shingle_slab": "酸化した銅の屋根板のハーフブロック", + "block.create.oxidized_copper_shingle_stairs": "酸化した銅の屋根板の階段", + "block.create.oxidized_copper_shingles": "酸化した銅の屋根板", + "block.create.oxidized_copper_tile_slab": "酸化した銅タイルのハーフブロック", + "block.create.oxidized_copper_tile_stairs": "酸化した銅タイルの階段", + "block.create.oxidized_copper_tiles": "酸化した銅タイル", "block.create.peculiar_bell": "風変わりな鐘", "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "桃色の", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.polished_cut_andesite": "UNLOCALIZED: Polished Cut Andesite", - "block.create.polished_cut_andesite_slab": "UNLOCALIZED: Polished Cut Andesite Slab", - "block.create.polished_cut_andesite_stairs": "UNLOCALIZED: Polished Cut Andesite Stairs", - "block.create.polished_cut_andesite_wall": "UNLOCALIZED: Polished Cut Andesite Wall", - "block.create.polished_cut_asurine": "UNLOCALIZED: Polished Cut Asurine", - "block.create.polished_cut_asurine_slab": "UNLOCALIZED: Polished Cut Asurine Slab", - "block.create.polished_cut_asurine_stairs": "UNLOCALIZED: Polished Cut Asurine Stairs", - "block.create.polished_cut_asurine_wall": "UNLOCALIZED: Polished Cut Asurine Wall", - "block.create.polished_cut_calcite": "UNLOCALIZED: Polished Cut Calcite", - "block.create.polished_cut_calcite_slab": "UNLOCALIZED: Polished Cut Calcite Slab", - "block.create.polished_cut_calcite_stairs": "UNLOCALIZED: Polished Cut Calcite Stairs", - "block.create.polished_cut_calcite_wall": "UNLOCALIZED: Polished Cut Calcite Wall", - "block.create.polished_cut_crimsite": "UNLOCALIZED: Polished Cut Crimsite", - "block.create.polished_cut_crimsite_slab": "UNLOCALIZED: Polished Cut Crimsite Slab", - "block.create.polished_cut_crimsite_stairs": "UNLOCALIZED: Polished Cut Crimsite Stairs", - "block.create.polished_cut_crimsite_wall": "UNLOCALIZED: Polished Cut Crimsite Wall", - "block.create.polished_cut_deepslate": "UNLOCALIZED: Polished Cut Deepslate", - "block.create.polished_cut_deepslate_slab": "UNLOCALIZED: Polished Cut Deepslate Slab", - "block.create.polished_cut_deepslate_stairs": "UNLOCALIZED: Polished Cut Deepslate Stairs", - "block.create.polished_cut_deepslate_wall": "UNLOCALIZED: Polished Cut Deepslate Wall", - "block.create.polished_cut_diorite": "UNLOCALIZED: Polished Cut Diorite", - "block.create.polished_cut_diorite_slab": "UNLOCALIZED: Polished Cut Diorite Slab", - "block.create.polished_cut_diorite_stairs": "UNLOCALIZED: Polished Cut Diorite Stairs", - "block.create.polished_cut_diorite_wall": "UNLOCALIZED: Polished Cut Diorite Wall", - "block.create.polished_cut_dripstone": "UNLOCALIZED: Polished Cut Dripstone", - "block.create.polished_cut_dripstone_slab": "UNLOCALIZED: Polished Cut Dripstone Slab", - "block.create.polished_cut_dripstone_stairs": "UNLOCALIZED: Polished Cut Dripstone Stairs", - "block.create.polished_cut_dripstone_wall": "UNLOCALIZED: Polished Cut Dripstone Wall", - "block.create.polished_cut_granite": "UNLOCALIZED: Polished Cut Granite", - "block.create.polished_cut_granite_slab": "UNLOCALIZED: Polished Cut Granite Slab", - "block.create.polished_cut_granite_stairs": "UNLOCALIZED: Polished Cut Granite Stairs", - "block.create.polished_cut_granite_wall": "UNLOCALIZED: Polished Cut Granite Wall", - "block.create.polished_cut_limestone": "UNLOCALIZED: Polished Cut Limestone", - "block.create.polished_cut_limestone_slab": "UNLOCALIZED: Polished Cut Limestone Slab", - "block.create.polished_cut_limestone_stairs": "UNLOCALIZED: Polished Cut Limestone Stairs", - "block.create.polished_cut_limestone_wall": "UNLOCALIZED: Polished Cut Limestone Wall", - "block.create.polished_cut_ochrum": "UNLOCALIZED: Polished Cut Ochrum", - "block.create.polished_cut_ochrum_slab": "UNLOCALIZED: Polished Cut Ochrum Slab", - "block.create.polished_cut_ochrum_stairs": "UNLOCALIZED: Polished Cut Ochrum Stairs", - "block.create.polished_cut_ochrum_wall": "UNLOCALIZED: Polished Cut Ochrum Wall", - "block.create.polished_cut_scorchia": "UNLOCALIZED: Polished Cut Scorchia", - "block.create.polished_cut_scorchia_slab": "UNLOCALIZED: Polished Cut Scorchia Slab", - "block.create.polished_cut_scorchia_stairs": "UNLOCALIZED: Polished Cut Scorchia Stairs", - "block.create.polished_cut_scorchia_wall": "UNLOCALIZED: Polished Cut Scorchia Wall", - "block.create.polished_cut_scoria": "UNLOCALIZED: Polished Cut Scoria", - "block.create.polished_cut_scoria_slab": "UNLOCALIZED: Polished Cut Scoria Slab", - "block.create.polished_cut_scoria_stairs": "UNLOCALIZED: Polished Cut Scoria Stairs", - "block.create.polished_cut_scoria_wall": "UNLOCALIZED: Polished Cut Scoria Wall", - "block.create.polished_cut_tuff": "UNLOCALIZED: Polished Cut Tuff", - "block.create.polished_cut_tuff_slab": "UNLOCALIZED: Polished Cut Tuff Slab", - "block.create.polished_cut_tuff_stairs": "UNLOCALIZED: Polished Cut Tuff Stairs", - "block.create.polished_cut_tuff_wall": "UNLOCALIZED: Polished Cut Tuff Wall", - "block.create.polished_cut_veridium": "UNLOCALIZED: Polished Cut Veridium", - "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", - "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", - "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", + "block.create.polished_cut_andesite": "磨かれた安山岩の切石", + "block.create.polished_cut_andesite_slab": "磨かれた安山岩の切石のハーフブロック", + "block.create.polished_cut_andesite_stairs": "磨かれた安山岩の切石の階段", + "block.create.polished_cut_andesite_wall": "磨かれた安山岩の切石の塀", + "block.create.polished_cut_asurine": "磨かれた瑠璃岩の切石", + "block.create.polished_cut_asurine_slab": "磨かれた瑠璃岩の切石のハーフブロック", + "block.create.polished_cut_asurine_stairs": "磨かれた瑠璃岩の切石の階段", + "block.create.polished_cut_asurine_wall": "磨かれた瑠璃岩の切石の塀", + "block.create.polished_cut_calcite": "磨かれた方解石", + "block.create.polished_cut_calcite_slab": "磨かれた方解石のハーフブロック", + "block.create.polished_cut_calcite_stairs": "磨かれた方解石の階段", + "block.create.polished_cut_calcite_wall": "磨かれた方解石の塀", + "block.create.polished_cut_crimsite": "磨かれた真紅岩の切石", + "block.create.polished_cut_crimsite_slab": "磨かれた真紅岩の切石のハーフブロック", + "block.create.polished_cut_crimsite_stairs": "磨かれた真紅岩の切石の階段", + "block.create.polished_cut_crimsite_wall": "磨かれた真紅岩の切石の塀", + "block.create.polished_cut_deepslate": "磨かれた深層岩の切石", + "block.create.polished_cut_deepslate_slab": "磨かれた深層岩の切石のハーフブロック", + "block.create.polished_cut_deepslate_stairs": "磨かれた深層岩の切石の階段", + "block.create.polished_cut_deepslate_wall": "磨かれた深層岩の切石の塀", + "block.create.polished_cut_diorite": "磨かれた閃緑岩の切石", + "block.create.polished_cut_diorite_slab": "磨かれた閃緑岩の切石のハーフブロック", + "block.create.polished_cut_diorite_stairs": "磨かれた閃緑岩の切石の階段", + "block.create.polished_cut_diorite_wall": "磨かれた閃緑岩の切石の塀", + "block.create.polished_cut_dripstone": "磨かれた鍾乳石", + "block.create.polished_cut_dripstone_slab": "磨かれた鍾乳石のハーフブロック", + "block.create.polished_cut_dripstone_stairs": "磨かれた鍾乳石の階段", + "block.create.polished_cut_dripstone_wall": "磨かれた鍾乳石の塀", + "block.create.polished_cut_granite": "磨かれた花崗岩の切石", + "block.create.polished_cut_granite_slab": "磨かれた花崗岩の切石のハーフブロック", + "block.create.polished_cut_granite_stairs": "磨かれた花崗岩の切石の階段", + "block.create.polished_cut_granite_wall": "磨かれた花崗岩の切石の塀", + "block.create.polished_cut_limestone": "磨かれた石灰岩の切石", + "block.create.polished_cut_limestone_slab": "磨かれた石灰岩の切石のハーフブロック", + "block.create.polished_cut_limestone_stairs": "磨かれた石灰岩の切石の階段", + "block.create.polished_cut_limestone_wall": "磨かれた石灰岩の切石の塀", + "block.create.polished_cut_ochrum": "磨かれた黄土岩の切石", + "block.create.polished_cut_ochrum_slab": "磨かれた黄土岩の切石のハーフブロック", + "block.create.polished_cut_ochrum_stairs": "磨かれた黄土岩の切石の階段", + "block.create.polished_cut_ochrum_wall": "磨かれた黄土岩の切石の塀", + "block.create.polished_cut_scorchia": "磨かれたスコーチア", + "block.create.polished_cut_scorchia_slab": "磨かれたスコーチアのハーフブロック", + "block.create.polished_cut_scorchia_stairs": "磨かれたスコーチアの階段", + "block.create.polished_cut_scorchia_wall": "磨かれたスコーチアの塀", + "block.create.polished_cut_scoria": "磨かれたスコリア", + "block.create.polished_cut_scoria_slab": "磨かれたスコリアのハーフブロック", + "block.create.polished_cut_scoria_stairs": "磨かれたスコリアの階段", + "block.create.polished_cut_scoria_wall": "磨かれたスコリアの塀", + "block.create.polished_cut_tuff": "磨かれた凝灰岩の切石", + "block.create.polished_cut_tuff_slab": "磨かれた凝灰岩の切石のハーフブロック", + "block.create.polished_cut_tuff_stairs": "磨かれた凝灰岩の切石の階段", + "block.create.polished_cut_tuff_wall": "磨かれた凝灰岩の切石の塀", + "block.create.polished_cut_veridium": "磨かれた翡翠岩の切石", + "block.create.polished_cut_veridium_slab": "磨かれた翡翠岩の切石のハーフブロック", + "block.create.polished_cut_veridium_stairs": "磨かれた翡翠岩の切石の階段", + "block.create.polished_cut_veridium_wall": "磨かれた翡翠岩の切石の塀", "block.create.portable_fluid_interface": "ポータブル液体インターフェース", - "block.create.portable_storage_interface": "ポータブルストレージインターフェース", + "block.create.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", "block.create.powered_toggle_latch": "パワードトグルラッチ", "block.create.pulley_magnet": "プーリーマグネット", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "パルスエクステンダー", "block.create.pulse_repeater": "パルスリピーター", "block.create.purple_nixie_tube": "紫色のニキシー管", "block.create.purple_sail": "紫色の帆", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", @@ -403,123 +403,123 @@ "block.create.rope_pulley": "ローププーリー", "block.create.rotation_speed_controller": "回転速度コントローラー", "block.create.sail_frame": "帆フレーム", - "block.create.schematic_table": "概略図テーブル", + "block.create.schematic_table": "概略図台", "block.create.schematicannon": "概略図砲", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "block.create.scorchia": "スコーチア", + "block.create.scorchia_pillar": "スコーチアの柱", "block.create.scoria": "スコリア", "block.create.scoria_pillar": "スコリアの柱", "block.create.secondary_linear_chassis": "セカンダリリニアシャーシ", "block.create.sequenced_gearshift": "シーケンスギアシフト", "block.create.shadow_steel_casing": "シャドウケーシング", "block.create.shaft": "シャフト", - "block.create.small_andesite_brick_slab": "UNLOCALIZED: Small Andesite Brick Slab", - "block.create.small_andesite_brick_stairs": "UNLOCALIZED: Small Andesite Brick Stairs", - "block.create.small_andesite_brick_wall": "UNLOCALIZED: Small Andesite Brick Wall", - "block.create.small_andesite_bricks": "UNLOCALIZED: Small Andesite Bricks", - "block.create.small_asurine_brick_slab": "UNLOCALIZED: Small Asurine Brick Slab", - "block.create.small_asurine_brick_stairs": "UNLOCALIZED: Small Asurine Brick Stairs", - "block.create.small_asurine_brick_wall": "UNLOCALIZED: Small Asurine Brick Wall", - "block.create.small_asurine_bricks": "UNLOCALIZED: Small Asurine Bricks", - "block.create.small_calcite_brick_slab": "UNLOCALIZED: Small Calcite Brick Slab", - "block.create.small_calcite_brick_stairs": "UNLOCALIZED: Small Calcite Brick Stairs", - "block.create.small_calcite_brick_wall": "UNLOCALIZED: Small Calcite Brick Wall", - "block.create.small_calcite_bricks": "UNLOCALIZED: Small Calcite Bricks", - "block.create.small_crimsite_brick_slab": "UNLOCALIZED: Small Crimsite Brick Slab", - "block.create.small_crimsite_brick_stairs": "UNLOCALIZED: Small Crimsite Brick Stairs", - "block.create.small_crimsite_brick_wall": "UNLOCALIZED: Small Crimsite Brick Wall", - "block.create.small_crimsite_bricks": "UNLOCALIZED: Small Crimsite Bricks", - "block.create.small_deepslate_brick_slab": "UNLOCALIZED: Small Deepslate Brick Slab", - "block.create.small_deepslate_brick_stairs": "UNLOCALIZED: Small Deepslate Brick Stairs", - "block.create.small_deepslate_brick_wall": "UNLOCALIZED: Small Deepslate Brick Wall", - "block.create.small_deepslate_bricks": "UNLOCALIZED: Small Deepslate Bricks", - "block.create.small_diorite_brick_slab": "UNLOCALIZED: Small Diorite Brick Slab", - "block.create.small_diorite_brick_stairs": "UNLOCALIZED: Small Diorite Brick Stairs", - "block.create.small_diorite_brick_wall": "UNLOCALIZED: Small Diorite Brick Wall", - "block.create.small_diorite_bricks": "UNLOCALIZED: Small Diorite Bricks", - "block.create.small_dripstone_brick_slab": "UNLOCALIZED: Small Dripstone Brick Slab", - "block.create.small_dripstone_brick_stairs": "UNLOCALIZED: Small Dripstone Brick Stairs", - "block.create.small_dripstone_brick_wall": "UNLOCALIZED: Small Dripstone Brick Wall", - "block.create.small_dripstone_bricks": "UNLOCALIZED: Small Dripstone Bricks", - "block.create.small_granite_brick_slab": "UNLOCALIZED: Small Granite Brick Slab", - "block.create.small_granite_brick_stairs": "UNLOCALIZED: Small Granite Brick Stairs", - "block.create.small_granite_brick_wall": "UNLOCALIZED: Small Granite Brick Wall", - "block.create.small_granite_bricks": "UNLOCALIZED: Small Granite Bricks", - "block.create.small_limestone_brick_slab": "UNLOCALIZED: Small Limestone Brick Slab", - "block.create.small_limestone_brick_stairs": "UNLOCALIZED: Small Limestone Brick Stairs", - "block.create.small_limestone_brick_wall": "UNLOCALIZED: Small Limestone Brick Wall", - "block.create.small_limestone_bricks": "UNLOCALIZED: Small Limestone Bricks", - "block.create.small_ochrum_brick_slab": "UNLOCALIZED: Small Ochrum Brick Slab", - "block.create.small_ochrum_brick_stairs": "UNLOCALIZED: Small Ochrum Brick Stairs", - "block.create.small_ochrum_brick_wall": "UNLOCALIZED: Small Ochrum Brick Wall", - "block.create.small_ochrum_bricks": "UNLOCALIZED: Small Ochrum Bricks", - "block.create.small_scorchia_brick_slab": "UNLOCALIZED: Small Scorchia Brick Slab", - "block.create.small_scorchia_brick_stairs": "UNLOCALIZED: Small Scorchia Brick Stairs", - "block.create.small_scorchia_brick_wall": "UNLOCALIZED: Small Scorchia Brick Wall", - "block.create.small_scorchia_bricks": "UNLOCALIZED: Small Scorchia Bricks", - "block.create.small_scoria_brick_slab": "UNLOCALIZED: Small Scoria Brick Slab", - "block.create.small_scoria_brick_stairs": "UNLOCALIZED: Small Scoria Brick Stairs", - "block.create.small_scoria_brick_wall": "UNLOCALIZED: Small Scoria Brick Wall", - "block.create.small_scoria_bricks": "UNLOCALIZED: Small Scoria Bricks", - "block.create.small_tuff_brick_slab": "UNLOCALIZED: Small Tuff Brick Slab", - "block.create.small_tuff_brick_stairs": "UNLOCALIZED: Small Tuff Brick Stairs", - "block.create.small_tuff_brick_wall": "UNLOCALIZED: Small Tuff Brick Wall", - "block.create.small_tuff_bricks": "UNLOCALIZED: Small Tuff Bricks", - "block.create.small_veridium_brick_slab": "UNLOCALIZED: Small Veridium Brick Slab", - "block.create.small_veridium_brick_stairs": "UNLOCALIZED: Small Veridium Brick Stairs", - "block.create.small_veridium_brick_wall": "UNLOCALIZED: Small Veridium Brick Wall", - "block.create.small_veridium_bricks": "UNLOCALIZED: Small Veridium Bricks", + "block.create.small_andesite_brick_slab": "小さな安山岩レンガのハーフブロック", + "block.create.small_andesite_brick_stairs": "小さな安山岩レンガの階段", + "block.create.small_andesite_brick_wall": "小さな安山岩レンガの塀", + "block.create.small_andesite_bricks": "小さな安山岩レンガ", + "block.create.small_asurine_brick_slab": "小さな瑠璃岩レンガのハーフブロック", + "block.create.small_asurine_brick_stairs": "小さな瑠璃岩レンガの階段", + "block.create.small_asurine_brick_wall": "小さな瑠璃岩レンガの塀", + "block.create.small_asurine_bricks": "小さな瑠璃岩レンガ", + "block.create.small_calcite_brick_slab": "小さな方解石レンガのハーフブロック", + "block.create.small_calcite_brick_stairs": "小さな方解石レンガの階段", + "block.create.small_calcite_brick_wall": "小さな方解石レンガの塀", + "block.create.small_calcite_bricks": "小さな方解石レンガ", + "block.create.small_crimsite_brick_slab": "小さな真紅岩レンガのハーフブロック", + "block.create.small_crimsite_brick_stairs": "小さな真紅岩レンガの階段", + "block.create.small_crimsite_brick_wall": "小さな真紅岩レンガの塀", + "block.create.small_crimsite_bricks": "小さな真紅岩レンガ", + "block.create.small_deepslate_brick_slab": "小さな深層岩レンガのハーフブロック", + "block.create.small_deepslate_brick_stairs": "小さな深層岩レンガの階段", + "block.create.small_deepslate_brick_wall": "小さな深層岩レンガの塀", + "block.create.small_deepslate_bricks": "小さな深層岩レンガ", + "block.create.small_diorite_brick_slab": "小さな閃緑岩レンガのハーフブロック", + "block.create.small_diorite_brick_stairs": "小さな閃緑岩レンガの階段", + "block.create.small_diorite_brick_wall": "小さな閃緑岩レンガの塀", + "block.create.small_diorite_bricks": "小さな閃緑岩レンガ", + "block.create.small_dripstone_brick_slab": "小さな鍾乳石レンガのハーフブロック", + "block.create.small_dripstone_brick_stairs": "小さな鍾乳石レンガの階段", + "block.create.small_dripstone_brick_wall": "小さな鍾乳石レンガの塀", + "block.create.small_dripstone_bricks": "小さな鍾乳石レンガ", + "block.create.small_granite_brick_slab": "小さな花崗岩レンガのハーフブロック", + "block.create.small_granite_brick_stairs": "小さな花崗岩レンガの階段", + "block.create.small_granite_brick_wall": "小さな花崗岩レンガの塀", + "block.create.small_granite_bricks": "小さな花崗岩レンガ", + "block.create.small_limestone_brick_slab": "小さな石灰岩レンガのハーフブロック", + "block.create.small_limestone_brick_stairs": "小さな石灰岩レンガの階段", + "block.create.small_limestone_brick_wall": "小さな石灰岩レンガの塀", + "block.create.small_limestone_bricks": "小さな石灰岩レンガ", + "block.create.small_ochrum_brick_slab": "小さな黄土岩レンガのハーフブロック", + "block.create.small_ochrum_brick_stairs": "小さな黄土岩レンガの階段", + "block.create.small_ochrum_brick_wall": "小さな黄土岩レンガの塀", + "block.create.small_ochrum_bricks": "小さな黄土岩レンガ", + "block.create.small_scorchia_brick_slab": "小さなスコーチアレンガのハーフブロック", + "block.create.small_scorchia_brick_stairs": "小さなスコーチアレンガの階段", + "block.create.small_scorchia_brick_wall": "小さなスコーチアレンガの塀", + "block.create.small_scorchia_bricks": "小さなスコーチアレンガ", + "block.create.small_scoria_brick_slab": "小さなスコリアレンガのハーフブロック", + "block.create.small_scoria_brick_stairs": "小さなスコリアレンガの階段", + "block.create.small_scoria_brick_wall": "小さなスコリアレンガの塀", + "block.create.small_scoria_bricks": "小さなスコリアレンガ", + "block.create.small_tuff_brick_slab": "小さな凝灰岩レンガのハーフブロック", + "block.create.small_tuff_brick_stairs": "小さな凝灰岩レンガの階段", + "block.create.small_tuff_brick_wall": "小さな凝灰岩レンガの塀", + "block.create.small_tuff_bricks": "小さな凝灰岩レンガ", + "block.create.small_veridium_brick_slab": "小さな翡翠岩レンガのハーフブロック", + "block.create.small_veridium_brick_stairs": "小さな翡翠岩レンガの階段", + "block.create.small_veridium_brick_wall": "小さな翡翠岩レンガの塀", + "block.create.small_veridium_bricks": "小さな翡翠岩レンガ", "block.create.smart_chute": "スマートシュート", "block.create.smart_fluid_pipe": "スマート液体パイプ", "block.create.speedometer": "速度メーター", "block.create.spout": "アイテム注液口", "block.create.spruce_window": "マツの窓", - "block.create.spruce_window_pane": "マツの窓板", + "block.create.spruce_window_pane": "マツの板窓", "block.create.sticker": "スティッカー", "block.create.sticky_mechanical_piston": "メカニカル粘着ピストン", "block.create.stockpile_switch": "在庫スイッチ", "block.create.stressometer": "応力メーター", "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラス板", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.tiled_glass_pane": "タイル板ガラス", + "block.create.tuff_pillar": "凝灰岩の柱", "block.create.turntable": "ターンテーブル", - "block.create.veridium": "UNLOCALIZED: Veridium", - "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.veridium": "翡翠岩", + "block.create.veridium_pillar": "翡翠岩の柱", "block.create.vertical_framed_glass": "縦型ガラス窓", - "block.create.vertical_framed_glass_pane": "縦型ガラス窓板", + "block.create.vertical_framed_glass_pane": "縦型ガラス板窓", "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓板", + "block.create.warped_window_pane": "歪んだ板窓", "block.create.water_wheel": "水車", - "block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab", - "block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs", - "block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles", - "block.create.waxed_copper_tile_slab": "UNLOCALIZED: Waxed Copper Tile Slab", - "block.create.waxed_copper_tile_stairs": "UNLOCALIZED: Waxed Copper Tile Stairs", - "block.create.waxed_copper_tiles": "UNLOCALIZED: Waxed Copper Tiles", - "block.create.waxed_exposed_copper_shingle_slab": "UNLOCALIZED: Waxed Exposed Copper Shingle Slab", - "block.create.waxed_exposed_copper_shingle_stairs": "UNLOCALIZED: Waxed Exposed Copper Shingle Stairs", - "block.create.waxed_exposed_copper_shingles": "UNLOCALIZED: Waxed Exposed Copper Shingles", - "block.create.waxed_exposed_copper_tile_slab": "UNLOCALIZED: Waxed Exposed Copper Tile Slab", - "block.create.waxed_exposed_copper_tile_stairs": "UNLOCALIZED: Waxed Exposed Copper Tile Stairs", - "block.create.waxed_exposed_copper_tiles": "UNLOCALIZED: Waxed Exposed Copper Tiles", - "block.create.waxed_oxidized_copper_shingle_slab": "UNLOCALIZED: Waxed Oxidized Copper Shingle Slab", - "block.create.waxed_oxidized_copper_shingle_stairs": "UNLOCALIZED: Waxed Oxidized Copper Shingle Stairs", - "block.create.waxed_oxidized_copper_shingles": "UNLOCALIZED: Waxed Oxidized Copper Shingles", - "block.create.waxed_oxidized_copper_tile_slab": "UNLOCALIZED: Waxed Oxidized Copper Tile Slab", - "block.create.waxed_oxidized_copper_tile_stairs": "UNLOCALIZED: Waxed Oxidized Copper Tile Stairs", - "block.create.waxed_oxidized_copper_tiles": "UNLOCALIZED: Waxed Oxidized Copper Tiles", - "block.create.waxed_weathered_copper_shingle_slab": "UNLOCALIZED: Waxed Weathered Copper Shingle Slab", - "block.create.waxed_weathered_copper_shingle_stairs": "UNLOCALIZED: Waxed Weathered Copper Shingle Stairs", - "block.create.waxed_weathered_copper_shingles": "UNLOCALIZED: Waxed Weathered Copper Shingles", - "block.create.waxed_weathered_copper_tile_slab": "UNLOCALIZED: Waxed Weathered Copper Tile Slab", - "block.create.waxed_weathered_copper_tile_stairs": "UNLOCALIZED: Waxed Weathered Copper Tile Stairs", - "block.create.waxed_weathered_copper_tiles": "UNLOCALIZED: Waxed Weathered Copper Tiles", - "block.create.weathered_copper_shingle_slab": "UNLOCALIZED: Weathered Copper Shingle Slab", - "block.create.weathered_copper_shingle_stairs": "UNLOCALIZED: Weathered Copper Shingle Stairs", - "block.create.weathered_copper_shingles": "UNLOCALIZED: Weathered Copper Shingles", - "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", - "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", - "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", + "block.create.waxed_copper_shingle_slab": "錆止めされた銅の屋根板のハーフブロック", + "block.create.waxed_copper_shingle_stairs": "錆止めされた銅の屋根板の階段", + "block.create.waxed_copper_shingles": "錆止めされた銅の屋根板", + "block.create.waxed_copper_tile_slab": "錆止めされた銅タイルのハーフブロック", + "block.create.waxed_copper_tile_stairs": "錆止めされた銅タイルの階段", + "block.create.waxed_copper_tiles": "錆止めされた銅タイル", + "block.create.waxed_exposed_copper_shingle_slab": "錆止めされた風化した銅の屋根板のハーフブロック", + "block.create.waxed_exposed_copper_shingle_stairs": "錆止めされた風化した銅の屋根板の階段", + "block.create.waxed_exposed_copper_shingles": "錆止めされた風化した銅の屋根板", + "block.create.waxed_exposed_copper_tile_slab": "錆止めされた風化した銅タイルのハーフブロック", + "block.create.waxed_exposed_copper_tile_stairs": "錆止めされた風化した銅タイルの階段", + "block.create.waxed_exposed_copper_tiles": "錆止めされた風化した銅タイル", + "block.create.waxed_oxidized_copper_shingle_slab": "錆止めされた酸化した銅の屋根板のハーフブロック", + "block.create.waxed_oxidized_copper_shingle_stairs": "錆止めされた酸化した銅の屋根板の階段", + "block.create.waxed_oxidized_copper_shingles": "錆止めされた酸化した銅の屋根板", + "block.create.waxed_oxidized_copper_tile_slab": "錆止めされた酸化した銅タイルのハーフブロック", + "block.create.waxed_oxidized_copper_tile_stairs": "錆止めされた酸化した銅タイルの階段", + "block.create.waxed_oxidized_copper_tiles": "錆止めされた酸化した銅タイル", + "block.create.waxed_weathered_copper_shingle_slab": "錆止めされた錆びた銅の屋根板のハーフブロック", + "block.create.waxed_weathered_copper_shingle_stairs": "錆止めされた錆びた銅の屋根板の階段", + "block.create.waxed_weathered_copper_shingles": "錆止めされた錆びた銅の屋根板", + "block.create.waxed_weathered_copper_tile_slab": "錆止めされた錆びた銅タイルのハーフブロック", + "block.create.waxed_weathered_copper_tile_stairs": "錆止めされた錆びた銅タイルの階段", + "block.create.waxed_weathered_copper_tiles": "錆止めされた錆びた銅タイル", + "block.create.weathered_copper_shingle_slab": "錆びた銅の屋根板のハーフブロック", + "block.create.weathered_copper_shingle_stairs": "錆びた銅の屋根板の階段", + "block.create.weathered_copper_shingles": "錆びた銅の屋根板", + "block.create.weathered_copper_tile_slab": "錆びた銅タイルのハーフブロック", + "block.create.weathered_copper_tile_stairs": "錆びた銅タイルの階段", + "block.create.weathered_copper_tiles": "錆びた銅タイル", "block.create.weighted_ejector": "重量射出機", "block.create.white_nixie_tube": "白色のニキシー管", "block.create.white_sail": "白色の帆", @@ -561,7 +561,7 @@ "item.create.brass_nugget": "真鍮塊", "item.create.brass_sheet": "真鍮シート", "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", + "item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", @@ -591,10 +591,10 @@ "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", "item.create.empty_schematic": "空の概略図", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "経験値の塊", "item.create.extendo_grip": "マジックハンド", "item.create.filter": "フィルター", - "item.create.furnace_minecart_contraption": "からくりかまど付きトロッコ", + "item.create.furnace_minecart_contraption": "かまど付きからくりトロッコ", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", @@ -606,14 +606,14 @@ "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", - "item.create.minecart_contraption": "からくり付きトロッコ", + "item.create.minecart_contraption": "からくりトロッコ", "item.create.minecart_coupling": "トロッコ連結器", "item.create.polished_rose_quartz": "磨かれたローズクォーツ", "item.create.potato_cannon": "ポテトキャノン", "item.create.powdered_obsidian": "黒曜石の粉", "item.create.precision_mechanism": "精密機構", "item.create.propeller": "プロペラ", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "亜鉛の原石", "item.create.red_sand_paper": "赤い紙やすり", "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", @@ -683,7 +683,7 @@ "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", "advancement.create.chocolate_wheel": "味わい深い原動機", "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", + "advancement.create.lava_wheel": "溶岩車", "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", "advancement.create.cuckoo": "今がその時だ", "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", @@ -696,7 +696,7 @@ "advancement.create.andesite_casing": "安山岩の時代", "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", + "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", "advancement.create.press": "プレスで「ドン!」", "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", @@ -704,10 +704,10 @@ "advancement.create.electron_tube": "ピッポッパ", "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", + "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", "advancement.create.basin": "お茶碗の作法", "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", + "advancement.create.mixer": "攪拌せよ", "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", "advancement.create.blaze_burner": "生き生きとしたインテリア", "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", @@ -738,23 +738,23 @@ "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", + "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", + "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", + "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", "advancement.create.crafter": "部品集結!", "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", + "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", "advancement.create.nixie_tube": "イカした看板", "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", "advancement.create.deployer": "突く、置く、殴る!", "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "Engineers hate him!", + "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", + "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", "advancement.create.overstress_flywheel": "ハイレベル応力", "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", @@ -777,7 +777,7 @@ "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", "advancement.create.extendo_grip": "ビヨヨーン!", "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.potato_cannon": "バキューン!", + "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", @@ -801,7 +801,7 @@ "death.attack.create.mechanical_saw": "%1$sはメカニカルソーで半分にカットされた", "death.attack.create.mechanical_saw.player": "%1$sは%2$sによってメカニカルソーの回転する刃に投げ込まれた", "death.attack.create.potato_cannon": "%1$sは%2$sのポテトキャノンに撃ち抜かれた", - "death.attack.create.potato_cannon.item": "%1$sは%3$sで%2$sに撃た抜かれた", + "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃た抜かれた", "death.attack.create.cuckoo_clock_explosion": "%1$sは改造された鳩時計に爆破された", "death.attack.create.cuckoo_clock_explosion.player": "%1$sは何者かによって改造された鳩時計に爆破された", @@ -810,7 +810,7 @@ "create.menu.return": "メニューに戻る", "create.menu.configure": "設定...", - "create.menu.ponder_index": "思案索引", + "create.menu.ponder_index": "思案目次", "create.menu.only_ingame": "一時停止メニューで利用可能", "create.menu.project_page": "プロジェクトページ", "create.menu.report_bugs": "バグ報告", @@ -840,8 +840,8 @@ "create.recipe.wood_cutting": "自動製材", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", + "create.recipe.spout_filling": "アイテムへの注液", + "create.recipe.draining": "アイテムからの排液", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -888,7 +888,7 @@ "create.gui.scrollInput.defaultTitle": "オプションを選択:", "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして調整", "create.gui.scrollInput.scrollToSelect": "スクロールして選択", "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", @@ -946,27 +946,27 @@ "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", + "create.minecart_coupling.unloaded": "列車の一部があるチャンクがロードされていません", "create.minecart_coupling.no_loops": "ループ状に連結させることはできません", "create.minecart_coupling.removed": "トロッコの連結をすべて解除しました", "create.minecart_coupling.too_far": "トロッコ同士が離れすぎています", "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "停止時に常に配置", - "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", - "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", - "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", - "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.movement_mode.move_place": "停止時に常に設置", + "create.contraptions.movement_mode.move_place_returned": "開始位置のみに設置", + "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ設置", + "create.contraptions.movement_mode.rotate_place": "停止時に常に設置", + "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ設置", + "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ設置", "create.contraptions.cart_movement_mode": "トロッコ移動モード", "create.contraptions.cart_movement_mode.rotate": "常に動いている方向を向く", - "create.contraptions.cart_movement_mode.rotate_paused": "回転中に一時停止する", + "create.contraptions.cart_movement_mode.rotate_paused": "回転中に機械を一時停止する", "create.contraptions.cart_movement_mode.rotation_locked": "常に向きを固定する", "create.contraptions.windmill.rotation_direction": "回転方向", "create.contraptions.clockwork.clock_hands": "時計の針", "create.contraptions.clockwork.hour_first": "時針を最初に", "create.contraptions.clockwork.minute_first": "分針を最初に", - "create.contraptions.clockwork.hour_first_24": "1周24時間時針を最初に", + "create.contraptions.clockwork.hour_first_24": "24時針を最初に", "create.logistics.filter": "フィルター", "create.logistics.recipe_filter": "レシピフィルター", @@ -987,16 +987,16 @@ "create.gui.assembly.exception.unmovableBlock": "移動できないブロック(%4$s)、[%1$s %2$s %3$s]", "create.gui.assembly.exception.chunkNotLoaded": "[%1$s %2$s %3$s] のブロックがロードされているチャンクにありません。", "create.gui.assembly.exception.structureTooLarge": "からくりに含まれるブロックが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられている拡張ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "この構造物は帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", + "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", + "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", + "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", "create.gui.gauge.info_header": "メーターの情報:", "create.gui.speedometer.title": "回転速度", "create.gui.stressometer.title": "ネットワークの応力", "create.gui.stressometer.capacity": "残りの応力許容量", "create.gui.stressometer.overstressed": "超過応力", "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", @@ -1035,7 +1035,7 @@ "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図台を使ってください", "create.schematic.position": "位置", "create.schematic.rotation": "回転", "create.schematic.rotation.none": "無し", @@ -1052,7 +1052,7 @@ "create.schematic.tool.rotate": "回転", "create.schematic.tool.print": "印刷", "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", + "create.schematic.tool.deploy.description.0": "概略図を特定の場所に移動します", "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します", "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します", "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します", @@ -1079,43 +1079,43 @@ "create.schematics.synchronizing": "同期しています...", "create.schematics.uploadTooLarge": "概略図が大きすぎます", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", + "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズ: ", "create.gui.schematicTable.refresh": "ファイルを更新する", "create.gui.schematicTable.open_folder": "フォルダを開く", - "create.gui.schematicTable.title": "概略図テーブル", + "create.gui.schematicTable.title": "概略図台", "create.gui.schematicTable.availableSchematics": "利用可能な概略図", "create.gui.schematicTable.noSchematics": "保存された概略図はありません", "create.gui.schematicTable.uploading": "アップロードしています...", "create.gui.schematicTable.finished": "アップロードが完了しました!", "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.listPrinter": "材料リストプリンター", + "create.gui.schematicannon.listPrinter": "材料リスト印刷機", "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "予備: %1$s", "create.gui.schematicannon.optionEnabled": "現在 有効", "create.gui.schematicannon.optionDisabled": "現在 無効", "create.gui.schematicannon.showOptions": "プリンターの設定を表示する", "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", - "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", - "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", + "create.gui.schematicannon.option.replaceWithSolid": "固体ブロックを固体ブロックに置き換える", + "create.gui.schematicannon.option.replaceWithAny": "固体ブロックを任意のブロックに置き換える", + "create.gui.schematicannon.option.replaceWithEmpty": "固体ブロックを空気に置き換える", "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", - "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストをプリントアウトします。", + "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストを印刷します。", "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", - "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業範囲の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置に固体ブロックが含まれている場合にのみ、その作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図の場所にブロックが含まれている場合、大砲はその作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", + "create.gui.schematicannon.option.skipMissing.description": "配置に必要なブロックを見つけられない場合、次の場所に進みます。", + "create.gui.schematicannon.option.skipTileEntities.description": "チェストなどのデータ保持ブロックの置き換えによる消滅を回避します。", + "create.gui.schematicannon.option.dontReplaceSolid.description": "その作業範囲の固体ブロックを置き換えることはなく、非固体ブロックと空気のみを置き換えます。", + "create.gui.schematicannon.option.replaceWithSolid.description": "固体ブロックを設置する場合にのみ、その位置の固体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithAny.description": "任意のブロックを設置する場合に、その位置の固体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業領域のあらゆるブロックを一掃します。", "create.schematicannon.status.idle": "停止中", "create.schematicannon.status.ready": "準備完了", "create.schematicannon.status.running": "稼働中", - "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.finished": "完了", "create.schematicannon.status.paused": "一時停止中", "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", @@ -1131,7 +1131,7 @@ "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", "create.materialChecklist": "素材チェックリスト", - "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確な場合があります。", + "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確かもしれません。", "create.gui.filter.deny_list": "ブラックリスト", "create.gui.filter.deny_list.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", @@ -1203,14 +1203,14 @@ "create.item_attributes.book_copy_second.inverted": "コピーのコピーでないか", "create.item_attributes.book_copy_tattered": "ボロボロか", "create.item_attributes.book_copy_tattered.inverted": "ボロボロでないか", - "create.item_attributes.astralsorcery_amulet": "%1$s 改善", - "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されない", - "create.item_attributes.astralsorcery_constellation": "%1$s に同調している", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していない", - "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つ", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たない", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性がある", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がない", + "create.item_attributes.astralsorcery_amulet": "%1$s 改善か", + "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されないか", + "create.item_attributes.astralsorcery_constellation": "%1$s に同調しているか", + "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していないか", + "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つか", + "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たないか", + "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性があるか", + "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がないか", "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", "create.gui.attribute_filter.selected_attributes": "選択された属性:", @@ -1300,7 +1300,7 @@ "create.potato_cannon.ammo.reload_ticks": "リロード時間(tick): %1$s", "create.potato_cannon.ammo.knockback": "ノックバック: %1$s", - "create.hint.hose_pulley.title": "底なし搬出", + "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", @@ -1327,7 +1327,7 @@ "create.command.killTPSCommand.argument.tickTime": "tickTime", "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "神秘的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", "_": "->------------------------] Subtitles [------------------------<-", @@ -1338,7 +1338,7 @@ "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", "create.subtitle.fwoomp": "ポテトランチャーがバキューンと鳴る", "create.subtitle.worldshaper_place": "ワールドシェーパーが設置する", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "研磨音", "create.subtitle.crushing_1": "粉砕音", "create.subtitle.depot_slide": "アイテムが滑る", "create.subtitle.saw_activate_stone": "メカニカルソーが動作する", @@ -1351,7 +1351,7 @@ "create.subtitle.controller_put": "コントローラのトントン音", "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "研磨音", "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", "create.subtitle.wrench_rotate": "レンチが使用される", @@ -1388,7 +1388,7 @@ "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", + "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", "block.create.seat.tooltip.condition1": "右クリックしたとき", "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", @@ -1449,7 +1449,7 @@ "item.create.attribute_filter.tooltip.behaviour2": "_設定画面_を開きます。", "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図テーブル_での書き込みに使われます。", + "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_での書き込みに使われます。", "item.create.schematic.tooltip": "概略図", "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", @@ -1476,7 +1476,7 @@ "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", "block.create.schematicannon.tooltip.behaviour1": "_UI_を開きます。", - "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip": "概略図台", "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", @@ -1510,7 +1510,7 @@ "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", - "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.condition1": "壊したとき", "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", @@ -1602,10 +1602,10 @@ "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", - "item.create.experience_nugget.tooltip": "UNLOCALIZED: NUGGET OF EXPERIENCE", - "item.create.experience_nugget.tooltip.summary": "UNLOCALIZED: _Ding!_ A speck of _inspiration_ from your fantastic inventions.", - "item.create.experience_nugget.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.experience_nugget.tooltip.behaviour1": "UNLOCALIZED: _Redeems_ _Experience_ points contained within.", + "item.create.experience_nugget.tooltip": "経験値の塊", + "item.create.experience_nugget.tooltip.summary": "_チャリン!_あなたの素晴らしい発明から、_発想_の欠片を。", + "item.create.experience_nugget.tooltip.condition1": "使ったとき", + "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中に入った_経験値_を取り出します", "block.create.peculiar_bell.tooltip": "風変わりな鐘", "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", @@ -1677,8 +1677,8 @@ "create.ponder.analog_lever.text_3": "スニークしながら右クリックでレッドストーン強度を下げられます。", "create.ponder.andesite_tunnel.header": "安山岩トンネルの使い方", - "create.ponder.andesite_tunnel.text_1": "安山岩のトンネルは、ベルトを隠せます", - "create.ponder.andesite_tunnel.text_2": "安山岩のトンネルが横につながっていると...", + "create.ponder.andesite_tunnel.text_1": "安山岩トンネルは、ベルトを隠せます", + "create.ponder.andesite_tunnel.text_2": "安山岩トンネルが横につながっていると...", "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", @@ -1698,7 +1698,7 @@ "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定したりできます", "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", + "create.ponder.belt_casing.text_1": "真鍮か安山岩ケーシングを使ってメカニカルベルトを飾れます", "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", "create.ponder.belt_connector.header": "メカニカルベルトの使い方", @@ -1824,10 +1824,10 @@ "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", - "create.ponder.cogwheel_casing.header": "UNLOCALIZED: Encasing Cogwheels", - "create.ponder.cogwheel_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Cogwheels", - "create.ponder.cogwheel_casing.text_2": "UNLOCALIZED: Components added after encasing will not connect to the shaft outputs", - "create.ponder.cogwheel_casing.text_3": "UNLOCALIZED: The Wrench can be used to toggle connections", + "create.ponder.cogwheel_casing.header": "ケース入り歯車", + "create.ponder.cogwheel_casing.text_1": "真鍮や安山岩のケーシングは歯車を飾ることもできます", + "create.ponder.cogwheel_casing.text_2": "ケース入りにした歯車に、シャフトを繋ごうとしても繋がりません", + "create.ponder.cogwheel_casing.text_3": "レンチを使って繋がるかどうか切り替えることもできます", "create.ponder.creative_fluid_tank.header": "クリエイティブ液体タンク", "create.ponder.creative_fluid_tank.text_1": "クリエイティブ液体タンクは、液体を無限に供給できます", @@ -1948,8 +1948,8 @@ "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を出し入れできません。", "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を出し入れできます。", - "create.ponder.flywheel.header": "勢車による回転力の生成", - "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、勢車が必要です", + "create.ponder.flywheel.header": "弾み車による回転力の生成", + "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です", "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", @@ -2049,16 +2049,16 @@ "create.ponder.item_drain.text_4": "...中に詰まった液体を出しながら横に転がっていきます", "create.ponder.item_drain.text_5": "液体ネットワークで、排液口から液体を取り出せます", - "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", - "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", - "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + "create.ponder.item_vault_sizes.header": "アイテム保管庫の寸法", + "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やすことができます", + "create.ponder.item_vault_sizes.text_2": "そのベースとなる正方形の辺の長さは最大3ブロックまで...", + "create.ponder.item_vault_sizes.text_3": "...長さはその三倍まで伸ばせます", - "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", - "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", - "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", - "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", - "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.item_vault_storage.header": "保管庫でのアイテムの保管", + "create.ponder.item_vault_storage.text_1": "アイテム保管庫は、大量のアイテムを保管できます", + "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません。", + "create.ponder.item_vault_storage.text_3": "アイテム運搬用の機械ならどれを使っても搬入と...", + "create.ponder.item_vault_storage.text_4": "搬出ができます", "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", @@ -2263,17 +2263,17 @@ "create.ponder.powered_toggle_latch.text_3": "何度も信号を送るとオンとオフと繰り返します", "create.ponder.powered_toggle_latch.text_4": "パワードトグルラッチは、手動でもオンオフもできます", - "create.ponder.pulse_extender.header": "UNLOCALIZED: Controlling signals using Pulse Extenders", - "create.ponder.pulse_extender.text_1": "UNLOCALIZED: Pulse Extenders can lengthen a signal passing through", - "create.ponder.pulse_extender.text_2": "UNLOCALIZED: They activate after a short delay...", - "create.ponder.pulse_extender.text_3": "UNLOCALIZED: ...and cool down for the configured duration", - "create.ponder.pulse_extender.text_4": "UNLOCALIZED: Using the mouse wheel, the discharge time can be configured", - "create.ponder.pulse_extender.text_5": "UNLOCALIZED: The configured duration can range up to 30 minutes", + "create.ponder.pulse_extender.header": "パルスエクステンダーによる信号制御", + "create.ponder.pulse_extender.text_1": "パルスエクステンダーは通過する信号を長くします", + "create.ponder.pulse_extender.text_2": "短時間の遅延の後...", + "create.ponder.pulse_extender.text_3": "...設定した時間だけ信号を出します", + "create.ponder.pulse_extender.text_4": "マウスホイールで、信号を出す時間を調整できます", + "create.ponder.pulse_extender.text_5": "最大で30分まで設定できます", "create.ponder.pulse_repeater.header": "パルスリピーターによる信号制御", "create.ponder.pulse_repeater.text_1": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", - "create.ponder.pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.pulse_repeater.text_2": "マウスホイールで、遅延する時間を調整できます", + "create.ponder.pulse_repeater.text_3": "最大30分まで設定できます", "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同じ種類のシャーシと繋がります", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 0d47d1cee..f90db3ae9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 333", + "_": "Missing Localizations: 5", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,14 +9,14 @@ "block.create.analog_lever": "아날로그 레버", "block.create.andesite_belt_funnel": "안산암 퍼널", "block.create.andesite_casing": "안산암 케이스", - "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", - "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", + "block.create.andesite_encased_cogwheel": "안산암 케이스를 씌운 톱니바퀴", + "block.create.andesite_encased_large_cogwheel": "안산암 케이스를 씌운 큰 톱니바퀴", "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", "block.create.andesite_funnel": "안산암 퍼널", "block.create.andesite_pillar": "안산암 기둥", "block.create.andesite_tunnel": "안산암 터널", - "block.create.asurine": "UNLOCALIZED: Asurine", - "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", + "block.create.asurine": "유리암", + "block.create.asurine_pillar": "유리암 기둥", "block.create.basin": "대야", "block.create.belt": "벨트", "block.create.birch_window": "자작나무 유리창", @@ -35,8 +35,8 @@ "block.create.brass_belt_funnel": "황동 퍼널", "block.create.brass_block": "황동 블록", "block.create.brass_casing": "황동 케이스", - "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", - "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", + "block.create.brass_encased_cogwheel": "황동 케이스를 씌운 톱니바퀴", + "block.create.brass_encased_large_cogwheel": "황동 케이스를 씌운 큰 톱니바퀴", "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", "block.create.brass_funnel": "황동 퍼널", "block.create.brass_tunnel": "황동 터널", @@ -45,7 +45,7 @@ "block.create.brown_seat": "갈색 좌석", "block.create.brown_toolbox": "갈색 공구상자", "block.create.brown_valve_handle": "갈색 밸브 손잡이", - "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", + "block.create.calcite_pillar": "방해석 기둥", "block.create.cart_assembler": "카트 조립기", "block.create.chocolate": "초콜릿", "block.create.chute": "슈트", @@ -56,135 +56,135 @@ "block.create.controller_rail": "방향 레일", "block.create.copper_backtank": "구리 산소통", "block.create.copper_casing": "구리 케이스", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "구리 판자 반 블록", + "block.create.copper_shingle_stairs": "구리 판자 계단", "block.create.copper_shingles": "구리 판자", - "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", - "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", + "block.create.copper_tile_slab": "구리 타일 반 블록", + "block.create.copper_tile_stairs": "구리 타일 계단", "block.create.copper_tiles": "구리 타일", "block.create.copper_valve_handle": "구리 밸브 손잡이", "block.create.creative_crate": "크리에이티브 창고", "block.create.creative_fluid_tank": "크리에이티브 탱크", "block.create.creative_motor": "크리에이티브 모터", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimsite": "진홍암", + "block.create.crimsite_pillar": "진홍암 기둥", "block.create.crimson_window": "진홍빛 유리창", "block.create.crimson_window_pane": "진홍빛 유리판", "block.create.crushing_wheel": "분쇄 휠", "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", "block.create.cuckoo_clock": "뻐꾸기 시계", - "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", - "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", - "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", - "block.create.cut_andesite_brick_wall": "UNLOCALIZED: Cut Andesite Brick Wall", - "block.create.cut_andesite_bricks": "UNLOCALIZED: Cut Andesite Bricks", - "block.create.cut_andesite_slab": "UNLOCALIZED: Cut Andesite Slab", - "block.create.cut_andesite_stairs": "UNLOCALIZED: Cut Andesite Stairs", - "block.create.cut_andesite_wall": "UNLOCALIZED: Cut Andesite Wall", - "block.create.cut_asurine": "UNLOCALIZED: Cut Asurine", - "block.create.cut_asurine_brick_slab": "UNLOCALIZED: Cut Asurine Brick Slab", - "block.create.cut_asurine_brick_stairs": "UNLOCALIZED: Cut Asurine Brick Stairs", - "block.create.cut_asurine_brick_wall": "UNLOCALIZED: Cut Asurine Brick Wall", - "block.create.cut_asurine_bricks": "UNLOCALIZED: Cut Asurine Bricks", - "block.create.cut_asurine_slab": "UNLOCALIZED: Cut Asurine Slab", - "block.create.cut_asurine_stairs": "UNLOCALIZED: Cut Asurine Stairs", - "block.create.cut_asurine_wall": "UNLOCALIZED: Cut Asurine Wall", - "block.create.cut_calcite": "UNLOCALIZED: Cut Calcite", - "block.create.cut_calcite_brick_slab": "UNLOCALIZED: Cut Calcite Brick Slab", - "block.create.cut_calcite_brick_stairs": "UNLOCALIZED: Cut Calcite Brick Stairs", - "block.create.cut_calcite_brick_wall": "UNLOCALIZED: Cut Calcite Brick Wall", - "block.create.cut_calcite_bricks": "UNLOCALIZED: Cut Calcite Bricks", - "block.create.cut_calcite_slab": "UNLOCALIZED: Cut Calcite Slab", - "block.create.cut_calcite_stairs": "UNLOCALIZED: Cut Calcite Stairs", - "block.create.cut_calcite_wall": "UNLOCALIZED: Cut Calcite Wall", - "block.create.cut_crimsite": "UNLOCALIZED: Cut Crimsite", - "block.create.cut_crimsite_brick_slab": "UNLOCALIZED: Cut Crimsite Brick Slab", - "block.create.cut_crimsite_brick_stairs": "UNLOCALIZED: Cut Crimsite Brick Stairs", - "block.create.cut_crimsite_brick_wall": "UNLOCALIZED: Cut Crimsite Brick Wall", - "block.create.cut_crimsite_bricks": "UNLOCALIZED: Cut Crimsite Bricks", - "block.create.cut_crimsite_slab": "UNLOCALIZED: Cut Crimsite Slab", - "block.create.cut_crimsite_stairs": "UNLOCALIZED: Cut Crimsite Stairs", - "block.create.cut_crimsite_wall": "UNLOCALIZED: Cut Crimsite Wall", - "block.create.cut_deepslate": "UNLOCALIZED: Cut Deepslate", - "block.create.cut_deepslate_brick_slab": "UNLOCALIZED: Cut Deepslate Brick Slab", - "block.create.cut_deepslate_brick_stairs": "UNLOCALIZED: Cut Deepslate Brick Stairs", - "block.create.cut_deepslate_brick_wall": "UNLOCALIZED: Cut Deepslate Brick Wall", - "block.create.cut_deepslate_bricks": "UNLOCALIZED: Cut Deepslate Bricks", - "block.create.cut_deepslate_slab": "UNLOCALIZED: Cut Deepslate Slab", - "block.create.cut_deepslate_stairs": "UNLOCALIZED: Cut Deepslate Stairs", - "block.create.cut_deepslate_wall": "UNLOCALIZED: Cut Deepslate Wall", - "block.create.cut_diorite": "UNLOCALIZED: Cut Diorite", - "block.create.cut_diorite_brick_slab": "UNLOCALIZED: Cut Diorite Brick Slab", - "block.create.cut_diorite_brick_stairs": "UNLOCALIZED: Cut Diorite Brick Stairs", - "block.create.cut_diorite_brick_wall": "UNLOCALIZED: Cut Diorite Brick Wall", - "block.create.cut_diorite_bricks": "UNLOCALIZED: Cut Diorite Bricks", - "block.create.cut_diorite_slab": "UNLOCALIZED: Cut Diorite Slab", - "block.create.cut_diorite_stairs": "UNLOCALIZED: Cut Diorite Stairs", - "block.create.cut_diorite_wall": "UNLOCALIZED: Cut Diorite Wall", - "block.create.cut_dripstone": "UNLOCALIZED: Cut Dripstone", - "block.create.cut_dripstone_brick_slab": "UNLOCALIZED: Cut Dripstone Brick Slab", - "block.create.cut_dripstone_brick_stairs": "UNLOCALIZED: Cut Dripstone Brick Stairs", - "block.create.cut_dripstone_brick_wall": "UNLOCALIZED: Cut Dripstone Brick Wall", - "block.create.cut_dripstone_bricks": "UNLOCALIZED: Cut Dripstone Bricks", - "block.create.cut_dripstone_slab": "UNLOCALIZED: Cut Dripstone Slab", - "block.create.cut_dripstone_stairs": "UNLOCALIZED: Cut Dripstone Stairs", - "block.create.cut_dripstone_wall": "UNLOCALIZED: Cut Dripstone Wall", - "block.create.cut_granite": "UNLOCALIZED: Cut Granite", - "block.create.cut_granite_brick_slab": "UNLOCALIZED: Cut Granite Brick Slab", - "block.create.cut_granite_brick_stairs": "UNLOCALIZED: Cut Granite Brick Stairs", - "block.create.cut_granite_brick_wall": "UNLOCALIZED: Cut Granite Brick Wall", - "block.create.cut_granite_bricks": "UNLOCALIZED: Cut Granite Bricks", - "block.create.cut_granite_slab": "UNLOCALIZED: Cut Granite Slab", - "block.create.cut_granite_stairs": "UNLOCALIZED: Cut Granite Stairs", - "block.create.cut_granite_wall": "UNLOCALIZED: Cut Granite Wall", - "block.create.cut_limestone": "UNLOCALIZED: Cut Limestone", - "block.create.cut_limestone_brick_slab": "UNLOCALIZED: Cut Limestone Brick Slab", - "block.create.cut_limestone_brick_stairs": "UNLOCALIZED: Cut Limestone Brick Stairs", - "block.create.cut_limestone_brick_wall": "UNLOCALIZED: Cut Limestone Brick Wall", - "block.create.cut_limestone_bricks": "UNLOCALIZED: Cut Limestone Bricks", - "block.create.cut_limestone_slab": "UNLOCALIZED: Cut Limestone Slab", - "block.create.cut_limestone_stairs": "UNLOCALIZED: Cut Limestone Stairs", - "block.create.cut_limestone_wall": "UNLOCALIZED: Cut Limestone Wall", - "block.create.cut_ochrum": "UNLOCALIZED: Cut Ochrum", - "block.create.cut_ochrum_brick_slab": "UNLOCALIZED: Cut Ochrum Brick Slab", - "block.create.cut_ochrum_brick_stairs": "UNLOCALIZED: Cut Ochrum Brick Stairs", - "block.create.cut_ochrum_brick_wall": "UNLOCALIZED: Cut Ochrum Brick Wall", - "block.create.cut_ochrum_bricks": "UNLOCALIZED: Cut Ochrum Bricks", - "block.create.cut_ochrum_slab": "UNLOCALIZED: Cut Ochrum Slab", - "block.create.cut_ochrum_stairs": "UNLOCALIZED: Cut Ochrum Stairs", - "block.create.cut_ochrum_wall": "UNLOCALIZED: Cut Ochrum Wall", - "block.create.cut_scorchia": "UNLOCALIZED: Cut Scorchia", - "block.create.cut_scorchia_brick_slab": "UNLOCALIZED: Cut Scorchia Brick Slab", - "block.create.cut_scorchia_brick_stairs": "UNLOCALIZED: Cut Scorchia Brick Stairs", - "block.create.cut_scorchia_brick_wall": "UNLOCALIZED: Cut Scorchia Brick Wall", - "block.create.cut_scorchia_bricks": "UNLOCALIZED: Cut Scorchia Bricks", - "block.create.cut_scorchia_slab": "UNLOCALIZED: Cut Scorchia Slab", - "block.create.cut_scorchia_stairs": "UNLOCALIZED: Cut Scorchia Stairs", - "block.create.cut_scorchia_wall": "UNLOCALIZED: Cut Scorchia Wall", - "block.create.cut_scoria": "UNLOCALIZED: Cut Scoria", - "block.create.cut_scoria_brick_slab": "UNLOCALIZED: Cut Scoria Brick Slab", - "block.create.cut_scoria_brick_stairs": "UNLOCALIZED: Cut Scoria Brick Stairs", - "block.create.cut_scoria_brick_wall": "UNLOCALIZED: Cut Scoria Brick Wall", - "block.create.cut_scoria_bricks": "UNLOCALIZED: Cut Scoria Bricks", - "block.create.cut_scoria_slab": "UNLOCALIZED: Cut Scoria Slab", - "block.create.cut_scoria_stairs": "UNLOCALIZED: Cut Scoria Stairs", - "block.create.cut_scoria_wall": "UNLOCALIZED: Cut Scoria Wall", - "block.create.cut_tuff": "UNLOCALIZED: Cut Tuff", - "block.create.cut_tuff_brick_slab": "UNLOCALIZED: Cut Tuff Brick Slab", - "block.create.cut_tuff_brick_stairs": "UNLOCALIZED: Cut Tuff Brick Stairs", - "block.create.cut_tuff_brick_wall": "UNLOCALIZED: Cut Tuff Brick Wall", - "block.create.cut_tuff_bricks": "UNLOCALIZED: Cut Tuff Bricks", - "block.create.cut_tuff_slab": "UNLOCALIZED: Cut Tuff Slab", - "block.create.cut_tuff_stairs": "UNLOCALIZED: Cut Tuff Stairs", - "block.create.cut_tuff_wall": "UNLOCALIZED: Cut Tuff Wall", - "block.create.cut_veridium": "UNLOCALIZED: Cut Veridium", - "block.create.cut_veridium_brick_slab": "UNLOCALIZED: Cut Veridium Brick Slab", - "block.create.cut_veridium_brick_stairs": "UNLOCALIZED: Cut Veridium Brick Stairs", - "block.create.cut_veridium_brick_wall": "UNLOCALIZED: Cut Veridium Brick Wall", - "block.create.cut_veridium_bricks": "UNLOCALIZED: Cut Veridium Bricks", - "block.create.cut_veridium_slab": "UNLOCALIZED: Cut Veridium Slab", - "block.create.cut_veridium_stairs": "UNLOCALIZED: Cut Veridium Stairs", - "block.create.cut_veridium_wall": "UNLOCALIZED: Cut Veridium Wall", + "block.create.cut_andesite": "깎인 안산암", + "block.create.cut_andesite_brick_slab": "깎인 안산암 벽돌 반 블록", + "block.create.cut_andesite_brick_stairs": "깎인 안산암 벽돌 계단", + "block.create.cut_andesite_brick_wall": "깎인 안산암 벽돌 담장", + "block.create.cut_andesite_bricks": "깎인 안산암 벽돌", + "block.create.cut_andesite_slab": "깎인 안산암 반 블록", + "block.create.cut_andesite_stairs": "깎인 안산암 계단", + "block.create.cut_andesite_wall": "깎인 안산암 담장", + "block.create.cut_asurine": "깎인 유리암", + "block.create.cut_asurine_brick_slab": "깎인 유리암 벽돌 반 블록", + "block.create.cut_asurine_brick_stairs": "깎인 유리암 벽돌 계단", + "block.create.cut_asurine_brick_wall": "깎인 유리암 벽돌 담장", + "block.create.cut_asurine_bricks": "깎인 유리암 벽돌", + "block.create.cut_asurine_slab": "깎인 유리암 반 블록", + "block.create.cut_asurine_stairs": "깎인 유리암 계단", + "block.create.cut_asurine_wall": "깎인 유리암 담장", + "block.create.cut_calcite": "깎인 방해석", + "block.create.cut_calcite_brick_slab": "깎인 방해석 벽돌 반 블록", + "block.create.cut_calcite_brick_stairs": "깎인 방해석 벽돌 계단", + "block.create.cut_calcite_brick_wall": "깎인 방해석 벽돌 담장", + "block.create.cut_calcite_bricks": "깎인 방해석 벽돌", + "block.create.cut_calcite_slab": "깎인 방해석 반 블록", + "block.create.cut_calcite_stairs": "깎인 방해석 계단", + "block.create.cut_calcite_wall": "깎인 방해석 담장", + "block.create.cut_crimsite": "깎인 진홍암", + "block.create.cut_crimsite_brick_slab": "깎인 진홍암 벽돌 반 블록", + "block.create.cut_crimsite_brick_stairs": "깎인 진홍암 벽돌 계단", + "block.create.cut_crimsite_brick_wall": "깎인 진홍암 벽돌 담장", + "block.create.cut_crimsite_bricks": "깎인 진홍암 벽돌", + "block.create.cut_crimsite_slab": "깎인 진홍암 반 블록", + "block.create.cut_crimsite_stairs": "깎인 진홍암 계단", + "block.create.cut_crimsite_wall": "깎인 진홍암 담장", + "block.create.cut_deepslate": "깎인 심층암", + "block.create.cut_deepslate_brick_slab": "깎인 심층암 벽돌 반 블록", + "block.create.cut_deepslate_brick_stairs": "깎인 심층암 벽돌 계단", + "block.create.cut_deepslate_brick_wall": "깎인 심층암 벽돌 담장", + "block.create.cut_deepslate_bricks": "깎인 심층암 벽돌", + "block.create.cut_deepslate_slab": "깎인 심층암 반 블록", + "block.create.cut_deepslate_stairs": "깎인 심층암 계단", + "block.create.cut_deepslate_wall": "깎인 심층암 담장", + "block.create.cut_diorite": "깎인 섬록암", + "block.create.cut_diorite_brick_slab": "깎인 섬록암 벽돌 반 블록", + "block.create.cut_diorite_brick_stairs": "깎인 섬록암 벽돌 계단", + "block.create.cut_diorite_brick_wall": "깎인 섬록암 벽돌 담장", + "block.create.cut_diorite_bricks": "깎인 섬록암 벽돌", + "block.create.cut_diorite_slab": "깎인 섬록암 반 블록", + "block.create.cut_diorite_stairs": "깎인 섬록암 계단", + "block.create.cut_diorite_wall": "깎인 섬록암 담장", + "block.create.cut_dripstone": "깎인 점적석", + "block.create.cut_dripstone_brick_slab": "깎인 점적석 벽돌 반 블록", + "block.create.cut_dripstone_brick_stairs": "깎인 점적석 벽돌 계단", + "block.create.cut_dripstone_brick_wall": "깎인 점적석 벽돌 담장", + "block.create.cut_dripstone_bricks": "깎인 점적석 벽돌", + "block.create.cut_dripstone_slab": "깎인 점적석 반 블록", + "block.create.cut_dripstone_stairs": "깎인 점적석 계단", + "block.create.cut_dripstone_wall": "깎인 점적석 담장", + "block.create.cut_granite": "깎인 화강암", + "block.create.cut_granite_brick_slab": "깎인 화강암 벽돌 반 블록", + "block.create.cut_granite_brick_stairs": "깎인 화강암 벽돌 계단", + "block.create.cut_granite_brick_wall": "깎인 화강암 벽돌 담장", + "block.create.cut_granite_bricks": "깎인 화강암 벽돌", + "block.create.cut_granite_slab": "깎인 화강암 반 블록", + "block.create.cut_granite_stairs": "깎인 화강암 계단", + "block.create.cut_granite_wall": "깎인 화강암 담장", + "block.create.cut_limestone": "깎인 석회암", + "block.create.cut_limestone_brick_slab": "깎인 석회암 벽돌 반 블록", + "block.create.cut_limestone_brick_stairs": "깎인 석회암 벽돌 계단", + "block.create.cut_limestone_brick_wall": "깎인 석회암 벽돌 담장", + "block.create.cut_limestone_bricks": "깎인 석회암 벽돌", + "block.create.cut_limestone_slab": "깎인 석회암 반 블록", + "block.create.cut_limestone_stairs": "깎인 석회암 계단", + "block.create.cut_limestone_wall": "깎인 석회암 담장", + "block.create.cut_ochrum": "깎인 황토암", + "block.create.cut_ochrum_brick_slab": "깎인 황토암 벽돌 반 블록", + "block.create.cut_ochrum_brick_stairs": "깎인 황토암 벽돌 계단", + "block.create.cut_ochrum_brick_wall": "깎인 황토암 벽돌 담장", + "block.create.cut_ochrum_bricks": "깎인 황토암 벽돌", + "block.create.cut_ochrum_slab": "깎인 황토암 반 블록", + "block.create.cut_ochrum_stairs": "깎인 황토암 계단", + "block.create.cut_ochrum_wall": "깎인 황토암 담장", + "block.create.cut_scorchia": "깎인 짙은 스코리아", + "block.create.cut_scorchia_brick_slab": "깎인 짙은 스코리아 벽돌 반 블록", + "block.create.cut_scorchia_brick_stairs": "깎인 짙은 스코리아 벽돌 계단", + "block.create.cut_scorchia_brick_wall": "깎인 짙은 스코리아 벽돌 담장", + "block.create.cut_scorchia_bricks": "깎인 짙은 스코리아 벽돌", + "block.create.cut_scorchia_slab": "깎인 짙은 스코리아 반 블록", + "block.create.cut_scorchia_stairs": "깎인 짙은 스코리아 계단", + "block.create.cut_scorchia_wall": "깎인 짙은 스코리아 담장", + "block.create.cut_scoria": "깎인 스코리아", + "block.create.cut_scoria_brick_slab": "깎인 스코리아 벽돌 반 블록", + "block.create.cut_scoria_brick_stairs": "깎인 스코리아 벽돌 계단", + "block.create.cut_scoria_brick_wall": "깎인 스코리아 벽돌 담장", + "block.create.cut_scoria_bricks": "깎인 스코리아 벽돌", + "block.create.cut_scoria_slab": "깎인 스코리아 반 블록", + "block.create.cut_scoria_stairs": "깎인 스코리아 계단", + "block.create.cut_scoria_wall": "깎인 스코리아 담장", + "block.create.cut_tuff": "깎인 응회암", + "block.create.cut_tuff_brick_slab": "깎인 응회암 벽돌 반 블록", + "block.create.cut_tuff_brick_stairs": "깎인 응회암 벽돌 계단", + "block.create.cut_tuff_brick_wall": "깎인 응회암 벽돌 담장", + "block.create.cut_tuff_bricks": "깎인 응회암 벽돌", + "block.create.cut_tuff_slab": "깎인 응회암 반 블록", + "block.create.cut_tuff_stairs": "깎인 응회암 계단", + "block.create.cut_tuff_wall": "깎인 응회암 담장", + "block.create.cut_veridium": "깎인 심록암", + "block.create.cut_veridium_brick_slab": "깎인 심록암 벽돌 반 블록", + "block.create.cut_veridium_brick_stairs": "깎인 심록암 벽돌 계단", + "block.create.cut_veridium_brick_wall": "깎인 심록암 벽돌 담장", + "block.create.cut_veridium_bricks": "깎인 심록암 벽돌", + "block.create.cut_veridium_slab": "깎인 심록암 반 블록", + "block.create.cut_veridium_stairs": "깎인 심록암 계단", + "block.create.cut_veridium_wall": "깎인 심록암 담장", "block.create.cyan_nixie_tube": "청록색 닉시관", "block.create.cyan_sail": "청록색 날개", "block.create.cyan_seat": "청록색 좌석", @@ -192,21 +192,21 @@ "block.create.cyan_valve_handle": "청록색 밸브 손잡이", "block.create.dark_oak_window": "짙은 참나무 유리창", "block.create.dark_oak_window_pane": "짙은 참나무 유리판", - "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", - "block.create.deployer": "배포기", + "block.create.deepslate_pillar": "심층암 기둥", + "block.create.deepslate_zinc_ore": "심층암 아연 광석", + "block.create.deployer": "기계 손", "block.create.depot": "아이템 거치대", "block.create.diorite_pillar": "섬록암 기둥", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.dripstone_pillar": "점적석 기둥", "block.create.encased_chain_drive": "체인 드라이브", "block.create.encased_fan": "선풍기", "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", - "block.create.exposed_copper_shingle_slab": "UNLOCALIZED: Exposed Copper Shingle Slab", - "block.create.exposed_copper_shingle_stairs": "UNLOCALIZED: Exposed Copper Shingle Stairs", - "block.create.exposed_copper_shingles": "UNLOCALIZED: Exposed Copper Shingles", - "block.create.exposed_copper_tile_slab": "UNLOCALIZED: Exposed Copper Tile Slab", - "block.create.exposed_copper_tile_stairs": "UNLOCALIZED: Exposed Copper Tile Stairs", - "block.create.exposed_copper_tiles": "UNLOCALIZED: Exposed Copper Tiles", + "block.create.exposed_copper_shingle_slab": "약간 녹슨 구리 판자 반 블록", + "block.create.exposed_copper_shingle_stairs": "약간 녹슨 구리 판자 계단", + "block.create.exposed_copper_shingles": "약간 녹슨 구리 판자", + "block.create.exposed_copper_tile_slab": "약간 녹슨 구리 타일 반 블록", + "block.create.exposed_copper_tile_stairs": "약간 녹슨 구리 타일 계단", + "block.create.exposed_copper_tiles": "약간 녹슨 구리 타일", "block.create.fluid_pipe": "액체 파이프", "block.create.fluid_tank": "액체 탱크", "block.create.fluid_valve": "액체 밸브", @@ -237,24 +237,24 @@ "block.create.horizontal_framed_glass_pane": "수평 유리판", "block.create.hose_pulley": "호스 도르래", "block.create.item_drain": "아이템 배수구", - "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.item_vault": "아이템 금고", "block.create.jungle_window": "정글나무 유리창", "block.create.jungle_window_pane": "정글나무 유리판", "block.create.large_cogwheel": "큰 톱니바퀴", "block.create.layered_andesite": "이어지는 안산암", - "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", - "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", - "block.create.layered_crimsite": "UNLOCALIZED: Layered Crimsite", - "block.create.layered_deepslate": "UNLOCALIZED: Layered Deepslate", + "block.create.layered_asurine": "이어지는 유리암", + "block.create.layered_calcite": "이어지는 방해석", + "block.create.layered_crimsite": "이어지는 진홍암", + "block.create.layered_deepslate": "이어지는 심층암", "block.create.layered_diorite": "이어지는 섬록암", - "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_dripstone": "이어지는 점적석", "block.create.layered_granite": "이어지는 화강암", "block.create.layered_limestone": "이어지는 석회암", - "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", - "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", + "block.create.layered_ochrum": "이어지는 황토암", + "block.create.layered_scorchia": "이어지는 짙은 스코리아", "block.create.layered_scoria": "이어지는 스코리아", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "이어지는 응회암", + "block.create.layered_veridium": "이어지는 심록암", "block.create.lectern_controller": "독서대 조작기", "block.create.light_blue_nixie_tube": "하늘색 닉시관", "block.create.light_blue_sail": "하늘색 날개", @@ -300,20 +300,20 @@ "block.create.nozzle": "노즐", "block.create.oak_window": "참나무 유리창", "block.create.oak_window_pane": "참나무 유리판", - "block.create.ochrum": "UNLOCALIZED: Ochrum", - "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", + "block.create.ochrum": "황토암", + "block.create.ochrum_pillar": "황토암 기둥", "block.create.orange_sail": "주황색 날개", "block.create.orange_seat": "주황색 좌석", "block.create.orange_toolbox": "주황색 공구상자", "block.create.orange_valve_handle": "주황색 밸브 손잡이", "block.create.ornate_iron_window": "장식된 철 유리창", "block.create.ornate_iron_window_pane": "장식된 철 유리판", - "block.create.oxidized_copper_shingle_slab": "UNLOCALIZED: Oxidized Copper Shingle Slab", - "block.create.oxidized_copper_shingle_stairs": "UNLOCALIZED: Oxidized Copper Shingle Stairs", - "block.create.oxidized_copper_shingles": "UNLOCALIZED: Oxidized Copper Shingles", - "block.create.oxidized_copper_tile_slab": "UNLOCALIZED: Oxidized Copper Tile Slab", - "block.create.oxidized_copper_tile_stairs": "UNLOCALIZED: Oxidized Copper Tile Stairs", - "block.create.oxidized_copper_tiles": "UNLOCALIZED: Oxidized Copper Tiles", + "block.create.oxidized_copper_shingle_slab": "산화된 구리 판자 반 블록", + "block.create.oxidized_copper_shingle_stairs": "산화된 구리 판자 계단", + "block.create.oxidized_copper_shingles": "산화된 구리 판자", + "block.create.oxidized_copper_tile_slab": "산화된 구리 타일 반 블록", + "block.create.oxidized_copper_tile_stairs": "산화된 구리 타일 계단", + "block.create.oxidized_copper_tiles": "산화된 구리 타일", "block.create.peculiar_bell": "황동 종", "block.create.pink_nixie_tube": "분홍색 닉시관", "block.create.pink_sail": "분홍색 날개", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "분홍색 공구상자", "block.create.pink_valve_handle": "분홍색 밸브 손잡이", "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.polished_cut_andesite": "UNLOCALIZED: Polished Cut Andesite", - "block.create.polished_cut_andesite_slab": "UNLOCALIZED: Polished Cut Andesite Slab", - "block.create.polished_cut_andesite_stairs": "UNLOCALIZED: Polished Cut Andesite Stairs", - "block.create.polished_cut_andesite_wall": "UNLOCALIZED: Polished Cut Andesite Wall", - "block.create.polished_cut_asurine": "UNLOCALIZED: Polished Cut Asurine", - "block.create.polished_cut_asurine_slab": "UNLOCALIZED: Polished Cut Asurine Slab", - "block.create.polished_cut_asurine_stairs": "UNLOCALIZED: Polished Cut Asurine Stairs", - "block.create.polished_cut_asurine_wall": "UNLOCALIZED: Polished Cut Asurine Wall", - "block.create.polished_cut_calcite": "UNLOCALIZED: Polished Cut Calcite", - "block.create.polished_cut_calcite_slab": "UNLOCALIZED: Polished Cut Calcite Slab", - "block.create.polished_cut_calcite_stairs": "UNLOCALIZED: Polished Cut Calcite Stairs", - "block.create.polished_cut_calcite_wall": "UNLOCALIZED: Polished Cut Calcite Wall", - "block.create.polished_cut_crimsite": "UNLOCALIZED: Polished Cut Crimsite", - "block.create.polished_cut_crimsite_slab": "UNLOCALIZED: Polished Cut Crimsite Slab", - "block.create.polished_cut_crimsite_stairs": "UNLOCALIZED: Polished Cut Crimsite Stairs", - "block.create.polished_cut_crimsite_wall": "UNLOCALIZED: Polished Cut Crimsite Wall", - "block.create.polished_cut_deepslate": "UNLOCALIZED: Polished Cut Deepslate", - "block.create.polished_cut_deepslate_slab": "UNLOCALIZED: Polished Cut Deepslate Slab", - "block.create.polished_cut_deepslate_stairs": "UNLOCALIZED: Polished Cut Deepslate Stairs", - "block.create.polished_cut_deepslate_wall": "UNLOCALIZED: Polished Cut Deepslate Wall", - "block.create.polished_cut_diorite": "UNLOCALIZED: Polished Cut Diorite", - "block.create.polished_cut_diorite_slab": "UNLOCALIZED: Polished Cut Diorite Slab", - "block.create.polished_cut_diorite_stairs": "UNLOCALIZED: Polished Cut Diorite Stairs", - "block.create.polished_cut_diorite_wall": "UNLOCALIZED: Polished Cut Diorite Wall", - "block.create.polished_cut_dripstone": "UNLOCALIZED: Polished Cut Dripstone", - "block.create.polished_cut_dripstone_slab": "UNLOCALIZED: Polished Cut Dripstone Slab", - "block.create.polished_cut_dripstone_stairs": "UNLOCALIZED: Polished Cut Dripstone Stairs", - "block.create.polished_cut_dripstone_wall": "UNLOCALIZED: Polished Cut Dripstone Wall", - "block.create.polished_cut_granite": "UNLOCALIZED: Polished Cut Granite", - "block.create.polished_cut_granite_slab": "UNLOCALIZED: Polished Cut Granite Slab", - "block.create.polished_cut_granite_stairs": "UNLOCALIZED: Polished Cut Granite Stairs", - "block.create.polished_cut_granite_wall": "UNLOCALIZED: Polished Cut Granite Wall", - "block.create.polished_cut_limestone": "UNLOCALIZED: Polished Cut Limestone", - "block.create.polished_cut_limestone_slab": "UNLOCALIZED: Polished Cut Limestone Slab", - "block.create.polished_cut_limestone_stairs": "UNLOCALIZED: Polished Cut Limestone Stairs", - "block.create.polished_cut_limestone_wall": "UNLOCALIZED: Polished Cut Limestone Wall", - "block.create.polished_cut_ochrum": "UNLOCALIZED: Polished Cut Ochrum", - "block.create.polished_cut_ochrum_slab": "UNLOCALIZED: Polished Cut Ochrum Slab", - "block.create.polished_cut_ochrum_stairs": "UNLOCALIZED: Polished Cut Ochrum Stairs", - "block.create.polished_cut_ochrum_wall": "UNLOCALIZED: Polished Cut Ochrum Wall", - "block.create.polished_cut_scorchia": "UNLOCALIZED: Polished Cut Scorchia", - "block.create.polished_cut_scorchia_slab": "UNLOCALIZED: Polished Cut Scorchia Slab", - "block.create.polished_cut_scorchia_stairs": "UNLOCALIZED: Polished Cut Scorchia Stairs", - "block.create.polished_cut_scorchia_wall": "UNLOCALIZED: Polished Cut Scorchia Wall", - "block.create.polished_cut_scoria": "UNLOCALIZED: Polished Cut Scoria", - "block.create.polished_cut_scoria_slab": "UNLOCALIZED: Polished Cut Scoria Slab", - "block.create.polished_cut_scoria_stairs": "UNLOCALIZED: Polished Cut Scoria Stairs", - "block.create.polished_cut_scoria_wall": "UNLOCALIZED: Polished Cut Scoria Wall", - "block.create.polished_cut_tuff": "UNLOCALIZED: Polished Cut Tuff", - "block.create.polished_cut_tuff_slab": "UNLOCALIZED: Polished Cut Tuff Slab", - "block.create.polished_cut_tuff_stairs": "UNLOCALIZED: Polished Cut Tuff Stairs", - "block.create.polished_cut_tuff_wall": "UNLOCALIZED: Polished Cut Tuff Wall", - "block.create.polished_cut_veridium": "UNLOCALIZED: Polished Cut Veridium", - "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", - "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", - "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", + "block.create.polished_cut_andesite": "윤나는 깎인 안산암", + "block.create.polished_cut_andesite_slab": "윤나는 깎인 안산암 반 블록", + "block.create.polished_cut_andesite_stairs": "윤나는 깎인 안산암 계단", + "block.create.polished_cut_andesite_wall": "윤나는 깎인 안산암 담장", + "block.create.polished_cut_asurine": "윤나는 깎인 유리암", + "block.create.polished_cut_asurine_slab": "윤나는 깎인 유리암 반 블록", + "block.create.polished_cut_asurine_stairs": "윤나는 깎인 유리암 계단", + "block.create.polished_cut_asurine_wall": "윤나는 깎인 유리암 담장", + "block.create.polished_cut_calcite": "윤나는 깎인 방해석", + "block.create.polished_cut_calcite_slab": "윤나는 깎인 방해석 반 블록", + "block.create.polished_cut_calcite_stairs": "윤나는 깎인 방해석 계단", + "block.create.polished_cut_calcite_wall": "윤나는 깎인 방해석 담장", + "block.create.polished_cut_crimsite": "윤나는 깎인 진홍암", + "block.create.polished_cut_crimsite_slab": "윤나는 깎인 진홍암 반 블록", + "block.create.polished_cut_crimsite_stairs": "윤나는 깎인 진홍암 계단", + "block.create.polished_cut_crimsite_wall": "윤나는 깎인 진홍암 담장", + "block.create.polished_cut_deepslate": "윤나는 깎인 심층암", + "block.create.polished_cut_deepslate_slab": "윤나는 깎인 심층암 반 블록", + "block.create.polished_cut_deepslate_stairs": "윤나는 깎인 심층암 계단", + "block.create.polished_cut_deepslate_wall": "윤나는 깎인 심층암 담장", + "block.create.polished_cut_diorite": "윤나는 깎인 섬록암", + "block.create.polished_cut_diorite_slab": "윤나는 깎인 섬록암 반 블록", + "block.create.polished_cut_diorite_stairs": "윤나는 깎인 섬록암 계단", + "block.create.polished_cut_diorite_wall": "윤나는 깎인 섬록암 담장", + "block.create.polished_cut_dripstone": "윤나는 깎인 점적석", + "block.create.polished_cut_dripstone_slab": "윤나는 깎인 점적석 반 블록", + "block.create.polished_cut_dripstone_stairs": "윤나는 깎인 점적석 계단", + "block.create.polished_cut_dripstone_wall": "윤나는 깎인 점적석 담장", + "block.create.polished_cut_granite": "윤나는 깎인 화강암", + "block.create.polished_cut_granite_slab": "윤나는 깎인 화강암 반 블록", + "block.create.polished_cut_granite_stairs": "윤나는 깎인 화강암 계단", + "block.create.polished_cut_granite_wall": "윤나는 깎인 화강암 담장", + "block.create.polished_cut_limestone": "윤나는 깎인 석회암", + "block.create.polished_cut_limestone_slab": "윤나는 깎인 석회암 반 블록", + "block.create.polished_cut_limestone_stairs": "윤나는 깎인 석회암 계단", + "block.create.polished_cut_limestone_wall": "윤나는 깎인 석회암 담장", + "block.create.polished_cut_ochrum": "윤나는 깎인 황토암", + "block.create.polished_cut_ochrum_slab": "윤나는 깎인 황토암 반 블록", + "block.create.polished_cut_ochrum_stairs": "윤나는 깎인 황토암 계단", + "block.create.polished_cut_ochrum_wall": "윤나는 깎인 황토암 담장", + "block.create.polished_cut_scorchia": "윤나는 깎인 짙은 스코리아", + "block.create.polished_cut_scorchia_slab": "윤나는 깎인 짙은 스코리아 반 블록", + "block.create.polished_cut_scorchia_stairs": "윤나는 깎인 짙은 스코리아 계단", + "block.create.polished_cut_scorchia_wall": "윤나는 깎인 짙은 스코리아 담장", + "block.create.polished_cut_scoria": "윤나는 깎인 스코리아", + "block.create.polished_cut_scoria_slab": "윤나는 깎인 스코리아 반 블록", + "block.create.polished_cut_scoria_stairs": "윤나는 깎인 스코리아 계단", + "block.create.polished_cut_scoria_wall": "윤나는 깎인 스코리아 담장", + "block.create.polished_cut_tuff": "윤나는 깎인 응회암", + "block.create.polished_cut_tuff_slab": "윤나는 깎인 응회암 반 블록", + "block.create.polished_cut_tuff_stairs": "윤나는 깎인 응회암 계단", + "block.create.polished_cut_tuff_wall": "윤나는 깎인 응회암 담장", + "block.create.polished_cut_veridium": "윤나는 깎인 심록암", + "block.create.polished_cut_veridium_slab": "윤나는 깎인 심록암 반 블록", + "block.create.polished_cut_veridium_stairs": "윤나는 깎인 심록암 계단", + "block.create.polished_cut_veridium_wall": "윤나는 깎인 심록암 담장", "block.create.portable_fluid_interface": "액체 인터페이스", "block.create.portable_storage_interface": "아이템 인터페이스", "block.create.powered_latch": "레드스톤 걸쇠", "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", "block.create.pulley_magnet": "도르래 자석", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "펄스 연장기", "block.create.pulse_repeater": "펄스 중계기", "block.create.purple_nixie_tube": "보라색 닉시관", "block.create.purple_sail": "보라색 날개", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "보라색 공구상자", "block.create.purple_valve_handle": "보라색 밸브 손잡이", "block.create.radial_chassis": "원형 섀시", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "아연 원석 블록", "block.create.red_nixie_tube": "빨간색 닉시관", "block.create.red_sail": "빨간색 날개", "block.create.red_seat": "빨간색 좌석", @@ -405,70 +405,70 @@ "block.create.sail_frame": "풍차 날개 틀", "block.create.schematic_table": "청사진 탁자", "block.create.schematicannon": "청사진 대포", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "block.create.scorchia": "짙은 스코리아", + "block.create.scorchia_pillar": "짙은 스코리아 기둥", "block.create.scoria": "스코리아", "block.create.scoria_pillar": "스코리아 기둥", "block.create.secondary_linear_chassis": "밝은 직선 섀시", "block.create.sequenced_gearshift": "순서 기어쉬프트", "block.create.shadow_steel_casing": "그림자 케이스", "block.create.shaft": "축", - "block.create.small_andesite_brick_slab": "UNLOCALIZED: Small Andesite Brick Slab", - "block.create.small_andesite_brick_stairs": "UNLOCALIZED: Small Andesite Brick Stairs", - "block.create.small_andesite_brick_wall": "UNLOCALIZED: Small Andesite Brick Wall", - "block.create.small_andesite_bricks": "UNLOCALIZED: Small Andesite Bricks", - "block.create.small_asurine_brick_slab": "UNLOCALIZED: Small Asurine Brick Slab", - "block.create.small_asurine_brick_stairs": "UNLOCALIZED: Small Asurine Brick Stairs", - "block.create.small_asurine_brick_wall": "UNLOCALIZED: Small Asurine Brick Wall", - "block.create.small_asurine_bricks": "UNLOCALIZED: Small Asurine Bricks", - "block.create.small_calcite_brick_slab": "UNLOCALIZED: Small Calcite Brick Slab", - "block.create.small_calcite_brick_stairs": "UNLOCALIZED: Small Calcite Brick Stairs", - "block.create.small_calcite_brick_wall": "UNLOCALIZED: Small Calcite Brick Wall", - "block.create.small_calcite_bricks": "UNLOCALIZED: Small Calcite Bricks", - "block.create.small_crimsite_brick_slab": "UNLOCALIZED: Small Crimsite Brick Slab", - "block.create.small_crimsite_brick_stairs": "UNLOCALIZED: Small Crimsite Brick Stairs", - "block.create.small_crimsite_brick_wall": "UNLOCALIZED: Small Crimsite Brick Wall", - "block.create.small_crimsite_bricks": "UNLOCALIZED: Small Crimsite Bricks", - "block.create.small_deepslate_brick_slab": "UNLOCALIZED: Small Deepslate Brick Slab", - "block.create.small_deepslate_brick_stairs": "UNLOCALIZED: Small Deepslate Brick Stairs", - "block.create.small_deepslate_brick_wall": "UNLOCALIZED: Small Deepslate Brick Wall", - "block.create.small_deepslate_bricks": "UNLOCALIZED: Small Deepslate Bricks", - "block.create.small_diorite_brick_slab": "UNLOCALIZED: Small Diorite Brick Slab", - "block.create.small_diorite_brick_stairs": "UNLOCALIZED: Small Diorite Brick Stairs", - "block.create.small_diorite_brick_wall": "UNLOCALIZED: Small Diorite Brick Wall", - "block.create.small_diorite_bricks": "UNLOCALIZED: Small Diorite Bricks", - "block.create.small_dripstone_brick_slab": "UNLOCALIZED: Small Dripstone Brick Slab", - "block.create.small_dripstone_brick_stairs": "UNLOCALIZED: Small Dripstone Brick Stairs", - "block.create.small_dripstone_brick_wall": "UNLOCALIZED: Small Dripstone Brick Wall", - "block.create.small_dripstone_bricks": "UNLOCALIZED: Small Dripstone Bricks", - "block.create.small_granite_brick_slab": "UNLOCALIZED: Small Granite Brick Slab", - "block.create.small_granite_brick_stairs": "UNLOCALIZED: Small Granite Brick Stairs", - "block.create.small_granite_brick_wall": "UNLOCALIZED: Small Granite Brick Wall", - "block.create.small_granite_bricks": "UNLOCALIZED: Small Granite Bricks", - "block.create.small_limestone_brick_slab": "UNLOCALIZED: Small Limestone Brick Slab", - "block.create.small_limestone_brick_stairs": "UNLOCALIZED: Small Limestone Brick Stairs", - "block.create.small_limestone_brick_wall": "UNLOCALIZED: Small Limestone Brick Wall", - "block.create.small_limestone_bricks": "UNLOCALIZED: Small Limestone Bricks", - "block.create.small_ochrum_brick_slab": "UNLOCALIZED: Small Ochrum Brick Slab", - "block.create.small_ochrum_brick_stairs": "UNLOCALIZED: Small Ochrum Brick Stairs", - "block.create.small_ochrum_brick_wall": "UNLOCALIZED: Small Ochrum Brick Wall", - "block.create.small_ochrum_bricks": "UNLOCALIZED: Small Ochrum Bricks", - "block.create.small_scorchia_brick_slab": "UNLOCALIZED: Small Scorchia Brick Slab", - "block.create.small_scorchia_brick_stairs": "UNLOCALIZED: Small Scorchia Brick Stairs", - "block.create.small_scorchia_brick_wall": "UNLOCALIZED: Small Scorchia Brick Wall", - "block.create.small_scorchia_bricks": "UNLOCALIZED: Small Scorchia Bricks", - "block.create.small_scoria_brick_slab": "UNLOCALIZED: Small Scoria Brick Slab", - "block.create.small_scoria_brick_stairs": "UNLOCALIZED: Small Scoria Brick Stairs", - "block.create.small_scoria_brick_wall": "UNLOCALIZED: Small Scoria Brick Wall", - "block.create.small_scoria_bricks": "UNLOCALIZED: Small Scoria Bricks", - "block.create.small_tuff_brick_slab": "UNLOCALIZED: Small Tuff Brick Slab", - "block.create.small_tuff_brick_stairs": "UNLOCALIZED: Small Tuff Brick Stairs", - "block.create.small_tuff_brick_wall": "UNLOCALIZED: Small Tuff Brick Wall", - "block.create.small_tuff_bricks": "UNLOCALIZED: Small Tuff Bricks", - "block.create.small_veridium_brick_slab": "UNLOCALIZED: Small Veridium Brick Slab", - "block.create.small_veridium_brick_stairs": "UNLOCALIZED: Small Veridium Brick Stairs", - "block.create.small_veridium_brick_wall": "UNLOCALIZED: Small Veridium Brick Wall", - "block.create.small_veridium_bricks": "UNLOCALIZED: Small Veridium Bricks", + "block.create.small_andesite_brick_slab": "작은 안산암 벽돌 반 블록", + "block.create.small_andesite_brick_stairs": "작은 안산암 벽돌 계단", + "block.create.small_andesite_brick_wall": "작은 안산암 벽돌 담장", + "block.create.small_andesite_bricks": "작은 안산암 벽돌", + "block.create.small_asurine_brick_slab": "작은 유리암 벽돌 반 블록", + "block.create.small_asurine_brick_stairs": "작은 유리암 벽돌 계단", + "block.create.small_asurine_brick_wall": "작은 유리암 벽돌 담장", + "block.create.small_asurine_bricks": "작은 유리암 벽돌", + "block.create.small_calcite_brick_slab": "작은 방해석 벽돌 반 블록", + "block.create.small_calcite_brick_stairs": "작은 방해석 벽돌 계단", + "block.create.small_calcite_brick_wall": "작은 방해석 벽돌 담장", + "block.create.small_calcite_bricks": "작은 방해석 벽돌", + "block.create.small_crimsite_brick_slab": "작은 진홍암 벽돌 반 블록", + "block.create.small_crimsite_brick_stairs": "작은 진홍암 벽돌 계단", + "block.create.small_crimsite_brick_wall": "작은 진홍암 벽돌 담장", + "block.create.small_crimsite_bricks": "작은 진홍암 벽돌", + "block.create.small_deepslate_brick_slab": "작은 심층암 벽돌 반 블록", + "block.create.small_deepslate_brick_stairs": "작은 심층암 벽돌 계단", + "block.create.small_deepslate_brick_wall": "작은 심층암 벽돌 담장", + "block.create.small_deepslate_bricks": "작은 심층암 벽돌", + "block.create.small_diorite_brick_slab": "작은 섬록암 벽돌 반 블록", + "block.create.small_diorite_brick_stairs": "작은 섬록암 벽돌 계단", + "block.create.small_diorite_brick_wall": "작은 섬록암 벽돌 담장", + "block.create.small_diorite_bricks": "작은 섬록암 벽돌", + "block.create.small_dripstone_brick_slab": "작은 점적석 벽돌 반 블록", + "block.create.small_dripstone_brick_stairs": "작은 점적석 벽돌 계단", + "block.create.small_dripstone_brick_wall": "작은 점적석 벽돌 담장", + "block.create.small_dripstone_bricks": "작은 점적석 벽돌", + "block.create.small_granite_brick_slab": "작은 화강암 벽돌 반 블록", + "block.create.small_granite_brick_stairs": "작은 화강암 벽돌 계단", + "block.create.small_granite_brick_wall": "작은 화강암 벽돌 담장", + "block.create.small_granite_bricks": "작은 화강암 벽돌", + "block.create.small_limestone_brick_slab": "작은 석회암 벽돌 반 블록", + "block.create.small_limestone_brick_stairs": "작은 석회암 벽돌 계단", + "block.create.small_limestone_brick_wall": "작은 석회암 벽돌 담장", + "block.create.small_limestone_bricks": "작은 석회암 벽돌", + "block.create.small_ochrum_brick_slab": "작은 황토암 벽돌 반 블록", + "block.create.small_ochrum_brick_stairs": "작은 황토암 벽돌 계단", + "block.create.small_ochrum_brick_wall": "작은 황토암 벽돌 담장", + "block.create.small_ochrum_bricks": "작은 황토암 벽돌", + "block.create.small_scorchia_brick_slab": "작은 짙은 스코리아 벽돌 반 블록", + "block.create.small_scorchia_brick_stairs": "작은 짙은 스코리아 벽돌 계단", + "block.create.small_scorchia_brick_wall": "작은 짙은 스코리아 벽돌 담장", + "block.create.small_scorchia_bricks": "작은 짙은 스코리아 벽돌", + "block.create.small_scoria_brick_slab": "작은 스코리아 벽돌 반 블록", + "block.create.small_scoria_brick_stairs": "작은 스코리아 벽돌 계단", + "block.create.small_scoria_brick_wall": "작은 스코리아 벽돌 담장", + "block.create.small_scoria_bricks": "작은 스코리아 벽돌", + "block.create.small_tuff_brick_slab": "작은 응회암 벽돌 반 블록", + "block.create.small_tuff_brick_stairs": "작은 응회암 벽돌 계단", + "block.create.small_tuff_brick_wall": "작은 응회암 벽돌 담장", + "block.create.small_tuff_bricks": "작은 응회암 벽돌", + "block.create.small_veridium_brick_slab": "작은 심록암 벽돌 반 블록", + "block.create.small_veridium_brick_stairs": "작은 심록암 벽돌 계단", + "block.create.small_veridium_brick_wall": "작은 심록암 벽돌 담장", + "block.create.small_veridium_bricks": "작은 심록암 벽돌", "block.create.smart_chute": "스마트 슈트", "block.create.smart_fluid_pipe": "스마트 액체 파이프", "block.create.speedometer": "속도 계측기", @@ -481,45 +481,45 @@ "block.create.stressometer": "피로도 계측기", "block.create.tiled_glass": "타일 유리", "block.create.tiled_glass_pane": "타일 유리판", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.tuff_pillar": "응회암 기둥", "block.create.turntable": "돌림판", - "block.create.veridium": "UNLOCALIZED: Veridium", - "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.veridium": "심록암", + "block.create.veridium_pillar": "심록암 기둥", "block.create.vertical_framed_glass": "수직 유리", "block.create.vertical_framed_glass_pane": "수직 유리판", "block.create.warped_window": "뒤틀린 유리창", "block.create.warped_window_pane": "뒤틀린 유리판", "block.create.water_wheel": "물레바퀴", - "block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab", - "block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs", - "block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles", - "block.create.waxed_copper_tile_slab": "UNLOCALIZED: Waxed Copper Tile Slab", - "block.create.waxed_copper_tile_stairs": "UNLOCALIZED: Waxed Copper Tile Stairs", - "block.create.waxed_copper_tiles": "UNLOCALIZED: Waxed Copper Tiles", - "block.create.waxed_exposed_copper_shingle_slab": "UNLOCALIZED: Waxed Exposed Copper Shingle Slab", - "block.create.waxed_exposed_copper_shingle_stairs": "UNLOCALIZED: Waxed Exposed Copper Shingle Stairs", - "block.create.waxed_exposed_copper_shingles": "UNLOCALIZED: Waxed Exposed Copper Shingles", - "block.create.waxed_exposed_copper_tile_slab": "UNLOCALIZED: Waxed Exposed Copper Tile Slab", - "block.create.waxed_exposed_copper_tile_stairs": "UNLOCALIZED: Waxed Exposed Copper Tile Stairs", - "block.create.waxed_exposed_copper_tiles": "UNLOCALIZED: Waxed Exposed Copper Tiles", - "block.create.waxed_oxidized_copper_shingle_slab": "UNLOCALIZED: Waxed Oxidized Copper Shingle Slab", - "block.create.waxed_oxidized_copper_shingle_stairs": "UNLOCALIZED: Waxed Oxidized Copper Shingle Stairs", - "block.create.waxed_oxidized_copper_shingles": "UNLOCALIZED: Waxed Oxidized Copper Shingles", - "block.create.waxed_oxidized_copper_tile_slab": "UNLOCALIZED: Waxed Oxidized Copper Tile Slab", - "block.create.waxed_oxidized_copper_tile_stairs": "UNLOCALIZED: Waxed Oxidized Copper Tile Stairs", - "block.create.waxed_oxidized_copper_tiles": "UNLOCALIZED: Waxed Oxidized Copper Tiles", - "block.create.waxed_weathered_copper_shingle_slab": "UNLOCALIZED: Waxed Weathered Copper Shingle Slab", - "block.create.waxed_weathered_copper_shingle_stairs": "UNLOCALIZED: Waxed Weathered Copper Shingle Stairs", - "block.create.waxed_weathered_copper_shingles": "UNLOCALIZED: Waxed Weathered Copper Shingles", - "block.create.waxed_weathered_copper_tile_slab": "UNLOCALIZED: Waxed Weathered Copper Tile Slab", - "block.create.waxed_weathered_copper_tile_stairs": "UNLOCALIZED: Waxed Weathered Copper Tile Stairs", - "block.create.waxed_weathered_copper_tiles": "UNLOCALIZED: Waxed Weathered Copper Tiles", - "block.create.weathered_copper_shingle_slab": "UNLOCALIZED: Weathered Copper Shingle Slab", - "block.create.weathered_copper_shingle_stairs": "UNLOCALIZED: Weathered Copper Shingle Stairs", - "block.create.weathered_copper_shingles": "UNLOCALIZED: Weathered Copper Shingles", - "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", - "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", - "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", + "block.create.waxed_copper_shingle_slab": "밀랍칠한 구리 판자 반 블록", + "block.create.waxed_copper_shingle_stairs": "밀랍칠한 구리 판자 계단", + "block.create.waxed_copper_shingles": "밀랍칠한 구리 판자", + "block.create.waxed_copper_tile_slab": "밀랍칠한 구리 타일 반 블록", + "block.create.waxed_copper_tile_stairs": "밀랍칠한 구리 타일 계단", + "block.create.waxed_copper_tiles": "밀랍칠한 구리 타일", + "block.create.waxed_exposed_copper_shingle_slab": "밀랍칠한 약간 녹슨 구리 판자 반 블록", + "block.create.waxed_exposed_copper_shingle_stairs": "밀랍칠한 약간 녹슨 구리 판자 계단", + "block.create.waxed_exposed_copper_shingles": "밀랍칠한 약간 녹슨 구리 판자", + "block.create.waxed_exposed_copper_tile_slab": "밀랍칠한 약간 녹슨 구리 타일 반 블록", + "block.create.waxed_exposed_copper_tile_stairs": "밀랍칠한 약간 녹슨 구리 타일 계단", + "block.create.waxed_exposed_copper_tiles": "밀랍칠한 약간 녹슨 구리 타일", + "block.create.waxed_oxidized_copper_shingle_slab": "밀랍칠한 산화된 구리 판자 반 블록", + "block.create.waxed_oxidized_copper_shingle_stairs": "밀랍칠한 산화된 구리 판자 계단", + "block.create.waxed_oxidized_copper_shingles": "밀랍칠한 산화된 구리 판자", + "block.create.waxed_oxidized_copper_tile_slab": "밀랍칠한 산화된 구리 타일 반 블록", + "block.create.waxed_oxidized_copper_tile_stairs": "밀랍칠한 산화된 구리 타일 계단", + "block.create.waxed_oxidized_copper_tiles": "밀랍칠한 산화된 구리 타일", + "block.create.waxed_weathered_copper_shingle_slab": "밀랍칠한 녹슨 구리 판자 반 블록", + "block.create.waxed_weathered_copper_shingle_stairs": "밀랍칠한 녹슨 구리 판자 계단", + "block.create.waxed_weathered_copper_shingles": "밀랍칠한 녹슨 구리 판자", + "block.create.waxed_weathered_copper_tile_slab": "밀랍칠한 녹슨 구리 타일 반 블록", + "block.create.waxed_weathered_copper_tile_stairs": "밀랍칠한 녹슨 구리 타일 계단", + "block.create.waxed_weathered_copper_tiles": "밀랍칠한 녹슨 구리 타일", + "block.create.weathered_copper_shingle_slab": "녹슨 구리 판자 반 블록", + "block.create.weathered_copper_shingle_stairs": "녹슨 구리 판자 계단", + "block.create.weathered_copper_shingles": "녹슨 구리 판자", + "block.create.weathered_copper_tile_slab": "녹슨 구리 타일 반 블록", + "block.create.weathered_copper_tile_stairs": "녹슨 구리 타일 계단", + "block.create.weathered_copper_tiles": "녹슨 구리 타일", "block.create.weighted_ejector": "투척기", "block.create.white_nixie_tube": "하얀색 닉시관", "block.create.white_sail": "하얀색 날개", @@ -591,7 +591,7 @@ "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", "item.create.empty_schematic": "빈 청사진", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "경험의 조각", "item.create.extendo_grip": "외장형 연장 팔", "item.create.filter": "필터 틀", "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 구조물", @@ -613,7 +613,7 @@ "item.create.powdered_obsidian": "흑요석 가루", "item.create.precision_mechanism": "정밀 기계장치", "item.create.propeller": "프로펠러", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "아연 원석", "item.create.red_sand_paper": "붉은 사포", "item.create.refined_radiance": "정제된 광채", "item.create.rose_quartz": "장밋빛 석영", @@ -750,7 +750,7 @@ "advancement.create.nixie_tube": "나는 스타일있게 표시해", "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 작동시키세요.", + "advancement.create.deployer.desc": "당신의 분신, 기계 손을 설치하고 작동시키세요.", "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.flywheel": "공장의 심장", @@ -768,7 +768,7 @@ "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", + "advancement.create.fist_bump.desc": "두 기계 손을 서로 부딫치게 하세요.", "advancement.create.crushing_wheel": "한 쌍의 거인들", "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", "advancement.create.blaze_cake": "폭주", @@ -805,7 +805,7 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", "death.attack.create.cuckoo_clock_explosion.player": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", - "create.block.deployer.damage_source_name": "배포기", + "create.block.deployer.damage_source_name": "기계 손", "create.block.cart_assembler.invalid": "카트 조립기를 레일 위에 설치하세요", "create.menu.return": "메뉴로 돌아가기", @@ -828,7 +828,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", - "create.recipe.deploying": "Deploying", + "create.recipe.deploying": "행동 모방", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -1101,12 +1101,12 @@ "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skipTileEntities": "UNLOCALIZED: Protect Tile Entities", "create.gui.schematicannon.slot.gunpowder": "화약을 넣어 대포 연료를 채우세요", "create.gui.schematicannon.slot.listPrinter": "책을 넣어 건축 재료 체크리스트를 인쇄하세요", "create.gui.schematicannon.slot.schematic": "여기에 청사진을 넣으세요. 건설 구역이 설정되어 있어야 합니다.", "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블록을 찾지 못할 경우,건너뛰고 다음 블록 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", + "create.gui.schematicannon.option.skipTileEntities.description": "UNLOCALIZED: The cannon will avoid replacing data holding blocks such as Chests.", "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", @@ -1131,7 +1131,7 @@ "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", "create.materialChecklist": "재료 목록", - "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러와지지 않아 재료 목록이 부정확할 수 있습니다.", + "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러올 수 없어 재료 목록이 부정확할 수 있습니다.", "create.gui.filter.deny_list": "블랙리스트", "create.gui.filter.deny_list.description": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", @@ -1306,8 +1306,8 @@ "create.hint.mechanical_arm_no_targets": "이 _기계 팔_은 _목표_가 설정되지 않았습니다. _기계 팔을 손에 들고_ 벨트, 아이템 거치대, 퍼널을 _우클릭_하여 목표로 지정하세요.", "create.hint.empty_bearing.title": "베어링 업데이트", "create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.", - "create.hint.full_deployer.title": "배포기 아이템 과적", - "create.hint.full_deployer": "이 _배포기_는 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", + "create.hint.full_deployer.title": "기계 손 아이템 과적", + "create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", @@ -1338,7 +1338,7 @@ "create.subtitle.mechanical_press_activation_belt": "압착기가 작동함", "create.subtitle.fwoomp": "감자포를 쏨", "create.subtitle.worldshaper_place": "세계편집기가 쏨", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "사포를 사용함", "create.subtitle.crushing_1": "분쇄되는 소리", "create.subtitle.depot_slide": "아이템이 미끄러짐", "create.subtitle.saw_activate_stone": "톱이 작동함", @@ -1351,7 +1351,7 @@ "create.subtitle.controller_put": "조작기를 놓음", "create.subtitle.cranking": "크랭크가 돌아감", "create.subtitle.wrench_remove": "장치가 부숴짐", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "사포를 사용함", "create.subtitle.cogs": "톱니바퀴가 돌아감", "create.subtitle.slime_added": "슬라임이 철퍽거림", "create.subtitle.wrench_rotate": "렌치를 사용함", @@ -1545,7 +1545,7 @@ "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", + "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 기계 손이 자동으로 쓸 수 있습니다.", "item.create.sand_paper.tooltip.condition1": "사용할 때", "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", @@ -1602,10 +1602,10 @@ "item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때", "item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.", - "item.create.experience_nugget.tooltip": "UNLOCALIZED: NUGGET OF EXPERIENCE", - "item.create.experience_nugget.tooltip.summary": "UNLOCALIZED: _Ding!_ A speck of _inspiration_ from your fantastic inventions.", - "item.create.experience_nugget.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.experience_nugget.tooltip.behaviour1": "UNLOCALIZED: _Redeems_ _Experience_ points contained within.", + "item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE", + "item.create.experience_nugget.tooltip.summary": "_띵!_ 당신의 멋진 발명품에서 탄생한 _영감_의 알맹이입니다.", + "item.create.experience_nugget.tooltip.condition1": "사용했을 때", + "item.create.experience_nugget.tooltip.behaviour1": "담겨져 있던 _경험치_를 _배출_합니다.", "block.create.peculiar_bell.tooltip": "PECULIAR BELL", "block.create.peculiar_bell.tooltip.summary": "장식을 위한 황동 종입니다. 영혼 불꽃 위에 설치하면 _기이한_ 일이 일어난다고 합니다...", @@ -1725,7 +1725,7 @@ "create.ponder.blaze_burner.text_1": "블레이즈 버너는 대야 안에서 처리되는 아이템에 열을 제공합니다.", "create.ponder.blaze_burner.text_2": "이런 식으로, 블레이즈는 가연성 물질을 먹습니다.", "create.ponder.blaze_burner.text_3": "블레이즈 케아크를 먹이면 버너는 더 뜨겁게 타오릅니다.", - "create.ponder.blaze_burner.text_4": "이 시스템은 배포기나 기계 팔을 이용해 자동화될 수 있습니다.", + "create.ponder.blaze_burner.text_4": "이 시스템은 기계 손이나 기계 팔을 이용해 자동화될 수 있습니다.", "create.ponder.brass_funnel.header": "황동 퍼널", "create.ponder.brass_funnel.text_1": "안산암 퍼널는 아이템 한 개만 뽑아냅니다.", @@ -1824,10 +1824,10 @@ "create.ponder.cogwheel.text_1": "톱니바퀴는 인접한 톱니바퀴에 동력을 전달합니다.", "create.ponder.cogwheel.text_2": "이렇게 연결된 톱니바퀴 축은 반대방향으로 돌아갑니다.", - "create.ponder.cogwheel_casing.header": "UNLOCALIZED: Encasing Cogwheels", - "create.ponder.cogwheel_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Cogwheels", - "create.ponder.cogwheel_casing.text_2": "UNLOCALIZED: Components added after encasing will not connect to the shaft outputs", - "create.ponder.cogwheel_casing.text_3": "UNLOCALIZED: The Wrench can be used to toggle connections", + "create.ponder.cogwheel_casing.header": "톱니바쿼에 케이스 씌우기", + "create.ponder.cogwheel_casing.text_1": "황동, 안산암 케이스는 톱니바퀴를 꾸밀 때 사용할 수 있습니다.", + "create.ponder.cogwheel_casing.text_2": "기본적으로 케이스를 씌운 톱니바퀴는 축과 연결되지 않습니다.", + "create.ponder.cogwheel_casing.text_3": "렌치를 사용하여 축과 연결하거나 차단할 수 있습니다.", "create.ponder.creative_fluid_tank.header": "크리에이티브 탱크", "create.ponder.creative_fluid_tank.text_1": "크리에이티브 탱크는 무한히 액체를 공급합니다.", @@ -1845,41 +1845,41 @@ "create.ponder.crushing_wheels.text_3": "위에서 투입된 아이템은 가공되고, 아래로 떨어집니다.", "create.ponder.crushing_wheels.text_4": "이 과정은 자동화 될 수 있습니다.", - "create.ponder.deployer.header": "배포기 이용하기", - "create.ponder.deployer.text_1": "동력을 받으면, 배포기는 플레이어의 행동을 흉내냅니다.", - "create.ponder.deployer.text_10": "손에다 우클릭하여 배포기가 쓸 아이템을 건네세요.", + "create.ponder.deployer.header": "기계 손 이용하기", + "create.ponder.deployer.text_1": "동력을 받으면, 기계 손은 플레이어의 행동을 흉내냅니다.", + "create.ponder.deployer.text_10": "손에다 우클릭하여 기계 손이 쓸 아이템을 건네세요.", "create.ponder.deployer.text_11": "아이템은 자동으로 투입될 수 있습니다.", "create.ponder.deployer.text_12": "필터 슬롯도 있습니다.", "create.ponder.deployer.text_13": "필터가 설정되면, 필터에 맞는 아이템을 들고있을 때 작동합니다.", "create.ponder.deployer.text_14": "필터에 맞는 아이템만 들어가며...", "create.ponder.deployer.text_15": "...그 외의 아이템은 배출됩니다.", - "create.ponder.deployer.text_2": "배포기는 한 칸 떨어진 블록에 상호작용합니다.", + "create.ponder.deployer.text_2": "기계 손은 한 칸 떨어진 블록에 상호작용합니다.", "create.ponder.deployer.text_3": "바로 앞에 블록이 있어도 상괸없습니다.", - "create.ponder.deployer.text_4": "배포기가 할 수 있는 것:", + "create.ponder.deployer.text_4": "기계 손이 할 수 있는 것:", "create.ponder.deployer.text_5": "블록 설치하기", "create.ponder.deployer.text_6": "아이템 사용하기", "create.ponder.deployer.text_7": "블록 활성화하기", "create.ponder.deployer.text_8": "블록 수확하기", "create.ponder.deployer.text_9": "몹 공격하기", - "create.ponder.deployer_contraption.header": "구조물에서의 배포기", - "create.ponder.deployer_contraption.text_1": "배포기가 움직이는 구조물의 일부면...", - "create.ponder.deployer_contraption.text_2": "...배포기는 움직일 때마다 작동하며, 구조물에 붙어있는 아무 보관함의 아이템을 사용합니다.", + "create.ponder.deployer_contraption.header": "구조물에서의 기계 손", + "create.ponder.deployer_contraption.text_1": "기계 손이 움직이는 구조물의 일부면...", + "create.ponder.deployer_contraption.text_2": "...기계 손은 움직일 때마다 작동하며, 구조물에 붙어있는 아무 보관함의 아이템을 사용합니다.", "create.ponder.deployer_contraption.text_3": "필터를 이용해 어떤 아이템을 사용할 지 정할 수 있습니다.", - "create.ponder.deployer_modes.header": "배포기의 작동 방식", - "create.ponder.deployer_modes.text_1": "배포기는 기본적으로 우클릭을 흉내냅니다.", + "create.ponder.deployer_modes.header": "기계 손의 작동 방식", + "create.ponder.deployer_modes.text_1": "기계 손은 기본적으로 우클릭을 흉내냅니다.", "create.ponder.deployer_modes.text_2": "렌치를 이용해, 좌클릭을 흉내내도록 설정할 수 있습니다.", - "create.ponder.deployer_processing.header": "배포기로 아이템 가공하기", - "create.ponder.deployer_processing.text_1": "배포기가 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", - "create.ponder.deployer_processing.text_2": "가공할 아이템은 배포기 아래에 떨구거나 아이템 거치대에 올려두어야 합니다.", + "create.ponder.deployer_processing.header": "기계 손으로 아이템 가공하기", + "create.ponder.deployer_processing.text_1": "기계 손이 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", + "create.ponder.deployer_processing.text_2": "가공할 아이템은 기계 손 아래에 떨구거나 아이템 거치대에 올려두어야 합니다.", "create.ponder.deployer_processing.text_3": "아이템이 벨트에 있으면...", "create.ponder.deployer_processing.text_4": "...압착기가 알아서 아이템 이동을 멈추고 가공합니다.", - "create.ponder.deployer_redstone.header": "레드스톤과 배포기", - "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 배포기는 작동하지 않습니다.", - "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 배포기는 입력된 행동을 마무리합니다.", + "create.ponder.deployer_redstone.header": "레드스톤과 기계 손", + "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 기계 손은 작동하지 않습니다.", + "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 기계 손은 입력된 행동을 마무리합니다.", "create.ponder.deployer_redstone.text_3": "따라서 부정 펄스는 한 번만 작동하게 합니다.", "create.ponder.depot.header": "아이템 거치대 사용하기", @@ -2049,16 +2049,16 @@ "create.ponder.item_drain.text_4": "...아이템은 굴라가며 담긴 액체를 비웁니다.", "create.ponder.item_drain.text_5": "배수구 탱크에 있는 액체는 파이프로 옮길 수 있습니다.", - "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", - "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", - "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + "create.ponder.item_vault_sizes.header": "아이템 금고의 크기", + "create.ponder.item_vault_sizes.text_1": "아이템 금고를 여러개 연결하여 총량을 늘릴 수 있습니다.", + "create.ponder.item_vault_sizes.text_2": "최대 너비는 3 블록이고...", + "create.ponder.item_vault_sizes.text_3": "...길이는 너비의 3배까지 늘릴 수 있습니다.", - "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", - "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", - "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", - "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", - "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.item_vault_storage.header": "금고에 아이템 보관하기", + "create.ponder.item_vault_storage.text_1": "아이템 금고는 많은 아이템을 보관할 수 있습니다.", + "create.ponder.item_vault_storage.text_2": "하지만, 플레이어가 직접 꺼내거나 보관할 수는 없습니다.", + "create.ponder.item_vault_storage.text_3": "아이템을 수송할 수 있는 모든 부품은 아이템을 넣거나...", + "create.ponder.item_vault_storage.text_4": "...금고에서 아이템을 빼낼 수 있습니다", "create.ponder.large_cogwheel.header": "큰 톱니바퀴로 동력 전달하기", "create.ponder.large_cogwheel.text_1": "큰 톱니바퀴는 수직으로 서로 맞물립니다.", @@ -2263,17 +2263,17 @@ "create.ponder.powered_toggle_latch.text_3": "혹은 끕니다.", "create.ponder.powered_toggle_latch.text_4": "레드스톤 토글 걸쇠는 직접 끄고 킬 수도 있습니다.", - "create.ponder.pulse_extender.header": "UNLOCALIZED: Controlling signals using Pulse Extenders", - "create.ponder.pulse_extender.text_1": "UNLOCALIZED: Pulse Extenders can lengthen a signal passing through", - "create.ponder.pulse_extender.text_2": "UNLOCALIZED: They activate after a short delay...", - "create.ponder.pulse_extender.text_3": "UNLOCALIZED: ...and cool down for the configured duration", - "create.ponder.pulse_extender.text_4": "UNLOCALIZED: Using the mouse wheel, the discharge time can be configured", - "create.ponder.pulse_extender.text_5": "UNLOCALIZED: The configured duration can range up to 30 minutes", + "create.ponder.pulse_extender.header": "펄스 연장기로 신호 조절하기", + "create.ponder.pulse_extender.text_1": "펄스 연장기는 지나가는 신호의 길이를 늘릴 수 있습니다.", + "create.ponder.pulse_extender.text_2": "연장기는 짧은 딜레이 후에 작동하고...", + "create.ponder.pulse_extender.text_3": "...설정된 시간 이후에 꺼집니다.", + "create.ponder.pulse_extender.text_4": "마우스 휠을 이용하여 연장 시간을 조절할 수 있습니다.", + "create.ponder.pulse_extender.text_5": "최대 신호 연장 시간은 30분입니다", "create.ponder.pulse_repeater.header": "펄스 중계기 사용하기", - "create.ponder.pulse_repeater.text_1": "펄스 중계기는 어느 레드스톤 신호라도 1틱 신호로 바꿉니다.", - "create.ponder.pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.pulse_repeater.text_1": "펄스 중계기는 모든 레드스톤 신호를 1틱 신호로 바꿉니다.", + "create.ponder.pulse_repeater.text_2": "마우스 휠을 이용하여 딜레이 시간을 조절할 수 있습니다.", + "create.ponder.pulse_repeater.text_3": "최대 신호 딜레이 시간은 30분입니다", "create.ponder.radial_chassis.header": "원형 섀시를 이용해 블록 붙이기", "create.ponder.radial_chassis.text_1": "원형 섀시는 다른 원형 섀시와 이어집니다.", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 18924017a..e1110e7ce 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1673", + "_": "Missing Localizations: 1556", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,8 +9,8 @@ "block.create.analog_lever": "Alavanca Analógica", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", - "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", - "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", + "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", + "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_pillar": "UNLOCALIZED: Andesite Pillar", @@ -21,7 +21,7 @@ "block.create.belt": "Esteira Mecânica", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.black_nixie_tube": "UNLOCALIZED: Black Nixie Tube", + "block.create.black_nixie_tube": "Tubo nixie preto", "block.create.black_sail": "Vela preta", "block.create.black_seat": "Assento preto", "block.create.black_toolbox": "Caixa de ferramentas preta", @@ -35,8 +35,8 @@ "block.create.brass_belt_funnel": "Funil de Esteira de Latão", "block.create.brass_block": "Bloco de Latão", "block.create.brass_casing": "Revestimento de Latão", - "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", - "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", + "block.create.brass_encased_cogwheel": "Roda dentada revestida com latão", + "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_tunnel": "Tunel de Latão", @@ -72,7 +72,7 @@ "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", "block.create.crushing_wheel": "Roda de Moer", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Relógio Cuckok", + "block.create.cuckoo_clock": "Relógio Cuckoo", "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", @@ -193,7 +193,7 @@ "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", + "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", @@ -237,10 +237,10 @@ "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "Polia de Mangueira", "block.create.item_drain": "Dreno de Item", - "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.item_vault": "Cofre de itens", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Roda Dentada Grande", + "block.create.large_cogwheel": "UNLOCALIZED: Large Cogwheel", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", @@ -292,7 +292,7 @@ "block.create.mechanical_press": "Prensa Mecânica", "block.create.mechanical_pump": "Bomba Mecânica", "block.create.mechanical_saw": "Serra Mecânica", - "block.create.metal_bracket": "UNLOCALIZED: Metal Bracket", + "block.create.metal_bracket": "Suporte 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", @@ -377,12 +377,12 @@ "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", - "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", + "block.create.portable_fluid_interface": "Interface de fluidos portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "Imã da Polia", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_repeater": "Repetidor de Pulso", "block.create.purple_nixie_tube": "Tubo nixie roxo", "block.create.purple_sail": "Vela roxo", @@ -390,7 +390,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.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "Bloco de zinco bruto", "block.create.red_nixie_tube": "Tubo nixie vermelho", "block.create.red_sail": "Vela vermelha", "block.create.red_seat": "Assento vermelho", @@ -401,7 +401,7 @@ "block.create.refined_radiance_casing": "Revestimento Brilhante", "block.create.rope": "Corda", "block.create.rope_pulley": "Polia", - "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacionalr", + "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", @@ -472,7 +472,7 @@ "block.create.smart_chute": "calha Inteligente", "block.create.smart_fluid_pipe": "Cano de Fluidos Inteligente", "block.create.speedometer": "Velocímetro", - "block.create.spout": "UNLOCALIZED: Spout", + "block.create.spout": "Bica", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", "block.create.sticker": "Adesivo", @@ -520,14 +520,14 @@ "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "Ejetor ´ponderado", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", "block.create.white_seat": "Assento branco", "block.create.white_toolbox": "Caixa de ferramentas branca", "block.create.white_valve_handle": "Válvula branca", "block.create.windmill_bearing": "Rolamento de moinho", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", + "block.create.wooden_bracket": "Suporte de madeira", "block.create.yellow_nixie_tube": "Tubo nixie amarelo", "block.create.yellow_sail": "Vela amarela", "block.create.yellow_seat": "Assento amarelo", @@ -569,7 +569,7 @@ "item.create.copper_backtank": "Tanque Traseiro", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", - "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", "item.create.crafting_blueprint": "Esquema de Fabricação", "item.create.creative_blaze_cake": "Bolo de Blaze Criativo", "item.create.crushed_aluminum_ore": "Minério de Alumínio Esmagado", @@ -591,7 +591,7 @@ "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "Pepita de experiencia", "item.create.extendo_grip": "Extensão de Pegador", "item.create.filter": "Filtro", "item.create.furnace_minecart_contraption": "Engenhoca de Carrinho de Mina com Fornalha", @@ -609,11 +609,11 @@ "item.create.minecart_contraption": "Engenhoca de Carrino de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", - "item.create.potato_cannon": "Canhão de Batata", + "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", "item.create.precision_mechanism": "Mecanismo de Precisão", "item.create.propeller": "Hélice", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "Zinco bruto", "item.create.red_sand_paper": "Lixa Vermelha", "item.create.refined_radiance": "Luz Refinada", "item.create.rose_quartz": "Quartzo Rosa", @@ -624,7 +624,7 @@ "item.create.super_glue": "Super Cola", "item.create.sweet_roll": "Rolinho Doce", "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.vertical_gearbox": "Caixa de Transmissão Verticla", + "item.create.vertical_gearbox": "Caixa de Transmissão Vertical", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "Farinha de trigo", "item.create.whisk": "Batedeira", @@ -637,7 +637,7 @@ "advancement.create.root": "Bem vindo a Create", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy": "Alinterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.its_alive": "Esta vivo!", "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", @@ -647,8 +647,8 @@ "advancement.create.overstressed.desc": "Experience os limites da tensão.", "advancement.create.belt": "Correia de alga", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", + "advancement.create.tunnel": "Pegue cover!", + "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", "advancement.create.splitter_tunnel": "Divida e Conquiste", "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", "advancement.create.chute": "Caindo", @@ -659,48 +659,48 @@ "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", + "advancement.create.fan": "Dobrador de ar mecânico", + "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", + "advancement.create.fan_lava": "Aquecedor de espaço geotermal", + "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", + "advancement.create.fan_water": "Lavagem maluca", + "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", + "advancement.create.fan_smoke": "Fole mecânico", + "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", + "advancement.create.wrench": "Configurado convenientemente", + "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", + "advancement.create.goggles": "Visão do stress", + "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cineticas dos conponentes.", + "advancement.create.speedometer": "Mas quão rapido exatamente?", + "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.stressometer": "Mas quão estressado exatamente?", + "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.aesthetics": "Boom, estética!", + "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", + "advancement.create.reinforced": "Boom, Reinforçado!", + "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.chocolate_wheel": "Poder delicioso", + "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", + "advancement.create.lava_wheel": "Roda de magma", + "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", + "advancement.create.cuckoo": "É a hora?", + "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.maxed_windmill": "Uma brisa forte", + "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", "advancement.create.mechanical_drill": "Mineradores estacionarios", "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", + "advancement.create.press": "Prensa faz 'Bonk!'", + "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", "advancement.create.polished_rose_quartz": "Diamantes rosa", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", "advancement.create.electron_tube": "Beep Boop", "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, uteis para fabricar maquinas menos primitivas.", "advancement.create.mechanical_saw": "Cortadores estacionarios", @@ -718,71 +718,71 @@ "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.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 cobrepper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", + "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", + "advancement.create.spout": "Sploosh", + "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", - "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a hose pulley and watch it drain or fill a body of fluid.", - "advancement.create.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", - "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations.", - "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", + "advancement.create.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", + "advancement.create.chocolate": "Um mundo de imaginação", + "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", + "advancement.create.item_drain": "Cambalhota de drenação", + "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", + "advancement.create.chained_item_drain": "Deixe rolar!", + "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "advancement.create.glass_pipe": "Espião de fluxo", + "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", + "advancement.create.pipe_collision": "Nunca cruze o fluxo!", + "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", + "advancement.create.pipe_spill": "Tem um vazamento!", + "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "advancement.create.hose_pulley": "Vazamento industrial", + "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", + "advancement.create.infinite_water": "Drenando o oceano", + "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", + "advancement.create.infinite_lava": "Drenando o nucleo do planeta", + "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", + "advancement.create.infinite_chocolate": "Afogando em imaginação", + "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", + "advancement.create.crafter": "Montagem automatica", + "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.nixie_tube": "Placas estilosas", + "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.deployer": "Cutuque, coloque e ataque", + "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", + "advancement.create.flywheel": "Coração da fabrica", + "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", + "advancement.create.overstress_flywheel": "Altos niveis de stress", + "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", + "advancement.create.precision_mechanism": "Curiosidades complexas", + "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.mechanical_arm": "Mâos ocupadas!", + "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "advancement.create.arm_many_targets": "Organiza-tron", + "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", + "advancement.create.arm_blaze_burner": "Combuste-tron", + "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.crushing_wheel": "Par de gigantes", + "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", - "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", + "advancement.create.wand_of_symmetry": "Espelhos radiantes", + "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.potato_cannon": "Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", + "advancement.create.dual_extendo_grip": "A era ultimata do boing", + "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", + "advancement.create.eob": "Fim do beta", + "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", "_": "->------------------------] UI & Messages [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 4819af007..b6971ca14 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 333", + "_": "Missing Localizations: 3", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,14 +9,14 @@ "block.create.analog_lever": "模拟拉杆", "block.create.andesite_belt_funnel": "安山岩传送带漏斗", "block.create.andesite_casing": "安山机壳", - "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", - "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", + "block.create.andesite_encased_cogwheel": "安山齿轮箱", + "block.create.andesite_encased_large_cogwheel": "安山大齿轮箱", "block.create.andesite_encased_shaft": "安山传动杆箱", "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "竖纹安山岩", + "block.create.andesite_pillar": "安山岩柱", "block.create.andesite_tunnel": "安山岩隧道", - "block.create.asurine": "UNLOCALIZED: Asurine", - "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", + "block.create.asurine": "皓蓝石", + "block.create.asurine_pillar": "皓蓝石柱", "block.create.basin": "工作盆", "block.create.belt": "传送带", "block.create.birch_window": "白桦木窗户", @@ -35,8 +35,8 @@ "block.create.brass_belt_funnel": "黄铜传送带漏斗", "block.create.brass_block": "黄铜块", "block.create.brass_casing": "黄铜机壳", - "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", - "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", + "block.create.brass_encased_cogwheel": "黄铜齿轮箱", + "block.create.brass_encased_large_cogwheel": "黄铜大齿轮箱", "block.create.brass_encased_shaft": "黄铜传动杆箱", "block.create.brass_funnel": "黄铜漏斗", "block.create.brass_tunnel": "黄铜隧道", @@ -45,7 +45,7 @@ "block.create.brown_seat": "棕色坐垫", "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色阀门手轮", - "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", + "block.create.calcite_pillar": "方解石柱", "block.create.cart_assembler": "矿车装配站", "block.create.chocolate": "巧克力", "block.create.chute": "溜槽", @@ -54,137 +54,137 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", - "block.create.copper_backtank": "Copper Backtank", + "block.create.copper_backtank": "铜制背罐", "block.create.copper_casing": "铜机壳", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "铜砖块台阶", + "block.create.copper_shingle_stairs": "铜砖块楼梯", "block.create.copper_shingles": "铜砖块", - "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", - "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", - "block.create.copper_tiles": "铜砖块", + "block.create.copper_tile_slab": "铜瓦块台阶", + "block.create.copper_tile_stairs": "铜瓦块楼梯", + "block.create.copper_tiles": "铜瓦块", "block.create.copper_valve_handle": "铜阀门手轮", "block.create.creative_crate": "创造板条箱", "block.create.creative_fluid_tank": "创造流体储罐", "block.create.creative_motor": "创造马达", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimsite": "绯红岩", + "block.create.crimsite_pillar": "绯红岩柱", "block.create.crimson_window": "绯红木窗户", "block.create.crimson_window_pane": "绯红木窗户板", "block.create.crushing_wheel": "粉碎轮", "block.create.crushing_wheel_controller": "粉碎轮控制器", "block.create.cuckoo_clock": "布谷鸟闹钟", - "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", - "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", - "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", - "block.create.cut_andesite_brick_wall": "UNLOCALIZED: Cut Andesite Brick Wall", - "block.create.cut_andesite_bricks": "UNLOCALIZED: Cut Andesite Bricks", - "block.create.cut_andesite_slab": "UNLOCALIZED: Cut Andesite Slab", - "block.create.cut_andesite_stairs": "UNLOCALIZED: Cut Andesite Stairs", - "block.create.cut_andesite_wall": "UNLOCALIZED: Cut Andesite Wall", - "block.create.cut_asurine": "UNLOCALIZED: Cut Asurine", - "block.create.cut_asurine_brick_slab": "UNLOCALIZED: Cut Asurine Brick Slab", - "block.create.cut_asurine_brick_stairs": "UNLOCALIZED: Cut Asurine Brick Stairs", - "block.create.cut_asurine_brick_wall": "UNLOCALIZED: Cut Asurine Brick Wall", - "block.create.cut_asurine_bricks": "UNLOCALIZED: Cut Asurine Bricks", - "block.create.cut_asurine_slab": "UNLOCALIZED: Cut Asurine Slab", - "block.create.cut_asurine_stairs": "UNLOCALIZED: Cut Asurine Stairs", - "block.create.cut_asurine_wall": "UNLOCALIZED: Cut Asurine Wall", - "block.create.cut_calcite": "UNLOCALIZED: Cut Calcite", - "block.create.cut_calcite_brick_slab": "UNLOCALIZED: Cut Calcite Brick Slab", - "block.create.cut_calcite_brick_stairs": "UNLOCALIZED: Cut Calcite Brick Stairs", - "block.create.cut_calcite_brick_wall": "UNLOCALIZED: Cut Calcite Brick Wall", - "block.create.cut_calcite_bricks": "UNLOCALIZED: Cut Calcite Bricks", - "block.create.cut_calcite_slab": "UNLOCALIZED: Cut Calcite Slab", - "block.create.cut_calcite_stairs": "UNLOCALIZED: Cut Calcite Stairs", - "block.create.cut_calcite_wall": "UNLOCALIZED: Cut Calcite Wall", - "block.create.cut_crimsite": "UNLOCALIZED: Cut Crimsite", - "block.create.cut_crimsite_brick_slab": "UNLOCALIZED: Cut Crimsite Brick Slab", - "block.create.cut_crimsite_brick_stairs": "UNLOCALIZED: Cut Crimsite Brick Stairs", - "block.create.cut_crimsite_brick_wall": "UNLOCALIZED: Cut Crimsite Brick Wall", - "block.create.cut_crimsite_bricks": "UNLOCALIZED: Cut Crimsite Bricks", - "block.create.cut_crimsite_slab": "UNLOCALIZED: Cut Crimsite Slab", - "block.create.cut_crimsite_stairs": "UNLOCALIZED: Cut Crimsite Stairs", - "block.create.cut_crimsite_wall": "UNLOCALIZED: Cut Crimsite Wall", - "block.create.cut_deepslate": "UNLOCALIZED: Cut Deepslate", - "block.create.cut_deepslate_brick_slab": "UNLOCALIZED: Cut Deepslate Brick Slab", - "block.create.cut_deepslate_brick_stairs": "UNLOCALIZED: Cut Deepslate Brick Stairs", - "block.create.cut_deepslate_brick_wall": "UNLOCALIZED: Cut Deepslate Brick Wall", - "block.create.cut_deepslate_bricks": "UNLOCALIZED: Cut Deepslate Bricks", - "block.create.cut_deepslate_slab": "UNLOCALIZED: Cut Deepslate Slab", - "block.create.cut_deepslate_stairs": "UNLOCALIZED: Cut Deepslate Stairs", - "block.create.cut_deepslate_wall": "UNLOCALIZED: Cut Deepslate Wall", - "block.create.cut_diorite": "UNLOCALIZED: Cut Diorite", - "block.create.cut_diorite_brick_slab": "UNLOCALIZED: Cut Diorite Brick Slab", - "block.create.cut_diorite_brick_stairs": "UNLOCALIZED: Cut Diorite Brick Stairs", - "block.create.cut_diorite_brick_wall": "UNLOCALIZED: Cut Diorite Brick Wall", - "block.create.cut_diorite_bricks": "UNLOCALIZED: Cut Diorite Bricks", - "block.create.cut_diorite_slab": "UNLOCALIZED: Cut Diorite Slab", - "block.create.cut_diorite_stairs": "UNLOCALIZED: Cut Diorite Stairs", - "block.create.cut_diorite_wall": "UNLOCALIZED: Cut Diorite Wall", - "block.create.cut_dripstone": "UNLOCALIZED: Cut Dripstone", - "block.create.cut_dripstone_brick_slab": "UNLOCALIZED: Cut Dripstone Brick Slab", - "block.create.cut_dripstone_brick_stairs": "UNLOCALIZED: Cut Dripstone Brick Stairs", - "block.create.cut_dripstone_brick_wall": "UNLOCALIZED: Cut Dripstone Brick Wall", - "block.create.cut_dripstone_bricks": "UNLOCALIZED: Cut Dripstone Bricks", - "block.create.cut_dripstone_slab": "UNLOCALIZED: Cut Dripstone Slab", - "block.create.cut_dripstone_stairs": "UNLOCALIZED: Cut Dripstone Stairs", - "block.create.cut_dripstone_wall": "UNLOCALIZED: Cut Dripstone Wall", - "block.create.cut_granite": "UNLOCALIZED: Cut Granite", - "block.create.cut_granite_brick_slab": "UNLOCALIZED: Cut Granite Brick Slab", - "block.create.cut_granite_brick_stairs": "UNLOCALIZED: Cut Granite Brick Stairs", - "block.create.cut_granite_brick_wall": "UNLOCALIZED: Cut Granite Brick Wall", - "block.create.cut_granite_bricks": "UNLOCALIZED: Cut Granite Bricks", - "block.create.cut_granite_slab": "UNLOCALIZED: Cut Granite Slab", - "block.create.cut_granite_stairs": "UNLOCALIZED: Cut Granite Stairs", - "block.create.cut_granite_wall": "UNLOCALIZED: Cut Granite Wall", - "block.create.cut_limestone": "UNLOCALIZED: Cut Limestone", - "block.create.cut_limestone_brick_slab": "UNLOCALIZED: Cut Limestone Brick Slab", - "block.create.cut_limestone_brick_stairs": "UNLOCALIZED: Cut Limestone Brick Stairs", - "block.create.cut_limestone_brick_wall": "UNLOCALIZED: Cut Limestone Brick Wall", - "block.create.cut_limestone_bricks": "UNLOCALIZED: Cut Limestone Bricks", - "block.create.cut_limestone_slab": "UNLOCALIZED: Cut Limestone Slab", - "block.create.cut_limestone_stairs": "UNLOCALIZED: Cut Limestone Stairs", - "block.create.cut_limestone_wall": "UNLOCALIZED: Cut Limestone Wall", - "block.create.cut_ochrum": "UNLOCALIZED: Cut Ochrum", - "block.create.cut_ochrum_brick_slab": "UNLOCALIZED: Cut Ochrum Brick Slab", - "block.create.cut_ochrum_brick_stairs": "UNLOCALIZED: Cut Ochrum Brick Stairs", - "block.create.cut_ochrum_brick_wall": "UNLOCALIZED: Cut Ochrum Brick Wall", - "block.create.cut_ochrum_bricks": "UNLOCALIZED: Cut Ochrum Bricks", - "block.create.cut_ochrum_slab": "UNLOCALIZED: Cut Ochrum Slab", - "block.create.cut_ochrum_stairs": "UNLOCALIZED: Cut Ochrum Stairs", - "block.create.cut_ochrum_wall": "UNLOCALIZED: Cut Ochrum Wall", - "block.create.cut_scorchia": "UNLOCALIZED: Cut Scorchia", - "block.create.cut_scorchia_brick_slab": "UNLOCALIZED: Cut Scorchia Brick Slab", - "block.create.cut_scorchia_brick_stairs": "UNLOCALIZED: Cut Scorchia Brick Stairs", - "block.create.cut_scorchia_brick_wall": "UNLOCALIZED: Cut Scorchia Brick Wall", - "block.create.cut_scorchia_bricks": "UNLOCALIZED: Cut Scorchia Bricks", - "block.create.cut_scorchia_slab": "UNLOCALIZED: Cut Scorchia Slab", - "block.create.cut_scorchia_stairs": "UNLOCALIZED: Cut Scorchia Stairs", - "block.create.cut_scorchia_wall": "UNLOCALIZED: Cut Scorchia Wall", - "block.create.cut_scoria": "UNLOCALIZED: Cut Scoria", - "block.create.cut_scoria_brick_slab": "UNLOCALIZED: Cut Scoria Brick Slab", - "block.create.cut_scoria_brick_stairs": "UNLOCALIZED: Cut Scoria Brick Stairs", - "block.create.cut_scoria_brick_wall": "UNLOCALIZED: Cut Scoria Brick Wall", - "block.create.cut_scoria_bricks": "UNLOCALIZED: Cut Scoria Bricks", - "block.create.cut_scoria_slab": "UNLOCALIZED: Cut Scoria Slab", - "block.create.cut_scoria_stairs": "UNLOCALIZED: Cut Scoria Stairs", - "block.create.cut_scoria_wall": "UNLOCALIZED: Cut Scoria Wall", - "block.create.cut_tuff": "UNLOCALIZED: Cut Tuff", - "block.create.cut_tuff_brick_slab": "UNLOCALIZED: Cut Tuff Brick Slab", - "block.create.cut_tuff_brick_stairs": "UNLOCALIZED: Cut Tuff Brick Stairs", - "block.create.cut_tuff_brick_wall": "UNLOCALIZED: Cut Tuff Brick Wall", - "block.create.cut_tuff_bricks": "UNLOCALIZED: Cut Tuff Bricks", - "block.create.cut_tuff_slab": "UNLOCALIZED: Cut Tuff Slab", - "block.create.cut_tuff_stairs": "UNLOCALIZED: Cut Tuff Stairs", - "block.create.cut_tuff_wall": "UNLOCALIZED: Cut Tuff Wall", - "block.create.cut_veridium": "UNLOCALIZED: Cut Veridium", - "block.create.cut_veridium_brick_slab": "UNLOCALIZED: Cut Veridium Brick Slab", - "block.create.cut_veridium_brick_stairs": "UNLOCALIZED: Cut Veridium Brick Stairs", - "block.create.cut_veridium_brick_wall": "UNLOCALIZED: Cut Veridium Brick Wall", - "block.create.cut_veridium_bricks": "UNLOCALIZED: Cut Veridium Bricks", - "block.create.cut_veridium_slab": "UNLOCALIZED: Cut Veridium Slab", - "block.create.cut_veridium_stairs": "UNLOCALIZED: Cut Veridium Stairs", - "block.create.cut_veridium_wall": "UNLOCALIZED: Cut Veridium Wall", + "block.create.cut_andesite": "切制安山岩", + "block.create.cut_andesite_brick_slab": "切制安山岩砖块台阶", + "block.create.cut_andesite_brick_stairs": "切制安山岩砖块楼梯", + "block.create.cut_andesite_brick_wall": "切制安山岩砖块墙", + "block.create.cut_andesite_bricks": "切制安山岩砖块", + "block.create.cut_andesite_slab": "切制安山岩台阶", + "block.create.cut_andesite_stairs": "切制安山岩楼梯", + "block.create.cut_andesite_wall": "切制安山岩墙", + "block.create.cut_asurine": "切制皓蓝石", + "block.create.cut_asurine_brick_slab": "切制皓蓝石砖块台阶", + "block.create.cut_asurine_brick_stairs": "切制皓蓝石砖块楼梯", + "block.create.cut_asurine_brick_wall": "切制皓蓝石砖块墙", + "block.create.cut_asurine_bricks": "切制皓蓝石砖块", + "block.create.cut_asurine_slab": "切制皓蓝石台阶", + "block.create.cut_asurine_stairs": "切制皓蓝石楼梯", + "block.create.cut_asurine_wall": "切制皓蓝石墙", + "block.create.cut_calcite": "切制方解石", + "block.create.cut_calcite_brick_slab": "切制方解石砖块台阶", + "block.create.cut_calcite_brick_stairs": "切制方解石砖块楼梯", + "block.create.cut_calcite_brick_wall": "切制方解石砖块墙", + "block.create.cut_calcite_bricks": "切制方解石砖块", + "block.create.cut_calcite_slab": "切制方解石台阶", + "block.create.cut_calcite_stairs": "切制方解石楼梯", + "block.create.cut_calcite_wall": "切制方解石墙", + "block.create.cut_crimsite": "切制绯红岩", + "block.create.cut_crimsite_brick_slab": "切制绯红岩砖块台阶", + "block.create.cut_crimsite_brick_stairs": "切制绯红岩砖块楼梯", + "block.create.cut_crimsite_brick_wall": "切制绯红岩砖块墙", + "block.create.cut_crimsite_bricks": "切制绯红岩砖块", + "block.create.cut_crimsite_slab": "切制绯红岩台阶", + "block.create.cut_crimsite_stairs": "切制绯红岩楼梯", + "block.create.cut_crimsite_wall": "切制绯红岩墙", + "block.create.cut_deepslate": "切制深板岩", + "block.create.cut_deepslate_brick_slab": "切制深板岩砖块台阶", + "block.create.cut_deepslate_brick_stairs": "切制深板岩砖块楼梯", + "block.create.cut_deepslate_brick_wall": "切制深板岩砖块墙", + "block.create.cut_deepslate_bricks": "切制深板岩砖块", + "block.create.cut_deepslate_slab": "切制深板岩台阶", + "block.create.cut_deepslate_stairs": "切制深板岩楼梯", + "block.create.cut_deepslate_wall": "切制深板岩墙", + "block.create.cut_diorite": "切制闪长岩", + "block.create.cut_diorite_brick_slab": "切制闪长岩砖块台阶", + "block.create.cut_diorite_brick_stairs": "切制闪长岩砖块楼梯", + "block.create.cut_diorite_brick_wall": "切制闪长岩砖块墙", + "block.create.cut_diorite_bricks": "切制闪长岩砖块", + "block.create.cut_diorite_slab": "切制闪长岩台阶", + "block.create.cut_diorite_stairs": "切制闪长岩楼梯", + "block.create.cut_diorite_wall": "切制闪长岩墙", + "block.create.cut_dripstone": "切制滴水石", + "block.create.cut_dripstone_brick_slab": "切制滴水石砖块台阶", + "block.create.cut_dripstone_brick_stairs": "切制滴水石砖块楼梯", + "block.create.cut_dripstone_brick_wall": "切制滴水石砖块墙", + "block.create.cut_dripstone_bricks": "切制滴水石砖块", + "block.create.cut_dripstone_slab": "切制滴水石台阶", + "block.create.cut_dripstone_stairs": "切制滴水石楼梯", + "block.create.cut_dripstone_wall": "切制滴水石墙", + "block.create.cut_granite": "切制花岗岩", + "block.create.cut_granite_brick_slab": "切制花岗岩砖块台阶", + "block.create.cut_granite_brick_stairs": "切制花岗岩砖块楼梯", + "block.create.cut_granite_brick_wall": "切制花岗岩砖块墙", + "block.create.cut_granite_bricks": "切制花岗岩砖块", + "block.create.cut_granite_slab": "切制花岗岩台阶", + "block.create.cut_granite_stairs": "切制花岗岩楼梯", + "block.create.cut_granite_wall": "切制花岗岩墙", + "block.create.cut_limestone": "切制石灰岩", + "block.create.cut_limestone_brick_slab": "切制石灰岩砖块台阶", + "block.create.cut_limestone_brick_stairs": "切制石灰岩砖块楼梯", + "block.create.cut_limestone_brick_wall": "切制石灰岩砖块墙", + "block.create.cut_limestone_bricks": "切制石灰岩砖块", + "block.create.cut_limestone_slab": "切制石灰岩台阶", + "block.create.cut_limestone_stairs": "切制石灰岩楼梯", + "block.create.cut_limestone_wall": "切制石灰岩墙", + "block.create.cut_ochrum": "切制赭金砂", + "block.create.cut_ochrum_brick_slab": "切制赭金砂砖块台阶", + "block.create.cut_ochrum_brick_stairs": "切制赭金砂砖块楼梯", + "block.create.cut_ochrum_brick_wall": "切制赭金砂砖块墙", + "block.create.cut_ochrum_bricks": "切制赭金砂砖块", + "block.create.cut_ochrum_slab": "切制赭金砂台阶", + "block.create.cut_ochrum_stairs": "切制赭金砂楼梯", + "block.create.cut_ochrum_wall": "切制赭金砂墙", + "block.create.cut_scorchia": "切制焦黑熔渣", + "block.create.cut_scorchia_brick_slab": "切制焦黑熔渣砖块台阶", + "block.create.cut_scorchia_brick_stairs": "切制焦黑熔渣砖块楼梯", + "block.create.cut_scorchia_brick_wall": "切制焦黑熔渣砖块墙", + "block.create.cut_scorchia_bricks": "切制焦黑熔渣砖块", + "block.create.cut_scorchia_slab": "切制焦黑熔渣台阶", + "block.create.cut_scorchia_stairs": "切制焦黑熔渣楼梯", + "block.create.cut_scorchia_wall": "切制焦黑熔渣墙", + "block.create.cut_scoria": "切制熔渣", + "block.create.cut_scoria_brick_slab": "切制熔渣砖块台阶", + "block.create.cut_scoria_brick_stairs": "切制熔渣砖块楼梯", + "block.create.cut_scoria_brick_wall": "切制熔渣砖块墙", + "block.create.cut_scoria_bricks": "切制熔渣砖块", + "block.create.cut_scoria_slab": "切制熔渣台阶", + "block.create.cut_scoria_stairs": "切制熔渣楼梯", + "block.create.cut_scoria_wall": "切制熔渣墙", + "block.create.cut_tuff": "切制凝灰岩", + "block.create.cut_tuff_brick_slab": "切制凝灰岩砖块台阶", + "block.create.cut_tuff_brick_stairs": "切制凝灰岩砖块楼梯", + "block.create.cut_tuff_brick_wall": "切制凝灰岩砖块墙", + "block.create.cut_tuff_bricks": "切制凝灰岩砖块", + "block.create.cut_tuff_slab": "切制凝灰岩台阶", + "block.create.cut_tuff_stairs": "切制凝灰岩楼梯", + "block.create.cut_tuff_wall": "切制凝灰岩墙", + "block.create.cut_veridium": "切制辉绿矿", + "block.create.cut_veridium_brick_slab": "切制辉绿矿砖块台阶", + "block.create.cut_veridium_brick_stairs": "切制辉绿矿砖块楼梯", + "block.create.cut_veridium_brick_wall": "切制辉绿矿砖块墙", + "block.create.cut_veridium_bricks": "切制辉绿矿砖块", + "block.create.cut_veridium_slab": "切制辉绿矿台阶", + "block.create.cut_veridium_stairs": "切制辉绿矿楼梯", + "block.create.cut_veridium_wall": "切制辉绿矿墙", "block.create.cyan_nixie_tube": "青色辉光管", "block.create.cyan_sail": "青色风帆", "block.create.cyan_seat": "青色坐垫", @@ -192,21 +192,21 @@ "block.create.cyan_valve_handle": "青色阀门手轮", "block.create.dark_oak_window": "深色橡木窗户", "block.create.dark_oak_window_pane": "深色橡木窗户板", - "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", + "block.create.deepslate_pillar": "深板岩柱", + "block.create.deepslate_zinc_ore": "深层锌矿石", "block.create.deployer": "机械手", "block.create.depot": "置物台", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.diorite_pillar": "闪长岩柱", + "block.create.dripstone_pillar": "滴水石柱", "block.create.encased_chain_drive": "链式传动箱", "block.create.encased_fan": "鼓风机", "block.create.encased_fluid_pipe": "流体管道箱", - "block.create.exposed_copper_shingle_slab": "UNLOCALIZED: Exposed Copper Shingle Slab", - "block.create.exposed_copper_shingle_stairs": "UNLOCALIZED: Exposed Copper Shingle Stairs", - "block.create.exposed_copper_shingles": "UNLOCALIZED: Exposed Copper Shingles", - "block.create.exposed_copper_tile_slab": "UNLOCALIZED: Exposed Copper Tile Slab", - "block.create.exposed_copper_tile_stairs": "UNLOCALIZED: Exposed Copper Tile Stairs", - "block.create.exposed_copper_tiles": "UNLOCALIZED: Exposed Copper Tiles", + "block.create.exposed_copper_shingle_slab": "斑驳的铜砖块台阶", + "block.create.exposed_copper_shingle_stairs": "斑驳的铜砖块楼梯", + "block.create.exposed_copper_shingles": "斑驳的铜砖块", + "block.create.exposed_copper_tile_slab": "斑驳的铜瓦块台阶", + "block.create.exposed_copper_tile_stairs": "斑驳的铜瓦块楼梯", + "block.create.exposed_copper_tiles": "斑驳的铜瓦块", "block.create.fluid_pipe": "流体管道", "block.create.fluid_tank": "流体储罐", "block.create.fluid_valve": "流体阀门", @@ -219,7 +219,7 @@ "block.create.gearbox": "十字齿轮箱", "block.create.gearshift": "反转齿轮箱", "block.create.glass_fluid_pipe": "玻璃流体管道", - "block.create.granite_pillar": "竖纹花岗岩", + "block.create.granite_pillar": "花岗岩柱", "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", @@ -237,24 +237,24 @@ "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", "block.create.hose_pulley": "软管滑轮", "block.create.item_drain": "分液池", - "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.item_vault": "物品保险库", "block.create.jungle_window": "丛林木窗户", "block.create.jungle_window_pane": "丛林木窗户板", "block.create.large_cogwheel": "大齿轮", "block.create.layered_andesite": "层叠安山岩", - "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", - "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", - "block.create.layered_crimsite": "UNLOCALIZED: Layered Crimsite", - "block.create.layered_deepslate": "UNLOCALIZED: Layered Deepslate", + "block.create.layered_asurine": "层叠皓蓝石", + "block.create.layered_calcite": "层叠方解石", + "block.create.layered_crimsite": "层叠绯红岩", + "block.create.layered_deepslate": "层叠深板岩", "block.create.layered_diorite": "层叠闪长岩", - "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_dripstone": "层叠滴水石", "block.create.layered_granite": "层叠花岗岩", "block.create.layered_limestone": "层叠石灰岩", - "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", - "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", + "block.create.layered_ochrum": "层叠赭金砂", + "block.create.layered_scorchia": "层叠焦黑熔渣", "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "层叠凝灰岩", + "block.create.layered_veridium": "层叠辉绿矿", "block.create.lectern_controller": "遥控器讲台", "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", @@ -272,7 +272,7 @@ "block.create.lime_toolbox": "黄绿色工具箱", "block.create.lime_valve_handle": "黄绿色阀门手轮", "block.create.limestone": "石灰岩", - "block.create.limestone_pillar": "竖纹石灰岩", + "block.create.limestone_pillar": "石灰岩柱", "block.create.linear_chassis": "机壳底盘", "block.create.lit_blaze_burner": "烈焰人燃烧室(已点燃)", "block.create.magenta_nixie_tube": "品红色辉光管", @@ -300,20 +300,20 @@ "block.create.nozzle": "分散网", "block.create.oak_window": "橡木窗户", "block.create.oak_window_pane": "橡木窗户板", - "block.create.ochrum": "UNLOCALIZED: Ochrum", - "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", + "block.create.ochrum": "赭金砂", + "block.create.ochrum_pillar": "赭金砂柱", "block.create.orange_sail": "橙色风帆", "block.create.orange_seat": "橙色坐垫", "block.create.orange_toolbox": "橙色工具箱", "block.create.orange_valve_handle": "橙色阀门手轮", "block.create.ornate_iron_window": "华丽铁窗户", "block.create.ornate_iron_window_pane": "华丽铁窗户板", - "block.create.oxidized_copper_shingle_slab": "UNLOCALIZED: Oxidized Copper Shingle Slab", - "block.create.oxidized_copper_shingle_stairs": "UNLOCALIZED: Oxidized Copper Shingle Stairs", - "block.create.oxidized_copper_shingles": "UNLOCALIZED: Oxidized Copper Shingles", - "block.create.oxidized_copper_tile_slab": "UNLOCALIZED: Oxidized Copper Tile Slab", - "block.create.oxidized_copper_tile_stairs": "UNLOCALIZED: Oxidized Copper Tile Stairs", - "block.create.oxidized_copper_tiles": "UNLOCALIZED: Oxidized Copper Tiles", + "block.create.oxidized_copper_shingle_slab": "氧化的铜砖块台阶", + "block.create.oxidized_copper_shingle_stairs": "氧化的铜砖块楼梯", + "block.create.oxidized_copper_shingles": "氧化的铜砖块", + "block.create.oxidized_copper_tile_slab": "氧化的铜瓦块台阶", + "block.create.oxidized_copper_tile_stairs": "氧化的铜瓦块楼梯", + "block.create.oxidized_copper_tiles": "氧化的铜瓦块", "block.create.peculiar_bell": "奇异钟", "block.create.pink_nixie_tube": "粉红色辉光管", "block.create.pink_sail": "粉红色风帆", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "粉红色工具箱", "block.create.pink_valve_handle": "粉红色阀门手轮", "block.create.piston_extension_pole": "活塞杆", - "block.create.polished_cut_andesite": "UNLOCALIZED: Polished Cut Andesite", - "block.create.polished_cut_andesite_slab": "UNLOCALIZED: Polished Cut Andesite Slab", - "block.create.polished_cut_andesite_stairs": "UNLOCALIZED: Polished Cut Andesite Stairs", - "block.create.polished_cut_andesite_wall": "UNLOCALIZED: Polished Cut Andesite Wall", - "block.create.polished_cut_asurine": "UNLOCALIZED: Polished Cut Asurine", - "block.create.polished_cut_asurine_slab": "UNLOCALIZED: Polished Cut Asurine Slab", - "block.create.polished_cut_asurine_stairs": "UNLOCALIZED: Polished Cut Asurine Stairs", - "block.create.polished_cut_asurine_wall": "UNLOCALIZED: Polished Cut Asurine Wall", - "block.create.polished_cut_calcite": "UNLOCALIZED: Polished Cut Calcite", - "block.create.polished_cut_calcite_slab": "UNLOCALIZED: Polished Cut Calcite Slab", - "block.create.polished_cut_calcite_stairs": "UNLOCALIZED: Polished Cut Calcite Stairs", - "block.create.polished_cut_calcite_wall": "UNLOCALIZED: Polished Cut Calcite Wall", - "block.create.polished_cut_crimsite": "UNLOCALIZED: Polished Cut Crimsite", - "block.create.polished_cut_crimsite_slab": "UNLOCALIZED: Polished Cut Crimsite Slab", - "block.create.polished_cut_crimsite_stairs": "UNLOCALIZED: Polished Cut Crimsite Stairs", - "block.create.polished_cut_crimsite_wall": "UNLOCALIZED: Polished Cut Crimsite Wall", - "block.create.polished_cut_deepslate": "UNLOCALIZED: Polished Cut Deepslate", - "block.create.polished_cut_deepslate_slab": "UNLOCALIZED: Polished Cut Deepslate Slab", - "block.create.polished_cut_deepslate_stairs": "UNLOCALIZED: Polished Cut Deepslate Stairs", - "block.create.polished_cut_deepslate_wall": "UNLOCALIZED: Polished Cut Deepslate Wall", - "block.create.polished_cut_diorite": "UNLOCALIZED: Polished Cut Diorite", - "block.create.polished_cut_diorite_slab": "UNLOCALIZED: Polished Cut Diorite Slab", - "block.create.polished_cut_diorite_stairs": "UNLOCALIZED: Polished Cut Diorite Stairs", - "block.create.polished_cut_diorite_wall": "UNLOCALIZED: Polished Cut Diorite Wall", - "block.create.polished_cut_dripstone": "UNLOCALIZED: Polished Cut Dripstone", - "block.create.polished_cut_dripstone_slab": "UNLOCALIZED: Polished Cut Dripstone Slab", - "block.create.polished_cut_dripstone_stairs": "UNLOCALIZED: Polished Cut Dripstone Stairs", - "block.create.polished_cut_dripstone_wall": "UNLOCALIZED: Polished Cut Dripstone Wall", - "block.create.polished_cut_granite": "UNLOCALIZED: Polished Cut Granite", - "block.create.polished_cut_granite_slab": "UNLOCALIZED: Polished Cut Granite Slab", - "block.create.polished_cut_granite_stairs": "UNLOCALIZED: Polished Cut Granite Stairs", - "block.create.polished_cut_granite_wall": "UNLOCALIZED: Polished Cut Granite Wall", - "block.create.polished_cut_limestone": "UNLOCALIZED: Polished Cut Limestone", - "block.create.polished_cut_limestone_slab": "UNLOCALIZED: Polished Cut Limestone Slab", - "block.create.polished_cut_limestone_stairs": "UNLOCALIZED: Polished Cut Limestone Stairs", - "block.create.polished_cut_limestone_wall": "UNLOCALIZED: Polished Cut Limestone Wall", - "block.create.polished_cut_ochrum": "UNLOCALIZED: Polished Cut Ochrum", - "block.create.polished_cut_ochrum_slab": "UNLOCALIZED: Polished Cut Ochrum Slab", - "block.create.polished_cut_ochrum_stairs": "UNLOCALIZED: Polished Cut Ochrum Stairs", - "block.create.polished_cut_ochrum_wall": "UNLOCALIZED: Polished Cut Ochrum Wall", - "block.create.polished_cut_scorchia": "UNLOCALIZED: Polished Cut Scorchia", - "block.create.polished_cut_scorchia_slab": "UNLOCALIZED: Polished Cut Scorchia Slab", - "block.create.polished_cut_scorchia_stairs": "UNLOCALIZED: Polished Cut Scorchia Stairs", - "block.create.polished_cut_scorchia_wall": "UNLOCALIZED: Polished Cut Scorchia Wall", - "block.create.polished_cut_scoria": "UNLOCALIZED: Polished Cut Scoria", - "block.create.polished_cut_scoria_slab": "UNLOCALIZED: Polished Cut Scoria Slab", - "block.create.polished_cut_scoria_stairs": "UNLOCALIZED: Polished Cut Scoria Stairs", - "block.create.polished_cut_scoria_wall": "UNLOCALIZED: Polished Cut Scoria Wall", - "block.create.polished_cut_tuff": "UNLOCALIZED: Polished Cut Tuff", - "block.create.polished_cut_tuff_slab": "UNLOCALIZED: Polished Cut Tuff Slab", - "block.create.polished_cut_tuff_stairs": "UNLOCALIZED: Polished Cut Tuff Stairs", - "block.create.polished_cut_tuff_wall": "UNLOCALIZED: Polished Cut Tuff Wall", - "block.create.polished_cut_veridium": "UNLOCALIZED: Polished Cut Veridium", - "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", - "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", - "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", + "block.create.polished_cut_andesite": "磨制切制安山岩", + "block.create.polished_cut_andesite_slab": "磨制切制安山岩台阶", + "block.create.polished_cut_andesite_stairs": "磨制切制安山岩楼梯", + "block.create.polished_cut_andesite_wall": "磨制切制安山岩墙", + "block.create.polished_cut_asurine": "磨制切制皓蓝石", + "block.create.polished_cut_asurine_slab": "磨制切制皓蓝石台阶", + "block.create.polished_cut_asurine_stairs": "磨制切制皓蓝石楼梯", + "block.create.polished_cut_asurine_wall": "磨制切制皓蓝石墙", + "block.create.polished_cut_calcite": "磨制切制方解石", + "block.create.polished_cut_calcite_slab": "磨制切制方解石台阶", + "block.create.polished_cut_calcite_stairs": "磨制切制方解石楼梯", + "block.create.polished_cut_calcite_wall": "磨制切制方解石墙", + "block.create.polished_cut_crimsite": "磨制切制绯红岩", + "block.create.polished_cut_crimsite_slab": "磨制切制绯红岩台阶", + "block.create.polished_cut_crimsite_stairs": "磨制切制绯红岩楼梯", + "block.create.polished_cut_crimsite_wall": "磨制切制绯红岩墙", + "block.create.polished_cut_deepslate": "磨制切制深板岩", + "block.create.polished_cut_deepslate_slab": "磨制切制深板岩台阶", + "block.create.polished_cut_deepslate_stairs": "磨制切制深板岩楼梯", + "block.create.polished_cut_deepslate_wall": "磨制切制深板岩墙", + "block.create.polished_cut_diorite": "磨制切制闪长岩", + "block.create.polished_cut_diorite_slab": "磨制切制闪长岩台阶", + "block.create.polished_cut_diorite_stairs": "磨制切制闪长岩楼梯", + "block.create.polished_cut_diorite_wall": "磨制切制闪长岩墙", + "block.create.polished_cut_dripstone": "磨制切制滴水石", + "block.create.polished_cut_dripstone_slab": "磨制切制滴水石台阶", + "block.create.polished_cut_dripstone_stairs": "磨制切制滴水石楼梯", + "block.create.polished_cut_dripstone_wall": "磨制切制滴水石墙", + "block.create.polished_cut_granite": "磨制切制花岗岩", + "block.create.polished_cut_granite_slab": "磨制切制花岗岩台阶", + "block.create.polished_cut_granite_stairs": "磨制切制花岗岩楼梯", + "block.create.polished_cut_granite_wall": "磨制切制花岗岩墙", + "block.create.polished_cut_limestone": "磨制切制石灰岩", + "block.create.polished_cut_limestone_slab": "磨制切制石灰岩台阶", + "block.create.polished_cut_limestone_stairs": "磨制切制石灰岩楼梯", + "block.create.polished_cut_limestone_wall": "磨制切制石灰岩墙", + "block.create.polished_cut_ochrum": "磨制切制赭金砂", + "block.create.polished_cut_ochrum_slab": "磨制切制赭金砂台阶", + "block.create.polished_cut_ochrum_stairs": "磨制切制赭金砂楼梯", + "block.create.polished_cut_ochrum_wall": "磨制切制赭金砂墙", + "block.create.polished_cut_scorchia": "磨制切制焦黑熔渣", + "block.create.polished_cut_scorchia_slab": "磨制切制焦黑熔渣台阶", + "block.create.polished_cut_scorchia_stairs": "磨制切制焦黑熔渣楼梯", + "block.create.polished_cut_scorchia_wall": "磨制切制焦黑熔渣墙", + "block.create.polished_cut_scoria": "磨制切制熔渣", + "block.create.polished_cut_scoria_slab": "磨制切制熔渣台阶", + "block.create.polished_cut_scoria_stairs": "磨制切制熔渣楼梯", + "block.create.polished_cut_scoria_wall": "磨制切制熔渣墙", + "block.create.polished_cut_tuff": "磨制切制凝灰岩", + "block.create.polished_cut_tuff_slab": "磨制切制凝灰岩台阶", + "block.create.polished_cut_tuff_stairs": "磨制切制凝灰岩楼梯", + "block.create.polished_cut_tuff_wall": "磨制切制凝灰岩墙", + "block.create.polished_cut_veridium": "磨制切制辉绿矿", + "block.create.polished_cut_veridium_slab": "磨制切制辉绿矿台阶", + "block.create.polished_cut_veridium_stairs": "磨制切制辉绿矿楼梯", + "block.create.polished_cut_veridium_wall": "磨制切制辉绿矿墙", "block.create.portable_fluid_interface": "移动式流体接口", "block.create.portable_storage_interface": "移动式存储接口", "block.create.powered_latch": "锁存器", "block.create.powered_toggle_latch": "转换锁存器", "block.create.pulley_magnet": "滑轮磁铁", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "脉冲延长器", "block.create.pulse_repeater": "脉冲中继器", "block.create.purple_nixie_tube": "紫色辉光管", "block.create.purple_sail": "紫色风帆", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "粗锌块", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", @@ -405,70 +405,70 @@ "block.create.sail_frame": "风帆框架", "block.create.schematic_table": "蓝图桌", "block.create.schematicannon": "蓝图加农炮", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "block.create.scorchia": "焦黑熔渣", + "block.create.scorchia_pillar": "焦黑熔渣柱", "block.create.scoria": "熔渣", - "block.create.scoria_pillar": "竖纹熔渣", + "block.create.scoria_pillar": "熔渣柱", "block.create.secondary_linear_chassis": "机壳底盘 2 号", "block.create.sequenced_gearshift": "可编程齿轮箱", "block.create.shadow_steel_casing": "暗影机壳", "block.create.shaft": "传动杆", - "block.create.small_andesite_brick_slab": "UNLOCALIZED: Small Andesite Brick Slab", - "block.create.small_andesite_brick_stairs": "UNLOCALIZED: Small Andesite Brick Stairs", - "block.create.small_andesite_brick_wall": "UNLOCALIZED: Small Andesite Brick Wall", - "block.create.small_andesite_bricks": "UNLOCALIZED: Small Andesite Bricks", - "block.create.small_asurine_brick_slab": "UNLOCALIZED: Small Asurine Brick Slab", - "block.create.small_asurine_brick_stairs": "UNLOCALIZED: Small Asurine Brick Stairs", - "block.create.small_asurine_brick_wall": "UNLOCALIZED: Small Asurine Brick Wall", - "block.create.small_asurine_bricks": "UNLOCALIZED: Small Asurine Bricks", - "block.create.small_calcite_brick_slab": "UNLOCALIZED: Small Calcite Brick Slab", - "block.create.small_calcite_brick_stairs": "UNLOCALIZED: Small Calcite Brick Stairs", - "block.create.small_calcite_brick_wall": "UNLOCALIZED: Small Calcite Brick Wall", - "block.create.small_calcite_bricks": "UNLOCALIZED: Small Calcite Bricks", - "block.create.small_crimsite_brick_slab": "UNLOCALIZED: Small Crimsite Brick Slab", - "block.create.small_crimsite_brick_stairs": "UNLOCALIZED: Small Crimsite Brick Stairs", - "block.create.small_crimsite_brick_wall": "UNLOCALIZED: Small Crimsite Brick Wall", - "block.create.small_crimsite_bricks": "UNLOCALIZED: Small Crimsite Bricks", - "block.create.small_deepslate_brick_slab": "UNLOCALIZED: Small Deepslate Brick Slab", - "block.create.small_deepslate_brick_stairs": "UNLOCALIZED: Small Deepslate Brick Stairs", - "block.create.small_deepslate_brick_wall": "UNLOCALIZED: Small Deepslate Brick Wall", - "block.create.small_deepslate_bricks": "UNLOCALIZED: Small Deepslate Bricks", - "block.create.small_diorite_brick_slab": "UNLOCALIZED: Small Diorite Brick Slab", - "block.create.small_diorite_brick_stairs": "UNLOCALIZED: Small Diorite Brick Stairs", - "block.create.small_diorite_brick_wall": "UNLOCALIZED: Small Diorite Brick Wall", - "block.create.small_diorite_bricks": "UNLOCALIZED: Small Diorite Bricks", - "block.create.small_dripstone_brick_slab": "UNLOCALIZED: Small Dripstone Brick Slab", - "block.create.small_dripstone_brick_stairs": "UNLOCALIZED: Small Dripstone Brick Stairs", - "block.create.small_dripstone_brick_wall": "UNLOCALIZED: Small Dripstone Brick Wall", - "block.create.small_dripstone_bricks": "UNLOCALIZED: Small Dripstone Bricks", - "block.create.small_granite_brick_slab": "UNLOCALIZED: Small Granite Brick Slab", - "block.create.small_granite_brick_stairs": "UNLOCALIZED: Small Granite Brick Stairs", - "block.create.small_granite_brick_wall": "UNLOCALIZED: Small Granite Brick Wall", - "block.create.small_granite_bricks": "UNLOCALIZED: Small Granite Bricks", - "block.create.small_limestone_brick_slab": "UNLOCALIZED: Small Limestone Brick Slab", - "block.create.small_limestone_brick_stairs": "UNLOCALIZED: Small Limestone Brick Stairs", - "block.create.small_limestone_brick_wall": "UNLOCALIZED: Small Limestone Brick Wall", - "block.create.small_limestone_bricks": "UNLOCALIZED: Small Limestone Bricks", - "block.create.small_ochrum_brick_slab": "UNLOCALIZED: Small Ochrum Brick Slab", - "block.create.small_ochrum_brick_stairs": "UNLOCALIZED: Small Ochrum Brick Stairs", - "block.create.small_ochrum_brick_wall": "UNLOCALIZED: Small Ochrum Brick Wall", - "block.create.small_ochrum_bricks": "UNLOCALIZED: Small Ochrum Bricks", - "block.create.small_scorchia_brick_slab": "UNLOCALIZED: Small Scorchia Brick Slab", - "block.create.small_scorchia_brick_stairs": "UNLOCALIZED: Small Scorchia Brick Stairs", - "block.create.small_scorchia_brick_wall": "UNLOCALIZED: Small Scorchia Brick Wall", - "block.create.small_scorchia_bricks": "UNLOCALIZED: Small Scorchia Bricks", - "block.create.small_scoria_brick_slab": "UNLOCALIZED: Small Scoria Brick Slab", - "block.create.small_scoria_brick_stairs": "UNLOCALIZED: Small Scoria Brick Stairs", - "block.create.small_scoria_brick_wall": "UNLOCALIZED: Small Scoria Brick Wall", - "block.create.small_scoria_bricks": "UNLOCALIZED: Small Scoria Bricks", - "block.create.small_tuff_brick_slab": "UNLOCALIZED: Small Tuff Brick Slab", - "block.create.small_tuff_brick_stairs": "UNLOCALIZED: Small Tuff Brick Stairs", - "block.create.small_tuff_brick_wall": "UNLOCALIZED: Small Tuff Brick Wall", - "block.create.small_tuff_bricks": "UNLOCALIZED: Small Tuff Bricks", - "block.create.small_veridium_brick_slab": "UNLOCALIZED: Small Veridium Brick Slab", - "block.create.small_veridium_brick_stairs": "UNLOCALIZED: Small Veridium Brick Stairs", - "block.create.small_veridium_brick_wall": "UNLOCALIZED: Small Veridium Brick Wall", - "block.create.small_veridium_bricks": "UNLOCALIZED: Small Veridium Bricks", + "block.create.small_andesite_brick_slab": "安山岩小砖块台阶", + "block.create.small_andesite_brick_stairs": "安山岩小砖块楼梯", + "block.create.small_andesite_brick_wall": "安山岩小砖块墙", + "block.create.small_andesite_bricks": "安山岩小砖块", + "block.create.small_asurine_brick_slab": "皓蓝石小砖块台阶", + "block.create.small_asurine_brick_stairs": "皓蓝石小砖块楼梯", + "block.create.small_asurine_brick_wall": "皓蓝石小砖块墙", + "block.create.small_asurine_bricks": "皓蓝石小砖块", + "block.create.small_calcite_brick_slab": "方解石小砖块台阶", + "block.create.small_calcite_brick_stairs": "方解石小砖块楼梯", + "block.create.small_calcite_brick_wall": "方解石小砖块墙", + "block.create.small_calcite_bricks": "方解石小砖块", + "block.create.small_crimsite_brick_slab": "绯红岩小砖块台阶", + "block.create.small_crimsite_brick_stairs": "绯红岩小砖块楼梯", + "block.create.small_crimsite_brick_wall": "绯红岩小砖块墙", + "block.create.small_crimsite_bricks": "绯红岩小砖块", + "block.create.small_deepslate_brick_slab": "深板岩小砖块台阶", + "block.create.small_deepslate_brick_stairs": "深板岩小砖块楼梯", + "block.create.small_deepslate_brick_wall": "深板岩小砖块墙", + "block.create.small_deepslate_bricks": "深板岩小砖块", + "block.create.small_diorite_brick_slab": "闪长岩小砖块台阶", + "block.create.small_diorite_brick_stairs": "闪长岩小砖块楼梯", + "block.create.small_diorite_brick_wall": "闪长岩小砖块墙", + "block.create.small_diorite_bricks": "闪长岩小砖块", + "block.create.small_dripstone_brick_slab": "滴水石小砖块台阶", + "block.create.small_dripstone_brick_stairs": "滴水石小砖块楼梯", + "block.create.small_dripstone_brick_wall": "滴水石小砖块墙", + "block.create.small_dripstone_bricks": "滴水石小砖块", + "block.create.small_granite_brick_slab": "花岗岩小砖块台阶", + "block.create.small_granite_brick_stairs": "花岗岩小砖块楼梯", + "block.create.small_granite_brick_wall": "花岗岩小砖块墙", + "block.create.small_granite_bricks": "花岗岩小砖块", + "block.create.small_limestone_brick_slab": "石灰岩小砖块台阶", + "block.create.small_limestone_brick_stairs": "石灰岩小砖块楼梯", + "block.create.small_limestone_brick_wall": "石灰岩小砖块墙", + "block.create.small_limestone_bricks": "石灰岩小砖块", + "block.create.small_ochrum_brick_slab": "赭金砂小砖块台阶", + "block.create.small_ochrum_brick_stairs": "赭金砂小砖块楼梯", + "block.create.small_ochrum_brick_wall": "赭金砂小砖块墙", + "block.create.small_ochrum_bricks": "赭金砂小砖块", + "block.create.small_scorchia_brick_slab": "焦黑熔渣小砖块台阶", + "block.create.small_scorchia_brick_stairs": "焦黑熔渣小砖块楼梯", + "block.create.small_scorchia_brick_wall": "焦黑熔渣小砖块墙", + "block.create.small_scorchia_bricks": "焦黑熔渣小砖块", + "block.create.small_scoria_brick_slab": "熔渣小砖块台阶", + "block.create.small_scoria_brick_stairs": "熔渣小砖块楼梯", + "block.create.small_scoria_brick_wall": "熔渣小砖块墙", + "block.create.small_scoria_bricks": "熔渣小砖块", + "block.create.small_tuff_brick_slab": "凝灰岩小砖块台阶", + "block.create.small_tuff_brick_stairs": "凝灰岩小砖块楼梯", + "block.create.small_tuff_brick_wall": "凝灰岩小砖块墙", + "block.create.small_tuff_bricks": "凝灰岩小砖块", + "block.create.small_veridium_brick_slab": "辉绿矿小砖块台阶", + "block.create.small_veridium_brick_stairs": "辉绿矿小砖块楼梯", + "block.create.small_veridium_brick_wall": "辉绿矿小砖块墙", + "block.create.small_veridium_bricks": "辉绿矿小砖块", "block.create.smart_chute": "智能溜槽", "block.create.smart_fluid_pipe": "智能流体管道", "block.create.speedometer": "速度表", @@ -481,45 +481,45 @@ "block.create.stressometer": "应力表", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗户板", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.tuff_pillar": "凝灰岩柱", "block.create.turntable": "转盘", - "block.create.veridium": "UNLOCALIZED: Veridium", - "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.veridium": "辉绿矿", + "block.create.veridium_pillar": "辉绿矿柱", "block.create.vertical_framed_glass": "竖直边框玻璃", "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", "block.create.warped_window": "诡异木窗户", "block.create.warped_window_pane": "诡异木窗户板", "block.create.water_wheel": "水车", - "block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab", - "block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs", - "block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles", - "block.create.waxed_copper_tile_slab": "UNLOCALIZED: Waxed Copper Tile Slab", - "block.create.waxed_copper_tile_stairs": "UNLOCALIZED: Waxed Copper Tile Stairs", - "block.create.waxed_copper_tiles": "UNLOCALIZED: Waxed Copper Tiles", - "block.create.waxed_exposed_copper_shingle_slab": "UNLOCALIZED: Waxed Exposed Copper Shingle Slab", - "block.create.waxed_exposed_copper_shingle_stairs": "UNLOCALIZED: Waxed Exposed Copper Shingle Stairs", - "block.create.waxed_exposed_copper_shingles": "UNLOCALIZED: Waxed Exposed Copper Shingles", - "block.create.waxed_exposed_copper_tile_slab": "UNLOCALIZED: Waxed Exposed Copper Tile Slab", - "block.create.waxed_exposed_copper_tile_stairs": "UNLOCALIZED: Waxed Exposed Copper Tile Stairs", - "block.create.waxed_exposed_copper_tiles": "UNLOCALIZED: Waxed Exposed Copper Tiles", - "block.create.waxed_oxidized_copper_shingle_slab": "UNLOCALIZED: Waxed Oxidized Copper Shingle Slab", - "block.create.waxed_oxidized_copper_shingle_stairs": "UNLOCALIZED: Waxed Oxidized Copper Shingle Stairs", - "block.create.waxed_oxidized_copper_shingles": "UNLOCALIZED: Waxed Oxidized Copper Shingles", - "block.create.waxed_oxidized_copper_tile_slab": "UNLOCALIZED: Waxed Oxidized Copper Tile Slab", - "block.create.waxed_oxidized_copper_tile_stairs": "UNLOCALIZED: Waxed Oxidized Copper Tile Stairs", - "block.create.waxed_oxidized_copper_tiles": "UNLOCALIZED: Waxed Oxidized Copper Tiles", - "block.create.waxed_weathered_copper_shingle_slab": "UNLOCALIZED: Waxed Weathered Copper Shingle Slab", - "block.create.waxed_weathered_copper_shingle_stairs": "UNLOCALIZED: Waxed Weathered Copper Shingle Stairs", - "block.create.waxed_weathered_copper_shingles": "UNLOCALIZED: Waxed Weathered Copper Shingles", - "block.create.waxed_weathered_copper_tile_slab": "UNLOCALIZED: Waxed Weathered Copper Tile Slab", - "block.create.waxed_weathered_copper_tile_stairs": "UNLOCALIZED: Waxed Weathered Copper Tile Stairs", - "block.create.waxed_weathered_copper_tiles": "UNLOCALIZED: Waxed Weathered Copper Tiles", - "block.create.weathered_copper_shingle_slab": "UNLOCALIZED: Weathered Copper Shingle Slab", - "block.create.weathered_copper_shingle_stairs": "UNLOCALIZED: Weathered Copper Shingle Stairs", - "block.create.weathered_copper_shingles": "UNLOCALIZED: Weathered Copper Shingles", - "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", - "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", - "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", + "block.create.waxed_copper_shingle_slab": "涂蜡铜砖块台阶", + "block.create.waxed_copper_shingle_stairs": "涂蜡铜砖块楼梯", + "block.create.waxed_copper_shingles": "涂蜡铜砖块", + "block.create.waxed_copper_tile_slab": "涂蜡铜瓦块台阶", + "block.create.waxed_copper_tile_stairs": "涂蜡铜瓦块楼梯", + "block.create.waxed_copper_tiles": "涂蜡铜瓦块", + "block.create.waxed_exposed_copper_shingle_slab": "斑驳的涂蜡铜砖块台阶", + "block.create.waxed_exposed_copper_shingle_stairs": "斑驳的涂蜡铜砖块楼梯", + "block.create.waxed_exposed_copper_shingles": "斑驳的涂蜡铜砖块", + "block.create.waxed_exposed_copper_tile_slab": "斑驳的涂蜡铜瓦块台阶", + "block.create.waxed_exposed_copper_tile_stairs": "斑驳的涂蜡铜瓦块楼梯", + "block.create.waxed_exposed_copper_tiles": "斑驳的涂蜡铜瓦块", + "block.create.waxed_oxidized_copper_shingle_slab": "氧化的涂蜡铜砖块台阶", + "block.create.waxed_oxidized_copper_shingle_stairs": "氧化的涂蜡铜砖块楼梯", + "block.create.waxed_oxidized_copper_shingles": "氧化的涂蜡铜砖块", + "block.create.waxed_oxidized_copper_tile_slab": "氧化的涂蜡铜瓦块台阶", + "block.create.waxed_oxidized_copper_tile_stairs": "氧化的涂蜡铜瓦块楼梯", + "block.create.waxed_oxidized_copper_tiles": "氧化的涂蜡铜瓦块", + "block.create.waxed_weathered_copper_shingle_slab": "锈蚀的涂蜡铜砖块台阶", + "block.create.waxed_weathered_copper_shingle_stairs": "锈蚀的涂蜡铜砖块楼梯", + "block.create.waxed_weathered_copper_shingles": "锈蚀的涂蜡铜砖块", + "block.create.waxed_weathered_copper_tile_slab": "锈蚀的涂蜡铜瓦块台阶", + "block.create.waxed_weathered_copper_tile_stairs": "锈蚀的涂蜡铜瓦块楼梯", + "block.create.waxed_weathered_copper_tiles": "锈蚀的涂蜡铜瓦块", + "block.create.weathered_copper_shingle_slab": "锈蚀的铜砖块台阶", + "block.create.weathered_copper_shingle_stairs": "锈蚀的铜砖块楼梯", + "block.create.weathered_copper_shingles": "锈蚀的铜砖块", + "block.create.weathered_copper_tile_slab": "锈蚀的铜瓦块台阶", + "block.create.weathered_copper_tile_stairs": "锈蚀的铜瓦块楼梯", + "block.create.weathered_copper_tiles": "锈蚀的铜瓦块", "block.create.weighted_ejector": "弹射置物台", "block.create.white_nixie_tube": "白色辉光管", "block.create.white_sail": "白色风帆", @@ -591,7 +591,7 @@ "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", "item.create.empty_schematic": "空白蓝图", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "经验颗粒", "item.create.extendo_grip": "伸缩机械手", "item.create.filter": "过滤器", "item.create.furnace_minecart_contraption": "装配过的动力矿车", @@ -613,7 +613,7 @@ "item.create.powdered_obsidian": "黑曜石粉末", "item.create.precision_mechanism": "精密构件", "item.create.propeller": "扇叶", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "粗锌", "item.create.red_sand_paper": "红沙砂纸", "item.create.refined_radiance": "光辉石", "item.create.rose_quartz": "玫瑰石英", @@ -986,10 +986,10 @@ "create.gui.assembly.exception": "无法组装该装置:", "create.gui.assembly.exception.unmovableBlock": "无法移动的方块:(%4$s)位于 [%1$s,%2$s,%3$s]", "create.gui.assembly.exception.chunkNotLoaded": "位于 [%1$s,%2$s,%3$s] 的方块未处于加载区块", - "create.gui.assembly.exception.structureTooLarge": "装置中的方块数量过多。", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。", + "create.gui.assembly.exception.structureTooLarge": "装置中的方块数量过多。\n配置的最大值为:%1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。\n配置的最大值为:%1$s", "create.gui.assembly.exception.noPistonPoles": "活塞缺失部分活塞杆", - "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足。%1$s", + "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足:%1$s。\n至少需要 %2$s", "create.gui.gauge.info_header": "仪表信息:", "create.gui.speedometer.title": "旋转速度", "create.gui.stressometer.title": "网络应力", @@ -1035,7 +1035,7 @@ "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为%1$s", - "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.invalid": "[!] 无效的物品 - 使用蓝图桌来替换", "create.schematic.position": "位置", "create.schematic.rotation": "旋转", "create.schematic.rotation.none": "无", @@ -1078,7 +1078,7 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.uploadTooLarge": "你的蓝图超出了服务器指定的限制。", "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", "create.gui.schematicTable.refresh": "刷新文件", @@ -1104,7 +1104,7 @@ "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", "create.gui.schematicannon.slot.gunpowder": "向蓝图加农炮添加火药以提供动力", "create.gui.schematicannon.slot.listPrinter": "在此处放置书以打印蓝图所需的材料清单", - "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特点位置", + "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特定位置", "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料,蓝图加农炮将忽略当前缺失材料并且使用其他已有材料继续工作", "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子。", "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块。", @@ -1131,7 +1131,7 @@ "create.schematicannon.status.schematicExpired": "蓝图文件已过期", "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* ", + "create.materialChecklist.blocksNotLoaded": "*免责声明*\n\n由于相关区块没有被加载,材料列表可能不准确。", "create.gui.filter.deny_list": "黑名单", "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", @@ -1338,7 +1338,7 @@ "create.subtitle.mechanical_press_activation_belt": "辊压机:撞击传送带", "create.subtitle.fwoomp": "土豆加农炮:发射", "create.subtitle.worldshaper_place": "环境塑型器:放置方块", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "打磨噪音", "create.subtitle.crushing_1": "磨碎声", "create.subtitle.depot_slide": "物品:滑入", "create.subtitle.saw_activate_stone": "动力锯:切割", @@ -1351,7 +1351,7 @@ "create.subtitle.controller_put": "遥控器:放进讲台", "create.subtitle.cranking": "手摇曲柄:转动", "create.subtitle.wrench_remove": "组件:被破坏", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "打磨噪音", "create.subtitle.cogs": "齿轮:嘎吱作响", "create.subtitle.slime_added": "粘液:挤碎声", "create.subtitle.wrench_rotate": "扳手:拧动", @@ -1602,10 +1602,10 @@ "item.create.minecart_coupling.tooltip.condition1": "作用与矿车时", "item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起,在移动时将它们保持_恒定的距离_。", - "item.create.experience_nugget.tooltip": "UNLOCALIZED: NUGGET OF EXPERIENCE", - "item.create.experience_nugget.tooltip.summary": "UNLOCALIZED: _Ding!_ A speck of _inspiration_ from your fantastic inventions.", - "item.create.experience_nugget.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.experience_nugget.tooltip.behaviour1": "UNLOCALIZED: _Redeems_ _Experience_ points contained within.", + "item.create.experience_nugget.tooltip": "经验颗粒", + "item.create.experience_nugget.tooltip.summary": "_叮!_从你的奇妙发明中汲取_灵感_", + "item.create.experience_nugget.tooltip.condition1": "当使用时", + "item.create.experience_nugget.tooltip.behaviour1": "_吸收_其中包含的_经验值_。", "block.create.peculiar_bell.tooltip": "奇异钟", "block.create.peculiar_bell.tooltip.summary": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果......", @@ -1824,10 +1824,10 @@ "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", - "create.ponder.cogwheel_casing.header": "UNLOCALIZED: Encasing Cogwheels", - "create.ponder.cogwheel_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Cogwheels", - "create.ponder.cogwheel_casing.text_2": "UNLOCALIZED: Components added after encasing will not connect to the shaft outputs", - "create.ponder.cogwheel_casing.text_3": "UNLOCALIZED: The Wrench can be used to toggle connections", + "create.ponder.cogwheel_casing.header": "装壳齿轮", + "create.ponder.cogwheel_casing.text_1": "黄铜机壳或安山机壳可用于装饰齿轮", + "create.ponder.cogwheel_casing.text_2": "在装壳后添加的组件将不会与传动轴相连", + "create.ponder.cogwheel_casing.text_3": "扳手可用于切换连接", "create.ponder.creative_fluid_tank.header": "创造流体储罐", "create.ponder.creative_fluid_tank.text_1": "创造流体储罐可以提供无限量的流体", @@ -2049,16 +2049,16 @@ "create.ponder.item_drain.text_4": "...物品将会经过分液池顶部,并在此过程中将其包含的液体排入分液池内", "create.ponder.item_drain.text_5": "流体管道可以从分液池中抽取液体", - "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", - "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", - "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + "create.ponder.item_vault_sizes.header": "物品保险库的尺寸", + "create.ponder.item_vault_sizes.text_1": "可以组合物品保险库以增加总容量", + "create.ponder.item_vault_sizes.text_2": "它们的直径最多可以有 3 个方块宽……", + "create.ponder.item_vault_sizes.text_3": "……长度最多为直径的 3 倍", - "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", - "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", - "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", - "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", - "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.item_vault_storage.header": "在保险库中存储物品", + "create.ponder.item_vault_storage.text_1": "物品保险库可用于存储大量物品", + "create.ponder.item_vault_storage.text_2": "但是,不能手动添加或获取物品", + "create.ponder.item_vault_storage.text_3": "任何用于物品传输的组件都可以用于添加……", + "create.ponder.item_vault_storage.text_4": "……和从该容器中取出物品", "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", @@ -2263,17 +2263,17 @@ "create.ponder.powered_toggle_latch.text_3": "...开启或者是关闭", "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", - "create.ponder.pulse_extender.header": "UNLOCALIZED: Controlling signals using Pulse Extenders", - "create.ponder.pulse_extender.text_1": "UNLOCALIZED: Pulse Extenders can lengthen a signal passing through", - "create.ponder.pulse_extender.text_2": "UNLOCALIZED: They activate after a short delay...", - "create.ponder.pulse_extender.text_3": "UNLOCALIZED: ...and cool down for the configured duration", - "create.ponder.pulse_extender.text_4": "UNLOCALIZED: Using the mouse wheel, the discharge time can be configured", - "create.ponder.pulse_extender.text_5": "UNLOCALIZED: The configured duration can range up to 30 minutes", + "create.ponder.pulse_extender.header": "使用脉冲延长器控制信号", + "create.ponder.pulse_extender.text_1": "脉冲延长器可以延长通过的信号", + "create.ponder.pulse_extender.text_2": "它会在短暂延迟后激活……", + "create.ponder.pulse_extender.text_3": "……并在配置的持续时间后取消激活", + "create.ponder.pulse_extender.text_4": "通过鼠标滚轮,可以配置持续时间", + "create.ponder.pulse_extender.text_5": "配置的持续时间最长可达 30 分钟", "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", - "create.ponder.pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.pulse_repeater.text_2": "通过鼠标滚轮,可以配置充能时间", + "create.ponder.pulse_repeater.text_3": "配置的延迟范围最长可达 30 分钟", "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", diff --git a/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 7e552b7c9..4f037a837 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -294,20 +294,20 @@ public class AllBlocks { public static final BlockEntry ANDESITE_ENCASED_SHAFT = REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite) - .transform(BuilderTransformers.encasedShaft("andesite", AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.encasedShaft("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry BRASS_ENCASED_SHAFT = REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass) - .transform(BuilderTransformers.encasedShaft("brass", AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.encasedShaft("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry ANDESITE_ENCASED_COGWHEEL = REGISTRATE.block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p)) - .transform(BuilderTransformers.encasedCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, + .transform(BuilderTransformers.encasedCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE, AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_OTHERSIDE)))) .transform(axeOrPickaxe()) @@ -315,8 +315,8 @@ public class AllBlocks { public static final BlockEntry BRASS_ENCASED_COGWHEEL = REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p)) - .transform(BuilderTransformers.encasedCogwheel("brass", AllSpriteShifts.BRASS_CASING)) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, + .transform(BuilderTransformers.encasedCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE, AllSpriteShifts.BRASS_ENCASED_COGWHEEL_OTHERSIDE)))) .transform(axeOrPickaxe()) @@ -324,13 +324,13 @@ public class AllBlocks { public static final BlockEntry ANDESITE_ENCASED_LARGE_COGWHEEL = REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p)) - .transform(BuilderTransformers.encasedLargeCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.encasedLargeCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry BRASS_ENCASED_LARGE_COGWHEEL = REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p)) - .transform(BuilderTransformers.encasedLargeCogwheel("brass", AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.encasedLargeCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(axeOrPickaxe()) .register(); @@ -339,7 +339,7 @@ public class AllBlocks { .properties(BlockBehaviour.Properties::noOcclusion) .transform(BlockStressDefaults.setNoImpact()) .transform(axeOrPickaxe()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.ANDESITE_CASING, (s, f) -> f.getAxis() == s.getValue(GearboxBlock.AXIS)))) .blockstate((c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) @@ -668,7 +668,7 @@ public class AllBlocks { .properties(BlockBehaviour.Properties::noOcclusion) .transform(axeOrPickaxe()) .blockstate(BlockStateGen.encasedPipe()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, (s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) @@ -962,7 +962,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) + .onRegister(connectedTextures(ChassisCTBehaviour::new)) .lang("Linear Chassis") .simpleItem() .register(); @@ -973,7 +973,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) + .onRegister(connectedTextures(ChassisCTBehaviour::new)) .simpleItem() .register(); @@ -1146,27 +1146,27 @@ public class AllBlocks { }); public static final BlockEntry ANDESITE_CASING = REGISTRATE.block("andesite_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.ANDESITE_CASING)) .register(); public static final BlockEntry BRASS_CASING = REGISTRATE.block("brass_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.BRASS_CASING)) .register(); public static final BlockEntry COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.COPPER_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.COPPER_CASING)) .properties(p -> p.sound(SoundType.COPPER)) .register(); public static final BlockEntry SHADOW_STEEL_CASING = REGISTRATE.block("shadow_steel_casing", CasingBlock::deprecated) - .transform(BuilderTransformers.casing(AllSpriteShifts.SHADOW_STEEL_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.SHADOW_STEEL_CASING)) .lang("Shadow Casing") .register(); public static final BlockEntry REFINED_RADIANCE_CASING = REGISTRATE.block("refined_radiance_casing", CasingBlock::deprecated) - .transform(BuilderTransformers.casing(AllSpriteShifts.REFINED_RADIANCE_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.REFINED_RADIANCE_CASING)) .properties(p -> p.lightLevel($ -> 12)) .lang("Radiant Casing") .register(); @@ -1178,7 +1178,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(BlockStressDefaults.setImpact(2.0)) - .onRegister(CreateRegistrate.connectedTextures(new CrafterCTBehaviour())) + .onRegister(CreateRegistrate.connectedTextures(CrafterCTBehaviour::new)) .addLayer(() -> RenderType::cutoutMipped) .item() .transform(customItemModel()) @@ -1257,7 +1257,7 @@ public class AllBlocks { .modelFile(AssetLookup.standardModel(c, p)) .rotationY(s.getValue(ItemVaultBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) .build())) - .onRegister(connectedTextures(new ItemVaultCTBehaviour())) + .onRegister(connectedTextures(ItemVaultCTBehaviour::new)) .item(ItemVaultItem::new) .build() .register(); @@ -1312,7 +1312,7 @@ public class AllBlocks { public static final BlockEntry BRASS_TUNNEL = REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) - .onRegister(connectedTextures(new BrassTunnelCTBehaviour())) + .onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .register(); public static final BlockEntry CONTENT_OBSERVER = diff --git a/src/main/java/com/simibubi/create/AllEntityTypes.java b/src/main/java/com/simibubi/create/AllEntityTypes.java index a79b2682e..85e64ed4e 100644 --- a/src/main/java/com/simibubi/create/AllEntityTypes.java +++ b/src/main/java/com/simibubi/create/AllEntityTypes.java @@ -40,7 +40,7 @@ public class AllEntityTypes { public static final EntityEntry SUPER_GLUE = register("super_glue", SuperGlueEntity::new, () -> SuperGlueRenderer::new, MobCategory.MISC, 10, - Integer.MAX_VALUE, false, true, SuperGlueEntity::build).instance(() -> GlueInstance::new) + Integer.MAX_VALUE, false, true, SuperGlueEntity::build).instance(() -> GlueInstance::new, false) .register(); public static final EntityEntry CRAFTING_BLUEPRINT = diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index 4763976bf..5e4549fdf 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -10,7 +10,6 @@ import java.util.IdentityHashMap; import java.util.Map; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.CTSpriteShifter; import com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType; import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import com.simibubi.create.foundation.block.render.SpriteShifter; @@ -21,7 +20,7 @@ import net.minecraft.world.level.block.state.properties.WoodType; public class AllSpriteShifts { - static final Map WOODEN_WINDOWS = new IdentityHashMap<>(); + private static final Map WOODEN_WINDOWS = new IdentityHashMap<>(); public static final Map DYED_BELTS = new IdentityHashMap<>(), DYED_OFFSET_BELTS = new IdentityHashMap<>(), DYED_DIAGONAL_BELTS = new IdentityHashMap<>(); @@ -33,22 +32,22 @@ public class AllSpriteShifts { ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window"); public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), - CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"), - CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"), - ANDESITE_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "andesite_encased_cogwheel_side"), - ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "andesite_encased_cogwheel_side"), - BRASS_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "brass_encased_cogwheel_side"), - BRASS_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "brass_encased_cogwheel_side"); + CRAFTER_SIDE = vertical("crafter_side"), + CRAFTER_OTHERSIDE = horizontal("crafter_side"), + ANDESITE_ENCASED_COGWHEEL_SIDE = vertical("andesite_encased_cogwheel_side"), + ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = horizontal("andesite_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_SIDE = vertical("brass_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_OTHERSIDE = horizontal("brass_encased_cogwheel_side"); public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"), BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"), SHADOW_STEEL_CASING = omni("shadow_steel_casing"), REFINED_RADIANCE_CASING = omni("refined_radiance_casing"), CREATIVE_CASING = getCT(CTType.CROSS, "creative_casing"); - public static final CTSpriteShiftEntry CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_side"), - SECONDARY_CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "secondary_linear_chassis_side"), - CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"), - CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky"); + public static final CTSpriteShiftEntry CHASSIS_SIDE = omni("linear_chassis_side"), + SECONDARY_CHASSIS_SIDE = omni("secondary_linear_chassis_side"), + CHASSIS = omni("linear_chassis_end"), + CHASSIS_STICKY = omni("linear_chassis_end_sticky"); public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), FLUID_TANK = getCT(CTType.CROSS, "fluid_tank"), @@ -67,14 +66,6 @@ public class AllSpriteShifts { populateMaps(); } - // - - public static CTSpriteShiftEntry getWoodenWindow(WoodType woodType) { - return WOODEN_WINDOWS.get(woodType); - } - - // - private static void populateMaps() { WoodType[] supportedWoodTypes = new WoodType[] { WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA, WoodType.JUNGLE, WoodType.DARK_OAK, WoodType.CRIMSON, WoodType.WARPED }; @@ -90,24 +81,30 @@ public class AllSpriteShifts { } } - static Couple vault(String name) { + private static Couple vault(String name) { final String prefixed = "vault_" + name; return Couple - .createWithContext(b -> getCT(CTSpriteShifter.CTType.CROSS, prefixed, b ? prefixed : prefixed + "_large")); + .createWithContext(b -> getCT(CTType.CROSS, prefixed, b ? prefixed : prefixed + "_large")); } // - static CTSpriteShiftEntry omni(String name) { + private static CTSpriteShiftEntry omni(String name) { return getCT(OMNIDIRECTIONAL, name); } - static CTSpriteShiftEntry vertical(String name) { - return getCT(VERTICAL, name); - } - - static CTSpriteShiftEntry horizontal(String name) { + private static CTSpriteShiftEntry horizontal(String name) { return getCT(HORIZONTAL, name); } + private static CTSpriteShiftEntry vertical(String name) { + return getCT(VERTICAL, name); + } + + // + + public static CTSpriteShiftEntry getWoodenWindow(WoodType woodType) { + return WOODEN_WINDOWS.get(woodType); + } + } diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 7e8479c86..cfc775bb3 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.components.actors.DrillRenderer; import com.simibubi.create.content.contraptions.components.actors.DrillTileEntity; import com.simibubi.create.content.contraptions.components.actors.HarvesterRenderer; import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; +import com.simibubi.create.content.contraptions.components.actors.PSIInstance; import com.simibubi.create.content.contraptions.components.actors.PortableFluidInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceRenderer; @@ -191,56 +192,56 @@ public class AllTileEntities { // Kinetics public static final BlockEntityEntry BRACKETED_KINETIC = Create.registrate() .tileEntity("simple_kinetic", BracketedKineticTileEntity::new) - .instance(() -> BracketedKineticTileInstance::new) + .instance(() -> BracketedKineticTileInstance::new, false) .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) .renderer(() -> BracketedKineticTileRenderer::new) .register(); public static final BlockEntityEntry MOTOR = Create.registrate() .tileEntity("motor", CreativeMotorTileEntity::new) - .instance(() -> HalfShaftInstance::new) + .instance(() -> HalfShaftInstance::new, false) .validBlocks(AllBlocks.CREATIVE_MOTOR) .renderer(() -> CreativeMotorRenderer::new) .register(); public static final BlockEntityEntry GEARBOX = Create.registrate() .tileEntity("gearbox", GearboxTileEntity::new) - .instance(() -> GearboxInstance::new) + .instance(() -> GearboxInstance::new, false) .validBlocks(AllBlocks.GEARBOX) .renderer(() -> GearboxRenderer::new) .register(); public static final BlockEntityEntry ENCASED_SHAFT = Create.registrate() .tileEntity("encased_shaft", KineticTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE) .renderer(() -> ShaftRenderer::new) .register(); public static final BlockEntityEntry ENCASED_COGWHEEL = Create.registrate() .tileEntity("encased_cogwheel", SimpleKineticTileEntity::new) - .instance(() -> EncasedCogInstance::small) + .instance(() -> EncasedCogInstance::small, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL) .renderer(() -> EncasedCogRenderer::small) .register(); public static final BlockEntityEntry ENCASED_LARGE_COGWHEEL = Create.registrate() .tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new) - .instance(() -> EncasedCogInstance::large) + .instance(() -> EncasedCogInstance::large, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL) .renderer(() -> EncasedCogRenderer::large) .register(); public static final BlockEntityEntry ADJUSTABLE_PULLEY = Create.registrate() .tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) .renderer(() -> ShaftRenderer::new) .register(); public static final BlockEntityEntry ENCASED_FAN = Create.registrate() .tileEntity("encased_fan", EncasedFanTileEntity::new) - .instance(() -> FanInstance::new) + .instance(() -> FanInstance::new, false) .validBlocks(AllBlocks.ENCASED_FAN) .renderer(() -> EncasedFanRenderer::new) .register(); @@ -253,21 +254,21 @@ public class AllTileEntities { public static final BlockEntityEntry CLUTCH = Create.registrate() .tileEntity("clutch", ClutchTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.CLUTCH) .renderer(() -> SplitShaftRenderer::new) .register(); public static final BlockEntityEntry GEARSHIFT = Create.registrate() .tileEntity("gearshift", GearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.GEARSHIFT) .renderer(() -> SplitShaftRenderer::new) .register(); public static final BlockEntityEntry TURNTABLE = Create.registrate() .tileEntity("turntable", TurntableTileEntity::new) - .instance(() -> SingleRotatingInstance::new) + .instance(() -> SingleRotatingInstance::new, false) .validBlocks(AllBlocks.TURNTABLE) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -289,7 +290,7 @@ public class AllTileEntities { public static final BlockEntityEntry GANTRY_SHAFT = Create.registrate() .tileEntity("gantry_shaft", GantryShaftTileEntity::new) - .instance(() -> SingleRotatingInstance::new) + .instance(() -> SingleRotatingInstance::new, false) .validBlocks(AllBlocks.GANTRY_SHAFT) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -370,7 +371,7 @@ public class AllTileEntities { public static final BlockEntityEntry BELT = Create.registrate() .tileEntity("belt", BeltTileEntity::new) - .instance(() -> BeltInstance::new) + .instance(() -> BeltInstance::new, BeltTileEntity::shouldRenderNormally) .validBlocks(AllBlocks.BELT) .renderer(() -> BeltRenderer::new) .register(); @@ -415,7 +416,7 @@ public class AllTileEntities { public static final BlockEntityEntry MECHANICAL_PISTON = Create.registrate() .tileEntity("mechanical_piston", MechanicalPistonTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON) .renderer(() -> MechanicalPistonRenderer::new) .register(); @@ -443,7 +444,7 @@ public class AllTileEntities { public static final BlockEntityEntry ROPE_PULLEY = Create.registrate() .tileEntity("rope_pulley", PulleyTileEntity::new) - .instance(() -> RopePulleyInstance::new) + .instance(() -> RopePulleyInstance::new, false) .validBlocks(AllBlocks.ROPE_PULLEY) .renderer(() -> PulleyRenderer::new) .register(); @@ -456,14 +457,14 @@ public class AllTileEntities { public static final BlockEntityEntry STICKER = Create.registrate() .tileEntity("sticker", StickerTileEntity::new) - .instance(() -> StickerInstance::new) + .instance(() -> StickerInstance::new, false) .validBlocks(AllBlocks.STICKER) .renderer(() -> StickerRenderer::new) .register(); public static final BlockEntityEntry DRILL = Create.registrate() .tileEntity("drill", DrillTileEntity::new) - .instance(() -> DrillInstance::new) + .instance(() -> DrillInstance::new, false) .validBlocks(AllBlocks.MECHANICAL_DRILL) .renderer(() -> DrillRenderer::new) .register(); @@ -484,40 +485,42 @@ public class AllTileEntities { public static final BlockEntityEntry PORTABLE_STORAGE_INTERFACE = Create.registrate() .tileEntity("portable_storage_interface", PortableItemInterfaceTileEntity::new) + .instance(() -> PSIInstance::new) .validBlocks(AllBlocks.PORTABLE_STORAGE_INTERFACE) .renderer(() -> PortableStorageInterfaceRenderer::new) .register(); public static final BlockEntityEntry PORTABLE_FLUID_INTERFACE = Create.registrate() .tileEntity("portable_fluid_interface", PortableFluidInterfaceTileEntity::new) + .instance(() -> PSIInstance::new) .validBlocks(AllBlocks.PORTABLE_FLUID_INTERFACE) .renderer(() -> PortableStorageInterfaceRenderer::new) .register(); public static final BlockEntityEntry FLYWHEEL = Create.registrate() .tileEntity("flywheel", FlywheelTileEntity::new) - .instance(() -> FlyWheelInstance::new) + .instance(() -> FlyWheelInstance::new, false) .validBlocks(AllBlocks.FLYWHEEL) .renderer(() -> FlywheelRenderer::new) .register(); public static final BlockEntityEntry FURNACE_ENGINE = Create.registrate() .tileEntity("furnace_engine", FurnaceEngineTileEntity::new) - .instance(() -> EngineInstance::new) + .instance(() -> EngineInstance::new, false) .validBlocks(AllBlocks.FURNACE_ENGINE) .renderer(() -> EngineRenderer::new) .register(); public static final BlockEntityEntry MILLSTONE = Create.registrate() .tileEntity("millstone", MillstoneTileEntity::new) - .instance(() -> MillStoneCogInstance::new) + .instance(() -> MillStoneCogInstance::new, false) .validBlocks(AllBlocks.MILLSTONE) .renderer(() -> MillstoneRenderer::new) .register(); public static final BlockEntityEntry CRUSHING_WHEEL = Create.registrate() .tileEntity("crushing_wheel", CrushingWheelTileEntity::new) - .instance(() -> CutoutRotatingInstance::new) + .instance(() -> CutoutRotatingInstance::new, false) .validBlocks(AllBlocks.CRUSHING_WHEEL) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -531,7 +534,7 @@ public class AllTileEntities { public static final BlockEntityEntry WATER_WHEEL = Create.registrate() .tileEntity("water_wheel", WaterWheelTileEntity::new) - .instance(() -> CutoutRotatingInstance::new) + .instance(() -> CutoutRotatingInstance::new, false) .validBlocks(AllBlocks.WATER_WHEEL) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -578,7 +581,7 @@ public class AllTileEntities { public static final BlockEntityEntry SEQUENCED_GEARSHIFT = Create.registrate() .tileEntity("sequenced_gearshift", SequencedGearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.SEQUENCED_GEARSHIFT) .renderer(() -> SplitShaftRenderer::new) .register(); @@ -606,7 +609,7 @@ public class AllTileEntities { public static final BlockEntityEntry ANALOG_LEVER = Create.registrate() .tileEntity("analog_lever", AnalogLeverTileEntity::new) - .instance(() -> AnalogLeverInstance::new) + .instance(() -> AnalogLeverInstance::new, false) .validBlocks(AllBlocks.ANALOG_LEVER) .renderer(() -> AnalogLeverRenderer::new) .register(); @@ -672,7 +675,7 @@ public class AllTileEntities { public static final BlockEntityEntry PULSE_EXTENDER = Create.registrate() .tileEntity("pulse_extender", PulseExtenderTileEntity::new) - .instance(() -> BrassDiodeInstance::new) + .instance(() -> BrassDiodeInstance::new, false) .validBlocks(AllBlocks.PULSE_EXTENDER) .renderer(() -> BrassDiodeRenderer::new) .register(); @@ -680,7 +683,7 @@ public class AllTileEntities { public static final BlockEntityEntry PULSE_REPEATER = Create.registrate() .tileEntity("pulse_repeater", PulseRepeaterTileEntity::new) - .instance(() -> BrassDiodeInstance::new) + .instance(() -> BrassDiodeInstance::new, false) .validBlocks(AllBlocks.PULSE_REPEATER) .renderer(() -> BrassDiodeRenderer::new) .register(); @@ -714,7 +717,7 @@ public class AllTileEntities { public static final BlockEntityEntry TOOLBOX = Create.registrate() .tileEntity("toolbox", ToolboxTileEntity::new) - .instance(() -> ToolBoxInstance::new) + .instance(() -> ToolBoxInstance::new, false) .validBlocks(AllBlocks.TOOLBOXES.toArray()) .renderer(() -> ToolboxRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 5fcb90d8e..e1f6cfd7f 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -30,7 +30,6 @@ import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen; import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen; import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.ShippedResourcePacks; import com.simibubi.create.foundation.worldgen.AllWorldFeatures; import com.tterrag.registrate.util.NonNullLazyValue; @@ -58,7 +57,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.4a"; + public static final String VERSION = "0.4b"; public static final Logger LOGGER = LogManager.getLogger(); @@ -125,8 +124,6 @@ public class Create { SchematicInstances.register(); BuiltinPotatoProjectileTypes.register(); - ShippedResourcePacks.extractFiles("Copper Legacy Pack"); - event.enqueueWork(() -> { AllTriggers.register(); SchematicProcessor.register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index e0e0c7983..add42fd1f 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.SuperByteBufferCache; import com.simibubi.create.foundation.utility.ModelSwapper; +import com.simibubi.create.foundation.utility.ShippedResourcePacks; import com.simibubi.create.foundation.utility.ghost.GhostBlocks; import com.simibubi.create.foundation.utility.outliner.Outliner; @@ -81,6 +82,8 @@ public class CreateClient { BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20); BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); + ShippedResourcePacks.extractFiles("Copper Legacy Pack"); + AllKeys.register(); // AllFluids.assignRenderLayers(); AllBlockPartials.init(); diff --git a/src/main/java/com/simibubi/create/compat/Mods.java b/src/main/java/com/simibubi/create/compat/Mods.java index b32960505..1aba89709 100644 --- a/src/main/java/com/simibubi/create/compat/Mods.java +++ b/src/main/java/com/simibubi/create/compat/Mods.java @@ -38,4 +38,14 @@ public enum Mods { return Optional.of(toRun.get().get()); return Optional.empty(); } + + /** + * Simple hook to execute code if a mod is installed + * @param toExecute will be executed only if the mod is loaded + */ + public void executeIfInstalled(Supplier toExecute) { + if (isLoaded()) { + toExecute.get().run(); + } + } } diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 0b7719c58..eb9cfbc5a 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -341,11 +341,13 @@ public class CreateJEI implements IModPlugin { } public static List> findRecipes(Predicate> predicate) { - return Minecraft.getInstance().level.getRecipeManager() - .getRecipes() - .stream() - .filter(predicate) - .collect(Collectors.toList()); + return Minecraft.getInstance() + .getConnection() + .getRecipeManager() + .getRecipes() + .stream() + .filter(predicate) + .collect(Collectors.toList()); } public static List> findRecipesByType(RecipeType type) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java index 61d5e9601..de23bb2c9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java @@ -12,6 +12,6 @@ public class BackHalfShaftInstance extends HalfShaftInstance { @Override protected Direction getShaftDirection() { - return tile.getBlockState().getValue(BlockStateProperties.FACING).getOpposite(); + return blockEntity.getBlockState().getValue(BlockStateProperties.FACING).getOpposite(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index 5b78108e3..1a8c1dfa6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -7,7 +7,6 @@ import java.util.List; import javax.annotation.Nullable; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.KineticNetwork; @@ -49,7 +48,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; public class KineticTileEntity extends SmartTileEntity - implements IHaveGoggleInformation, IHaveHoveringInformation, FlywheelRendered { + implements IHaveGoggleInformation, IHaveHoveringInformation { public @Nullable Long network; public @Nullable BlockPos source; @@ -151,6 +150,7 @@ public class KineticTileEntity extends SmartTileEntity this.stress = currentStress; this.networkSize = networkSize; boolean overStressed = maxStress < currentStress && StressImpact.isEnabled(); + setChanged(); if (overStressed != this.overStressed) { float prevSpeed = getSpeed(); @@ -181,6 +181,7 @@ public class KineticTileEntity extends SmartTileEntity boolean directionSwap = !fromOrToZero && Math.signum(previousSpeed) != Math.signum(getSpeed()); if (fromOrToZero || directionSwap) flickerTally = getFlickerScore() + 5; + setChanged(); } @Override @@ -324,6 +325,7 @@ public class KineticTileEntity extends SmartTileEntity getOrCreateNetwork().remove(this); network = networkIn; + setChanged(); if (networkIn == null) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java index 425152021..296e434ae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java @@ -42,7 +42,7 @@ public class KineticTileEntityRenderer extends SafeTileEntityRenderer extends TileEntityInstance { +public abstract class KineticTileInstance extends BlockEntityInstance { protected final Direction.Axis axis; @@ -38,7 +38,7 @@ public abstract class KineticTileInstance extends T instance.setRotationAxis(axis) .setRotationOffset(getRotationOffset(axis)) .setRotationalSpeed(speed) - .setColor(tile); + .setColor(blockEntity); } protected final RotatingData setup(RotatingData key) { @@ -57,7 +57,7 @@ public abstract class KineticTileInstance extends T key.setRotationAxis(axis) .setRotationalSpeed(speed) .setRotationOffset(getRotationOffset(axis)) - .setColor(tile) + .setColor(blockEntity) .setPosition(getInstancePosition()); return key; @@ -78,7 +78,7 @@ public abstract class KineticTileInstance extends T } protected float getTileSpeed() { - return tile.getSpeed(); + return blockEntity.getSpeed(); } protected BlockState shaft() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java index 1c72568d5..b7ab909ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java @@ -1,14 +1,17 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.core.layout.BufferLayout; +import com.jozufozu.flywheel.core.model.ModelTransformer; +import com.jozufozu.flywheel.util.RenderMath; +import com.mojang.math.Quaternion; +import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; +import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.resources.ResourceLocation; @@ -19,13 +22,13 @@ public class BeltType implements Instanced, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.BELT; } @Override public StructWriter getWriter(VecBuffer backing) { - return new UnsafeBeltWriter(backing, this); + return new BeltWriterUnsafe(backing, this); } @Override @@ -34,7 +37,26 @@ public class BeltType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public void transform(BeltData d, ModelTransformer.Params b) { + float spriteHeight = d.maxV - d.minV; + double scroll = d.rotationalSpeed * AnimationTickHolder.getRenderTime() / (31.5 * 16) + d.rotationOffset; + scroll = scroll - Math.floor(scroll); + scroll = scroll * spriteHeight * RenderMath.f(d.scrollMult); + + float finalScroll = (float) scroll; + b.shiftUV((builder, u, v) -> { + float targetU = u - d.sourceU + d.minU; + float targetV = v - d.sourceV + d.minV + + finalScroll; + builder.uv(targetU, targetV); + }); + + b.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(new Quaternion(d.qX, d.qY, d.qZ, d.qW)) + .unCentre() + .light(d.getPackedLight()); + if (KineticDebugger.isActive()) { + b.color(d.r, d.g, d.b, d.a); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java similarity index 52% rename from src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java rename to src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java index 1bd4e3ac5..1cf570be5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java @@ -4,27 +4,16 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.backend.struct.UnsafeBufferWriter; -public class UnsafeBeltWriter extends UnsafeBufferWriter { - public UnsafeBeltWriter(VecBuffer backingBuffer, StructType vertexType) { +public class BeltWriterUnsafe extends KineticWriterUnsafe { + public BeltWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } @Override - public void write(BeltData d) { + protected void writeInternal(BeltData d) { + super.writeInternal(d); long addr = writePointer; - MemoryUtil.memPutByte(addr, d.blockLight); - MemoryUtil.memPutByte(addr + 1, d.skyLight); - MemoryUtil.memPutByte(addr + 2, d.r); - MemoryUtil.memPutByte(addr + 3, d.g); - MemoryUtil.memPutByte(addr + 4, d.b); - MemoryUtil.memPutByte(addr + 5, d.a); - MemoryUtil.memPutFloat(addr + 6, d.x); - MemoryUtil.memPutFloat(addr + 10, d.y); - MemoryUtil.memPutFloat(addr + 14, d.z); - MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); - MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); MemoryUtil.memPutFloat(addr + 26, d.qX); MemoryUtil.memPutFloat(addr + 30, d.qY); MemoryUtil.memPutFloat(addr + 34, d.qZ); @@ -36,7 +25,5 @@ public class UnsafeBeltWriter extends UnsafeBufferWriter { MemoryUtil.memPutFloat(addr + 58, d.maxU); MemoryUtil.memPutFloat(addr + 62, d.maxV); MemoryUtil.memPutByte(addr + 66, d.scrollMult); - - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java new file mode 100644 index 000000000..d450b1d6a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java @@ -0,0 +1,24 @@ +package com.simibubi.create.content.contraptions.base.flwdata; + +import org.lwjgl.system.MemoryUtil; + +import com.jozufozu.flywheel.api.struct.StructType; +import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.materials.BasicWriterUnsafe; + +public abstract class KineticWriterUnsafe extends BasicWriterUnsafe { + public KineticWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { + super(backingBuffer, vertexType); + } + + @Override + protected void writeInternal(D d) { + super.writeInternal(d); + long addr = writePointer; + MemoryUtil.memPutFloat(addr + 6, d.x); + MemoryUtil.memPutFloat(addr + 10, d.y); + MemoryUtil.memPutFloat(addr + 14, d.z); + MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); + MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java index 94e05590f..bef2e4722 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java @@ -1,14 +1,17 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.core.layout.BufferLayout; +import com.jozufozu.flywheel.core.model.ModelTransformer; +import com.jozufozu.flywheel.util.RenderMath; +import com.mojang.math.Vector3f; +import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; +import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.resources.ResourceLocation; @@ -19,13 +22,13 @@ public class RotatingType implements Instanced, Batched getWriter(VecBuffer backing) { - return new UnsafeRotatingWriter(backing, this); + return new RotatingWriterUnsafe(backing, this); } @Override @@ -34,7 +37,17 @@ public class RotatingType implements Instanced, Batched getTransformer(Model model) { - return null; + public void transform(RotatingData d, ModelTransformer.Params b) { + float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360); + + Vector3f axis = new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)); + b.light(d.getPackedLight()) + .translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(axis.rotationDegrees(angle)) + .unCentre(); + + if (KineticDebugger.isActive()) { + b.color(d.r, d.g, d.b, d.a); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java new file mode 100644 index 000000000..b57e21d2a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java @@ -0,0 +1,21 @@ +package com.simibubi.create.content.contraptions.base.flwdata; + +import org.lwjgl.system.MemoryUtil; + +import com.jozufozu.flywheel.api.struct.StructType; +import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; + +public class RotatingWriterUnsafe extends KineticWriterUnsafe { + public RotatingWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { + super(backingBuffer, vertexType); + } + + @Override + protected void writeInternal(RotatingData d) { + super.writeInternal(d); + long addr = writePointer; + MemoryUtil.memPutByte(addr + 26, d.rotationAxisX); + MemoryUtil.memPutByte(addr + 27, d.rotationAxisY); + MemoryUtil.memPutByte(addr + 28, d.rotationAxisZ); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java deleted file mode 100644 index 8b0f13835..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.content.contraptions.base.flwdata; - -import org.lwjgl.system.MemoryUtil; - -import com.jozufozu.flywheel.api.struct.StructType; -import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.backend.struct.UnsafeBufferWriter; - -public class UnsafeRotatingWriter extends UnsafeBufferWriter { - public UnsafeRotatingWriter(VecBuffer backingBuffer, StructType vertexType) { - super(backingBuffer, vertexType); - } - - @Override - public void write(RotatingData d) { - long addr = writePointer; - MemoryUtil.memPutByte(addr, d.blockLight); - MemoryUtil.memPutByte(addr + 1, d.skyLight); - MemoryUtil.memPutByte(addr + 2, d.r); - MemoryUtil.memPutByte(addr + 3, d.g); - MemoryUtil.memPutByte(addr + 4, d.b); - MemoryUtil.memPutByte(addr + 5, d.a); - MemoryUtil.memPutFloat(addr + 6, d.x); - MemoryUtil.memPutFloat(addr + 10, d.y); - MemoryUtil.memPutFloat(addr + 14, d.z); - MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); - MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); - MemoryUtil.memPutByte(addr + 26, d.rotationAxisX); - MemoryUtil.memPutByte(addr + 27, d.rotationAxisY); - MemoryUtil.memPutByte(addr + 28, d.rotationAxisZ); - - advance(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java index 8cb457cfd..304fe9cd1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.actors; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.actors.flwdata.ActorData; @@ -10,7 +11,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.render.AllMaterialSpecs; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -20,7 +20,7 @@ public class DrillActorInstance extends ActorInstance { ActorData drillHead; private final Direction facing; - public DrillActorInstance(MaterialManager materialManager, PlacementSimulationWorld contraption, MovementContext context) { + public DrillActorInstance(MaterialManager materialManager, VirtualRenderWorld contraption, MovementContext context) { super(materialManager, contraption, context); Material material = materialManager.defaultSolid() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java index 206e8ba30..cf949ebd4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java @@ -19,7 +19,7 @@ public class DrillInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.DRILL_HEAD, referenceState, facing); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java index 9690f4eba..738e868cf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java @@ -4,11 +4,11 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -35,9 +35,9 @@ public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @Override @OnlyIn(value = Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - if (!Backend.getInstance().canUseInstancing()) + if (!Backend.isOn()) DrillRenderer.renderInContraption(context, renderWorld, matrices, buffer); } @@ -48,7 +48,7 @@ public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new DrillActorInstance(materialManager, simulationWorld, context); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java index 76445939d..28140233b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.components.actors; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; @@ -11,7 +12,6 @@ import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -30,7 +30,7 @@ public class DrillRenderer extends KineticTileEntityRenderer { return CachedBufferer.partialFacing(AllBlockPartials.DRILL_HEAD, state); } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { BlockState state = context.state; SuperByteBuffer superBuffer = CachedBufferer.partial(AllBlockPartials.DRILL_HEAD, state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java index 5ea50777e..de07acdd9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java @@ -4,13 +4,13 @@ import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -31,7 +31,7 @@ public class HarvesterActorInstance extends ActorInstance { private double rotation; private double previousRotation; - public HarvesterActorInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public HarvesterActorInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { super(materialManager, simulationWorld, context); Material material = materialManager.defaultCutout() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index a2c3716ca..361d07b7a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -6,6 +6,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; @@ -13,7 +14,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -50,16 +50,15 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new HarvesterActorInstance(materialManager, simulationWorld, context); } @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffers) { - if (!Backend.getInstance() - .canUseInstancing()) + if (!Backend.isOn()) HarvesterRenderer.renderInContraption(context, renderWorld, matrices, buffers); } @@ -108,7 +107,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { world.setBlockAndUpdate(pos, cutCrop(world, pos, stateVisited)); } - private boolean isValidCrop(Level world, BlockPos pos, BlockState state) { + public boolean isValidCrop(Level world, BlockPos pos, BlockState state) { boolean harvestPartial = AllConfigs.SERVER.kinetics.harvestPartiallyGrown.get(); boolean replant = AllConfigs.SERVER.kinetics.harvesterReplants.get(); @@ -142,7 +141,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { return false; } - private boolean isValidOther(Level world, BlockPos pos, BlockState state) { + public boolean isValidOther(Level world, BlockPos pos, BlockState state) { if (state.getBlock() instanceof CropBlock) return false; if (state.getBlock() instanceof SugarCaneBlock) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java index 4dec68c49..0fbe0c3d8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.actors; import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; @@ -13,7 +14,6 @@ import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -40,7 +40,7 @@ public class HarvesterRenderer extends SafeTileEntityRenderer implements DynamicInstance, TickableInstance { + + private final PIInstance instance; + + public PSIInstance(MaterialManager materialManager, PortableStorageInterfaceTileEntity tile) { + super(materialManager, tile); + + instance = new PIInstance(materialManager, blockState, getInstancePosition()); + } + + @Override + public void init() { + instance.init(isLit()); + } + + @Override + public void tick() { + instance.tick(isLit()); + } + + @Override + public void beginFrame() { + instance.beginFrame(blockEntity.getExtensionDistance(AnimationTickHolder.getPartialTicks())); + } + + @Override + public void updateLight() { + relight(pos, instance.middle, instance.top); + } + + @Override + public void remove() { + instance.remove(); + } + + private boolean isLit() { + return blockEntity.isConnected(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java index ecc082c87..647f5bf37 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java @@ -2,11 +2,16 @@ package com.simibubi.create.content.contraptions.components.actors; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -30,11 +35,23 @@ public class PortableStorageInterfaceMovement extends MovementBehaviour { .getNormal()).scale(1.85f); } + @Override + public boolean hasSpecialInstancedRendering() { + return true; + } + + @Nullable + @Override + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { + return new PSIActorInstance(materialManager, simulationWorld, context); + } + @Override @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - PortableStorageInterfaceRenderer.renderInContraption(context, renderWorld, matrices, buffer); + if (!Backend.isOn()) + PortableStorageInterfaceRenderer.renderInContraption(context, renderWorld, matrices, buffer); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java index 903465dad..39ff32874 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.actors; import java.util.function.Consumer; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; @@ -15,7 +16,6 @@ import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -41,7 +41,7 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.ACTOR; } @@ -34,7 +33,7 @@ public class ActorType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public void transform(ActorData d, ModelTransformer.Params b) { + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java index 0a7184910..4479e800d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java @@ -12,7 +12,7 @@ public class UnsafeActorWriter extends UnsafeBufferWriter { } @Override - public void write(ActorData d) { + protected void writeInternal(ActorData d) { long addr = writePointer; MemoryUtil.memPutFloat(addr, d.x); MemoryUtil.memPutFloat(addr + 4, d.y); @@ -31,6 +31,5 @@ public class UnsafeActorWriter extends UnsafeBufferWriter { MemoryUtil.memPutByte(addr + 38, d.rotationCenterY); MemoryUtil.memPutByte(addr + 39, d.rotationCenterZ); MemoryUtil.memPutFloat(addr + 40, d.speed); - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java index fd0f6f56d..2efaec4a4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java @@ -187,9 +187,4 @@ public class CuckooClockTileEntity extends KineticTileEntity { Vec3 vec = VecHelper.getCenterOf(worldPosition); level.playLocalSound(vec.x, vec.y, vec.z, sound, SoundSource.BLOCKS, volume, pitch, false); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java index a35f0d13d..72a648e76 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java @@ -169,8 +169,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer mat = materialManager.defaultSolid() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index e16e7bd9c..e32c2a01f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -78,7 +78,7 @@ public class DeployerHandler { boolean rayMode = false; private ItemUseWorld(Level world, Direction face, BlockPos pos) { - super(world, world.getChunkSource()); + super(world); this.face = face; this.pos = pos; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java index 48dc47c10..9087f5eab 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java @@ -4,8 +4,8 @@ import static com.simibubi.create.content.contraptions.base.DirectionalAxisKinet import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.api.instance.ITickableInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -20,7 +20,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; -public class DeployerInstance extends ShaftInstance implements IDynamicInstance, ITickableInstance { +public class DeployerInstance extends ShaftInstance implements DynamicInstance, TickableInstance { final DeployerTileEntity tile; final Direction facing; @@ -34,12 +34,11 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, PartialModel currentHand; float progress; - private boolean newHand = false; public DeployerInstance(MaterialManager dispatcher, KineticTileEntity tile) { super(dispatcher, tile); - this.tile = (DeployerTileEntity) super.tile; + this.tile = (DeployerTileEntity) super.blockEntity; facing = blockState.getValue(FACING); boolean rotatePole = blockState.getValue(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Direction.Axis.Z; @@ -50,28 +49,34 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, pole = getOrientedMaterial().getModel(AllBlockPartials.DEPLOYER_POLE, blockState).createInstance(); - updateHandPose(); - relight(pos, pole); + currentHand = this.tile.getHandPose(); - progress = getProgress(AnimationTickHolder.getPartialTicks()); + hand = getOrientedMaterial().getModel(currentHand, blockState).createInstance(); + + progress = getProgress(AnimationTickHolder.getPartialTicks()); updateRotation(pole, hand, yRot, xRot, zRot); updatePosition(); } @Override public void tick() { - newHand = updateHandPose(); - } + PartialModel handPose = tile.getHandPose(); + + if (currentHand != handPose) { + currentHand = handPose; + getOrientedMaterial().getModel(currentHand, blockState) + .stealInstance(hand); + } + } @Override public void beginFrame() { float newProgress = getProgress(AnimationTickHolder.getPartialTicks()); - if (!newHand && Mth.equal(newProgress, progress)) return; + if (Mth.equal(newProgress, progress)) return; progress = newProgress; - newHand = false; updatePosition(); } @@ -89,24 +94,7 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, pole.delete(); } - private boolean updateHandPose() { - PartialModel handPose = tile.getHandPose(); - - if (currentHand == handPose) return false; - currentHand = handPose; - - if (hand != null) hand.delete(); - - hand = getOrientedMaterial().getModel(currentHand, blockState).createInstance(); - - relight(pos, hand); - updateRotation(pole, hand, yRot, xRot, zRot); - updatePosition(); - - return true; - } - - private float getProgress(float partialTicks) { + private float getProgress(float partialTicks) { if (tile.state == DeployerTileEntity.State.EXPANDING) return 1 - (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; if (tile.state == DeployerTileEntity.State.RETRACTING) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index b9b308812..92e302c8e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllBlockTags; @@ -27,7 +28,6 @@ import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTProcessors; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -255,9 +255,9 @@ public class DeployerMovementBehaviour extends MovementBehaviour { } @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffers) { - if (!Backend.getInstance().canUseInstancing()) + if (!Backend.isOn()) DeployerRenderer.renderInContraption(context, renderWorld, matrices, buffers); } @@ -268,7 +268,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new DeployerActorInstance(materialManager, simulationWorld, context); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java index 7a346812c..2c45c235c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java @@ -5,6 +5,7 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -26,7 +27,6 @@ import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; @@ -54,7 +54,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer renderItem(te, partialTicks, ms, buffer, light, overlay); FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; renderComponents(te, partialTicks, ms, buffer, light, overlay); } @@ -113,7 +113,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer protected void renderComponents(DeployerTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { VertexConsumer vb = buffer.getBuffer(RenderType.solid()); - if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + if (!Backend.canUseInstancing(te.getLevel())) { KineticTileEntityRenderer.renderRotatingKineticBlock(te, getRenderedBlockState(te), ms, vb, light); } @@ -155,7 +155,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer return buffer; } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { VertexConsumer builder = buffer.getBuffer(RenderType.solid()); BlockState blockState = context.state; @@ -193,10 +193,10 @@ public class DeployerRenderer extends SafeTileEntityRenderer IRotate def = (IRotate) context.state.getBlock(); axis = def.getRotationAxis(context.state); } - + float time = AnimationTickHolder.getRenderTime(context.world) / 20; float angle = (time * speed) % 360; - + new MatrixTransformStack(m) .centre() .rotateY(axis == Axis.Z ? 90 : 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 35d1ef873..4af84f819 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -424,11 +424,6 @@ public class DeployerTileEntity extends KineticTileEntity { return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public float getHandOffset(float partialTicks) { if (isVirtual()) return animatedOffset.getValue(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java index 274f95237..73b918fa7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java @@ -28,7 +28,7 @@ public class EncasedFanRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; Direction direction = te.getBlockState() .getValue(FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java index 3bc3f9b6c..9a7dfa93b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java @@ -36,7 +36,7 @@ public class FanInstance extends KineticTileInstance { } private float getFanSpeed() { - float speed = tile.getSpeed() * 5; + float speed = blockEntity.getSpeed() * 5; if (speed > 0) speed = Mth.clamp(speed, 80, 64 * 20); if (speed < 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java index caa0c1232..30e087aae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java @@ -10,7 +10,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; @@ -25,7 +25,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; -public class FlyWheelInstance extends KineticTileInstance implements IDynamicInstance { +public class FlyWheelInstance extends KineticTileInstance implements DynamicInstance { protected final Direction facing; protected final Direction connection; @@ -90,8 +90,8 @@ public class FlyWheelInstance extends KineticTileInstance im float partialTicks = AnimationTickHolder.getPartialTicks(); - float speed = tile.visualSpeed.get(partialTicks) * 3 / 10f; - float angle = tile.angle + speed * partialTicks; + float speed = blockEntity.visualSpeed.get(partialTicks) * 3 / 10f; + float angle = blockEntity.angle + speed * partialTicks; if (Math.abs(angle - lastAngle) < 0.001) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java index a871b4b42..7fd70c96b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java @@ -36,7 +36,7 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); FlywheelTileEntity wte = (FlywheelTileEntity) te; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java index 5587bbc13..60115d9a9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.foundation.utility.AngleHelper; @@ -10,7 +10,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class EngineInstance extends TileEntityInstance { +public class EngineInstance extends BlockEntityInstance { protected ModelData frame; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java index 1c9c904bd..64984443a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java @@ -22,7 +22,7 @@ public class EngineRenderer extends SafeTileEntityRe protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; Block block = te.getBlockState() .getBlock(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java index d96a4827b..9ecdc12f9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; @@ -18,7 +17,7 @@ import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class EngineTileEntity extends SmartTileEntity implements FlywheelRendered { +public class EngineTileEntity extends SmartTileEntity { public float appliedCapacity; public float appliedSpeed; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java index 04d95e7d2..5aae6789f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java @@ -33,7 +33,7 @@ public class FurnaceEngineBlock extends EngineBlock implements ITE(); + blockActivators = new HashMap<>(); + } - protected Map, Float> blockModifiers = new HashMap<>(); + private final Map, Float> blockModifiers; + private final Map, Function> blockActivators; public void register(IRegistryDelegate block, float modifier) { this.blockModifiers.put(block, modifier); } + + public void register(IRegistryDelegate block, float modifier, Function engineState) { + this.blockModifiers.put(block, modifier); + this.blockActivators.put(block, engineState); + } - public float getModifierOrDefault(BlockState state, float defaultValue) { + private float getModifierOrDefault(BlockState state, float defaultValue) { return blockModifiers.getOrDefault(state.getBlock().delegate, defaultValue); } + + private Function getEngineStateOrDefault(BlockState state, Function engineState) { + return blockActivators.getOrDefault(state.getBlock().delegate, engineState); + } public float getModifier(BlockState state) { return getModifierOrDefault(state, 1f); } + + public EngineState getEngineState(BlockState state) { + return getEngineStateOrDefault(state, + s -> s.getBlock() instanceof AbstractFurnaceBlock && s.hasProperty(AbstractFurnaceBlock.LIT) ? + (s.getValue(AbstractFurnaceBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY).apply(state); + } public static void register() { - INSTANCE.register(Blocks.BLAST_FURNACE.delegate, 2f); + get().register(Blocks.BLAST_FURNACE.delegate, 2f); + + /* + Example: + get().register(Blocks.REDSTONE_LAMP.delegate, 1f, + s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? + (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + */ + } + + public static FurnaceEngineModifiers get() { + return INSTANCE; + } + + public enum EngineState { + EMPTY, + VALID, + ACTIVE; + + public boolean isEngine() { + return this != EMPTY; + } + + public boolean isActive() { + return this == ACTIVE; + } + + public boolean isEmpty() { + return this == EMPTY; + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java index 1851c5878..b838b55e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java @@ -1,10 +1,10 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineModifiers.EngineState; import com.simibubi.create.foundation.block.BlockStressValues; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.AbstractFurnaceBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -22,11 +22,12 @@ public class FurnaceEngineTileEntity extends EngineTileEntity { public void updateFurnace() { BlockState state = level.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), worldPosition)); - if (!(state.getBlock() instanceof AbstractFurnaceBlock)) + EngineState engineState = FurnaceEngineModifiers.get().getEngineState(state); + if (engineState.isEmpty()) return; - float modifier = FurnaceEngineModifiers.INSTANCE.getModifier(state); - boolean active = state.hasProperty(AbstractFurnaceBlock.LIT) && state.getValue(AbstractFurnaceBlock.LIT); + float modifier = FurnaceEngineModifiers.get().getModifier(state); + boolean active = engineState.isActive(); float speed = active ? 16 * modifier : 0; float capacity = (float) (active ? BlockStressValues.getCapacity(AllBlocks.FURNACE_ENGINE.get()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java index 112abe5fb..1e8831261 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java @@ -15,6 +15,6 @@ public class MillStoneCogInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, blockEntity.getBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java index 83d05442f..ec59b2037 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java @@ -31,7 +31,7 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) te; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java index 9ce98dd3b..8104dd20b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.mixer; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.flwdata.RotatingData; @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; -public class MixerInstance extends EncasedCogInstance implements IDynamicInstance { +public class MixerInstance extends EncasedCogInstance implements DynamicInstance { private final RotatingData mixerHead; private final OrientedData mixerPole; @@ -42,7 +42,7 @@ public class MixerInstance extends EncasedCogInstance implements IDynamicInstanc protected Instancer getCogModel() { return materialManager.defaultSolid() .material(AllMaterialSpecs.ROTATING) - .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); + .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockEntity.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java index 5523a7b2e..43e315100 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java @@ -31,7 +31,7 @@ public class MechanicalPressRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); float renderedHeadOffset = ((MechanicalPressTileEntity) te).getRenderedHeadOffset(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java index fc3430acc..ff842943e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.press; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; -public class PressInstance extends ShaftInstance implements IDynamicInstance { +public class PressInstance extends ShaftInstance implements DynamicInstance { private final OrientedData pressHead; private final MechanicalPressTileEntity press; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java index 336977777..bba424cbf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java @@ -23,7 +23,7 @@ public class SawInstance extends SingleRotatingInstance { if (blockState.getValue(BlockStateProperties.FACING) .getAxis() .isHorizontal()) { - BlockState referenceState = blockState.rotate(tile.getLevel(), tile.getBlockPos(), Rotation.CLOCKWISE_180); + BlockState referenceState = blockState.rotate(blockEntity.getLevel(), blockEntity.getBlockPos(), Rotation.CLOCKWISE_180); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, referenceState, facing); } else { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java index 149be2e09..6da19d6a5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java @@ -4,6 +4,7 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; @@ -18,7 +19,6 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRe import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; @@ -46,8 +46,7 @@ public class SawRenderer extends SafeTileEntityRenderer { renderItems(te, partialTicks, ms, buffer, light, overlay); FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; renderShaft(te, ms, buffer, light, overlay); @@ -158,7 +157,7 @@ public class SawRenderer extends SafeTileEntityRenderer { return KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)); } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { BlockState state = context.state; Direction facing = state.getValue(SawBlock.FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java index aa2fffc3f..9403c13de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java @@ -499,9 +499,4 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { return false; } - @Override - public boolean shouldRenderNormally() { - return true; - } - } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index e5e405999..119a41f73 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import java.io.IOException; import java.util.IdentityHashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java index 53b24cac8..eee909ddb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.actors.AttachedActorBlock; import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; +import com.simibubi.create.content.contraptions.components.actors.PloughBlock; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock; import com.simibubi.create.content.contraptions.components.fan.NozzleBlock; @@ -347,6 +348,11 @@ public class BlockMovementChecks { return state.getValue(BlockStateProperties.FACING) == facing; if (AllBlocks.MECHANICAL_BEARING.has(state)) return state.getValue(BlockStateProperties.FACING) == facing; + if (AllBlocks.MECHANICAL_HARVESTER.has(state)) + return state.getValue(HarvesterBlock.FACING) == facing; + if (AllBlocks.MECHANICAL_PLOUGH.has(state)) + return state.getValue(PloughBlock.FACING) == facing; + if (AllBlocks.CART_ASSEMBLER.has(state)) return Direction.DOWN == facing; if (AllBlocks.MECHANICAL_SAW.has(state)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 66ad205e5..ca52109ea 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -25,8 +25,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllInteractionBehaviours; import com.simibubi.create.AllMovementBehaviours; @@ -874,9 +872,9 @@ public abstract class Contraption { } ListTag paletteNBT = new ListTag(); - for(int i = 0; i < palette.getSize(); ++i) + for(int i = 0; i < palette.getSize(); ++i) paletteNBT.add(NbtUtils.writeBlockState(palette.values.byId(i))); - + compound.put("Palette", paletteNBT); compound.put("BlockList", blockList); @@ -891,7 +889,7 @@ public abstract class Contraption { palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { throw new IllegalStateException("Palette Map index exceeded maximum"); }); - + ListTag list = c.getList("Palette", 10); palette.values.clear(); for (int i = 0; i < list.size(); ++i) @@ -1178,21 +1176,25 @@ public abstract class Contraption { int radius = (int) (Math.ceil(Math.sqrt(getRadius(blocks, axis)))); - GridAlignedBB betterBounds = GridAlignedBB.ofRadius(radius); + int maxX = radius + 2; + int maxY = radius + 2; + int maxZ = radius + 2; + int minX = -radius - 1; + int minY = -radius - 1; + int minZ = -radius - 1; - ImmutableBox contraptionBounds = GridAlignedBB.from(bounds); if (axis == Direction.Axis.X) { - betterBounds.setMaxX(contraptionBounds.getMaxX()); - betterBounds.setMinX(contraptionBounds.getMinX()); + maxX = (int) bounds.maxX; + minX = (int) bounds.minX; } else if (axis == Direction.Axis.Y) { - betterBounds.setMaxY(contraptionBounds.getMaxY()); - betterBounds.setMinY(contraptionBounds.getMinY()); + maxY = (int) bounds.maxY; + minY = (int) bounds.minY; } else if (axis == Direction.Axis.Z) { - betterBounds.setMaxZ(contraptionBounds.getMaxZ()); - betterBounds.setMinZ(contraptionBounds.getMinZ()); + maxZ = (int) bounds.maxZ; + minZ = (int) bounds.minZ; } - bounds = betterBounds.toAABB(); + bounds = new AABB(minX, minY, minZ, maxX, maxY, maxZ); } public void addExtraInventories(Entity entity) {} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index 2d788c9a0..f0ed5828a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -14,6 +14,7 @@ import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.actors.BlockBreakingMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity.ContraptionRotationState; import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; import com.simibubi.create.foundation.collision.ContinuousOBBCollider.ContinuousSeparationManifold; @@ -242,10 +243,10 @@ public class ContraptionCollider { boolean hasNormal = !collisionNormal.equals(Vec3.ZERO); boolean anyCollision = hardCollision || temporalCollision; - if (bounce > 0 && hasNormal && anyCollision && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { - entity.level.playSound(playerType == PlayerType.CLIENT ? (Player) entity : null, - entity.getX(), entity.getY(), entity.getZ(), SoundEvents.SLIME_BLOCK_FALL, - SoundSource.BLOCKS, .5f, 1); + if (bounce > 0 && hasNormal && anyCollision + && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { + entity.level.playSound(playerType == PlayerType.CLIENT ? (Player) entity : null, entity.getX(), + entity.getY(), entity.getZ(), SoundEvents.SLIME_BLOCK_FALL, SoundSource.BLOCKS, .5f, 1); continue; } @@ -339,25 +340,30 @@ public class ContraptionCollider { return false; Vec3 contactPointMotion = contraption.getContactPointMotion(entity.position()); - Vec3 motion = entity.getDeltaMovement().subtract(contactPointMotion); - Vec3 deltav = normal.scale(factor*2*motion.dot(normal)); + Vec3 motion = entity.getDeltaMovement() + .subtract(contactPointMotion); + Vec3 deltav = normal.scale(factor * 2 * motion.dot(normal)); if (deltav.dot(deltav) < 0.1f) - return false; - entity.setDeltaMovement(entity.getDeltaMovement().subtract(deltav)); + return false; + entity.setDeltaMovement(entity.getDeltaMovement() + .subtract(deltav)); return true; } public static Vec3 getWorldToLocalTranslation(Entity entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); + return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), + contraptionEntity.getRotationState()); } public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, ContraptionRotationState rotation) { return getWorldToLocalTranslation(entity, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); } - public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { + public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, Matrix3d rotationMatrix, + float yawOffset) { Vec3 entityPosition = entity.position(); - Vec3 centerY = new Vec3(0, entity.getBoundingBox().getYsize() / 2, 0); + Vec3 centerY = new Vec3(0, entity.getBoundingBox() + .getYsize() / 2, 0); Vec3 position = entityPosition; position = position.add(centerY); position = position.subtract(VecHelper.CENTER_OF_ORIGIN); @@ -371,14 +377,16 @@ public class ContraptionCollider { } public static Vec3 getWorldToLocalTranslation(Vec3 entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); + return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), + contraptionEntity.getRotationState()); } public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, ContraptionRotationState rotation) { return getWorldToLocalTranslation(inPos, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); } - public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { + public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, Matrix3d rotationMatrix, + float yawOffset) { Vec3 position = inPos; position = position.subtract(VecHelper.CENTER_OF_ORIGIN); position = position.subtract(anchorVec); @@ -436,8 +444,7 @@ public class ContraptionCollider { return entity instanceof LocalPlayer; } - private static List getPotentiallyCollidedShapes(Level world, Contraption contraption, - AABB localBB) { + private static List getPotentiallyCollidedShapes(Level world, Contraption contraption, AABB localBB) { double height = localBB.getYsize(); double width = localBB.getXsize(); @@ -536,16 +543,24 @@ public class ContraptionCollider { BlockState collidedState = world.getBlockState(colliderPos); StructureBlockInfo blockInfo = contraption.getBlocks() .get(pos); + boolean emptyCollider = collidedState.getCollisionShape(world, pos) + .isEmpty(); if (AllMovementBehaviours.contains(blockInfo.state.getBlock())) { MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state.getBlock()); if (movementBehaviour instanceof BlockBreakingMovementBehaviour) { BlockBreakingMovementBehaviour behaviour = (BlockBreakingMovementBehaviour) movementBehaviour; - if (!behaviour.canBreak(world, colliderPos, collidedState) - && !collidedState.getCollisionShape(world, pos) - .isEmpty()) { + if (!behaviour.canBreak(world, colliderPos, collidedState) && !emptyCollider) + return true; + continue; + } + if (movementBehaviour instanceof HarvesterMovementBehaviour) { + HarvesterMovementBehaviour harvesterMovementBehaviour = + (HarvesterMovementBehaviour) movementBehaviour; + if (!harvesterMovementBehaviour.isValidCrop(world, colliderPos, collidedState) + && !harvesterMovementBehaviour.isValidOther(world, colliderPos, collidedState) + && !emptyCollider) return true; - } continue; } } @@ -556,9 +571,7 @@ public class ContraptionCollider { if (collidedState.getBlock() instanceof CocoaBlock) continue; if (!collidedState.getMaterial() - .isReplaceable() - && !collidedState.getCollisionShape(world, colliderPos) - .isEmpty()) { + .isReplaceable() && !emptyCollider) { return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java index 95ea67501..f55daf85c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java @@ -1,12 +1,12 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.jozufozu.flywheel.light.GPULightVolume; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; import com.jozufozu.flywheel.light.LightListener; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import net.minecraft.world.level.LightLayer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 16abe0041..0699bfc0a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -5,6 +5,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; @@ -14,15 +15,24 @@ import net.minecraft.world.phys.Vec3; public class ContraptionWorld extends WrappedWorld { final Contraption contraption; + private final int minY; + private final int height; - public ContraptionWorld(Level world, Contraption contraption) { + public ContraptionWorld(Level world, Contraption contraption) { super(world); this.contraption = contraption; - } + minY = nextMultipleOf16(contraption.bounds.minY); + height = nextMultipleOf16(contraption.bounds.maxY) - minY; + } - @Override + // https://math.stackexchange.com/questions/291468 + private static int nextMultipleOf16(double a) { + return (((Math.abs((int) a) - 1) | 15) + 1) * Mth.sign(a); + } + + @Override public BlockState getBlockState(BlockPos pos) { StructureTemplate.StructureBlockInfo blockInfo = contraption.getBlocks().get(pos); @@ -46,4 +56,17 @@ public class ContraptionWorld extends WrappedWorld { public void playLocalSound(double x, double y, double z, SoundEvent p_184134_7_, SoundSource p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { world.playLocalSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); } + + // Ensure that we provide accurate information about ContraptionWorld height to mods (such as Starlight) which + // expect Levels to only have blocks located in chunks within their height range. + + @Override + public int getHeight() { + return height; + } + + @Override + public int getMinBuildHeight() { + return minY; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java index 291a8dd7c..21a3db6ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java @@ -3,10 +3,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -66,12 +66,12 @@ public abstract class MovementBehaviour { } @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) {} @OnlyIn(Dist.CLIENT) @Nullable - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return null; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java index 363cd4afa..1249efaa8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.MovingListener; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.foundation.config.AllConfigs; public class NonStationaryLighter extends ContraptionLighter implements MovingListener { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java index 16bd4e82a..1f2a06669 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.bearing; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java index 8f325b8b9..e4f303402 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.bearing; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class BearingInstance extends BackHalfShaftInstance implements IDynamicInstance { +public class BearingInstance extends BackHalfShaftInstance implements DynamicInstance { final B bearing; final OrientedData topInstance; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java index 1bd85cc7f..659152cce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java @@ -27,7 +27,7 @@ public class BearingRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index 633495afc..bd1ddb2b4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -420,11 +420,6 @@ public class ClockworkBearingTileEntity extends KineticTileEntity return worldPosition; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public void setAngle(float forcedAngle) { hourAngle = forcedAngle; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 19d35104a..1f659aecd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -321,11 +321,6 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public void setAngle(float forcedAngle) { angle = forcedAngle; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java index 2de04743b..8860950ff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java @@ -3,13 +3,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -23,7 +23,7 @@ public class StabilizedBearingInstance extends ActorInstance { final Vector3f rotationAxis; final Quaternion blockOrientation; - public StabilizedBearingInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public StabilizedBearingInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { super(materialManager, simulationWorld, context); BlockState blockState = context.state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java index f00e600f3..feb82bd90 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java @@ -5,6 +5,7 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; @@ -18,7 +19,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -32,9 +32,9 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { @Override @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - if (Backend.getInstance().canUseInstancing()) return; + if (Backend.isOn()) return; Direction facing = context.state.getValue(BlockStateProperties.FACING); PartialModel top = AllBlockPartials.BEARING_TOP; @@ -70,7 +70,7 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new StabilizedBearingInstance(materialManager, simulationWorld, context); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java index 76df6195b..e94e2b5ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement.chassis; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; @@ -12,7 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class StickerInstance extends TileEntityInstance implements IDynamicInstance { +public class StickerInstance extends BlockEntityInstance implements DynamicInstance { float lastOffset = Float.NaN; final Direction facing; @@ -35,7 +35,7 @@ public class StickerInstance extends TileEntityInstance imple @Override public void beginFrame() { - float offset = tile.piston.getValue(AnimationTickHolder.getPartialTicks()); + float offset = blockEntity.piston.getValue(AnimationTickHolder.getPartialTicks()); if (fakeWorld) offset = this.offset; @@ -51,7 +51,7 @@ public class StickerInstance extends TileEntityInstance imple private void animateHead(float offset) { head.loadIdentity() .translate(getInstancePosition()) - .nudge(tile.hashCode()) + .nudge(blockEntity.hashCode()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java index f4c3c8c27..cfb6a1d0e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java @@ -25,7 +25,7 @@ public class StickerRenderer extends SafeTileEntityRenderer { protected void renderSafe(StickerTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState state = te.getBlockState(); SuperByteBuffer head = CachedBufferer.partial(AllBlockPartials.STICKER_HEAD, state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java index 698a5b77c..697380f14 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; @@ -23,7 +22,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; -public class StickerTileEntity extends SmartTileEntity implements FlywheelRendered { +public class StickerTileEntity extends SmartTileEntity { LerpedFloat piston; boolean update; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java index 51558e887..f84270b53 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gantry; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -14,7 +14,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class GantryCarriageInstance extends ShaftInstance implements IDynamicInstance { +public class GantryCarriageInstance extends ShaftInstance implements DynamicInstance { private final ModelData gantryCogs; @@ -56,7 +56,7 @@ public class GantryCarriageInstance extends ShaftInstance implements IDynamicIns } private float getCogAngle() { - return GantryCarriageRenderer.getAngleForTe(tile, visualPos, rotationAxis) * rotationMult; + return GantryCarriageRenderer.getAngleForTe(blockEntity, visualPos, rotationAxis) * rotationMult; } private void animateCogs(float cogAngle) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java index 9e52ea3ea..6e3e6fd44 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java @@ -31,7 +31,7 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState state = te.getBlockState(); Direction facing = state.getValue(GantryCarriageBlock.FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java index f4a65dfe2..da1ef0c91 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java @@ -171,9 +171,4 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp BlockEntity te = level.getBlockEntity(worldPosition.relative(facing)); return te instanceof GantryShaftTileEntity && ((GantryShaftTileEntity) te).canAssembleOn(); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index bd464c94c..7282da1e1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -3,35 +3,26 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gl import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialGroup; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.ITickableInstance; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.api.instance.TickableInstance; import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; -import com.jozufozu.flywheel.core.Formats; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; -import com.jozufozu.flywheel.core.model.Model; -import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Quaternion; import com.simibubi.create.AllItems; -import com.simibubi.create.AllStitchedTextures; import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LightLayer; -import net.minecraft.world.phys.Vec3; -public class GlueInstance extends EntityInstance implements ITickableInstance { +public class GlueInstance extends EntityInstance implements TickableInstance { - private static final boolean USE_ATLAS = false; private static final ResourceLocation TEXTURE = Create.asResource("textures/entity/super_glue/slime.png"); private final Quaternion rotation; @@ -52,9 +43,9 @@ public class GlueInstance extends EntityInstance implements ITi } private Instancer getInstancer(MaterialManager materialManager, SuperGlueEntity entity) { - MaterialGroup group = USE_ATLAS ? materialManager.defaultCutout() : materialManager.cutout(RenderType.entityCutout(TEXTURE)); + MaterialGroup group = GlueModel.USE_ATLAS ? materialManager.defaultCutout() : materialManager.cutout(RenderType.entityCutout(TEXTURE)); - return group.material(Materials.ORIENTED).model(entity.getType(), GlueModel::new); + return group.material(Materials.ORIENTED).model(entity.getType(), GlueModel::get); } @Override @@ -95,75 +86,4 @@ public class GlueInstance extends EntityInstance implements ITi || AllItems.SUPER_GLUE.isIn(player.getOffhandItem()); } - public static class GlueModel implements Model { - - @Override - public String name() { - return "glue"; - } - - @Override - public void buffer(VertexConsumer buffer) { - Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); - Vec3 extension = diff.normalize() - .scale(1 / 32f - 1 / 128f); - - Vec3 plane = VecHelper.axisAlingedPlaneOf(diff); - Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z) - .getAxis(); - - Vec3 start = Vec3.ZERO.subtract(extension); - Vec3 end = Vec3.ZERO.add(extension); - - plane = plane.scale(1 / 2f); - Vec3 a1 = plane.add(start); - Vec3 b1 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a2 = plane.add(start); - Vec3 b2 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a3 = plane.add(start); - Vec3 b3 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a4 = plane.add(start); - Vec3 b4 = plane.add(end); - - float minU; - float maxU; - float minV; - float maxV; - - if (USE_ATLAS) { - TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.get(); - minU = sprite.getU0(); - maxU = sprite.getU1(); - minV = sprite.getV0(); - maxV = sprite.getV1(); - } else { - minU = minV = 0; - maxU = maxV = 1; - } - - // inside quad - buffer.vertex(a1.x, a1.y, a1.z).normal(0, 0, -1f).uv(maxU, minV).endVertex(); - buffer.vertex(a2.x, a2.y, a2.z).normal(0, 0, -1f).uv(maxU, maxV).endVertex(); - buffer.vertex(a3.x, a3.y, a3.z).normal(0, 0, -1f).uv(minU, maxV).endVertex(); - buffer.vertex(a4.x, a4.y, a4.z).normal(0, 0, -1f).uv(minU, minV).endVertex(); - // outside quad - buffer.vertex(b4.x, b4.y, b4.z).normal(0, 0, 1f).uv(minU, minV).endVertex(); - buffer.vertex(b3.x, b3.y, b3.z).normal(0, 0, 1f).uv(minU, maxV).endVertex(); - buffer.vertex(b2.x, b2.y, b2.z).normal(0, 0, 1f).uv(maxU, maxV).endVertex(); - buffer.vertex(b1.x, b1.y, b1.z).normal(0, 0, 1f).uv(maxU, minV).endVertex(); - } - - @Override - public int vertexCount() { - return 8; - } - - @Override - public VertexFormat format() { - return Formats.UNLIT_MODEL; - } - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java new file mode 100644 index 000000000..0c279a640 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java @@ -0,0 +1,99 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.glue; + +import com.jozufozu.flywheel.api.vertex.VertexList; +import com.jozufozu.flywheel.core.Formats; +import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.core.vertex.PosTexNormalWriterUnsafe; +import com.mojang.blaze3d.platform.MemoryTracker; +import com.simibubi.create.AllStitchedTextures; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.Vec3; + +public class GlueModel implements Model { + + public static final GlueModel INSTANCE = new GlueModel(); + static final boolean USE_ATLAS = false; + + public static GlueModel get() { + return INSTANCE; + } + + private final VertexList reader; + + private GlueModel() { + PosTexNormalWriterUnsafe writer = Formats.POS_TEX_NORMAL.createWriter(MemoryTracker.create(size())); + createGlueModel(writer); + reader = writer.intoReader(); + } + + @Override + public String name() { + return "glue"; + } + + @Override + public int vertexCount() { + return 8; + } + + @Override + public VertexList getReader() { + return reader; + } + + public static void createGlueModel(PosTexNormalWriterUnsafe buffer) { + Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); + Vec3 extension = diff.normalize() + .scale(1 / 32f - 1 / 128f); + + Vec3 plane = VecHelper.axisAlingedPlaneOf(diff); + Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z) + .getAxis(); + + Vec3 start = Vec3.ZERO.subtract(extension); + Vec3 end = Vec3.ZERO.add(extension); + + plane = plane.scale(1 / 2f); + Vec3 a1 = plane.add(start); + Vec3 b1 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a2 = plane.add(start); + Vec3 b2 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a3 = plane.add(start); + Vec3 b3 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a4 = plane.add(start); + Vec3 b4 = plane.add(end); + + float minU; + float maxU; + float minV; + float maxV; + + if (USE_ATLAS) { + TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.get(); + minU = sprite.getU0(); + maxU = sprite.getU1(); + minV = sprite.getV0(); + maxV = sprite.getV1(); + } else { + minU = minV = 0; + maxU = maxV = 1; + } + + // inside quad + buffer.putVertex((float) a1.x, (float) a1.y, (float) a1.z, 0, 0, -1, maxU, minV); + buffer.putVertex((float) a2.x, (float) a2.y, (float) a2.z, 0, 0, -1, maxU, maxV); + buffer.putVertex((float) a3.x, (float) a3.y, (float) a3.z, 0, 0, -1, minU, maxV); + buffer.putVertex((float) a4.x, (float) a4.y, (float) a4.z, 0, 0, -1, minU, minV); + // outside quad + buffer.putVertex((float) b4.x, (float) b4.y, (float) b4.z, 0, 0, 1f, minU, minV); + buffer.putVertex((float) b3.x, (float) b3.y, (float) b3.z, 0, 0, 1f, minU, maxV); + buffer.putVertex((float) b2.x, (float) b2.y, (float) b2.z, 0, 0, 1f, maxU, maxV); + buffer.putVertex((float) b1.x, (float) b1.y, (float) b1.z, 0, 0, 1f, maxU, minV); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java index 8f622be50..767c66f88 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java @@ -4,7 +4,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.Validate; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.AllItems; @@ -68,7 +67,7 @@ import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; public class SuperGlueEntity extends Entity - implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, FlywheelRendered { + implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement { private int validationTimer; protected BlockPos hangingPosition; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java index 2072a657f..5d834de18 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.piston; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index 8906a5ab0..8e10efb1a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -2,18 +2,18 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pu import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.instancing.GroupInstance; import com.jozufozu.flywheel.core.instancing.SelectInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; import com.jozufozu.flywheel.light.LightPacking; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.LightVolume; import com.jozufozu.flywheel.light.MovingListener; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.mojang.math.Vector3f; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; @@ -22,7 +22,7 @@ import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.level.LightLayer; -public abstract class AbstractPulleyInstance extends ShaftInstance implements IDynamicInstance, MovingListener { +public abstract class AbstractPulleyInstance extends ShaftInstance implements DynamicInstance, MovingListener { final OrientedData coil; final SelectInstance magnet; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index f60c903ab..dfa6dcd0c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -44,8 +44,7 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java index 5969610e6..62d7c0e65 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java @@ -39,7 +39,7 @@ public class HosePulleyInstance extends AbstractPulleyInstance { } protected float getOffset() { - return ((HosePulleyTileEntity) tile).getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); + return ((HosePulleyTileEntity) blockEntity).getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); } protected boolean isRunning() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java index b959b2ca4..2a1faf43c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pulley; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index 265aad167..a441696f8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -236,9 +236,4 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { public void animateOffset(float forcedOffset) { offset = forcedOffset; } - - @Override - public boolean shouldRenderNormally() { - return false; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java index 7bb74f913..5eac17ee0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java @@ -35,10 +35,10 @@ public class RopePulleyInstance extends AbstractPulleyInstance { protected float getOffset() { float partialTicks = AnimationTickHolder.getPartialTicks(); - return PulleyRenderer.getTileOffset(partialTicks, (PulleyTileEntity) tile); + return PulleyRenderer.getTileOffset(partialTicks, (PulleyTileEntity) blockEntity); } protected boolean isRunning() { - return ((PulleyTileEntity) tile).running || tile.isVirtual(); + return ((PulleyTileEntity) blockEntity).running || blockEntity.isVirtual(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java index 697aee777..6ce2d95a5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java @@ -1,17 +1,17 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.world.level.LightLayer; public abstract class ActorInstance { protected final MaterialManager materialManager; - protected final PlacementSimulationWorld simulationWorld; + protected final VirtualRenderWorld simulationWorld; protected final MovementContext context; - public ActorInstance(MaterialManager materialManager, PlacementSimulationWorld world, MovementContext context) { + public ActorInstance(MaterialManager materialManager, VirtualRenderWorld world, MovementContext context) { this.materialManager = materialManager; this.simulationWorld = world; this.context = context; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java index ead1523c2..c52a7d882 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java @@ -7,9 +7,9 @@ import net.minecraft.client.renderer.RenderType; public class ContraptionGroup

extends InstancedMaterialGroup

{ - private final RenderedContraption contraption; + private final FlwContraption contraption; - public ContraptionGroup(RenderedContraption contraption, InstancingEngine

owner, RenderType type) { + public ContraptionGroup(FlwContraption contraption, InstancingEngine

owner, RenderType type) { super(owner, type); this.contraption = contraption; @@ -20,7 +20,7 @@ public class ContraptionGroup

extends InstancedMat contraption.setup(program); } - public static

InstancingEngine.GroupFactory

forContraption(RenderedContraption c) { + public static

InstancingEngine.GroupFactory

forContraption(FlwContraption c) { return (materialManager, type) -> new ContraptionGroup<>(c, materialManager, type); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index 94bfa5183..d1d138bfc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import java.lang.ref.WeakReference; import java.util.ArrayList; import javax.annotation.Nullable; @@ -8,7 +7,9 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; +import com.jozufozu.flywheel.backend.instancing.TaskEngine; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstanceManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; @@ -17,15 +18,15 @@ import net.minecraft.client.Camera; import net.minecraft.core.BlockPos; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; -public class ContraptionInstanceManager extends TileInstanceManager { +public class ContraptionInstanceManager extends BlockEntityInstanceManager { protected ArrayList actors = new ArrayList<>(); - private final WeakReference contraption; + private final VirtualRenderWorld renderWorld; - ContraptionInstanceManager(RenderedContraption contraption, MaterialManager materialManager) { + ContraptionInstanceManager(MaterialManager materialManager, VirtualRenderWorld contraption) { super(materialManager); - this.contraption = new WeakReference<>(contraption); + this.renderWorld = contraption; } public void tick() { @@ -33,8 +34,8 @@ public class ContraptionInstanceManager extends TileInstanceManager { } @Override - public void beginFrame(Camera info) { - super.beginFrame(info); + public void beginFrame(TaskEngine taskEngine, Camera info) { + super.beginFrame(taskEngine, info); actors.forEach(ActorInstance::beginFrame); } @@ -52,7 +53,7 @@ public class ContraptionInstanceManager extends TileInstanceManager { MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); if (movementBehaviour != null && movementBehaviour.hasSpecialInstancedRendering()) { - ActorInstance instance = movementBehaviour.createInstance(materialManager, getContraption().renderWorld, context); + ActorInstance instance = movementBehaviour.createInstance(materialManager, renderWorld, context); actors.add(instance); @@ -61,9 +62,5 @@ public class ContraptionInstanceManager extends TileInstanceManager { return null; } - - public RenderedContraption getContraption() { - return contraption.get(); - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 59ef2e7eb..b86d5261f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.gl.error.GlError; import com.jozufozu.flywheel.core.model.ModelUtil; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.jozufozu.flywheel.event.GatherContextEvent; import com.jozufozu.flywheel.event.ReloadRenderersEvent; @@ -18,11 +19,11 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.TileEntityRenderHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; @@ -43,7 +44,7 @@ import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(Dist.CLIENT) public class ContraptionRenderDispatcher { - private static WorldAttached> WORLDS = new WorldAttached<>(SBBContraptionManager::new); + private static WorldAttached> WORLDS = new WorldAttached<>(SBBContraptionManager::new); /** * Reset a contraption's renderer. @@ -93,7 +94,7 @@ public class ContraptionRenderDispatcher { // something went wrong with the other rendering if (!matrices.isReady()) return; - PlacementSimulationWorld renderWorld = renderInfo.renderWorld; + VirtualRenderWorld renderWorld = renderInfo.renderWorld; renderTileEntities(world, renderWorld, contraption, matrices, buffers); @@ -103,29 +104,29 @@ public class ContraptionRenderDispatcher { renderActors(world, renderWorld, contraption, matrices, buffers); } - public static PlacementSimulationWorld setupRenderWorld(Level world, Contraption c) { - PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world); + public static VirtualRenderWorld setupRenderWorld(Level world, Contraption c) { + ContraptionWorld contraptionWorld = c.getContraptionWorld(); + VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, c.anchor, contraptionWorld.getHeight(), contraptionWorld.getMinBuildHeight()); - renderWorld.setTileEntities(c.presentTileEntities.values()); + renderWorld.setBlockEntities(c.presentTileEntities.values()); for (StructureTemplate.StructureBlockInfo info : c.getBlocks() .values()) // Skip individual lighting updates to prevent lag with large contraptions renderWorld.setBlock(info.pos, info.state, Block.UPDATE_SUPPRESS_LIGHT); - renderWorld.updateLightSources(); - renderWorld.lighter.runUpdates(Integer.MAX_VALUE, false, false); + renderWorld.runLightingEngine(); return renderWorld; } - public static void renderTileEntities(Level world, PlacementSimulationWorld renderWorld, Contraption c, + public static void renderTileEntities(Level world, VirtualRenderWorld renderWorld, Contraption c, ContraptionMatrices matrices, MultiBufferSource buffer) { TileEntityRenderHelper.renderTileEntities(world, renderWorld, c.specialRenderedTileEntities, matrices.getModelViewProjection(), matrices.getLight(), buffer); } - protected static void renderActors(Level world, PlacementSimulationWorld renderWorld, Contraption c, + protected static void renderActors(Level world, VirtualRenderWorld renderWorld, Contraption c, ContraptionMatrices matrices, MultiBufferSource buffer) { PoseStack m = matrices.getModel(); @@ -148,7 +149,7 @@ public class ContraptionRenderDispatcher { } } - public static SuperByteBuffer buildStructureBuffer(PlacementSimulationWorld renderWorld, Contraption c, RenderType layer) { + public static SuperByteBuffer buildStructureBuffer(VirtualRenderWorld renderWorld, Contraption c, RenderType layer) { Collection values = c.getBlocks() .values(); BufferBuilder builder = ModelUtil.getBufferBuilderFromTemplate(renderWorld, layer, values); @@ -171,14 +172,14 @@ public class ContraptionRenderDispatcher { return LightTexture.pack((int) block, (int) sky); } - public static int getContraptionWorldLight(MovementContext context, PlacementSimulationWorld renderWorld) { + public static int getContraptionWorldLight(MovementContext context, VirtualRenderWorld renderWorld) { return LevelRenderer.getLightColor(renderWorld, context.localPos); } public static void reset() { - WORLDS.empty(ContraptionRenderManager::delete); + WORLDS.empty(ContraptionRenderingWorld::delete); - if (Backend.getInstance().available()) { + if (Backend.isOn()) { WORLDS = new WorldAttached<>(FlwContraptionManager::new); } else { WORLDS = new WorldAttached<>(SBBContraptionManager::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java index 648311387..c9e18059f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java @@ -1,22 +1,22 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.util.Mth; public class ContraptionRenderInfo { public final Contraption contraption; - public final PlacementSimulationWorld renderWorld; + public final VirtualRenderWorld renderWorld; private final ContraptionMatrices matrices = new ContraptionMatrices(); private boolean visible; - public ContraptionRenderInfo(Contraption contraption, PlacementSimulationWorld renderWorld) { + public ContraptionRenderInfo(Contraption contraption, VirtualRenderWorld renderWorld) { this.contraption = contraption; this.renderWorld = renderWorld; } @@ -34,7 +34,7 @@ public class ContraptionRenderInfo { AbstractContraptionEntity entity = contraption.entity; - visible = event.getClippingHelper().isVisible(entity.getBoundingBoxForCulling().inflate(2)); + visible = event.getFrustum().isVisible(entity.getBoundingBoxForCulling().inflate(2)); } public boolean isVisible() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java similarity index 95% rename from src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java rename to src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java index a5ae70382..072b8842d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java @@ -17,7 +17,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -public abstract class ContraptionRenderManager { +public abstract class ContraptionRenderingWorld { protected final Level world; private int removalTimer; @@ -25,7 +25,7 @@ public abstract class ContraptionRenderManager protected final Int2ObjectMap renderInfos = new Int2ObjectOpenHashMap<>(); protected final List visible = new ObjectArrayList<>(); - public ContraptionRenderManager(LevelAccessor world) { + public ContraptionRenderingWorld(LevelAccessor world) { this.world = (Level) world; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java index da4a5384b..c922a2ccd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java similarity index 55% rename from src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java rename to src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index dcf0ba609..42518e8f2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -4,16 +4,19 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Supplier; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.backend.instancing.Engine; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; +import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine; +import com.jozufozu.flywheel.backend.instancing.batching.BatchingEngine; import com.jozufozu.flywheel.backend.instancing.instancing.InstancingEngine; import com.jozufozu.flywheel.backend.model.ArrayModelRenderer; -import com.jozufozu.flywheel.backend.model.ModelRenderer; import com.jozufozu.flywheel.core.model.Model; import com.jozufozu.flywheel.core.model.WorldModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; +import com.jozufozu.flywheel.event.RenderLayerEvent; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; @@ -21,7 +24,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.RenderType; import net.minecraft.util.Mth; @@ -30,32 +32,26 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class RenderedContraption extends ContraptionRenderInfo { +public class FlwContraption extends ContraptionRenderInfo { private final ContraptionLighter lighter; - public final InstancingEngine engine; - public final ContraptionInstanceManager kinetics; - - private final Map renderLayers = new HashMap<>(); + private final Map renderLayers = new HashMap<>(); private final Matrix4f modelViewPartial = new Matrix4f(); + private final ContraptionInstanceWorld instanceWorld; private boolean modelViewPartialReady; - // floats because we're uploading this to the gpu + // floats because we upload this to the gpu private AABB lightBox; - public RenderedContraption(Contraption contraption, PlacementSimulationWorld renderWorld) { + public FlwContraption(Contraption contraption, VirtualRenderWorld renderWorld) { super(contraption, renderWorld); this.lighter = contraption.makeLighter(); - this.engine = InstancingEngine.builder(CreateContexts.CWORLD) - .setGroupFactory(ContraptionGroup.forContraption(this)) - .setIgnoreOriginCoordinate(true) - .build(); - this.kinetics = new ContraptionInstanceManager(this, engine); - this.engine.addListener(this.kinetics); + + instanceWorld = new ContraptionInstanceWorld(this); buildLayers(); - if (Backend.getInstance().canUseInstancing()) { + if (Backend.isOn()) { buildInstancedTiles(); buildActors(); } @@ -65,14 +61,29 @@ public class RenderedContraption extends ContraptionRenderInfo { return lighter; } - public void doRenderLayer(RenderType layer, ContraptionProgram shader) { - ModelRenderer structure = renderLayers.get(layer); + public void renderStructureLayer(RenderType layer, ContraptionProgram shader) { + ArrayModelRenderer structure = renderLayers.get(layer); if (structure != null) { setup(shader); structure.draw(); } } + public void renderInstanceLayer(RenderLayerEvent event) { + + event.stack.pushPose(); + float partialTicks = AnimationTickHolder.getPartialTicks(); + AbstractContraptionEntity entity = contraption.entity; + double x = Mth.lerp(partialTicks, entity.xOld, entity.getX()); + double y = Mth.lerp(partialTicks, entity.yOld, entity.getY()); + double z = Mth.lerp(partialTicks, entity.zOld, entity.getZ()); + event.stack.translate(x - event.camX, y - event.camY, z - event.camZ); + ContraptionMatrices.transform(event.stack, getMatrices().getModel()); + instanceWorld.engine.render(SerialTaskEngine.INSTANCE, event); + + event.stack.popPose(); + } + public void beginFrame(BeginFrameEvent event) { super.beginFrame(event); @@ -81,7 +92,7 @@ public class RenderedContraption extends ContraptionRenderInfo { if (!isVisible()) return; - kinetics.beginFrame(event.getInfo()); + instanceWorld.tileInstanceManager.beginFrame(SerialTaskEngine.INSTANCE, event.getCamera()); Vec3 cameraPos = event.getCameraPos(); @@ -106,19 +117,18 @@ public class RenderedContraption extends ContraptionRenderInfo { } public void invalidate() { - for (ModelRenderer buffer : renderLayers.values()) { + for (ArrayModelRenderer buffer : renderLayers.values()) { buffer.delete(); } renderLayers.clear(); lighter.delete(); - engine.delete(); - kinetics.invalidate(); + instanceWorld.delete(); } private void buildLayers() { - for (ModelRenderer buffer : renderLayers.values()) { + for (ArrayModelRenderer buffer : renderLayers.values()) { buffer.delete(); } @@ -127,7 +137,7 @@ public class RenderedContraption extends ContraptionRenderInfo { List blockLayers = RenderType.chunkBufferLayers(); for (RenderType layer : blockLayers) { - Supplier layerModel = () -> new WorldModel(renderWorld, layer, contraption.getBlocks().values(), layer + "_" + contraption.entity.getId()); + Model layerModel = new WorldModel(renderWorld, layer, contraption.getBlocks().values(), layer + "_" + contraption.entity.getId()); renderLayers.put(layer, new ArrayModelRenderer(layerModel)); } @@ -137,11 +147,10 @@ public class RenderedContraption extends ContraptionRenderInfo { Collection tileEntities = contraption.maybeInstancedTileEntities; if (!tileEntities.isEmpty()) { for (BlockEntity te : tileEntities) { - if (InstancedRenderRegistry.getInstance() - .canInstance(te.getType())) { + if (InstancedRenderRegistry.canInstance(te.getType())) { Level world = te.getLevel(); te.setLevel(renderWorld); - kinetics.add(te); + instanceWorld.tileInstanceManager.add(te); te.setLevel(world); } } @@ -149,7 +158,7 @@ public class RenderedContraption extends ContraptionRenderInfo { } private void buildActors() { - contraption.getActors().forEach(kinetics::createActor); + contraption.getActors().forEach(instanceWorld.tileInstanceManager::createActor); } public static void setupModelViewPartial(Matrix4f matrix, Matrix4f modelMatrix, AbstractContraptionEntity entity, double camX, double camY, double camZ, float pt) { @@ -160,4 +169,38 @@ public class RenderedContraption extends ContraptionRenderInfo { matrix.multiply(modelMatrix); } + public void tick() { + instanceWorld.tileInstanceManager.tick(); + } + + public static class ContraptionInstanceWorld { + + private final Engine engine; + private final ContraptionInstanceManager tileInstanceManager; + + public ContraptionInstanceWorld(FlwContraption parent) { + switch (Backend.getInstance().getEngine()) { + case INSTANCING -> { + InstancingEngine engine = InstancingEngine.builder(CreateContexts.CWORLD) + .setGroupFactory(ContraptionGroup.forContraption(parent)) + .setIgnoreOriginCoordinate(true) + .build(); + tileInstanceManager = new ContraptionInstanceManager(engine, parent.renderWorld); + engine.addListener(tileInstanceManager); + + this.engine = engine; + } + case BATCHING -> { + engine = new BatchingEngine(); + tileInstanceManager = new ContraptionInstanceManager(engine, parent.renderWorld); + } + default -> throw new IllegalArgumentException("Unknown engine type"); + } + } + + public void delete() { + engine.delete(); + tileInstanceManager.invalidate(); + } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index f4794fa75..8ad5929cc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -7,17 +7,17 @@ import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.RenderLayer; import com.jozufozu.flywheel.backend.gl.GlTextureUnit; import com.jozufozu.flywheel.backend.gl.GlVertexArray; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.RenderLayerEvent; -import com.jozufozu.flywheel.util.TextureBinder; +import com.jozufozu.flywheel.util.Textures; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.render.CreateContexts; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.LevelAccessor; -public class FlwContraptionManager extends ContraptionRenderManager { +public class FlwContraptionManager extends ContraptionRenderingWorld { public FlwContraptionManager(LevelAccessor world) { super(world); @@ -27,8 +27,8 @@ public class FlwContraptionManager extends ContraptionRenderManager { +public class SBBContraptionManager extends ContraptionRenderingWorld { public static final SuperByteBufferCache.Compartment> CONTRAPTION = new SuperByteBufferCache.Compartment<>(); public SBBContraptionManager(LevelAccessor world) { @@ -21,7 +22,12 @@ public class SBBContraptionManager extends ContraptionRenderManager renderContraptionLayerSBB(event, info)); + RenderType type = event.getType(); + VertexConsumer consumer = event.buffers.bufferSource() + .getBuffer(type); + visible.forEach(info -> renderContraptionLayerSBB(info, type, consumer)); + + event.buffers.bufferSource().endBatch(type); } @Override @@ -34,13 +40,11 @@ public class SBBContraptionManager extends ContraptionRenderManager ContraptionRenderDispatcher.buildStructureBuffer(renderInfo.renderWorld, renderInfo.contraption, layer)); @@ -51,8 +55,7 @@ public class SBBContraptionManager extends ContraptionRenderManager getModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); } + + @Override + public void remove() { + super.remove(); + + for (ModelData arrow : arrows) { + arrow.delete(); + } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java index a8de02eb2..23e41b42a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.fluids; +import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -26,6 +27,7 @@ public class PumpRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + if (Backend.canUseInstancing(te.getLevel())) return; if (!(te instanceof PumpTileEntity pump)) return; Vec3 rotationOffset = new Vec3(.5, 14 / 16f, .5); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index f8df35193..d984b5e0c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -74,7 +74,7 @@ public class PumpTileEntity extends KineticTileEntity { if (!isVirtual()) return; } - + // if (pressureUpdate) // updatePressureChange(); @@ -389,9 +389,4 @@ public class PumpTileEntity extends KineticTileEntity { } } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java index be066a98e..7e3d47a6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java @@ -187,9 +187,4 @@ public class HosePulleyTileEntity extends KineticTileEntity { return this.capability.cast(); return super.getCapability(cap, side); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java index 834947da9..d8d688604 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; @@ -14,7 +14,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class FluidValveInstance extends ShaftInstance implements IDynamicInstance { +public class FluidValveInstance extends ShaftInstance implements DynamicInstance { private final FluidValveTileEntity tile; protected ModelData pointer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java index a83f0f4ef..2b6404cfe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java @@ -27,7 +27,7 @@ public class FluidValveRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); BlockState blockState = te.getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java index 79490b78d..ccb486b2f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java @@ -80,11 +80,6 @@ public class FluidValveTileEntity extends KineticTileEntity { behaviours.add(new ValvePipeBehaviour(this)); } - @Override - public boolean shouldRenderNormally() { - return true; - } - class ValvePipeBehaviour extends StraightPipeFluidTransportBehaviour { public ValvePipeBehaviour(SmartTileEntity te) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java index 62d0e2e8b..e03754473 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java @@ -149,9 +149,4 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { protected abstract boolean matchStaticFilters(Recipe recipe); protected abstract Object getRecipeCacheKey(); - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java index dbae35d20..a7043b05b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java @@ -31,7 +31,7 @@ public class SpeedControllerRenderer extends SmartTileEntityRenderer { @Override public void update() { - DyeColor color = tile.color.orElse(null); + DyeColor color = blockEntity.color.orElse(null); boolean bottom = true; for (BeltData key : keys) { SpriteShiftEntry spriteShiftEntry = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); key.setScrollTexture(spriteShiftEntry) - .setColor(tile) + .setColor(blockEntity) .setRotationalSpeed(getScrollSpeed()); bottom = false; } @@ -113,7 +113,7 @@ public class BeltInstance extends KineticTileInstance { } private float getScrollSpeed() { - float speed = tile.getSpeed(); + float speed = blockEntity.getSpeed(); if (((facing.getAxisDirection() == Direction.AxisDirection.NEGATIVE) ^ upward) ^ ((alongX && !diagonal) || (alongZ && diagonal))) { speed = -speed; @@ -168,7 +168,7 @@ public class BeltInstance extends KineticTileInstance { .setRotation(q) .setRotationalSpeed(getScrollSpeed()) .setRotationOffset(bottom ? 0.5f : 0f) - .setColor(tile) + .setColor(blockEntity) .setPosition(getInstancePosition()) .setBlockLight(world.getBrightness(LightLayer.BLOCK, pos)) .setSkyLight(world.getBrightness(LightLayer.SKY, pos)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index 38a990dbd..b27ed9d8b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -25,7 +25,6 @@ import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; @@ -55,7 +54,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { protected void renderSafe(BeltTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + if (!Backend.canUseInstancing(te.getLevel())) { BlockState blockState = te.getBlockState(); if (!AllBlocks.BELT.has(blockState)) return; @@ -308,11 +307,11 @@ public class BeltRenderer extends SafeTileEntityRenderer { } protected int getPackedLight(BeltTileEntity controller, float beltPos) { - int segment = (int) Math.floor(beltPos) * 2; - if (controller.light == null || segment >= controller.light.length || segment < 0) + int segment = (int) Math.floor(beltPos); + if (controller.lighter == null || segment >= controller.lighter.lightSegments() || segment < 0) return 0; - return LightTexture.pack(controller.light[segment], controller.light[segment + 1]); + return controller.lighter.getPackedLight(segment); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 33cbbd251..78aa5d9f6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -13,12 +13,12 @@ import java.util.Optional; import java.util.function.Function; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; import com.jozufozu.flywheel.light.LightListener; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -35,6 +35,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -54,6 +55,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.client.model.data.ModelProperty; @@ -63,7 +65,7 @@ import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; -public class BeltTileEntity extends KineticTileEntity implements LightListener { +public class BeltTileEntity extends KineticTileEntity { public Map passengers; public Optional color; @@ -78,8 +80,8 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { public CompoundTag trackerUpdateTag; - // client - public byte[] light; + @OnlyIn(Dist.CLIENT) + public BeltLighter lighter; public static enum CasingType { NONE, ANDESITE, BRASS; @@ -119,11 +121,11 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { if (!isController()) return; - if (light == null && level.isClientSide) { - initializeLight(); - LightUpdater.get(level) - .addListener(this); - } + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + if (beltLength > 0 && lighter == null) { + lighter = new BeltLighter(); + } + }); getInventory().tick(); @@ -230,8 +232,11 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { trackerUpdateTag = compound; index = compound.getInt("Index"); beltLength = compound.getInt("Length"); - if (prevBeltLength != beltLength) - light = null; + if (prevBeltLength != beltLength) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + lighter = null; + }); + } } if (isController()) @@ -528,7 +533,6 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { itemHandler.invalidate(); } - @Override public boolean shouldRenderNormally() { if (level == null) return isController(); @@ -536,43 +540,73 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { return state != null && state.hasProperty(BeltBlock.PART) && state.getValue(BeltBlock.PART) == BeltPart.START; } - public GridAlignedBB getVolume() { - BlockPos endPos = BeltHelper.getPositionForOffset(this, beltLength - 1); - GridAlignedBB bb = GridAlignedBB.from(worldPosition, endPos); - bb.fixMinMax(); - return bb; - } + /** + * Hide this behavior in an inner class to avoid loading LightListener on servers. + */ + @OnlyIn(Dist.CLIENT) + class BeltLighter implements LightListener { + private byte[] light; - @Override - public ListenerStatus status() { - return remove ? ListenerStatus.REMOVE : ListenerStatus.OKAY; - } - - @Override - public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { - if (this.remove) - return; - if (this.level == null) - return; - - GridAlignedBB beltVolume = getVolume(); - - if (beltVolume.intersects(changed)) { - if (light == null) { - initializeLight(); - return; - } - - if (type == LightLayer.BLOCK) - updateBlockLight(); - - if (type == LightLayer.SKY) - updateSkyLight(); + public BeltLighter() { + initializeLight(); + LightUpdater.get(level) + .addListener(this); } - } - private void initializeLight() { - if (beltLength > 0) { + /** + * Get the number of belt segments represented by the lighter. + * @return The number of segments. + */ + public int lightSegments() { + return light == null ? 0 : light.length / 2; + } + + /** + * Get the light value for a given segment. + * @param segment The segment to get the light value for. + * @return The light value. + */ + public int getPackedLight(int segment) { + return light == null ? 0 : LightTexture.pack(light[segment * 2], light[segment * 2 + 1]); + } + + @Override + public GridAlignedBB getVolume() { + BlockPos endPos = BeltHelper.getPositionForOffset(BeltTileEntity.this, beltLength - 1); + GridAlignedBB bb = GridAlignedBB.from(worldPosition, endPos); + bb.fixMinMax(); + return bb; + } + + @Override + public ListenerStatus status() { + return remove ? ListenerStatus.REMOVE : ListenerStatus.OKAY; + } + + @Override + public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { + if (remove) + return; + if (level == null) + return; + + GridAlignedBB beltVolume = getVolume(); + + if (beltVolume.intersects(changed)) { + if (light == null) { + initializeLight(); + return; + } + + if (type == LightLayer.BLOCK) + updateBlockLight(); + + if (type == LightLayer.SKY) + updateSkyLight(); + } + } + + private void initializeLight() { light = new byte[beltLength * 2]; Vec3i vec = getBeltFacing().getNormal(); @@ -586,31 +620,31 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { pos.move(vec.getX(), verticality, vec.getZ()); } } - } - private void updateBlockLight() { - Vec3i vec = getBeltFacing().getNormal(); - BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; + private void updateBlockLight() { + Vec3i vec = getBeltFacing().getNormal(); + BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); + for (int i = 0; i < beltLength * 2; i += 2) { + light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); - pos.move(vec.getX(), verticality, vec.getZ()); + pos.move(vec.getX(), verticality, vec.getZ()); + } } - } - private void updateSkyLight() { - Vec3i vec = getBeltFacing().getNormal(); - BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; + private void updateSkyLight() { + Vec3i vec = getBeltFacing().getNormal(); + BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 1; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightLayer.SKY, pos); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); + for (int i = 1; i < beltLength * 2; i += 2) { + light[i] = (byte) level.getBrightness(LightLayer.SKY, pos); - pos.move(vec.getX(), verticality, vec.getZ()); + pos.move(vec.getX(), verticality, vec.getZ()); + } } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java index 18f84e71c..b3c941eb8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java @@ -4,7 +4,7 @@ import java.util.Collections; import java.util.List; import java.util.Random; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.jozufozu.flywheel.core.virtual.VirtualEmptyModelData; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java index 7733d54e7..e6ab3d5ef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.relays.elementary; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; @@ -27,15 +27,15 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { @Override public void init() { super.init(); - if (!ICogWheel.isLargeCog(tile.getBlockState())) + if (!ICogWheel.isLargeCog(blockEntity.getBlockState())) return; // Large cogs sometimes have to offset their teeth by 11.25 degrees in order to // mesh properly - float speed = tile.getSpeed(); - Axis axis = KineticTileEntityRenderer.getRotationAxisOf(tile); - BlockPos pos = tile.getBlockPos(); + float speed = blockEntity.getSpeed(); + Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); + BlockPos pos = blockEntity.getBlockPos(); float offset = BracketedKineticTileRenderer.getShaftAngleOffset(axis, pos); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Instancer half = getRotatingMaterial().getModel(AllBlockPartials.COGWHEEL_SHAFT, blockState, @@ -47,10 +47,10 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - if (!ICogWheel.isLargeCog(tile.getBlockState())) + if (!ICogWheel.isLargeCog(blockEntity.getBlockState())) return super.getModel(); - Axis axis = KineticTileEntityRenderer.getRotationAxisOf(tile); + Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, blockState, facing, () -> this.rotateToAxis(axis)); @@ -59,10 +59,11 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { private PoseStack rotateToAxis(Axis axis) { Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); PoseStack poseStack = new PoseStack(); - new MatrixTransformStack(poseStack).centre() - .rotateToFace(facing) - .multiply(Vector3f.XN.rotationDegrees(-90)) - .unCentre(); + TransformStack.cast(poseStack) + .centre() + .rotateToFace(facing) + .multiply(Vector3f.XN.rotationDegrees(-90)) + .unCentre(); return poseStack; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java index f8f5754a1..8e0e86660 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java @@ -28,8 +28,7 @@ public class BracketedKineticTileRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; if (!AllBlocks.LARGE_COGWHEEL.has(te.getBlockState())) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java index 552ccc02b..62d6f45bc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java @@ -56,7 +56,7 @@ public class EncasedCogInstance extends KineticTileInstance { rotatingBottomShaft = Optional.empty(); for (Direction d : Iterate.directionsInAxis(axis)) { - if (!def.hasShaftTowards(tile.getLevel(), tile.getBlockPos(), blockState, d)) + if (!def.hasShaftTowards(blockEntity.getLevel(), blockEntity.getBlockPos(), blockState, d)) continue; RotatingData data = setup(getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, d) .createInstance()); @@ -89,7 +89,7 @@ public class EncasedCogInstance extends KineticTileInstance { } protected Instancer getCogModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE); PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java index 0bb95a167..74445ff1f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java @@ -39,8 +39,7 @@ public class EncasedCogRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java index 7c9c16256..d6ded2749 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java @@ -46,7 +46,7 @@ public class SplitShaftInstance extends KineticTileInstance faces; @@ -59,7 +59,7 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns @Override public void beginFrame() { - GaugeTileEntity gaugeTile = (GaugeTileEntity) tile; + GaugeTileEntity gaugeTile = (GaugeTileEntity) blockEntity; if (Mth.equal(gaugeTile.prevDialState, gaugeTile.dialState)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java index ce495f0bd..a5872e8b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java @@ -39,7 +39,7 @@ public class GaugeRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java index 5df103fc8..7ea03b0e0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java @@ -52,9 +52,4 @@ public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInf return true; } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java index 8871111a8..ae7173155 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java @@ -56,7 +56,7 @@ public class GearboxInstance extends KineticTileInstance { } private float getSpeed(Direction direction) { - float speed = tile.getSpeed(); + float speed = blockEntity.getSpeed(); if (speed != 0 && sourceFacing != null) { if (sourceFacing.getAxis() == direction.getAxis()) @@ -68,8 +68,8 @@ public class GearboxInstance extends KineticTileInstance { } protected void updateSourceFacing() { - if (tile.hasSource()) { - BlockPos source = tile.source.subtract(pos); + if (blockEntity.hasSource()) { + BlockPos source = blockEntity.source.subtract(pos); sourceFacing = Direction.getNearest(source.getX(), source.getY(), source.getZ()); } else { sourceFacing = null; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java index 56194ec81..04671bcad 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java @@ -27,7 +27,7 @@ public class GearboxRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; final Axis boxAxis = te.getBlockState().getValue(BlockStateProperties.AXIS); final BlockPos pos = te.getBlockPos(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java index 8477f6578..efc548e31 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java @@ -76,7 +76,7 @@ public class TreeFertilizerItem extends Item { return super.useOn(context); } - private class TreesDreamWorld extends PlacementSimulationServerWorld { + private static class TreesDreamWorld extends PlacementSimulationServerWorld { private final BlockPos saplingPos; private final BlockState soil; diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java index d83cd2dcc..c7a99f0b0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -128,11 +128,6 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea .getDescriptionId()); } - @Override - public boolean shouldRenderNormally() { - return true; - } - public int getAirLevel() { return airLevel; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java index 2f084fca5..9ddd7f21c 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java @@ -33,6 +33,7 @@ public class SymmetryEffectPacket extends SimplePacketBase { } } + @Override public void write(FriendlyByteBuf buffer) { buffer.writeBlockPos(mirror); buffer.writeInt(positions.size()); @@ -41,6 +42,7 @@ public class SymmetryEffectPacket extends SimplePacketBase { } } + @Override public void handle(Supplier ctx) { ctx.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { if (Minecraft.getInstance().player.position().distanceTo(Vec3.atLowerCornerOf(mirror)) > 100) diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java index e70e7a36c..24346ff20 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java @@ -1,9 +1,7 @@ package com.simibubi.create.content.curiosities.toolbox; -import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.PlayerMainInvWrapper; /** diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java index 1e9f7db99..aac661c5e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.curiosities.toolbox; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; @@ -13,7 +13,7 @@ import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -public class ToolBoxInstance extends TileEntityInstance implements IDynamicInstance { +public class ToolBoxInstance extends BlockEntityInstance implements DynamicInstance { private final Direction facing; private ModelData lid; @@ -28,7 +28,7 @@ public class ToolBoxInstance extends TileEntityInstance imple @Override public void init() { - BlockState blockState = tile.getBlockState(); + BlockState blockState = blockEntity.getBlockState(); Instancer drawerModel = materialManager.defaultSolid() .material(Materials.TRANSFORMED) @@ -37,7 +37,7 @@ public class ToolBoxInstance extends TileEntityInstance imple drawers = new ModelData[]{drawerModel.createInstance(), drawerModel.createInstance()}; lid = materialManager.defaultCutout() .material(Materials.TRANSFORMED) - .getModel(AllBlockPartials.TOOLBOX_LIDS.get(tile.getColor()), blockState) + .getModel(AllBlockPartials.TOOLBOX_LIDS.get(blockEntity.getColor()), blockState) .createInstance(); } @@ -56,8 +56,8 @@ public class ToolBoxInstance extends TileEntityInstance imple float partialTicks = AnimationTickHolder.getPartialTicks(); - float lidAngle = tile.lid.getValue(partialTicks); - float drawerOffset = tile.drawers.getValue(partialTicks); + float lidAngle = blockEntity.lid.getValue(partialTicks); + float drawerOffset = blockEntity.drawers.getValue(partialTicks); lid.loadIdentity() .translate(instancePos) diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java index 005eb09aa..e80788d53 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java @@ -10,7 +10,6 @@ import java.util.Set; import java.util.UUID; import java.util.WeakHashMap; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -43,7 +42,7 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; -public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, Nameable, FlywheelRendered { +public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, Nameable { public LerpedFloat lid = LerpedFloat.linear() .startWithValue(0); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java index b45ff29da..43f97c05b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java @@ -7,8 +7,6 @@ import java.util.Optional; import javax.annotation.Nullable; -import net.minecraft.nbt.Tag; - import org.apache.commons.lang3.Validate; import com.simibubi.create.AllEntityTypes; @@ -28,6 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java index 231c6706a..9f0402373 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java @@ -8,8 +8,8 @@ import java.util.Map; import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.logistics.block.flap.FlapData; import com.simibubi.create.foundation.render.AllMaterialSpecs; @@ -19,7 +19,7 @@ import com.simibubi.create.foundation.utility.animation.InterpolatedValue; import net.minecraft.core.Direction; import net.minecraft.world.level.LightLayer; -public class BeltTunnelInstance extends TileEntityInstance implements IDynamicInstance { +public class BeltTunnelInstance extends BlockEntityInstance implements DynamicInstance { private final Map> tunnelFlaps; @@ -70,13 +70,13 @@ public class BeltTunnelInstance extends TileEntityInstance @Override public boolean shouldReset() { - return super.shouldReset() || tunnelFlaps.size() != tile.flaps.size(); + return super.shouldReset() || tunnelFlaps.size() != blockEntity.flaps.size(); } @Override public void beginFrame() { tunnelFlaps.forEach((direction, keys) -> { - InterpolatedValue flapValue = tile.flaps.get(direction); + InterpolatedValue flapValue = blockEntity.flaps.get(direction); if (flapValue == null) { return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java index 708853df2..f5f137b2b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java @@ -31,7 +31,7 @@ public class BeltTunnelRenderer extends SmartTileEntityRenderer flaps; public Set sides; @@ -175,11 +174,6 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements FlywheelRen flapsToSend.clear(); } - @Override - public boolean shouldRenderNormally() { - return true; - } - @Override public void addBehaviours(List behaviours) {} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java index dc484208d..1a37a1141 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.logistics.block.depot; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.util.Mth; -public class EjectorInstance extends ShaftInstance implements IDynamicInstance { +public class EjectorInstance extends ShaftInstance implements DynamicInstance { protected final EjectorTileEntity tile; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorRenderer.java index 868d1c668..9a60342e8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorRenderer.java @@ -47,7 +47,7 @@ public class EjectorRenderer extends KineticTileEntityRenderer { float lidProgress = ((EjectorTileEntity) te).getLidProgress(partialTicks); float angle = lidProgress * 70; - if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + if (!Backend.canUseInstancing(te.getLevel())) { SuperByteBuffer model = CachedBufferer.partial(AllBlockPartials.EJECTOR_TOP, te.getBlockState()); applyLidAngle(te, angle, model); model.light(light) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index 28e027107..7dc137587 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -576,11 +576,6 @@ public class EjectorTileEntity extends KineticTileEntity { return super.getCapability(cap, side); } - @Override - public boolean shouldRenderNormally() { - return true; - } - public float getLidProgress(float pt) { return lidProgress.getValue(pt); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java index 04ce9ca21..450726b17 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java @@ -1,14 +1,14 @@ package com.simibubi.create.content.logistics.block.diodes; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.ITickableInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.Color; -public class BrassDiodeInstance extends TileEntityInstance implements ITickableInstance { +public class BrassDiodeInstance extends BlockEntityInstance implements TickableInstance { protected final ModelData indicator; @@ -30,11 +30,11 @@ public class BrassDiodeInstance extends TileEntityInstance @Override public void tick() { - if (previousState == tile.state) return; + if (previousState == blockEntity.state) return; indicator.setColor(getColor()); - previousState = tile.state; + previousState = blockEntity.state; } @Override @@ -48,6 +48,6 @@ public class BrassDiodeInstance extends TileEntityInstance } protected int getColor() { - return Color.mixColors(0x2c0300, 0xcd0000, tile.getProgress()); + return Color.mixColors(0x2c0300, 0xcd0000, blockEntity.getProgress()); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java index 2a0e9e811..dfc2da4dc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java @@ -4,7 +4,6 @@ import static com.simibubi.create.content.logistics.block.diodes.BrassDiodeBlock import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; @@ -19,7 +18,7 @@ import net.minecraft.world.level.block.DiodeBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public abstract class BrassDiodeTileEntity extends SmartTileEntity implements FlywheelRendered { +public abstract class BrassDiodeTileEntity extends SmartTileEntity { protected int state; ScrollValueBehaviour maxState; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java index 2e2ebb44b..591f0160c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java @@ -4,6 +4,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.core.materials.FlatLit; import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; public class FlapData extends InstanceData implements FlatLit { @@ -42,18 +43,23 @@ public class FlapData extends InstanceData implements FlatLit { @Override public FlapData setBlockLight(int blockLight) { - this.blockLight = (byte) ((blockLight & 0xF) << 4); + this.blockLight = (byte) (blockLight & 0xF); markDirty(); return this; } @Override public FlapData setSkyLight(int skyLight) { - this.skyLight = (byte) ((skyLight & 0xF) << 4); + this.skyLight = (byte) (skyLight & 0xF); markDirty(); return this; } + @Override + public int getPackedLight() { + return LightTexture.pack(this.blockLight, this.skyLight); + } + public FlapData setSegmentOffset(float x, float y, float z) { this.segmentOffsetX = x; this.segmentOffsetY = y; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java index 9838d5708..1745d78db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java @@ -1,12 +1,11 @@ package com.simibubi.create.content.logistics.block.flap; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.core.layout.BufferLayout; +import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; @@ -19,7 +18,7 @@ public class FlapType implements Instanced, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.FLAP; } @@ -34,7 +33,27 @@ public class FlapType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public void transform(FlapData d, ModelTransformer.Params b) { + b.translate(d.x, d.y, d.z) + .centre() + .rotateY(-d.horizontalAngle) + .unCentre() + .translate(d.pivotX, d.pivotY, d.pivotZ) + .rotateX(getFlapAngle(d.flapness, d.intensity, d.flapScale)) + .translateBack(d.pivotX, d.pivotY, d.pivotZ) + .translate(d.segmentOffsetX, d.segmentOffsetY, d.segmentOffsetZ) + .light(d.getPackedLight()); + } + + private static float getFlapAngle(float flapness, float intensity, float scale) { + float absFlap = Math.abs(flapness); + + float angle = (float) (Math.sin((1. - absFlap) * Math.PI * intensity) * 30. * flapness * scale); + + if (flapness > 0) { + return angle * 0.5f; + } else { + return angle; + } } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java index f0ace42cc..345fde063 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java @@ -12,13 +12,13 @@ public class UnsafeFlapWriter extends UnsafeBufferWriter { } @Override - public void write(FlapData d) { + protected void writeInternal(FlapData d) { long addr = writePointer; MemoryUtil.memPutFloat(addr, d.x); MemoryUtil.memPutFloat(addr + 4, d.y); MemoryUtil.memPutFloat(addr + 8, d.z); - MemoryUtil.memPutByte(addr + 12, d.blockLight); - MemoryUtil.memPutByte(addr + 13, d.skyLight); + MemoryUtil.memPutByte(addr + 12, (byte) (d.blockLight << 4)); + MemoryUtil.memPutByte(addr + 13, (byte) (d.skyLight << 4)); MemoryUtil.memPutFloat(addr + 14, d.segmentOffsetX); MemoryUtil.memPutFloat(addr + 18, d.segmentOffsetY); MemoryUtil.memPutFloat(addr + 22, d.segmentOffsetZ); @@ -29,7 +29,5 @@ public class UnsafeFlapWriter extends UnsafeBufferWriter { MemoryUtil.memPutFloat(addr + 42, d.intensity); MemoryUtil.memPutFloat(addr + 46, d.flapScale); MemoryUtil.memPutFloat(addr + 50, d.flapness); - - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java index 83d36c1e6..b5fd82fd1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java @@ -5,8 +5,8 @@ import java.util.ArrayList; import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.logistics.block.flap.FlapData; @@ -16,7 +16,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.world.level.LightLayer; -public class FunnelInstance extends TileEntityInstance implements IDynamicInstance { +public class FunnelInstance extends BlockEntityInstance implements DynamicInstance { private final ArrayList flaps; @@ -65,7 +65,7 @@ public class FunnelInstance extends TileEntityInstance impleme public void beginFrame() { if (flaps == null) return; - float flapness = tile.flap.get(AnimationTickHolder.getPartialTicks()); + float flapness = blockEntity.flap.get(AnimationTickHolder.getPartialTicks()); for (FlapData flap : flaps) { flap.setFlapness(flapness); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java index 867930b9b..3a1d3cd76 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java @@ -30,7 +30,7 @@ public class FunnelRenderer extends SmartTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (!te.hasFlap() || Backend.getInstance().canUseInstancing(te.getLevel())) + if (!te.hasFlap() || Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index eadb7173e..dacf89d4f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.block.funnel; import java.lang.ref.WeakReference; import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; @@ -37,7 +36,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; -public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringInformation, FlywheelRendered { +public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringInformation { private FilteringBehaviour filtering; private InvManipulationBehaviour invManipulation; @@ -336,9 +335,4 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn .onFunnelTransfer(level, worldPosition, stack); } - @Override - public boolean shouldRenderNormally() { - return true; - } - } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java index 3d118c46c..2feb23b98 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java @@ -7,7 +7,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; @@ -24,7 +24,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -public class ArmInstance extends SingleRotatingInstance implements IDynamicInstance { +public class ArmInstance extends SingleRotatingInstance implements DynamicInstance { final ModelData base; final ModelData lowerBody; @@ -69,7 +69,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta @Override public void beginFrame() { - if (arm.phase == ArmTileEntity.Phase.DANCING && tile.getSpeed() != 0) { + if (arm.phase == ArmTileEntity.Phase.DANCING && blockEntity.getSpeed() != 0) { animateArm(true); firstRender = true; return; @@ -107,7 +107,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta int color; if (rave) { - float renderTick = AnimationTickHolder.getRenderTime(this.arm.getLevel()) + (tile.hashCode() % 64); + float renderTick = AnimationTickHolder.getRenderTime(this.arm.getLevel()) + (blockEntity.hashCode() % 64); baseAngle = (renderTick * 10) % 360; lowerArmAngle = Mth.lerp((Mth.sin(renderTick / 4) + 1) / 2, -45, 15); upperArmAngle = Mth.lerp((Mth.sin(renderTick / 8) + 1) / 4, -45, 95); @@ -172,7 +172,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta @Override protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.ARM_COG, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.ARM_COG, blockEntity.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java index bf6aa581c..c8212791f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java @@ -39,7 +39,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { ArmTileEntity arm = (ArmTileEntity) te; ItemStack item = arm.heldItem; boolean hasItem = !item.isEmpty(); - boolean usingFlywheel = Backend.getInstance().canUseInstancing(te.getLevel()); + boolean usingFlywheel = Backend.canUseInstancing(te.getLevel()); if (usingFlywheel && !hasItem) return; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index e6b97b32b..0d3ff0621 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -517,11 +517,6 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - private class SelectionModeValueBox extends CenteredSideValueBoxTransform { public SelectionModeValueBox() { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java index 7eb4a61fd..4195b9dde 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.logistics.block.redstone; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Translate; @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.Color; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.AttachFace; -public class AnalogLeverInstance extends TileEntityInstance implements IDynamicInstance { +public class AnalogLeverInstance extends BlockEntityInstance implements DynamicInstance { protected final ModelData handle; protected final ModelData indicator; @@ -42,12 +42,12 @@ public class AnalogLeverInstance extends TileEntityInstance FRAMED_GLASS = - framedGlass("framed_glass", new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)), + framedGlass("framed_glass", () -> new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)), HORIZONTAL_FRAMED_GLASS = framedGlass("horizontal_framed_glass", - new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)), + () -> new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)), VERTICAL_FRAMED_GLASS = - framedGlass("vertical_framed_glass", new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); + framedGlass("vertical_framed_glass", () -> new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); public static final BlockEntry TILED_GLASS_PANE = WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"), new ResourceLocation("block/glass_pane_top"), () -> RenderType::cutoutMipped); public static final BlockEntry FRAMED_GLASS_PANE = - framedGlassPane("framed_glass", FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS), + framedGlassPane("framed_glass", FRAMED_GLASS, () -> AllSpriteShifts.FRAMED_GLASS), HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS, - AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), + () -> AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), VERTICAL_FRAMED_GLASS_PANE = - framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, AllSpriteShifts.VERTICAL_FRAMED_GLASS); + framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, () -> AllSpriteShifts.VERTICAL_FRAMED_GLASS); public static final BlockEntry OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS), SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS), @@ -73,7 +73,7 @@ public class AllPaletteBlocks { CRIMSON_WINDOW = woodenWindowBlock(WoodType.CRIMSON, Blocks.CRIMSON_PLANKS), WARPED_WINDOW = woodenWindowBlock(WoodType.WARPED, Blocks.WARPED_PLANKS), ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", AllItems.ANDESITE_ALLOY, - AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); + () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); public static final BlockEntry OAK_WINDOW_PANE = woodenWindowPane(WoodType.OAK, OAK_WINDOW), @@ -85,7 +85,7 @@ public class AllPaletteBlocks { CRIMSON_WINDOW_PANE = woodenWindowPane(WoodType.CRIMSON, CRIMSON_WINDOW), WARPED_WINDOW_PANE = woodenWindowPane(WoodType.WARPED, WARPED_WINDOW), ORNATE_IRON_WINDOW_PANE = customWindowPane("ornate_iron_window", ORNATE_IRON_WINDOW, - AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); + () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); static { AllPaletteStoneTypes.register(REGISTRATE); diff --git a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java index 1524bf620..835a07c36 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java +++ b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.palettes; +import static com.simibubi.create.AllTags.pickaxeOnly; + import java.util.Arrays; import java.util.function.Supplier; @@ -31,8 +33,6 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraftforge.client.model.generators.ModelFile; -import static com.simibubi.create.AllTags.pickaxeOnly; - public abstract class PaletteBlockPartial { public static final PaletteBlockPartial STAIR = new Stairs(); diff --git a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java index 9c1ce95ea..64a483349 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java +++ b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java @@ -8,6 +8,7 @@ import static com.simibubi.create.content.palettes.PaletteBlockPattern.PatternNa import java.util.Optional; import java.util.function.Function; +import java.util.function.Supplier; import com.simibubi.create.Create; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; @@ -132,8 +133,8 @@ public class PaletteBlockPattern { .accept(c, p); } - public Optional createCTBehaviour(String variant) { - return ctFactory.map(d -> d.apply(variant)); + public Optional> createCTBehaviour(String variant) { + return ctFactory.map(d -> () -> d.apply(variant)); } // Builder @@ -153,24 +154,6 @@ public class PaletteBlockPattern { return this; } -// @SafeVarargs -// private final PaletteBlockPattern blockTags(Tag.Named... tags) { -// blockTags = tags; -// return this; -// } -// -// @SafeVarargs -// private final PaletteBlockPattern itemTags(Tag.Named... tags) { -// itemTags = tags; -// return this; -// } -// -// private PaletteBlockPattern addRecipes( -// NonNullFunction, NonNullBiConsumer, RegistrateRecipeProvider>> func) { -// this.additionalRecipes = func; -// return this; -// } - private PaletteBlockPattern connectedTextures(Function factory) { this.ctFactory = Optional.of(factory); return this; diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicChunkSource.java b/src/main/java/com/simibubi/create/content/schematics/SchematicChunkSource.java new file mode 100644 index 000000000..46db43d30 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicChunkSource.java @@ -0,0 +1,255 @@ +package com.simibubi.create.content.schematics; + +import java.util.List; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; + +import javax.annotation.Nullable; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.TagContainer; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkSource; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.entity.LevelEntityGetter; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.lighting.LevelLightEngine; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import net.minecraft.world.level.storage.WritableLevelData; +import net.minecraft.world.scores.Scoreboard; +import net.minecraft.world.ticks.BlackholeTickAccess; +import net.minecraft.world.ticks.LevelTickAccess; +import net.minecraftforge.fml.util.ObfuscationReflectionHelper; + +public class SchematicChunkSource extends ChunkSource { + private final Level fallbackWorld; + + public SchematicChunkSource(Level world) { + fallbackWorld = world; + } + + @Nullable + @Override + public BlockGetter getChunkForLighting(int x, int z) { + return getChunk(x, z); + } + + @Override + public Level getLevel() { + return fallbackWorld; + } + + @Nullable + @Override + public ChunkAccess getChunk(int x, int z, ChunkStatus status, boolean p_212849_4_) { + return getChunk(x, z); + } + + public ChunkAccess getChunk(int x, int z) { + return new EmptierChunk(fallbackWorld.registryAccess()); + } + + @Override + public String gatherStats() { + return "WrappedChunkProvider"; + } + + @Override + public LevelLightEngine getLightEngine() { + return fallbackWorld.getLightEngine(); + } + + @Override + public void tick(BooleanSupplier pHasTimeLeft) {} + + @Override + public int getLoadedChunksCount() { + return 0; + } + + public static class EmptierChunk extends LevelChunk { + + private static final class DummyLevel extends Level { + RegistryAccess access; + + private DummyLevel(WritableLevelData p_46450_, ResourceKey p_46451_, DimensionType p_46452_, + Supplier p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_) { + super(p_46450_, p_46451_, p_46452_, p_46453_, p_46454_, p_46455_, p_46456_); + } + + public Level withAccess(RegistryAccess access) { + this.access = access; + return this; + } + + @Override + public ChunkSource getChunkSource() { + return null; + } + + @Override + public void levelEvent(Player pPlayer, int pType, BlockPos pPos, int pData) {} + + @Override + public void gameEvent(Entity pEntity, GameEvent pEvent, BlockPos pPos) {} + + @Override + public RegistryAccess registryAccess() { + return access; + } + + @Override + public List players() { + return null; + } + + @Override + public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) { + return null; + } + + @Override + public float getShade(Direction pDirection, boolean pShade) { + return 0; + } + + @Override + public void sendBlockUpdated(BlockPos pPos, BlockState pOldState, BlockState pNewState, int pFlags) {} + + @Override + public void playSound(Player pPlayer, double pX, double pY, double pZ, SoundEvent pSound, SoundSource pCategory, + float pVolume, float pPitch) {} + + @Override + public void playSound(Player pPlayer, Entity pEntity, SoundEvent pEvent, SoundSource pCategory, float pVolume, + float pPitch) {} + + @Override + public String gatherChunkSourceStats() { + return null; + } + + @Override + public Entity getEntity(int pId) { + return null; + } + + @Override + public MapItemSavedData getMapData(String pMapName) { + return null; + } + + @Override + public void setMapData(String pMapId, MapItemSavedData pData) {} + + @Override + public int getFreeMapId() { + return 0; + } + + @Override + public void destroyBlockProgress(int pBreakerId, BlockPos pPos, int pProgress) {} + + @Override + public Scoreboard getScoreboard() { + return null; + } + + @Override + public RecipeManager getRecipeManager() { + return null; + } + + @Override + public TagContainer getTagManager() { + return null; + } + + @Override + protected LevelEntityGetter getEntities() { + return null; + } + + @Override + public LevelTickAccess getBlockTicks() { + return BlackholeTickAccess.emptyLevelList(); + } + + @Override + public LevelTickAccess getFluidTicks() { + return BlackholeTickAccess.emptyLevelList(); + } + } + + private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, + ObfuscationReflectionHelper.getPrivateValue(DimensionType.class, null, "f_63848_"), null, false, false, 0); + + public EmptierChunk(RegistryAccess registryAccess) { + super(DUMMY_LEVEL.withAccess(registryAccess), null); + } + + public BlockState getBlockState(BlockPos p_180495_1_) { + return Blocks.VOID_AIR.defaultBlockState(); + } + + @Nullable + public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { + return null; + } + + public FluidState getFluidState(BlockPos p_204610_1_) { + return Fluids.EMPTY.defaultFluidState(); + } + + public int getLightEmission(BlockPos p_217298_1_) { + return 0; + } + + @Nullable + public BlockEntity getBlockEntity(BlockPos p_177424_1_, EntityCreationType p_177424_2_) { + return null; + } + + public void addAndRegisterBlockEntity(BlockEntity p_150813_1_) {} + + public void setBlockEntity(BlockEntity p_177426_2_) {} + + public void removeBlockEntity(BlockPos p_177425_1_) {} + + public void markUnsaved() {} + + public boolean isEmpty() { + return true; + } + + public boolean isYSpaceEmpty(int p_76606_1_, int p_76606_2_) { + return true; + } + + public ChunkHolder.FullChunkStatus getFullStatus() { + return ChunkHolder.FullChunkStatus.BORDER; + } + } +} diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java index 80c7bc4d9..ec8cede76 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java @@ -10,7 +10,6 @@ import java.util.function.Predicate; import java.util.stream.Stream; import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedChunkProvider; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.core.BlockPos; @@ -45,7 +44,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor protected List renderedTileEntities; protected List entities; protected BoundingBox bounds; - + public BlockPos anchor; public boolean renderMode; @@ -54,12 +53,8 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor } public SchematicWorld(BlockPos anchor, Level original) { - this(anchor, original,new WrappedChunkProvider()); - } - - public SchematicWorld(BlockPos anchor, Level original, WrappedChunkProvider provider) { - super(original, provider); - provider.setFallbackWorld(this); + super(original); + setChunkSource(new SchematicChunkSource(this)); this.blocks = new HashMap<>(); this.tileEntities = new HashMap<>(); this.bounds = new BoundingBox(BlockPos.ZERO); @@ -149,12 +144,12 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor public int getBrightness(LightLayer p_226658_1_, BlockPos p_226658_2_) { return 10; } - + @Override public LevelTickAccess getBlockTicks() { return BlackholeTickAccess.emptyLevelList(); } - + @Override public LevelTickAccess getFluidTicks() { return BlackholeTickAccess.emptyLevelList(); @@ -170,7 +165,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor Predicate arg2) { return Collections.emptyList(); } - + @Override public List players() { return Collections.emptyList(); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java index afb25229c..fc68495df 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.schematics.block; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; -public class SchematicannonInstance extends TileEntityInstance implements IDynamicInstance { +public class SchematicannonInstance extends BlockEntityInstance implements DynamicInstance { private final ModelData connector; private final ModelData pipe; @@ -30,12 +30,12 @@ public class SchematicannonInstance extends TileEntityInstance NonNullUnaryOperator> encasedShaft(String casing, - CTSpriteShiftEntry casingShift) { + Supplier casingShift) { return builder -> encasedBase(builder, () -> AllBlocks.SHAFT.get()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift))) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(casingShift.get()))) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS)))) .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) @@ -64,24 +64,24 @@ public class BuilderTransformers { } public static NonNullUnaryOperator> encasedCogwheel( - String casing, CTSpriteShiftEntry casingShift) { + String casing, Supplier casingShift) { return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get(), false); } public static NonNullUnaryOperator> encasedLargeCogwheel( - String casing, CTSpriteShiftEntry casingShift) { + String casing, Supplier casingShift) { return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get(), true) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift))); + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(casingShift.get()))); } private static BlockBuilder encasedCogwheelBase(BlockBuilder b, - String casing, CTSpriteShiftEntry casingShift, Supplier drop, boolean large) { + String casing, Supplier casingShift, Supplier drop, boolean large) { String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : ""); String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel"; String wood = casing.equals("brass") ? "dark_oak" : "spruce"; return encasedBase(b, drop) .addLayer(() -> RenderType::cutoutMipped) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS) && !s.getValue(f.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT : EncasedCogwheelBlock.BOTTOM_SHAFT)))) @@ -138,12 +138,12 @@ public class BuilderTransformers { } public static NonNullUnaryOperator> casing( - CTSpriteShiftEntry ct) { + Supplier ct) { return b -> b.initialProperties(SharedProperties::stone) .transform(axeOrPickaxe()) .blockstate((c, p) -> p.simpleBlock(c.get())) - .onRegister(connectedTextures(new EncasedCTBehaviour(ct))) - .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct))) + .onRegister(connectedTextures(() -> new EncasedCTBehaviour(ct.get()))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct.get()))) .simpleItem(); } diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java index 1b047f821..f40420188 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java @@ -1,10 +1,13 @@ package com.simibubi.create.foundation.data; +import java.util.function.BiFunction; + import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; -import com.jozufozu.flywheel.backend.instancing.entity.IEntityInstanceFactory; +import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BuilderCallback; import com.tterrag.registrate.builders.EntityBuilder; @@ -15,6 +18,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.util.NonNullPredicate; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -22,7 +26,8 @@ import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; public class CreateEntityBuilder extends EntityBuilder { @Nullable - private NonNullSupplier> instanceFactory; + private NonNullSupplier>> instanceFactory; + private NonNullPredicate renderNormally; public static EntityBuilder create(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, EntityType.EntityFactory factory, MobCategory classification) { return (new CreateEntityBuilder<>(owner, parent, name, callback, factory, classification)).defaultLang(); @@ -32,23 +37,34 @@ public class CreateEntityBuilder extends EntityBuilder instance(NonNullSupplier> instanceFactory) { + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory) { + return instance(instanceFactory, true); + } + + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory, boolean renderNormally) { + return instance(instanceFactory, be -> true); + } + + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory, NonNullPredicate renderNormally) { if (this.instanceFactory == null) { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerInstance); } this.instanceFactory = instanceFactory; + this.renderNormally = renderNormally; return this; } protected void registerInstance() { OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { - NonNullSupplier> instanceFactory = this.instanceFactory; + NonNullSupplier>> instanceFactory = this.instanceFactory; if (instanceFactory != null) { - InstancedRenderRegistry.getInstance() - .entity(getEntry()) - .factory(instanceFactory.get()); + NonNullPredicate renderNormally = this.renderNormally; + InstancedRenderRegistry.configure(getEntry()) + .factory(instanceFactory.get()) + .skipRender(be -> !renderNormally.test(be)) + .apply(); } }); diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index df0b9d11b..f69cee7ce 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -33,6 +33,7 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -146,6 +147,10 @@ public class CreateRegistrate extends AbstractRegistrate { p.simpleBlock(c.get(), p.models() .cubeAll(c.getName(), p.modLoc(location))); }) + .tag(BlockTags.DRIPSTONE_REPLACEABLE) + .tag(BlockTags.AZALEA_ROOT_REPLACEABLE) + .tag(BlockTags.MOSS_REPLACEABLE) + .tag(BlockTags.LUSH_GROUND_REPLACEABLE) .item() .build(); return builder; @@ -184,7 +189,7 @@ public class CreateRegistrate extends AbstractRegistrate { /* Util */ - public static NonNullConsumer connectedTextures(ConnectedTextureBehaviour behavior) { + public static NonNullConsumer connectedTextures(Supplier behavior) { return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); } @@ -212,7 +217,8 @@ public class CreateRegistrate extends AbstractRegistrate { } @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, ConnectedTextureBehaviour behavior) { + private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); CreateClient.MODEL_SWAPPER.getCustomBlockModels() .register(entry.delegate, model -> new CTModel(model, behavior)); } diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java index bcdf77e80..d336936a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java @@ -1,9 +1,12 @@ package com.simibubi.create.foundation.data; +import java.util.function.BiFunction; + import javax.annotation.Nullable; +import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; -import com.jozufozu.flywheel.backend.instancing.tile.ITileInstanceFactory; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockEntityBuilder; import com.tterrag.registrate.builders.BuilderCallback; @@ -12,13 +15,15 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.util.NonNullPredicate; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; public class CreateTileEntityBuilder extends BlockEntityBuilder { @Nullable - private NonNullSupplier> instanceFactory; + private NonNullSupplier>> instanceFactory; + private NonNullPredicate renderNormally; public static BlockEntityBuilder create(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, BlockEntityFactory factory) { @@ -30,23 +35,34 @@ public class CreateTileEntityBuilder extends BlockEnti super(owner, parent, name, callback, factory); } - public CreateTileEntityBuilder instance(NonNullSupplier> instanceFactory) { + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory) { + return instance(instanceFactory, true); + } + + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, boolean renderNormally) { + return instance(instanceFactory, be -> renderNormally); + } + + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, NonNullPredicate renderNormally) { if (this.instanceFactory == null) { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerInstance); } this.instanceFactory = instanceFactory; + this.renderNormally = renderNormally; return this; } protected void registerInstance() { OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { - NonNullSupplier> instanceFactory = this.instanceFactory; + NonNullSupplier>> instanceFactory = this.instanceFactory; if (instanceFactory != null) { - InstancedRenderRegistry.getInstance() - .tile(getEntry()) - .factory(instanceFactory.get()); + NonNullPredicate renderNormally = this.renderNormally; + InstancedRenderRegistry.configure(getEntry()) + .factory(instanceFactory.get()) + .skipRender(be -> !renderNormally.test(be)) + .apply(); } }); } diff --git a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java index 2c5a4626b..86df5b333 100644 --- a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java @@ -65,7 +65,7 @@ public class WindowGen { } public static BlockEntry customWindowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType) { + Supplier ct, Supplier> renderType) { NonNullFunction end_texture = n -> Create.asResource(palettesDir() + name + "_end"); NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture); @@ -78,15 +78,15 @@ public class WindowGen { NonNullFunction end_texture = $ -> new ResourceLocation("block/" + woodName + "_planks"); NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); - return windowBlock(name, () -> planksBlock, AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, + return windowBlock(name, () -> planksBlock, () -> AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, side_texture); } public static BlockEntry windowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType, + Supplier ct, Supplier> renderType, NonNullFunction endTexture, NonNullFunction sideTexture) { return REGISTRATE.block(name, WindowBlock::new) - .onRegister(connectedTextures(new HorizontalCTBehaviour(ct))) + .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(ct.get()))) .addLayer(renderType) .recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get(), 2) .pattern(" # ") @@ -105,7 +105,7 @@ public class WindowGen { .register(); } - public static BlockEntry framedGlass(String name, ConnectedTextureBehaviour behaviour) { + public static BlockEntry framedGlass(String name, Supplier behaviour) { return REGISTRATE.block(name, ConnectedGlassBlock::new) .onRegister(connectedTextures(behaviour)) .addLayer(() -> RenderType::translucent) @@ -124,7 +124,7 @@ public class WindowGen { } public static BlockEntry framedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift) { + Supplier ctshift) { ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass"); ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name); ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); @@ -133,7 +133,7 @@ public class WindowGen { } public static BlockEntry customWindowPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, Supplier> renderType) { + Supplier ctshift, Supplier> renderType) { ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top"); ResourceLocation sideTexture = Create.asResource(palettesDir() + name); return connectedGlassPane(name, parent, ctshift, sideTexture, sideTexture, topTexture, renderType); @@ -150,7 +150,7 @@ public class WindowGen { String name = woodName + "_window"; ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks"); ResourceLocation sideTexture = Create.asResource(palettesDir() + name); - return connectedGlassPane(name, parent, AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, + return connectedGlassPane(name, parent, () -> AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, topTexture, renderType); } @@ -163,10 +163,10 @@ public class WindowGen { } private static BlockEntry connectedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture, + Supplier ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture, ResourceLocation topTexture, Supplier> renderType) { NonNullConsumer connectedTextures = - connectedTextures(new GlassPaneCTBehaviour(ctshift)); + connectedTextures(() -> new GlassPaneCTBehaviour(ctshift.get())); String CGPparents = "block/connected_glass_pane/"; String prefix = name + "_pane_"; diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java index 461a5a2b5..51050fd69 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java @@ -3,7 +3,7 @@ package com.simibubi.create.foundation.gui.element; import javax.annotation.Nullable; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.jozufozu.flywheel.core.virtual.VirtualEmptyModelData; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager.DestFactor; import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java index 2ae42930c..db8dddb0a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java +++ b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java @@ -1,33 +1,33 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.backend.gl.attrib.CommonAttributes; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; -import com.jozufozu.flywheel.core.Formats; +import com.jozufozu.flywheel.core.layout.BufferLayout; +import com.jozufozu.flywheel.core.layout.CommonItems; public class AllInstanceFormats { - public static VertexFormat ROTATING = kineticInstance() - .addAttributes(CommonAttributes.NORMAL) + public static BufferLayout ROTATING = kineticInstance() + .addItems(CommonItems.NORMAL) .build(); - public static VertexFormat BELT = kineticInstance() - .addAttributes(CommonAttributes.QUATERNION, CommonAttributes.UV, CommonAttributes.VEC4, - CommonAttributes.NORMALIZED_BYTE) + public static BufferLayout BELT = kineticInstance() + .addItems(CommonItems.QUATERNION, CommonItems.UV, CommonItems.VEC4, + CommonItems.NORMALIZED_BYTE) .build(); - public static VertexFormat ACTOR = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.FLOAT, - CommonAttributes.NORMAL, CommonAttributes.QUATERNION, CommonAttributes.NORMAL, - CommonAttributes.FLOAT) + public static BufferLayout ACTOR = BufferLayout.builder() + .addItems(CommonItems.VEC3, CommonItems.LIGHT, CommonItems.FLOAT, + CommonItems.NORMAL, CommonItems.QUATERNION, CommonItems.NORMAL, + CommonItems.FLOAT) .build(); - public static VertexFormat FLAP = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.VEC3, CommonAttributes.VEC3, - CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT) + public static BufferLayout FLAP = BufferLayout.builder() + .addItems(CommonItems.VEC3, CommonItems.LIGHT, CommonItems.VEC3, CommonItems.VEC3, + CommonItems.FLOAT, CommonItems.FLOAT, CommonItems.FLOAT, CommonItems.FLOAT) .build(); - private static VertexFormat.Builder kineticInstance() { - return Formats.litInstance() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.FLOAT, CommonAttributes.FLOAT); + private static BufferLayout.Builder kineticInstance() { + return BufferLayout.builder() + .addItems(CommonItems.LIGHT, CommonItems.RGBA) + .addItems(CommonItems.VEC3, CommonItems.FLOAT, CommonItems.FLOAT); } } diff --git a/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java b/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java index 9e4fd21cc..7aafc712b 100644 --- a/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java +++ b/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java @@ -1,12 +1,12 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.core.shader.spec.IBooleanStateProvider; +import com.jozufozu.flywheel.core.shader.spec.BooleanStateProvider; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.KineticDebugger; import net.minecraft.resources.ResourceLocation; -public class RainbowDebugStateProvider implements IBooleanStateProvider { +public class RainbowDebugStateProvider implements BooleanStateProvider { public static final RainbowDebugStateProvider INSTANCE = new RainbowDebugStateProvider(); public static final ResourceLocation NAME = Create.asResource("rainbow_debug"); diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java index dec20e4b0..6f47ade73 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -1,6 +1,8 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.util.BufferBuilderReader; +import com.jozufozu.flywheel.api.vertex.VertexList; +import com.jozufozu.flywheel.backend.OptifineHandler; +import com.jozufozu.flywheel.core.vertex.BlockVertexList; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Scale; import com.jozufozu.flywheel.util.transform.TStack; @@ -31,15 +33,14 @@ import net.minecraftforge.client.model.pipeline.LightUtil; public class SuperByteBuffer implements Scale, Translate, Rotate, TStack { - private final BufferBuilderReader template; + private final VertexList template; // Vertex Position - private PoseStack transforms; + private final PoseStack transforms; // Vertex Coloring private boolean shouldColor; private int r, g, b, a; - private boolean disableDiffuseDiv; private boolean disableDiffuseMult; // Vertex Texture Coords @@ -61,26 +62,13 @@ public class SuperByteBuffer implements Scale, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate LevelRenderer.getLightColor(world, pos)); } - @Override - public SuperByteBuffer scale(float factorX, float factorY, float factorZ) { - transforms.scale(factorX, factorY, factorZ); - return this; - } - - @Override - public SuperByteBuffer pushPose() { - transforms.pushPose(); - return this; - } - - @Override - public SuperByteBuffer popPose() { - transforms.popPose(); - return this; - } - @FunctionalInterface public interface SpriteShiftFunc { void shift(VertexConsumer builder, float u, float v); diff --git a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java index 2f50a7cfe..c6711962c 100644 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java @@ -6,6 +6,7 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; @@ -13,7 +14,6 @@ import com.mojang.math.Vector4f; import com.simibubi.create.Create; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; @@ -36,20 +36,20 @@ public class TileEntityRenderHelper { renderTileEntities(world, null, customRenderTEs, ms, null, buffer, pt); } - public static void renderTileEntities(Level world, @Nullable PlacementSimulationWorld renderWorld, + public static void renderTileEntities(Level world, @Nullable VirtualRenderWorld renderWorld, Iterable customRenderTEs, PoseStack ms, @Nullable Matrix4f lightTransform, MultiBufferSource buffer) { renderTileEntities(world, renderWorld, customRenderTEs, ms, lightTransform, buffer, AnimationTickHolder.getPartialTicks()); } - public static void renderTileEntities(Level world, @Nullable PlacementSimulationWorld renderWorld, + public static void renderTileEntities(Level world, @Nullable VirtualRenderWorld renderWorld, Iterable customRenderTEs, PoseStack ms, @Nullable Matrix4f lightTransform, MultiBufferSource buffer, float pt) { Iterator iterator = customRenderTEs.iterator(); while (iterator.hasNext()) { BlockEntity tileEntity = iterator.next(); - if (Backend.getInstance().canUseInstancing(renderWorld) && InstancedRenderRegistry.getInstance() - .shouldSkipRender(tileEntity)) continue; + if (Backend.canUseInstancing(renderWorld) && InstancedRenderRegistry.shouldSkipRender(tileEntity)) + continue; BlockEntityRenderer renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(tileEntity); if (renderer == null) { @@ -90,7 +90,7 @@ public class TileEntityRenderHelper { } } - public static int getCombinedLight(Level world, BlockPos worldPos, @Nullable PlacementSimulationWorld renderWorld, + public static int getCombinedLight(Level world, BlockPos worldPos, @Nullable VirtualRenderWorld renderWorld, BlockPos renderWorldPos) { int worldLight = LevelRenderer.getLightColor(world, worldPos); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java index 310bbeb6e..8ba1894ac 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java @@ -18,7 +18,7 @@ public abstract class ColoredOverlayTileEntityRenderer ex protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; SuperByteBuffer render = render(getOverlayBuffer(te), getColor(te, partialTicks), light); render.renderInto(ms, buffer.getBuffer(RenderType.solid())); diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java index 7cf0d0724..cd6087707 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java @@ -10,7 +10,7 @@ import javax.annotation.Nullable; import org.lwjgl.system.MemoryStack; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.jozufozu.flywheel.core.virtual.VirtualEmptyModelData; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java b/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java index 7e8a20b55..914189e25 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java @@ -7,6 +7,7 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; +import com.jozufozu.flywheel.repack.joml.Vector3i; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Pair; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java index d6dfda197..b54485931 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.utility.worldWrappers; +import javax.annotation.Nullable; + import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.ChunkStatus; @@ -10,7 +12,7 @@ public class DummyStatusListener implements ChunkProgressListener { public void updateSpawnPos(ChunkPos pCenter) {} @Override - public void onStatusChange(ChunkPos pChunkPosition, ChunkStatus pNewStatus) {} + public void onStatusChange(ChunkPos pChunkPosition, @Nullable ChunkStatus pNewStatus) {} @Override public void start() {} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java deleted file mode 100644 index e97ec1adc..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import com.jozufozu.flywheel.api.FlywheelWorld; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.SectionPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.lighting.LevelLightEngine; - -public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { - public Map blocksAdded; - public Map tesAdded; - - public Set spannedSections; - public LevelLightEngine lighter; - public WrappedChunkProvider chunkProvider; - private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); - - public PlacementSimulationWorld(Level wrapped) { - this(wrapped, new WrappedChunkProvider()); - } - - public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkProvider) { - super(wrapped, chunkProvider); - this.chunkProvider = chunkProvider.setPlacementWorld(this); - spannedSections = new HashSet<>(); - lighter = new LevelLightEngine(chunkProvider, true, false); // blockLight, skyLight - blocksAdded = new HashMap<>(); - tesAdded = new HashMap<>(); - } - - @Override - public LevelLightEngine getLightEngine() { - return lighter; - } - - public void updateLightSources() { - for (Map.Entry entry : blocksAdded.entrySet()) { - BlockPos pos = entry.getKey(); - BlockState state = entry.getValue(); - int light = state.getLightEmission(this, pos); - if (light > 0) { - lighter.onBlockEmissionIncrease(pos, light); - } - } - } - - public void setTileEntities(Collection tileEntities) { - tesAdded.clear(); - tileEntities.forEach(te -> tesAdded.put(te.getBlockPos(), te)); - } - - public void clear() { - blocksAdded.clear(); - } - - @Override - public boolean setBlock(BlockPos pos, BlockState newState, int flags) { - blocksAdded.put(pos, newState); - - SectionPos sectionPos = SectionPos.of(pos); - if (spannedSections.add(sectionPos)) { - lighter.updateSectionStatus(sectionPos, false); - } - - if ((flags & Block.UPDATE_SUPPRESS_LIGHT) == 0) { - lighter.checkBlock(pos); - } - - return true; - } - - @Override - public boolean setBlockAndUpdate(BlockPos pos, BlockState state) { - return setBlock(pos, state, 0); - } - - @Override - public BlockEntity getBlockEntity(BlockPos pos) { - return tesAdded.get(pos); - } - - @Override - public boolean isStateAtPosition(BlockPos pos, Predicate condition) { - return condition.test(getBlockState(pos)); - } - - @Override - public boolean isLoaded(BlockPos pos) { - return true; - } - - @Override - public boolean isAreaLoaded(BlockPos center, int range) { - return true; - } - - public BlockState getBlockState(int x, int y, int z) { - return getBlockState(scratch.set(x, y, z)); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - BlockState state = blocksAdded.get(pos); - if (state != null) - return state; - return Blocks.AIR.defaultBlockState(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java index 20a7a9f5f..cc6d567c0 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java @@ -11,8 +11,8 @@ import net.minecraft.world.level.material.FluidState; public class RayTraceWorld implements BlockGetter { - private LevelAccessor template; - private BiFunction stateGetter; + private final LevelAccessor template; + private final BiFunction stateGetter; public RayTraceWorld(LevelAccessor template, BiFunction stateGetter) { this.template = template; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java deleted file mode 100644 index 9b82e8c21..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.BooleanSupplier; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.chunk.EmptierChunk; -import com.simibubi.create.foundation.utility.worldWrappers.chunk.WrappedChunk; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkSource; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.lighting.LevelLightEngine; - -public class WrappedChunkProvider extends ChunkSource { - private PlacementSimulationWorld world; - private Level fallbackWorld; - - public HashMap chunks; - - public WrappedChunkProvider setFallbackWorld(Level world) { - fallbackWorld = world; - return this; - } - - public WrappedChunkProvider setPlacementWorld(PlacementSimulationWorld world) { - fallbackWorld = this.world = world; - this.chunks = new HashMap<>(); - return this; - } - - public Stream getLightSources() { - return world.blocksAdded.entrySet() - .stream() - .filter(it -> it.getValue() - .getLightEmission(world, it.getKey()) != 0) - .map(Map.Entry::getKey); - } - - @Nullable - @Override - public BlockGetter getChunkForLighting(int x, int z) { - return getChunk(x, z); - } - - @Override - public Level getLevel() { - return fallbackWorld; - } - - @Nullable - @Override - public ChunkAccess getChunk(int x, int z, ChunkStatus status, boolean p_212849_4_) { - return getChunk(x, z); - } - - public ChunkAccess getChunk(int x, int z) { - long pos = ChunkPos.asLong(x, z); - - if (chunks == null) - return new EmptierChunk(fallbackWorld.registryAccess()); - - return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z)); - } - - @Override - public String gatherStats() { - return "WrappedChunkProvider"; - } - - @Override - public LevelLightEngine getLightEngine() { - return world.getLightEngine(); - } - - @Override - public void tick(BooleanSupplier pHasTimeLeft) {} - - @Override - public int getLoadedChunksCount() { - return 0; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index fe405971a..e27910d2e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -5,12 +5,11 @@ import java.util.List; import java.util.function.Predicate; import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.SectionPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.TagContainer; @@ -32,24 +31,21 @@ import net.minecraft.world.level.storage.WritableLevelData; import net.minecraft.world.scores.Scoreboard; import net.minecraft.world.ticks.LevelTickAccess; -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault public class WrappedWorld extends Level { protected Level world; - protected ChunkSource provider; + protected ChunkSource chunkSource; protected LevelEntityGetter entityGetter = new DummyLevelEntityGetter<>(); - public WrappedWorld(Level world, ChunkSource provider) { + public WrappedWorld(Level world) { super((WritableLevelData) world.getLevelData(), world.dimension(), world.dimensionType(), world::getProfiler, world.isClientSide, world.isDebug(), 0); this.world = world; - this.provider = provider; } - public WrappedWorld(Level world) { - this(world, null); + public void setChunkSource(ChunkSource source) { + this.chunkSource = source; } public Level getLevel() { @@ -67,17 +63,18 @@ public class WrappedWorld extends Level { } @Override - public boolean isStateAtPosition(@Nullable BlockPos p_217375_1_, @Nullable Predicate p_217375_2_) { + public boolean isStateAtPosition(BlockPos p_217375_1_, Predicate p_217375_2_) { return world.isStateAtPosition(p_217375_1_, p_217375_2_); } @Override - public BlockEntity getBlockEntity(@Nullable BlockPos pos) { + @Nullable + public BlockEntity getBlockEntity(BlockPos pos) { return world.getBlockEntity(pos); } @Override - public boolean setBlock(@Nullable BlockPos pos, @Nullable BlockState newState, int flags) { + public boolean setBlock(BlockPos pos, BlockState newState, int flags) { return world.setBlock(pos, newState, flags); } @@ -95,7 +92,7 @@ public class WrappedWorld extends Level { public LevelTickAccess getBlockTicks() { return world.getBlockTicks(); } - + @Override public LevelTickAccess getFluidTicks() { return world.getFluidTicks(); @@ -103,7 +100,7 @@ public class WrappedWorld extends Level { @Override public ChunkSource getChunkSource() { - return provider; + return chunkSource != null ? chunkSource : world.getChunkSource(); } @Override @@ -202,4 +199,54 @@ public class WrappedWorld extends Level { protected LevelEntityGetter getEntities() { return entityGetter; } + + // Intentionally copied from LevelHeightAccessor. Workaround for issues caused when other mods (such as Lithium) + // override the vanilla implementations in ways which cause WrappedWorlds to return incorrect, default height info. + // WrappedWorld subclasses should implement their own getMinBuildHeight and getHeight overrides where they deviate + // from the defaults for their dimension. + + @Override + public int getMaxBuildHeight() { + return this.getMinBuildHeight() + this.getHeight(); + } + + @Override + public int getSectionsCount() { + return this.getMaxSection() - this.getMinSection(); + } + + @Override + public int getMinSection() { + return SectionPos.blockToSectionCoord(this.getMinBuildHeight()); + } + + @Override + public int getMaxSection() { + return SectionPos.blockToSectionCoord(this.getMaxBuildHeight() - 1) + 1; + } + + @Override + public boolean isOutsideBuildHeight(BlockPos pos) { + return this.isOutsideBuildHeight(pos.getY()); + } + + @Override + public boolean isOutsideBuildHeight(int y) { + return y < this.getMinBuildHeight() || y >= this.getMaxBuildHeight(); + } + + @Override + public int getSectionIndex(int y) { + return this.getSectionIndexFromSectionY(SectionPos.blockToSectionCoord(y)); + } + + @Override + public int getSectionIndexFromSectionY(int sectionY) { + return sectionY - this.getMinSection(); + } + + @Override + public int getSectionYFromSectionIndex(int sectionIndex) { + return sectionIndex + this.getMinSection(); + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java deleted file mode 100644 index a800298e9..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import java.util.List; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; -import net.minecraft.server.level.ChunkHolder; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.TagContainer; -import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.ChunkSource; -import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.entity.LevelEntityGetter; -import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; -import net.minecraft.world.level.storage.WritableLevelData; -import net.minecraft.world.scores.Scoreboard; -import net.minecraft.world.ticks.BlackholeTickAccess; -import net.minecraft.world.ticks.LevelTickAccess; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; - -public class EmptierChunk extends LevelChunk { - - private static final class DummyLevel extends Level { - RegistryAccess access; - - private DummyLevel(WritableLevelData p_46450_, ResourceKey p_46451_, DimensionType p_46452_, - Supplier p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_) { - super(p_46450_, p_46451_, p_46452_, p_46453_, p_46454_, p_46455_, p_46456_); - } - - public Level withAccess(RegistryAccess access) { - this.access = access; - return this; - } - - @Override - public ChunkSource getChunkSource() { - return null; - } - - @Override - public void levelEvent(Player pPlayer, int pType, BlockPos pPos, int pData) {} - - @Override - public void gameEvent(Entity pEntity, GameEvent pEvent, BlockPos pPos) {} - - @Override - public RegistryAccess registryAccess() { - return access; - } - - @Override - public List players() { - return null; - } - - @Override - public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) { - return null; - } - - @Override - public float getShade(Direction pDirection, boolean pShade) { - return 0; - } - - @Override - public void sendBlockUpdated(BlockPos pPos, BlockState pOldState, BlockState pNewState, int pFlags) {} - - @Override - public void playSound(Player pPlayer, double pX, double pY, double pZ, SoundEvent pSound, SoundSource pCategory, - float pVolume, float pPitch) {} - - @Override - public void playSound(Player pPlayer, Entity pEntity, SoundEvent pEvent, SoundSource pCategory, float pVolume, - float pPitch) {} - - @Override - public String gatherChunkSourceStats() { - return null; - } - - @Override - public Entity getEntity(int pId) { - return null; - } - - @Override - public MapItemSavedData getMapData(String pMapName) { - return null; - } - - @Override - public void setMapData(String pMapId, MapItemSavedData pData) {} - - @Override - public int getFreeMapId() { - return 0; - } - - @Override - public void destroyBlockProgress(int pBreakerId, BlockPos pPos, int pProgress) {} - - @Override - public Scoreboard getScoreboard() { - return null; - } - - @Override - public RecipeManager getRecipeManager() { - return null; - } - - @Override - public TagContainer getTagManager() { - return null; - } - - @Override - protected LevelEntityGetter getEntities() { - return null; - } - - @Override - public LevelTickAccess getBlockTicks() { - return BlackholeTickAccess.emptyLevelList(); - } - - @Override - public LevelTickAccess getFluidTicks() { - return BlackholeTickAccess.emptyLevelList(); - } - } - - private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, - ObfuscationReflectionHelper.getPrivateValue(DimensionType.class, null, "f_63848_"), null, false, false, 0); - - public EmptierChunk(RegistryAccess registryAccess) { - super(DUMMY_LEVEL.withAccess(registryAccess), null); - } - - public BlockState getBlockState(BlockPos p_180495_1_) { - return Blocks.VOID_AIR.defaultBlockState(); - } - - @Nullable - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - public FluidState getFluidState(BlockPos p_204610_1_) { - return Fluids.EMPTY.defaultFluidState(); - } - - public int getLightEmission(BlockPos p_217298_1_) { - return 0; - } - - @Nullable - public BlockEntity getBlockEntity(BlockPos p_177424_1_, LevelChunk.EntityCreationType p_177424_2_) { - return null; - } - - public void addAndRegisterBlockEntity(BlockEntity p_150813_1_) {} - - public void setBlockEntity(BlockEntity p_177426_2_) {} - - public void removeBlockEntity(BlockPos p_177425_1_) {} - - public void markUnsaved() {} - - public boolean isEmpty() { - return true; - } - - public boolean isYSpaceEmpty(int p_76606_1_, int p_76606_2_) { - return true; - } - - public ChunkHolder.FullChunkStatus getFullStatus() { - return ChunkHolder.FullChunkStatus.BORDER; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java deleted file mode 100644 index fbca9d03b..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import it.unimi.dsi.fastutil.longs.LongSet; -import it.unimi.dsi.fastutil.shorts.ShortList; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Registry; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.chunk.UpgradeData; -import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraft.world.level.levelgen.feature.StructureFeature; -import net.minecraft.world.level.levelgen.structure.StructureStart; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.ticks.BlackholeTickAccess; -import net.minecraft.world.ticks.TickContainerAccess; - -public class WrappedChunk extends ChunkAccess { - - final PlacementSimulationWorld world; - boolean needsLight; - final int x; - final int z; - - private final LevelChunkSection[] sections; - - public WrappedChunk(PlacementSimulationWorld world, int x, int z) { - super(new ChunkPos(x, z), UpgradeData.EMPTY, world, world.registryAccess() - .registry(Registry.BIOME_REGISTRY) - .orElseThrow(), 0L, null, null); - - this.world = world; - this.needsLight = true; - this.x = x; - this.z = z; - - this.sections = new LevelChunkSection[16]; - - for (int i = 0; i < 16; i++) { - sections[i] = new WrappedChunkSection(this, i << 4); - } - } - - @Override - public Stream getLights() { - return world.blocksAdded.entrySet() - .stream() - .filter(it -> { - BlockPos blockPos = it.getKey(); - boolean chunkContains = blockPos.getX() >> 4 == x && blockPos.getZ() >> 4 == z; - return chunkContains && it.getValue() - .getLightEmission(world, blockPos) != 0; - }) - .map(Map.Entry::getKey); - } - - @Override - public LevelChunkSection[] getSections() { - return sections; - } - - @Override - public ChunkStatus getStatus() { - return ChunkStatus.LIGHT; - } - - @Nullable - @Override - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - @Override - public void setBlockEntity(BlockEntity p_177426_2_) {} - - @Override - public void addEntity(Entity p_76612_1_) {} - - @Override - public Set getBlockEntitiesPos() { - return null; - } - - @Override - public Collection> getHeightmaps() { - return null; - } - - @Override - public void setHeightmap(Heightmap.Types p_201607_1_, long[] p_201607_2_) {} - - @Override - public Heightmap getOrCreateHeightmapUnprimed(Heightmap.Types p_217303_1_) { - return null; - } - - @Override - public int getHeight(Heightmap.Types p_201576_1_, int p_201576_2_, int p_201576_3_) { - return 0; - } - - @Override - public void setUnsaved(boolean p_177427_1_) {} - - @Override - public boolean isUnsaved() { - return false; - } - - @Override - public void removeBlockEntity(BlockPos p_177425_1_) {} - - @Override - public ShortList[] getPostProcessing() { - return new ShortList[0]; - } - - @Nullable - @Override - public CompoundTag getBlockEntityNbt(BlockPos p_201579_1_) { - return null; - } - - @Nullable - @Override - public CompoundTag getBlockEntityNbtForSaving(BlockPos p_223134_1_) { - return null; - } - - @Override - public UpgradeData getUpgradeData() { - return null; - } - - @Override - public void setInhabitedTime(long p_177415_1_) {} - - @Override - public long getInhabitedTime() { - return 0; - } - - @Override - public boolean isLightCorrect() { - return needsLight; - } - - @Override - public void setLightCorrect(boolean needsLight) { - this.needsLight = needsLight; - } - - @Nullable - @Override - public BlockEntity getBlockEntity(BlockPos pos) { - return null; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - return world.getBlockState(pos); - } - - @Override - public FluidState getFluidState(BlockPos p_204610_1_) { - return null; - } - - @Override - public void addReferenceForFeature(StructureFeature arg0, long arg1) {} - - @Override - public Map, LongSet> getAllReferences() { - return null; - } - - @Override - public LongSet getReferencesForFeature(StructureFeature arg0) { - return null; - } - - @Override - public StructureStart getStartForFeature(StructureFeature arg0) { - return null; - } - - @Override - public void setAllReferences(Map, LongSet> arg0) {} - - @Override - public void setStartForFeature(StructureFeature arg0, StructureStart arg1) {} - - @Override - public void setAllStarts(Map, StructureStart> p_201612_1_) {} - - @Override - public Map, StructureStart> getAllStarts() { - return null; - } - - @Override - public int getHeight() { - return world.getHeight(); - } - - @Override - public int getMinBuildHeight() { - return world.getMinBuildHeight(); - } - - @Override - public TickContainerAccess getFluidTicks() { - return BlackholeTickAccess.emptyContainer(); - } - - @Override - public TicksToSave getTicksForSerialization() { - return null; - } - - @Override - public TickContainerAccess getBlockTicks() { - return BlackholeTickAccess.emptyContainer(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java deleted file mode 100644 index 6478ba4ee..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import net.minecraft.core.Registry; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunkSection; - -public class WrappedChunkSection extends LevelChunkSection { - - public WrappedChunk owner; - - public final int xStart; - public final int yStart; - public final int zStart; - - public WrappedChunkSection(WrappedChunk owner, int yBase) { - super(yBase, owner.world.registryAccess() - .registry(Registry.BIOME_REGISTRY) - .orElseThrow()); - this.owner = owner; - this.xStart = owner.getPos() - .getMinBlockX(); - this.yStart = yBase; - this.zStart = owner.getPos() - .getMinBlockZ(); - } - - @Override - public BlockState getBlockState(int x, int y, int z) { - // ChunkSection#getBlockState expects local chunk coordinates, so we add to get - // back into world coords. - return owner.world.getBlockState(x + xStart, y + yStart, z + zStart); - } - - @Override - public BlockState setBlockState(int p_177484_1_, int p_177484_2_, int p_177484_3_, BlockState p_177484_4_, - boolean p_177484_5_) { - throw new IllegalStateException("Chunk sections should not be mutated in a fake world."); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java new file mode 100644 index 000000000..87851a339 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault +package com.simibubi.create.foundation.utility.worldWrappers; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 1e0a18730..31637418c 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -5,7 +5,7 @@ license="MIT" [[mods]] modId="create" -version="0.4a" +version="0.4b" displayName="Create" #updateJSONURL="" displayURL="https://www.curseforge.com/minecraft/mc-mods/create" @@ -32,6 +32,6 @@ Technology that empowers the player.''' [[dependencies.create]] modId="flywheel" mandatory=true - versionRange="[1.18-0.4.0,1.18-0.4.2)" + versionRange="[1.18-0.5.1,1.18-0.5.2)" ordering="AFTER" side="BOTH" diff --git a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert index 66db67682..df222953e 100644 --- a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert +++ b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert @@ -5,10 +5,10 @@ struct Vertex { vec3 pos; - vec3 normal; - vec2 texCoords; vec4 color; + vec2 texCoords; vec2 modelLight; + vec3 normal; }; #use "flywheel:block.frag" @@ -29,7 +29,7 @@ BlockFrag vertex(Vertex v) { #if defined(DEBUG_NORMAL) b.color = vec4(norm, 1.); #else - b.color = vec4(v.color.rgb / diffuse(v.normal), v.color.a); + b.color = v.color; #endif return b; diff --git a/src/main/resources/assets/create/flywheel/shaders/flap.vert b/src/main/resources/assets/create/flywheel/shaders/flap.vert index 721be4ed1..5aefc4131 100644 --- a/src/main/resources/assets/create/flywheel/shaders/flap.vert +++ b/src/main/resources/assets/create/flywheel/shaders/flap.vert @@ -31,8 +31,8 @@ float getFlapAngle(float flapness, float intensity, float scale) { float halfAngle = angle * 0.5; - float which = step(0., flapness);// 0 if negative, 1 if positive - float degrees = which * halfAngle + (1. - which) * angle;// branchless conditional multiply + float which = step(0., flapness); // 0 if negative, 1 if positive + float degrees = which * halfAngle + (1. - which) * angle; // branchless conditional multiply return degrees; } diff --git a/src/main/resources/assets/create/lang/Localization Readme.txt b/src/main/resources/assets/create/lang/Localization Readme.txt index c573cbded..a34e557c3 100644 --- a/src/main/resources/assets/create/lang/Localization Readme.txt +++ b/src/main/resources/assets/create/lang/Localization Readme.txt @@ -4,7 +4,7 @@ Looking to contribute with a localization? Here's how: 1. Check if your language is already present in an outdated state: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/unfinished +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/generated/resources/assets/create/lang/unfinished Shows generated lang files that are composed of any old translation file in the official lang folder as well as placeholder entries of new content added since. NOTICE: this is not the true lang folder, changes to the files in that directory will be lost as they are auto-generated templates. @@ -18,7 +18,7 @@ If your locale is present here, copy the file, and translate all entries that re If you couldn't find a started translation in the previous step: Grab a copy of the full standard localization file here: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/en_us.json +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/generated/resources/assets/create/lang/en_us.json Rename your copied file to the locale it is targeting, and start making your translations by replacing the english text. Once you are finished, continue with step 3. @@ -27,7 +27,7 @@ https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resou 3. Publishing your changes Any lang file you created or changed belongs into this folder: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/main/resources/assets/create/lang +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/main/resources/assets/create/lang This is the lang folder you found this readme in. You can either open a pull request inserting your file for us, or get in contact on the feedback & help channel linked on Create's project page (CurseForge). NOTICE: when making PRs, always target the main branch unless your changes are exclusive to a different version of minecraft than the one the main branch is on. diff --git a/src/main/resources/assets/create/lang/ja_jp.json b/src/main/resources/assets/create/lang/ja_jp.json index c6a3c482c..03ce7fa24 100644 --- a/src/main/resources/assets/create/lang/ja_jp.json +++ b/src/main/resources/assets/create/lang/ja_jp.json @@ -4,30 +4,23 @@ "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓板", + "block.create.acacia_window_pane": "アカシアの板窓", "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", - "block.create.adjustable_crate": "可変クレート", - "block.create.adjustable_pulse_repeater": "可変パルスリピーター", - "block.create.adjustable_repeater": "可変リピーター", "block.create.analog_lever": "アナログレバー", - "block.create.andesite_belt_funnel": "安山岩のベルトファンネル", - "block.create.andesite_bricks": "安山岩レンガ", - "block.create.andesite_bricks_slab": "安山岩レンガのハーフブロック", - "block.create.andesite_bricks_stairs": "安山岩レンガの階段", - "block.create.andesite_bricks_wall": "安山岩レンガの塀", + "block.create.andesite_belt_funnel": "安山岩ベルトファンネル", "block.create.andesite_casing": "安山岩ケーシング", - "block.create.andesite_cobblestone": "安山岩の丸石", - "block.create.andesite_cobblestone_slab": "安山岩の丸石のハーフブロック", - "block.create.andesite_cobblestone_stairs": "安山岩の丸石の階段", - "block.create.andesite_cobblestone_wall": "安山岩の丸石の塀", - "block.create.andesite_encased_shaft": "安山岩のケース入りシャフト", + "block.create.andesite_encased_cogwheel": "安山岩ケース入り歯車", + "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", + "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", "block.create.andesite_pillar": "安山岩の柱", "block.create.andesite_tunnel": "安山岩トンネル", + "block.create.asurine": "瑠璃岩", + "block.create.asurine_pillar": "瑠璃岩の柱", "block.create.basin": "鉢", "block.create.belt": "メカニカルベルト", "block.create.birch_window": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓板", + "block.create.birch_window_pane": "シラカバの板窓", "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", @@ -39,10 +32,12 @@ "block.create.blue_seat": "青色のシート", "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", + "block.create.brass_belt_funnel": "真鍮ベルトファンネル", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", - "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", + "block.create.brass_encased_cogwheel": "真鍮ケース入り歯車", + "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", + "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", @@ -50,13 +45,8 @@ "block.create.brown_seat": "茶色のシート", "block.create.brown_toolbox": "茶色の工具箱", "block.create.brown_valve_handle": "茶色のバルブハンドル", + "block.create.calcite_pillar": "方解石の柱", "block.create.cart_assembler": "トロッコアセンブラ", - "block.create.chiseled_dark_scoria": "模様入りのダークスコリア", - "block.create.chiseled_dolomite": "模様入りの苦灰岩", - "block.create.chiseled_gabbro": "模様入りの斑れい岩", - "block.create.chiseled_limestone": "模様入りの石灰岩", - "block.create.chiseled_scoria": "模様入りのスコリア", - "block.create.chiseled_weathered_limestone": "模様入りの風化した石灰岩", "block.create.chocolate": "チョコレート", "block.create.chute": "シュート", "block.create.clockwork_bearing": "時計仕掛けのベアリング", @@ -65,127 +55,170 @@ "block.create.content_observer": "コンテンツオブザーバー", "block.create.controller_rail": "コントローラーレール", "block.create.copper_backtank": "銅のバックタンク", - "block.create.copper_block": "銅ブロック", "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ore": "銅鉱石", + "block.create.copper_shingle_slab": "銅の屋根板のハーフブロック", + "block.create.copper_shingle_stairs": "銅の屋根板の階段", "block.create.copper_shingles": "銅の屋根板", + "block.create.copper_tile_slab": "銅タイルのハーフブロック", + "block.create.copper_tile_stairs": "銅タイルの階段", "block.create.copper_tiles": "銅のタイル", "block.create.copper_valve_handle": "銅のバルブハンドル", "block.create.creative_crate": "クリエティブクレート", "block.create.creative_fluid_tank": "クリエイティブ液体タンク", "block.create.creative_motor": "クリエイティブモーター", + "block.create.crimsite": "真紅岩", + "block.create.crimsite_pillar": "真紅岩の柱", "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓板", + "block.create.crimson_window_pane": "真紅の板窓", "block.create.crushing_wheel": "破砕ホイール", "block.create.crushing_wheel_controller": "破砕ホイールコントローラー", "block.create.cuckoo_clock": "鳩時計", + "block.create.cut_andesite": "安山岩の切石", + "block.create.cut_andesite_brick_slab": "安山岩の切石レンガのハーフブロック", + "block.create.cut_andesite_brick_stairs": "安山岩の切石レンガの階段", + "block.create.cut_andesite_brick_wall": "安山岩の切石レンガの塀", + "block.create.cut_andesite_bricks": "安山岩の切石レンガ", + "block.create.cut_andesite_slab": "安山岩の切石のハーフブロック", + "block.create.cut_andesite_stairs": "安山岩の切石の階段", + "block.create.cut_andesite_wall": "安山岩の切石の塀", + "block.create.cut_asurine": "瑠璃岩の切石", + "block.create.cut_asurine_brick_slab": "瑠璃岩の切石レンガのハーフブロック", + "block.create.cut_asurine_brick_stairs": "瑠璃岩の切石レンガの階段", + "block.create.cut_asurine_brick_wall": "瑠璃岩の切石レンガの塀", + "block.create.cut_asurine_bricks": "瑠璃岩の切石レンガ", + "block.create.cut_asurine_slab": "瑠璃岩の切石のハーフブロック", + "block.create.cut_asurine_stairs": "瑠璃岩の切石の階段", + "block.create.cut_asurine_wall": "瑠璃岩の切石の塀", + "block.create.cut_calcite": "方解石の切石", + "block.create.cut_calcite_brick_slab": "方解石の切石レンガのハーフブロック", + "block.create.cut_calcite_brick_stairs": "方解石の切石レンガの階段", + "block.create.cut_calcite_brick_wall": "方解石の切石レンガの塀", + "block.create.cut_calcite_bricks": "方解石の切石レンガ", + "block.create.cut_calcite_slab": "方解石の切石のハーフブロック", + "block.create.cut_calcite_stairs": "方解石の切石の階段", + "block.create.cut_calcite_wall": "方解石の切石の塀", + "block.create.cut_crimsite": "真紅岩の切石", + "block.create.cut_crimsite_brick_slab": "真紅岩の切石レンガのハーフブロック", + "block.create.cut_crimsite_brick_stairs": "真紅岩の切石レンガの階段", + "block.create.cut_crimsite_brick_wall": "真紅岩の切石レンガの塀", + "block.create.cut_crimsite_bricks": "真紅岩の切石レンガ", + "block.create.cut_crimsite_slab": "真紅岩の切石のハーフブロック", + "block.create.cut_crimsite_stairs": "真紅岩の切石の階段", + "block.create.cut_crimsite_wall": "真紅岩の切石の塀", + "block.create.cut_deepslate": "深層岩の切石", + "block.create.cut_deepslate_brick_slab": "深層岩の切石レンガのハーフブロック", + "block.create.cut_deepslate_brick_stairs": "深層岩の切石レンガの階段", + "block.create.cut_deepslate_brick_wall": "深層岩の切石レンガの塀", + "block.create.cut_deepslate_bricks": "深層岩の切石レンガ", + "block.create.cut_deepslate_slab": "深層岩の切石のハーフブロック", + "block.create.cut_deepslate_stairs": "深層岩の切石の階段", + "block.create.cut_deepslate_wall": "深層岩の切石の塀", + "block.create.cut_diorite": "閃緑岩の切石", + "block.create.cut_diorite_brick_slab": "閃緑岩の切石レンガのハーフブロック", + "block.create.cut_diorite_brick_stairs": "閃緑岩の切石レンガの階段", + "block.create.cut_diorite_brick_wall": "閃緑岩の切石レンガの塀", + "block.create.cut_diorite_bricks": "閃緑岩の切石レンガ", + "block.create.cut_diorite_slab": "閃緑岩の切石のハーフブロック", + "block.create.cut_diorite_stairs": "閃緑岩の切石の階段", + "block.create.cut_diorite_wall": "閃緑岩の切石の塀", + "block.create.cut_dripstone": "鍾乳石の切石", + "block.create.cut_dripstone_brick_slab": "鍾乳石の切石レンガのハーフブロック", + "block.create.cut_dripstone_brick_stairs": "鍾乳石の切石レンガの階段", + "block.create.cut_dripstone_brick_wall": "鍾乳石の切石レンガの塀", + "block.create.cut_dripstone_bricks": "鍾乳石の切石レンガ", + "block.create.cut_dripstone_slab": "鍾乳石の切石のハーフブロック", + "block.create.cut_dripstone_stairs": "鍾乳石の切石の階段", + "block.create.cut_dripstone_wall": "鍾乳石の切石の塀", + "block.create.cut_granite": "花崗岩の切石", + "block.create.cut_granite_brick_slab": "花崗岩の切石レンガのハーフブロック", + "block.create.cut_granite_brick_stairs": "花崗岩の切石レンガの階段", + "block.create.cut_granite_brick_wall": "花崗岩の切石レンガの塀", + "block.create.cut_granite_bricks": "花崗岩の切石レンガ", + "block.create.cut_granite_slab": "花崗岩の切石のハーフブロック", + "block.create.cut_granite_stairs": "花崗岩の切石の階段", + "block.create.cut_granite_wall": "花崗岩の切石の塀", + "block.create.cut_limestone": "石灰岩の切石", + "block.create.cut_limestone_brick_slab": "石灰岩の切石レンガのハーフブロック", + "block.create.cut_limestone_brick_stairs": "石灰岩の切石レンガの階段", + "block.create.cut_limestone_brick_wall": "石灰岩の切石レンガの塀", + "block.create.cut_limestone_bricks": "石灰岩の切石レンガ", + "block.create.cut_limestone_slab": "石灰岩の切石のハーフブロック", + "block.create.cut_limestone_stairs": "石灰岩の切石の階段", + "block.create.cut_limestone_wall": "石灰岩の切石の塀", + "block.create.cut_ochrum": "黄土岩の切石", + "block.create.cut_ochrum_brick_slab": "黄土岩の切石レンガのハーフブロック", + "block.create.cut_ochrum_brick_stairs": "黄土岩の切石レンガの階段", + "block.create.cut_ochrum_brick_wall": "黄土岩の切石レンガの塀", + "block.create.cut_ochrum_bricks": "黄土岩の切石レンガ", + "block.create.cut_ochrum_slab": "黄土岩の切石のハーフブロック", + "block.create.cut_ochrum_stairs": "黄土岩の切石の階段", + "block.create.cut_ochrum_wall": "黄土岩の切石の塀", + "block.create.cut_scorchia": "スコーチアの切石", + "block.create.cut_scorchia_brick_slab": "スコーチアの切石レンガのハーフブロック", + "block.create.cut_scorchia_brick_stairs": "スコーチアの切石レンガの階段", + "block.create.cut_scorchia_brick_wall": "スコーチアの切石レンガの塀", + "block.create.cut_scorchia_bricks": "スコーチアの切石レンガ", + "block.create.cut_scorchia_slab": "スコーチアの切石のハーフブロック", + "block.create.cut_scorchia_stairs": "スコーチアの切石の階段", + "block.create.cut_scorchia_wall": "スコーチアの切石の塀", + "block.create.cut_scoria": "スコリアの切石", + "block.create.cut_scoria_brick_slab": "スコリアの切石レンガのハーフブロック", + "block.create.cut_scoria_brick_stairs": "スコリアの切石レンガの階段", + "block.create.cut_scoria_brick_wall": "スコリアの切石レンガの塀", + "block.create.cut_scoria_bricks": "スコリアの切石レンガ", + "block.create.cut_scoria_slab": "スコリアの切石のハーフブロック", + "block.create.cut_scoria_stairs": "スコリアの切石の階段", + "block.create.cut_scoria_wall": "スコリアの切石の塀", + "block.create.cut_tuff": "凝灰岩の切石", + "block.create.cut_tuff_brick_slab": "凝灰岩の切石レンガのハーフブロック", + "block.create.cut_tuff_brick_stairs": "凝灰岩の切石レンガの階段", + "block.create.cut_tuff_brick_wall": "凝灰岩の切石レンガの塀", + "block.create.cut_tuff_bricks": "凝灰岩の切石レンガ", + "block.create.cut_tuff_slab": "凝灰岩の切石のハーフブロック", + "block.create.cut_tuff_stairs": "凝灰岩の切石の階段", + "block.create.cut_tuff_wall": "凝灰岩の切石の塀", + "block.create.cut_veridium": "翡翠岩の切石", + "block.create.cut_veridium_brick_slab": "翡翠岩の切石レンガのハーフブロック", + "block.create.cut_veridium_brick_stairs": "翡翠岩の切石レンガの階段", + "block.create.cut_veridium_brick_wall": "翡翠岩の切石レンガの塀", + "block.create.cut_veridium_bricks": "翡翠岩の切石レンガ", + "block.create.cut_veridium_slab": "翡翠岩の切石のハーフブロック", + "block.create.cut_veridium_stairs": "翡翠岩の切石の階段", + "block.create.cut_veridium_wall": "翡翠岩の切石の塀", "block.create.cyan_nixie_tube": "水色のニキシー管", "block.create.cyan_sail": "水色の帆", "block.create.cyan_seat": "水色のシート", "block.create.cyan_toolbox": "水色の工具箱", "block.create.cyan_valve_handle": "水色のバルブハンドル", "block.create.dark_oak_window": "ダークオークの窓", - "block.create.dark_oak_window_pane": "ダークオークの窓板", - "block.create.dark_scoria": "ダークスコリア", - "block.create.dark_scoria_bricks": "ダークスコリアレンガ", - "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", - "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", - "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの塀", - "block.create.dark_scoria_cobblestone": "ダークスコリアの丸石", - "block.create.dark_scoria_cobblestone_slab": "ダークスコリアの丸石のハーフブロック", - "block.create.dark_scoria_cobblestone_stairs": "ダークスコリアの丸石の階段", - "block.create.dark_scoria_cobblestone_wall": "ダークスコリアの丸石の塀", - "block.create.dark_scoria_pillar": "ダークスコリアの柱", + "block.create.dark_oak_window_pane": "ダークオークの板窓", + "block.create.deepslate_pillar": "深層岩の柱", + "block.create.deepslate_zinc_ore": "深層亜鉛鉱石", "block.create.deployer": "デプロイヤー", "block.create.depot": "デポ", - "block.create.diorite_bricks": "閃緑岩レンガ", - "block.create.diorite_bricks_slab": "閃緑岩レンガのハーフブロック", - "block.create.diorite_bricks_stairs": "閃緑岩レンガの階段", - "block.create.diorite_bricks_wall": "閃緑岩レンガの塀", - "block.create.diorite_cobblestone": "閃緑岩の丸石", - "block.create.diorite_cobblestone_slab": "閃緑岩の丸石のハーフブロック", - "block.create.diorite_cobblestone_stairs": "閃緑岩の丸石の階段", - "block.create.diorite_cobblestone_wall": "閃緑岩の丸石の塀", "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.dolomite": "苦灰岩", - "block.create.dolomite_bricks": "苦灰岩レンガ", - "block.create.dolomite_bricks_slab": "苦灰岩レンガのハーフブロック", - "block.create.dolomite_bricks_stairs": "苦灰岩レンガの階段", - "block.create.dolomite_bricks_wall": "苦灰岩レンガの塀", - "block.create.dolomite_cobblestone": "苦灰岩の丸石", - "block.create.dolomite_cobblestone_slab": "苦灰岩の丸石のハーフブロック", - "block.create.dolomite_cobblestone_stairs": "苦灰岩の丸石の階段", - "block.create.dolomite_cobblestone_wall": "苦灰岩の丸石の塀", - "block.create.dolomite_pillar": "苦灰岩の柱", + "block.create.dripstone_pillar": "鍾乳石の柱", "block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_fan": "ケース入りファン", "block.create.encased_fluid_pipe": "ケース入り液体パイプ", - "block.create.fancy_andesite_bricks": "装飾された安山岩レンガ", - "block.create.fancy_andesite_bricks_slab": "装飾された安山岩レンガのハーフブロック", - "block.create.fancy_andesite_bricks_stairs": "装飾された安山岩レンガの階段", - "block.create.fancy_andesite_bricks_wall": "装飾された安山岩レンガの塀", - "block.create.fancy_dark_scoria_bricks": "装飾されたダークスコリアレンガ", - "block.create.fancy_dark_scoria_bricks_slab": "装飾されたダークスコリアレンガのハーフブロック", - "block.create.fancy_dark_scoria_bricks_stairs": "装飾されたダークスコリアレンガの階段", - "block.create.fancy_dark_scoria_bricks_wall": "装飾されたダークスコリアレンガの塀", - "block.create.fancy_diorite_bricks": "装飾された閃緑岩レンガ", - "block.create.fancy_diorite_bricks_slab": "装飾された閃緑岩レンガのハーフブロック", - "block.create.fancy_diorite_bricks_stairs": "装飾された閃緑岩レンガの階段", - "block.create.fancy_diorite_bricks_wall": "装飾された閃緑岩レンガの塀", - "block.create.fancy_dolomite_bricks": "装飾された苦灰岩レンガ", - "block.create.fancy_dolomite_bricks_slab": "装飾された苦灰岩レンガのハーフブロック", - "block.create.fancy_dolomite_bricks_stairs": "装飾された苦灰岩レンガの階段", - "block.create.fancy_dolomite_bricks_wall": "装飾された苦灰岩レンガの塀", - "block.create.fancy_gabbro_bricks": "装飾された斑れい岩レンガ", - "block.create.fancy_gabbro_bricks_slab": "装飾された斑れい岩レンガのハーフブロック", - "block.create.fancy_gabbro_bricks_stairs": "装飾された斑れい岩レンガの階段", - "block.create.fancy_gabbro_bricks_wall": "装飾された斑れい岩レンガの塀", - "block.create.fancy_granite_bricks": "装飾された花崗岩レンガ", - "block.create.fancy_granite_bricks_slab": "装飾された花崗岩レンガのハーフブロック", - "block.create.fancy_granite_bricks_stairs": "装飾された花崗岩レンガの階段", - "block.create.fancy_granite_bricks_wall": "装飾された花崗岩レンガの塀", - "block.create.fancy_limestone_bricks": "装飾された石灰岩レンガ", - "block.create.fancy_limestone_bricks_slab": "装飾された石灰岩レンガのハーフブロック", - "block.create.fancy_limestone_bricks_stairs": "装飾された石灰岩レンガの階段", - "block.create.fancy_limestone_bricks_wall": "装飾された石灰岩レンガの塀", - "block.create.fancy_scoria_bricks": "装飾されたスコリアレンガ", - "block.create.fancy_scoria_bricks_slab": "装飾されたスコリアレンガのハーフブロック", - "block.create.fancy_scoria_bricks_stairs": "装飾されたスコリアレンガの階段", - "block.create.fancy_scoria_bricks_wall": "装飾されたスコリアレンガの塀", - "block.create.fancy_weathered_limestone_bricks": "装飾された風化した石灰岩レンガ", - "block.create.fancy_weathered_limestone_bricks_slab": "装飾された風化した石灰岩レンガのハーフブロック", - "block.create.fancy_weathered_limestone_bricks_stairs": "装飾された風化した石灰岩レンガの階段", - "block.create.fancy_weathered_limestone_bricks_wall": "装飾された風化した石灰岩レンガの塀", + "block.create.exposed_copper_shingle_slab": "風化した銅の屋根板のハーフブロック", + "block.create.exposed_copper_shingle_stairs": "風化した銅の屋根板の階段", + "block.create.exposed_copper_shingles": "風化した銅の屋根板", + "block.create.exposed_copper_tile_slab": "風化した銅タイルのハーフブロック", + "block.create.exposed_copper_tile_stairs": "風化した銅タイルの階段", + "block.create.exposed_copper_tiles": "風化した銅タイル", "block.create.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", + "block.create.flywheel": "弾み車", "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", + "block.create.framed_glass_pane": "ガラス板窓", "block.create.furnace_engine": "かまどエンジン", - "block.create.gabbro": "斑れい岩", - "block.create.gabbro_bricks": "斑れい岩レンガ", - "block.create.gabbro_bricks_slab": "斑れい岩レンガのハーフブロック", - "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", - "block.create.gabbro_bricks_wall": "斑れい岩レンガの塀", - "block.create.gabbro_cobblestone": "斑れい岩の丸石", - "block.create.gabbro_cobblestone_slab": "斑れい岩の丸石のハーフブロック", - "block.create.gabbro_cobblestone_stairs": "斑れい岩の丸石の階段", - "block.create.gabbro_cobblestone_wall": "斑れい岩の丸石の塀", - "block.create.gabbro_pillar": "斑れい岩の柱", "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", "block.create.gearbox": "ギアボックス", "block.create.gearshift": "ギアシフト", "block.create.glass_fluid_pipe": "ガラスの液体パイプ", - "block.create.granite_bricks": "花崗岩レンガ", - "block.create.granite_bricks_slab": "花崗岩レンガのハーフブロック", - "block.create.granite_bricks_stairs": "花崗岩レンガの階段", - "block.create.granite_bricks_wall": "花崗岩レンガの塀", - "block.create.granite_cobblestone": "花崗岩の丸石", - "block.create.granite_cobblestone_slab": "花崗岩の丸石のハーフブロック", - "block.create.granite_cobblestone_stairs": "花崗岩の丸石の階段", - "block.create.granite_cobblestone_wall": "花崗岩の丸石の塀", "block.create.granite_pillar": "花崗岩の柱", "block.create.gray_nixie_tube": "灰色のニキシー管", "block.create.gray_sail": "灰色の帆", @@ -201,21 +234,27 @@ "block.create.haunted_bell": "憑りつかれた鐘", "block.create.honey": "ハチミツ", "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "block.create.horizontal_framed_glass_pane": "横型ガラス板窓", "block.create.hose_pulley": "ホースプーリー", "block.create.item_drain": "アイテム排液口", + "block.create.item_vault": "アイテム保管庫", "block.create.jungle_window": "ジャングルの窓", - "block.create.jungle_window_pane": "ジャングルの窓板", + "block.create.jungle_window_pane": "ジャングルの板窓", "block.create.large_cogwheel": "大きな歯車", "block.create.layered_andesite": "安山岩の組石", - "block.create.layered_dark_scoria": "ダークスコリアの組石", + "block.create.layered_asurine": "瑠璃岩の組石", + "block.create.layered_calcite": "方解石の組石", + "block.create.layered_crimsite": "真紅岩の組石", + "block.create.layered_deepslate": "深層岩の組石", "block.create.layered_diorite": "閃緑岩の組石", - "block.create.layered_dolomite": "苦灰岩の組石", - "block.create.layered_gabbro": "斑れい岩の組石", + "block.create.layered_dripstone": "鍾乳石の組石", "block.create.layered_granite": "花崗岩の組石", "block.create.layered_limestone": "石灰岩の組石", + "block.create.layered_ochrum": "黄土岩の組石", + "block.create.layered_scorchia": "スコーチアの組石", "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_weathered_limestone": "風化した石灰岩の組石", + "block.create.layered_tuff": "凝灰岩の組石", + "block.create.layered_veridium": "翡翠岩の組石", "block.create.lectern_controller": "書見台コントローラー", "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", @@ -232,16 +271,7 @@ "block.create.lime_seat": "黄緑色のシート", "block.create.lime_toolbox": "黄緑色の工具箱", "block.create.lime_valve_handle": "黄緑色のバルブハンドル", - "block.create.limesand": "石灰砕砂", "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩レンガ", - "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", - "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", - "block.create.limestone_bricks_wall": "石灰岩レンガの塀", - "block.create.limestone_cobblestone": "石灰岩の丸石", - "block.create.limestone_cobblestone_slab": "石灰岩の丸石のハーフブロック", - "block.create.limestone_cobblestone_stairs": "石灰岩の丸石の階段", - "block.create.limestone_cobblestone_wall": "石灰岩の丸石の塀", "block.create.limestone_pillar": "石灰岩の柱", "block.create.linear_chassis": "リニアシャーシ", "block.create.lit_blaze_burner": "燃焼中のブレイズバーナー", @@ -265,72 +295,25 @@ "block.create.metal_bracket": "金属ブラケット", "block.create.millstone": "石臼", "block.create.minecart_anchor": "トロッコアンカー", - "block.create.mossy_andesite": "苔むした安山岩", - "block.create.mossy_dark_scoria": "苔むしたダークスコリア", - "block.create.mossy_diorite": "苔むした閃緑岩", - "block.create.mossy_dolomite": "苔むした苦灰岩", - "block.create.mossy_gabbro": "苔むした斑れい岩", - "block.create.mossy_granite": "苔むした花崗岩", - "block.create.mossy_limestone": "苔むした石灰岩", - "block.create.mossy_scoria": "苔むしたスコリア", - "block.create.mossy_weathered_limestone": "苔むした風化した石灰岩", "block.create.mysterious_cuckoo_clock": "鳩時計", - "block.create.natural_scoria": "天然スコリア", "block.create.nixie_tube": "ニキシー管", "block.create.nozzle": "ノズル", "block.create.oak_window": "オークの窓", - "block.create.oak_window_pane": "オークの窓板", + "block.create.oak_window_pane": "オークの板窓", + "block.create.ochrum": "黄土岩", + "block.create.ochrum_pillar": "黄土岩の柱", "block.create.orange_sail": "橙色の帆", "block.create.orange_seat": "橙色のシート", "block.create.orange_toolbox": "橙色の工具箱", "block.create.orange_valve_handle": "橙色のバルブハンドル", "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾ガラス板", - "block.create.overgrown_andesite": "生い茂った安山岩", - "block.create.overgrown_dark_scoria": "生い茂ったダークスコリア", - "block.create.overgrown_diorite": "生い茂った閃緑岩", - "block.create.overgrown_dolomite": "生い茂った苦灰岩", - "block.create.overgrown_gabbro": "生い茂った斑れい岩", - "block.create.overgrown_granite": "生い茂った花崗岩", - "block.create.overgrown_limestone": "生い茂った石灰岩", - "block.create.overgrown_scoria": "生い茂ったスコリア", - "block.create.overgrown_weathered_limestone": "生い茂った風化した石灰岩", - "block.create.paved_andesite": "舗装された安山岩", - "block.create.paved_andesite_slab": "舗装された安山岩のハーフブロック", - "block.create.paved_andesite_stairs": "舗装された安山岩の階段", - "block.create.paved_andesite_wall": "舗装された安山岩の塀", - "block.create.paved_dark_scoria": "舗装されたダークスコリア", - "block.create.paved_dark_scoria_slab": "舗装されたダークスコリアのハーフブロック", - "block.create.paved_dark_scoria_stairs": "舗装されたダークスコリアの階段", - "block.create.paved_dark_scoria_wall": "舗装されたダークスコリアの塀", - "block.create.paved_diorite": "舗装された閃緑岩", - "block.create.paved_diorite_slab": "舗装された閃緑岩のハーフブロック", - "block.create.paved_diorite_stairs": "舗装された閃緑岩の階段", - "block.create.paved_diorite_wall": "舗装された閃緑岩の塀", - "block.create.paved_dolomite": "舗装された苦灰岩", - "block.create.paved_dolomite_slab": "舗装された苦灰岩のハーフブロック", - "block.create.paved_dolomite_stairs": "舗装された苦灰岩の階段", - "block.create.paved_dolomite_wall": "舗装された苦灰岩の塀", - "block.create.paved_gabbro": "舗装された斑れい岩", - "block.create.paved_gabbro_slab": "舗装された斑れい岩のハーフブロック", - "block.create.paved_gabbro_stairs": "舗装された斑れい岩の階段", - "block.create.paved_gabbro_wall": "舗装された斑れい岩の塀", - "block.create.paved_granite": "舗装された花崗岩", - "block.create.paved_granite_slab": "舗装された花崗岩のハーフブロック", - "block.create.paved_granite_stairs": "舗装された花崗岩の階段", - "block.create.paved_granite_wall": "舗装された花崗岩の塀", - "block.create.paved_limestone": "舗装された石灰岩", - "block.create.paved_limestone_slab": "舗装された石灰岩のハーフブロック", - "block.create.paved_limestone_stairs": "舗装された石灰岩の階段", - "block.create.paved_limestone_wall": "舗装された石灰岩の塀", - "block.create.paved_scoria": "舗装されたスコリア", - "block.create.paved_scoria_slab": "舗装されたスコリアのハーフブロック", - "block.create.paved_scoria_stairs": "舗装されたスコリアの階段", - "block.create.paved_scoria_wall": "舗装されたスコリアの塀", - "block.create.paved_weathered_limestone": "舗装された風化した石灰岩", - "block.create.paved_weathered_limestone_slab": "舗装された風化した石灰岩のハーフブロック", - "block.create.paved_weathered_limestone_stairs": "舗装された風化した石灰岩の階段", - "block.create.paved_weathered_limestone_wall": "舗装された風化した石灰岩の塀", + "block.create.ornate_iron_window_pane": "鉄の装飾板ガラス", + "block.create.oxidized_copper_shingle_slab": "酸化した銅の屋根板のハーフブロック", + "block.create.oxidized_copper_shingle_stairs": "酸化した銅の屋根板の階段", + "block.create.oxidized_copper_shingles": "酸化した銅の屋根板", + "block.create.oxidized_copper_tile_slab": "酸化した銅タイルのハーフブロック", + "block.create.oxidized_copper_tile_stairs": "酸化した銅タイルの階段", + "block.create.oxidized_copper_tiles": "酸化した銅タイル", "block.create.peculiar_bell": "風変わりな鐘", "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", @@ -338,35 +321,68 @@ "block.create.pink_toolbox": "桃色の", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.polished_dark_scoria": "磨かれたダークスコリア", - "block.create.polished_dark_scoria_slab": "磨かれたダークスコリアのハーフブロック", - "block.create.polished_dark_scoria_stairs": "磨かれたダークスコリアの階段", - "block.create.polished_dark_scoria_wall": "磨かれたダークスコリアの塀", - "block.create.polished_dolomite": "磨かれた苦灰岩", - "block.create.polished_dolomite_slab": "磨かれた苦灰岩のハーフブロック", - "block.create.polished_dolomite_stairs": "磨かれた苦灰岩の階段", - "block.create.polished_dolomite_wall": "磨かれた苦灰岩の塀", - "block.create.polished_gabbro": "磨かれた斑れい岩", - "block.create.polished_gabbro_slab": "磨かれた斑れい岩のハーフブロック", - "block.create.polished_gabbro_stairs": "磨かれた斑れい岩の階段", - "block.create.polished_gabbro_wall": "磨かれた斑れい岩の塀", - "block.create.polished_limestone": "磨かれた石灰岩", - "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", - "block.create.polished_limestone_stairs": "磨かれた石灰岩の階段", - "block.create.polished_limestone_wall": "磨かれた石灰岩の塀", - "block.create.polished_scoria": "磨かれたスコリア", - "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", - "block.create.polished_scoria_stairs": "磨かれたスコリアの階段", - "block.create.polished_scoria_wall": "磨かれたスコリアの塀", - "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", - "block.create.polished_weathered_limestone_stairs": "磨かれた風化した石灰岩の階段", - "block.create.polished_weathered_limestone_wall": "磨かれた風化した石灰岩の塀", + "block.create.polished_cut_andesite": "磨かれた安山岩の切石", + "block.create.polished_cut_andesite_slab": "磨かれた安山岩の切石のハーフブロック", + "block.create.polished_cut_andesite_stairs": "磨かれた安山岩の切石の階段", + "block.create.polished_cut_andesite_wall": "磨かれた安山岩の切石の塀", + "block.create.polished_cut_asurine": "磨かれた瑠璃岩の切石", + "block.create.polished_cut_asurine_slab": "磨かれた瑠璃岩の切石のハーフブロック", + "block.create.polished_cut_asurine_stairs": "磨かれた瑠璃岩の切石の階段", + "block.create.polished_cut_asurine_wall": "磨かれた瑠璃岩の切石の塀", + "block.create.polished_cut_calcite": "磨かれた方解石", + "block.create.polished_cut_calcite_slab": "磨かれた方解石のハーフブロック", + "block.create.polished_cut_calcite_stairs": "磨かれた方解石の階段", + "block.create.polished_cut_calcite_wall": "磨かれた方解石の塀", + "block.create.polished_cut_crimsite": "磨かれた真紅岩の切石", + "block.create.polished_cut_crimsite_slab": "磨かれた真紅岩の切石のハーフブロック", + "block.create.polished_cut_crimsite_stairs": "磨かれた真紅岩の切石の階段", + "block.create.polished_cut_crimsite_wall": "磨かれた真紅岩の切石の塀", + "block.create.polished_cut_deepslate": "磨かれた深層岩の切石", + "block.create.polished_cut_deepslate_slab": "磨かれた深層岩の切石のハーフブロック", + "block.create.polished_cut_deepslate_stairs": "磨かれた深層岩の切石の階段", + "block.create.polished_cut_deepslate_wall": "磨かれた深層岩の切石の塀", + "block.create.polished_cut_diorite": "磨かれた閃緑岩の切石", + "block.create.polished_cut_diorite_slab": "磨かれた閃緑岩の切石のハーフブロック", + "block.create.polished_cut_diorite_stairs": "磨かれた閃緑岩の切石の階段", + "block.create.polished_cut_diorite_wall": "磨かれた閃緑岩の切石の塀", + "block.create.polished_cut_dripstone": "磨かれた鍾乳石", + "block.create.polished_cut_dripstone_slab": "磨かれた鍾乳石のハーフブロック", + "block.create.polished_cut_dripstone_stairs": "磨かれた鍾乳石の階段", + "block.create.polished_cut_dripstone_wall": "磨かれた鍾乳石の塀", + "block.create.polished_cut_granite": "磨かれた花崗岩の切石", + "block.create.polished_cut_granite_slab": "磨かれた花崗岩の切石のハーフブロック", + "block.create.polished_cut_granite_stairs": "磨かれた花崗岩の切石の階段", + "block.create.polished_cut_granite_wall": "磨かれた花崗岩の切石の塀", + "block.create.polished_cut_limestone": "磨かれた石灰岩の切石", + "block.create.polished_cut_limestone_slab": "磨かれた石灰岩の切石のハーフブロック", + "block.create.polished_cut_limestone_stairs": "磨かれた石灰岩の切石の階段", + "block.create.polished_cut_limestone_wall": "磨かれた石灰岩の切石の塀", + "block.create.polished_cut_ochrum": "磨かれた黄土岩の切石", + "block.create.polished_cut_ochrum_slab": "磨かれた黄土岩の切石のハーフブロック", + "block.create.polished_cut_ochrum_stairs": "磨かれた黄土岩の切石の階段", + "block.create.polished_cut_ochrum_wall": "磨かれた黄土岩の切石の塀", + "block.create.polished_cut_scorchia": "磨かれたスコーチア", + "block.create.polished_cut_scorchia_slab": "磨かれたスコーチアのハーフブロック", + "block.create.polished_cut_scorchia_stairs": "磨かれたスコーチアの階段", + "block.create.polished_cut_scorchia_wall": "磨かれたスコーチアの塀", + "block.create.polished_cut_scoria": "磨かれたスコリア", + "block.create.polished_cut_scoria_slab": "磨かれたスコリアのハーフブロック", + "block.create.polished_cut_scoria_stairs": "磨かれたスコリアの階段", + "block.create.polished_cut_scoria_wall": "磨かれたスコリアの塀", + "block.create.polished_cut_tuff": "磨かれた凝灰岩の切石", + "block.create.polished_cut_tuff_slab": "磨かれた凝灰岩の切石のハーフブロック", + "block.create.polished_cut_tuff_stairs": "磨かれた凝灰岩の切石の階段", + "block.create.polished_cut_tuff_wall": "磨かれた凝灰岩の切石の塀", + "block.create.polished_cut_veridium": "磨かれた翡翠岩の切石", + "block.create.polished_cut_veridium_slab": "磨かれた翡翠岩の切石のハーフブロック", + "block.create.polished_cut_veridium_stairs": "磨かれた翡翠岩の切石の階段", + "block.create.polished_cut_veridium_wall": "磨かれた翡翠岩の切石の塀", "block.create.portable_fluid_interface": "ポータブル液体インターフェース", - "block.create.portable_storage_interface": "ポータブルストレージインターフェース", + "block.create.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", "block.create.powered_toggle_latch": "パワードトグルラッチ", "block.create.pulley_magnet": "プーリーマグネット", + "block.create.pulse_extender": "パルスエクステンダー", "block.create.pulse_repeater": "パルスリピーター", "block.create.purple_nixie_tube": "紫色のニキシー管", "block.create.purple_sail": "紫色の帆", @@ -374,6 +390,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", @@ -382,55 +399,127 @@ "block.create.redstone_contact": "レッドストーンコンタクト", "block.create.redstone_link": "レッドストーンリンク", "block.create.refined_radiance_casing": "光輝ケーシング", - "block.create.reinforced_rail": "補強レール", "block.create.rope": "ロープ", "block.create.rope_pulley": "ローププーリー", "block.create.rotation_speed_controller": "回転速度コントローラー", "block.create.sail_frame": "帆フレーム", - "block.create.schematic_table": "概略図テーブル", + "block.create.schematic_table": "概略図台", "block.create.schematicannon": "概略図砲", + "block.create.scorchia": "スコーチア", + "block.create.scorchia_pillar": "スコーチアの柱", "block.create.scoria": "スコリア", - "block.create.scoria_bricks": "スコリアレンガ", - "block.create.scoria_bricks_slab": "スコリアレンガのハーフブロック", - "block.create.scoria_bricks_stairs": "スコリアレンガの階段", - "block.create.scoria_bricks_wall": "スコリアレンガの塀", - "block.create.scoria_cobblestone": "スコリアの丸石", - "block.create.scoria_cobblestone_slab": "スコリアの丸石のハーフブロック", - "block.create.scoria_cobblestone_stairs": "スコリアの丸石の階段", - "block.create.scoria_cobblestone_wall": "スコリアの丸石の塀", "block.create.scoria_pillar": "スコリアの柱", "block.create.secondary_linear_chassis": "セカンダリリニアシャーシ", "block.create.sequenced_gearshift": "シーケンスギアシフト", "block.create.shadow_steel_casing": "シャドウケーシング", "block.create.shaft": "シャフト", + "block.create.small_andesite_brick_slab": "小さな安山岩レンガのハーフブロック", + "block.create.small_andesite_brick_stairs": "小さな安山岩レンガの階段", + "block.create.small_andesite_brick_wall": "小さな安山岩レンガの塀", + "block.create.small_andesite_bricks": "小さな安山岩レンガ", + "block.create.small_asurine_brick_slab": "小さな瑠璃岩レンガのハーフブロック", + "block.create.small_asurine_brick_stairs": "小さな瑠璃岩レンガの階段", + "block.create.small_asurine_brick_wall": "小さな瑠璃岩レンガの塀", + "block.create.small_asurine_bricks": "小さな瑠璃岩レンガ", + "block.create.small_calcite_brick_slab": "小さな方解石レンガのハーフブロック", + "block.create.small_calcite_brick_stairs": "小さな方解石レンガの階段", + "block.create.small_calcite_brick_wall": "小さな方解石レンガの塀", + "block.create.small_calcite_bricks": "小さな方解石レンガ", + "block.create.small_crimsite_brick_slab": "小さな真紅岩レンガのハーフブロック", + "block.create.small_crimsite_brick_stairs": "小さな真紅岩レンガの階段", + "block.create.small_crimsite_brick_wall": "小さな真紅岩レンガの塀", + "block.create.small_crimsite_bricks": "小さな真紅岩レンガ", + "block.create.small_deepslate_brick_slab": "小さな深層岩レンガのハーフブロック", + "block.create.small_deepslate_brick_stairs": "小さな深層岩レンガの階段", + "block.create.small_deepslate_brick_wall": "小さな深層岩レンガの塀", + "block.create.small_deepslate_bricks": "小さな深層岩レンガ", + "block.create.small_diorite_brick_slab": "小さな閃緑岩レンガのハーフブロック", + "block.create.small_diorite_brick_stairs": "小さな閃緑岩レンガの階段", + "block.create.small_diorite_brick_wall": "小さな閃緑岩レンガの塀", + "block.create.small_diorite_bricks": "小さな閃緑岩レンガ", + "block.create.small_dripstone_brick_slab": "小さな鍾乳石レンガのハーフブロック", + "block.create.small_dripstone_brick_stairs": "小さな鍾乳石レンガの階段", + "block.create.small_dripstone_brick_wall": "小さな鍾乳石レンガの塀", + "block.create.small_dripstone_bricks": "小さな鍾乳石レンガ", + "block.create.small_granite_brick_slab": "小さな花崗岩レンガのハーフブロック", + "block.create.small_granite_brick_stairs": "小さな花崗岩レンガの階段", + "block.create.small_granite_brick_wall": "小さな花崗岩レンガの塀", + "block.create.small_granite_bricks": "小さな花崗岩レンガ", + "block.create.small_limestone_brick_slab": "小さな石灰岩レンガのハーフブロック", + "block.create.small_limestone_brick_stairs": "小さな石灰岩レンガの階段", + "block.create.small_limestone_brick_wall": "小さな石灰岩レンガの塀", + "block.create.small_limestone_bricks": "小さな石灰岩レンガ", + "block.create.small_ochrum_brick_slab": "小さな黄土岩レンガのハーフブロック", + "block.create.small_ochrum_brick_stairs": "小さな黄土岩レンガの階段", + "block.create.small_ochrum_brick_wall": "小さな黄土岩レンガの塀", + "block.create.small_ochrum_bricks": "小さな黄土岩レンガ", + "block.create.small_scorchia_brick_slab": "小さなスコーチアレンガのハーフブロック", + "block.create.small_scorchia_brick_stairs": "小さなスコーチアレンガの階段", + "block.create.small_scorchia_brick_wall": "小さなスコーチアレンガの塀", + "block.create.small_scorchia_bricks": "小さなスコーチアレンガ", + "block.create.small_scoria_brick_slab": "小さなスコリアレンガのハーフブロック", + "block.create.small_scoria_brick_stairs": "小さなスコリアレンガの階段", + "block.create.small_scoria_brick_wall": "小さなスコリアレンガの塀", + "block.create.small_scoria_bricks": "小さなスコリアレンガ", + "block.create.small_tuff_brick_slab": "小さな凝灰岩レンガのハーフブロック", + "block.create.small_tuff_brick_stairs": "小さな凝灰岩レンガの階段", + "block.create.small_tuff_brick_wall": "小さな凝灰岩レンガの塀", + "block.create.small_tuff_bricks": "小さな凝灰岩レンガ", + "block.create.small_veridium_brick_slab": "小さな翡翠岩レンガのハーフブロック", + "block.create.small_veridium_brick_stairs": "小さな翡翠岩レンガの階段", + "block.create.small_veridium_brick_wall": "小さな翡翠岩レンガの塀", + "block.create.small_veridium_bricks": "小さな翡翠岩レンガ", "block.create.smart_chute": "スマートシュート", "block.create.smart_fluid_pipe": "スマート液体パイプ", "block.create.speedometer": "速度メーター", "block.create.spout": "アイテム注液口", "block.create.spruce_window": "マツの窓", - "block.create.spruce_window_pane": "マツの窓板", + "block.create.spruce_window_pane": "マツの板窓", "block.create.sticker": "スティッカー", "block.create.sticky_mechanical_piston": "メカニカル粘着ピストン", "block.create.stockpile_switch": "在庫スイッチ", "block.create.stressometer": "応力メーター", "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラス板", + "block.create.tiled_glass_pane": "タイル板ガラス", + "block.create.tuff_pillar": "凝灰岩の柱", "block.create.turntable": "ターンテーブル", + "block.create.veridium": "翡翠岩", + "block.create.veridium_pillar": "翡翠岩の柱", "block.create.vertical_framed_glass": "縦型ガラス窓", - "block.create.vertical_framed_glass_pane": "縦型ガラス窓板", + "block.create.vertical_framed_glass_pane": "縦型ガラス板窓", "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓板", + "block.create.warped_window_pane": "歪んだ板窓", "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化した石灰岩", - "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", - "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", - "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", - "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの塀", - "block.create.weathered_limestone_cobblestone": "風化した石灰岩の丸石", - "block.create.weathered_limestone_cobblestone_slab": "風化した石灰岩の丸石のハーフブロック", - "block.create.weathered_limestone_cobblestone_stairs": "風化した石灰岩の丸石の階段", - "block.create.weathered_limestone_cobblestone_wall": "風化した石灰岩の丸石の塀", - "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", + "block.create.waxed_copper_shingle_slab": "錆止めされた銅の屋根板のハーフブロック", + "block.create.waxed_copper_shingle_stairs": "錆止めされた銅の屋根板の階段", + "block.create.waxed_copper_shingles": "錆止めされた銅の屋根板", + "block.create.waxed_copper_tile_slab": "錆止めされた銅タイルのハーフブロック", + "block.create.waxed_copper_tile_stairs": "錆止めされた銅タイルの階段", + "block.create.waxed_copper_tiles": "錆止めされた銅タイル", + "block.create.waxed_exposed_copper_shingle_slab": "錆止めされた風化した銅の屋根板のハーフブロック", + "block.create.waxed_exposed_copper_shingle_stairs": "錆止めされた風化した銅の屋根板の階段", + "block.create.waxed_exposed_copper_shingles": "錆止めされた風化した銅の屋根板", + "block.create.waxed_exposed_copper_tile_slab": "錆止めされた風化した銅タイルのハーフブロック", + "block.create.waxed_exposed_copper_tile_stairs": "錆止めされた風化した銅タイルの階段", + "block.create.waxed_exposed_copper_tiles": "錆止めされた風化した銅タイル", + "block.create.waxed_oxidized_copper_shingle_slab": "錆止めされた酸化した銅の屋根板のハーフブロック", + "block.create.waxed_oxidized_copper_shingle_stairs": "錆止めされた酸化した銅の屋根板の階段", + "block.create.waxed_oxidized_copper_shingles": "錆止めされた酸化した銅の屋根板", + "block.create.waxed_oxidized_copper_tile_slab": "錆止めされた酸化した銅タイルのハーフブロック", + "block.create.waxed_oxidized_copper_tile_stairs": "錆止めされた酸化した銅タイルの階段", + "block.create.waxed_oxidized_copper_tiles": "錆止めされた酸化した銅タイル", + "block.create.waxed_weathered_copper_shingle_slab": "錆止めされた錆びた銅の屋根板のハーフブロック", + "block.create.waxed_weathered_copper_shingle_stairs": "錆止めされた錆びた銅の屋根板の階段", + "block.create.waxed_weathered_copper_shingles": "錆止めされた錆びた銅の屋根板", + "block.create.waxed_weathered_copper_tile_slab": "錆止めされた錆びた銅タイルのハーフブロック", + "block.create.waxed_weathered_copper_tile_stairs": "錆止めされた錆びた銅タイルの階段", + "block.create.waxed_weathered_copper_tiles": "錆止めされた錆びた銅タイル", + "block.create.weathered_copper_shingle_slab": "錆びた銅の屋根板のハーフブロック", + "block.create.weathered_copper_shingle_stairs": "錆びた銅の屋根板の階段", + "block.create.weathered_copper_shingles": "錆びた銅の屋根板", + "block.create.weathered_copper_tile_slab": "錆びた銅タイルのハーフブロック", + "block.create.weathered_copper_tile_stairs": "錆びた銅タイルの階段", + "block.create.weathered_copper_tiles": "錆びた銅タイル", "block.create.weighted_ejector": "重量射出機", "block.create.white_nixie_tube": "白色のニキシー管", "block.create.white_sail": "白色の帆", @@ -472,20 +561,18 @@ "item.create.brass_nugget": "真鍮塊", "item.create.brass_sheet": "真鍮シート", "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", + "item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", "item.create.copper_backtank": "銅のバックタンク", - "item.create.copper_ingot": "銅インゴット", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", "item.create.crafting_blueprint": "クラフトブループリント", "item.create.creative_blaze_cake": "クリエイティブブレイズケーキ", "item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石", - "item.create.crushed_brass": "砕いた真鍮", "item.create.crushed_copper_ore": "砕いた銅鉱石", "item.create.crushed_gold_ore": "砕いた金鉱石", "item.create.crushed_iron_ore": "砕いた鉄鉱石", @@ -504,9 +591,10 @@ "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", "item.create.empty_schematic": "空の概略図", + "item.create.experience_nugget": "経験値の塊", "item.create.extendo_grip": "マジックハンド", "item.create.filter": "フィルター", - "item.create.furnace_minecart_contraption": "からくりかまど付きトロッコ", + "item.create.furnace_minecart_contraption": "かまど付きからくりトロッコ", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", @@ -517,13 +605,14 @@ "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", - "item.create.minecart_contraption": "からくり付きトロッコ", + "item.create.minecart_contraption": "からくりトロッコ", "item.create.minecart_coupling": "トロッコ連結器", "item.create.polished_rose_quartz": "磨かれたローズクォーツ", "item.create.potato_cannon": "ポテトキャノン", "item.create.powdered_obsidian": "黒曜石の粉", "item.create.precision_mechanism": "精密機構", "item.create.propeller": "プロペラ", + "item.create.raw_zinc": "亜鉛の原石", "item.create.red_sand_paper": "赤い紙やすり", "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", @@ -593,7 +682,7 @@ "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", "advancement.create.chocolate_wheel": "味わい深い原動機", "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", + "advancement.create.lava_wheel": "溶岩車", "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", "advancement.create.cuckoo": "今がその時だ", "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", @@ -606,7 +695,7 @@ "advancement.create.andesite_casing": "安山岩の時代", "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", + "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", "advancement.create.press": "プレスで「ドン!」", "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", @@ -614,10 +703,10 @@ "advancement.create.electron_tube": "ピッポッパ", "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", + "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", "advancement.create.basin": "お茶碗の作法", "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", + "advancement.create.mixer": "攪拌せよ", "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", "advancement.create.blaze_burner": "生き生きとしたインテリア", "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", @@ -648,23 +737,23 @@ "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", + "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", + "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", + "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", "advancement.create.crafter": "部品集結!", "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", + "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", "advancement.create.nixie_tube": "イカした看板", "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", "advancement.create.deployer": "突く、置く、殴る!", "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "Engineers hate him!", + "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", + "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", "advancement.create.overstress_flywheel": "ハイレベル応力", "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", @@ -683,19 +772,11 @@ "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", "advancement.create.blaze_cake": "シュガー・ラッシュ", "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.chromatic_compound": "二極性化合物", - "advancement.create.chromatic_compound.desc": "色彩の化合物を作る", - "advancement.create.shadow_steel": "奈落からの帰還", - "advancement.create.shadow_steel.desc": "究極の虚無、「シャドウスチール」を作る", - "advancement.create.refined_radiance": "光輝の吹入", - "advancement.create.refined_radiance.desc": "究極の色彩、「高貴な光輝」を作る", - "advancement.create.chromatic_age": "色彩の時代", - "advancement.create.chromatic_age.desc": "光と闇のケーシングを作る", "advancement.create.wand_of_symmetry": "輝く鏡", "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", "advancement.create.extendo_grip": "ビヨヨーン!", "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.potato_cannon": "バキューン!", + "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", @@ -719,7 +800,7 @@ "death.attack.create.mechanical_saw": "%1$sはメカニカルソーで半分にカットされた", "death.attack.create.mechanical_saw.player": "%1$sは%2$sによってメカニカルソーの回転する刃に投げ込まれた", "death.attack.create.potato_cannon": "%1$sは%2$sのポテトキャノンに撃ち抜かれた", - "death.attack.create.potato_cannon.item": "%1$sは%3$sで%2$sに撃た抜かれた", + "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃た抜かれた", "death.attack.create.cuckoo_clock_explosion": "%1$sは改造された鳩時計に爆破された", "death.attack.create.cuckoo_clock_explosion.player": "%1$sは何者かによって改造された鳩時計に爆破された", @@ -728,7 +809,7 @@ "create.menu.return": "メニューに戻る", "create.menu.configure": "設定...", - "create.menu.ponder_index": "思案索引", + "create.menu.ponder_index": "思案目次", "create.menu.only_ingame": "一時停止メニューで利用可能", "create.menu.project_page": "プロジェクトページ", "create.menu.report_bugs": "バグ報告", @@ -756,8 +837,8 @@ "create.recipe.wood_cutting": "自動製材", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", + "create.recipe.spout_filling": "アイテムへの注液", + "create.recipe.draining": "アイテムからの排液", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -804,7 +885,7 @@ "create.gui.scrollInput.defaultTitle": "オプションを選択:", "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして調整", "create.gui.scrollInput.scrollToSelect": "スクロールして選択", "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", @@ -862,27 +943,27 @@ "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", + "create.minecart_coupling.unloaded": "列車の一部があるチャンクがロードされていません", "create.minecart_coupling.no_loops": "ループ状に連結させることはできません", "create.minecart_coupling.removed": "トロッコの連結をすべて解除しました", "create.minecart_coupling.too_far": "トロッコ同士が離れすぎています", "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "停止時に常に配置", - "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", - "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", - "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", - "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.movement_mode.move_place": "停止時に常に設置", + "create.contraptions.movement_mode.move_place_returned": "開始位置のみに設置", + "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ設置", + "create.contraptions.movement_mode.rotate_place": "停止時に常に設置", + "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ設置", + "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ設置", "create.contraptions.cart_movement_mode": "トロッコ移動モード", "create.contraptions.cart_movement_mode.rotate": "常に動いている方向を向く", - "create.contraptions.cart_movement_mode.rotate_paused": "回転中に一時停止する", + "create.contraptions.cart_movement_mode.rotate_paused": "回転中に機械を一時停止する", "create.contraptions.cart_movement_mode.rotation_locked": "常に向きを固定する", "create.contraptions.windmill.rotation_direction": "回転方向", "create.contraptions.clockwork.clock_hands": "時計の針", "create.contraptions.clockwork.hour_first": "時針を最初に", "create.contraptions.clockwork.minute_first": "分針を最初に", - "create.contraptions.clockwork.hour_first_24": "1周24時間時針を最初に", + "create.contraptions.clockwork.hour_first_24": "24時針を最初に", "create.logistics.filter": "フィルター", "create.logistics.recipe_filter": "レシピフィルター", @@ -903,16 +984,16 @@ "create.gui.assembly.exception.unmovableBlock": "移動できないブロック(%4$s)、[%1$s %2$s %3$s]", "create.gui.assembly.exception.chunkNotLoaded": "[%1$s %2$s %3$s] のブロックがロードされているチャンクにありません。", "create.gui.assembly.exception.structureTooLarge": "からくりに含まれるブロックが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられている拡張ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "この構造物は帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", + "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", + "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", + "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", "create.gui.gauge.info_header": "メーターの情報:", "create.gui.speedometer.title": "回転速度", "create.gui.stressometer.title": "ネットワークの応力", "create.gui.stressometer.capacity": "残りの応力許容量", "create.gui.stressometer.overstressed": "超過応力", "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", @@ -951,7 +1032,7 @@ "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図台を使ってください", "create.schematic.position": "位置", "create.schematic.rotation": "回転", "create.schematic.rotation.none": "無し", @@ -968,7 +1049,7 @@ "create.schematic.tool.rotate": "回転", "create.schematic.tool.print": "印刷", "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", + "create.schematic.tool.deploy.description.0": "概略図を特定の場所に移動します", "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します", "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します", "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します", @@ -995,43 +1076,43 @@ "create.schematics.synchronizing": "同期しています...", "create.schematics.uploadTooLarge": "概略図が大きすぎます", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", + "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズ: ", "create.gui.schematicTable.refresh": "ファイルを更新する", "create.gui.schematicTable.open_folder": "フォルダを開く", - "create.gui.schematicTable.title": "概略図テーブル", + "create.gui.schematicTable.title": "概略図台", "create.gui.schematicTable.availableSchematics": "利用可能な概略図", "create.gui.schematicTable.noSchematics": "保存された概略図はありません", "create.gui.schematicTable.uploading": "アップロードしています...", "create.gui.schematicTable.finished": "アップロードが完了しました!", "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.listPrinter": "材料リストプリンター", + "create.gui.schematicannon.listPrinter": "材料リスト印刷機", "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "予備: %1$s", "create.gui.schematicannon.optionEnabled": "現在 有効", "create.gui.schematicannon.optionDisabled": "現在 無効", "create.gui.schematicannon.showOptions": "プリンターの設定を表示する", "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", - "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", - "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", + "create.gui.schematicannon.option.replaceWithSolid": "固体ブロックを固体ブロックに置き換える", + "create.gui.schematicannon.option.replaceWithAny": "固体ブロックを任意のブロックに置き換える", + "create.gui.schematicannon.option.replaceWithEmpty": "固体ブロックを空気に置き換える", "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", - "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストをプリントアウトします。", + "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストを印刷します。", "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", - "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業範囲の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置に固体ブロックが含まれている場合にのみ、その作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図の場所にブロックが含まれている場合、大砲はその作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", + "create.gui.schematicannon.option.skipMissing.description": "配置に必要なブロックを見つけられない場合、次の場所に進みます。", + "create.gui.schematicannon.option.skipTileEntities.description": "チェストなどのデータ保持ブロックの置き換えによる消滅を回避します。", + "create.gui.schematicannon.option.dontReplaceSolid.description": "その作業範囲の固体ブロックを置き換えることはなく、非固体ブロックと空気のみを置き換えます。", + "create.gui.schematicannon.option.replaceWithSolid.description": "固体ブロックを設置する場合にのみ、その位置の固体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithAny.description": "任意のブロックを設置する場合に、その位置の固体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業領域のあらゆるブロックを一掃します。", "create.schematicannon.status.idle": "停止中", "create.schematicannon.status.ready": "準備完了", "create.schematicannon.status.running": "稼働中", - "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.finished": "完了", "create.schematicannon.status.paused": "一時停止中", "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", @@ -1047,7 +1128,7 @@ "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", "create.materialChecklist": "素材チェックリスト", - "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確な場合があります。", + "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確かもしれません。", "create.gui.filter.deny_list": "ブラックリスト", "create.gui.filter.deny_list.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", @@ -1119,14 +1200,14 @@ "create.item_attributes.book_copy_second.inverted": "コピーのコピーでないか", "create.item_attributes.book_copy_tattered": "ボロボロか", "create.item_attributes.book_copy_tattered.inverted": "ボロボロでないか", - "create.item_attributes.astralsorcery_amulet": "%1$s 改善", - "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されない", - "create.item_attributes.astralsorcery_constellation": "%1$s に同調している", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していない", - "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つ", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たない", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性がある", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がない", + "create.item_attributes.astralsorcery_amulet": "%1$s 改善か", + "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されないか", + "create.item_attributes.astralsorcery_constellation": "%1$s に同調しているか", + "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していないか", + "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つか", + "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たないか", + "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性があるか", + "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がないか", "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", "create.gui.attribute_filter.selected_attributes": "選択された属性:", @@ -1216,7 +1297,7 @@ "create.potato_cannon.ammo.reload_ticks": "リロード時間(tick): %1$s", "create.potato_cannon.ammo.knockback": "ノックバック: %1$s", - "create.hint.hose_pulley.title": "底なし搬出", + "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", @@ -1243,7 +1324,7 @@ "create.command.killTPSCommand.argument.tickTime": "tickTime", "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "神秘的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", "_": "->------------------------] Subtitles [------------------------<-", @@ -1254,6 +1335,7 @@ "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", "create.subtitle.fwoomp": "ポテトランチャーがバキューンと鳴る", "create.subtitle.worldshaper_place": "ワールドシェーパーが設置する", + "create.subtitle.sanding_long": "研磨音", "create.subtitle.crushing_1": "粉砕音", "create.subtitle.depot_slide": "アイテムが滑る", "create.subtitle.saw_activate_stone": "メカニカルソーが動作する", @@ -1266,13 +1348,13 @@ "create.subtitle.controller_put": "コントローラのトントン音", "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.wrench_remove": "機械を壊す", + "create.subtitle.sanding_short": "研磨音", "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", "create.subtitle.wrench_rotate": "レンチが使用される", "create.subtitle.potato_hit": "野菜の衝撃", "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", - "create.subtitle.deployer_polish": "デプロイヤーが磨く", "create.subtitle.deny": "失敗音", "create.subtitle.controller_click": "コントローラーのカチカチ音", "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", @@ -1303,7 +1385,7 @@ "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", + "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", "block.create.seat.tooltip.condition1": "右クリックしたとき", "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", @@ -1364,7 +1446,7 @@ "item.create.attribute_filter.tooltip.behaviour2": "_設定画面_を開きます。", "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図テーブル_での書き込みに使われます。", + "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_での書き込みに使われます。", "item.create.schematic.tooltip": "概略図", "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", @@ -1391,7 +1473,7 @@ "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", "block.create.schematicannon.tooltip.behaviour1": "_UI_を開きます。", - "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip": "概略図台", "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", @@ -1425,7 +1507,7 @@ "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", - "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.condition1": "壊したとき", "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", @@ -1444,11 +1526,6 @@ "block.create.content_observer.tooltip.condition2": "ファンネルを観察するとき", "block.create.content_observer.tooltip.behaviour2": "_一致するアイテム_が_輸送_されると、_レッドストーンパルス_を発します。", - "block.create.adjustable_crate.tooltip": "可変クレート", - "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", - "block.create.adjustable_crate.tooltip.condition1": "右クリックしたとき", - "block.create.adjustable_crate.tooltip.behaviour1": "_UI_を開きます。", - "block.create.creative_crate.tooltip": "クリエイティブクレート", "block.create.creative_crate.tooltip.summary": "あらゆるアイテムを無限に複製する_収納ブロック_。隣接する_概略図砲_へブロックを無限に供給します。", "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", @@ -1522,6 +1599,11 @@ "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", + "item.create.experience_nugget.tooltip": "経験値の塊", + "item.create.experience_nugget.tooltip.summary": "_チャリン!_あなたの素晴らしい発明から、_発想_の欠片を。", + "item.create.experience_nugget.tooltip.condition1": "使ったとき", + "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中に入った_経験値_を取り出します", + "block.create.peculiar_bell.tooltip": "風変わりな鐘", "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", @@ -1586,26 +1668,14 @@ "create.ponder.tag.logistics": "輸送機械", "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", - "create.ponder.adjustable_pulse_repeater.header": "可変パルスリピーターによる信号制御", - "create.ponder.adjustable_pulse_repeater.text_1": "可変パルスリピーターは信号を遅延し、短いパルスにして出力します", - "create.ponder.adjustable_pulse_repeater.text_2": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_pulse_repeater.text_3": "最大30分まで遅延時間を調整できます", - - "create.ponder.adjustable_repeater.header": "可変リピーターによる信号制御", - "create.ponder.adjustable_repeater.text_1": "可変リピーターは通常のレッドストーンリピーターと同様の動作をします", - "create.ponder.adjustable_repeater.text_2": "決められた時間だけ遅延します...", - "create.ponder.adjustable_repeater.text_3": "...そして同じ時間だけクールダウンします", - "create.ponder.adjustable_repeater.text_4": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_repeater.text_5": "最大30分まで遅延時間を調整できます", - "create.ponder.analog_lever.header": "アナログレバーによる信号制御", "create.ponder.analog_lever.text_1": "アナログレバーはコンパクトに正確なレッドストーン動力を出力できます。", "create.ponder.analog_lever.text_2": "右クリックでレッドストーン強度を上げられます。", "create.ponder.analog_lever.text_3": "スニークしながら右クリックでレッドストーン強度を下げられます。", "create.ponder.andesite_tunnel.header": "安山岩トンネルの使い方", - "create.ponder.andesite_tunnel.text_1": "安山岩のトンネルは、ベルトを隠せます", - "create.ponder.andesite_tunnel.text_2": "安山岩のトンネルが横につながっていると...", + "create.ponder.andesite_tunnel.text_1": "安山岩トンネルは、ベルトを隠せます", + "create.ponder.andesite_tunnel.text_2": "安山岩トンネルが横につながっていると...", "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", @@ -1625,7 +1695,7 @@ "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定したりできます", "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", + "create.ponder.belt_casing.text_1": "真鍮か安山岩ケーシングを使ってメカニカルベルトを飾れます", "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", "create.ponder.belt_connector.header": "メカニカルベルトの使い方", @@ -1751,6 +1821,11 @@ "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", + "create.ponder.cogwheel_casing.header": "ケース入り歯車", + "create.ponder.cogwheel_casing.text_1": "真鍮や安山岩のケーシングは歯車を飾ることもできます", + "create.ponder.cogwheel_casing.text_2": "ケース入りにした歯車に、シャフトを繋ごうとしても繋がりません", + "create.ponder.cogwheel_casing.text_3": "レンチを使って繋がるかどうか切り替えることもできます", + "create.ponder.creative_fluid_tank.header": "クリエイティブ液体タンク", "create.ponder.creative_fluid_tank.text_1": "クリエイティブ液体タンクは、液体を無限に供給できます", "create.ponder.creative_fluid_tank.text_2": "液体容器アイテムで右クリックで液体を指定できます", @@ -1870,8 +1945,8 @@ "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を出し入れできません。", "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を出し入れできます。", - "create.ponder.flywheel.header": "勢車による回転力の生成", - "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、勢車が必要です", + "create.ponder.flywheel.header": "弾み車による回転力の生成", + "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です", "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", @@ -1971,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...中に詰まった液体を出しながら横に転がっていきます", "create.ponder.item_drain.text_5": "液体ネットワークで、排液口から液体を取り出せます", + "create.ponder.item_vault_sizes.header": "アイテム保管庫の寸法", + "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やすことができます", + "create.ponder.item_vault_sizes.text_2": "そのベースとなる正方形の辺の長さは最大3ブロックまで...", + "create.ponder.item_vault_sizes.text_3": "...長さはその三倍まで伸ばせます", + + "create.ponder.item_vault_storage.header": "保管庫でのアイテムの保管", + "create.ponder.item_vault_storage.text_1": "アイテム保管庫は、大量のアイテムを保管できます", + "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません。", + "create.ponder.item_vault_storage.text_3": "アイテム運搬用の機械ならどれを使っても搬入と...", + "create.ponder.item_vault_storage.text_4": "搬出ができます", + "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", @@ -2174,8 +2260,17 @@ "create.ponder.powered_toggle_latch.text_3": "何度も信号を送るとオンとオフと繰り返します", "create.ponder.powered_toggle_latch.text_4": "パワードトグルラッチは、手動でもオンオフもできます", + "create.ponder.pulse_extender.header": "パルスエクステンダーによる信号制御", + "create.ponder.pulse_extender.text_1": "パルスエクステンダーは通過する信号を長くします", + "create.ponder.pulse_extender.text_2": "短時間の遅延の後...", + "create.ponder.pulse_extender.text_3": "...設定した時間だけ信号を出します", + "create.ponder.pulse_extender.text_4": "マウスホイールで、信号を出す時間を調整できます", + "create.ponder.pulse_extender.text_5": "最大で30分まで設定できます", + "create.ponder.pulse_repeater.header": "パルスリピーターによる信号制御", "create.ponder.pulse_repeater.text_1": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", + "create.ponder.pulse_repeater.text_2": "マウスホイールで、遅延する時間を調整できます", + "create.ponder.pulse_repeater.text_3": "最大30分まで設定できます", "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同じ種類のシャーシと繋がります", @@ -2342,7 +2437,7 @@ "create.ponder.windmill_structure.header": "からくり風車", "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます", - + "_": "Thank you for translating Create!" } diff --git a/src/main/resources/assets/create/lang/ko_kr.json b/src/main/resources/assets/create/lang/ko_kr.json index 834abe9d1..dc3776b67 100644 --- a/src/main/resources/assets/create/lang/ko_kr.json +++ b/src/main/resources/assets/create/lang/ko_kr.json @@ -4,24 +4,17 @@ "block.create.acacia_window": "아카시아나무 유리창", "block.create.acacia_window_pane": "아카시아나무 유리판 ", "block.create.adjustable_chain_gearshift": "벨트 변속기", - "block.create.adjustable_crate": "가변 창고", - "block.create.adjustable_pulse_repeater": "가변 펄스 중계기", - "block.create.adjustable_repeater": "가변 중계기", "block.create.analog_lever": "아날로그 레버", "block.create.andesite_belt_funnel": "안산암 퍼널", - "block.create.andesite_bricks": "안산암 벽돌", - "block.create.andesite_bricks_slab": "안산암 벽돌 반 블록", - "block.create.andesite_bricks_stairs": "안산암 벽돌 계단", - "block.create.andesite_bricks_wall": "안산암 벽돌 담장", "block.create.andesite_casing": "안산암 케이스", - "block.create.andesite_cobblestone": "안산암 조약돌", - "block.create.andesite_cobblestone_slab": "안산암 조약돌 반 블록", - "block.create.andesite_cobblestone_stairs": "안산암 조약돌 계단", - "block.create.andesite_cobblestone_wall": "안산암 조약돌 담장", + "block.create.andesite_encased_cogwheel": "안산암 케이스를 씌운 톱니바퀴", + "block.create.andesite_encased_large_cogwheel": "안산암 케이스를 씌운 큰 톱니바퀴", "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", "block.create.andesite_funnel": "안산암 퍼널", "block.create.andesite_pillar": "안산암 기둥", "block.create.andesite_tunnel": "안산암 터널", + "block.create.asurine": "유리암", + "block.create.asurine_pillar": "유리암 기둥", "block.create.basin": "대야", "block.create.belt": "벨트", "block.create.birch_window": "자작나무 유리창", @@ -40,6 +33,8 @@ "block.create.brass_belt_funnel": "황동 퍼널", "block.create.brass_block": "황동 블록", "block.create.brass_casing": "황동 케이스", + "block.create.brass_encased_cogwheel": "황동 케이스를 씌운 톱니바퀴", + "block.create.brass_encased_large_cogwheel": "황동 케이스를 씌운 큰 톱니바퀴", "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", "block.create.brass_funnel": "황동 퍼널", "block.create.brass_tunnel": "황동 터널", @@ -48,13 +43,8 @@ "block.create.brown_seat": "갈색 좌석", "block.create.brown_toolbox": "갈색 공구상자", "block.create.brown_valve_handle": "갈색 밸브 손잡이", + "block.create.calcite_pillar": "방해석 기둥", "block.create.cart_assembler": "카트 조립기", - "block.create.chiseled_dark_scoria": "조각된 짙은 스코리아", - "block.create.chiseled_dolomite": "조각된 백운암", - "block.create.chiseled_gabbro": "조각된 반려암", - "block.create.chiseled_limestone": "조각된 석회암", - "block.create.chiseled_scoria": "조각된 스코리아", - "block.create.chiseled_weathered_limestone": "조각된 풍화된 석회암", "block.create.chocolate": "초콜릿", "block.create.chute": "슈트", "block.create.clockwork_bearing": "시계 베어링", @@ -63,20 +53,136 @@ "block.create.content_observer": "정보 감지기", "block.create.controller_rail": "방향 레일", "block.create.copper_backtank": "구리 산소통", - "block.create.copper_block": "구리 블록", "block.create.copper_casing": "구리 케이스", - "block.create.copper_ore": "구리 광석", + "block.create.copper_shingle_slab": "구리 판자 반 블록", + "block.create.copper_shingle_stairs": "구리 판자 계단", "block.create.copper_shingles": "구리 판자", + "block.create.copper_tile_slab": "구리 타일 반 블록", + "block.create.copper_tile_stairs": "구리 타일 계단", "block.create.copper_tiles": "구리 타일", "block.create.copper_valve_handle": "구리 밸브 손잡이", "block.create.creative_crate": "크리에이티브 창고", "block.create.creative_fluid_tank": "크리에이티브 탱크", "block.create.creative_motor": "크리에이티브 모터", + "block.create.crimsite": "진홍암", + "block.create.crimsite_pillar": "진홍암 기둥", "block.create.crimson_window": "진홍빛 유리창", "block.create.crimson_window_pane": "진홍빛 유리판", "block.create.crushing_wheel": "분쇄 휠", "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", "block.create.cuckoo_clock": "뻐꾸기 시계", + "block.create.cut_andesite": "깎인 안산암", + "block.create.cut_andesite_brick_slab": "깎인 안산암 벽돌 반 블록", + "block.create.cut_andesite_brick_stairs": "깎인 안산암 벽돌 계단", + "block.create.cut_andesite_brick_wall": "깎인 안산암 벽돌 담장", + "block.create.cut_andesite_bricks": "깎인 안산암 벽돌", + "block.create.cut_andesite_slab": "깎인 안산암 반 블록", + "block.create.cut_andesite_stairs": "깎인 안산암 계단", + "block.create.cut_andesite_wall": "깎인 안산암 담장", + "block.create.cut_asurine": "깎인 유리암", + "block.create.cut_asurine_brick_slab": "깎인 유리암 벽돌 반 블록", + "block.create.cut_asurine_brick_stairs": "깎인 유리암 벽돌 계단", + "block.create.cut_asurine_brick_wall": "깎인 유리암 벽돌 담장", + "block.create.cut_asurine_bricks": "깎인 유리암 벽돌", + "block.create.cut_asurine_slab": "깎인 유리암 반 블록", + "block.create.cut_asurine_stairs": "깎인 유리암 계단", + "block.create.cut_asurine_wall": "깎인 유리암 담장", + "block.create.cut_calcite": "깎인 방해석", + "block.create.cut_calcite_brick_slab": "깎인 방해석 벽돌 반 블록", + "block.create.cut_calcite_brick_stairs": "깎인 방해석 벽돌 계단", + "block.create.cut_calcite_brick_wall": "깎인 방해석 벽돌 담장", + "block.create.cut_calcite_bricks": "깎인 방해석 벽돌", + "block.create.cut_calcite_slab": "깎인 방해석 반 블록", + "block.create.cut_calcite_stairs": "깎인 방해석 계단", + "block.create.cut_calcite_wall": "깎인 방해석 담장", + "block.create.cut_crimsite": "깎인 진홍암", + "block.create.cut_crimsite_brick_slab": "깎인 진홍암 벽돌 반 블록", + "block.create.cut_crimsite_brick_stairs": "깎인 진홍암 벽돌 계단", + "block.create.cut_crimsite_brick_wall": "깎인 진홍암 벽돌 담장", + "block.create.cut_crimsite_bricks": "깎인 진홍암 벽돌", + "block.create.cut_crimsite_slab": "깎인 진홍암 반 블록", + "block.create.cut_crimsite_stairs": "깎인 진홍암 계단", + "block.create.cut_crimsite_wall": "깎인 진홍암 담장", + "block.create.cut_deepslate": "깎인 심층암", + "block.create.cut_deepslate_brick_slab": "깎인 심층암 벽돌 반 블록", + "block.create.cut_deepslate_brick_stairs": "깎인 심층암 벽돌 계단", + "block.create.cut_deepslate_brick_wall": "깎인 심층암 벽돌 담장", + "block.create.cut_deepslate_bricks": "깎인 심층암 벽돌", + "block.create.cut_deepslate_slab": "깎인 심층암 반 블록", + "block.create.cut_deepslate_stairs": "깎인 심층암 계단", + "block.create.cut_deepslate_wall": "깎인 심층암 담장", + "block.create.cut_diorite": "깎인 섬록암", + "block.create.cut_diorite_brick_slab": "깎인 섬록암 벽돌 반 블록", + "block.create.cut_diorite_brick_stairs": "깎인 섬록암 벽돌 계단", + "block.create.cut_diorite_brick_wall": "깎인 섬록암 벽돌 담장", + "block.create.cut_diorite_bricks": "깎인 섬록암 벽돌", + "block.create.cut_diorite_slab": "깎인 섬록암 반 블록", + "block.create.cut_diorite_stairs": "깎인 섬록암 계단", + "block.create.cut_diorite_wall": "깎인 섬록암 담장", + "block.create.cut_dripstone": "깎인 점적석", + "block.create.cut_dripstone_brick_slab": "깎인 점적석 벽돌 반 블록", + "block.create.cut_dripstone_brick_stairs": "깎인 점적석 벽돌 계단", + "block.create.cut_dripstone_brick_wall": "깎인 점적석 벽돌 담장", + "block.create.cut_dripstone_bricks": "깎인 점적석 벽돌", + "block.create.cut_dripstone_slab": "깎인 점적석 반 블록", + "block.create.cut_dripstone_stairs": "깎인 점적석 계단", + "block.create.cut_dripstone_wall": "깎인 점적석 담장", + "block.create.cut_granite": "깎인 화강암", + "block.create.cut_granite_brick_slab": "깎인 화강암 벽돌 반 블록", + "block.create.cut_granite_brick_stairs": "깎인 화강암 벽돌 계단", + "block.create.cut_granite_brick_wall": "깎인 화강암 벽돌 담장", + "block.create.cut_granite_bricks": "깎인 화강암 벽돌", + "block.create.cut_granite_slab": "깎인 화강암 반 블록", + "block.create.cut_granite_stairs": "깎인 화강암 계단", + "block.create.cut_granite_wall": "깎인 화강암 담장", + "block.create.cut_limestone": "깎인 석회암", + "block.create.cut_limestone_brick_slab": "깎인 석회암 벽돌 반 블록", + "block.create.cut_limestone_brick_stairs": "깎인 석회암 벽돌 계단", + "block.create.cut_limestone_brick_wall": "깎인 석회암 벽돌 담장", + "block.create.cut_limestone_bricks": "깎인 석회암 벽돌", + "block.create.cut_limestone_slab": "깎인 석회암 반 블록", + "block.create.cut_limestone_stairs": "깎인 석회암 계단", + "block.create.cut_limestone_wall": "깎인 석회암 담장", + "block.create.cut_ochrum": "깎인 황토암", + "block.create.cut_ochrum_brick_slab": "깎인 황토암 벽돌 반 블록", + "block.create.cut_ochrum_brick_stairs": "깎인 황토암 벽돌 계단", + "block.create.cut_ochrum_brick_wall": "깎인 황토암 벽돌 담장", + "block.create.cut_ochrum_bricks": "깎인 황토암 벽돌", + "block.create.cut_ochrum_slab": "깎인 황토암 반 블록", + "block.create.cut_ochrum_stairs": "깎인 황토암 계단", + "block.create.cut_ochrum_wall": "깎인 황토암 담장", + "block.create.cut_scorchia": "깎인 짙은 스코리아", + "block.create.cut_scorchia_brick_slab": "깎인 짙은 스코리아 벽돌 반 블록", + "block.create.cut_scorchia_brick_stairs": "깎인 짙은 스코리아 벽돌 계단", + "block.create.cut_scorchia_brick_wall": "깎인 짙은 스코리아 벽돌 담장", + "block.create.cut_scorchia_bricks": "깎인 짙은 스코리아 벽돌", + "block.create.cut_scorchia_slab": "깎인 짙은 스코리아 반 블록", + "block.create.cut_scorchia_stairs": "깎인 짙은 스코리아 계단", + "block.create.cut_scorchia_wall": "깎인 짙은 스코리아 담장", + "block.create.cut_scoria": "깎인 스코리아", + "block.create.cut_scoria_brick_slab": "깎인 스코리아 벽돌 반 블록", + "block.create.cut_scoria_brick_stairs": "깎인 스코리아 벽돌 계단", + "block.create.cut_scoria_brick_wall": "깎인 스코리아 벽돌 담장", + "block.create.cut_scoria_bricks": "깎인 스코리아 벽돌", + "block.create.cut_scoria_slab": "깎인 스코리아 반 블록", + "block.create.cut_scoria_stairs": "깎인 스코리아 계단", + "block.create.cut_scoria_wall": "깎인 스코리아 담장", + "block.create.cut_tuff": "깎인 응회암", + "block.create.cut_tuff_brick_slab": "깎인 응회암 벽돌 반 블록", + "block.create.cut_tuff_brick_stairs": "깎인 응회암 벽돌 계단", + "block.create.cut_tuff_brick_wall": "깎인 응회암 벽돌 담장", + "block.create.cut_tuff_bricks": "깎인 응회암 벽돌", + "block.create.cut_tuff_slab": "깎인 응회암 반 블록", + "block.create.cut_tuff_stairs": "깎인 응회암 계단", + "block.create.cut_tuff_wall": "깎인 응회암 담장", + "block.create.cut_veridium": "깎인 심록암", + "block.create.cut_veridium_brick_slab": "깎인 심록암 벽돌 반 블록", + "block.create.cut_veridium_brick_stairs": "깎인 심록암 벽돌 계단", + "block.create.cut_veridium_brick_wall": "깎인 심록암 벽돌 담장", + "block.create.cut_veridium_bricks": "깎인 심록암 벽돌", + "block.create.cut_veridium_slab": "깎인 심록암 반 블록", + "block.create.cut_veridium_stairs": "깎인 심록암 계단", + "block.create.cut_veridium_wall": "깎인 심록암 담장", "block.create.cyan_nixie_tube": "청록색 닉시관", "block.create.cyan_sail": "청록색 날개", "block.create.cyan_seat": "청록색 좌석", @@ -84,76 +190,21 @@ "block.create.cyan_valve_handle": "청록색 밸브 손잡이", "block.create.dark_oak_window": "짙은 참나무 유리창", "block.create.dark_oak_window_pane": "짙은 참나무 유리판", - "block.create.dark_scoria": "짙은 스코리아", - "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", - "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", - "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", - "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", - "block.create.dark_scoria_cobblestone": "짙은 스코리아 조약돌", - "block.create.dark_scoria_cobblestone_slab": "짙은 스코리아 조약돌 반 블록", - "block.create.dark_scoria_cobblestone_stairs": "짙은 스코리아 조약돌 계단", - "block.create.dark_scoria_cobblestone_wall": "짙은 스코리아 조약돌 담장", - "block.create.dark_scoria_pillar": "짙은 스코리아 기둥", - "block.create.deployer": "배포기", + "block.create.deepslate_pillar": "심층암 기둥", + "block.create.deepslate_zinc_ore": "심층암 아연 광석", + "block.create.deployer": "기계 손", "block.create.depot": "아이템 거치대", - "block.create.diorite_bricks": "섬록암 벽돌", - "block.create.diorite_bricks_slab": "섬록암 벽돌 반 블록", - "block.create.diorite_bricks_stairs": "섬록암 벽돌 계단", - "block.create.diorite_bricks_wall": "섬록암 벽돌 담장", - "block.create.diorite_cobblestone": "섬록암 조약돌", - "block.create.diorite_cobblestone_slab": "섬록암 조약돌 반 블록", - "block.create.diorite_cobblestone_stairs": "섬록암 조약돌 계단", - "block.create.diorite_cobblestone_wall": "섬록암 조약돌 담장", "block.create.diorite_pillar": "섬록암 기둥", - "block.create.dolomite": "백운암", - "block.create.dolomite_bricks": "백운암 벽돌", - "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", - "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", - "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", - "block.create.dolomite_cobblestone": "백운암 조약돌", - "block.create.dolomite_cobblestone_slab": "백운암 조약돌 반 블록", - "block.create.dolomite_cobblestone_stairs": "백운암 조약돌 계단", - "block.create.dolomite_cobblestone_wall": "백운암 조약돌 담장", - "block.create.dolomite_pillar": "백운암 기둥", + "block.create.dripstone_pillar": "점적석 기둥", "block.create.encased_chain_drive": "체인 드라이브", "block.create.encased_fan": "선풍기", "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", - "block.create.fancy_andesite_bricks": "장식된 안산암 벽돌", - "block.create.fancy_andesite_bricks_slab": "장식된 안산암 벽돌 반 블록", - "block.create.fancy_andesite_bricks_stairs": "장식된 안산암 벽돌 계단", - "block.create.fancy_andesite_bricks_wall": "장식된 안산암 벽돌 담장", - "block.create.fancy_dark_scoria_bricks": "장식된 짙은 스코리아 벽돌", - "block.create.fancy_dark_scoria_bricks_slab": "장식된 짙은 스코리아 벽돌 반 블록", - "block.create.fancy_dark_scoria_bricks_stairs": "장식된 짙은 스코리아 벽돌 계단", - "block.create.fancy_dark_scoria_bricks_wall": "장식된 짙은 스코리아 벽돌 담장", - "block.create.fancy_diorite_bricks": "장식된 섬록암 벽돌", - "block.create.fancy_diorite_bricks_slab": "장식된 섬록암 벽돌 반 블록", - "block.create.fancy_diorite_bricks_stairs": "장식된 섬록암 벽돌 계단", - "block.create.fancy_diorite_bricks_wall": "장식된 섬록암 벽돌 담장", - "block.create.fancy_dolomite_bricks": "장식된 백운암 벽돌", - "block.create.fancy_dolomite_bricks_slab": "장식된 백운암 벽돌 반 블록", - "block.create.fancy_dolomite_bricks_stairs": "장식된 백운암 벽돌 계단", - "block.create.fancy_dolomite_bricks_wall": "장식된 백운암 벽돌 담장", - "block.create.fancy_gabbro_bricks": "장식된 반려암 벽돌", - "block.create.fancy_gabbro_bricks_slab": "장식된 반려암 벽돌 반 블록", - "block.create.fancy_gabbro_bricks_stairs": "장식된 반려암 벽돌 계단", - "block.create.fancy_gabbro_bricks_wall": "장식된 반려암 벽돌 담장", - "block.create.fancy_granite_bricks": "장식된 화강암 벽돌", - "block.create.fancy_granite_bricks_slab": "장식된 화강암 벽돌 반 블록", - "block.create.fancy_granite_bricks_stairs": "장식된 화강암 벽돌 계단", - "block.create.fancy_granite_bricks_wall": "장식된 화강암 벽돌 담장", - "block.create.fancy_limestone_bricks": "장식된 석회암 벽돌", - "block.create.fancy_limestone_bricks_slab": "장식된 석회암 벽돌 반 블록", - "block.create.fancy_limestone_bricks_stairs": "장식된 석회암 벽돌 계단", - "block.create.fancy_limestone_bricks_wall": "장식된 석회암 벽돌 담장", - "block.create.fancy_scoria_bricks": "장식된 스코리아 벽돌", - "block.create.fancy_scoria_bricks_slab": "장식된 스코리아 벽돌 반 블록", - "block.create.fancy_scoria_bricks_stairs": "장식된 스코리아 벽돌 계단", - "block.create.fancy_scoria_bricks_wall": "장식된 스코리아 벽돌 담장", - "block.create.fancy_weathered_limestone_bricks": "장식된 풍화된 석회암 벽돌", - "block.create.fancy_weathered_limestone_bricks_slab": "장식된 풍화된 석회암 벽돌 반 블록", - "block.create.fancy_weathered_limestone_bricks_stairs": "장식된 풍화된 석회암 벽돌 계단", - "block.create.fancy_weathered_limestone_bricks_wall": "장식된 풍화된 석회암 벽돌 담장", + "block.create.exposed_copper_shingle_slab": "약간 녹슨 구리 판자 반 블록", + "block.create.exposed_copper_shingle_stairs": "약간 녹슨 구리 판자 계단", + "block.create.exposed_copper_shingles": "약간 녹슨 구리 판자", + "block.create.exposed_copper_tile_slab": "약간 녹슨 구리 타일 반 블록", + "block.create.exposed_copper_tile_stairs": "약간 녹슨 구리 타일 계단", + "block.create.exposed_copper_tiles": "약간 녹슨 구리 타일", "block.create.fluid_pipe": "액체 파이프", "block.create.fluid_tank": "액체 탱크", "block.create.fluid_valve": "액체 밸브", @@ -161,29 +212,11 @@ "block.create.framed_glass": "큰 유리", "block.create.framed_glass_pane": "큰 유리판", "block.create.furnace_engine": "화로 엔진", - "block.create.gabbro": "반려암", - "block.create.gabbro_bricks": "반려암 벽돌", - "block.create.gabbro_bricks_slab": "반려암 벽돌 반 블록", - "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", - "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", - "block.create.gabbro_cobblestone": "반려암 조약돌", - "block.create.gabbro_cobblestone_slab": "반려암 조약돌 반 블록", - "block.create.gabbro_cobblestone_stairs": "반려암 조약돌 계단", - "block.create.gabbro_cobblestone_wall": "반려암 조약돌 담장", - "block.create.gabbro_pillar": "반려암 기둥", "block.create.gantry_carriage": "갠트리 운반대", "block.create.gantry_shaft": "갠트리 축", "block.create.gearbox": "기어박스", "block.create.gearshift": "기어쉬프트", "block.create.glass_fluid_pipe": "액체 파이프", - "block.create.granite_bricks": "화강암 벽돌", - "block.create.granite_bricks_slab": "화강암 벽돌 반 블록", - "block.create.granite_bricks_stairs": "화강암 벽돌 계단", - "block.create.granite_bricks_wall": "화강암 벽돌 담장", - "block.create.granite_cobblestone": "화강암 조약돌", - "block.create.granite_cobblestone_slab": "화강암 조약돌 반 블록", - "block.create.granite_cobblestone_stairs": "화강암 조약돌 계단", - "block.create.granite_cobblestone_wall": "화강암 조약돌 담장", "block.create.granite_pillar": "화강암 기둥", "block.create.gray_nixie_tube": "회색 닉시관", "block.create.gray_sail": "회색 날개", @@ -202,18 +235,24 @@ "block.create.horizontal_framed_glass_pane": "수평 유리판", "block.create.hose_pulley": "호스 도르래", "block.create.item_drain": "아이템 배수구", + "block.create.item_vault": "아이템 금고", "block.create.jungle_window": "정글나무 유리창", "block.create.jungle_window_pane": "정글나무 유리판", "block.create.large_cogwheel": "큰 톱니바퀴", "block.create.layered_andesite": "이어지는 안산암", - "block.create.layered_dark_scoria": "이어지는 짙은 스코리아", + "block.create.layered_asurine": "이어지는 유리암", + "block.create.layered_calcite": "이어지는 방해석", + "block.create.layered_crimsite": "이어지는 진홍암", + "block.create.layered_deepslate": "이어지는 심층암", "block.create.layered_diorite": "이어지는 섬록암", - "block.create.layered_dolomite": "이어지는 백운암", - "block.create.layered_gabbro": "이어지는 반려암", + "block.create.layered_dripstone": "이어지는 점적석", "block.create.layered_granite": "이어지는 화강암", "block.create.layered_limestone": "이어지는 석회암", + "block.create.layered_ochrum": "이어지는 황토암", + "block.create.layered_scorchia": "이어지는 짙은 스코리아", "block.create.layered_scoria": "이어지는 스코리아", - "block.create.layered_weathered_limestone": "이어지는 풍화된 석회암", + "block.create.layered_tuff": "이어지는 응회암", + "block.create.layered_veridium": "이어지는 심록암", "block.create.lectern_controller": "독서대 조작기", "block.create.light_blue_nixie_tube": "하늘색 닉시관", "block.create.light_blue_sail": "하늘색 날개", @@ -230,16 +269,7 @@ "block.create.lime_seat": "연두색 좌석", "block.create.lime_toolbox": "연두색 공구상자", "block.create.lime_valve_handle": "연두색 밸브 손잡이", - "block.create.limesand": "석회모래", "block.create.limestone": "석회암", - "block.create.limestone_bricks": "석회암 벽돌", - "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", - "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", - "block.create.limestone_bricks_wall": "석회암 벽돌 담장", - "block.create.limestone_cobblestone": "석회암 조약돌", - "block.create.limestone_cobblestone_slab": "석회암 조약돌 반 블록", - "block.create.limestone_cobblestone_stairs": "석회암 조약돌 계단", - "block.create.limestone_cobblestone_wall": "석회암 조약돌 담장", "block.create.limestone_pillar": "석회암 기둥", "block.create.linear_chassis": "어두운 직선 섀시", "block.create.lit_blaze_burner": "불타는 빈 블레이즈 버너", @@ -263,72 +293,25 @@ "block.create.metal_bracket": "금속 지지대", "block.create.millstone": "맷돌", "block.create.minecart_anchor": "광산 수레 정박기", - "block.create.mossy_andesite": "이끼 낀 안산암", - "block.create.mossy_dark_scoria": "이끼 낀 짙은 스코리아", - "block.create.mossy_diorite": "이끼 낀 섬록암", - "block.create.mossy_dolomite": "이끼 낀 백운암", - "block.create.mossy_gabbro": "이끼 낀 반려암", - "block.create.mossy_granite": "이끼 낀 화강암 벽돌", - "block.create.mossy_limestone": "이끼 낀 석회암", - "block.create.mossy_scoria": "이끼 낀 스코리아", - "block.create.mossy_weathered_limestone": "이끼 낀 풍화된 석회암", "block.create.mysterious_cuckoo_clock": "뻐꾸기 시계?", - "block.create.natural_scoria": "자연 스코리아", "block.create.nixie_tube": "닉시관", "block.create.nozzle": "노즐", "block.create.oak_window": "참나무 유리창", "block.create.oak_window_pane": "참나무 유리판", + "block.create.ochrum": "황토암", + "block.create.ochrum_pillar": "황토암 기둥", "block.create.orange_sail": "주황색 날개", "block.create.orange_seat": "주황색 좌석", "block.create.orange_toolbox": "주황색 공구상자", "block.create.orange_valve_handle": "주황색 밸브 손잡이", "block.create.ornate_iron_window": "장식된 철 유리창", "block.create.ornate_iron_window_pane": "장식된 철 유리판", - "block.create.overgrown_andesite": "이끼로 뒤덮힌 안산암", - "block.create.overgrown_dark_scoria": "이끼가 뒤덮힌 짙은 스코리아", - "block.create.overgrown_diorite": "이끼로 뒤덮힌 섬록암", - "block.create.overgrown_dolomite": "이끼로 뒤덮힌 백운암", - "block.create.overgrown_gabbro": "이끼로 뒤덮힌 반려암", - "block.create.overgrown_granite": "이끼로 뒤덮힌 화강암 벽돌", - "block.create.overgrown_limestone": "이끼로 뒤덮힌 석회암", - "block.create.overgrown_scoria": "이끼로 뒤덮힌 스코리아", - "block.create.overgrown_weathered_limestone": "이끼로 뒤덮힌 풍화된 석회암", - "block.create.paved_andesite": "포장된 안산암", - "block.create.paved_andesite_slab": "포장된 안산암 반 블록", - "block.create.paved_andesite_stairs": "포장된 안산암 계단", - "block.create.paved_andesite_wall": "포장된 안산암 담장", - "block.create.paved_dark_scoria": "포장된 짙은 스코리아", - "block.create.paved_dark_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_dark_scoria_stairs": "포장된 짙은 스코리 계단", - "block.create.paved_dark_scoria_wall": "포장된 짙은 스코리아 담장", - "block.create.paved_diorite": "포장된 섬록암", - "block.create.paved_diorite_slab": "포장된 섬록암 반 블록", - "block.create.paved_diorite_stairs": "포장된 섬록암 계단", - "block.create.paved_diorite_wall": "포장된 섬록암 담장", - "block.create.paved_dolomite": "포장된 백운암", - "block.create.paved_dolomite_slab": "포장된 백운암 반 블록", - "block.create.paved_dolomite_stairs": "포장된 백운암 계단", - "block.create.paved_dolomite_wall": "포장된 백운암 담장", - "block.create.paved_gabbro": "포장된 반려암", - "block.create.paved_gabbro_slab": "포장된 반려암 반 블록", - "block.create.paved_gabbro_stairs": "포장된 반려암 계단", - "block.create.paved_gabbro_wall": "포장된 반려암 담장", - "block.create.paved_granite": "포장된 화강암", - "block.create.paved_granite_slab": "포장된 화강암 반 블록", - "block.create.paved_granite_stairs": "포장된 화강암 계단", - "block.create.paved_granite_wall": "포장된 화강암 담장", - "block.create.paved_limestone": "포장된 석회암", - "block.create.paved_limestone_slab": "포장된 석회암 반 블록", - "block.create.paved_limestone_stairs": "포장된 석회암 계단", - "block.create.paved_limestone_wall": "포장된 석회암 담장", - "block.create.paved_scoria": "포장된 스코리아", - "block.create.paved_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_scoria_stairs": "포장된 스코리아 계단", - "block.create.paved_scoria_wall": "포장된 스코리아 담장", - "block.create.paved_weathered_limestone": "포장된 풍화된 석회암", - "block.create.paved_weathered_limestone_slab": "포장된 풍화된 석회암 반 블록", - "block.create.paved_weathered_limestone_stairs": "포장된 풍화된 석회암 계단", - "block.create.paved_weathered_limestone_wall": "포장된 풍화된 석회암 담장", + "block.create.oxidized_copper_shingle_slab": "산화된 구리 판자 반 블록", + "block.create.oxidized_copper_shingle_stairs": "산화된 구리 판자 계단", + "block.create.oxidized_copper_shingles": "산화된 구리 판자", + "block.create.oxidized_copper_tile_slab": "산화된 구리 타일 반 블록", + "block.create.oxidized_copper_tile_stairs": "산화된 구리 타일 계단", + "block.create.oxidized_copper_tiles": "산화된 구리 타일", "block.create.peculiar_bell": "황동 종", "block.create.pink_nixie_tube": "분홍색 닉시관", "block.create.pink_sail": "분홍색 날개", @@ -336,35 +319,68 @@ "block.create.pink_toolbox": "분홍색 공구상자", "block.create.pink_valve_handle": "분홍색 밸브 손잡이", "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.polished_dark_scoria_slab": "윤나는 짙은 스코리아 반 블록", - "block.create.polished_dark_scoria_stairs": "윤나는 짙은 스코리아 계단", - "block.create.polished_dark_scoria_wall": "윤나는 짙은 스코리아 담장", - "block.create.polished_dolomite": "윤나는 백운암", - "block.create.polished_dolomite_slab": "윤나는 백운암 반 블록", - "block.create.polished_dolomite_stairs": "윤나는 백운암 계단", - "block.create.polished_dolomite_wall": "윤나는 백운암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.polished_gabbro_slab": "윤나는 반려암 반 블록", - "block.create.polished_gabbro_stairs": "윤나는 반려암 계단", - "block.create.polished_gabbro_wall": "윤나는 반려암 담장", - "block.create.polished_limestone": "윤나는 석회암", - "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", - "block.create.polished_limestone_stairs": "윤나는 석회암 계단", - "block.create.polished_limestone_wall": "윤나는 석회암 담장", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", - "block.create.polished_scoria_stairs": "윤나는 스코리아 계단", - "block.create.polished_scoria_wall": "윤나는 스코리아 담장", - "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", - "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", - "block.create.polished_weathered_limestone_stairs": "윤나는 풍화된 석회암 계단", - "block.create.polished_weathered_limestone_wall": "윤나는 풍화된 석회암 담장", + "block.create.polished_cut_andesite": "윤나는 깎인 안산암", + "block.create.polished_cut_andesite_slab": "윤나는 깎인 안산암 반 블록", + "block.create.polished_cut_andesite_stairs": "윤나는 깎인 안산암 계단", + "block.create.polished_cut_andesite_wall": "윤나는 깎인 안산암 담장", + "block.create.polished_cut_asurine": "윤나는 깎인 유리암", + "block.create.polished_cut_asurine_slab": "윤나는 깎인 유리암 반 블록", + "block.create.polished_cut_asurine_stairs": "윤나는 깎인 유리암 계단", + "block.create.polished_cut_asurine_wall": "윤나는 깎인 유리암 담장", + "block.create.polished_cut_calcite": "윤나는 깎인 방해석", + "block.create.polished_cut_calcite_slab": "윤나는 깎인 방해석 반 블록", + "block.create.polished_cut_calcite_stairs": "윤나는 깎인 방해석 계단", + "block.create.polished_cut_calcite_wall": "윤나는 깎인 방해석 담장", + "block.create.polished_cut_crimsite": "윤나는 깎인 진홍암", + "block.create.polished_cut_crimsite_slab": "윤나는 깎인 진홍암 반 블록", + "block.create.polished_cut_crimsite_stairs": "윤나는 깎인 진홍암 계단", + "block.create.polished_cut_crimsite_wall": "윤나는 깎인 진홍암 담장", + "block.create.polished_cut_deepslate": "윤나는 깎인 심층암", + "block.create.polished_cut_deepslate_slab": "윤나는 깎인 심층암 반 블록", + "block.create.polished_cut_deepslate_stairs": "윤나는 깎인 심층암 계단", + "block.create.polished_cut_deepslate_wall": "윤나는 깎인 심층암 담장", + "block.create.polished_cut_diorite": "윤나는 깎인 섬록암", + "block.create.polished_cut_diorite_slab": "윤나는 깎인 섬록암 반 블록", + "block.create.polished_cut_diorite_stairs": "윤나는 깎인 섬록암 계단", + "block.create.polished_cut_diorite_wall": "윤나는 깎인 섬록암 담장", + "block.create.polished_cut_dripstone": "윤나는 깎인 점적석", + "block.create.polished_cut_dripstone_slab": "윤나는 깎인 점적석 반 블록", + "block.create.polished_cut_dripstone_stairs": "윤나는 깎인 점적석 계단", + "block.create.polished_cut_dripstone_wall": "윤나는 깎인 점적석 담장", + "block.create.polished_cut_granite": "윤나는 깎인 화강암", + "block.create.polished_cut_granite_slab": "윤나는 깎인 화강암 반 블록", + "block.create.polished_cut_granite_stairs": "윤나는 깎인 화강암 계단", + "block.create.polished_cut_granite_wall": "윤나는 깎인 화강암 담장", + "block.create.polished_cut_limestone": "윤나는 깎인 석회암", + "block.create.polished_cut_limestone_slab": "윤나는 깎인 석회암 반 블록", + "block.create.polished_cut_limestone_stairs": "윤나는 깎인 석회암 계단", + "block.create.polished_cut_limestone_wall": "윤나는 깎인 석회암 담장", + "block.create.polished_cut_ochrum": "윤나는 깎인 황토암", + "block.create.polished_cut_ochrum_slab": "윤나는 깎인 황토암 반 블록", + "block.create.polished_cut_ochrum_stairs": "윤나는 깎인 황토암 계단", + "block.create.polished_cut_ochrum_wall": "윤나는 깎인 황토암 담장", + "block.create.polished_cut_scorchia": "윤나는 깎인 짙은 스코리아", + "block.create.polished_cut_scorchia_slab": "윤나는 깎인 짙은 스코리아 반 블록", + "block.create.polished_cut_scorchia_stairs": "윤나는 깎인 짙은 스코리아 계단", + "block.create.polished_cut_scorchia_wall": "윤나는 깎인 짙은 스코리아 담장", + "block.create.polished_cut_scoria": "윤나는 깎인 스코리아", + "block.create.polished_cut_scoria_slab": "윤나는 깎인 스코리아 반 블록", + "block.create.polished_cut_scoria_stairs": "윤나는 깎인 스코리아 계단", + "block.create.polished_cut_scoria_wall": "윤나는 깎인 스코리아 담장", + "block.create.polished_cut_tuff": "윤나는 깎인 응회암", + "block.create.polished_cut_tuff_slab": "윤나는 깎인 응회암 반 블록", + "block.create.polished_cut_tuff_stairs": "윤나는 깎인 응회암 계단", + "block.create.polished_cut_tuff_wall": "윤나는 깎인 응회암 담장", + "block.create.polished_cut_veridium": "윤나는 깎인 심록암", + "block.create.polished_cut_veridium_slab": "윤나는 깎인 심록암 반 블록", + "block.create.polished_cut_veridium_stairs": "윤나는 깎인 심록암 계단", + "block.create.polished_cut_veridium_wall": "윤나는 깎인 심록암 담장", "block.create.portable_fluid_interface": "액체 인터페이스", "block.create.portable_storage_interface": "아이템 인터페이스", "block.create.powered_latch": "레드스톤 걸쇠", "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", "block.create.pulley_magnet": "도르래 자석", + "block.create.pulse_extender": "펄스 연장기", "block.create.pulse_repeater": "펄스 중계기", "block.create.purple_nixie_tube": "보라색 닉시관", "block.create.purple_sail": "보라색 날개", @@ -372,6 +388,7 @@ "block.create.purple_toolbox": "보라색 공구상자", "block.create.purple_valve_handle": "보라색 밸브 손잡이", "block.create.radial_chassis": "원형 섀시", + "block.create.raw_zinc_block": "아연 원석 블록", "block.create.red_nixie_tube": "빨간색 닉시관", "block.create.red_sail": "빨간색 날개", "block.create.red_seat": "빨간색 좌석", @@ -380,27 +397,76 @@ "block.create.redstone_contact": "동형 감지기", "block.create.redstone_link": "레드스톤 링크", "block.create.refined_radiance_casing": "빛나는 케이스", - "block.create.reinforced_rail": "강화된 레일", "block.create.rope": "밧줄", "block.create.rope_pulley": "밧줄 도르래", "block.create.rotation_speed_controller": "회전 속도 컨트롤러", "block.create.sail_frame": "풍차 날개 틀", "block.create.schematic_table": "청사진 탁자", "block.create.schematicannon": "청사진 대포", + "block.create.scorchia": "짙은 스코리아", + "block.create.scorchia_pillar": "짙은 스코리아 기둥", "block.create.scoria": "스코리아", - "block.create.scoria_bricks": "스코리아 벽돌", - "block.create.scoria_bricks_slab": "스코리아 벽돌 반 블록", - "block.create.scoria_bricks_stairs": "스코리아 벽돌 계단", - "block.create.scoria_bricks_wall": "스코리아 벽돌 담장", - "block.create.scoria_cobblestone": "스코리아 조약돌", - "block.create.scoria_cobblestone_slab": "스코리아 조약돌 반 블록", - "block.create.scoria_cobblestone_stairs": "스코리아 조약돌 계단", - "block.create.scoria_cobblestone_wall": "스코리아 조약돌 담장", "block.create.scoria_pillar": "스코리아 기둥", "block.create.secondary_linear_chassis": "밝은 직선 섀시", "block.create.sequenced_gearshift": "순서 기어쉬프트", "block.create.shadow_steel_casing": "그림자 케이스", "block.create.shaft": "축", + "block.create.small_andesite_brick_slab": "작은 안산암 벽돌 반 블록", + "block.create.small_andesite_brick_stairs": "작은 안산암 벽돌 계단", + "block.create.small_andesite_brick_wall": "작은 안산암 벽돌 담장", + "block.create.small_andesite_bricks": "작은 안산암 벽돌", + "block.create.small_asurine_brick_slab": "작은 유리암 벽돌 반 블록", + "block.create.small_asurine_brick_stairs": "작은 유리암 벽돌 계단", + "block.create.small_asurine_brick_wall": "작은 유리암 벽돌 담장", + "block.create.small_asurine_bricks": "작은 유리암 벽돌", + "block.create.small_calcite_brick_slab": "작은 방해석 벽돌 반 블록", + "block.create.small_calcite_brick_stairs": "작은 방해석 벽돌 계단", + "block.create.small_calcite_brick_wall": "작은 방해석 벽돌 담장", + "block.create.small_calcite_bricks": "작은 방해석 벽돌", + "block.create.small_crimsite_brick_slab": "작은 진홍암 벽돌 반 블록", + "block.create.small_crimsite_brick_stairs": "작은 진홍암 벽돌 계단", + "block.create.small_crimsite_brick_wall": "작은 진홍암 벽돌 담장", + "block.create.small_crimsite_bricks": "작은 진홍암 벽돌", + "block.create.small_deepslate_brick_slab": "작은 심층암 벽돌 반 블록", + "block.create.small_deepslate_brick_stairs": "작은 심층암 벽돌 계단", + "block.create.small_deepslate_brick_wall": "작은 심층암 벽돌 담장", + "block.create.small_deepslate_bricks": "작은 심층암 벽돌", + "block.create.small_diorite_brick_slab": "작은 섬록암 벽돌 반 블록", + "block.create.small_diorite_brick_stairs": "작은 섬록암 벽돌 계단", + "block.create.small_diorite_brick_wall": "작은 섬록암 벽돌 담장", + "block.create.small_diorite_bricks": "작은 섬록암 벽돌", + "block.create.small_dripstone_brick_slab": "작은 점적석 벽돌 반 블록", + "block.create.small_dripstone_brick_stairs": "작은 점적석 벽돌 계단", + "block.create.small_dripstone_brick_wall": "작은 점적석 벽돌 담장", + "block.create.small_dripstone_bricks": "작은 점적석 벽돌", + "block.create.small_granite_brick_slab": "작은 화강암 벽돌 반 블록", + "block.create.small_granite_brick_stairs": "작은 화강암 벽돌 계단", + "block.create.small_granite_brick_wall": "작은 화강암 벽돌 담장", + "block.create.small_granite_bricks": "작은 화강암 벽돌", + "block.create.small_limestone_brick_slab": "작은 석회암 벽돌 반 블록", + "block.create.small_limestone_brick_stairs": "작은 석회암 벽돌 계단", + "block.create.small_limestone_brick_wall": "작은 석회암 벽돌 담장", + "block.create.small_limestone_bricks": "작은 석회암 벽돌", + "block.create.small_ochrum_brick_slab": "작은 황토암 벽돌 반 블록", + "block.create.small_ochrum_brick_stairs": "작은 황토암 벽돌 계단", + "block.create.small_ochrum_brick_wall": "작은 황토암 벽돌 담장", + "block.create.small_ochrum_bricks": "작은 황토암 벽돌", + "block.create.small_scorchia_brick_slab": "작은 짙은 스코리아 벽돌 반 블록", + "block.create.small_scorchia_brick_stairs": "작은 짙은 스코리아 벽돌 계단", + "block.create.small_scorchia_brick_wall": "작은 짙은 스코리아 벽돌 담장", + "block.create.small_scorchia_bricks": "작은 짙은 스코리아 벽돌", + "block.create.small_scoria_brick_slab": "작은 스코리아 벽돌 반 블록", + "block.create.small_scoria_brick_stairs": "작은 스코리아 벽돌 계단", + "block.create.small_scoria_brick_wall": "작은 스코리아 벽돌 담장", + "block.create.small_scoria_bricks": "작은 스코리아 벽돌", + "block.create.small_tuff_brick_slab": "작은 응회암 벽돌 반 블록", + "block.create.small_tuff_brick_stairs": "작은 응회암 벽돌 계단", + "block.create.small_tuff_brick_wall": "작은 응회암 벽돌 담장", + "block.create.small_tuff_bricks": "작은 응회암 벽돌", + "block.create.small_veridium_brick_slab": "작은 심록암 벽돌 반 블록", + "block.create.small_veridium_brick_stairs": "작은 심록암 벽돌 계단", + "block.create.small_veridium_brick_wall": "작은 심록암 벽돌 담장", + "block.create.small_veridium_bricks": "작은 심록암 벽돌", "block.create.smart_chute": "스마트 슈트", "block.create.smart_fluid_pipe": "스마트 액체 파이프", "block.create.speedometer": "속도 계측기", @@ -413,22 +479,45 @@ "block.create.stressometer": "피로도 계측기", "block.create.tiled_glass": "타일 유리", "block.create.tiled_glass_pane": "타일 유리판", + "block.create.tuff_pillar": "응회암 기둥", "block.create.turntable": "돌림판", + "block.create.veridium": "심록암", + "block.create.veridium_pillar": "심록암 기둥", "block.create.vertical_framed_glass": "수직 유리", "block.create.vertical_framed_glass_pane": "수직 유리판", "block.create.warped_window": "뒤틀린 유리창", "block.create.warped_window_pane": "뒤틀린 유리판", "block.create.water_wheel": "물레바퀴", - "block.create.weathered_limestone": "풍화된 석회암", - "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", - "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", - "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", - "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", - "block.create.weathered_limestone_cobblestone": "풍화된 석회암 조약돌", - "block.create.weathered_limestone_cobblestone_slab": "풍화된 석회암 조약돌 반 블록", - "block.create.weathered_limestone_cobblestone_stairs": "풍화된 석회암 조약돌 계단", - "block.create.weathered_limestone_cobblestone_wall": "풍화된 석회암 조약돌 담장", - "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", + "block.create.waxed_copper_shingle_slab": "밀랍칠한 구리 판자 반 블록", + "block.create.waxed_copper_shingle_stairs": "밀랍칠한 구리 판자 계단", + "block.create.waxed_copper_shingles": "밀랍칠한 구리 판자", + "block.create.waxed_copper_tile_slab": "밀랍칠한 구리 타일 반 블록", + "block.create.waxed_copper_tile_stairs": "밀랍칠한 구리 타일 계단", + "block.create.waxed_copper_tiles": "밀랍칠한 구리 타일", + "block.create.waxed_exposed_copper_shingle_slab": "밀랍칠한 약간 녹슨 구리 판자 반 블록", + "block.create.waxed_exposed_copper_shingle_stairs": "밀랍칠한 약간 녹슨 구리 판자 계단", + "block.create.waxed_exposed_copper_shingles": "밀랍칠한 약간 녹슨 구리 판자", + "block.create.waxed_exposed_copper_tile_slab": "밀랍칠한 약간 녹슨 구리 타일 반 블록", + "block.create.waxed_exposed_copper_tile_stairs": "밀랍칠한 약간 녹슨 구리 타일 계단", + "block.create.waxed_exposed_copper_tiles": "밀랍칠한 약간 녹슨 구리 타일", + "block.create.waxed_oxidized_copper_shingle_slab": "밀랍칠한 산화된 구리 판자 반 블록", + "block.create.waxed_oxidized_copper_shingle_stairs": "밀랍칠한 산화된 구리 판자 계단", + "block.create.waxed_oxidized_copper_shingles": "밀랍칠한 산화된 구리 판자", + "block.create.waxed_oxidized_copper_tile_slab": "밀랍칠한 산화된 구리 타일 반 블록", + "block.create.waxed_oxidized_copper_tile_stairs": "밀랍칠한 산화된 구리 타일 계단", + "block.create.waxed_oxidized_copper_tiles": "밀랍칠한 산화된 구리 타일", + "block.create.waxed_weathered_copper_shingle_slab": "밀랍칠한 녹슨 구리 판자 반 블록", + "block.create.waxed_weathered_copper_shingle_stairs": "밀랍칠한 녹슨 구리 판자 계단", + "block.create.waxed_weathered_copper_shingles": "밀랍칠한 녹슨 구리 판자", + "block.create.waxed_weathered_copper_tile_slab": "밀랍칠한 녹슨 구리 타일 반 블록", + "block.create.waxed_weathered_copper_tile_stairs": "밀랍칠한 녹슨 구리 타일 계단", + "block.create.waxed_weathered_copper_tiles": "밀랍칠한 녹슨 구리 타일", + "block.create.weathered_copper_shingle_slab": "녹슨 구리 판자 반 블록", + "block.create.weathered_copper_shingle_stairs": "녹슨 구리 판자 계단", + "block.create.weathered_copper_shingles": "녹슨 구리 판자", + "block.create.weathered_copper_tile_slab": "녹슨 구리 타일 반 블록", + "block.create.weathered_copper_tile_stairs": "녹슨 구리 타일 계단", + "block.create.weathered_copper_tiles": "녹슨 구리 타일", "block.create.weighted_ejector": "투척기", "block.create.white_nixie_tube": "하얀색 닉시관", "block.create.white_sail": "하얀색 날개", @@ -476,14 +565,12 @@ "item.create.chromatic_compound": "색채 혼합물", "item.create.cinder_flour": "잿가루", "item.create.copper_backtank": "구리 산소통", - "item.create.copper_ingot": "구리 주괴", "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", "item.create.crafter_slot_cover": "조합기 슬롯 덮개", "item.create.crafting_blueprint": "조합 청사진", "item.create.creative_blaze_cake": "크리에이티브 블레이즈 케이크", "item.create.crushed_aluminum_ore": "분쇄된 알루미늄 광석", - "item.create.crushed_brass": "분쇄된 황동", "item.create.crushed_copper_ore": "분쇄된 구리 광석", "item.create.crushed_gold_ore": "분쇄된 금 광석", "item.create.crushed_iron_ore": "분쇄된 철 광석", @@ -502,6 +589,7 @@ "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", "item.create.empty_schematic": "빈 청사진", + "item.create.experience_nugget": "경험의 조각", "item.create.extendo_grip": "외장형 연장 팔", "item.create.filter": "필터 틀", "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 구조물", @@ -522,6 +610,7 @@ "item.create.powdered_obsidian": "흑요석 가루", "item.create.precision_mechanism": "정밀 기계장치", "item.create.propeller": "프로펠러", + "item.create.raw_zinc": "아연 원석", "item.create.red_sand_paper": "붉은 사포", "item.create.refined_radiance": "정제된 광채", "item.create.rose_quartz": "장밋빛 석영", @@ -658,7 +747,7 @@ "advancement.create.nixie_tube": "나는 스타일있게 표시해", "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 작동시키세요.", + "advancement.create.deployer.desc": "당신의 분신, 기계 손을 설치하고 작동시키세요.", "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.flywheel": "공장의 심장", @@ -676,19 +765,11 @@ "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", + "advancement.create.fist_bump.desc": "두 기계 손을 서로 부딫치게 하세요.", "advancement.create.crushing_wheel": "한 쌍의 거인들", "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", "advancement.create.blaze_cake": "폭주", "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.chromatic_compound": "양극성 재료", - "advancement.create.chromatic_compound.desc": "색채 혼합물를 만드세요.", - "advancement.create.shadow_steel": "공허에서의 복귀", - "advancement.create.shadow_steel.desc": "무의 금속, 그림자 강철을 생성하세요.", - "advancement.create.refined_radiance": "빛으로부터의 자극", - "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", - "advancement.create.chromatic_age": "양극 시대", - "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", "advancement.create.wand_of_symmetry": "빛나는 건축", "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", "advancement.create.extendo_grip": "띠요옹!", @@ -721,7 +802,7 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", "death.attack.create.cuckoo_clock_explosion.player": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", - "create.block.deployer.damage_source_name": "배포기", + "create.block.deployer.damage_source_name": "기계 손", "create.block.cart_assembler.invalid": "카트 조립기를 레일 위에 설치하세요", "create.menu.return": "메뉴로 돌아가기", @@ -742,7 +823,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", - "create.recipe.deploying": "Deploying", + "create.recipe.deploying": "행동 모방", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -1015,12 +1096,12 @@ "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skip타일Entities": "타일 엔티티를 보호", "create.gui.schematicannon.slot.gunpowder": "화약을 넣어 대포 연료를 채우세요", "create.gui.schematicannon.slot.listPrinter": "책을 넣어 건축 재료 체크리스트를 인쇄하세요", "create.gui.schematicannon.slot.schematic": "여기에 청사진을 넣으세요. 건설 구역이 설정되어 있어야 합니다.", "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블록을 찾지 못할 경우,건너뛰고 다음 블록 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", + "create.gui.schematicannon.option.skip타일Entities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", @@ -1045,7 +1126,7 @@ "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", "create.materialChecklist": "재료 목록", - "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러와지지 않아 재료 목록이 부정확할 수 있습니다.", + "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러올 수 없어 재료 목록이 부정확할 수 있습니다.", "create.gui.filter.deny_list": "블랙리스트", "create.gui.filter.deny_list.description": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", @@ -1220,8 +1301,8 @@ "create.hint.mechanical_arm_no_targets": "이 _기계 팔_은 _목표_가 설정되지 않았습니다. _기계 팔을 손에 들고_ 벨트, 아이템 거치대, 퍼널을 _우클릭_하여 목표로 지정하세요.", "create.hint.empty_bearing.title": "베어링 업데이트", "create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.", - "create.hint.full_deployer.title": "배포기 아이템 과적", - "create.hint.full_deployer": "이 _배포기_는 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", + "create.hint.full_deployer.title": "기계 손 아이템 과적", + "create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", @@ -1252,6 +1333,7 @@ "create.subtitle.mechanical_press_activation_belt": "압착기가 작동함", "create.subtitle.fwoomp": "감자포를 쏨", "create.subtitle.worldshaper_place": "세계편집기가 쏨", + "create.subtitle.sanding_long": "사포를 사용함", "create.subtitle.crushing_1": "분쇄되는 소리", "create.subtitle.depot_slide": "아이템이 미끄러짐", "create.subtitle.saw_activate_stone": "톱이 작동함", @@ -1264,13 +1346,13 @@ "create.subtitle.controller_put": "조작기를 놓음", "create.subtitle.cranking": "크랭크가 돌아감", "create.subtitle.wrench_remove": "장치가 부숴짐", + "create.subtitle.sanding_short": "사포를 사용함", "create.subtitle.cogs": "톱니바퀴가 돌아감", "create.subtitle.slime_added": "슬라임이 철퍽거림", "create.subtitle.wrench_rotate": "렌치를 사용함", "create.subtitle.potato_hit": "채소가 부딫힘", "create.subtitle.saw_activate_wood": "톱이 작동함", "create.subtitle.haunted_bell_convert": "종에 귀신이 들림", - "create.subtitle.deployer_polish": "배포기가 윤나게 함", "create.subtitle.deny": "취소음", "create.subtitle.controller_click": "조작기를 누름", "create.subtitle.schematicannon_launch_block": "청사진 대포가 발사함", @@ -1442,11 +1524,6 @@ "block.create.content_observer.tooltip.condition2": "퍼널을 탐지할 때", "block.create.content_observer.tooltip.behaviour2": "_필터 아이템_이 이동하면 _레드스톤 펄스_를 방출합니다.", - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "이 보관함는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", - "block.create.adjustable_crate.tooltip.condition1": "우클릭", - "block.create.adjustable_crate.tooltip.behaviour1": "설정 창을 엽니다.", - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", "block.create.creative_crate.tooltip.summary": "이 상자는 아무 아이템을 _무한히_ 저장합니다. 청사진 대포 옆에 놓을 시 준비물을 _전부_ 공급합니다.", "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", @@ -1463,7 +1540,7 @@ "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", + "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 기계 손이 자동으로 쓸 수 있습니다.", "item.create.sand_paper.tooltip.condition1": "사용할 때", "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", @@ -1520,6 +1597,11 @@ "item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때", "item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.", + "item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE", + "item.create.experience_nugget.tooltip.summary": "_띵!_ 당신의 멋진 발명품에서 탄생한 _영감_의 알맹이입니다.", + "item.create.experience_nugget.tooltip.condition1": "사용했을 때", + "item.create.experience_nugget.tooltip.behaviour1": "담겨져 있던 _경험치_를 _배출_합니다.", + "block.create.peculiar_bell.tooltip": "PECULIAR BELL", "block.create.peculiar_bell.tooltip.summary": "장식을 위한 황동 종입니다. 영혼 불꽃 위에 설치하면 _기이한_ 일이 일어난다고 합니다...", @@ -1584,18 +1666,6 @@ "create.ponder.tag.logistics": "아이템 수송", "create.ponder.tag.logistics.description": "아이템을 옮기는데 도움을 줄 부품입니다.", - "create.ponder.adjustable_pulse_repeater.header": "가변 펄스 중계기를 이용해 신호 조절하기", - "create.ponder.adjustable_pulse_repeater.text_1": "가변 펄스 중계기는 딜레이 이후 짧은 신호를 보냅니다.", - "create.ponder.adjustable_pulse_repeater.text_2": "마우스 휠을 이용하여 딜레이를 조절합니다.", - "create.ponder.adjustable_pulse_repeater.text_3": "딜레이는 최대 30분까지 조절할 수 있습니다.", - - "create.ponder.adjustable_repeater.header": "가변 중계기를 이용해 신호 조절하기", - "create.ponder.adjustable_repeater.text_1": "가변 중계기는 기존 중계기와 비슷합니다.", - "create.ponder.adjustable_repeater.text_2": "정해진 딜레이만큼 신호를 주고...", - "create.ponder.adjustable_repeater.text_3": "...정해진 딜레이만큼 쉽니다.", - "create.ponder.adjustable_repeater.text_4": "마우스 휠을 이용해 딜레이를 조절합니다.", - "create.ponder.adjustable_repeater.text_5": "딜레이는 최대 30분까지 조절할 수 있습니다.", - "create.ponder.analog_lever.header": "아날로그 레버를 이용해 신호 조절하기", "create.ponder.analog_lever.text_1": "아날로그 레버는 정확하고 간편하게 레드스톤 신호의 세기를 조절합니다.", "create.ponder.analog_lever.text_2": "우클릭으로 세기를 높입니다.", @@ -1650,7 +1720,7 @@ "create.ponder.blaze_burner.text_1": "블레이즈 버너는 대야 안에서 처리되는 아이템에 열을 제공합니다.", "create.ponder.blaze_burner.text_2": "이런 식으로, 블레이즈는 가연성 물질을 먹습니다.", "create.ponder.blaze_burner.text_3": "블레이즈 케아크를 먹이면 버너는 더 뜨겁게 타오릅니다.", - "create.ponder.blaze_burner.text_4": "이 시스템은 배포기나 기계 팔을 이용해 자동화될 수 있습니다.", + "create.ponder.blaze_burner.text_4": "이 시스템은 기계 손이나 기계 팔을 이용해 자동화될 수 있습니다.", "create.ponder.brass_funnel.header": "황동 퍼널", "create.ponder.brass_funnel.text_1": "안산암 퍼널는 아이템 한 개만 뽑아냅니다.", @@ -1749,6 +1819,11 @@ "create.ponder.cogwheel.text_1": "톱니바퀴는 인접한 톱니바퀴에 동력을 전달합니다.", "create.ponder.cogwheel.text_2": "이렇게 연결된 톱니바퀴 축은 반대방향으로 돌아갑니다.", + "create.ponder.cogwheel_casing.header": "톱니바쿼에 케이스 씌우기", + "create.ponder.cogwheel_casing.text_1": "황동, 안산암 케이스는 톱니바퀴를 꾸밀 때 사용할 수 있습니다.", + "create.ponder.cogwheel_casing.text_2": "기본적으로 케이스를 씌운 톱니바퀴는 축과 연결되지 않습니다.", + "create.ponder.cogwheel_casing.text_3": "렌치를 사용하여 축과 연결하거나 차단할 수 있습니다.", + "create.ponder.creative_fluid_tank.header": "크리에이티브 탱크", "create.ponder.creative_fluid_tank.text_1": "크리에이티브 탱크는 무한히 액체를 공급합니다.", "create.ponder.creative_fluid_tank.text_2": "액체가 든 용기로 우클릭하여 액체를 채울 수 있습니다.", @@ -1765,41 +1840,41 @@ "create.ponder.crushing_wheels.text_3": "위에서 투입된 아이템은 가공되고, 아래로 떨어집니다.", "create.ponder.crushing_wheels.text_4": "이 과정은 자동화 될 수 있습니다.", - "create.ponder.deployer.header": "배포기 이용하기", - "create.ponder.deployer.text_1": "동력을 받으면, 배포기는 플레이어의 행동을 흉내냅니다.", - "create.ponder.deployer.text_10": "손에다 우클릭하여 배포기가 쓸 아이템을 건네세요.", + "create.ponder.deployer.header": "기계 손 이용하기", + "create.ponder.deployer.text_1": "동력을 받으면, 기계 손은 플레이어의 행동을 흉내냅니다.", + "create.ponder.deployer.text_10": "손에다 우클릭하여 기계 손이 쓸 아이템을 건네세요.", "create.ponder.deployer.text_11": "아이템은 자동으로 투입될 수 있습니다.", "create.ponder.deployer.text_12": "필터 슬롯도 있습니다.", "create.ponder.deployer.text_13": "필터가 설정되면, 필터에 맞는 아이템을 들고있을 때 작동합니다.", "create.ponder.deployer.text_14": "필터에 맞는 아이템만 들어가며...", "create.ponder.deployer.text_15": "...그 외의 아이템은 배출됩니다.", - "create.ponder.deployer.text_2": "배포기는 한 칸 떨어진 블록에 상호작용합니다.", + "create.ponder.deployer.text_2": "기계 손은 한 칸 떨어진 블록에 상호작용합니다.", "create.ponder.deployer.text_3": "바로 앞에 블록이 있어도 상괸없습니다.", - "create.ponder.deployer.text_4": "배포기가 할 수 있는 것:", + "create.ponder.deployer.text_4": "기계 손이 할 수 있는 것:", "create.ponder.deployer.text_5": "블록 설치하기", "create.ponder.deployer.text_6": "아이템 사용하기", "create.ponder.deployer.text_7": "블록 활성화하기", "create.ponder.deployer.text_8": "블록 수확하기", "create.ponder.deployer.text_9": "몹 공격하기", - "create.ponder.deployer_contraption.header": "구조물에서의 배포기", - "create.ponder.deployer_contraption.text_1": "배포기가 움직이는 구조물의 일부면...", - "create.ponder.deployer_contraption.text_2": "...배포기는 움직일 때마다 작동하며, 구조물에 붙어있는 아무 보관함의 아이템을 사용합니다.", + "create.ponder.deployer_contraption.header": "구조물에서의 기계 손", + "create.ponder.deployer_contraption.text_1": "기계 손이 움직이는 구조물의 일부면...", + "create.ponder.deployer_contraption.text_2": "...기계 손은 움직일 때마다 작동하며, 구조물에 붙어있는 아무 보관함의 아이템을 사용합니다.", "create.ponder.deployer_contraption.text_3": "필터를 이용해 어떤 아이템을 사용할 지 정할 수 있습니다.", - "create.ponder.deployer_modes.header": "배포기의 작동 방식", - "create.ponder.deployer_modes.text_1": "배포기는 기본적으로 우클릭을 흉내냅니다.", + "create.ponder.deployer_modes.header": "기계 손의 작동 방식", + "create.ponder.deployer_modes.text_1": "기계 손은 기본적으로 우클릭을 흉내냅니다.", "create.ponder.deployer_modes.text_2": "렌치를 이용해, 좌클릭을 흉내내도록 설정할 수 있습니다.", - "create.ponder.deployer_processing.header": "배포기로 아이템 가공하기", - "create.ponder.deployer_processing.text_1": "배포기가 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", - "create.ponder.deployer_processing.text_2": "가공할 아이템은 배포기 아래에 떨구거나 아이템 거치대에 올려두어야 합니다.", + "create.ponder.deployer_processing.header": "기계 손으로 아이템 가공하기", + "create.ponder.deployer_processing.text_1": "기계 손이 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", + "create.ponder.deployer_processing.text_2": "가공할 아이템은 기계 손 아래에 떨구거나 아이템 거치대에 올려두어야 합니다.", "create.ponder.deployer_processing.text_3": "아이템이 벨트에 있으면...", "create.ponder.deployer_processing.text_4": "...압착기가 알아서 아이템 이동을 멈추고 가공합니다.", - "create.ponder.deployer_redstone.header": "레드스톤과 배포기", - "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 배포기는 작동하지 않습니다.", - "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 배포기는 입력된 행동을 마무리합니다.", + "create.ponder.deployer_redstone.header": "레드스톤과 기계 손", + "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 기계 손은 작동하지 않습니다.", + "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 기계 손은 입력된 행동을 마무리합니다.", "create.ponder.deployer_redstone.text_3": "따라서 부정 펄스는 한 번만 작동하게 합니다.", "create.ponder.depot.header": "아이템 거치대 사용하기", @@ -1969,6 +2044,17 @@ "create.ponder.item_drain.text_4": "...아이템은 굴라가며 담긴 액체를 비웁니다.", "create.ponder.item_drain.text_5": "배수구 탱크에 있는 액체는 파이프로 옮길 수 있습니다.", + "create.ponder.item_vault_sizes.header": "아이템 금고의 크기", + "create.ponder.item_vault_sizes.text_1": "아이템 금고를 여러개 연결하여 총량을 늘릴 수 있습니다.", + "create.ponder.item_vault_sizes.text_2": "최대 너비는 3 블록이고...", + "create.ponder.item_vault_sizes.text_3": "...길이는 너비의 3배까지 늘릴 수 있습니다.", + + "create.ponder.item_vault_storage.header": "금고에 아이템 보관하기", + "create.ponder.item_vault_storage.text_1": "아이템 금고는 많은 아이템을 보관할 수 있습니다.", + "create.ponder.item_vault_storage.text_2": "하지만, 플레이어가 직접 꺼내거나 보관할 수는 없습니다.", + "create.ponder.item_vault_storage.text_3": "아이템을 수송할 수 있는 모든 부품은 아이템을 넣거나...", + "create.ponder.item_vault_storage.text_4": "...금고에서 아이템을 빼낼 수 있습니다", + "create.ponder.large_cogwheel.header": "큰 톱니바퀴로 동력 전달하기", "create.ponder.large_cogwheel.text_1": "큰 톱니바퀴는 수직으로 서로 맞물립니다.", "create.ponder.large_cogwheel.text_2": "이는 다른 축으로 동력을 전달하는데 도움이 됩니다.", @@ -2172,8 +2258,17 @@ "create.ponder.powered_toggle_latch.text_3": "혹은 끕니다.", "create.ponder.powered_toggle_latch.text_4": "레드스톤 토글 걸쇠는 직접 끄고 킬 수도 있습니다.", + "create.ponder.pulse_extender.header": "펄스 연장기로 신호 조절하기", + "create.ponder.pulse_extender.text_1": "펄스 연장기는 지나가는 신호의 길이를 늘릴 수 있습니다.", + "create.ponder.pulse_extender.text_2": "연장기는 짧은 딜레이 후에 작동하고...", + "create.ponder.pulse_extender.text_3": "...설정된 시간 이후에 꺼집니다.", + "create.ponder.pulse_extender.text_4": "마우스 휠을 이용하여 연장 시간을 조절할 수 있습니다.", + "create.ponder.pulse_extender.text_5": "최대 신호 연장 시간은 30분입니다", + "create.ponder.pulse_repeater.header": "펄스 중계기 사용하기", - "create.ponder.pulse_repeater.text_1": "펄스 중계기는 어느 레드스톤 신호라도 1틱 신호로 바꿉니다.", + "create.ponder.pulse_repeater.text_1": "펄스 중계기는 모든 레드스톤 신호를 1틱 신호로 바꿉니다.", + "create.ponder.pulse_repeater.text_2": "마우스 휠을 이용하여 딜레이 시간을 조절할 수 있습니다.", + "create.ponder.pulse_repeater.text_3": "최대 신호 딜레이 시간은 30분입니다", "create.ponder.radial_chassis.header": "원형 섀시를 이용해 블록 붙이기", "create.ponder.radial_chassis.text_1": "원형 섀시는 다른 원형 섀시와 이어집니다.", @@ -2342,4 +2437,5 @@ "create.ponder.windmill_structure.text_1": "최소 8개 이상의 날개 블록이 있는 구조물만 풍차로 사용할 수 있습니다.", "_": "Thank you for translating Create!" + } diff --git a/src/main/resources/assets/create/lang/pt_br.json b/src/main/resources/assets/create/lang/pt_br.json index ba2e42220..5b63b12e8 100644 --- a/src/main/resources/assets/create/lang/pt_br.json +++ b/src/main/resources/assets/create/lang/pt_br.json @@ -1,20 +1,19 @@ { - "_": "Missing Localizations: 1652", + "_": "Missing Localizations: 1670", "_": "->------------------------] Game Elements [------------------------<-", "block.create.adjustable_chain_gearshift": "Correia Ajustável", - "block.create.adjustable_crate": "Caixa Ajustável", - "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustável", - "block.create.adjustable_repeater": "Repetidor Ajustável", "block.create.analog_lever": "Alavanca Analógica", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", - "block.create.andesite_bricks": "Tijolos de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", + "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", + "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_tunnel": "Tunel de Andesito", "block.create.basin": "Bacia", "block.create.belt": "Esteira Mecânica", + "block.create.black_nixie_tube": "Tubo nixie preto", "block.create.black_sail": "Vela preta", "block.create.black_seat": "Assento preto", "block.create.black_toolbox": "Caixa de ferramentas preta", @@ -28,6 +27,8 @@ "block.create.brass_belt_funnel": "Funil de Esteira de Latão", "block.create.brass_block": "Bloco de Latão", "block.create.brass_casing": "Revestimento de Latão", + "block.create.brass_encased_cogwheel": "Roda dentada revestida com latão", + "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_tunnel": "Tunel de Latão", @@ -45,29 +46,21 @@ "block.create.content_observer": "Observador de Conteúdo", "block.create.controller_rail": "Trilho Controlador", "block.create.copper_backtank": "Tanque Traseiro de Cobre", - "block.create.copper_block": "Bloco de Cobre", "block.create.copper_casing": "Revestimento de Cobre", - "block.create.copper_ore": "Minério de Cobre", "block.create.copper_valve_handle": "Válvula de Cobre", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", "block.create.crushing_wheel": "Roda de Moer", - "block.create.cuckoo_clock": "Relógio Cuckok", + "block.create.cuckoo_clock": "Relógio Cuckoo", "block.create.cyan_nixie_tube": "Tubo nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Assento ciano", "block.create.cyan_toolbox": "caixa de ferramentas ciano", "block.create.cyan_valve_handle": "Válvula ciano", + "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Tijolos de Diorito", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Tijolos de Dolomite", - "block.create.dolomite_bricks_slab": "Lajotas de Tijolos de Dolomite", - "block.create.dolomite_bricks_stairs": "Escadas de Tijolos de Dolomite", - "block.create.dolomite_bricks_wall": "Muro de Tijolos de Dolomite", - "block.create.dolomite_pillar": "Pilar de Dolomite", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", @@ -76,16 +69,11 @@ "block.create.fluid_valve": "Válvula", "block.create.flywheel": "Volante de inércia", "block.create.furnace_engine": "Motor de Fornalha", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Tijolos de Gabbro", - "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", - "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", "block.create.gantry_carriage": "Carruagem de Pórtico", "block.create.gantry_shaft": "Eixo de Pórtico", "block.create.gearbox": "Caixa de Transmissão", "block.create.gearshift": "Câmbio", "block.create.glass_fluid_pipe": "Cano de Fluido de Vidro", - "block.create.granite_bricks": "Tijolos de Granito", "block.create.gray_nixie_tube": "Tubo nixie cinza", "block.create.gray_sail": "Vela cinza", "block.create.gray_seat": "Assento cinza", @@ -101,7 +89,7 @@ "block.create.honey": "Mel", "block.create.hose_pulley": "Polia de Mangueira", "block.create.item_drain": "Dreno de Item", - "block.create.large_cogwheel": "Roda Dentada Grande", + "block.create.item_vault": "Cofre de itens", "block.create.lectern_controller": "Controle de Atril", "block.create.light_blue_nixie_tube": "tubo nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", @@ -118,12 +106,7 @@ "block.create.lime_seat": "Assento lima", "block.create.lime_toolbox": "Caixa de ferramentas lima", "block.create.lime_valve_handle": "Válvula lima", - "block.create.limesand": "Areia Calcária", "block.create.limestone": "Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis Linear", "block.create.lit_blaze_burner": "Queimador de Blaze Acesso", @@ -144,6 +127,7 @@ "block.create.mechanical_press": "Prensa Mecânica", "block.create.mechanical_pump": "Bomba Mecânica", "block.create.mechanical_saw": "Serra Mecânica", + "block.create.metal_bracket": "Suporte 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", @@ -160,14 +144,11 @@ "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.polished_dolomite": "Dolomite Polido", - "block.create.polished_gabbro": "Gabbro Polido", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.portable_fluid_interface": "Interface de fluidos portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.pulley_magnet": "Imã da Polia", + "block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_repeater": "Repetidor de Pulso", "block.create.purple_nixie_tube": "Tubo nixie roxo", "block.create.purple_sail": "Vela roxo", @@ -175,6 +156,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.raw_zinc_block": "Bloco de zinco bruto", "block.create.red_nixie_tube": "Tubo nixie vermelho", "block.create.red_sail": "Vela vermelha", "block.create.red_seat": "Assento vermelho", @@ -183,10 +165,9 @@ "block.create.redstone_contact": "Contato de Redstone", "block.create.redstone_link": "Conexão de Redstone", "block.create.refined_radiance_casing": "Revestimento Brilhante", - "block.create.reinforced_rail": "Trilho reinfirçado", "block.create.rope": "Corda", "block.create.rope_pulley": "Polia", - "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacionalr", + "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", @@ -197,6 +178,7 @@ "block.create.smart_chute": "calha Inteligente", "block.create.smart_fluid_pipe": "Cano de Fluidos Inteligente", "block.create.speedometer": "Velocímetro", + "block.create.spout": "Bica", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", @@ -205,19 +187,14 @@ "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.turntable": "Mesa giratória", "block.create.water_wheel": "Roda de Água", - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.weighted_ejector": "Ejetor ´ponderado", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", "block.create.white_seat": "Assento branco", "block.create.white_toolbox": "Caixa de ferramentas branca", "block.create.white_valve_handle": "Válvula branca", "block.create.windmill_bearing": "Rolamento de moinho", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", + "block.create.wooden_bracket": "Suporte de madeira", "block.create.yellow_nixie_tube": "Tubo nixie amarelo", "block.create.yellow_sail": "Vela amarela", "block.create.yellow_seat": "Assento amarelo", @@ -257,13 +234,12 @@ "item.create.chromatic_compound": "Composto Cromático", "item.create.cinder_flour": "Farinha de Netherrack", "item.create.copper_backtank": "Tanque Traseiro", - "item.create.copper_ingot": "Barra de Cobre", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", + "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", "item.create.crafting_blueprint": "Esquema de Fabricação", "item.create.creative_blaze_cake": "Bolo de Blaze Criativo", "item.create.crushed_aluminum_ore": "Minério de Alumínio Esmagado", - "item.create.crushed_brass": "Latão Esmagado", "item.create.crushed_copper_ore": "Minério de Cobre Esmagado", "item.create.crushed_gold_ore": "Minério de Ouro Esmagado", "item.create.crushed_iron_ore": "Minério de Ferro Esmagado", @@ -282,6 +258,7 @@ "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", + "item.create.experience_nugget": "Pepita de experiencia", "item.create.extendo_grip": "Extensão de Pegador", "item.create.filter": "Filtro", "item.create.furnace_minecart_contraption": "Engenhoca de Carrinho de Mina com Fornalha", @@ -298,10 +275,11 @@ "item.create.minecart_contraption": "Engenhoca de Carrino de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", - "item.create.potato_cannon": "Canhão de Batata", + "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", "item.create.precision_mechanism": "Mecanismo de Precisão", "item.create.propeller": "Hélice", + "item.create.raw_zinc": "Zinco bruto", "item.create.red_sand_paper": "Lixa Vermelha", "item.create.refined_radiance": "Luz Refinada", "item.create.rose_quartz": "Quartzo Rosa", @@ -312,7 +290,7 @@ "item.create.super_glue": "Super Cola", "item.create.sweet_roll": "Rolinho Doce", "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.vertical_gearbox": "Caixa de Transmissão Verticla", + "item.create.vertical_gearbox": "Caixa de Transmissão Vertical", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "Farinha de trigo", "item.create.whisk": "Batedeira", @@ -325,6 +303,7 @@ "advancement.create.root": "Bem vindo a Create", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", + "advancement.create.andesite_alloy": "Alinterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.its_alive": "Esta vivo!", "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", @@ -334,6 +313,8 @@ "advancement.create.overstressed.desc": "Experience os limites da tensão.", "advancement.create.belt": "Correia de alga", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", + "advancement.create.tunnel": "Pegue cover!", + "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", "advancement.create.splitter_tunnel": "Divida e Conquiste", "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", "advancement.create.chute": "Caindo", @@ -341,11 +322,49 @@ "advancement.create.upward_chute": "Abdução aéria", "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.fan": "Dobrador de ar mecânico", + "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", + "advancement.create.fan_lava": "Aquecedor de espaço geotermal", + "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", + "advancement.create.fan_water": "Lavagem maluca", + "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", + "advancement.create.fan_smoke": "Fole mecânico", + "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", + "advancement.create.wrench": "Configurado convenientemente", + "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", + "advancement.create.goggles": "Visão do stress", + "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cineticas dos conponentes.", + "advancement.create.speedometer": "Mas quão rapido exatamente?", + "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.stressometer": "Mas quão estressado exatamente?", + "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "advancement.create.aesthetics": "Boom, estética!", + "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", + "advancement.create.reinforced": "Boom, Reinforçado!", + "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.chocolate_wheel": "Poder delicioso", + "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", + "advancement.create.lava_wheel": "Roda de magma", + "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", + "advancement.create.cuckoo": "É a hora?", + "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.maxed_windmill": "Uma brisa forte", + "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", "advancement.create.mechanical_drill": "Mineradores estacionarios", "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", + "advancement.create.press": "Prensa faz 'Bonk!'", + "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", "advancement.create.polished_rose_quartz": "Diamantes rosa", + "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", "advancement.create.electron_tube": "Beep Boop", "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, uteis para fabricar maquinas menos primitivas.", "advancement.create.mechanical_saw": "Cortadores estacionarios", @@ -363,7 +382,67 @@ "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.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 cobrepper Casings.", + "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", + "advancement.create.spout": "Sploosh", + "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", + "advancement.create.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", + "advancement.create.chocolate": "Um mundo de imaginação", + "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", + "advancement.create.item_drain": "Cambalhota de drenação", + "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", + "advancement.create.chained_item_drain": "Deixe rolar!", + "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "advancement.create.glass_pipe": "Espião de fluxo", + "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", + "advancement.create.pipe_collision": "Nunca cruze o fluxo!", + "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", + "advancement.create.pipe_spill": "Tem um vazamento!", + "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "advancement.create.hose_pulley": "Vazamento industrial", + "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", + "advancement.create.infinite_water": "Drenando o oceano", + "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", + "advancement.create.infinite_lava": "Drenando o nucleo do planeta", + "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", + "advancement.create.infinite_chocolate": "Afogando em imaginação", + "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", + "advancement.create.crafter": "Montagem automatica", + "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.nixie_tube": "Placas estilosas", + "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.deployer": "Cutuque, coloque e ataque", + "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", + "advancement.create.flywheel": "Coração da fabrica", + "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", + "advancement.create.overstress_flywheel": "Altos niveis de stress", + "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", + "advancement.create.precision_mechanism": "Curiosidades complexas", + "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.mechanical_arm": "Mâos ocupadas!", + "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "advancement.create.arm_many_targets": "Organiza-tron", + "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", + "advancement.create.arm_blaze_burner": "Combuste-tron", + "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", + "advancement.create.crushing_wheel": "Par de gigantes", + "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", + "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", + "advancement.create.wand_of_symmetry": "Espelhos radiantes", + "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.potato_cannon": "Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", + "advancement.create.dual_extendo_grip": "A era ultimata do boing", + "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", + "advancement.create.eob": "Fim do beta", + "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", "_": "->------------------------] UI & Messages [------------------------<-", @@ -385,6 +464,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", + "create.recipe.crushing": "Moendo", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", @@ -396,6 +476,8 @@ "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", "create.recipe.packing": "Compactando", + "create.recipe.sawing": "UNLOCALIZED: Sawing", + "create.generic.range": "Área", "create.generic.radius": "Raio", "create.generic.width": "Largura", @@ -423,10 +505,10 @@ "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - "create.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -440,7 +522,6 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", - "create.gui.goggles.generator_stats": "Estatísticas do gerador:", "create.gui.goggles.kinetic_stats": "Estatísticas cinéticas:", "create.gui.goggles.at_current_speed": "Na velocidade atual", @@ -509,7 +590,6 @@ "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", @@ -541,11 +621,8 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - - "_": "->------------------------] Subtitles [------------------------<-", - "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", @@ -556,7 +633,6 @@ "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", - "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", @@ -567,12 +643,10 @@ "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - "item.create.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.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", - "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", @@ -606,20 +680,16 @@ "block.create.turntable.tooltip": "MESA GIRATÓRIA", "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", - + "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", "_": "->------------------------] Ponder Content [------------------------<-", - "_": "Thank you for translating Create!" } diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json index 834aa7d2f..a4431405c 100644 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ b/src/main/resources/assets/create/lang/zh_cn.json @@ -1,29 +1,21 @@ { - "_": "Missing Localizations: 43", "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "金合欢木窗户", "block.create.acacia_window_pane": "金合欢木窗户板", "block.create.adjustable_chain_gearshift": "可调节链式传动箱", - "block.create.adjustable_crate": "可调节板条箱", - "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", - "block.create.adjustable_repeater": "可调节中继器", "block.create.analog_lever": "模拟拉杆", "block.create.andesite_belt_funnel": "安山岩传送带漏斗", - "block.create.andesite_bricks": "安山岩砖", - "block.create.andesite_bricks_slab": "安山岩砖台阶", - "block.create.andesite_bricks_stairs": "安山岩砖楼梯", - "block.create.andesite_bricks_wall": "安山岩砖墙", "block.create.andesite_casing": "安山机壳", - "block.create.andesite_cobblestone": "安山岩圆石", - "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", - "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", - "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_encased_cogwheel": "安山齿轮箱", + "block.create.andesite_encased_large_cogwheel": "安山大齿轮箱", "block.create.andesite_encased_shaft": "安山传动杆箱", "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "竖纹安山岩", + "block.create.andesite_pillar": "安山岩柱", "block.create.andesite_tunnel": "安山岩隧道", + "block.create.asurine": "皓蓝石", + "block.create.asurine_pillar": "皓蓝石柱", "block.create.basin": "工作盆", "block.create.belt": "传送带", "block.create.birch_window": "白桦木窗户", @@ -42,6 +34,8 @@ "block.create.brass_belt_funnel": "黄铜传送带漏斗", "block.create.brass_block": "黄铜块", "block.create.brass_casing": "黄铜机壳", + "block.create.brass_encased_cogwheel": "黄铜齿轮箱", + "block.create.brass_encased_large_cogwheel": "黄铜大齿轮箱", "block.create.brass_encased_shaft": "黄铜传动杆箱", "block.create.brass_funnel": "黄铜漏斗", "block.create.brass_tunnel": "黄铜隧道", @@ -50,13 +44,8 @@ "block.create.brown_seat": "棕色坐垫", "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色阀门手轮", + "block.create.calcite_pillar": "方解石柱", "block.create.cart_assembler": "矿车装配站", - "block.create.chiseled_dark_scoria": "錾制深色熔渣", - "block.create.chiseled_dolomite": "錾制白云岩", - "block.create.chiseled_gabbro": "錾制辉长岩", - "block.create.chiseled_limestone": "錾制石灰岩", - "block.create.chiseled_scoria": "錾制熔渣", - "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", "block.create.chocolate": "巧克力", "block.create.chute": "溜槽", "block.create.clockwork_bearing": "发条轴承", @@ -64,21 +53,137 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", - "block.create.copper_backtank": "Copper Backtank", - "block.create.copper_block": "铜块", + "block.create.copper_backtank": "铜制背罐", "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", + "block.create.copper_shingle_slab": "铜砖块台阶", + "block.create.copper_shingle_stairs": "铜砖块楼梯", "block.create.copper_shingles": "铜砖块", - "block.create.copper_tiles": "铜砖块", + "block.create.copper_tile_slab": "铜瓦块台阶", + "block.create.copper_tile_stairs": "铜瓦块楼梯", + "block.create.copper_tiles": "铜瓦块", "block.create.copper_valve_handle": "铜阀门手轮", "block.create.creative_crate": "创造板条箱", "block.create.creative_fluid_tank": "创造流体储罐", "block.create.creative_motor": "创造马达", + "block.create.crimsite": "绯红岩", + "block.create.crimsite_pillar": "绯红岩柱", "block.create.crimson_window": "绯红木窗户", "block.create.crimson_window_pane": "绯红木窗户板", "block.create.crushing_wheel": "粉碎轮", "block.create.crushing_wheel_controller": "粉碎轮控制器", "block.create.cuckoo_clock": "布谷鸟闹钟", + "block.create.cut_andesite": "切制安山岩", + "block.create.cut_andesite_brick_slab": "切制安山岩砖块台阶", + "block.create.cut_andesite_brick_stairs": "切制安山岩砖块楼梯", + "block.create.cut_andesite_brick_wall": "切制安山岩砖块墙", + "block.create.cut_andesite_bricks": "切制安山岩砖块", + "block.create.cut_andesite_slab": "切制安山岩台阶", + "block.create.cut_andesite_stairs": "切制安山岩楼梯", + "block.create.cut_andesite_wall": "切制安山岩墙", + "block.create.cut_asurine": "切制皓蓝石", + "block.create.cut_asurine_brick_slab": "切制皓蓝石砖块台阶", + "block.create.cut_asurine_brick_stairs": "切制皓蓝石砖块楼梯", + "block.create.cut_asurine_brick_wall": "切制皓蓝石砖块墙", + "block.create.cut_asurine_bricks": "切制皓蓝石砖块", + "block.create.cut_asurine_slab": "切制皓蓝石台阶", + "block.create.cut_asurine_stairs": "切制皓蓝石楼梯", + "block.create.cut_asurine_wall": "切制皓蓝石墙", + "block.create.cut_calcite": "切制方解石", + "block.create.cut_calcite_brick_slab": "切制方解石砖块台阶", + "block.create.cut_calcite_brick_stairs": "切制方解石砖块楼梯", + "block.create.cut_calcite_brick_wall": "切制方解石砖块墙", + "block.create.cut_calcite_bricks": "切制方解石砖块", + "block.create.cut_calcite_slab": "切制方解石台阶", + "block.create.cut_calcite_stairs": "切制方解石楼梯", + "block.create.cut_calcite_wall": "切制方解石墙", + "block.create.cut_crimsite": "切制绯红岩", + "block.create.cut_crimsite_brick_slab": "切制绯红岩砖块台阶", + "block.create.cut_crimsite_brick_stairs": "切制绯红岩砖块楼梯", + "block.create.cut_crimsite_brick_wall": "切制绯红岩砖块墙", + "block.create.cut_crimsite_bricks": "切制绯红岩砖块", + "block.create.cut_crimsite_slab": "切制绯红岩台阶", + "block.create.cut_crimsite_stairs": "切制绯红岩楼梯", + "block.create.cut_crimsite_wall": "切制绯红岩墙", + "block.create.cut_deepslate": "切制深板岩", + "block.create.cut_deepslate_brick_slab": "切制深板岩砖块台阶", + "block.create.cut_deepslate_brick_stairs": "切制深板岩砖块楼梯", + "block.create.cut_deepslate_brick_wall": "切制深板岩砖块墙", + "block.create.cut_deepslate_bricks": "切制深板岩砖块", + "block.create.cut_deepslate_slab": "切制深板岩台阶", + "block.create.cut_deepslate_stairs": "切制深板岩楼梯", + "block.create.cut_deepslate_wall": "切制深板岩墙", + "block.create.cut_diorite": "切制闪长岩", + "block.create.cut_diorite_brick_slab": "切制闪长岩砖块台阶", + "block.create.cut_diorite_brick_stairs": "切制闪长岩砖块楼梯", + "block.create.cut_diorite_brick_wall": "切制闪长岩砖块墙", + "block.create.cut_diorite_bricks": "切制闪长岩砖块", + "block.create.cut_diorite_slab": "切制闪长岩台阶", + "block.create.cut_diorite_stairs": "切制闪长岩楼梯", + "block.create.cut_diorite_wall": "切制闪长岩墙", + "block.create.cut_dripstone": "切制滴水石", + "block.create.cut_dripstone_brick_slab": "切制滴水石砖块台阶", + "block.create.cut_dripstone_brick_stairs": "切制滴水石砖块楼梯", + "block.create.cut_dripstone_brick_wall": "切制滴水石砖块墙", + "block.create.cut_dripstone_bricks": "切制滴水石砖块", + "block.create.cut_dripstone_slab": "切制滴水石台阶", + "block.create.cut_dripstone_stairs": "切制滴水石楼梯", + "block.create.cut_dripstone_wall": "切制滴水石墙", + "block.create.cut_granite": "切制花岗岩", + "block.create.cut_granite_brick_slab": "切制花岗岩砖块台阶", + "block.create.cut_granite_brick_stairs": "切制花岗岩砖块楼梯", + "block.create.cut_granite_brick_wall": "切制花岗岩砖块墙", + "block.create.cut_granite_bricks": "切制花岗岩砖块", + "block.create.cut_granite_slab": "切制花岗岩台阶", + "block.create.cut_granite_stairs": "切制花岗岩楼梯", + "block.create.cut_granite_wall": "切制花岗岩墙", + "block.create.cut_limestone": "切制石灰岩", + "block.create.cut_limestone_brick_slab": "切制石灰岩砖块台阶", + "block.create.cut_limestone_brick_stairs": "切制石灰岩砖块楼梯", + "block.create.cut_limestone_brick_wall": "切制石灰岩砖块墙", + "block.create.cut_limestone_bricks": "切制石灰岩砖块", + "block.create.cut_limestone_slab": "切制石灰岩台阶", + "block.create.cut_limestone_stairs": "切制石灰岩楼梯", + "block.create.cut_limestone_wall": "切制石灰岩墙", + "block.create.cut_ochrum": "切制赭金砂", + "block.create.cut_ochrum_brick_slab": "切制赭金砂砖块台阶", + "block.create.cut_ochrum_brick_stairs": "切制赭金砂砖块楼梯", + "block.create.cut_ochrum_brick_wall": "切制赭金砂砖块墙", + "block.create.cut_ochrum_bricks": "切制赭金砂砖块", + "block.create.cut_ochrum_slab": "切制赭金砂台阶", + "block.create.cut_ochrum_stairs": "切制赭金砂楼梯", + "block.create.cut_ochrum_wall": "切制赭金砂墙", + "block.create.cut_scorchia": "切制焦黑熔渣", + "block.create.cut_scorchia_brick_slab": "切制焦黑熔渣砖块台阶", + "block.create.cut_scorchia_brick_stairs": "切制焦黑熔渣砖块楼梯", + "block.create.cut_scorchia_brick_wall": "切制焦黑熔渣砖块墙", + "block.create.cut_scorchia_bricks": "切制焦黑熔渣砖块", + "block.create.cut_scorchia_slab": "切制焦黑熔渣台阶", + "block.create.cut_scorchia_stairs": "切制焦黑熔渣楼梯", + "block.create.cut_scorchia_wall": "切制焦黑熔渣墙", + "block.create.cut_scoria": "切制熔渣", + "block.create.cut_scoria_brick_slab": "切制熔渣砖块台阶", + "block.create.cut_scoria_brick_stairs": "切制熔渣砖块楼梯", + "block.create.cut_scoria_brick_wall": "切制熔渣砖块墙", + "block.create.cut_scoria_bricks": "切制熔渣砖块", + "block.create.cut_scoria_slab": "切制熔渣台阶", + "block.create.cut_scoria_stairs": "切制熔渣楼梯", + "block.create.cut_scoria_wall": "切制熔渣墙", + "block.create.cut_tuff": "切制凝灰岩", + "block.create.cut_tuff_brick_slab": "切制凝灰岩砖块台阶", + "block.create.cut_tuff_brick_stairs": "切制凝灰岩砖块楼梯", + "block.create.cut_tuff_brick_wall": "切制凝灰岩砖块墙", + "block.create.cut_tuff_bricks": "切制凝灰岩砖块", + "block.create.cut_tuff_slab": "切制凝灰岩台阶", + "block.create.cut_tuff_stairs": "切制凝灰岩楼梯", + "block.create.cut_tuff_wall": "切制凝灰岩墙", + "block.create.cut_veridium": "切制辉绿矿", + "block.create.cut_veridium_brick_slab": "切制辉绿矿砖块台阶", + "block.create.cut_veridium_brick_stairs": "切制辉绿矿砖块楼梯", + "block.create.cut_veridium_brick_wall": "切制辉绿矿砖块墙", + "block.create.cut_veridium_bricks": "切制辉绿矿砖块", + "block.create.cut_veridium_slab": "切制辉绿矿台阶", + "block.create.cut_veridium_stairs": "切制辉绿矿楼梯", + "block.create.cut_veridium_wall": "切制辉绿矿墙", "block.create.cyan_nixie_tube": "青色辉光管", "block.create.cyan_sail": "青色风帆", "block.create.cyan_seat": "青色坐垫", @@ -86,76 +191,21 @@ "block.create.cyan_valve_handle": "青色阀门手轮", "block.create.dark_oak_window": "深色橡木窗户", "block.create.dark_oak_window_pane": "深色橡木窗户板", - "block.create.dark_scoria": "深色熔渣", - "block.create.dark_scoria_bricks": "深色熔渣砖", - "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", - "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", - "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", - "block.create.dark_scoria_cobblestone": "深色熔渣圆石", - "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", - "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", - "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", - "block.create.dark_scoria_pillar": "竖纹深色熔渣", + "block.create.deepslate_pillar": "深板岩柱", + "block.create.deepslate_zinc_ore": "深层锌矿石", "block.create.deployer": "机械手", "block.create.depot": "置物台", - "block.create.diorite_bricks": "闪长岩砖", - "block.create.diorite_bricks_slab": "闪长岩砖台阶", - "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", - "block.create.diorite_bricks_wall": "闪长岩砖墙", - "block.create.diorite_cobblestone": "闪长岩圆石", - "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", - "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", - "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dolomite": "白云岩", - "block.create.dolomite_bricks": "白云岩砖", - "block.create.dolomite_bricks_slab": "白云岩砖台阶", - "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", - "block.create.dolomite_bricks_wall": "白云岩砖墙", - "block.create.dolomite_cobblestone": "白云岩圆石", - "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", - "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", - "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", - "block.create.dolomite_pillar": "竖纹白云岩", + "block.create.diorite_pillar": "闪长岩柱", + "block.create.dripstone_pillar": "滴水石柱", "block.create.encased_chain_drive": "链式传动箱", "block.create.encased_fan": "鼓风机", "block.create.encased_fluid_pipe": "流体管道箱", - "block.create.fancy_andesite_bricks": "方纹安山岩砖", - "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", - "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", - "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", - "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", - "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", - "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", - "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", - "block.create.fancy_diorite_bricks": "方纹闪长岩砖", - "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", - "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", - "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", - "block.create.fancy_dolomite_bricks": "方纹白云岩砖", - "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", - "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", - "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", - "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", - "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", - "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", - "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", - "block.create.fancy_granite_bricks": "方纹花岗岩砖", - "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", - "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", - "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", - "block.create.fancy_limestone_bricks": "方纹石灰岩砖", - "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", - "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", - "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", - "block.create.fancy_scoria_bricks": "方纹熔渣砖", - "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", - "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", - "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", - "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", - "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", - "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", + "block.create.exposed_copper_shingle_slab": "斑驳的铜砖块台阶", + "block.create.exposed_copper_shingle_stairs": "斑驳的铜砖块楼梯", + "block.create.exposed_copper_shingles": "斑驳的铜砖块", + "block.create.exposed_copper_tile_slab": "斑驳的铜瓦块台阶", + "block.create.exposed_copper_tile_stairs": "斑驳的铜瓦块楼梯", + "block.create.exposed_copper_tiles": "斑驳的铜瓦块", "block.create.fluid_pipe": "流体管道", "block.create.fluid_tank": "流体储罐", "block.create.fluid_valve": "流体阀门", @@ -163,30 +213,12 @@ "block.create.framed_glass": "边框玻璃", "block.create.framed_glass_pane": "边框玻璃板", "block.create.furnace_engine": "熔炉引擎", - "block.create.gabbro": "辉长岩", - "block.create.gabbro_bricks": "辉长岩砖", - "block.create.gabbro_bricks_slab": "辉长岩砖台阶", - "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", - "block.create.gabbro_bricks_wall": "辉长岩砖墙", - "block.create.gabbro_cobblestone": "辉长岩圆石", - "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", - "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", - "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", - "block.create.gabbro_pillar": "竖纹辉长岩", "block.create.gantry_carriage": "起重机取物器", "block.create.gantry_shaft": "起重机杆", "block.create.gearbox": "十字齿轮箱", "block.create.gearshift": "反转齿轮箱", "block.create.glass_fluid_pipe": "玻璃流体管道", - "block.create.granite_bricks": "花岗岩砖", - "block.create.granite_bricks_slab": "花岗岩砖台阶", - "block.create.granite_bricks_stairs": "花岗岩砖楼梯", - "block.create.granite_bricks_wall": "花岗岩砖墙", - "block.create.granite_cobblestone": "花岗岩圆石", - "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", - "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", - "block.create.granite_cobblestone_wall": "花岗岩圆石墙", - "block.create.granite_pillar": "竖纹花岗岩", + "block.create.granite_pillar": "花岗岩柱", "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", @@ -204,18 +236,24 @@ "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", "block.create.hose_pulley": "软管滑轮", "block.create.item_drain": "分液池", + "block.create.item_vault": "物品保险库", "block.create.jungle_window": "丛林木窗户", "block.create.jungle_window_pane": "丛林木窗户板", "block.create.large_cogwheel": "大齿轮", "block.create.layered_andesite": "层叠安山岩", - "block.create.layered_dark_scoria": "层叠深色熔渣", + "block.create.layered_asurine": "层叠皓蓝石", + "block.create.layered_calcite": "层叠方解石", + "block.create.layered_crimsite": "层叠绯红岩", + "block.create.layered_deepslate": "层叠深板岩", "block.create.layered_diorite": "层叠闪长岩", - "block.create.layered_dolomite": "层叠白云岩", - "block.create.layered_gabbro": "层叠辉长岩", + "block.create.layered_dripstone": "层叠滴水石", "block.create.layered_granite": "层叠花岗岩", "block.create.layered_limestone": "层叠石灰岩", + "block.create.layered_ochrum": "层叠赭金砂", + "block.create.layered_scorchia": "层叠焦黑熔渣", "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_weathered_limestone": "层叠风化石灰岩", + "block.create.layered_tuff": "层叠凝灰岩", + "block.create.layered_veridium": "层叠辉绿矿", "block.create.lectern_controller": "遥控器讲台", "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", @@ -232,17 +270,8 @@ "block.create.lime_seat": "黄绿色坐垫", "block.create.lime_toolbox": "黄绿色工具箱", "block.create.lime_valve_handle": "黄绿色阀门手轮", - "block.create.limesand": "石灰沙", "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩砖", - "block.create.limestone_bricks_slab": "石灰岩砖台阶", - "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", - "block.create.limestone_bricks_wall": "石灰岩砖墙", - "block.create.limestone_cobblestone": "石灰岩圆石", - "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", - "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", - "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", - "block.create.limestone_pillar": "竖纹石灰岩", + "block.create.limestone_pillar": "石灰岩柱", "block.create.linear_chassis": "机壳底盘", "block.create.lit_blaze_burner": "烈焰人燃烧室(已点燃)", "block.create.magenta_nixie_tube": "品红色辉光管", @@ -265,72 +294,25 @@ "block.create.metal_bracket": "金属支架", "block.create.millstone": "石磨", "block.create.minecart_anchor": "矿车锚", - "block.create.mossy_andesite": "覆苔安山岩", - "block.create.mossy_dark_scoria": "覆苔深色熔渣", - "block.create.mossy_diorite": "覆苔闪长岩", - "block.create.mossy_dolomite": "覆苔白云岩", - "block.create.mossy_gabbro": "覆苔辉长岩", - "block.create.mossy_granite": "覆苔花岗岩", - "block.create.mossy_limestone": "覆苔石灰岩", - "block.create.mossy_scoria": "覆苔熔渣", - "block.create.mossy_weathered_limestone": "覆苔风化石灰岩", "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", - "block.create.natural_scoria": "天然熔渣", "block.create.nixie_tube": "辉光管", "block.create.nozzle": "分散网", "block.create.oak_window": "橡木窗户", "block.create.oak_window_pane": "橡木窗户板", + "block.create.ochrum": "赭金砂", + "block.create.ochrum_pillar": "赭金砂柱", "block.create.orange_sail": "橙色风帆", "block.create.orange_seat": "橙色坐垫", "block.create.orange_toolbox": "橙色工具箱", "block.create.orange_valve_handle": "橙色阀门手轮", "block.create.ornate_iron_window": "华丽铁窗户", "block.create.ornate_iron_window_pane": "华丽铁窗户板", - "block.create.overgrown_andesite": "覆草安山岩", - "block.create.overgrown_dark_scoria": "覆草深色熔渣", - "block.create.overgrown_diorite": "覆草闪长岩", - "block.create.overgrown_dolomite": "覆草白云岩", - "block.create.overgrown_gabbro": "覆草辉长岩", - "block.create.overgrown_granite": "覆草花岗岩", - "block.create.overgrown_limestone": "覆草石灰岩", - "block.create.overgrown_scoria": "覆草熔渣", - "block.create.overgrown_weathered_limestone": "覆草风化石灰岩", - "block.create.paved_andesite": "安山岩铺路石", - "block.create.paved_andesite_slab": "安山岩铺路石台阶", - "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", - "block.create.paved_andesite_wall": "安山岩铺路石墙", - "block.create.paved_dark_scoria": "深色熔渣铺路石", - "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", - "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", - "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", - "block.create.paved_diorite": "闪长岩铺路石", - "block.create.paved_diorite_slab": "闪长岩铺路石台阶", - "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", - "block.create.paved_diorite_wall": "闪长岩铺路石墙", - "block.create.paved_dolomite": "白云岩铺路石", - "block.create.paved_dolomite_slab": "白云岩铺路石台阶", - "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", - "block.create.paved_dolomite_wall": "白云岩铺路石墙", - "block.create.paved_gabbro": "辉长岩铺路石", - "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", - "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", - "block.create.paved_gabbro_wall": "辉长岩铺路石墙", - "block.create.paved_granite": "花岗岩铺路石", - "block.create.paved_granite_slab": "花岗岩铺路石台阶", - "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", - "block.create.paved_granite_wall": "花岗岩铺路石墙", - "block.create.paved_limestone": "石灰岩铺路石", - "block.create.paved_limestone_slab": "石灰岩铺路石台阶", - "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", - "block.create.paved_limestone_wall": "石灰岩铺路石墙", - "block.create.paved_scoria": "熔渣铺路石", - "block.create.paved_scoria_slab": "熔渣铺路石台阶", - "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", - "block.create.paved_scoria_wall": "熔渣铺路石墙", - "block.create.paved_weathered_limestone": "风化石灰岩铺路石", - "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", - "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", - "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", + "block.create.oxidized_copper_shingle_slab": "氧化的铜砖块台阶", + "block.create.oxidized_copper_shingle_stairs": "氧化的铜砖块楼梯", + "block.create.oxidized_copper_shingles": "氧化的铜砖块", + "block.create.oxidized_copper_tile_slab": "氧化的铜瓦块台阶", + "block.create.oxidized_copper_tile_stairs": "氧化的铜瓦块楼梯", + "block.create.oxidized_copper_tiles": "氧化的铜瓦块", "block.create.peculiar_bell": "奇异钟", "block.create.pink_nixie_tube": "粉红色辉光管", "block.create.pink_sail": "粉红色风帆", @@ -338,35 +320,68 @@ "block.create.pink_toolbox": "粉红色工具箱", "block.create.pink_valve_handle": "粉红色阀门手轮", "block.create.piston_extension_pole": "活塞杆", - "block.create.polished_dark_scoria": "磨制深色熔渣", - "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", - "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", - "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", - "block.create.polished_dolomite": "磨制白云岩", - "block.create.polished_dolomite_slab": "磨制白云岩台阶", - "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", - "block.create.polished_dolomite_wall": "磨制白云岩墙", - "block.create.polished_gabbro": "磨制辉长岩", - "block.create.polished_gabbro_slab": "磨制辉长岩台阶", - "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", - "block.create.polished_gabbro_wall": "磨制辉长岩墙", - "block.create.polished_limestone": "磨制石灰岩", - "block.create.polished_limestone_slab": "磨制石灰岩台阶", - "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", - "block.create.polished_limestone_wall": "磨制石灰岩墙", - "block.create.polished_scoria": "磨制熔渣", - "block.create.polished_scoria_slab": "磨制熔渣台阶", - "block.create.polished_scoria_stairs": "磨制熔渣楼梯", - "block.create.polished_scoria_wall": "磨制熔渣墙", - "block.create.polished_weathered_limestone": "磨制风化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", - "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", - "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", + "block.create.polished_cut_andesite": "磨制切制安山岩", + "block.create.polished_cut_andesite_slab": "磨制切制安山岩台阶", + "block.create.polished_cut_andesite_stairs": "磨制切制安山岩楼梯", + "block.create.polished_cut_andesite_wall": "磨制切制安山岩墙", + "block.create.polished_cut_asurine": "磨制切制皓蓝石", + "block.create.polished_cut_asurine_slab": "磨制切制皓蓝石台阶", + "block.create.polished_cut_asurine_stairs": "磨制切制皓蓝石楼梯", + "block.create.polished_cut_asurine_wall": "磨制切制皓蓝石墙", + "block.create.polished_cut_calcite": "磨制切制方解石", + "block.create.polished_cut_calcite_slab": "磨制切制方解石台阶", + "block.create.polished_cut_calcite_stairs": "磨制切制方解石楼梯", + "block.create.polished_cut_calcite_wall": "磨制切制方解石墙", + "block.create.polished_cut_crimsite": "磨制切制绯红岩", + "block.create.polished_cut_crimsite_slab": "磨制切制绯红岩台阶", + "block.create.polished_cut_crimsite_stairs": "磨制切制绯红岩楼梯", + "block.create.polished_cut_crimsite_wall": "磨制切制绯红岩墙", + "block.create.polished_cut_deepslate": "磨制切制深板岩", + "block.create.polished_cut_deepslate_slab": "磨制切制深板岩台阶", + "block.create.polished_cut_deepslate_stairs": "磨制切制深板岩楼梯", + "block.create.polished_cut_deepslate_wall": "磨制切制深板岩墙", + "block.create.polished_cut_diorite": "磨制切制闪长岩", + "block.create.polished_cut_diorite_slab": "磨制切制闪长岩台阶", + "block.create.polished_cut_diorite_stairs": "磨制切制闪长岩楼梯", + "block.create.polished_cut_diorite_wall": "磨制切制闪长岩墙", + "block.create.polished_cut_dripstone": "磨制切制滴水石", + "block.create.polished_cut_dripstone_slab": "磨制切制滴水石台阶", + "block.create.polished_cut_dripstone_stairs": "磨制切制滴水石楼梯", + "block.create.polished_cut_dripstone_wall": "磨制切制滴水石墙", + "block.create.polished_cut_granite": "磨制切制花岗岩", + "block.create.polished_cut_granite_slab": "磨制切制花岗岩台阶", + "block.create.polished_cut_granite_stairs": "磨制切制花岗岩楼梯", + "block.create.polished_cut_granite_wall": "磨制切制花岗岩墙", + "block.create.polished_cut_limestone": "磨制切制石灰岩", + "block.create.polished_cut_limestone_slab": "磨制切制石灰岩台阶", + "block.create.polished_cut_limestone_stairs": "磨制切制石灰岩楼梯", + "block.create.polished_cut_limestone_wall": "磨制切制石灰岩墙", + "block.create.polished_cut_ochrum": "磨制切制赭金砂", + "block.create.polished_cut_ochrum_slab": "磨制切制赭金砂台阶", + "block.create.polished_cut_ochrum_stairs": "磨制切制赭金砂楼梯", + "block.create.polished_cut_ochrum_wall": "磨制切制赭金砂墙", + "block.create.polished_cut_scorchia": "磨制切制焦黑熔渣", + "block.create.polished_cut_scorchia_slab": "磨制切制焦黑熔渣台阶", + "block.create.polished_cut_scorchia_stairs": "磨制切制焦黑熔渣楼梯", + "block.create.polished_cut_scorchia_wall": "磨制切制焦黑熔渣墙", + "block.create.polished_cut_scoria": "磨制切制熔渣", + "block.create.polished_cut_scoria_slab": "磨制切制熔渣台阶", + "block.create.polished_cut_scoria_stairs": "磨制切制熔渣楼梯", + "block.create.polished_cut_scoria_wall": "磨制切制熔渣墙", + "block.create.polished_cut_tuff": "磨制切制凝灰岩", + "block.create.polished_cut_tuff_slab": "磨制切制凝灰岩台阶", + "block.create.polished_cut_tuff_stairs": "磨制切制凝灰岩楼梯", + "block.create.polished_cut_tuff_wall": "磨制切制凝灰岩墙", + "block.create.polished_cut_veridium": "磨制切制辉绿矿", + "block.create.polished_cut_veridium_slab": "磨制切制辉绿矿台阶", + "block.create.polished_cut_veridium_stairs": "磨制切制辉绿矿楼梯", + "block.create.polished_cut_veridium_wall": "磨制切制辉绿矿墙", "block.create.portable_fluid_interface": "移动式流体接口", "block.create.portable_storage_interface": "移动式存储接口", "block.create.powered_latch": "锁存器", "block.create.powered_toggle_latch": "转换锁存器", "block.create.pulley_magnet": "滑轮磁铁", + "block.create.pulse_extender": "脉冲延长器", "block.create.pulse_repeater": "脉冲中继器", "block.create.purple_nixie_tube": "紫色辉光管", "block.create.purple_sail": "紫色风帆", @@ -374,6 +389,7 @@ "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", + "block.create.raw_zinc_block": "粗锌块", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", @@ -382,27 +398,76 @@ "block.create.redstone_contact": "接触式红石信号发生器", "block.create.redstone_link": "无线红石信号终端", "block.create.refined_radiance_casing": "光辉机壳", - "block.create.reinforced_rail": "强化铁轨", "block.create.rope": "绳索", "block.create.rope_pulley": "绳索滑轮", "block.create.rotation_speed_controller": "转速控制器", "block.create.sail_frame": "风帆框架", "block.create.schematic_table": "蓝图桌", "block.create.schematicannon": "蓝图加农炮", + "block.create.scorchia": "焦黑熔渣", + "block.create.scorchia_pillar": "焦黑熔渣柱", "block.create.scoria": "熔渣", - "block.create.scoria_bricks": "熔渣砖", - "block.create.scoria_bricks_slab": "熔渣砖台阶", - "block.create.scoria_bricks_stairs": "熔渣砖楼梯", - "block.create.scoria_bricks_wall": "熔渣砖墙", - "block.create.scoria_cobblestone": "熔渣圆石", - "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", - "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", - "block.create.scoria_cobblestone_wall": "熔渣圆石墙", - "block.create.scoria_pillar": "竖纹熔渣", + "block.create.scoria_pillar": "熔渣柱", "block.create.secondary_linear_chassis": "机壳底盘 2 号", "block.create.sequenced_gearshift": "可编程齿轮箱", "block.create.shadow_steel_casing": "暗影机壳", "block.create.shaft": "传动杆", + "block.create.small_andesite_brick_slab": "安山岩小砖块台阶", + "block.create.small_andesite_brick_stairs": "安山岩小砖块楼梯", + "block.create.small_andesite_brick_wall": "安山岩小砖块墙", + "block.create.small_andesite_bricks": "安山岩小砖块", + "block.create.small_asurine_brick_slab": "皓蓝石小砖块台阶", + "block.create.small_asurine_brick_stairs": "皓蓝石小砖块楼梯", + "block.create.small_asurine_brick_wall": "皓蓝石小砖块墙", + "block.create.small_asurine_bricks": "皓蓝石小砖块", + "block.create.small_calcite_brick_slab": "方解石小砖块台阶", + "block.create.small_calcite_brick_stairs": "方解石小砖块楼梯", + "block.create.small_calcite_brick_wall": "方解石小砖块墙", + "block.create.small_calcite_bricks": "方解石小砖块", + "block.create.small_crimsite_brick_slab": "绯红岩小砖块台阶", + "block.create.small_crimsite_brick_stairs": "绯红岩小砖块楼梯", + "block.create.small_crimsite_brick_wall": "绯红岩小砖块墙", + "block.create.small_crimsite_bricks": "绯红岩小砖块", + "block.create.small_deepslate_brick_slab": "深板岩小砖块台阶", + "block.create.small_deepslate_brick_stairs": "深板岩小砖块楼梯", + "block.create.small_deepslate_brick_wall": "深板岩小砖块墙", + "block.create.small_deepslate_bricks": "深板岩小砖块", + "block.create.small_diorite_brick_slab": "闪长岩小砖块台阶", + "block.create.small_diorite_brick_stairs": "闪长岩小砖块楼梯", + "block.create.small_diorite_brick_wall": "闪长岩小砖块墙", + "block.create.small_diorite_bricks": "闪长岩小砖块", + "block.create.small_dripstone_brick_slab": "滴水石小砖块台阶", + "block.create.small_dripstone_brick_stairs": "滴水石小砖块楼梯", + "block.create.small_dripstone_brick_wall": "滴水石小砖块墙", + "block.create.small_dripstone_bricks": "滴水石小砖块", + "block.create.small_granite_brick_slab": "花岗岩小砖块台阶", + "block.create.small_granite_brick_stairs": "花岗岩小砖块楼梯", + "block.create.small_granite_brick_wall": "花岗岩小砖块墙", + "block.create.small_granite_bricks": "花岗岩小砖块", + "block.create.small_limestone_brick_slab": "石灰岩小砖块台阶", + "block.create.small_limestone_brick_stairs": "石灰岩小砖块楼梯", + "block.create.small_limestone_brick_wall": "石灰岩小砖块墙", + "block.create.small_limestone_bricks": "石灰岩小砖块", + "block.create.small_ochrum_brick_slab": "赭金砂小砖块台阶", + "block.create.small_ochrum_brick_stairs": "赭金砂小砖块楼梯", + "block.create.small_ochrum_brick_wall": "赭金砂小砖块墙", + "block.create.small_ochrum_bricks": "赭金砂小砖块", + "block.create.small_scorchia_brick_slab": "焦黑熔渣小砖块台阶", + "block.create.small_scorchia_brick_stairs": "焦黑熔渣小砖块楼梯", + "block.create.small_scorchia_brick_wall": "焦黑熔渣小砖块墙", + "block.create.small_scorchia_bricks": "焦黑熔渣小砖块", + "block.create.small_scoria_brick_slab": "熔渣小砖块台阶", + "block.create.small_scoria_brick_stairs": "熔渣小砖块楼梯", + "block.create.small_scoria_brick_wall": "熔渣小砖块墙", + "block.create.small_scoria_bricks": "熔渣小砖块", + "block.create.small_tuff_brick_slab": "凝灰岩小砖块台阶", + "block.create.small_tuff_brick_stairs": "凝灰岩小砖块楼梯", + "block.create.small_tuff_brick_wall": "凝灰岩小砖块墙", + "block.create.small_tuff_bricks": "凝灰岩小砖块", + "block.create.small_veridium_brick_slab": "辉绿矿小砖块台阶", + "block.create.small_veridium_brick_stairs": "辉绿矿小砖块楼梯", + "block.create.small_veridium_brick_wall": "辉绿矿小砖块墙", + "block.create.small_veridium_bricks": "辉绿矿小砖块", "block.create.smart_chute": "智能溜槽", "block.create.smart_fluid_pipe": "智能流体管道", "block.create.speedometer": "速度表", @@ -415,22 +480,45 @@ "block.create.stressometer": "应力表", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗户板", + "block.create.tuff_pillar": "凝灰岩柱", "block.create.turntable": "转盘", + "block.create.veridium": "辉绿矿", + "block.create.veridium_pillar": "辉绿矿柱", "block.create.vertical_framed_glass": "竖直边框玻璃", "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", "block.create.warped_window": "诡异木窗户", "block.create.warped_window_pane": "诡异木窗户板", "block.create.water_wheel": "水车", - "block.create.weathered_limestone": "风化石灰岩", - "block.create.weathered_limestone_bricks": "风化石灰岩砖", - "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", - "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", - "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", - "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", - "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", - "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", - "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", - "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", + "block.create.waxed_copper_shingle_slab": "涂蜡铜砖块台阶", + "block.create.waxed_copper_shingle_stairs": "涂蜡铜砖块楼梯", + "block.create.waxed_copper_shingles": "涂蜡铜砖块", + "block.create.waxed_copper_tile_slab": "涂蜡铜瓦块台阶", + "block.create.waxed_copper_tile_stairs": "涂蜡铜瓦块楼梯", + "block.create.waxed_copper_tiles": "涂蜡铜瓦块", + "block.create.waxed_exposed_copper_shingle_slab": "斑驳的涂蜡铜砖块台阶", + "block.create.waxed_exposed_copper_shingle_stairs": "斑驳的涂蜡铜砖块楼梯", + "block.create.waxed_exposed_copper_shingles": "斑驳的涂蜡铜砖块", + "block.create.waxed_exposed_copper_tile_slab": "斑驳的涂蜡铜瓦块台阶", + "block.create.waxed_exposed_copper_tile_stairs": "斑驳的涂蜡铜瓦块楼梯", + "block.create.waxed_exposed_copper_tiles": "斑驳的涂蜡铜瓦块", + "block.create.waxed_oxidized_copper_shingle_slab": "氧化的涂蜡铜砖块台阶", + "block.create.waxed_oxidized_copper_shingle_stairs": "氧化的涂蜡铜砖块楼梯", + "block.create.waxed_oxidized_copper_shingles": "氧化的涂蜡铜砖块", + "block.create.waxed_oxidized_copper_tile_slab": "氧化的涂蜡铜瓦块台阶", + "block.create.waxed_oxidized_copper_tile_stairs": "氧化的涂蜡铜瓦块楼梯", + "block.create.waxed_oxidized_copper_tiles": "氧化的涂蜡铜瓦块", + "block.create.waxed_weathered_copper_shingle_slab": "锈蚀的涂蜡铜砖块台阶", + "block.create.waxed_weathered_copper_shingle_stairs": "锈蚀的涂蜡铜砖块楼梯", + "block.create.waxed_weathered_copper_shingles": "锈蚀的涂蜡铜砖块", + "block.create.waxed_weathered_copper_tile_slab": "锈蚀的涂蜡铜瓦块台阶", + "block.create.waxed_weathered_copper_tile_stairs": "锈蚀的涂蜡铜瓦块楼梯", + "block.create.waxed_weathered_copper_tiles": "锈蚀的涂蜡铜瓦块", + "block.create.weathered_copper_shingle_slab": "锈蚀的铜砖块台阶", + "block.create.weathered_copper_shingle_stairs": "锈蚀的铜砖块楼梯", + "block.create.weathered_copper_shingles": "锈蚀的铜砖块", + "block.create.weathered_copper_tile_slab": "锈蚀的铜瓦块台阶", + "block.create.weathered_copper_tile_stairs": "锈蚀的铜瓦块楼梯", + "block.create.weathered_copper_tiles": "锈蚀的铜瓦块", "block.create.weighted_ejector": "弹射置物台", "block.create.white_nixie_tube": "白色辉光管", "block.create.white_sail": "白色风帆", @@ -478,14 +566,12 @@ "item.create.chromatic_compound": "异彩化合物", "item.create.cinder_flour": "下界面粉", "item.create.copper_backtank": "铜制背罐", - "item.create.copper_ingot": "铜锭", "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", "item.create.crafter_slot_cover": "合成器盖板", "item.create.crafting_blueprint": "合成蓝图", "item.create.creative_blaze_cake": "创造模式烈焰蛋糕", "item.create.crushed_aluminum_ore": "粉碎铝矿石", - "item.create.crushed_brass": "粉碎黄铜", "item.create.crushed_copper_ore": "粉碎铜矿石", "item.create.crushed_gold_ore": "粉碎金矿石", "item.create.crushed_iron_ore": "粉碎铁矿石", @@ -504,6 +590,7 @@ "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", "item.create.empty_schematic": "空白蓝图", + "item.create.experience_nugget": "经验颗粒", "item.create.extendo_grip": "伸缩机械手", "item.create.filter": "过滤器", "item.create.furnace_minecart_contraption": "装配过的动力矿车", @@ -524,6 +611,7 @@ "item.create.powdered_obsidian": "黑曜石粉末", "item.create.precision_mechanism": "精密构件", "item.create.propeller": "扇叶", + "item.create.raw_zinc": "粗锌", "item.create.red_sand_paper": "红沙砂纸", "item.create.refined_radiance": "光辉石", "item.create.rose_quartz": "玫瑰石英", @@ -683,14 +771,6 @@ "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", "advancement.create.blaze_cake": "糖份超标", "advancement.create.blaze_cake.desc": "给烈焰人燃烧室烤一份特别蛋糕。", - "advancement.create.chromatic_compound": "两极材料", - "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", - "advancement.create.shadow_steel": "虚空归来者", - "advancement.create.shadow_steel.desc": "制作一些暗影钢", - "advancement.create.refined_radiance": "明亮而启灵", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.chromatic_age": "异彩时代", - "advancement.create.chromatic_age.desc": "创造出光与影的机壳。", "advancement.create.wand_of_symmetry": "简单的镜面几何学", "advancement.create.wand_of_symmetry.desc": "制作一个对称之杖", "advancement.create.extendo_grip": "biu biu biu!", @@ -902,10 +982,10 @@ "create.gui.assembly.exception": "无法组装该装置:", "create.gui.assembly.exception.unmovableBlock": "无法移动的方块:(%4$s)位于 [%1$s,%2$s,%3$s]", "create.gui.assembly.exception.chunkNotLoaded": "位于 [%1$s,%2$s,%3$s] 的方块未处于加载区块", - "create.gui.assembly.exception.structureTooLarge": "装置中的方块数量过多。", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。", + "create.gui.assembly.exception.structureTooLarge": "装置中的方块数量过多。\n配置的最大值为:%1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。\n配置的最大值为:%1$s", "create.gui.assembly.exception.noPistonPoles": "活塞缺失部分活塞杆", - "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足。%1$s", + "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足:%1$s。\n至少需要 %2$s", "create.gui.gauge.info_header": "仪表信息:", "create.gui.speedometer.title": "旋转速度", "create.gui.stressometer.title": "网络应力", @@ -951,7 +1031,7 @@ "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为%1$s", - "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.invalid": "[!] 无效的物品 - 使用蓝图桌来替换", "create.schematic.position": "位置", "create.schematic.rotation": "旋转", "create.schematic.rotation.none": "无", @@ -994,7 +1074,7 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.uploadTooLarge": "你的蓝图超出了服务器指定的限制。", "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", "create.gui.schematicTable.refresh": "刷新文件", @@ -1020,7 +1100,7 @@ "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", "create.gui.schematicannon.slot.gunpowder": "向蓝图加农炮添加火药以提供动力", "create.gui.schematicannon.slot.listPrinter": "在此处放置书以打印蓝图所需的材料清单", - "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特点位置", + "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特定位置", "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料,蓝图加农炮将忽略当前缺失材料并且使用其他已有材料继续工作", "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子。", "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块。", @@ -1047,7 +1127,7 @@ "create.schematicannon.status.schematicExpired": "蓝图文件已过期", "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* ", + "create.materialChecklist.blocksNotLoaded": "*免责声明*\n\n由于相关区块没有被加载,材料列表可能不准确。", "create.gui.filter.deny_list": "黑名单", "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", @@ -1254,6 +1334,7 @@ "create.subtitle.mechanical_press_activation_belt": "辊压机:撞击传送带", "create.subtitle.fwoomp": "土豆加农炮:发射", "create.subtitle.worldshaper_place": "环境塑型器:放置方块", + "create.subtitle.sanding_long": "打磨噪音", "create.subtitle.crushing_1": "磨碎声", "create.subtitle.depot_slide": "物品:滑入", "create.subtitle.saw_activate_stone": "动力锯:切割", @@ -1266,13 +1347,13 @@ "create.subtitle.controller_put": "遥控器:放进讲台", "create.subtitle.cranking": "手摇曲柄:转动", "create.subtitle.wrench_remove": "组件:被破坏", + "create.subtitle.sanding_short": "打磨噪音", "create.subtitle.cogs": "齿轮:嘎吱作响", "create.subtitle.slime_added": "粘液:挤碎声", "create.subtitle.wrench_rotate": "扳手:拧动", "create.subtitle.potato_hit": "土豆:击中", "create.subtitle.saw_activate_wood": "动力锯:切割", "create.subtitle.haunted_bell_convert": "奇异钟:转化", - "create.subtitle.deployer_polish": "机械手:打磨物品", "create.subtitle.deny": "提示声:出错", "create.subtitle.controller_click": "遥控器:按下按钮", "create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射", @@ -1444,11 +1525,6 @@ "block.create.content_observer.tooltip.condition2": "当检测漏斗时 ", "block.create.content_observer.tooltip.behaviour2": "如果一个_匹配_的_物品_通过,则发出一个_红石脉冲_。", - "block.create.adjustable_crate.tooltip": "可调节板条箱", - "block.create.adjustable_crate.tooltip.summary": "该箱子支持玩家对其容量进行调整,最大可以容纳_16组_物品。支持_红石比较器_。", - "block.create.adjustable_crate.tooltip.condition1": "当右击时", - "block.create.adjustable_crate.tooltip.behaviour1": "打开_配置面板_。", - "block.create.creative_crate.tooltip": "创造板条箱", "block.create.creative_crate.tooltip.summary": "这种_储存容器_可以无限地复制任何物品。它还可以移除附近的_蓝图加农炮_的材料需求。", "block.create.creative_crate.tooltip.condition1": "当标记了物品时", @@ -1522,6 +1598,11 @@ "item.create.minecart_coupling.tooltip.condition1": "作用与矿车时", "item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起,在移动时将它们保持_恒定的距离_。", + "item.create.experience_nugget.tooltip": "经验颗粒", + "item.create.experience_nugget.tooltip.summary": "_叮!_从你的奇妙发明中汲取_灵感_", + "item.create.experience_nugget.tooltip.condition1": "当使用时", + "item.create.experience_nugget.tooltip.behaviour1": "_吸收_其中包含的_经验值_。", + "block.create.peculiar_bell.tooltip": "奇异钟", "block.create.peculiar_bell.tooltip.summary": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果......", @@ -1586,18 +1667,6 @@ "create.ponder.tag.logistics": "物品运输", "create.ponder.tag.logistics.description": "该组件可以协助物品运输", - "create.ponder.adjustable_pulse_repeater.header": "使用可调节脉冲中继器控制信号发送", - "create.ponder.adjustable_pulse_repeater.text_1": "可调节脉冲中继器在一段延时之后会发出一道短时脉冲", - "create.ponder.adjustable_pulse_repeater.text_2": "滑动滚轮即可更改延时时间", - "create.ponder.adjustable_pulse_repeater.text_3": "延时配置范围的上限为 30 分钟", - - "create.ponder.adjustable_repeater.header": "使用可调节中继器控制信号发送", - "create.ponder.adjustable_repeater.text_1": "可调节中继器与常规的中继器的行为较为相似", - "create.ponder.adjustable_repeater.text_2": "它们会进行一段时间的充能,时长为设定的时间...", - "create.ponder.adjustable_repeater.text_3": "...然后以同样的时长逐渐退出充能状态", - "create.ponder.adjustable_repeater.text_4": "滑动滚轮即可更改充能时间", - "create.ponder.adjustable_repeater.text_5": "延时配置范围的上限为 30 分钟", - "create.ponder.analog_lever.header": "使用模拟拉杆控制信号发送", "create.ponder.analog_lever.text_1": "要想使得红石信号源信号强度精确且占地面积小,模拟拉杆不可少。", "create.ponder.analog_lever.text_2": "右击可以提升输出模拟信号的强度", @@ -1751,6 +1820,11 @@ "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", + "create.ponder.cogwheel_casing.header": "装壳齿轮", + "create.ponder.cogwheel_casing.text_1": "黄铜机壳或安山机壳可用于装饰齿轮", + "create.ponder.cogwheel_casing.text_2": "在装壳后添加的组件将不会与传动轴相连", + "create.ponder.cogwheel_casing.text_3": "扳手可用于切换连接", + "create.ponder.creative_fluid_tank.header": "创造流体储罐", "create.ponder.creative_fluid_tank.text_1": "创造流体储罐可以提供无限量的流体", "create.ponder.creative_fluid_tank.text_2": "使用一个含有流体的容器右击它,即可指定它提供特定的流体", @@ -1971,6 +2045,17 @@ "create.ponder.item_drain.text_4": "...物品将会经过分液池顶部,并在此过程中将其包含的液体排入分液池内", "create.ponder.item_drain.text_5": "流体管道可以从分液池中抽取液体", + "create.ponder.item_vault_sizes.header": "物品保险库的尺寸", + "create.ponder.item_vault_sizes.text_1": "可以组合物品保险库以增加总容量", + "create.ponder.item_vault_sizes.text_2": "它们的直径最多可以有 3 个方块宽……", + "create.ponder.item_vault_sizes.text_3": "……长度最多为直径的 3 倍", + + "create.ponder.item_vault_storage.header": "在保险库中存储物品", + "create.ponder.item_vault_storage.text_1": "物品保险库可用于存储大量物品", + "create.ponder.item_vault_storage.text_2": "但是,不能手动添加或获取物品", + "create.ponder.item_vault_storage.text_3": "任何用于物品传输的组件都可以用于添加……", + "create.ponder.item_vault_storage.text_4": "……和从该容器中取出物品", + "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", @@ -2174,8 +2259,17 @@ "create.ponder.powered_toggle_latch.text_3": "...开启或者是关闭", "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", + "create.ponder.pulse_extender.header": "使用脉冲延长器控制信号", + "create.ponder.pulse_extender.text_1": "脉冲延长器可以延长通过的信号", + "create.ponder.pulse_extender.text_2": "它会在短暂延迟后激活……", + "create.ponder.pulse_extender.text_3": "……并在配置的持续时间后取消激活", + "create.ponder.pulse_extender.text_4": "通过鼠标滚轮,可以配置持续时间", + "create.ponder.pulse_extender.text_5": "配置的持续时间最长可达 30 分钟", + "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", + "create.ponder.pulse_repeater.text_2": "通过鼠标滚轮,可以配置充能时间", + "create.ponder.pulse_repeater.text_3": "配置的延迟范围最长可达 30 分钟", "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起",