From d5aea052832f749239964657a6efd358d6d70d22 Mon Sep 17 00:00:00 2001 From: Eriksonnaren Date: Thu, 21 Oct 2021 23:27:55 +0200 Subject: [PATCH 01/26] Allows generator blocks to output different speeds in different directions It is currently impossible to for example make a block that both generates stress and that behaves as a gearshift in that it rotates differently on either side. This simple check should allow that to be possible in a much easier and more intuitive manner. --- .../create/content/contraptions/RotationPropagator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java index c12e8a081..01dd91119 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java @@ -156,7 +156,7 @@ public class RotationPropagator { } private static float getAxisModifier(KineticTileEntity te, Direction direction) { - if (!te.hasSource() || !(te instanceof DirectionalShaftHalvesTileEntity)) + if (!(te.hasSource()||te.isSource()) || !(te instanceof DirectionalShaftHalvesTileEntity)) return 1; Direction source = ((DirectionalShaftHalvesTileEntity) te).getSourceFacing(); From e612294c1529227538d03223513b38877a5e1022 Mon Sep 17 00:00:00 2001 From: khj xiaogu <54445543+khjxiaogu@users.noreply.github.com> Date: Tue, 26 Oct 2021 00:33:02 +0800 Subject: [PATCH 02/26] Add Gantry Shaft Impact --- src/main/java/com/simibubi/create/AllBlocks.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index ae99b8f62..8445e6f73 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -773,6 +773,7 @@ public class AllBlocks { existing.getLocation()) .texture("2", p.modLoc("block/" + c.getName() + powered + flipped)); })) + .transform(BlockStressDefaults.setNoImpact()) .item() .transform(customItemModel("_", "block_single")) .register(); From 78dd56998665f9690936422a868fc4470e860f8e Mon Sep 17 00:00:00 2001 From: CKenJa <41111170+CKenJa@users.noreply.github.com> Date: Sat, 20 Nov 2021 21:28:38 +0900 Subject: [PATCH 03/26] Updates to ja_jp.json by CKenJa (#2280) --- .../resources/assets/create/lang/ja_jp.json | 192 +++++++++++------- 1 file changed, 120 insertions(+), 72 deletions(-) diff --git a/src/main/resources/assets/create/lang/ja_jp.json b/src/main/resources/assets/create/lang/ja_jp.json index 967b1a5d5..c6a3c482c 100644 --- a/src/main/resources/assets/create/lang/ja_jp.json +++ b/src/main/resources/assets/create/lang/ja_jp.json @@ -1,4 +1,5 @@ { + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -30,11 +31,13 @@ "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", + "block.create.black_toolbox": "黒色の工具箱", "block.create.black_valve_handle": "黒色のバルブハンドル", "block.create.blaze_burner": "ブレイズバーナー", "block.create.blue_nixie_tube": "青色のニキシー管", "block.create.blue_sail": "青色の帆", "block.create.blue_seat": "青色のシート", + "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", "block.create.brass_belt_funnel": "真鍮のベルトファンネル", "block.create.brass_block": "真鍮ブロック", @@ -45,6 +48,7 @@ "block.create.brown_nixie_tube": "茶色のニキシー管", "block.create.brown_sail": "茶色の帆", "block.create.brown_seat": "茶色のシート", + "block.create.brown_toolbox": "茶色の工具箱", "block.create.brown_valve_handle": "茶色のバルブハンドル", "block.create.cart_assembler": "トロッコアセンブラ", "block.create.chiseled_dark_scoria": "模様入りのダークスコリア", @@ -78,6 +82,7 @@ "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": "ダークオークの窓板", @@ -185,10 +190,12 @@ "block.create.gray_nixie_tube": "灰色のニキシー管", "block.create.gray_sail": "灰色の帆", "block.create.gray_seat": "灰色のシート", + "block.create.gray_toolbox": "灰色の工具箱", "block.create.gray_valve_handle": "灰色のバルブハンドル", "block.create.green_nixie_tube": "緑色のニキシー管", "block.create.green_sail": "緑色の帆", "block.create.green_seat": "緑色のシート", + "block.create.green_toolbox": "緑色の工具箱", "block.create.green_valve_handle": "緑色のバルブハンドル", "block.create.hand_crank": "ハンドクランク", "block.create.haunted_bell": "憑りつかれた鐘", @@ -213,14 +220,17 @@ "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", "block.create.light_blue_seat": "空色のシート", + "block.create.light_blue_toolbox": "空色の工具箱", "block.create.light_blue_valve_handle": "空色のバルブハンドル", "block.create.light_gray_nixie_tube": "薄灰色のニキシー管", "block.create.light_gray_sail": "薄灰色の帆", "block.create.light_gray_seat": "薄灰色のシート", + "block.create.light_gray_toolbox": "薄灰色の工具箱", "block.create.light_gray_valve_handle": "薄灰色のバルブハンドル", "block.create.lime_nixie_tube": "黄緑色のニキシー管", "block.create.lime_sail": "黄緑色の帆", "block.create.lime_seat": "黄緑色のシート", + "block.create.lime_toolbox": "黄緑色の工具箱", "block.create.lime_valve_handle": "黄緑色のバルブハンドル", "block.create.limesand": "石灰砕砂", "block.create.limestone": "石灰岩", @@ -238,6 +248,7 @@ "block.create.magenta_nixie_tube": "赤紫色のニキシー管", "block.create.magenta_sail": "赤紫色の帆", "block.create.magenta_seat": "赤紫色のシート", + "block.create.magenta_toolbox": "赤紫色の工具箱", "block.create.magenta_valve_handle": "赤紫色のバルブハンドル", "block.create.mechanical_arm": "メカニカルアーム", "block.create.mechanical_bearing": "メカニカルベアリング", @@ -271,6 +282,7 @@ "block.create.oak_window_pane": "オークの窓板", "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": "鉄の装飾ガラス板", @@ -323,6 +335,7 @@ "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", "block.create.pink_seat": "桃色のシート", + "block.create.pink_toolbox": "桃色の", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", "block.create.polished_dark_scoria": "磨かれたダークスコリア", @@ -358,11 +371,13 @@ "block.create.purple_nixie_tube": "紫色のニキシー管", "block.create.purple_sail": "紫色の帆", "block.create.purple_seat": "紫色のシート", + "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", + "block.create.red_toolbox": "赤色の工具箱", "block.create.red_valve_handle": "赤色のバルブハンドル", "block.create.redstone_contact": "レッドストーンコンタクト", "block.create.redstone_link": "レッドストーンリンク", @@ -420,12 +435,14 @@ "block.create.white_nixie_tube": "白色のニキシー管", "block.create.white_sail": "白色の帆", "block.create.white_seat": "白色のシート", + "block.create.white_toolbox": "白色の工具箱", "block.create.white_valve_handle": "白色のバルブハンドル", "block.create.windmill_bearing": "風車ベアリング", "block.create.wooden_bracket": "木製ブラケット", "block.create.yellow_nixie_tube": "黄色のニキシー管", "block.create.yellow_sail": "黄色の帆", "block.create.yellow_seat": "黄色のシート", + "block.create.yellow_toolbox": "黄色の工具箱", "block.create.yellow_valve_handle": "黄色のバルブハンドル", "block.create.zinc_block": "亜鉛ブロック", "block.create.zinc_ore": "亜鉛鉱石", @@ -441,7 +458,6 @@ "entity.create.stationary_contraption": "付設からくり", "entity.create.super_glue": "超粘着剤", - "fluid.create.milk": "牛乳", "fluid.create.potion": "ポーション", "fluid.create.tea": "建築家のお茶", @@ -467,6 +483,7 @@ "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": "砕いた銅鉱石", @@ -556,7 +573,7 @@ "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", "advancement.create.fan_lava": "地熱ファンヒーター", "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "風変りな洗濯機", + "advancement.create.fan_water": "風変わりな洗濯機", "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", "advancement.create.fan_smoke": "メカニカルふいご", "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", @@ -752,6 +769,7 @@ "create.recipe.assembly.repeat": "%1$s回繰り返す", "create.recipe.assembly.junk": "ランダムな仕損品", "create.recipe.processing.chance": "%1$s%%チャンス", + "create.recipe.deploying.not_consumed": "消費されない", "create.recipe.heat_requirement.none": "加熱不要", "create.recipe.heat_requirement.heated": "加熱が必要", "create.recipe.heat_requirement.superheated": "極度の加熱が必要", @@ -780,6 +798,7 @@ "create.action.discard": "捨てる", "create.keyinfo.toolmenu": "ツールメニューをフォーカスする", + "create.keyinfo.toolbelt": "近くの工具箱にアクセス", "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", @@ -790,6 +809,13 @@ "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", "create.gui.toolmenu.cycle": "[スクロール] で循環", + + "create.toolbox.unequip": "装備解除: %1$s", + "create.toolbox.outOfRange": "範囲内に工具箱がありません", + "create.toolbox.detach": "アイテムの追跡をやめて所持する", + "create.toolbox.depositAll": "近くの工具箱にアイテムを戻す", + "create.toolbox.depositBox": "工具箱にアイテムを戻す", + "create.gui.symmetryWand.mirrorType": "ミラーの種類", "create.gui.symmetryWand.orientation": "方向", @@ -1028,53 +1054,57 @@ "create.gui.filter.allow_list": "ホワイトリスト", "create.gui.filter.allow_list.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。空のホワイトリストはすべてを拒否します。", "create.gui.filter.respect_data": "データを重視", - "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", + "create.gui.filter.respect_data.description": "アイテムは、耐久値、エンチャント、その他の属性も一致する場合にのみ一致します。", "create.gui.filter.ignore_data": "データを無視", "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", - "create.item_attributes.placeable": "設置可能か", - "create.item_attributes.placeable.inverted": "設置不可能か", + "create.item_attributes.placeable": "設置できるかか", + "create.item_attributes.placeable.inverted": "設置できないか", "create.item_attributes.consumable": "食べられるか", "create.item_attributes.consumable.inverted": "食べられないか", - "create.item_attributes.smeltable": "精錬可能か", - "create.item_attributes.smeltable.inverted": "精錬不可能か", - "create.item_attributes.washable": "洗浄可能か", - "create.item_attributes.washable.inverted": "洗浄不可能か", - "create.item_attributes.smokable": "燻製器で調理可能か", - "create.item_attributes.smokable.inverted": "燻製器で調理不可能か", - "create.item_attributes.crushable": "粉砕可能か", - "create.item_attributes.crushable.inverted": "粉砕不可能か", - "create.item_attributes.blastable": "溶鉱炉で精錬可能か", - "create.item_attributes.blastable.inverted": "溶鉱炉で精錬不可能か", + "create.item_attributes.fluid_container": "液体を貯蔵できるか", + "create.item_attributes.fluid_container.inverted": "液体を貯蔵できないか", "create.item_attributes.enchanted": "エンチャント済みか", "create.item_attributes.enchanted.inverted": "エンチャントなしか", + "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", + "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", + "create.item_attributes.renamed": "名前付きか", + "create.item_attributes.renamed.inverted": "名前付きでないか", "create.item_attributes.damaged": "破損してるか", "create.item_attributes.damaged.inverted": "破損していないか", "create.item_attributes.badly_damaged": "ひどく損傷してるか", "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", - "create.item_attributes.not_stackable": "スタック可能か", - "create.item_attributes.not_stackable.inverted": "スタック不可能か", - "create.item_attributes.equipable": "装備可能か", - "create.item_attributes.equipable.inverted": "装備不可能か", + "create.item_attributes.not_stackable": "スタックできるかか", + "create.item_attributes.not_stackable.inverted": "スタックできないか", + "create.item_attributes.equipable": "装備できるかか", + "create.item_attributes.equipable.inverted": "装備できないか", "create.item_attributes.furnace_fuel": "かまどの燃料か", "create.item_attributes.furnace_fuel.inverted": "かまどの燃料でないか", + "create.item_attributes.washable": "洗浄できるかか", + "create.item_attributes.washable.inverted": "洗浄できないか", + "create.item_attributes.crushable": "粉砕できるかか", + "create.item_attributes.crushable.inverted": "粉砕できないか", + "create.item_attributes.smeltable": "精錬できるかか", + "create.item_attributes.smeltable.inverted": "精錬できないか", + "create.item_attributes.smokable": "燻製器で調理できるかか", + "create.item_attributes.smokable.inverted": "燻製器で調理できないか", + "create.item_attributes.blastable": "溶鉱炉で精錬できるかか", + "create.item_attributes.blastable.inverted": "溶鉱炉で精錬できないか", + "create.item_attributes.shulker_level": "%1$sシュルカーか", + "create.item_attributes.shulker_level.inverted": "%1$sシュルカーでないか", + "create.item_attributes.shulker_level.full": "満杯の", + "create.item_attributes.shulker_level.empty": "空の", + "create.item_attributes.shulker_level.partial": "一部埋まっている", "create.item_attributes.in_tag": "%1$sのタグが付けられてるか", "create.item_attributes.in_tag.inverted": "%1$sのタグがついていないか", "create.item_attributes.in_item_group": "%1$sに属してるか", "create.item_attributes.in_item_group.inverted": "%1$sに属していないか", "create.item_attributes.added_by": "%1$sによって追加されたか", "create.item_attributes.added_by.inverted": "%1$sによって追加されていないか", - "create.item_attributes.shulker_level": "%1$sシュルカーか", - "create.item_attributes.shulker_level.inverted": "%1$sシュルカーでないか", - "create.item_attributes.shulker_level.full": "満杯の", - "create.item_attributes.shulker_level.empty": "空の", - "create.item_attributes.shulker_level.partial": "一部埋まっている", "create.item_attributes.has_enchant": "エンチャントされているか%1$s", "create.item_attributes.has_enchant.inverted": "エンチャントがされていないか", "create.item_attributes.color": "%1$sで染められているか", "create.item_attributes.color.inverted": "%1$sで染められていないか", - "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", - "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", "create.item_attributes.has_fluid": "%1$sを含んでいるか", "create.item_attributes.has_fluid.inverted": "%1$sを含んでいないか", "create.item_attributes.has_name": "%1$sの名前が付けられているか", @@ -1089,14 +1119,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_crystal": "%1$s クリスタル属性を持つ", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たない", - "create.item_attributes.astralsorcery_constellation": "%1$s に同調している", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していない", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性がある", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がない", "create.item_attributes.astralsorcery_amulet": "%1$s 改善", "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されない", + "create.item_attributes.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": "選択された属性:", @@ -1239,7 +1269,7 @@ "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", "create.subtitle.wrench_rotate": "レンチが使用される", - "create.subtitle.potato_hit": "野菜が衝突する", + "create.subtitle.potato_hit": "野菜の衝撃", "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", "create.subtitle.deployer_polish": "デプロイヤーが磨く", @@ -1317,7 +1347,7 @@ "item.create.potato_cannon.tooltip.condition1": "左クリックしたとき", "item.create.potato_cannon.tooltip.behaviour1": "_インベントリ_の中から_適切_なアイテムを発射します。", "item.create.potato_cannon.tooltip.condition2": "銅のバックタンクを装備した時", - "item.create.potato_cannon.tooltip.behaviour2": "_耐久性_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", + "item.create.potato_cannon.tooltip.behaviour2": "_耐久値_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", "item.create.filter.tooltip": "フィルター", "item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。", @@ -1393,6 +1423,15 @@ "block.create.turntable.tooltip": "ターンテーブル", "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", + "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", + "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", + "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", + "block.create.toolbox.tooltip.condition3": "左クリックした時", + "block.create.toolbox.tooltip.behaviour3": "_収納UI_を開きます", + "block.create.stockpile_switch.tooltip": "在庫スイッチ", "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", @@ -1400,6 +1439,10 @@ "block.create.content_observer.tooltip": "コンテンツオブザーバー", "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察している_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", + "block.create.content_observer.tooltip.condition1": "収納ブロックを観察するとき", + "block.create.content_observer.tooltip.behaviour1": "観測するコンテナが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", + "block.create.content_observer.tooltip.condition2": "ファンネルを観察するとき", + "block.create.content_observer.tooltip.behaviour2": "_一致するアイテム_が_輸送_されると、_レッドストーンパルス_を発します。", "block.create.adjustable_crate.tooltip": "可変クレート", "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", @@ -1411,6 +1454,11 @@ "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", + "item.create.creative_blaze_cake.tooltip": "クリエイティブブレイズケーキ", + "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)だろう。", + "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを左クリックしたとき", + "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力をロックします。再度使用するとブレイズバーナーの火力を循環させます", + "block.create.controller_rail.tooltip": "コントローラーレール", "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", "block.create.controller_rail.tooltip.condition1": "レッドストーン信号を受けたとき", @@ -1460,14 +1508,14 @@ "item.create.diving_boots.tooltip": "潜水ブーツ", "item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。", "item.create.diving_boots.tooltip.condition1": "装備したとき", - "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩行_と_ジャンプ_が可能になります。また、メカニカルベルトの影響を受けなくなります。", + "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩いたり_、_ジャンプ_したりできます。また、メカニカルベルトの影響を受けなくなります。", "item.create.crafting_blueprint.tooltip": "クラフトブループリント", "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業でのクラフトを簡単にできます。各スロットが1つのレシピを表しています。", - "item.create.crafting_blueprint.tooltip.condition1": "空きスロットを左クリックしたとき", - "item.create.crafting_blueprint.tooltip.behaviour1": "_レシピ_や表示するアイテムを_設定_できる_クラフトメニュー_を開きます。", - "item.create.crafting_blueprint.tooltip.condition2": "設定済みスロットを左クリックしたとき", - "item.create.crafting_blueprint.tooltip.behaviour2": "_インベントリ_にある一致する材料で_設定されたレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", + "item.create.crafting_blueprint.condition1": "空きスロットを左クリックしたとき", + "item.create.crafting_blueprint.behaviour1": "_レシピ_や表示するアイテムを_設定_できる_クラフトメニュー_を開きます。", + "item.create.crafting_blueprint.condition2": "設定済みスロットを左クリックしたとき", + "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定されたレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", "item.create.minecart_coupling.tooltip": "トロッコ連結器", "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", @@ -1475,7 +1523,7 @@ "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", "block.create.peculiar_bell.tooltip": "風変わりな鐘", - "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘。_魂の炎_の真上に置くと、別の使い方が見つかるかもしれません...", + "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", "block.create.haunted_bell.tooltip": "憑りつかれた鐘", "block.create.haunted_bell.tooltip.summary": "ネザーに彷徨う魂が宿る、呪われた鐘", @@ -1499,44 +1547,44 @@ "create.ponder.slow_text": "熟考(スロー再生)", "create.ponder.exit": "終了", "create.ponder.welcome": "思案画面へようこそ", - "create.ponder.categories": "Createで利用可能なカゴテリ", + "create.ponder.categories": "Createで閲覧できるカテゴリ", "create.ponder.index_description": "アイテムをクリックすると、関連するアイテムやブロックの情報が表示されます。", "create.ponder.index_title": "思案索引", - "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "スニーク +", - "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", + "create.ponder.shared.rpm16": "16 RPM", "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", + "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", + "create.ponder.shared.sneak_and": "スニーク +", "create.ponder.shared.rpm8": "8 RPM", "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 RPM", "create.ponder.shared.rpm16_source": "動力源: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "原動機", - "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", - "create.ponder.tag.contraption_actor": "からくり構造部品", - "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", - "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", - "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", - "create.ponder.tag.logistics": "輸送機械", - "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", - "create.ponder.tag.movement_anchor": "からくり機械", - "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", - "create.ponder.tag.creative": "クリエイティブ限定", - "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", - "create.ponder.tag.kinetic_relays": "伝達機械", - "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", - "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", - "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", - "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", - "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", - "create.ponder.tag.decoration": "装飾", - "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", - "create.ponder.tag.kinetic_appliances": "作業機械", - "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", + "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", "create.ponder.tag.redstone": "制御機械", "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", + "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", + "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", "create.ponder.tag.fluids": "液体制御機械", "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", + "create.ponder.tag.decoration": "装飾", + "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", + "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", + "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", + "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", + "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", + "create.ponder.tag.kinetic_appliances": "作業機械", + "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", + "create.ponder.tag.kinetic_sources": "原動機", + "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", + "create.ponder.tag.movement_anchor": "からくり機械", + "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", + "create.ponder.tag.kinetic_relays": "伝達機械", + "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", + "create.ponder.tag.contraption_actor": "からくり構造部品", + "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", + "create.ponder.tag.creative": "クリエイティブ限定", + "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", + "create.ponder.tag.logistics": "輸送機械", + "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", "create.ponder.adjustable_pulse_repeater.header": "可変パルスリピーターによる信号制御", "create.ponder.adjustable_pulse_repeater.text_1": "可変パルスリピーターは信号を遅延し、短いパルスにして出力します", @@ -1594,7 +1642,7 @@ "create.ponder.belt_directions.text_3": "2.斜め", "create.ponder.belt_directions.text_4": "3.垂直", "create.ponder.belt_directions.text_5": "4.垂直方向のシャフトを水平に", - "create.ponder.belt_directions.text_6": "これらはすべて接続可能な方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", + "create.ponder.belt_directions.text_6": "これらはすべて接続できる方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", @@ -1710,7 +1758,7 @@ "create.ponder.creative_fluid_tank.text_4": "クリエイティブ液体タンクに押し入れた液体は消滅します", "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", - "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで調整可能な原動機です", + "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで出力を調整できる原動機です", "create.ponder.creative_motor.text_2": "背面パネルを見ながらスクロールすると、モーターの回転速度を変更できます", "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", @@ -1897,7 +1945,7 @@ "create.ponder.hose_pulley.header": "ホースプーリーを使った液体の吸入・放出", "create.ponder.hose_pulley.text_1": "ホースプーリーは、大規模な液体の吸入や放出に使います", - "create.ponder.hose_pulley.text_2": "回転力の入出口はプーリーのホースの高さを変えるのに使います", + "create.ponder.hose_pulley.text_2": "回転力の出入口はプーリーのホースの高さを変えるのに使います", "create.ponder.hose_pulley.text_3": "回転方向を逆にするとプーリーが収納されます", "create.ponder.hose_pulley.text_4": "反対側にはパイプを接続できます", "create.ponder.hose_pulley.text_5": "接続された液体ネットワークはプーリーに液体を供給し、放出できます", @@ -2098,7 +2146,7 @@ "create.ponder.portable_fluid_interface.text_4": "すれ違ったときに必ず接続されます", "create.ponder.portable_fluid_interface.text_5": "接続中は、設置されている方のインターフェースはからくり内全てのタンクのように振る舞います", "create.ponder.portable_fluid_interface.text_6": "液体の搬入と...", - "create.ponder.portable_fluid_interface.text_7": "...搬出ができるます", + "create.ponder.portable_fluid_interface.text_7": "...搬出ができます", "create.ponder.portable_fluid_interface.text_8": "しばらく中身が出し入れされないと、このからくりはまた動き出します", "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", From db4fcf80659ba5da23a54bbf6f5e9159ed48a761 Mon Sep 17 00:00:00 2001 From: vyhi <75101424+vyhi@users.noreply.github.com> Date: Sat, 20 Nov 2021 09:31:17 -0300 Subject: [PATCH 04/26] Updates to pt_br.json by vyhi (#2284) --- .../assets/create/lang/unfinished/pt_br.json | 1981 ++--------------- 1 file changed, 129 insertions(+), 1852 deletions(-) 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 c53fcb906..ba2e42220 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -2,61 +2,41 @@ "_": "Missing Localizations: 1652", "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "UNLOCALIZED: Acacia Window", - "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "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 Andesite", - "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", - "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", - "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_bricks": "Tijolos de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", - "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", - "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", - "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", - "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", - "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", + "block.create.andesite_encased_shaft": "Eixo revestido com latão", "block.create.andesite_funnel": "Funil de Andesito", - "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "Tunel de Andesito", "block.create.basin": "Bacia", "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_sail": "UNLOCALIZED: Black Sail", - "block.create.black_seat": "UNLOCALIZED: Black Seat", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", - "block.create.black_valve_handle": "UNLOCALIZED: Black Valve Handle", - "block.create.blaze_burner": "UNLOCALIZED: Blaze Burner", - "block.create.blue_nixie_tube": "UNLOCALIZED: Blue Nixie Tube", - "block.create.blue_sail": "UNLOCALIZED: Blue Sail", - "block.create.blue_seat": "UNLOCALIZED: Blue Seat", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", - "block.create.blue_valve_handle": "UNLOCALIZED: Blue Valve Handle", + "block.create.black_sail": "Vela preta", + "block.create.black_seat": "Assento preto", + "block.create.black_toolbox": "Caixa de ferramentas preta", + "block.create.black_valve_handle": "Válvula preta", + "block.create.blaze_burner": "Queimador de blaze", + "block.create.blue_nixie_tube": "Tubo nixie azul", + "block.create.blue_sail": "Vela azul", + "block.create.blue_seat": "Assento azul", + "block.create.blue_toolbox": "Caixa de ferramentas azul", + "block.create.blue_valve_handle": "Válvula azul", "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_shaft": "Eixo Revestido com Latão", "block.create.brass_funnel": "Funil de Latão", "block.create.brass_tunnel": "Tunel de Latão", - "block.create.brown_nixie_tube": "UNLOCALIZED: Brown Nixie Tube", - "block.create.brown_sail": "UNLOCALIZED: Brown Sail", - "block.create.brown_seat": "UNLOCALIZED: Brown Seat", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", - "block.create.brown_valve_handle": "UNLOCALIZED: Brown Valve Handle", + "block.create.brown_nixie_tube": "Tubo de nixie marrom", + "block.create.brown_sail": "Vela marrom", + "block.create.brown_seat": "Assento marrom", + "block.create.brown_toolbox": "Caixa de ferramentas marrom", + "block.create.brown_valve_handle": "Válvula marrom", "block.create.cart_assembler": "Montador de Carrinho de Mina", - "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", - "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", - "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", - "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", - "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", - "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chocolate": "Chocolate", "block.create.chute": "Calha", "block.create.clockwork_bearing": "Rolamento de relôgio", @@ -68,188 +48,90 @@ "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_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "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.crimson_window": "UNLOCALIZED: Crimson Window", - "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.cyan_nixie_tube": "UNLOCALIZED: Cyan Nixie Tube", - "block.create.cyan_sail": "UNLOCALIZED: Cyan Sail", - "block.create.cyan_seat": "UNLOCALIZED: Cyan Seat", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", - "block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle", - "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", - "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", - "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", - "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", - "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", - "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", - "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", - "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", - "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", - "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", - "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "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.deployer": "Implantador", "block.create.depot": "Depósito", "block.create.diorite_bricks": "Tijolos de Diorito", - "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", - "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", - "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", - "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", - "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", - "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", - "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", - "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", "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_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", - "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", - "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", - "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", "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", - "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", - "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", - "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", - "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", - "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", - "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", - "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", - "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", - "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", - "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", - "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", - "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", - "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", - "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", - "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", - "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", - "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", - "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", - "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", - "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", - "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", - "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", - "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", - "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", - "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", - "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", - "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", - "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", - "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", - "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", - "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", - "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", - "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", - "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", - "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", - "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "Cano de Fluido", "block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_valve": "Válvula", - "block.create.flywheel": "UNLOCALIZED: Flywheel", - "block.create.framed_glass": "UNLOCALIZED: Framed Glass", - "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", + "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_slab": "UNLOCALIZED: Gabbro Bricks Slab", "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", - "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", - "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", - "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", - "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", - "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", "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.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", - "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", - "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", - "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", - "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", - "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", - "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", - "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.gray_nixie_tube": "UNLOCALIZED: Gray Nixie Tube", - "block.create.gray_sail": "UNLOCALIZED: Gray Sail", - "block.create.gray_seat": "UNLOCALIZED: Gray Seat", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", - "block.create.gray_valve_handle": "UNLOCALIZED: Gray Valve Handle", - "block.create.green_nixie_tube": "UNLOCALIZED: Green Nixie Tube", - "block.create.green_sail": "UNLOCALIZED: Green Sail", - "block.create.green_seat": "UNLOCALIZED: Green Seat", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", - "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", + "block.create.gray_nixie_tube": "Tubo nixie cinza", + "block.create.gray_sail": "Vela cinza", + "block.create.gray_seat": "Assento cinza", + "block.create.gray_toolbox": "Caixa de ferramentas cinza", + "block.create.gray_valve_handle": "Válvula cinza", + "block.create.green_nixie_tube": "Tubo nixie verde", + "block.create.green_sail": "Vela verde", + "block.create.green_seat": "Assento verde", + "block.create.green_toolbox": "Caixa de ferramentas verde", + "block.create.green_valve_handle": "Válvula verde", "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Sino assombrado", "block.create.honey": "Mel", - "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", - "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.jungle_window": "UNLOCALIZED: Jungle Window", - "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", "block.create.large_cogwheel": "Roda Dentada Grande", - "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", - "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", - "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", - "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", - "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", - "block.create.layered_granite": "UNLOCALIZED: Layered Granite", - "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", - "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", - "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", "block.create.lectern_controller": "Controle de Atril", - "block.create.light_blue_nixie_tube": "UNLOCALIZED: Light Blue Nixie Tube", - "block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail", - "block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", - "block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle", - "block.create.light_gray_nixie_tube": "UNLOCALIZED: Light Gray Nixie Tube", - "block.create.light_gray_sail": "UNLOCALIZED: Light Gray Sail", - "block.create.light_gray_seat": "UNLOCALIZED: Light Gray Seat", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", - "block.create.light_gray_valve_handle": "UNLOCALIZED: Light Gray Valve Handle", - "block.create.lime_nixie_tube": "UNLOCALIZED: Lime Nixie Tube", - "block.create.lime_sail": "UNLOCALIZED: Lime Sail", - "block.create.lime_seat": "UNLOCALIZED: Lime Seat", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", - "block.create.lime_valve_handle": "UNLOCALIZED: Lime Valve Handle", + "block.create.light_blue_nixie_tube": "tubo nixie azul claro", + "block.create.light_blue_sail": "Vela azul claro", + "block.create.light_blue_seat": "Assento azul claro", + "block.create.light_blue_toolbox": "Caixa de ferramentas azul claro", + "block.create.light_blue_valve_handle": "válvula azul claro", + "block.create.light_gray_nixie_tube": "Tubo nixie azul claro", + "block.create.light_gray_sail": "Vela cinza claro", + "block.create.light_gray_seat": "Assento cinza claro", + "block.create.light_gray_toolbox": "Caixa de ferramentas cinza claro", + "block.create.light_gray_valve_handle": "Válvula cinza claro", + "block.create.lime_nixie_tube": "Tubo nixie cinza claro", + "block.create.lime_sail": "Vela lima", + "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_cobblestone": "UNLOCALIZED: Limestone Cobblestone", - "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", - "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", - "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis Linear", "block.create.lit_blaze_burner": "Queimador de Blaze Acesso", - "block.create.magenta_nixie_tube": "UNLOCALIZED: Magenta Nixie Tube", - "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", - "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", - "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", + "block.create.magenta_nixie_tube": "Tubo nixie magenta", + "block.create.magenta_sail": "Vela magenta", + "block.create.magenta_seat": "Assento magenta", + "block.create.magenta_toolbox": "Caixa de ferramentas magenta", + "block.create.magenta_valve_handle": "Válvula magenta", "block.create.mechanical_arm": "Braço mecânico", "block.create.mechanical_bearing": "Rolamento mecânico", "block.create.mechanical_crafter": "Fabricador mecânico", @@ -262,153 +144,59 @@ "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.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", - "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", - "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", - "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", - "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", - "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", - "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", - "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", - "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", - "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", - "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", - "block.create.nixie_tube": "Tubo de Nixie", - "block.create.nozzle": "UNLOCALIZED: Nozzle", - "block.create.oak_window": "UNLOCALIZED: Oak Window", - "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", - "block.create.orange_sail": "UNLOCALIZED: Orange Sail", - "block.create.orange_seat": "UNLOCALIZED: Orange Seat", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", - "block.create.orange_valve_handle": "UNLOCALIZED: Orange Valve Handle", - "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", - "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", - "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", - "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", - "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", - "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", - "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", - "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", - "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", - "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", - "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", - "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", - "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", - "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", - "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", - "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", - "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", - "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", - "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", - "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", - "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", - "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", - "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", - "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", - "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", - "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", - "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", - "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", - "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", - "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", - "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", - "block.create.paved_granite": "UNLOCALIZED: Paved Granite", - "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", - "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", - "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", - "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", - "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", - "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", - "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", - "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", - "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", - "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", - "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", - "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", - "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", - "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", - "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell", - "block.create.pink_nixie_tube": "UNLOCALIZED: Pink Nixie Tube", - "block.create.pink_sail": "UNLOCALIZED: Pink Sail", - "block.create.pink_seat": "UNLOCALIZED: Pink Seat", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", - "block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle", + "block.create.nixie_tube": "Tubo Nixie", + "block.create.nozzle": "Bocal", + "block.create.orange_sail": "Vela laranja", + "block.create.orange_seat": "Assento laranja", + "block.create.orange_toolbox": "Caixa de ferramentas laranja", + "block.create.orange_valve_handle": "Válvula laranja", + "block.create.peculiar_bell": "Sino peculiar", + "block.create.pink_nixie_tube": "Tubo nixie rosa", + "block.create.pink_sail": "Vela rosa", + "block.create.pink_seat": "Assento rosa", + "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_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", - "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", - "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", - "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", "block.create.polished_dolomite": "Dolomite Polido", - "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", - "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", - "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", "block.create.polished_gabbro": "Gabbro Polido", - "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", - "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", - "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", "block.create.polished_limestone": "Calcário Polido", "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", - "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", - "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", - "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", - "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", - "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", "block.create.polished_weathered_limestone": "Calcário Polido Resistido", "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", - "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", - "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", - "block.create.powered_latch": "UNLOCALIZED: Powered Latch", - "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", + "block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.pulley_magnet": "Imã da Polia", "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.purple_nixie_tube": "UNLOCALIZED: Purple Nixie Tube", - "block.create.purple_sail": "UNLOCALIZED: Purple Sail", - "block.create.purple_seat": "UNLOCALIZED: Purple Seat", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", - "block.create.purple_valve_handle": "UNLOCALIZED: Purple Valve Handle", - "block.create.radial_chassis": "Chassi Radial", - "block.create.red_nixie_tube": "UNLOCALIZED: Red Nixie Tube", - "block.create.red_sail": "UNLOCALIZED: Red Sail", - "block.create.red_seat": "UNLOCALIZED: Red Seat", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", - "block.create.red_valve_handle": "UNLOCALIZED: Red Valve Handle", + "block.create.purple_nixie_tube": "Tubo nixie roxo", + "block.create.purple_sail": "Vela roxo", + "block.create.purple_seat": "Assento roxo", + "block.create.purple_toolbox": "Caixa de ferramentas roxa", + "block.create.purple_valve_handle": "válvula roxa", + "block.create.radial_chassis": "Chassis Radial", + "block.create.red_nixie_tube": "Tubo nixie vermelho", + "block.create.red_sail": "Vela vermelha", + "block.create.red_seat": "Assento vermelho", + "block.create.red_toolbox": "Caixa de ferramentas vermelha", + "block.create.red_valve_handle": "Válvula vermelha", "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": "UNLOCALIZED: Reinforced Rail", + "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.sail_frame": "UNLOCALIZED: Sail Frame", + "block.create.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", - "block.create.scoria": "UNLOCALIZED: Scoria", - "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", - "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", - "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", - "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", - "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", - "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", - "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", - "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", - "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", + "block.create.secondary_linear_chassis": "Chassis linear secundário", + "block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.shadow_steel_casing": "Revestiment das Sombras", "block.create.shaft": "Eixo", "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.spruce_window": "UNLOCALIZED: Spruce Window", - "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", @@ -416,34 +204,25 @@ "block.create.tiled_glass": "Vidro Entalhado", "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.turntable": "Mesa giratória", - "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", - "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", "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_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", - "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", - "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", - "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_nixie_tube": "UNLOCALIZED: White Nixie Tube", - "block.create.white_sail": "UNLOCALIZED: White Sail", - "block.create.white_seat": "UNLOCALIZED: White Seat", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", - "block.create.white_valve_handle": "UNLOCALIZED: White Valve Handle", - "block.create.windmill_bearing": "UNLOCALIZED: Windmill Bearing", + "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.yellow_nixie_tube": "UNLOCALIZED: Yellow Nixie Tube", - "block.create.yellow_sail": "UNLOCALIZED: Yellow Sail", - "block.create.yellow_seat": "UNLOCALIZED: Yellow Seat", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", - "block.create.yellow_valve_handle": "UNLOCALIZED: Yellow Valve Handle", + "block.create.yellow_nixie_tube": "Tubo nixie amarelo", + "block.create.yellow_sail": "Vela amarela", + "block.create.yellow_seat": "Assento amarelo", + "block.create.yellow_toolbox": "Caixa de amarela", + "block.create.yellow_valve_handle": "Válvula amarela", "block.create.zinc_block": "Bloco de Zinco", "block.create.zinc_ore": "Minério de Zinco", @@ -453,7 +232,7 @@ "entity.create.contraption": "Engenhoca", "entity.create.crafting_blueprint": "Esquema de Fabricação", "entity.create.gantry_contraption": "Engenhoca de Pórticolo", - "entity.create.potato_projectile": "Projétil deBatata", + "entity.create.potato_projectile": "Projétil de batata", "entity.create.seat": "Assento", "entity.create.stationary_contraption": "Engenhoca estacionária", "entity.create.super_glue": "Super Cola", @@ -481,7 +260,6 @@ "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": "UNLOCALIZED: Crafter Slot Cover", "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", @@ -500,7 +278,7 @@ "item.create.crushed_zinc_ore": "Minério de Zinco Esmagado", "item.create.diving_boots": "Botas de Mergulhador", "item.create.diving_helmet": "Capacete de Mergulhador", - "item.create.dough": "Massa", + "item.create.dough": "Massa de pão", "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", @@ -547,7 +325,6 @@ "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.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.", @@ -557,156 +334,42 @@ "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.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": "UNLOCALIZED: Tumbling down", + "advancement.create.chute": "Caindo", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "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": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "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.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "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.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "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.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.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.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.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", + "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.polished_rose_quartz": "Diamantes rosa", + "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", + "advancement.create.mechanical_saw.desc": "Coloque e energize uma serra mecânica.", + "advancement.create.basin": "Operação da bacia", + "advancement.create.basin.desc": "Coloque uma bacia e tente jogar itens nela.", + "advancement.create.mixer": "Misturando", + "advancement.create.mixer.desc": "Coloque um batedor mecânico acima da bacia, energize este, e comece a misturar alguns ingredientes.", + "advancement.create.blaze_burner": "Uma fogueira viva", + "advancement.create.blaze_burner.desc": "Obtenha um queimador de blaze.", + "advancement.create.compact": "Compactação automática", + "advancement.create.compact.desc": "Use uma prensa e uma bacia para compactar alguns itens.", + "advancement.create.brass": "Ligas de verdade", + "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", + "advancement.create.brass_casing": "a era do latão", + "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.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.", "_": "->------------------------] UI & Messages [------------------------<-", - "itemGroup.create.base": "UNLOCALIZED: Create", - "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Paletes Create", "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", "death.attack.create.crush.player": "%1$s foi jogando numa Roda de moer por %2$s", @@ -716,26 +379,13 @@ "death.attack.create.fan_lava.player": "U%1$s foi jogado numa fundidora por %2$s", "death.attack.create.mechanical_drill": "%1$s foi empalado pela Broca Mecânica", "death.attack.create.mechanical_drill.player": "%1$s foi jogado na frente de uma broca por %2$s", - "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw", - "death.attack.create.mechanical_saw.player": "UNLOCALIZED: %1$s was thrown into a Saw by %2$s", - "death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon", - "death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s", - "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", - "death.attack.create.cuckoo_clock_explosion.player": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", - - "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.ponder_index": "UNLOCALIZED: Ponder Index", - "create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - + "death.attack.create.mechanical_saw": "%1$s foi cortado ao meio por uma serra mecânica", + "death.attack.create.mechanical_saw.player": "%1$s foi jogado numa serra por %2$s", + "death.attack.create.potato_cannon": "%1$s foi atirado pelo canhão de batatas do %2$", + "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.milling": "UNLOCALIZED: Milling", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", "create.recipe.fan_smoking": "Defumação em massa", @@ -745,35 +395,7 @@ "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "Compactando", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", - "create.recipe.sawing": "UNLOCALIZED: Sawing", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly", - "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", - "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", - "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", - "create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press", - "create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s", - "create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s", - "create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw", - "create.recipe.assembly.repeat": "UNLOCALIZED: Repeat Sequence %1$s Times", - "create.recipe.assembly.junk": "UNLOCALIZED: Random salvage", - "create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", - "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", - "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", - "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", - "create.generic.range": "Área", "create.generic.radius": "Raio", "create.generic.width": "Largura", @@ -798,24 +420,13 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "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.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", - "create.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -829,125 +440,17 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", - "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", - "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", - "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", - "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", - "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", - "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", - "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", - "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", - "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", - "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", - "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", - "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", - "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", - - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", - "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "UNLOCALIZED: Filter", - "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", - "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", - "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", - "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "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", "create.gui.goggles.pole_length": "Comprimento da vara:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", - "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", - "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", - "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", - "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", - "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", - "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "UNLOCALIZED: Adjustable Crate", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", - "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Primeira posição feita.", "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", "create.schematicAndQuill.abort": "Seleção removida.", - "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", @@ -996,12 +499,7 @@ "create.schematics.synchronizing": "Sincronizando...", "create.schematics.uploadTooLarge": "Seu esquema é muito grande", "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", - - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", "create.gui.schematicTable.title": "Mesa de Desenho", - "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", - "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Canhão de esquema", @@ -1018,9 +516,6 @@ "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", "create.gui.schematicannon.option.skipMissing.description": "Se o Canhão de esquema não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", "create.gui.schematicannon.option.skipTileEntities.description": "O Canhão de esquema vai evitar substituir blocos que contêm dados como Baus.", "create.gui.schematicannon.option.dontReplaceSolid.description": "O Canhão de esquema nunca irá substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", @@ -1046,244 +541,10 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", - "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", - "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", - "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", - "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", - "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", - "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", - "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", - "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", - "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", - "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", - "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", - "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", - "create.tooltip.stressImpact.high": "UNLOCALIZED: High", - "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", - "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", - "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", - "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above", - "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", - "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", - "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", - "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", - "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", - - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - - "create.potato_cannon.ammo.attack_damage": "UNLOCALIZED: %1$s Attack Damage", - "create.potato_cannon.ammo.reload_ticks": "UNLOCALIZED: %1$s Reload Ticks", - "create.potato_cannon.ammo.knockback": "UNLOCALIZED: %1$s Knockback", - - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "UNLOCALIZED: killtps", - "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - "create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world", "_": "->------------------------] Subtitles [------------------------<-", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.peculiar_bell_use": "UNLOCALIZED: Peculiar Bell tolls", - "create.subtitle.mixing": "UNLOCALIZED: Mixing noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.crushing_1": "UNLOCALIZED: Crushing noises", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps", - "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", - "create.subtitle.haunted_bell_use": "UNLOCALIZED: Haunted Bell tolls", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.controller_put": "UNLOCALIZED: Controller thumps", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.haunted_bell_convert": "UNLOCALIZED: Haunted Bell awakens", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.controller_take": "UNLOCALIZED: Lectern empties", - "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1296,20 +557,6 @@ "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", - "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", - "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - "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", @@ -1321,48 +568,11 @@ "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", - "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - - "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", - "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", - "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", - "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - "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_", @@ -1388,961 +598,28 @@ "block.create.schematicannon.tooltip": "Canhão de esquema", "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", - - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", - "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", - "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", - "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - "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.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", - "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.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ or _Fluids_ inside _containers_, _pipes_ or _conveyors_ matching a configured _filter_.", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", - "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.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - + "block.create.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", - "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - - "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", - "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", - "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", - "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", - - "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - "item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - "item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", - - "item.create.linked_controller.tooltip": "UNLOCALIZED: LINKED CONTROLLER", - "item.create.linked_controller.tooltip.summary": "UNLOCALIZED: Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.", - "item.create.linked_controller.tooltip.condition1": "UNLOCALIZED: R-Click", - "item.create.linked_controller.tooltip.behaviour1": "UNLOCALIZED: _Toggles_ the controller. _Movement_ _controls_ are taken over while its active.", - "item.create.linked_controller.tooltip.condition2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.", - "item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver", - "item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.", - "item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern", - "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", - - "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", - "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", - - "item.create.copper_backtank.tooltip": "UNLOCALIZED: COPPER BACKTANK", - "item.create.copper_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", - "item.create.copper_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.copper_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", - "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", - "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", - - "item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", - "item.create.diving_boots.tooltip.summary": "UNLOCALIZED: A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", - "item.create.diving_boots.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.diving_boots.tooltip.behaviour1": "UNLOCALIZED: Wielder _sinks_ _faster_ and _cannot_ _swim_. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", - - "item.create.crafting_blueprint.tooltip": "UNLOCALIZED: CRAFTING BLUEPRINT", - "item.create.crafting_blueprint.tooltip.summary": "UNLOCALIZED: _Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.", - "item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot", - "item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", - "item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot", - "item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "block.create.peculiar_bell.tooltip": "UNLOCALIZED: PECULIAR BELL", - "block.create.peculiar_bell.tooltip.summary": "UNLOCALIZED: A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may cause side-effects...", - - "block.create.haunted_bell.tooltip": "UNLOCALIZED: HAUNTED BELL", - "block.create.haunted_bell.tooltip.summary": "UNLOCALIZED: A _Cursed Bell_ haunted by lost souls of the Nether.", - "block.create.haunted_bell.tooltip.condition1": "UNLOCALIZED: When Held or Rang", - "block.create.haunted_bell.tooltip.behaviour1": "UNLOCALIZED: Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.", "_": "->------------------------] Ponder Content [------------------------<-", - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.exit": "UNLOCALIZED: Exit", - "create.ponder.welcome": "UNLOCALIZED: Welcome to Ponder", - "create.ponder.categories": "UNLOCALIZED: Available Categories in Create", - "create.ponder.index_description": "UNLOCALIZED: Click one of the icons to learn about its associated Items and Blocks", - "create.ponder.index_title": "UNLOCALIZED: Ponder Index", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front", - "create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_fluid_tank.header": "UNLOCALIZED: Creative Fluid Tanks", - "create.ponder.creative_fluid_tank.text_1": "UNLOCALIZED: Creative Fluid Tanks can be used to provide a bottomless supply of fluid", - "create.ponder.creative_fluid_tank.text_2": "UNLOCALIZED: Right-Click with a fluid containing item to configure it", - "create.ponder.creative_fluid_tank.text_3": "UNLOCALIZED: Pipe Networks can now endlessly draw the assigned fluid from the tank", - "create.ponder.creative_fluid_tank.text_4": "UNLOCALIZED: Any Fluids pushed back into a Creative Fluid Tank will be voided", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_processing.header": "UNLOCALIZED: Processing Items using Deployers", - "create.ponder.deployer_processing.text_1": "UNLOCALIZED: With a fitting held item, Deployers can process items provided beneath them", - "create.ponder.deployer_processing.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Deployer", - "create.ponder.deployer_processing.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.deployer_processing.text_4": "UNLOCALIZED: The Deployer will hold and process them automatically", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: The flame can be transformed using a soul-infused item", - "create.ponder.empty_blaze_burner.text_6": "UNLOCALIZED: However, without a blaze they are not suitable for industrial heating", - - "create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes", - "create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes", - "create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state", - "create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes", - "create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets", - "create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window", - "create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments", - "create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids", - "create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first", - "create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents", - "create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid", - - "create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers", - "create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks", - "create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained", - "create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...", - "create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources", - "create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly", - - "create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank", - "create.ponder.fluid_tank_sizes.text_1": "UNLOCALIZED: Fluid Tanks can be combined to increase the total capacity", - "create.ponder.fluid_tank_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.fluid_tank_sizes.text_3": "UNLOCALIZED: ...and grow in height by more than 30 additional layers", - "create.ponder.fluid_tank_sizes.text_4": "UNLOCALIZED: Using a Wrench, a tanks' window can be toggled", - - "create.ponder.fluid_tank_storage.header": "UNLOCALIZED: Storing Fluids in Fluid Tanks", - "create.ponder.fluid_tank_storage.text_1": "UNLOCALIZED: Fluid Tanks can be used to store large amounts of fluid", - "create.ponder.fluid_tank_storage.text_2": "UNLOCALIZED: Pipe networks can push and pull fluids from any side", - "create.ponder.fluid_tank_storage.text_3": "UNLOCALIZED: The contained fluid can be measured by a Comparator", - "create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually", - "create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.hose_pulley.header": "UNLOCALIZED: Source Filling and Draining using Hose Pulleys", - "create.ponder.hose_pulley.text_1": "UNLOCALIZED: Hose Pulleys can be used to fill or drain large bodies of Fluid", - "create.ponder.hose_pulley.text_2": "UNLOCALIZED: With the Kinetic Input, the height of the pulleys' hose can be controlled", - "create.ponder.hose_pulley.text_3": "UNLOCALIZED: The Pulley retracts while the input rotation is inverted", - "create.ponder.hose_pulley.text_4": "UNLOCALIZED: On the opposite side, pipes can be connected", - "create.ponder.hose_pulley.text_5": "UNLOCALIZED: Attached pipe networks can either provide fluid to the hose...", - "create.ponder.hose_pulley.text_6": "UNLOCALIZED: ...or pull from it, draining the pool instead", - "create.ponder.hose_pulley.text_7": "UNLOCALIZED: Fill and Drain speed of the pulley depends entirely on the fluid networks' throughput", - - "create.ponder.hose_pulley_infinite.header": "UNLOCALIZED: Passively Filling and Draining large bodies of Fluid", - "create.ponder.hose_pulley_infinite.text_1": "UNLOCALIZED: When deploying the Hose Pulley into a large enough ocean...", - "create.ponder.hose_pulley_infinite.text_2": "UNLOCALIZED: It will provide/dispose fluids without affecting the source", - "create.ponder.hose_pulley_infinite.text_3": "UNLOCALIZED: Pipe networks can limitlessly take fluids from/to such pulleys", - - "create.ponder.hose_pulley_level.header": "UNLOCALIZED: Fill and Drain level of Hose Pulleys", - "create.ponder.hose_pulley_level.text_1": "UNLOCALIZED: While fully retracted, the Hose Pulley cannot operate", - "create.ponder.hose_pulley_level.text_2": "UNLOCALIZED: Draining runs from top to bottom", - "create.ponder.hose_pulley_level.text_3": "UNLOCALIZED: The surface level will end up just below where the hose ends", - "create.ponder.hose_pulley_level.text_4": "UNLOCALIZED: Filling runs from bottom to top", - "create.ponder.hose_pulley_level.text_5": "UNLOCALIZED: The filled pool will not grow beyond the layer above the hose end", - - "create.ponder.item_drain.header": "UNLOCALIZED: Emptying Fluid Containers using Item Drains", - "create.ponder.item_drain.text_1": "UNLOCALIZED: Item Drains can extract fluids from items", - "create.ponder.item_drain.text_2": "UNLOCALIZED: Right-click it to pour fluids from your held item into it", - "create.ponder.item_drain.text_3": "UNLOCALIZED: When items are inserted from the side...", - "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", - "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_pump_flow.header": "UNLOCALIZED: Fluid Transportation using Mechanical Pumps", - "create.ponder.mechanical_pump_flow.text_1": "UNLOCALIZED: Mechanical Pumps govern the flow of their attached pipe networks", - "create.ponder.mechanical_pump_flow.text_2": "UNLOCALIZED: When powered, their arrow indicates the direction of flow", - "create.ponder.mechanical_pump_flow.text_3": "UNLOCALIZED: The network behind is now pulling fluids...", - "create.ponder.mechanical_pump_flow.text_4": "UNLOCALIZED: ...while the network in front is transferring it outward", - "create.ponder.mechanical_pump_flow.text_5": "UNLOCALIZED: Reversing the input rotation reverses the direction of flow", - "create.ponder.mechanical_pump_flow.text_6": "UNLOCALIZED: Use a Wrench to reverse the orientation of pumps manually", - - "create.ponder.mechanical_pump_speed.header": "UNLOCALIZED: Throughput of Mechanical Pumps", - "create.ponder.mechanical_pump_speed.text_1": "UNLOCALIZED: Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away", - "create.ponder.mechanical_pump_speed.text_2": "UNLOCALIZED: Speeding up the input rotation changes the speed of flow propagation...", - "create.ponder.mechanical_pump_speed.text_3": "UNLOCALIZED: ...aswell as how quickly fluids are transferred", - "create.ponder.mechanical_pump_speed.text_4": "UNLOCALIZED: Pumps can combine their throughputs within shared pipe networks", - "create.ponder.mechanical_pump_speed.text_5": "UNLOCALIZED: Alternating their orientation can help align their flow directions", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - "create.ponder.nixie_tube.text_3": "UNLOCALIZED: Right-Click with Dye to change their display colour", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", - "create.ponder.portable_fluid_interface.text_1": "UNLOCALIZED: Fluid Tanks on moving contraptions cannot be accessed by any pipes", - "create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption", - "create.ponder.portable_fluid_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_fluid_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_fluid_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL Tanks on the contraption", - "create.ponder.portable_fluid_interface.text_6": "UNLOCALIZED: Fluid can now be inserted...", - "create.ponder.portable_fluid_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_fluid_interface.text_8": "UNLOCALIZED: After no contents have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.smart_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Smart Pipes", - "create.ponder.smart_pipe.text_1": "UNLOCALIZED: Smart pipes can help control flows by fluid type", - "create.ponder.smart_pipe.text_2": "UNLOCALIZED: When placed directly at the source, they can specify the type of fluid to extract", - "create.ponder.smart_pipe.text_3": "UNLOCALIZED: Simply Right-Click their filter slot with any item containing the desired fluid", - "create.ponder.smart_pipe.text_4": "UNLOCALIZED: When placed further down a pipe network, smart pipes will only let matching fluids continue", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.spout_filling.header": "UNLOCALIZED: Filling Items using a Spout", - "create.ponder.spout_filling.text_1": "UNLOCALIZED: The Spout can fill fluid holding items provided beneath it", - "create.ponder.spout_filling.text_2": "UNLOCALIZED: The content of a Spout cannot be accessed manually", - "create.ponder.spout_filling.text_3": "UNLOCALIZED: Instead, Pipes can be used to supply it with fluids", - "create.ponder.spout_filling.text_4": "UNLOCALIZED: The Input items can be placed on a Depot under the Spout", - "create.ponder.spout_filling.text_5": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.spout_filling.text_6": "UNLOCALIZED: The Spout will hold and process them automatically", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.valve_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Valves", - "create.ponder.valve_pipe.text_1": "UNLOCALIZED: Valve pipes help control fluids propagating through pipe networks", - "create.ponder.valve_pipe.text_2": "UNLOCALIZED: Their shaft input controls whether fluid is currently allowed through", - "create.ponder.valve_pipe.text_3": "UNLOCALIZED: Given Rotational Force in the opening direction, the valve will open up", - "create.ponder.valve_pipe.text_4": "UNLOCALIZED: It can be closed again by reversing the input rotation", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - "_": "Thank you for translating Create!" -} \ No newline at end of file +} From f5369ebe637869c2ddf3839dedec1adeb9c3f521 Mon Sep 17 00:00:00 2001 From: Nekrodamus Date: Sat, 20 Nov 2021 09:34:30 -0300 Subject: [PATCH 05/26] Updates to es_es.json by FrannDzs (#2303) --- .../resources/assets/create/lang/es_es.json | 88 ++++++++++++++----- 1 file changed, 65 insertions(+), 23 deletions(-) diff --git a/src/main/resources/assets/create/lang/es_es.json b/src/main/resources/assets/create/lang/es_es.json index 504694aab..9e31d83ed 100644 --- a/src/main/resources/assets/create/lang/es_es.json +++ b/src/main/resources/assets/create/lang/es_es.json @@ -30,11 +30,13 @@ "block.create.black_nixie_tube": "Tubo Nixie negro", "block.create.black_sail": "Vela negra", "block.create.black_seat": "Asiento negro", + "block.create.black_toolbox": "Caja de herramientas negra", "block.create.black_valve_handle": "Asa de válvula negra", "block.create.blaze_burner": "Quemador de Blaze", "block.create.blue_nixie_tube": "Tubo Nixie azul", "block.create.blue_sail": "Vela azul", "block.create.blue_seat": "Asiento azul", + "block.create.blue_toolbox": "Caja de herramientas azul", "block.create.blue_valve_handle": "Asa de válvula azul", "block.create.brass_belt_funnel": "Embudo de cinta de latón", "block.create.brass_block": "Bloque de latón", @@ -45,6 +47,7 @@ "block.create.brown_nixie_tube": "Tubo Nixie marrón", "block.create.brown_sail": "Vela marrón", "block.create.brown_seat": "Asiento marrón", + "block.create.brown_toolbox": "Caja de herramientas marrón", "block.create.brown_valve_handle": "Asa de válvula marrón", "block.create.cart_assembler": "Ensamblador de vagonetas", "block.create.chiseled_dark_scoria": "Escoria oscura cincelada", @@ -78,6 +81,7 @@ "block.create.cyan_nixie_tube": "Tubo Nixie cian", "block.create.cyan_sail": "Vela cian", "block.create.cyan_seat": "Asiento cian", + "block.create.cyan_toolbox": "Caja de herramientas cian", "block.create.cyan_valve_handle": "Asa de válvula cian", "block.create.dark_oak_window": "Ventana de roble oscuro", "block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro", @@ -185,10 +189,12 @@ "block.create.gray_nixie_tube": "Tubo Nixie gris", "block.create.gray_sail": "Vela gris", "block.create.gray_seat": "Asiento gris", + "block.create.gray_toolbox": "Caja de herramientas gris", "block.create.gray_valve_handle": "Asa de válvula gris", "block.create.green_nixie_tube": "Tubo Nixie verde", "block.create.green_sail": "Vela verde", "block.create.green_seat": "Asiento verde", + "block.create.green_toolbox": "Caja de herramientas verde", "block.create.green_valve_handle": "Asa de válvula verde", "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Campana encantada", @@ -213,14 +219,17 @@ "block.create.light_blue_nixie_tube": "Tubo Nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", "block.create.light_blue_seat": "Asiento azul claro", + "block.create.light_blue_toolbox": "Caja de herramientas azul claro", "block.create.light_blue_valve_handle": "Asa de válvula azul claro", "block.create.light_gray_nixie_tube": "Tubo Nixie gris claro", "block.create.light_gray_sail": "Vela gris claro", "block.create.light_gray_seat": "Asiento gris claro", + "block.create.light_gray_toolbox": "Caja de herramientas gris claro", "block.create.light_gray_valve_handle": "Asa de válvula gris claro", "block.create.lime_nixie_tube": "Tubo Nixie lima", "block.create.lime_sail": "Vela lima", "block.create.lime_seat": "Asiento lima", + "block.create.lime_toolbox": "Caja de herramientas lima", "block.create.lime_valve_handle": "Asa de válvula lima", "block.create.limesand": "Arena caliza", "block.create.limestone": "Piedra caliza", @@ -238,6 +247,7 @@ "block.create.magenta_nixie_tube": "Tubo Nixie magenta", "block.create.magenta_sail": "Vela magenta", "block.create.magenta_seat": "Asiento magenta", + "block.create.magenta_toolbox": "Caja de herramientas magenta", "block.create.magenta_valve_handle": "Asa de válvula magenta", "block.create.mechanical_arm": "Brazo mecánico", "block.create.mechanical_bearing": "Rodamiento mecánico", @@ -271,6 +281,7 @@ "block.create.oak_window_pane": "Panel de ventana de roble", "block.create.orange_sail": "Vela naranja", "block.create.orange_seat": "Asiento naranja", + "block.create.orange_toolbox": "Caja de herramientas naranja", "block.create.orange_valve_handle": "Asa de válvula naranja", "block.create.ornate_iron_window": "Ventana de hierro ornamentada", "block.create.ornate_iron_window_pane": "Panel de ventana de hierro ornamentada", @@ -323,6 +334,7 @@ "block.create.pink_nixie_tube": "Tubo Nixie rosa", "block.create.pink_sail": "Vela rosa", "block.create.pink_seat": "Asiento rosa", + "block.create.pink_toolbox": "Caja de herramientas rosa", "block.create.pink_valve_handle": "Asa de válvula rosa", "block.create.piston_extension_pole": "Pértiga de extensión de pistón", "block.create.polished_dark_scoria": "Escoria oscura pulida", @@ -358,11 +370,13 @@ "block.create.purple_nixie_tube": "Tubo Nixie morado", "block.create.purple_sail": "Vela morada", "block.create.purple_seat": "Asiento morado", + "block.create.purple_toolbox": "Caja de herramientas púrpura", "block.create.purple_valve_handle": "Asa de válvula morada", "block.create.radial_chassis": "Chasis radial", "block.create.red_nixie_tube": "Tubo Nixie rojo", "block.create.red_sail": "Vela roja", "block.create.red_seat": "Asiento rojo", + "block.create.red_toolbox": "Caja de herramientas roja", "block.create.red_valve_handle": "Asa de válvula roja", "block.create.redstone_contact": "Contacto de redstone", "block.create.redstone_link": "Enlace de redstone", @@ -420,12 +434,14 @@ "block.create.white_nixie_tube": "Tubo Nixie blanco", "block.create.white_sail": "Vela blanca", "block.create.white_seat": "Asiento blanco", + "block.create.white_toolbox": "Caja de herramientas blanca", "block.create.white_valve_handle": "Asa de válvula blanco", "block.create.windmill_bearing": "Rodamiento del molino de viento", "block.create.wooden_bracket": "Soporte de madera para ejes", "block.create.yellow_nixie_tube": "Tubo Nixie amarillo", "block.create.yellow_sail": "Vela amarilla", "block.create.yellow_seat": "Asiento amarillo", + "block.create.yellow_toolbox": "Caja de herramientas amarilla", "block.create.yellow_valve_handle": "Asa de válvula amarillo", "block.create.zinc_block": "Bloque de zinc", "block.create.zinc_ore": "Mena de zinc", @@ -752,6 +768,7 @@ "create.recipe.assembly.repeat": "Repetir la secuencia %1$s veces", "create.recipe.assembly.junk": "Basura aleatoria", "create.recipe.processing.chance": "%1$s%% Chance", + "create.recipe.deploying.not_consumed": "No consumido", "create.recipe.heat_requirement.none": "No es necesario calentar", "create.recipe.heat_requirement.heated": "Calentado", "create.recipe.heat_requirement.superheated": "Súper-Calentado", @@ -780,6 +797,7 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menú de la Herramienta de Enfoque", + "create.keyinfo.toolbelt": "Acceder a las cajas de herramientas cercanas", "create.keyinfo.scrollup": "Simular usar la rueda del ratón hacia arriba (en el mundo)", "create.keyinfo.scrolldown": "Simular usar la rueda del ratón hacia abajo (en el mundo)", @@ -790,6 +808,13 @@ "create.gui.scrollInput.shiftScrollsFaster": "Mayús izdo para usar la rueda del ratón más rápido", "create.gui.toolmenu.focusKey": "Mantén [%1$s] para enfocar", "create.gui.toolmenu.cycle": "[RUEDA DEL RATÓN] para el ciclo", + + "create.toolbox.unequip": "Desequipar: %1$s", + "create.toolbox.outOfRange": "La caja de herramientas del objeto retenido no está en el rango", + "create.toolbox.detach": "Dejar de rastrear y conservar el objeto", + "create.toolbox.depositAll": "Devolver elementos a las cajas de herramientas cercanas", + "create.toolbox.depositBox": "Devolver elementos a la caja de herramientas", + "create.gui.symmetryWand.mirrorType": "Espejado", "create.gui.symmetryWand.orientation": "Orientación", @@ -1036,18 +1061,14 @@ "create.item_attributes.placeable.inverted": "no se puede colocar", "create.item_attributes.consumable": "se puede comer", "create.item_attributes.consumable.inverted": "no se puede comer", - "create.item_attributes.smeltable": "se puede fundir", - "create.item_attributes.smeltable.inverted": "no se puede fundir", - "create.item_attributes.washable": "se puede lavar", - "create.item_attributes.washable.inverted": "no se puede lavar", - "create.item_attributes.smokable": "puede ser ahumado", - "create.item_attributes.smokable.inverted": "no puede ser ahumado", - "create.item_attributes.crushable": "puede ser molido", - "create.item_attributes.crushable.inverted": "no puede ser molido", - "create.item_attributes.blastable": "es fundible en el alto horno", - "create.item_attributes.blastable.inverted": "no es fundible en el alto horno", + "create.item_attributes.fluid_container": "puede almacenar fluídos", + "create.item_attributes.fluid_container.inverted": "puede almacenar fluídos", "create.item_attributes.enchanted": "está encantado", "create.item_attributes.enchanted.inverted": "no está encantado", + "create.item_attributes.max_enchanted": "está encantado en el nivel máximo", + "create.item_attributes.max_enchanted.inverted": "no está encantado en el nivel máximo", + "create.item_attributes.renamed": "tiene un nombre personalizado", + "create.item_attributes.renamed.inverted": "no tiene un nombre personalizado", "create.item_attributes.damaged": "está dañado", "create.item_attributes.damaged.inverted": "no está dañado", "create.item_attributes.badly_damaged": "está muy dañado", @@ -1058,23 +1079,31 @@ "create.item_attributes.equipable.inverted": "no se puede equipar", "create.item_attributes.furnace_fuel": "es combustible para hornos", "create.item_attributes.furnace_fuel.inverted": "no es combustible para hornos", + "create.item_attributes.washable": "se puede lavar", + "create.item_attributes.washable.inverted": "no se puede lavar", + "create.item_attributes.crushable": "puede ser molido", + "create.item_attributes.crushable.inverted": "no puede ser molido", + "create.item_attributes.smeltable": "se puede fundir", + "create.item_attributes.smeltable.inverted": "no se puede fundir", + "create.item_attributes.smokable": "puede ser ahumado", + "create.item_attributes.smokable.inverted": "no puede ser ahumado", + "create.item_attributes.blastable": "es fundible en el alto horno", + "create.item_attributes.blastable.inverted": "no es fundible en el alto horno", + "create.item_attributes.shulker_level": "es shulker %1$s", + "create.item_attributes.shulker_level.inverted": "no es shulker %1$s", + "create.item_attributes.shulker_level.full": "lleno", + "create.item_attributes.shulker_level.empty": "vacío", + "create.item_attributes.shulker_level.partial": "parcialmente lleno", "create.item_attributes.in_tag": "está etiquetado %1$s", "create.item_attributes.in_tag.inverted": "no está etiquetado %1$s", "create.item_attributes.in_item_group": "está en el grupo '%1$s'", "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", "create.item_attributes.added_by": "fue añadido por %1$s", "create.item_attributes.added_by.inverted": "no fue añadida por %1$s", - "create.item_attributes.shulker_level": "es shulker %1$s", - "create.item_attributes.shulker_level.inverted": "no es shulker %1$s", - "create.item_attributes.shulker_level.full": "lleno", - "create.item_attributes.shulker_level.empty": "vacío", - "create.item_attributes.shulker_level.partial": "parcialmente lleno", "create.item_attributes.has_enchant": "está encantado con %1$s", "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", "create.item_attributes.color": "Está teñido %1$s", "create.item_attributes.color.inverted": "No está teñido %1$s", - "create.item_attributes.max_enchanted": "está encantado en el nivel máximo", - "create.item_attributes.max_enchanted.inverted": "no está encantado en el nivel máximo", "create.item_attributes.has_fluid": "contiene %1$s", "create.item_attributes.has_fluid.inverted": "no contiene %1$s", "create.item_attributes.has_name": "tiene el nombre personalizado %1$s", @@ -1089,14 +1118,14 @@ "create.item_attributes.book_copy_second.inverted": "no es una copia de segunda generación", "create.item_attributes.book_copy_tattered": "es un desordenado desastre", "create.item_attributes.book_copy_tattered.inverted": "no es un desordenado desastre", - "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "no tiene atributo de cristal %1$s", - "create.item_attributes.astralsorcery_constellation": "está en sintonía con %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con %1$s", - "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo ventaja %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo ventaja %1$s", "create.item_attributes.astralsorcery_amulet": "mejora %1$s", "create.item_attributes.astralsorcery_amulet.inverted": "no mejora %1$s", + "create.item_attributes.astralsorcery_constellation": "está en sintonía con %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con %1$s", + "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "no tiene atributo de cristal %1$s", + "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo ventaja %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo ventaja %1$s", "create.gui.attribute_filter.no_selected_attributes": "No hay atributos seleccionados", "create.gui.attribute_filter.selected_attributes": "Atributos seleccionados:", @@ -1393,6 +1422,15 @@ "block.create.turntable.tooltip": "PLATAFORMA GIRATORIA", "block.create.turntable.tooltip.summary": "Convierte la _fuerza rotacional_ en un refinado mareo.", + "block.create.toolbox.tooltip": "CAJA DE HERRAMIENTAS", + "block.create.toolbox.tooltip.summary": "El compañero más querido de todo inventor. Mantiene una gran cantidad de 8 tipos de objetos diferentes.", + "block.create.toolbox.tooltip.condition1": "Cuando se recoge...", + "block.create.toolbox.tooltip.behaviour1": "Conserva el contenido del inventario.", + "block.create.toolbox.tooltip.condition2": "Cuando se coloca en el rango...", + "block.create.toolbox.tooltip.behaviour2": "Los jugadores cercanos pueden utilizar el enlace de teclas de la caja de herramientas para acceder a su contenido de forma remota.", + "block.create.toolbox.tooltip.condition3": "Cuando se hace clic derecho...", + "block.create.toolbox.tooltip.behaviour3": "Abre la interfaz del contenedor.", + "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE ACOPIO", "block.create.stockpile_switch.tooltip.summary": "Activa una señal de redstone en función de la cantidad de _objetos almacenados_ en el _contenedor_ adjunto. Viene con un práctico filtro. A diferencia de un _comparador, el _interruptor de acopio_ permite la configuración de _umbrales_, a partir de los cuales se invierten las señales.", "block.create.stockpile_switch.tooltip.condition1": "Cuando se hace clic derecho", @@ -1400,6 +1438,10 @@ "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDO", "block.create.content_observer.tooltip.summary": "_Detecta objetos_ dentro de _contenedores_ y _transportadores_ que coincidan con un _filtro_ configurado. Mientras el _inventario_, la _cinta_ o la _canaleta_ observados _contengan_ un objeto que coincida, este componente emitirá una _señal de redstone_. Cuando un embudo observado _transfiere_ un objeto coincidente, este componente emitirá un _pulso de redstone_.", + "block.create.content_observer.tooltip.condition1": "Al observar un contenedor...", + "block.create.content_observer.tooltip.behaviour1": "Emite un pulso de Redstone mientras el contenedor observado tiene un contenido coincidente.", + "block.create.content_observer.tooltip.condition2": "Al observar un embudo...", + "block.create.content_observer.tooltip.behaviour2": "Emite un pulso de Redstone cuando se transfiere un objeto que coincide.", "block.create.adjustable_crate.tooltip": "CAJA AJUSTABLE", "block.create.adjustable_crate.tooltip.summary": "Este _contenedor de objetos_ permite el control manual de su capacidad. Puede contener hasta _16 pilas_ de cualquier objeto. Soporta _comparadores de redstone_.", From dc0f5e58eb8e2eda931b398e6dc55a48e3f90651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=92=80=E5=A2=83=E7=9F=B3?= Date: Sat, 20 Nov 2021 20:36:05 +0800 Subject: [PATCH 06/26] Updates to zh_cn.json by Demonese (#2313) --- .../resources/assets/create/lang/zh_cn.json | 342 ++++++++++++++++-- 1 file changed, 311 insertions(+), 31 deletions(-) diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json index 4880457e5..834aa7d2f 100644 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ b/src/main/resources/assets/create/lang/zh_cn.json @@ -1,4 +1,8 @@ { + "_": "Missing Localizations: 43", + + "_": "->------------------------] Game Elements [------------------------<-", + "block.create.acacia_window": "金合欢木窗户", "block.create.acacia_window_pane": "金合欢木窗户板", "block.create.adjustable_chain_gearshift": "可调节链式传动箱", @@ -27,11 +31,13 @@ "block.create.black_nixie_tube": "黑色辉光管", "block.create.black_sail": "黑色风帆", "block.create.black_seat": "黑色坐垫", + "block.create.black_toolbox": "黑色工具箱", "block.create.black_valve_handle": "黑色阀门手轮", "block.create.blaze_burner": "烈焰人燃烧室", "block.create.blue_nixie_tube": "蓝色辉光管", "block.create.blue_sail": "蓝色风帆", "block.create.blue_seat": "蓝色坐垫", + "block.create.blue_toolbox": "蓝色工具箱", "block.create.blue_valve_handle": "蓝色阀门手轮", "block.create.brass_belt_funnel": "黄铜传送带漏斗", "block.create.brass_block": "黄铜块", @@ -42,6 +48,7 @@ "block.create.brown_nixie_tube": "棕色辉光管", "block.create.brown_sail": "棕色风帆", "block.create.brown_seat": "棕色坐垫", + "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色阀门手轮", "block.create.cart_assembler": "矿车装配站", "block.create.chiseled_dark_scoria": "錾制深色熔渣", @@ -75,6 +82,7 @@ "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": "深色橡木窗户板", @@ -182,10 +190,12 @@ "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", + "block.create.gray_toolbox": "灰色工具箱", "block.create.gray_valve_handle": "灰色阀门手轮", "block.create.green_nixie_tube": "绿色辉光管", "block.create.green_sail": "绿色风帆", "block.create.green_seat": "绿色坐垫", + "block.create.green_toolbox": "绿色工具箱", "block.create.green_valve_handle": "绿色阀门手轮", "block.create.hand_crank": "手摇曲柄", "block.create.haunted_bell": "森魂钟", @@ -210,14 +220,17 @@ "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", "block.create.light_blue_seat": "淡蓝色坐垫", + "block.create.light_blue_toolbox": "淡蓝色工具箱", "block.create.light_blue_valve_handle": "淡蓝色阀门手轮", "block.create.light_gray_nixie_tube": "淡灰色辉光管", "block.create.light_gray_sail": "淡灰色风帆", "block.create.light_gray_seat": "淡灰色坐垫", + "block.create.light_gray_toolbox": "淡灰色工具箱", "block.create.light_gray_valve_handle": "淡灰色阀门手轮", "block.create.lime_nixie_tube": "黄绿色辉光管", "block.create.lime_sail": "黄绿色风帆", "block.create.lime_seat": "黄绿色坐垫", + "block.create.lime_toolbox": "黄绿色工具箱", "block.create.lime_valve_handle": "黄绿色阀门手轮", "block.create.limesand": "石灰沙", "block.create.limestone": "石灰岩", @@ -235,6 +248,7 @@ "block.create.magenta_nixie_tube": "品红色辉光管", "block.create.magenta_sail": "品红色风帆", "block.create.magenta_seat": "品红色坐垫", + "block.create.magenta_toolbox": "品红色工具箱", "block.create.magenta_valve_handle": "品红色阀门手轮", "block.create.mechanical_arm": "动力臂", "block.create.mechanical_bearing": "动力轴承", @@ -268,6 +282,7 @@ "block.create.oak_window_pane": "橡木窗户板", "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": "华丽铁窗户板", @@ -320,6 +335,7 @@ "block.create.pink_nixie_tube": "粉红色辉光管", "block.create.pink_sail": "粉红色风帆", "block.create.pink_seat": "粉红色坐垫", + "block.create.pink_toolbox": "粉红色工具箱", "block.create.pink_valve_handle": "粉红色阀门手轮", "block.create.piston_extension_pole": "活塞杆", "block.create.polished_dark_scoria": "磨制深色熔渣", @@ -355,11 +371,13 @@ "block.create.purple_nixie_tube": "紫色辉光管", "block.create.purple_sail": "紫色风帆", "block.create.purple_seat": "紫色坐垫", + "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", + "block.create.red_toolbox": "红色工具箱", "block.create.red_valve_handle": "红色阀门手轮", "block.create.redstone_contact": "接触式红石信号发生器", "block.create.redstone_link": "无线红石信号终端", @@ -417,17 +435,21 @@ "block.create.white_nixie_tube": "白色辉光管", "block.create.white_sail": "白色风帆", "block.create.white_seat": "白色坐垫", + "block.create.white_toolbox": "白色工具箱", "block.create.white_valve_handle": "白色阀门手轮", "block.create.windmill_bearing": "风车轴承", "block.create.wooden_bracket": "木质支架", "block.create.yellow_nixie_tube": "黄色辉光管", "block.create.yellow_sail": "黄色风帆", "block.create.yellow_seat": "黄色坐垫", + "block.create.yellow_toolbox": "黄色工具箱", "block.create.yellow_valve_handle": "黄色阀门手轮", "block.create.zinc_block": "锌块", "block.create.zinc_ore": "锌矿石", + "enchantment.create.capacity": "扩容", "enchantment.create.potato_recovery": "土豆回收", + "entity.create.contraption": "装置", "entity.create.crafting_blueprint": "合成蓝图", "entity.create.gantry_contraption": "起重机装置", @@ -435,8 +457,10 @@ "entity.create.seat": "坐垫", "entity.create.stationary_contraption": "固定装置", "entity.create.super_glue": "强力胶", + "fluid.create.potion": "药水", "fluid.create.tea": "茶", + "item.create.andesite_alloy": "安山合金", "item.create.attribute_filter": "属性过滤器", "item.create.bar_of_chocolate": "巧克力棒", @@ -517,6 +541,10 @@ "item.create.wrench": "扳手", "item.create.zinc_ingot": "锌锭", "item.create.zinc_nugget": "锌粒", + + + "_": "->------------------------] Advancements [------------------------<-", + "advancement.create.root": "欢迎来到机械动力", "advancement.create.root.desc": "是时候来制作一些超赞的机械装置了!", "advancement.create.andesite_alloy": "头韵狂魔(Alliterations Aplenty)", @@ -673,8 +701,13 @@ "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手,超人般的触碰距离。", "advancement.create.eob": "Beta 版结束", "advancement.create.eob.desc": "期待未来会有更多的内容。<3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + "itemGroup.create.base": "机械动力", "itemGroup.create.palettes": "机械动力丨建筑方块", + "death.attack.create.crush": "%1$s被压扁了", "death.attack.create.crush.player": "%1$s被%2$s推进了粉碎机", "death.attack.create.fan_fire": "%1$s试图接受热风的洗礼", @@ -689,8 +722,10 @@ "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被布谷鸟钟炸得粉身碎骨", + "create.block.deployer.damage_source_name": "二五仔机械手", "create.block.cart_assembler.invalid": "请将矿车装配器放置在铁轨上", + "create.menu.return": "返回上一级菜单", "create.menu.configure": "配置...", "create.menu.ponder_index": "思索内容清单", @@ -698,6 +733,7 @@ "create.menu.project_page": "在CurseForge上查看", "create.menu.report_bugs": "报告Create的漏洞", "create.menu.support": "支持我们", + "create.recipe.crushing": "粉碎", "create.recipe.milling": "研磨", "create.recipe.fan_washing": "批量洗涤", @@ -733,9 +769,11 @@ "create.recipe.assembly.repeat": "该序列需要重复 %1$s 次", "create.recipe.assembly.junk": "随机废料", "create.recipe.processing.chance": "%1$s%%概率", + "create.recipe.deploying.not_consumed": "未消耗", "create.recipe.heat_requirement.none": "无需加热", "create.recipe.heat_requirement.heated": "加热", "create.recipe.heat_requirement.superheated": "超级加热", + "create.generic.range": "范围", "create.generic.radius": "半径", "create.generic.width": "宽度", @@ -752,14 +790,18 @@ "create.generic.unit.millibuckets": "%1$smB", "create.generic.clockwise": "顺时针方向", "create.generic.counter_clockwise": "逆时针方向", + "create.action.scroll": "滚轮", "create.action.confirm": "确认", "create.action.abort": "退出", "create.action.saveToFile": "保存", "create.action.discard": "放弃", + "create.keyinfo.toolmenu": "工具菜单", + "create.keyinfo.toolbelt": "使用附近的工具箱", "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", + "create.gui.scrollInput.defaultTitle": "选择一个选项:", "create.gui.scrollInput.scrollToModify": "滚动修改", "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", @@ -767,16 +809,26 @@ "create.gui.scrollInput.shiftScrollsFaster": "按住 Shift 滚动更快", "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", "create.gui.toolmenu.cycle": "[SCROLL] 循环", + + "create.toolbox.unequip": "收回: %1$s", + "create.toolbox.outOfRange": "收纳物品的工具箱不在范围内", + "create.toolbox.detach": "停止追踪并保留物品", + "create.toolbox.depositAll": "把物品收回附近所有的工具箱", + "create.toolbox.depositBox": "把物品收回工具箱", + "create.gui.symmetryWand.mirrorType": "镜子类型", "create.gui.symmetryWand.orientation": "方向", + "create.symmetry.mirror.plane": "镜像", "create.symmetry.mirror.doublePlane": "矩形", "create.symmetry.mirror.triplePlane": "八角", + "create.orientation.orthogonal": "垂直", "create.orientation.diagonal": "对角线", "create.orientation.horizontal": "水平", "create.orientation.alongZ": "以z轴对齐", "create.orientation.alongX": "以x轴对齐", + "create.gui.terrainzapper.title": "手持式环境塑形器", "create.gui.terrainzapper.searchDiagonal": "对角线延伸", "create.gui.terrainzapper.searchFuzzy": "忽略质料分界", @@ -804,14 +856,17 @@ "create.gui.terrainzapper.tool.clear": "清除", "create.gui.terrainzapper.tool.overlay": "覆盖", "create.gui.terrainzapper.tool.flatten": "平整", + "create.terrainzapper.shiftRightClickToSet": "按住 Shift 右击以设置塑形类型", "create.terrainzapper.usingBlock": "使用:%1$s", "create.terrainzapper.leftClickToSet": "鼠标左击一个方块以设置填充材料", + "create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器", "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": "停止时只在初始位置才将装置方块化", @@ -828,12 +883,16 @@ "create.contraptions.clockwork.hour_first": "时针优先", "create.contraptions.clockwork.minute_first": "分针优先", "create.contraptions.clockwork.hour_first_24": "24 小时制优先", + "create.logistics.filter": "过滤器", "create.logistics.recipe_filter": "配方过滤器", "create.logistics.fluid_filter": "流体过滤器", + "create.logistics.firstFrequency": "频率 #1", + "create.logistics.secondFrequency": "频率 #2", "create.logistics.filter.apply": "已将过滤应用于%1$s。", "create.logistics.filter.apply_click_again": "已将过滤应用于%1$s,再次点击可将手持物品数量复制到过滤器上。", "create.logistics.filter.apply_count": "已将提取数量应用至过滤器。", + "create.gui.goggles.generator_stats": "应力发生器状态:", "create.gui.goggles.kinetic_stats": "动力学状态:", "create.gui.goggles.at_current_speed": "当前速度应力值", @@ -881,6 +940,7 @@ "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速,正向", "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", "create.gui.sequenced_gearshift.speed.back_fast": "两倍速,反向", + "create.schematicAndQuill.dimensions": "蓝图尺寸:%1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "第一个位置。", "create.schematicAndQuill.secondPos": "第二个位置。", @@ -890,6 +950,7 @@ "create.schematicAndQuill.convert": "立即保存并部署", "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为%1$s", + "create.schematic.invalid": "[!] 无效的项目", "create.schematic.position": "位置", "create.schematic.rotation": "旋转", @@ -931,9 +992,11 @@ "create.schematic.tool.flip.description.1": "指向蓝图,然后按住 Ctrl 鼠标滚动将其翻转。", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", + "create.schematics.synchronizing": "正在同步..", "create.schematics.uploadTooLarge": "你的蓝图太大", "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", + "create.gui.schematicTable.refresh": "刷新文件", "create.gui.schematicTable.open_folder": "打开文件夹", "create.gui.schematicTable.title": "蓝图桌", @@ -964,6 +1027,7 @@ "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": "运行中", @@ -981,8 +1045,10 @@ "create.schematicannon.status.schematicInvalid": "蓝图无效", "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", "create.schematicannon.status.schematicExpired": "蓝图文件已过期", + "create.materialChecklist": "材料清单", "create.materialChecklist.blocksNotLoaded": "*免责声明* ", + "create.gui.filter.deny_list": "黑名单", "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", "create.gui.filter.allow_list": "白名单", @@ -991,22 +1057,19 @@ "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", "create.gui.filter.ignore_data": "忽视物品属性", "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", + "create.item_attributes.placeable": "可放置", "create.item_attributes.placeable.inverted": "不可放置", "create.item_attributes.consumable": "可食用", "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔炉烧制", - "create.item_attributes.smeltable.inverted": "不可被熔炉烧制", - "create.item_attributes.washable": "可被洗涤", - "create.item_attributes.washable.inverted": "不可被洗涤", - "create.item_attributes.smokable": "可被烟熏", - "create.item_attributes.smokable.inverted": "不可被烟熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高炉冶炼", - "create.item_attributes.blastable.inverted": "不可被高炉冶炼", + "create.item_attributes.fluid_container": "可储存流体", + "create.item_attributes.fluid_container.inverted": "不可储存流体", "create.item_attributes.enchanted": "已被附魔", "create.item_attributes.enchanted.inverted": "未被附魔", + "create.item_attributes.max_enchanted": "已达到最高附魔等级", + "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", + "create.item_attributes.renamed": "有自定义名称", + "create.item_attributes.renamed.inverted": "无自定义名称", "create.item_attributes.damaged": "已损坏", "create.item_attributes.damaged.inverted": "未损坏", "create.item_attributes.badly_damaged": "严重受损", @@ -1017,23 +1080,31 @@ "create.item_attributes.equipable.inverted": "不可装备", "create.item_attributes.furnace_fuel": "可作为燃料", "create.item_attributes.furnace_fuel.inverted": "不可作为燃料", + "create.item_attributes.washable": "可被洗涤", + "create.item_attributes.washable.inverted": "不可被洗涤", + "create.item_attributes.crushable": "可被粉碎", + "create.item_attributes.crushable.inverted": "不可被粉碎", + "create.item_attributes.smeltable": "可被熔炉烧制", + "create.item_attributes.smeltable.inverted": "不可被熔炉烧制", + "create.item_attributes.smokable": "可被烟熏", + "create.item_attributes.smokable.inverted": "不可被烟熏", + "create.item_attributes.blastable": "可被高炉冶炼", + "create.item_attributes.blastable.inverted": "不可被高炉冶炼", + "create.item_attributes.shulker_level": "潜影盒是%1$s的", + "create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的", + "create.item_attributes.shulker_level.full": "满", + "create.item_attributes.shulker_level.empty": "空", + "create.item_attributes.shulker_level.partial": "部分填充", "create.item_attributes.in_tag": "标签是%1$s", "create.item_attributes.in_tag.inverted": "标签不是%1$s", "create.item_attributes.in_item_group": "属于%1$s", "create.item_attributes.in_item_group.inverted": "不属于%1$s", "create.item_attributes.added_by": "由%1$s添加", "create.item_attributes.added_by.inverted": "不由%1$s添加", - "create.item_attributes.shulker_level": "潜影盒是%1$s的", - "create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的", - "create.item_attributes.shulker_level.full": "满", - "create.item_attributes.shulker_level.empty": "空", - "create.item_attributes.shulker_level.partial": "部分填充", "create.item_attributes.has_enchant": "有附魔效果%1$s", "create.item_attributes.has_enchant.inverted": "没有附魔效果%1$s", "create.item_attributes.color": "染色为%1$s", "create.item_attributes.color.inverted": "未被染成%1$s", - "create.item_attributes.max_enchanted": "已达到最高附魔等级", - "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", "create.item_attributes.has_fluid": "含有%1$s", "create.item_attributes.has_fluid.inverted": "不含有%1$s", "create.item_attributes.has_name": "有自定义名称%1$s", @@ -1048,14 +1119,15 @@ "create.item_attributes.book_copy_second.inverted": "不是第二代拷贝", "create.item_attributes.book_copy_tattered": "拷贝次数已不可查", "create.item_attributes.book_copy_tattered.inverted": "不是拷贝次数已不可查", - "create.item_attributes.astralsorcery_crystal": "有水晶石属性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "没有水晶石属性%1$s", - "create.item_attributes.astralsorcery_constellation": "与%1$s共鸣", - "create.item_attributes.astralsorcery_constellation.inverted": "不与%1$s共鸣", - "create.item_attributes.astralsorcery_perk_gem": "带有有星能力属性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不带有星能力属性%1$s", "create.item_attributes.astralsorcery_amulet": "璀璨棱镜增强%1$s", "create.item_attributes.astralsorcery_amulet.inverted": "璀璨棱镜未增强%1$s", + "create.item_attributes.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": "已选择的属性:", "create.gui.attribute_filter.add_attribute": "向列表中添加属性", @@ -1067,6 +1139,7 @@ "create.gui.attribute_filter.deny_list": "黑名单", "create.gui.attribute_filter.deny_list.description": "只要没有上述属性,就可以通过", "create.gui.attribute_filter.add_reference_item": "添加参考物品", + "create.tooltip.holdForDescription": "按住 [%1$s] 可查看概要", "create.tooltip.holdForControls": "按住 [%1$s] 可查看控制方法", "create.tooltip.keyShift": "Shift", @@ -1086,19 +1159,24 @@ "create.tooltip.capacityProvided.high": "大", "create.tooltip.generationSpeed": "产生于%1$s %2$s", "create.tooltip.analogStrength": "模拟信号强度:%1$s/15", + "create.mechanical_arm.extract_from": "从%1$s中拿取物品", "create.mechanical_arm.deposit_to": "将物品存储至%1$s", "create.mechanical_arm.summary": "动力臂当前有 %1$s 个输入,%2$s 个输出。", "create.mechanical_arm.points_outside_range": "由于距离限制,选定的交互点%1$s已被移除。", + "create.weighted_ejector.target_set": "目标已选取", "create.weighted_ejector.target_not_valid": "弹射至临近方块(目标无效)", "create.weighted_ejector.no_target": "弹射至临近方块(未选择目标)", "create.weighted_ejector.targeting": "弹射至 [%1$s,%2$s,%3$s]", "create.weighted_ejector.stack_size": "弹射物品堆数量", + "create.logistics.when_multiple_outputs_available": "当多个输出可用时", + "create.mechanical_arm.selection_mode.round_robin": "轮询调度", "create.mechanical_arm.selection_mode.forced_round_robin": "强制轮询调度", "create.mechanical_arm.selection_mode.prefer_first": "第一目标优先", + "create.tunnel.selection_mode.split": "分流", "create.tunnel.selection_mode.forced_split": "强制分流", "create.tunnel.selection_mode.round_robin": "轮询调度", @@ -1106,6 +1184,7 @@ "create.tunnel.selection_mode.prefer_nearest": "最近优先", "create.tunnel.selection_mode.randomize": "随机", "create.tunnel.selection_mode.synchronize": "同步输入", + "create.tooltip.chute.header": "溜槽信息", "create.tooltip.chute.items_move_down": "物品下行", "create.tooltip.chute.items_move_up": "物品上行", @@ -1118,9 +1197,13 @@ "create.tooltip.brass_tunnel.contains": "目前分配:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "鼠标右击取出", + "create.linked_controller.bind_mode": "绑定模式激活", "create.linked_controller.press_keybind": "按下%1$s、%2$s、%3$s、%4$s、%5$s或%6$s,可以将该频率绑定到按下的按键上。", "create.linked_controller.key_bound": "该频率已绑定到%1$s", + "create.linked_controller.frequency_slot_1": "按键绑定:%1$s, 频率 #1", + "create.linked_controller.frequency_slot_2": "按键绑定:%1$s, 频率 #2", + "create.crafting_blueprint.crafting_slot": "原料槽", "create.crafting_blueprint.filter_items_viable": "可以使用过滤器", "create.crafting_blueprint.display_slot": "展示槽", @@ -1128,9 +1211,11 @@ "create.crafting_blueprint.manually_assigned": "手动设定", "create.crafting_blueprint.secondary_display_slot": "次要展示槽", "create.crafting_blueprint.optional": "可选", + "create.potato_cannon.ammo.attack_damage": "%1$s 攻击伤害", "create.potato_cannon.ammo.reload_ticks": "%1$s 装弹时间(Ticks)", "create.potato_cannon.ammo.knockback": "%1$s 击退", + "create.hint.hose_pulley.title": "无限供应", "create.hint.hose_pulley": "目标液体对象被视为无限量的。", "create.hint.mechanical_arm_no_targets.title": "没有目标", @@ -1139,6 +1224,7 @@ "create.hint.empty_bearing": "_空手右击_轴承,可以将你新建造的结构_接到_轴承上。", "create.hint.full_deployer.title": "机械手物品溢出", "create.hint.full_deployer": "_机械手_包含_过剩的物品,_需要被_提取。你需要_使用_料斗,__漏斗_或其他方法将溢出释放出来。", + "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "这是一个实例层", "create.gui.config.overlay3": "点击拖拽你的鼠标", @@ -1147,6 +1233,7 @@ "create.gui.config.overlay6": "并保存新的位置", "create.gui.config.overlay7": "输入/create overlay reset", "create.gui.config.overlay8": "重置到默认位置", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器现在的 TPS 速度被降低为 %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在的 TPS 速度被降低为 >:)", @@ -1154,8 +1241,13 @@ "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的 TPS 速度变回正常", "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器 TPS 速度", "create.command.killTPSCommand.argument.tickTime": "tickTime", + "create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态", "create.contraption.minecart_contraption_illegal_pickup": "一股神秘的力量将这一装置与世界牢牢绑定在了一起。", + + + "_": "->------------------------] Subtitles [------------------------<-", + "create.subtitle.contraption_disassemble": "结构:停止移动", "create.subtitle.peculiar_bell_use": "奇异钟:鸣响", "create.subtitle.mixing": "搅拌器:搅拌声", @@ -1191,6 +1283,10 @@ "create.subtitle.crafter_click": "动力合成器:咔哒声", "create.subtitle.depot_plop": "物品:着地", "create.subtitle.confirm": "提示声:接受", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", "item.create.example_item.tooltip.condition1": "When this", @@ -1199,16 +1295,21 @@ "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "When Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", + "block.create.wooden_bracket.tooltip": "木质支架", "block.create.wooden_bracket.tooltip.summary": "用这种给人温馨感的木质支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", + "block.create.metal_bracket.tooltip": "金属支架", "block.create.metal_bracket.tooltip.summary": "用这种工业风格的金属支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", + "block.create.seat.tooltip": "坐垫", "block.create.seat.tooltip.summary": "坐下来享受旅程吧!坐垫将会把玩家固定在一个移动装置上。也可以用来作为居家装饰,毕竟他有许多颜色。", "block.create.seat.tooltip.condition1": "右击坐垫", "block.create.seat.tooltip.behaviour1": "会使得玩家坐在_坐垫_上,按下左 Shift 可离开_坐垫_。", + "item.create.blaze_cake.tooltip": "烈焰蛋糕", "item.create.blaze_cake.tooltip.summary": "为辛勤劳作的_烈焰人_精心准备的美味。让他们兴奋起来吧!", + "item.create.wand_of_symmetry.tooltip": "对称之杖", "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块到另一边", "item.create.wand_of_symmetry.tooltip.condition1": "当在快捷栏时", @@ -1219,6 +1320,7 @@ "item.create.wand_of_symmetry.tooltip.action2": "_删除_镜面。", "item.create.wand_of_symmetry.tooltip.control3": "当潜行右击时", "item.create.wand_of_symmetry.tooltip.action3": "打开_配置界面_。", + "item.create.handheld_worldshaper.tooltip": "手持式环境塑形器", "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", "item.create.handheld_worldshaper.tooltip.control1": "当左击方块时", @@ -1227,42 +1329,50 @@ "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块。", "item.create.handheld_worldshaper.tooltip.control3": "当潜行右击时", "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_配置界面_。", + "item.create.tree_fertilizer.tooltip": "树木肥料", "item.create.tree_fertilizer.tooltip.summary": "由多种矿物质复合而成的强大生长剂,能够加速普通树种的生长速度。", "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", "item.create.tree_fertilizer.tooltip.behaviour1": "使得该树_无视_它的_生长空间条件_,立刻长大。", + "item.create.extendo_grip.tooltip": "伸缩机械手", "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。", "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", "item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。", "item.create.extendo_grip.tooltip.condition2": "当装备铜制背罐时", "item.create.extendo_grip.tooltip.behaviour2": "使用罐中_气压_来_抵消_伸缩机械手的_耐久_损耗。", + "item.create.potato_cannon.tooltip": "土豆加农炮", "item.create.potato_cannon.tooltip.summary": "噗!把你亲手栽培的蔬菜砸向你的敌人。可以使用_铜制背罐_供能。", "item.create.potato_cannon.tooltip.condition1": "当右击时", "item.create.potato_cannon.tooltip.behaviour1": "_发射_你_物品栏_中任一可作为弹药的物品。", "item.create.potato_cannon.tooltip.condition2": "当装备铜制背罐时", "item.create.potato_cannon.tooltip.behaviour2": "使用罐中_气压_来_抵消_土豆加农炮的_耐久_损耗。", + "item.create.filter.tooltip": "过滤器", "item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。", "item.create.filter.tooltip.condition1": "放置于过滤插槽中时", "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", "item.create.filter.tooltip.condition2": "当右击时", "item.create.filter.tooltip.behaviour2": "打开_配置面板_。", + "item.create.attribute_filter.tooltip": "属性过滤器", "item.create.attribute_filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品_属性_以及_分类_相匹配。", "item.create.attribute_filter.tooltip.condition1": "放置于过滤插槽中时", "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", "item.create.attribute_filter.tooltip.condition2": "当右击时", "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_。", + "item.create.empty_schematic.tooltip": "空白蓝图", "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", + "item.create.schematic.tooltip": "蓝图", "item.create.schematic.tooltip.summary": "可将结构部署并放置到世界中,将蓝图全息影像部署完毕后,使用_蓝图加农炮_进行结构建造。", "item.create.schematic.tooltip.condition1": "当手持蓝图时", "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具调整位置", "item.create.schematic.tooltip.control1": "当潜行右击时", "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面。", + "item.create.schematic_and_quill.tooltip": "蓝图与笔", "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到 .nbt 文件。", "item.create.schematic_and_quill.tooltip.condition1": "第一步", @@ -1275,14 +1385,17 @@ "item.create.schematic_and_quill.tooltip.action2": "可在_空中_选择点,_滑动滚轮_可调整距离。", "item.create.schematic_and_quill.tooltip.control3": "当潜行右击时", "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区。", + "block.create.schematicannon.tooltip": "蓝图加农炮", "block.create.schematicannon.tooltip.summary": "发射方块,重新构建已在世界中部署的_蓝图_,会使用相邻箱子中的物品进行填充,_火药_作为燃料。", - "block.create.schematicannon.tooltip.condition1": "When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_", + "block.create.schematicannon.tooltip.condition1": "当右击时", + "block.create.schematicannon.tooltip.behaviour1": "打开_界面_", + "block.create.schematic_table.tooltip": "蓝图桌", "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", "block.create.schematic_table.tooltip.behaviour1": "可从 Schematics 文件夹中上传所选文件。", + "item.create.goggles.tooltip": "工程师护目镜", "item.create.goggles.tooltip.summary": "一副可以扩增显示_动力学信息_的实用眼镜。", "item.create.goggles.tooltip.condition1": "当装备时", @@ -1291,56 +1404,84 @@ "item.create.goggles.tooltip.behaviour2": "将会显示与仪表相连的网络的_转速_、_应力_等详细信息。", "item.create.goggles.tooltip.condition3": "当看向流体容器时", "item.create.goggles.tooltip.behaviour3": "显示出方块的_容量_细节,以及其中包含的所有_流体_。", + "item.create.wrench.tooltip": "扳手", "item.create.wrench.tooltip.summary": "操控动力组件的使用工具。可用于_旋转_,_拆除_以及_配置_组件。", "item.create.wrench.tooltip.control1": "当右击_动力方块_时", "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", "item.create.wrench.tooltip.control2": "当潜行右击时", "item.create.wrench.tooltip.action2": "会_拆除动力组件_并将其移动到你的背包中。", + "block.create.nozzle.tooltip": "分散网", "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的效果分散到_各个方向_。", + "block.create.cuckoo_clock.tooltip": "布谷鸟闹钟", "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", "block.create.cuckoo_clock.tooltip.condition1": "接入动力时", "block.create.cuckoo_clock.tooltip.behaviour1": "显示_当前时间_并且一天会咕咕两次。_中午_咕咕一次,_黄昏可以睡觉_的时候咕咕一次 ", + "block.create.turntable.tooltip": "转盘", "block.create.turntable.tooltip.summary": "让旋转力给你带来一场刺激的旋转风车体验。", + + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "每个发明家最亲爱的伙伴!可以方便地大量_收纳__8种_不同的物品类型。", + "block.create.toolbox.tooltip.condition1": "当拾起时", + "block.create.toolbox.tooltip.behaviour1": "_保留_库存_内容_。", + "block.create.toolbox.tooltip.condition2": "当放置在范围内时 ", + "block.create.toolbox.tooltip.behaviour2": "_附近_的_玩家_可以按下_使用附近的工具箱__快捷键_来_远程_访问它的库存。", + "block.create.toolbox.tooltip.condition3": "当右击时", + "block.create.toolbox.tooltip.behaviour3": "打开_工具箱界面_。", + "block.create.stockpile_switch.tooltip": "存量转换器", "block.create.stockpile_switch.tooltip.summary": "根据连接的容器中_储存物品_的数量切换红石信号强度。自带有过滤槽,与_比较器_不同的是,你可以配置_存量转换器_信号反转的_阈值_。", "block.create.stockpile_switch.tooltip.condition1": "当右击时", "block.create.stockpile_switch.tooltip.behaviour1": "打开_配置界面_。", + "block.create.content_observer.tooltip": "物品侦测器", - "block.create.content_observer.tooltip.summary": "检测_容器_和_传送带_中过滤器匹配的物品。当在_物品栏_,_传送带_或者_溜槽所容物_中侦测到匹配的物品时,此组件将发出_红石信号_。当观察到的漏斗_转移匹配的物品_时,此组件将发出_红石脉冲_。", + "block.create.content_observer.tooltip.summary": "_检测_与配置过的_过滤器_匹配的_容器_、_管道_或_传送带_中的_物品_或_流体_。", + "block.create.content_observer.tooltip.condition1": "当检测容器时", + "block.create.content_observer.tooltip.behaviour1": "如果检测的容器内有_匹配_的_物品_,发出_红石信号_。", + "block.create.content_observer.tooltip.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": "当标记了物品时", "block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_,而任何_放置_到容器中的物品都会被_送入虚空_", + "item.create.creative_blaze_cake.tooltip": "创造蛋糕", "item.create.creative_blaze_cake.tooltip.summary": "为_烈焰人燃烧室_特制的小食,可以让你_控制燃烧室的热量等级_。吃下这个蛋糕之后,烈焰人燃烧室将_不再耗尽燃料_。", "item.create.creative_blaze_cake.tooltip.condition1": "对着烈焰人燃烧室使用", "item.create.creative_blaze_cake.tooltip.behaviour1": "_锁定_烈焰人燃烧室的热量等级。如果再次使用,会使得燃烧室的热量等级开始_循环_变化。", + "block.create.controller_rail.tooltip": "控制铁轨", - "block.create.controller_rail.tooltip.summary": "一种_汇流的,受红石信号影响的_铁轨,可以_较好地控制_经过矿车的_移动速度_。", - "block.create.controller_rail.tooltip.condition1": "通入红石信号时时", - "block.create.controller_rail.tooltip.behaviour1": "根据信号强度_加速_或_减速_经过的矿车。还会将红石信号传递到相邻的控制铁轨。向两个控制铁轨通入不同等级的红石信号,两者中间的轨道会受到以此为区间的连续等级的红石信号的激活。", + "block.create.controller_rail.tooltip.summary": "一种_单向动力铁轨_,能够_精细控制_矿车的_移动速度_。", + "block.create.controller_rail.tooltip.condition1": "当接受红石信号时", + "block.create.controller_rail.tooltip.behaviour1": "根据_信号强度__加速_或_减速_通过的_矿车_。还会将红石信号传递到相邻的控制铁轨。为两个控制铁轨提供不同强度的红石信号将导致信号强度在它们之间的控制铁轨上过渡。", + "item.create.sand_paper.tooltip": "砂纸", "item.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸,可以用_机械手_来实现自动化。", "item.create.sand_paper.tooltip.condition1": "使用时", "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品。", + "item.create.builders_tea.tooltip": "建造工茶饮", "item.create.builders_tea.tooltip.summary": "饮下这杯完美茶饮,开启神清气爽的一天。可以恢复_饥饿值_并获得_急迫_效果。", + "item.create.refined_radiance.tooltip": "光辉石", "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料。", "item.create.refined_radiance.tooltip.condition1": "尚未完工", "item.create.refined_radiance.tooltip.behaviour1": "该材料在未来可能会有更多的用途。", + "item.create.shadow_steel.tooltip": "暗影钢", "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料。", "item.create.shadow_steel.tooltip.condition1": "尚未完工", "item.create.shadow_steel.tooltip.behaviour1": "该材料在未来可能会有更多的用途。", + "item.create.linked_controller.tooltip": "无线红石遥控器", "item.create.linked_controller.tooltip.summary": "提供_六个_可以绑定_无线红石_频道的按钮,用于_遥控_附近的_无线红石信号终端_。", "item.create.linked_controller.tooltip.condition1": "右击时", @@ -1351,36 +1492,47 @@ "item.create.linked_controller.tooltip.behaviour3": "启用_绑定模式_,按下_六个按键_中的一个,即可将此按键与_无线红石信号终端的频率_绑定。", "item.create.linked_controller.tooltip.condition4": "右击讲台时", "item.create.linked_controller.tooltip.behaviour4": "将遥控器放在讲台上以便使用(潜行右击来取回遥控器)。", + "item.create.diving_helmet.tooltip": "潜水头盔", "item.create.diving_helmet.tooltip.summary": "与_铜制背罐_配合使用,为穿戴者提供在_水下_行动一段时间所需的_空气_。", "item.create.diving_helmet.tooltip.condition1": "戴在头上时", "item.create.diving_helmet.tooltip.behaviour1": "提供_水下呼吸_效果。缓慢消耗背罐中的_压缩空气_。", + "item.create.copper_backtank.tooltip": "铜制背罐", "item.create.copper_backtank.tooltip.summary": "一个可以_背在背上_的_铜罐_,用于携带一定量的压缩空气。", "item.create.copper_backtank.tooltip.condition1": "背在背上时", "item.create.copper_backtank.tooltip.behaviour1": "为其他需要_压缩空气_的装备提供所需的空气。", "item.create.copper_backtank.tooltip.condition2": "当放下并接入动力时", "item.create.copper_backtank.tooltip.behaviour2": "基于转速从周围环境中_收集_并_加压空气_。", + "item.create.diving_boots.tooltip": "潜水靴", "item.create.diving_boots.tooltip.summary": "一双_沉重的靴子_,让穿戴者可以更方便的探索海底。", "item.create.diving_boots.tooltip.condition1": "穿在脚上时", "item.create.diving_boots.tooltip.behaviour1": "穿戴者_下沉更快_并_无法游泳_。穿戴者可以在水下_行走_和_跳跃_。穿戴者不会被_传送带_移走。", + "item.create.crafting_blueprint.tooltip": "合成蓝图", "item.create.crafting_blueprint.tooltip.summary": "_放在_墙上,便可用它来设置特定的_原料排布_,以便更快地制作物品。每个格子都可以设定一个配方。", "item.create.crafting_blueprint.condition1": "当右击空的格子时", "item.create.crafting_blueprint.behaviour1": "打开一个_配方设置界面_,用于_设置_一个_合成配方_以及展示的物品。", "item.create.crafting_blueprint.condition2": "当右击设置好的格子时", "item.create.crafting_blueprint.behaviour2": "使用_物品栏_中的物品制作_设置的配方_。_潜行_可以一次合成_一组_。", + "item.create.minecart_coupling.tooltip": "矿车连轴器", "item.create.minecart_coupling.tooltip.summary": "将多个_矿车_或_连接运输装置_链接在一起,构成雄伟的火车。", "item.create.minecart_coupling.tooltip.condition1": "作用与矿车时", "item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起,在移动时将它们保持_恒定的距离_。", + "block.create.peculiar_bell.tooltip": "奇异钟", "block.create.peculiar_bell.tooltip.summary": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果......", + "block.create.haunted_bell.tooltip": "森魂钟", "block.create.haunted_bell.tooltip.summary": "_被诅咒_的钟,来自下界的迷失的灵魂缠绕于其上。", "block.create.haunted_bell.tooltip.condition1": "当手持或鸣响时", "block.create.haunted_bell.tooltip.behaviour1": "标识出附近可能生成_敌对生物_的_亮度不足_之处。", + + + "_": "->------------------------] Ponder Content [------------------------<-", + "create.ponder.hold_to_ponder": "按住 [%1$s] 开始思索", "create.ponder.subject": "情景主题", "create.ponder.pondering": "思索...", @@ -1433,25 +1585,30 @@ "create.ponder.tag.creative.description": "总有些东西是生存模式得不到的。", "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_3": "...路过的所有物品堆都会被精准地拣出一个物品", "create.ponder.andesite_tunnel.text_4": "剩下的物品则不受影响,继续前进", + "create.ponder.basin.header": "工作盆内物品处理", "create.ponder.basin.text_1": "一个可以对放入的物品以及流体进行处理的盆", "create.ponder.basin.text_2": "处理完毕后,工作盆会尝试从它的底面进行产物输出", @@ -1462,12 +1619,15 @@ "create.ponder.basin.text_7": "这在产物需要作为新一轮处理的原料时相当有用", "create.ponder.basin.text_8": "需要输出的产物仍需从盆内取出", "create.ponder.basin.text_9": "若是加装过滤,那么你便无需担心会将未被处理的物品抽取出来了", + "create.ponder.bearing_modes.header": "动力轴承的运动模式", "create.ponder.bearing_modes.text_1": "停止时,轴承会控制结构以特定的角度停在最近的与格相对齐之处", "create.ponder.bearing_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的起始位置方块化", + "create.ponder.belt_casing.header": "带机壳的传送带", "create.ponder.belt_casing.text_1": "你可以用黄铜或者安山机壳装饰你的传送带", "create.ponder.belt_casing.text_2": "使用扳手即可移除机壳", + "create.ponder.belt_connector.header": "传送带用法", "create.ponder.belt_connector.text_1": "手持传送带右击两根传动杆,可以将两根杆连接起来。", "create.ponder.belt_connector.text_2": "如果不小心选错了,潜行右击即可取消选择", @@ -1475,6 +1635,7 @@ "create.ponder.belt_connector.text_4": "通过传送带相连的传动杆,会以相同的转速以及方向进行旋转", "create.ponder.belt_connector.text_5": "加装的传动杆可以用扳手拆下来", "create.ponder.belt_connector.text_6": "传送带亦可染色", + "create.ponder.belt_directions.header": "传送带的有效连接方向", "create.ponder.belt_directions.text_1": "传送带的连接方向并不是任意的", "create.ponder.belt_directions.text_2": "1. 可以水平连接", @@ -1482,19 +1643,23 @@ "create.ponder.belt_directions.text_4": "3. 可以垂直连接", "create.ponder.belt_directions.text_5": "4. 还可以水平连接竖直放置的传动杆", "create.ponder.belt_directions.text_6": "以上为所有可能的连接方向。传送带的连接范围为 2 到 20 格", + "create.ponder.belt_transport.header": "在物流中使用传送带", "create.ponder.belt_transport.text_1": "运动的传送带可以运输物品以及其他实体", "create.ponder.belt_transport.text_2": "空手右击传送带,即可将其上的物品拿下来。", + "create.ponder.blaze_burner.header": "烈焰人燃烧室补喂", "create.ponder.blaze_burner.text_1": "烈焰人燃烧室可以为工作盆的物品处理提供热量", "create.ponder.blaze_burner.text_2": "因而,你需要喂给室内的烈焰人一些可燃物品", "create.ponder.blaze_burner.text_3": "如果喂给了它烈焰蛋糕,它还能达到更强的热力等级", "create.ponder.blaze_burner.text_4": "你可以用机械手或者机械臂进行自动化补喂", + "create.ponder.brass_funnel.header": "黄铜漏斗", "create.ponder.brass_funnel.text_1": "安山岩漏斗一次只能提取出一个物品。", "create.ponder.brass_funnel.text_2": "黄铜漏斗可以一次提取一组物品。", "create.ponder.brass_funnel.text_3": "对着过滤槽滑动滚轮,还可以精确调节黄铜漏斗的提取数量。", "create.ponder.brass_funnel.text_4": "对着过滤槽使用某个物品,可以限制漏斗的行为,使其只传输匹配的物品。", + "create.ponder.brass_tunnel.header": "黄铜隧道用法", "create.ponder.brass_tunnel.text_1": "黄铜隧道可以遮掩住你的传送带", "create.ponder.brass_tunnel.text_2": "隧道的每一个开口面都有过滤槽", @@ -1504,6 +1669,7 @@ "create.ponder.brass_tunnel.text_6": "连接了平行传送带的黄铜隧道,会将隧道、传送带组成一个组", "create.ponder.brass_tunnel.text_7": "输入组内的物品会被分配到所有组内连接的对象中", "create.ponder.brass_tunnel.text_8": "在这一情况下,你仍可以将物品直接输入到隧道方块中", + "create.ponder.brass_tunnel_modes.header": "黄铜隧道的分配模式", "create.ponder.brass_tunnel_modes.text_1": "使用扳手即可调节隧道的分配模式", "create.ponder.brass_tunnel_modes.text_10": "“同步输入”是黄铜隧道的一种特殊设定", @@ -1517,27 +1683,33 @@ "create.ponder.brass_tunnel_modes.text_7": "“强制轮询调度”不会跳过输出口", "create.ponder.brass_tunnel_modes.text_8": "“最近优先”会将物品优先送入距离输入口更近的输出口", "create.ponder.brass_tunnel_modes.text_9": "“随机”会随机选择一个输出口,一次性送入所有物品", + "create.ponder.cart_assembler.header": "使用矿车装配站控制结构移动", "create.ponder.cart_assembler.text_1": "矿车装配站会将它所连接的结构安装到矿车上", "create.ponder.cart_assembler.text_2": "若没有通入红石信号,它会将矿车装置解散为方块的形式", "create.ponder.cart_assembler.text_3": "对着矿车使用你的扳手,装置会变为可搬运的形式", + "create.ponder.cart_assembler_dual.header": "组装连接运输装置", "create.ponder.cart_assembler_dual.text_1": "若两个装配矿车分享了同一个结构", "create.ponder.cart_assembler_dual.text_2": "给其中的任意一方的矿车装配站通入红石信号,都会创建出连接运输装置", "create.ponder.cart_assembler_dual.text_3": "两辆矿车的此时行为与用矿车连轴器连接在一起时十分相似", + "create.ponder.cart_assembler_modes.header": "矿车装置的方向设定", "create.ponder.cart_assembler_modes.text_1": "矿车装置会随着矿车的运动而发生转向", "create.ponder.cart_assembler_modes.text_2": "矿车装置上的箭头表明了哪一侧是“前面”", "create.ponder.cart_assembler_modes.text_3": "如果装配站的配置为“旋转锁定”,那么装置的方向将不会改变", + "create.ponder.cart_assembler_rails.header": "另外几种矿车以及铁轨", "create.ponder.cart_assembler_rails.text_1": "放置在普通轨道上的矿车装配站并不会影响路过矿车装置的运动", "create.ponder.cart_assembler_rails.text_2": "如果放置在充能或控制铁轨上且没有通入红石信号,那么路过的矿车将会停在此处", "create.ponder.cart_assembler_rails.text_3": "另外的几种矿车可以当作锚来使用", "create.ponder.cart_assembler_rails.text_4": "熔炉矿车会试图始终保持燃烧状态,并试图从路过的存储空间内抽取燃料", + "create.ponder.chain_drive.header": "使用链式传动箱传动旋转力", "create.ponder.chain_drive.text_1": "同一行上的链式传动箱会相互间传递旋转", "create.ponder.chain_drive.text_2": "所有以此种方式连接的传动杆都会以相同的方向进行旋转", "create.ponder.chain_drive.text_3": "同一行的传动箱内的任意一个传动箱,旋转 90 度之后仍可以正常工作", + "create.ponder.chain_gearshift.header": "利用可调节链式传动箱进行转速调节", "create.ponder.chain_gearshift.text_1": "未充能的可调节链式传动箱与普通链式传动箱无异", "create.ponder.chain_gearshift.text_2": "当被充能时,它将会把旋转力以双倍转速传动至其他链式传动箱", @@ -1545,14 +1717,17 @@ "create.ponder.chain_gearshift.text_4": "在这两种情况中,同一组的其他链式传动箱的转速都为被充能的可调节链式传动箱的两倍", "create.ponder.chain_gearshift.text_5": "转速的倍率可在 x1 和 x2 间根据红石信号的强弱来精确调整", "create.ponder.chain_gearshift.text_6": "12 RPM", + "create.ponder.chute.header": "使用溜槽向下运输物品", "create.ponder.chute.text_1": "溜槽可在两个存储空间之间垂直传送物品", "create.ponder.chute.text_2": "使用扳手右击可以在溜槽上设置观察窗", "create.ponder.chute.text_3": "对着另一个溜槽的侧面放置另一个溜槽,将会放置下一个呈对角状的溜槽", + "create.ponder.chute_upward.header": "使用溜槽向上运输物品", "create.ponder.chute_upward.text_1": "在溜槽上或下方使用鼓风机时,物品会根据风的方向向上或下移动", "create.ponder.chute_upward.text_2": "佩戴工程师护目镜时,你可以看见物品的移动方向", "create.ponder.chute_upward.text_3": "在溜槽“被挡住的”底端,物品只能从侧边进行提取或输入", + "create.ponder.clockwork_bearing.header": "使用发条轴承来使结构运动", "create.ponder.clockwork_bearing.text_1": "发条轴承黏附其正前方的方块", "create.ponder.clockwork_bearing.text_2": "当接受旋转力时,其附着结构会根据游戏内时间来进行旋转", @@ -1562,29 +1737,36 @@ "create.ponder.clockwork_bearing.text_6": "在时针前方可添加第二个结构", "create.ponder.clockwork_bearing.text_7": "请确保这两个结构没有互相被例如强力胶等方式黏附", "create.ponder.clockwork_bearing.text_8": "第二个结构将会作为分针进行旋转", + "create.ponder.clutch.header": "使用离合器控制旋转力", "create.ponder.clutch.text_1": "离合器能将旋转力直线传递", "create.ponder.clutch.text_2": "当被红石充能,离合器会断开动力传递", + "create.ponder.cog_speedup.header": "使用齿轮来换挡变速", "create.ponder.cog_speedup.text_1": "大齿轮与小齿轮可以斜向传递动力", "create.ponder.cog_speedup.text_2": "从大齿轮传递动力至小齿轮时,转速翻倍", "create.ponder.cog_speedup.text_3": "从小齿轮传递动力至大齿轮时,转速减半", + "create.ponder.cogwheel.header": "使用齿轮来传递旋转力", "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", + "create.ponder.creative_fluid_tank.header": "创造流体储罐", "create.ponder.creative_fluid_tank.text_1": "创造流体储罐可以提供无限量的流体", "create.ponder.creative_fluid_tank.text_2": "使用一个含有流体的容器右击它,即可指定它提供特定的流体", "create.ponder.creative_fluid_tank.text_3": "流体管道可以从中无限提取指定的流体", "create.ponder.creative_fluid_tank.text_4": "任何被输入创造流体储罐的液体都将被销毁", + "create.ponder.creative_motor.header": "使用创造马达发生旋转", "create.ponder.creative_motor.text_1": "创造马达不仅能够手动调配输出旋转力,而且体积相当小巧", "create.ponder.creative_motor.text_2": "对其背侧面板滚动滑轮,可以改变马达的输出旋转转速", + "create.ponder.crushing_wheels.header": "使用粉碎轮处理物品", "create.ponder.crushing_wheels.text_1": "一对粉碎轮,磨物快又准", "create.ponder.crushing_wheels.text_2": "接入的旋转必须使得这两个轮子从上到下啮合转动", "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都会被粉碎处理", "create.ponder.crushing_wheels.text_4": "你也可以使用自动化方案进行物品的输入以及拾取", + "create.ponder.deployer.header": "使用机械手", "create.ponder.deployer.text_1": "接入旋转力,机械手便可以模仿玩家的交互行为", "create.ponder.deployer.text_10": "对着机械手的前部右击,即可将手上的物品给予它使用", @@ -1601,27 +1783,33 @@ "create.ponder.deployer.text_7": "激活方块", "create.ponder.deployer.text_8": "采收方块", "create.ponder.deployer.text_9": "以及攻击生物", + "create.ponder.deployer_contraption.header": "在装置上使用机械手", "create.ponder.deployer_contraption.text_1": "当机械手在移动的装置上时...", "create.ponder.deployer_contraption.text_2": "机械手会对每一个经过的方块使用装置中任意容器内的物品", "create.ponder.deployer_contraption.text_3": "可以通过过滤槽来指定其从存储空间中抽取的物品", + "create.ponder.deployer_modes.header": "机械手的模式", "create.ponder.deployer_modes.text_1": "在默认情况下,机械手模仿玩家的右击交互", "create.ponder.deployer_modes.text_2": "使用扳手可以将模式调整为模仿玩家的左击交互", + "create.ponder.deployer_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.text_3": "因此,通入单次负红石脉冲可以精确控制机械手,使其每次只进行单个周期的工作", + "create.ponder.depot.header": "使用置物台", "create.ponder.depot.text_1": "置物台可以被当成一个“静止的”传送带原件使用", "create.ponder.depot.text_2": "右击可以手动放置或取下物品", "create.ponder.depot.text_3": "与传送带一样,它也可以将其内的物品转送到其他设备中进行加工...", "create.ponder.depot.text_4": "...同时物品也可以被机械手存取", + "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃烧室", "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃烧室右击烈焰人来抓取烈焰人", "create.ponder.empty_blaze_burner.text_2": "或者,也可以通过右击烈焰人刷怪笼来填充激活烈焰人燃烧室", @@ -1629,13 +1817,16 @@ "create.ponder.empty_blaze_burner.text_4": "如果是为了美观,空的烈焰人燃烧室也可以被打火石点燃", "create.ponder.empty_blaze_burner.text_5": "你可以使用注入了灵魂的物品转化这种火焰", "create.ponder.empty_blaze_burner.text_6": "但是,没有烈焰人,这样的火焰并不足以用于工业级加热工作", + "create.ponder.encased_fluid_pipe.header": "流体管道箱", "create.ponder.encased_fluid_pipe.text_1": "铜机壳可以用于装饰流体管道", "create.ponder.encased_fluid_pipe.text_2": "除了遮掩流体管道之外,装箱的流体管道将不会改变其连接状态", "create.ponder.encased_fluid_pipe.text_3": "它将不会对旁边新增加或移除的管道做出反应", + "create.ponder.fan_direction.header": "鼓风机的气流", "create.ponder.fan_direction.text_1": "鼓风机使用旋转力来制造气流", "create.ponder.fan_direction.text_2": "流速以及方向由所接收旋转力的强弱以及方向而定", + "create.ponder.fan_processing.header": "使用鼓风机加工物品", "create.ponder.fan_processing.text_1": "当气流吹过熔岩时,气流会被加热", "create.ponder.fan_processing.text_2": "热气流中的物品会被冶炼", @@ -1645,9 +1836,11 @@ "create.ponder.fan_processing.text_6": "这种加工方法可以做到不少有趣的事情", "create.ponder.fan_processing.text_7": "鼓风机的转速对加工的速度没有影响,只影响气流的吹拂距离", "create.ponder.fan_processing.text_8": "而那些放置在置物台或者传送带上的物品,鼓风机也是可以处理的", + "create.ponder.fan_source.header": "使用鼓风机来产生旋转力", "create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力", "create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力", + "create.ponder.fluid_pipe_flow.header": "使用管道运输流体", "create.ponder.fluid_pipe_flow.text_1": "流体管道可以用于连接两个或多个流体容器", "create.ponder.fluid_pipe_flow.text_2": "使用扳手,可以为直管道安装观察窗", @@ -1656,81 +1849,100 @@ "create.ponder.fluid_pipe_flow.text_5": "一开始,流体不会真正地被抽出", "create.ponder.fluid_pipe_flow.text_6": "只有当管道内的液体流彻底连通之后,流体才会开始逐渐从一个容器中转移到另一个", "create.ponder.fluid_pipe_flow.text_7": "这意味着流体管道本身并不真正存储任何流体", + "create.ponder.fluid_pipe_interaction.header": "抽取和填充流体容器", "create.ponder.fluid_pipe_interaction.text_1": "流体管道的末端可以与许多种容器连接", "create.ponder.fluid_pipe_interaction.text_2": "任何可以容纳流体的容器都可以被填充或从中抽取", "create.ponder.fluid_pipe_interaction.text_3": "开放的管道口可以吸走流体源方块...", "create.ponder.fluid_pipe_interaction.text_4": "...或者将流体源排放出来", "create.ponder.fluid_pipe_interaction.text_5": "管道也可以从许多种其他方块中直接抽取流体", + "create.ponder.fluid_tank_sizes.header": "流体储罐的大小", "create.ponder.fluid_tank_sizes.text_1": "流体储罐可以多格连接,提供更大的存储量", "create.ponder.fluid_tank_sizes.text_2": "流体储罐最大横截面为 3x3...", "create.ponder.fluid_tank_sizes.text_3": "...并且可以超过 30 格高", "create.ponder.fluid_tank_sizes.text_4": "使用扳手可以打开或关闭观察窗", + "create.ponder.fluid_tank_storage.header": "使用流体储罐存储流体", "create.ponder.fluid_tank_storage.text_1": "流体储罐可以存储大量的流体", "create.ponder.fluid_tank_storage.text_2": "流体管道可以在流体储罐的任何一面将流体输入/输出", "create.ponder.fluid_tank_storage.text_3": "使用比较器可以检测储罐中的流体储量", "create.ponder.fluid_tank_storage.text_4": "在生存模式中,无法直接用容器向储罐中存入流体,或是取出流体", "create.ponder.fluid_tank_storage.text_5": "要装满/倒空流体容器,可以使用工作盆,分液池或注液器。", + "create.ponder.flywheel.header": "使用飞轮来产生旋转力", "create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力", "create.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值", "create.ponder.flywheel.text_3": "使用高炉会使得引擎的效率翻倍", + "create.ponder.funnel_compat.header": "漏斗的兼容性", "create.ponder.funnel_compat.text_1": "漏斗可以与一些其他组件互动", "create.ponder.funnel_compat.text_2": "动力锯", "create.ponder.funnel_compat.text_3": "置物台", "create.ponder.funnel_compat.text_4": "分液池", + "create.ponder.funnel_direction.header": "物流方向", "create.ponder.funnel_direction.text_1": "直接放置时,漏斗会将物品从容器中取出", "create.ponder.funnel_direction.text_2": "潜行时放置时,漏斗会将物品置入容器中", "create.ponder.funnel_direction.text_3": "使用扳手可以改变漏斗的存/取模式", "create.ponder.funnel_direction.text_4": "对大多数朝向放置的漏斗都具有此特性", "create.ponder.funnel_direction.text_5": "在传送带末端放置的漏斗会根据传送带的传动方向存/取物品", + "create.ponder.funnel_intro.header": "使用漏斗", "create.ponder.funnel_intro.text_1": "用漏斗来存取物品栏内的物品,可谓又快又好", + "create.ponder.funnel_redstone.header": "红石信号控制", "create.ponder.funnel_redstone.text_1": "红石信号会使漏斗停止工作", + "create.ponder.funnel_transfer.header": "直接运输", "create.ponder.funnel_transfer.text_1": "漏斗无法将物品传输到非开放式的物品栏中", "create.ponder.funnel_transfer.text_2": "溜槽和智能溜槽更适用于这样的场景", "create.ponder.funnel_transfer.text_3": "水平传输也是如此,也许传送带更方便快捷", + "create.ponder.furnace_engine.header": "使用熔炉引擎生产旋转力", "create.ponder.furnace_engine.text_1": "熔炉引擎会在与其相连熔炉工作时生产旋转力", "create.ponder.furnace_engine.text_2": "如此产生的旋转力具有非常大的应力值", "create.ponder.furnace_engine.text_3": "使用高炉会使得引擎的效率翻倍", + "create.ponder.gantry_carriage.header": "使用起重机取物器", "create.ponder.gantry_carriage.text_1": "起重机取物器可以被放置在起重机杆上,并且可以沿着起重机杆运动", "create.ponder.gantry_carriage.text_2": "起重机可以移动其黏附的方块", + "create.ponder.gantry_cascaded.header": "串联起重机", "create.ponder.gantry_cascaded.text_1": "无需强力胶,取物器便可与起重机杆相连", "create.ponder.gantry_cascaded.text_2": "即使是在移动的起重机杆上也是如此", "create.ponder.gantry_cascaded.text_3": "因此,起重机系统可以串联起来,如此可以影响到多轴向的运动", + "create.ponder.gantry_direction.header": "起重机移动方向", "create.ponder.gantry_direction.text_1": "起重机杆可以有相反的方向", "create.ponder.gantry_direction.text_2": "取物器的移动方向取决于起重机杆的方向", "create.ponder.gantry_direction.text_3": "......以及起重机杆的旋转方向", "create.ponder.gantry_direction.text_4": "在旋转传递中,此规则同样适用", + "create.ponder.gantry_redstone.header": "起重机的力传递", "create.ponder.gantry_redstone.text_1": "被红石信号激活的起重机,将不会移动其上的取物器", "create.ponder.gantry_redstone.text_2": "作为替代,杆上的旋转力会传递到取物器的输出杆上", + "create.ponder.gantry_shaft.header": "使用起重机杆", "create.ponder.gantry_shaft.text_1": "起重机杆组成了起重机系统的基础。与其相接的载物器可以沿着杆进行移动。", "create.ponder.gantry_shaft.text_2": "起重机系统可以移动与其相接的方块。", + "create.ponder.gearbox.header": "使用十字齿轮箱传递旋转力", "create.ponder.gearbox.text_1": "更改旋转轴,很容易使得整个旋转体系变得臃肿不堪", "create.ponder.gearbox.text_2": "十字齿轮箱则是替代方案,它的体积更为小巧紧", "create.ponder.gearbox.text_3": "侧边连接的传动杆,旋转方向与输入端一致", "create.ponder.gearbox.text_4": "直线连接的传动杆,旋转方向会被反转", + "create.ponder.gearshift.header": "使用反转齿轮箱控制旋转力", "create.ponder.gearshift.text_1": "反转齿轮箱可以直线传输旋转", "create.ponder.gearshift.text_2": "通入红石信号后,输出端的旋转方向会被反转", + "create.ponder.hand_crank.header": "使用手摇曲柄产生旋转力", "create.ponder.hand_crank.text_1": "玩家可以使用手摇曲柄来手动产生旋转力", "create.ponder.hand_crank.text_2": "按住右键可以逆时针旋转它", "create.ponder.hand_crank.text_3": "它产生的转速相对较高", "create.ponder.hand_crank.text_4": "潜行长按右键可以顺时针旋转它", + "create.ponder.hose_pulley.header": "使用软管滑轮抽取或排放流体", "create.ponder.hose_pulley.text_1": "软管滑轮可以用于方便地对一个较大区域进行抽取液体或填满液体的操作", "create.ponder.hose_pulley.text_2": "通过输入动力可以调节软管末端的高度", @@ -1739,25 +1951,30 @@ "create.ponder.hose_pulley.text_5": "连接的管道可以将流体输入到软管滑轮中,软管会在下方排出口处放置流体源...", "create.ponder.hose_pulley.text_6": "...或者提供吸力来抽取世界中的流体", "create.ponder.hose_pulley.text_7": "软管滑轮的抽取/排放速度取决于连接管道中流体的流速", + "create.ponder.hose_pulley_infinite.header": "被动抽取或排放从大体量流体中", "create.ponder.hose_pulley_infinite.text_1": "当软管被放进足够大的流体中时...", "create.ponder.hose_pulley_infinite.text_2": "...它在抽取或排放液体时将不会影响流体源", "create.ponder.hose_pulley_infinite.text_3": "可以从这些软管滑轮中无限量地抽取或向其排放流体", + "create.ponder.hose_pulley_level.header": "软管滑轮的排水/抽水机制", "create.ponder.hose_pulley_level.text_1": "当软管彻底收回时,软管滑轮无法工作。", "create.ponder.hose_pulley_level.text_2": "抽取流体的顺序为从上到下", "create.ponder.hose_pulley_level.text_3": "流体表面最终将会被抽取到刚好低于软管开口", "create.ponder.hose_pulley_level.text_4": "填充流体的顺序为从下到上", "create.ponder.hose_pulley_level.text_5": "流体最多只能被填充至软管开口所在的高度", + "create.ponder.item_drain.header": "使用分液池提取物品中的流体", "create.ponder.item_drain.text_1": "分液池可以提取物品中的流体", "create.ponder.item_drain.text_2": "右击可以将手持物品中的流体倒入分液池中", "create.ponder.item_drain.text_3": "当物品从侧面输入时...", "create.ponder.item_drain.text_4": "...物品将会经过分液池顶部,并在此过程中将其包含的液体排入分液池内", "create.ponder.item_drain.text_5": "流体管道可以从分液池中抽取液体", + "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", + "create.ponder.linear_chassis_attachment.header": "使用机壳底盘黏合方块", "create.ponder.linear_chassis_attachment.text_1": "它的开放面可以变为黏性面", "create.ponder.linear_chassis_attachment.text_2": "再次点击黏性面,可以将它的相反面也变得具有黏性", @@ -1767,10 +1984,12 @@ "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑动滚轮,你可以一次性调节所有底盘的影响范围", "create.ponder.linear_chassis_attachment.text_7": "若想让底盘的其他面也能粘方块,你需要用到强力胶", "create.ponder.linear_chassis_attachment.text_8": "利用这些机制,任何形状的机制都可以像装置那样移动", + "create.ponder.linear_chassis_group.header": "成组移动机壳底盘", "create.ponder.linear_chassis_group.text_1": "相邻的机壳底盘可以相互连接在一起", "create.ponder.linear_chassis_group.text_2": "其中的一个底盘若被移动,其余的底盘也会跟着移动", "create.ponder.linear_chassis_group.text_3": "不同种类的底盘,或者是朝向不一致的底盘,将不会相连", + "create.ponder.mechanical_arm.header": "配置动力臂", "create.ponder.mechanical_arm.text_1": "你得在放置动力臂之前就配置好它的输入以及输出端", "create.ponder.mechanical_arm.text_2": "手持动力臂右击某个存储空间,可以将其指定为目标", @@ -1780,6 +1999,7 @@ "create.ponder.mechanical_arm.text_6": "在有效范围内,机械臂可以有任意数量的输出以及输入端", "create.ponder.mechanical_arm.text_7": "然而,并不是所有的存储空间可以被直接交互", "create.ponder.mechanical_arm.text_8": "在此情况下,漏斗和置物台可以解决此问题", + "create.ponder.mechanical_arm_filtering.header": "过滤动力臂的输出端", "create.ponder.mechanical_arm_filtering.text_1": "输入", "create.ponder.mechanical_arm_filtering.text_2": "输出", @@ -1787,6 +2007,7 @@ "create.ponder.mechanical_arm_filtering.text_4": "动力臂自身并不提供任何过滤选项", "create.ponder.mechanical_arm_filtering.text_5": "然而,若将黄铜漏斗作为目标,则漏斗的过滤槽则可以应用至动力臂上", "create.ponder.mechanical_arm_filtering.text_6": "动力臂足够智能,它不会去拿取那些它无法分配的物品", + "create.ponder.mechanical_arm_modes.header": "动力臂的分配模式", "create.ponder.mechanical_arm_modes.text_1": "输入", "create.ponder.mechanical_arm_modes.text_2": "输出", @@ -1797,13 +2018,16 @@ "create.ponder.mechanical_arm_modes.text_7": "如果某个输出端无法容纳更多物品,则它会被跳过", "create.ponder.mechanical_arm_modes.text_8": "强制轮询调度不会跳过任何输出端,动力臂会一直等待,直到输出端有空位容纳物品输入", "create.ponder.mechanical_arm_modes.text_9": "最近优先模式会使得动力臂先将物品输出至更早被选择的输出端", + "create.ponder.mechanical_arm_redstone.header": "利用红石信号控制动力臂", "create.ponder.mechanical_arm_redstone.text_1": "通入红石信号后,动力臂会停止工作", "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它会完成当前正在进行的工作周期", "create.ponder.mechanical_arm_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制动力臂,使其每次只进行单个周期的工作", + "create.ponder.mechanical_bearing.header": "使用动力轴承移动结构", "create.ponder.mechanical_bearing.text_1": "动力轴承会与其前方的方块黏合在一起", "create.ponder.mechanical_bearing.text_2": "接收到旋转力后,它会将这一黏合结构组装为旋转装置", + "create.ponder.mechanical_crafter.header": "设置动力合成器", "create.ponder.mechanical_crafter.text_1": "动力合成器阵列可用于自动化任何合成配方的制作", "create.ponder.mechanical_crafter.text_2": "使用扳手可以调控合成器的合成通路", @@ -1813,50 +2037,62 @@ "create.ponder.mechanical_crafter.text_6": "右击合成器正面,可以手动放入物品", "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就会开始", "create.ponder.mechanical_crafter.text_8": "而对于那些没有完全占满所有合成器槽位的配方,你可以通入红石信号强制开启合成", + "create.ponder.mechanical_crafter_connect.header": "为合成器连接物品栏", "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自动接受向其输入的物品", "create.ponder.mechanical_crafter_connect.text_2": "对其背面使用扳手,可以连接合成器", "create.ponder.mechanical_crafter_connect.text_3": "所有相连的合成器可以访问同一个位置的输入", + "create.ponder.mechanical_crafter_covers.header": "盖住动力合成器的合成槽", "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要额外的合成器,来补足合成通路上的间隙", "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽盖板,合成器会在合成进行时的行为就如同一个空的合成槽位", "create.ponder.mechanical_crafter_covers.text_3": "被盖住的合成器并不会阻断共享输入端的影响", + "create.ponder.mechanical_drill.header": "使用动力钻头破坏方块", "create.ponder.mechanical_drill.text_1": "当向其通入旋转力后,动力钻头会破坏它面前的方块", "create.ponder.mechanical_drill.text_2": "它的挖掘速度取决于通入的旋转力转速", + "create.ponder.mechanical_drill_contraption.header": "在装置中使用动力钻头", "create.ponder.mechanical_drill_contraption.text_1": "在运动装置中使用动力钻头时...", "create.ponder.mechanical_drill_contraption.text_2": "...它会破坏掉它撞上的方块", + "create.ponder.mechanical_harvester.header": "在装置中使用动力收割机", "create.ponder.mechanical_harvester.text_1": "在运动装置中使用动力收割机时...", "create.ponder.mechanical_harvester.text_2": "它会采收其路径上的作物,并重置这些作物的生长进度", + "create.ponder.mechanical_mixer.header": "使用动力搅拌器处理物品", "create.ponder.mechanical_mixer.text_1": "使用搅拌器和工作盆,你可以自动化某些合成配方", "create.ponder.mechanical_mixer.text_2": "有效配方包括各种无序合成配方,以及一些额外的配方", "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃烧室提供热量", "create.ponder.mechanical_mixer.text_4": "过滤槽可用于解决两个配方相互冲突的情况", + "create.ponder.mechanical_piston.header": "使用动力活塞移动结构", "create.ponder.mechanical_piston.text_1": "动力活塞可以移动它前方的方块", "create.ponder.mechanical_piston.text_2": "移动速度和方向取决于通入活塞的旋转力", "create.ponder.mechanical_piston.text_3": "黏性动力活塞可以将相接的方块拉回来", + "create.ponder.mechanical_piston_modes.header": "动力活塞的移动模式", "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移动的结构就会回退到方块状态", "create.ponder.mechanical_piston_modes.text_2": "你也可以将其配置为从不方块化,或者只在起始位置方块化", + "create.ponder.mechanical_plough.header": "在装置中使用动力犁", "create.ponder.mechanical_plough.text_1": "在运动装置中使用动力犁时...", "create.ponder.mechanical_plough.text_2": "...它会破坏掉那些不具有固体碰撞箱的方块", "create.ponder.mechanical_plough.text_3": "此外,动力犁可以耕地", "create.ponder.mechanical_plough.text_4": "...它也可以在不伤害实体的情况下推动它们", + "create.ponder.mechanical_press.header": "使用动力辊压机处理物品", "create.ponder.mechanical_press.text_1": "动力辊压机可以处理位于其下方的物品", "create.ponder.mechanical_press.text_2": "在其下方丢入物品,或者将物品放在置物台上,都算作有效的物品输入", "create.ponder.mechanical_press.text_3": "若物品位于传送带上...", "create.ponder.mechanical_press.text_4": "辊压机会使物品停下,然后自动处理这一物品", + "create.ponder.mechanical_press_compacting.header": "使用动力辊压机压缩物品", "create.ponder.mechanical_press_compacting.text_1": "对放置于工作盆内的物品进行辊压,可以将这些物品压缩在一起", "create.ponder.mechanical_press_compacting.text_2": "压缩意指任何同种物品填满了 2x2 或者 3x3 网格的配方,以及一些额外的配方", "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃烧室提供热量", "create.ponder.mechanical_press_compacting.text_4": "过滤槽可用于解决两个配方相互冲突的情况", + "create.ponder.mechanical_pump_flow.header": "使用动力泵传输流体", "create.ponder.mechanical_pump_flow.text_1": "动力泵可以控制管道网络中的流体", "create.ponder.mechanical_pump_flow.text_2": "当接入动力时,其上的箭头指示流体流向", @@ -1864,37 +2100,45 @@ "create.ponder.mechanical_pump_flow.text_4": "...而泵前的网络则把这些液体排到世界当中", "create.ponder.mechanical_pump_flow.text_5": "反转动力方向将会改变流体流向", "create.ponder.mechanical_pump_flow.text_6": "使用扳手可以手动改变动力泵的朝向", + "create.ponder.mechanical_pump_speed.header": "动力泵的传输机制", "create.ponder.mechanical_pump_speed.text_1": "动力泵的压力最多沿管线传递 16 格,与输入动力无关", "create.ponder.mechanical_pump_speed.text_2": "提高输入动力,可以加快流的蔓延速度...", "create.ponder.mechanical_pump_speed.text_3": "...以及流体的传输速度", "create.ponder.mechanical_pump_speed.text_4": "同一管道网络中的多个并联动力泵,它们的传输量可以叠加", "create.ponder.mechanical_pump_speed.text_5": "使泵的传输方向相互交替,可以方便地控制流体流向", + "create.ponder.mechanical_saw_breaker.header": "使用动力锯伐木", "create.ponder.mechanical_saw_breaker.text_1": "向其通入旋转力后,动力锯可以直接砍伐掉它面前的树木", "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵树,锯子必须破坏掉树与地面连接的最后一个方块", + "create.ponder.mechanical_saw_contraption.header": "在装置中使用动力锯", "create.ponder.mechanical_saw_contraption.text_1": "若在运动装置中使用动力锯...", "create.ponder.mechanical_saw_contraption.text_2": "...它会将撞到它的树木破坏掉", + "create.ponder.mechanical_saw_processing.header": "使用动力锯处理物品", "create.ponder.mechanical_saw_processing.text_1": "面向朝上的动力锯可以将物品处理为其变种", "create.ponder.mechanical_saw_processing.text_2": "处理过后的物品的弹出方向始终与通入锯中的旋转转向相反", "create.ponder.mechanical_saw_processing.text_3": "锯子可以与传送带放置在一条直线上,相互配合工作", "create.ponder.mechanical_saw_processing.text_4": "若输入原料有多种可能产物,你可以用动力锯上的过滤槽指定只产出某种产物", "create.ponder.mechanical_saw_processing.text_5": "若没有使用过滤槽,动力锯会在各产物中按顺序循环输出", + "create.ponder.millstone.header": "使用石磨处理物品", "create.ponder.millstone.text_1": "石磨会对输入的物品进行磨制", "create.ponder.millstone.text_2": "在其侧边使用齿轮与其相耦合,方可为其通入动力", "create.ponder.millstone.text_3": "顶部可以丢入或者塞入物品", "create.ponder.millstone.text_4": "一段时间过后,右击石磨可以拿出其中的产物", "create.ponder.millstone.text_5": "产物的提取也是可以自动化的", + "create.ponder.nixie_tube.header": "使用辉光管", "create.ponder.nixie_tube.text_1": "通入红石信号后,辉光管会显示出红石信号的强度", "create.ponder.nixie_tube.text_2": "在着它使用更改过名称的命名牌,可以自定义它的显示文本", "create.ponder.nixie_tube.text_3": "使用染料右击,便可更改辉光管的显示颜色", + "create.ponder.piston_pole.header": "活塞延长杆", "create.ponder.piston_pole.text_1": "若无相接的延长杆,动力活塞无法移动其他方块", "create.ponder.piston_pole.text_2": "在其背面安装的延长杆长度,决定了活塞的推动范围", + "create.ponder.portable_fluid_interface.header": "装置流体交换", "create.ponder.portable_fluid_interface.text_1": "管道无法与运动装置内的流体储罐直接交互", "create.ponder.portable_fluid_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的流体存储进行交互", @@ -1904,6 +2148,7 @@ "create.ponder.portable_fluid_interface.text_6": "流体可被泵入到装置内....", "create.ponder.portable_fluid_interface.text_7": "...或是从装置中抽取出来", "create.ponder.portable_fluid_interface.text_8": "如果一小段时间内没有流体交换,接口将会断开连接,然后装置重新开始运动", + "create.ponder.portable_storage_interface.header": "装置存储交换", "create.ponder.portable_storage_interface.text_1": "玩家无法与运动装置内的存储空间进行交互", "create.ponder.portable_storage_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的存储空间进行交互", @@ -1913,20 +2158,25 @@ "create.ponder.portable_storage_interface.text_6": "物品可被输入到装置内...", "create.ponder.portable_storage_interface.text_7": "...或是从装置中提取出来", "create.ponder.portable_storage_interface.text_8": "如果一小段时间内没有物品交换,接口将会断开连接,然后装置重新开始运动", + "create.ponder.portable_storage_interface_redstone.header": "红石控制", "create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为", + "create.ponder.powered_latch.header": "使用锁存器控制信号", "create.ponder.powered_latch.text_1": "锁存器是一种可以用红石信号控制的拉杆", "create.ponder.powered_latch.text_2": "后方输入的信号会将其设为开启状态", "create.ponder.powered_latch.text_3": "侧边输入的信号会将其设为关闭状态", "create.ponder.powered_latch.text_4": "你也可以手动切换其状态", + "create.ponder.powered_toggle_latch.header": "使用转换锁存器控制信号", "create.ponder.powered_toggle_latch.text_1": "转换锁存器是一种可以用红石信号控制的拉杆", "create.ponder.powered_toggle_latch.text_2": "后方信号输入可以改变它的状态", "create.ponder.powered_toggle_latch.text_3": "...开启或者是关闭", "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", + "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", + "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", "create.ponder.radial_chassis.text_2": "当其中的一个底盘被装置带动时,其余的底盘也会被带动", @@ -1937,9 +2187,11 @@ "create.ponder.radial_chassis.text_7": "...底盘便会与同层且位于半径内的所有可及方块黏着在一起", "create.ponder.radial_chassis.text_8": "使用扳手可以精确指定底盘的影响范围", "create.ponder.radial_chassis.text_9": "黏性面一侧的不可及方块不会被黏着", + "create.ponder.redstone_contact.header": "接触式红石信号发生器", "create.ponder.redstone_contact.text_1": "当两个接触式红石信号发生器面对面时,它们会发出红石信号", "create.ponder.redstone_contact.text_2": "并且,若有一方位于运动装置上,此特性也能正常生效", + "create.ponder.redstone_link.header": "使用无线红石信号终端", "create.ponder.redstone_link.text_1": "无线红石信号终端可以无线传输红石信号", "create.ponder.redstone_link.text_2": "潜行右击可以改变其接收模式", @@ -1947,51 +2199,64 @@ "create.ponder.redstone_link.text_4": "接收端会发出由传输端发来的信号,有效距离为 128 格", "create.ponder.redstone_link.text_5": "在它们所带的槽位中放上物品,可以为它们指定频道", "create.ponder.redstone_link.text_6": "只有频道相互匹配的终端方可互通", + "create.ponder.rope_pulley.header": "使用绳索滑轮移动结构", "create.ponder.rope_pulley.text_1": "绳索滑轮在接受旋转力时可以垂直移动方块结构", "create.ponder.rope_pulley.text_2": "移动的方向及速度取决于提供的转速", + "create.ponder.rope_pulley_attachment.header": "绳索滑轮与装置一同运动", "create.ponder.rope_pulley_attachment.text_1": "当绳索滑轮本身在装置中被带动时...", "create.ponder.rope_pulley_attachment.text_2": "...它附着在滑轮上的结构会被滑轮拉着一同移动", "create.ponder.rope_pulley_attachment.text_3": "注意,只有绳索滑轮停止工作时才能被移动", + "create.ponder.rope_pulley_modes.header": "绳索滑轮的运动模式", "create.ponder.rope_pulley_modes.text_1": "当绳索滑轮停止运动时,它所附属的移动结构便会方块化", "create.ponder.rope_pulley_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的初始位置方块化", + "create.ponder.rotation_speed_controller.header": "使用转速控制器", "create.ponder.rotation_speed_controller.text_1": "转速控制器将旋转力从其转轴传递至它上方的大齿轮", "create.ponder.rotation_speed_controller.text_2": "在其侧面滚动鼠标滚轮,可以调节输出转速", + "create.ponder.sail.header": "使用风帆来组装风车", "create.ponder.sail.text_1": "风帆是制作风车的趁手材料", "create.ponder.sail.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", "create.ponder.sail.text_3": "手持染料右击可对其染色", "create.ponder.sail.text_4": "手持剪刀右击可剪除帆布,使其变回风帆框架", + "create.ponder.sail_frame.header": "使用风帆框架来组装风车", "create.ponder.sail_frame.text_1": "风帆框架是制作风车的趁手材料", "create.ponder.sail_frame.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", + "create.ponder.sequenced_gearshift.header": "使用可编程齿轮箱来控制转速", "create.ponder.sequenced_gearshift.text_1": "可编程齿轮箱能够根据玩家设置的预设时序表来传递旋转", "create.ponder.sequenced_gearshift.text_2": "对其右击可以打开设置面板", "create.ponder.sequenced_gearshift.text_3": "接受红石信号时,它会开始执行其内部已配置好的时序指令表", "create.ponder.sequenced_gearshift.text_4": "当完成时序指令表后,它会进入待机状态,再次接受红石信号后,它才会再次执行时序指令表内容", "create.ponder.sequenced_gearshift.text_5": "红石比较器可以读取当前时序指令表完成进度", + "create.ponder.shaft.header": "使用传动杆传递旋转力", "create.ponder.shaft.text_1": "传动杆能直线传递旋转力", + "create.ponder.shaft_casing.header": "传动杆箱", "create.ponder.shaft_casing.text_1": "安山或黄铜机壳,装饰传动杆的好伙伴", + "create.ponder.smart_chute.header": "使用智能溜槽过滤物品", "create.ponder.smart_chute.text_1": "智能溜槽是垂直溜槽的升级控制版", "create.ponder.smart_chute.text_2": "当在其过滤槽内指定了物品后,溜槽只会传输这一指定标记的物品", "create.ponder.smart_chute.text_3": "使用鼠标滚轮可以指定被过滤的物品数量", "create.ponder.smart_chute.text_4": "通入红石信号,智能溜槽将会完全暂停工作", + "create.ponder.smart_pipe.header": "使用智能流体管道控制流体流动", "create.ponder.smart_pipe.text_1": "智能流体管道可以限制通过它的流体种类", "create.ponder.smart_pipe.text_2": "当紧邻流体源放置时,管道只会抽取设置的流体种类", "create.ponder.smart_pipe.text_3": "使用任何包含流体的容器右击过滤槽,可以标记过滤的流体", "create.ponder.smart_pipe.text_4": "当放在管道网络中时,只有匹配过滤器的流体才能通过此管道", + "create.ponder.speedometer.header": "使用速度表来监测转速", "create.ponder.speedometer.text_1": "速度表能显示相接组件的转速", "create.ponder.speedometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", "create.ponder.speedometer.text_3": "红石比较器可以根据速度表的数值输出不同强弱的红石信号", + "create.ponder.spout_filling.header": "使用注液器填充物品", "create.ponder.spout_filling.text_1": "注液器可以将流体装入下方经过且可以接受该流体的物品", "create.ponder.spout_filling.text_2": "注液器的流体存储无法直接手动交互", @@ -1999,42 +2264,50 @@ "create.ponder.spout_filling.text_4": "输入的物品可以被放置在其下方的置物台上", "create.ponder.spout_filling.text_5": "当传送带上的物品经过注液器下方时...", "create.ponder.spout_filling.text_6": "注液器会使物品停下,然后自动处理这一物品", + "create.ponder.stabilized_bearings.header": "装置固定朝向", "create.ponder.stabilized_bearings.text_1": "当动力轴承在结构被带动时...", "create.ponder.stabilized_bearings.text_2": "...它会确保它转盘的垂直朝向不变", "create.ponder.stabilized_bearings.text_3": "跟默认的一样,动力轴承会黏着它前方的方块", "create.ponder.stabilized_bearings.text_4": "这种情况下,它所黏着的子装置的垂直朝向也不会改变", + "create.ponder.sticker.header": "使用黏着器来黏附方块", "create.ponder.sticker.text_1": "你可以用红石信号来控制黏着器的行为", "create.ponder.sticker.text_2": "当接受红石信号时,黏着器会黏着前方的方块", "create.ponder.sticker.text_3": "如果黏着器以装置的形式移动,那么被黏着的方块也会一同移动", "create.ponder.sticker.text_4": "再次接受红石信号时,它会断开与方块的黏连", + "create.ponder.stressometer.header": "使用应力表来监测应力", "create.ponder.stressometer.text_1": "应力表能显示当前动能网络内的应力信息", "create.ponder.stressometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", "create.ponder.stressometer.text_3": "红石比较器可以根据应力表的数值输出不同强弱的红石信号", + "create.ponder.super_glue.header": "使用强力胶来黏附方块", "create.ponder.super_glue.text_1": "强力胶可以在任意两个方块间使用", "create.ponder.super_glue.text_2": "当被粘合的方块被组装为装置时,他们会一起运动", "create.ponder.super_glue.text_3": "当强力胶在副手时...", "create.ponder.super_glue.text_4": "...新放置的方块会自动被黏附在所放置方块的面上", "create.ponder.super_glue.text_5": "左击可以清除强力胶", + "create.ponder.valve_handle.header": "使用阀门手轮产生旋转力", "create.ponder.valve_handle.text_1": "玩家可以手动使用阀门手轮来产生旋转力", "create.ponder.valve_handle.text_2": "右击可使它逆时针旋转", "create.ponder.valve_handle.text_3": "它的转速慢而精确", "create.ponder.valve_handle.text_4": "潜行右击可使它顺时针旋转", "create.ponder.valve_handle.text_5": "可以通过染色来美化阀门手轮", + "create.ponder.valve_pipe.header": "使用阀门管道控制液体流", "create.ponder.valve_pipe.text_1": "阀门管道可以控制管道网络中流体的蔓延", "create.ponder.valve_pipe.text_2": "通过其上的传动杆输入动力可以控制它的开关", "create.ponder.valve_pipe.text_3": "提供向“打开”方向的旋转力会打开阀门,使得流体可以通过", "create.ponder.valve_pipe.text_4": "提供另一方向的旋转力可以关闭阀门,阻止流体通过", + "create.ponder.water_wheel.header": "使用水车产生旋转力", "create.ponder.water_wheel.text_1": "水车利用临近的水流来进行应力发生", "create.ponder.water_wheel.text_2": "水车接触水流的面越多,它的转速越高", "create.ponder.water_wheel.text_3": "水车叶片应逆着水流方向摆放", "create.ponder.water_wheel.text_4": "如果顺着水流摆放,它的效率则会降低", + "create.ponder.weighted_ejector.header": "使用弹射置物台", "create.ponder.weighted_ejector.text_1": "手持弹射置物台时,潜行时右击可以设置弹射目标位置", "create.ponder.weighted_ejector.text_10": "现在,只有等被放置的物品数量等于所设定数量时,弹射置物台才会弹射物品", @@ -2047,15 +2320,18 @@ "create.ponder.weighted_ejector.text_7": "蓄力完毕后,放置在它上方的物品会被立刻弹射出去", "create.ponder.weighted_ejector.text_8": "如果目标为容器,则弹射置物台会等待容器有位置后再弹射物品", "create.ponder.weighted_ejector.text_9": "使用扳手可以调整弹射所要求的物品数量", + "create.ponder.weighted_ejector_redstone.header": "使用红石控制弹射置物台", "create.ponder.weighted_ejector_redstone.text_1": "当被红石充能时,弹射置物台停止工作", "create.ponder.weighted_ejector_redstone.text_2": "此外,置物台弹射的瞬间可以被侦测器侦测", + "create.ponder.weighted_ejector_tunnel.header": "使用弹射置物台来分流物品", "create.ponder.weighted_ejector_tunnel.text_1": "与黄铜隧道搭配使用时,弹射置物台可以将物品以特定数量进行分流", "create.ponder.weighted_ejector_tunnel.text_2": "首先,将黄铜隧道调整为“最近优先”模式,从而让它优先侧面输出", "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所设置的物品数量则为被分流出去的物品数量", "create.ponder.weighted_ejector_tunnel.text_4": "当所设置的物品数量被分流出去后...", "create.ponder.weighted_ejector_tunnel.text_5": "...剩余的物品则会继续前进", + "create.ponder.windmill_source.header": "使用风车轴承产生旋转力", "create.ponder.windmill_source.text_1": "在风车轴承会黏附它前方的方块", "create.ponder.windmill_source.text_2": "如果有足够多的风帆方块黏附于其上,那么整体结构便可被视为风车", @@ -2063,6 +2339,10 @@ "create.ponder.windmill_source.text_4": "产生的转速取决于风帆方块的数量", "create.ponder.windmill_source.text_5": "使用扳手可以调整风车的旋转方向", "create.ponder.windmill_source.text_6": "任何时候右击轴承,都可以将其停止,这样方便于你修改风车的结构", + "create.ponder.windmill_structure.header": "风车装置", - "create.ponder.windmill_structure.text_1": "任何有至少 8 个风帆方块的结构,都被视为一个有效的风车" - } \ No newline at end of file + "create.ponder.windmill_structure.text_1": "任何有至少 8 个风帆方块的结构,都被视为一个有效的风车", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file From 973eed6c1052b081f780d72ac29853876b73b3cc Mon Sep 17 00:00:00 2001 From: qkrehf2 <64183602+qkrehf2@users.noreply.github.com> Date: Sat, 20 Nov 2021 21:43:42 +0900 Subject: [PATCH 07/26] Updates to ko_kr.json by qkrehf2 (#2340) --- .../resources/assets/create/lang/ko_kr.json | 1134 ++++++++--------- 1 file changed, 557 insertions(+), 577 deletions(-) diff --git a/src/main/resources/assets/create/lang/ko_kr.json b/src/main/resources/assets/create/lang/ko_kr.json index 0f02f0855..834abe9d1 100644 --- a/src/main/resources/assets/create/lang/ko_kr.json +++ b/src/main/resources/assets/create/lang/ko_kr.json @@ -1,59 +1,101 @@ { "_": "->------------------------] Game Elements [------------------------<-", - "block.create.andesite_bricks": "안산암 벽돌", - "block.create.layered_andesite": "이어지는 안산암", + "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_shaft": "안산암 케이스를 씌운 축", + "block.create.andesite_funnel": "안산암 퍼널", "block.create.andesite_pillar": "안산암 기둥", - "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.mossy_andesite": "이끼 낀 안산암", - "block.create.overgrown_andesite": "이끼로 뒤덮힌 안산암", - "block.create.paved_andesite": "포장된 안산암", - "block.create.paved_andesite_slab": "포장된 안산암 반 블록", - "block.create.paved_andesite_stairs": "포장된 안산암 계단", - "block.create.paved_andesite_wall": "포장된 안산암 담장", - - "block.create.dark_scoria": "짙은 스코리아", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.dark_scoria_tiles": "짙은 스코리아 타일", - "block.create.dark_scoria_tiles_stairs": "짙은 스코리아 타일 계단", - "block.create.dark_scoria_tiles_slab": "짙은 스코리아 타일 반 블록", - "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", - "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", - "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", - "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", + "block.create.andesite_tunnel": "안산암 터널", + "block.create.basin": "대야", + "block.create.belt": "벨트", + "block.create.birch_window": "자작나무 유리창", + "block.create.birch_window_pane": "자작나무 유리판", + "block.create.black_nixie_tube": "검은색 닉시관", + "block.create.black_sail": "검은색 날개", + "block.create.black_seat": "검은색 좌석", + "block.create.black_toolbox": "검은색 공구상자", + "block.create.black_valve_handle": "검은색 밸브 손잡이", + "block.create.blaze_burner": "블레이즈 버너", + "block.create.blue_nixie_tube": "파란색 닉시관", + "block.create.blue_sail": "파란색 날개", + "block.create.blue_seat": "파란색 좌석", + "block.create.blue_toolbox": "파란색 공구상자", + "block.create.blue_valve_handle": "파란색 밸브 손잡이", + "block.create.brass_belt_funnel": "황동 퍼널", + "block.create.brass_block": "황동 블록", + "block.create.brass_casing": "황동 케이스", + "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", + "block.create.brass_funnel": "황동 퍼널", + "block.create.brass_tunnel": "황동 터널", + "block.create.brown_nixie_tube": "갈색 닉시관", + "block.create.brown_sail": "갈색 날개", + "block.create.brown_seat": "갈색 좌석", + "block.create.brown_toolbox": "갈색 공구상자", + "block.create.brown_valve_handle": "갈색 밸브 손잡이", + "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": "시계 베어링", + "block.create.clutch": "클러치", + "block.create.cogwheel": "톱니바퀴", + "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_shingles": "구리 판자", + "block.create.copper_tiles": "구리 타일", + "block.create.copper_valve_handle": "구리 밸브 손잡이", + "block.create.creative_crate": "크리에이티브 창고", + "block.create.creative_fluid_tank": "크리에이티브 탱크", + "block.create.creative_motor": "크리에이티브 모터", + "block.create.crimson_window": "진홍빛 유리창", + "block.create.crimson_window_pane": "진홍빛 유리판", + "block.create.crushing_wheel": "분쇄 휠", + "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", + "block.create.cuckoo_clock": "뻐꾸기 시계", + "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.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.layered_dark_scoria": "이어지는 짙은 스코리아", - "block.create.mossy_dark_scoria": "이끼 낀 짙은 스코리아", - "block.create.overgrown_dark_scoria": "이끼가 뒤덮힌 짙은 스코리아", - "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.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.polished_dark_scoria_slab": "윤나는 짙은 스코리아 반 블록", - "block.create.polished_dark_scoria_stairs": "윤나는 짙은 스코리아 계단", - "block.create.polished_dark_scoria_wall": "윤나는 짙은 스코리아 담장", "block.create.dark_scoria_pillar": "짙은 스코리아 기둥", - + "block.create.deployer": "배포기", + "block.create.depot": "아이템 거치대", "block.create.diorite_bricks": "섬록암 벽돌", "block.create.diorite_bricks_slab": "섬록암 벽돌 반 블록", "block.create.diorite_bricks_stairs": "섬록암 벽돌 계단", @@ -63,92 +105,78 @@ "block.create.diorite_cobblestone_stairs": "섬록암 조약돌 계단", "block.create.diorite_cobblestone_wall": "섬록암 조약돌 담장", "block.create.diorite_pillar": "섬록암 기둥", - "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.layered_diorite": "이어지는 섬록암", - "block.create.mossy_diorite": "이끼 낀 섬록암", - "block.create.overgrown_diorite": "이끼로 뒤덮힌 섬록암", - "block.create.paved_diorite": "포장된 섬록암", - "block.create.paved_diorite_slab": "포장된 섬록암 반 블록", - "block.create.paved_diorite_stairs": "포장된 섬록암 계단", - "block.create.paved_diorite_wall": "포장된 섬록암 담장", - - "block.create.dolomite_pillar": "백운암 기둥", "block.create.dolomite": "백운암", - "block.create.dolomite_stairs": "백운암 계단", - "block.create.dolomite_wall": "백운암 담장", - "block.create.dolomite_slab": "백운암 반 블록", "block.create.dolomite_bricks": "백운암 벽돌", - "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", - "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", - "block.create.polished_dolomite": "윤나는 백운암", - "block.create.layered_dolomite": "이어지는 백운암", + "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.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.paved_dolomite": "포장된 백운암", - "block.create.paved_dolomite_slab": "포장된 백운암 반 블록", - "block.create.paved_dolomite_stairs": "포장된 백운암 계단", - "block.create.paved_dolomite_wall": "포장된 백운암 담장", - "block.create.polished_dolomite_slab": "윤나는 백운암 반 블록", - "block.create.polished_dolomite_stairs": "윤나는 백운암 계단", - "block.create.polished_dolomite_wall": "윤나는 백운암 담장", - "block.create.chiseled_dolomite": "조각된 백운암", - "block.create.mossy_dolomite": "이끼 낀 백운암", - "block.create.overgrown_dolomite": "이끼로 뒤덮힌 백운암", - "block.create.dolomite_pillar": "백운암 기둥", - - "block.create.gabbro": "반려암", - "block.create.gabbro_stairs": "반려암 계단", - "block.create.gabbro_slab": "반려암 반 블록", - "block.create.gabbro_wall": "반려암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.gabbro_bricks": "반려암 벽돌", - "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", - "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", - "block.create.paved_gabbro_bricks": "포장된 반려암 벽돌", - "block.create.paved_gabbro_bricks_slab": "포장된 반려암 벽돌 반 블록", - "block.create.indented_gabbro": "반려암 겹 타일", - "block.create.indented_gabbro_slab": "반려암 겹 반 블록", - "block.create.slightly_mossy_gabbro_bricks": "이끼 낀 반려암 벽돌", - "block.create.mossy_gabbro_bricks": "이끼로 뒤덮힌 반려암 벽돌", - "block.create.chiseled_gabbro": "조각된 반려암", "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.gabbro_cobblestone": "반려암 조약돌", - "block.create.gabbro_cobblestone_slab": "반려암 조약돌 반 블록", - "block.create.gabbro_cobblestone_stairs": "반려암 조약돌 계단", - "block.create.gabbro_cobblestone_wall": "반려암 조약돌 담장", - "block.create.layered_gabbro": "이어지는 반려암", - "block.create.mossy_gabbro": "이끼 낀 반려암", - "block.create.overgrown_gabbro": "이끼로 뒤덮힌 반려암", - "block.create.paved_gabbro": "포장된 반려암", - "block.create.paved_gabbro_slab": "포장된 반려암 반 블록", - "block.create.paved_gabbro_stairs": "포장된 반려암 계단", - "block.create.paved_gabbro_wall": "포장된 반려암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.polished_gabbro_slab": "윤나는 반려암 반 블록", - "block.create.polished_gabbro_stairs": "윤나는 반려암 계단", - "block.create.polished_gabbro_wall": "윤나는 반려암 담장", - "block.create.gabbro_bricks_slab": "반려암 벽돌 반 블록", - "block.create.gabbro_pillar": "반려암 기둥", - - "block.create.granite_bricks": "화강암 벽돌", - "block.create.layered_granite": "이어지는 화강암", "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.fluid_pipe": "액체 파이프", + "block.create.fluid_tank": "액체 탱크", + "block.create.fluid_valve": "액체 밸브", + "block.create.flywheel": "플라이휠", + "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": "화강암 벽돌 담장", @@ -157,431 +185,370 @@ "block.create.granite_cobblestone_stairs": "화강암 조약돌 계단", "block.create.granite_cobblestone_wall": "화강암 조약돌 담장", "block.create.granite_pillar": "화강암 기둥", - "block.create.mossy_granite": "이끼 낀 화강암 벽돌", - "block.create.overgrown_granite": "이끼로 뒤덮힌 화강암 벽돌", - "block.create.paved_granite": "포장된 화강암", - "block.create.paved_granite_slab": "포장된 화강암 반 블록", - "block.create.paved_granite_stairs": "포장된 화강암 계단", - "block.create.paved_granite_wall": "포장된 화강암 담장", - + "block.create.gray_nixie_tube": "회색 닉시관", + "block.create.gray_sail": "회색 날개", + "block.create.gray_seat": "회색 좌석", + "block.create.gray_toolbox": "회색 공구상자", + "block.create.gray_valve_handle": "회색 밸브 손잡이", + "block.create.green_nixie_tube": "초록색 닉시관", + "block.create.green_sail": "초록색 날개", + "block.create.green_seat": "초록색 좌석", + "block.create.green_toolbox": "초록색 공구상자", + "block.create.green_valve_handle": "초록색 밸브 손잡이", + "block.create.hand_crank": "핸드 크랭크", + "block.create.haunted_bell": "귀신들린 종", + "block.create.honey": "꿀", + "block.create.horizontal_framed_glass": "수평 유리", + "block.create.horizontal_framed_glass_pane": "수평 유리판", + "block.create.hose_pulley": "호스 도르래", + "block.create.item_drain": "아이템 배수구", + "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_diorite": "이어지는 섬록암", + "block.create.layered_dolomite": "이어지는 백운암", + "block.create.layered_gabbro": "이어지는 반려암", + "block.create.layered_granite": "이어지는 화강암", + "block.create.layered_limestone": "이어지는 석회암", + "block.create.layered_scoria": "이어지는 스코리아", + "block.create.layered_weathered_limestone": "이어지는 풍화된 석회암", + "block.create.lectern_controller": "독서대 조작기", + "block.create.light_blue_nixie_tube": "하늘색 닉시관", + "block.create.light_blue_sail": "하늘색 날개", + "block.create.light_blue_seat": "하늘색 좌석", + "block.create.light_blue_toolbox": "하늘색 공구상자", + "block.create.light_blue_valve_handle": "하늘색 밸브 손잡이", + "block.create.light_gray_nixie_tube": "회백색 닉시관", + "block.create.light_gray_sail": "회백색 날개", + "block.create.light_gray_seat": "회백색 좌석", + "block.create.light_gray_toolbox": "회백색 공구상자", + "block.create.light_gray_valve_handle": "회백색 밸브 손잡이", + "block.create.lime_nixie_tube": "연두색 닉시관", + "block.create.lime_sail": "연두색 날개", + "block.create.lime_seat": "연두색 좌석", + "block.create.lime_toolbox": "연두색 공구상자", + "block.create.lime_valve_handle": "연두색 밸브 손잡이", "block.create.limesand": "석회모래", "block.create.limestone": "석회암", - "block.create.limestone_stairs": "석회암 계단", - "block.create.limestone_slab": "석회암 반 블록", - "block.create.limestone_wall": "석회암 담장", "block.create.limestone_bricks": "석회암 벽돌", - "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", + "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", "block.create.limestone_bricks_wall": "석회암 벽돌 담장", - "block.create.polished_limestone": "윤나는 석회암", - "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", - "block.create.limestone_pillar": "석회암 기둥", - "block.create.layered_limestone": "이어지는 석회암", - "block.create.chiseled_limestone": "조각된 석회암", - "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.mossy_limestone": "이끼 낀 석회암", - "block.create.overgrown_limestone": "이끼로 뒤덮힌 석회암", - "block.create.paved_limestone": "포장된 석회암", - "block.create.paved_limestone_slab": "포장된 석회암 반 블록", - "block.create.paved_limestone_stairs": "포장된 석회암 계단", - "block.create.paved_limestone_wall": "포장된 석회암 담장", - "block.create.polished_limestone_stairs": "윤나는 석회암 계단", - "block.create.polished_limestone_wall": "윤나는 석회암 담장", "block.create.limestone_cobblestone": "석회암 조약돌", "block.create.limestone_cobblestone_slab": "석회암 조약돌 반 블록", "block.create.limestone_cobblestone_stairs": "석회암 조약돌 계단", "block.create.limestone_cobblestone_wall": "석회암 조약돌 담장", - - "block.create.natural_scoria": "자연 스코리아", - "block.create.scoria": "스코리아", - "block.create.scoria_stairs": "스코리아 계단", - "block.create.scoria_slab": "스코리아 반 블록", - "block.create.scoria_wall": "스코리아 담장", - "block.create.scoria_bricks": "스코리아 벽돌", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", - "block.create.scoria_pillar": "스코리아 기둥", - "block.create.layered_scoria": "이어지는 스코리아", - "block.create.chiseled_scoria": "조각된 스코리아", - "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.limestone_pillar": "석회암 기둥", + "block.create.linear_chassis": "어두운 직선 섀시", + "block.create.lit_blaze_burner": "불타는 빈 블레이즈 버너", + "block.create.magenta_nixie_tube": "자홍색 닉시관", + "block.create.magenta_sail": "자홍색 날개", + "block.create.magenta_seat": "자홍색 좌석", + "block.create.magenta_toolbox": "자홍색 공구상자", + "block.create.magenta_valve_handle": "자홍색 밸브 손잡이", + "block.create.mechanical_arm": "기계 팔", + "block.create.mechanical_bearing": "베어링", + "block.create.mechanical_crafter": "조합기", + "block.create.mechanical_drill": "드릴", + "block.create.mechanical_harvester": "수확기", + "block.create.mechanical_mixer": "믹서", + "block.create.mechanical_piston": "기계식 피스톤", + "block.create.mechanical_piston_head": "기계식 피스톤 머리", + "block.create.mechanical_plough": "쟁기", + "block.create.mechanical_press": "압착기", + "block.create.mechanical_pump": "펌프", + "block.create.mechanical_saw": "톱", + "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.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.polished_scoria_stairs": "윤나는 스코리아 계단", - "block.create.polished_scoria_wall": "윤나는 스코리아 담장", - "block.create.scoria_cobblestone": "스코리아 조약돌", - "block.create.scoria_cobblestone_slab": "스코리아 조약돌 반 블록", - "block.create.scoria_cobblestone_stairs": "스코리아 조약돌 계단", - "block.create.scoria_cobblestone_wall": "스코리아 조약돌 담장", - "block.create.scoria_bricks_slab": "스코리아 벽돌 반 블록", - "block.create.scoria_bricks_stairs": "스코리아 벽돌 계단", - "block.create.scoria_bricks_wall": "스코리아 벽돌 담장", - - "block.create.weathered_limestone": "풍화된 석회암", - "block.create.weathered_limestone_stairs": "풍화된 석회암 계단", - "block.create.weathered_limestone_wall": "풍화된 석회암 담장", - "block.create.weathered_limestone_slab": "풍화된 석회암 반 블록", - "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", - "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", - "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", - "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", - "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", - "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", - "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", - "block.create.layered_weathered_limestone": "이어지는 풍화된 석회암", - "block.create.chiseled_weathered_limestone": "조각된 풍화된 석회암", - "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.mossy_weathered_limestone": "이끼 낀 풍화된 석회암", - "block.create.overgrown_weathered_limestone": "이끼로 뒤덮힌 풍화된 석회암", "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.peculiar_bell": "황동 종", + "block.create.pink_nixie_tube": "분홍색 닉시관", + "block.create.pink_sail": "분홍색 날개", + "block.create.pink_seat": "분홍색 좌석", + "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.portable_fluid_interface": "액체 인터페이스", + "block.create.portable_storage_interface": "아이템 인터페이스", + "block.create.powered_latch": "레드스톤 걸쇠", + "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", + "block.create.pulley_magnet": "도르래 자석", + "block.create.pulse_repeater": "펄스 중계기", + "block.create.purple_nixie_tube": "보라색 닉시관", + "block.create.purple_sail": "보라색 날개", + "block.create.purple_seat": "보라색 좌석", + "block.create.purple_toolbox": "보라색 공구상자", + "block.create.purple_valve_handle": "보라색 밸브 손잡이", + "block.create.radial_chassis": "원형 섀시", + "block.create.red_nixie_tube": "빨간색 닉시관", + "block.create.red_sail": "빨간색 날개", + "block.create.red_seat": "빨간색 좌석", + "block.create.red_toolbox": "빨간색 공구상자", + "block.create.red_valve_handle": "빨간색 밸브 손잡이", + "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.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.smart_chute": "스마트 슈트", + "block.create.smart_fluid_pipe": "스마트 액체 파이프", + "block.create.speedometer": "속도 계측기", + "block.create.spout": "주입기", + "block.create.spruce_window": "가문비나무 유리창", + "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.turntable": "돌림판", + "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.tiled_glass": "타일 유리", - "block.create.framed_glass": "큰 유리", - "block.create.vertical_framed_glass": "수직 유리", - "block.create.horizontal_framed_glass": "수평 유리", - "block.create.oak_window": "참나무 유리창", - "block.create.spruce_window": "가문비나무 유리창", - "block.create.birch_window": "자작나무 유리창", - "block.create.jungle_window": "정글나무 유리창", - "block.create.dark_oak_window": "짙은 참나무 유리창", - "block.create.acacia_window": "아카시아 유리창", - "block.create.ornate_iron_window": "장식된 철 유리창", - "block.create.crimson_window": "진홍빛 유리창", - "block.create.warped_window": "뒤틀린 유리창", - - "block.create.tiled_glass_pane": "타일 유리판", - "block.create.framed_glass_pane": "큰 유리판", - "block.create.vertical_framed_glass_pane": "수직 유리판", - "block.create.horizontal_framed_glass_pane": "수평 유리판", - "block.create.oak_window_pane": "참나무 유리판", - "block.create.spruce_window_pane": "가문비나무 유리판", - "block.create.birch_window_pane": "자작나무 유리판", - "block.create.jungle_window_pane": "정글나무 유리판", - "block.create.dark_oak_window_pane": "짙은 참나무 유리판", - "block.create.acacia_window_pane": "아카시아나무 유리판 ", - "block.create.ornate_iron_window_pane": "장식된 철 유리판", - "block.create.crimson_window_pane": "진홍빛 유리판", - "block.create.warped_window_pane": "뒤틀린 유리판", - - "block.create.black_seat": "검은색 좌석", - "block.create.blue_seat": "파란색 좌석", - "block.create.brown_seat": "갈색 좌석", - "block.create.cyan_seat": "청록색 좌석", - "block.create.gray_seat": "회색 좌석", - "block.create.green_seat": "초록색 좌석", - "block.create.light_gray_seat": "회백색 좌석", - "block.create.lime_seat": "연두색 좌석", - "block.create.light_blue_seat": "하늘색 좌석", - "block.create.magenta_seat": "자홍색 좌석", - "block.create.orange_seat": "주황색 좌석", - "block.create.pink_seat": "분홍색 좌석", - "block.create.red_seat": "빨간색 좌석", - "block.create.white_seat": "하얀색 좌석", - "block.create.yellow_seat": "노란색 좌석", - "block.create.purple_seat": "보라색 좌석", - - "block.create.copper_valve_handle": "구리 밸브 손잡이", - "block.create.black_valve_handle": "검은색 밸브 손잡이", - "block.create.blue_valve_handle": "파란색 밸브 손잡이", - "block.create.brown_valve_handle": "갈색 밸브 손잡이", - "block.create.cyan_valve_handle": "청록색 밸브 손잡이", - "block.create.gray_valve_handle": "회색 밸브 손잡이", - "block.create.green_valve_handle": "초록색 밸브 손잡이", - "block.create.light_blue_valve_handle": "하늘색 밸브 손잡이", - "block.create.light_gray_valve_handle": "회백색 밸브 손잡이", - "block.create.lime_valve_handle": "연두색 밸브 손잡이", - "block.create.magenta_valve_handle": "자홍색 밸브 손잡이", - "block.create.orange_valve_handle": "주황색 밸브 손잡이", - "block.create.pink_valve_handle": "분홍색 밸브 손잡이", - "block.create.red_valve_handle": "빨간색 밸브 손잡이", - "block.create.white_valve_handle": "하얀색 밸브 손잡이", - "block.create.yellow_valve_handle": "노란색 밸브 손잡이", - "block.create.purple_valve_handle": "보라색 밸브 손잡이", - - "block.create.sail_frame": "풍차 날개 틀", - "block.create.black_sail": "검은색 날개", - "block.create.blue_sail": "파란색 날개", - "block.create.brown_sail": "갈색 날개", - "block.create.cyan_sail": "청록색 날개", - "block.create.gray_sail": "회색 날개", - "block.create.green_sail": "초록색 날개", - "block.create.light_blue_sail": "하늘색 날개", - "block.create.light_gray_sail": "회백색 날개", - "block.create.lime_sail": "연두색 날개", - "block.create.magenta_sail": "자홍색 날개", - "block.create.orange_sail": "주황색 날개", - "block.create.pink_sail": "분홍색 날개", - "block.create.purple_sail": "보라색 날개", - "block.create.red_sail": "빨간색 날개", - "block.create.white_sail": "하얀색 날개", - "block.create.yellow_sail": "노란색 날개", - - "block.create.nixie_tube": "닉시관", - "block.create.black_nixie_tube": "검은색 닉시관", - "block.create.blue_nixie_tube": "파란색 닉시관", - "block.create.brown_nixie_tube": "갈색 닉시관", - "block.create.cyan_nixie_tube": "청록색 닉시관", - "block.create.gray_nixie_tube": "회색 닉시관", - "block.create.green_nixie_tube": "초록색 닉시관", - "block.create.light_blue_nixie_tube": "하늘핵 닉시관", - "block.create.light_gray_nixie_tube": "회백색 닉시관", - "block.create.lime_nixie_tube": "연두색 닉시관", - "block.create.magenta_nixie_tube": "자홍색 닉시관", - "block.create.pink_nixie_tube": "분홍색 닉시관", - "block.create.purple_nixie_tube": "보라샥 닉시관", - "block.create.red_nixie_tube": "빨간색 닉시관", - "block.create.white_nixie_tube": "하얀색 닉시관", - "block.create.yellow_nixie_tube": "노란색 닉시관", - - "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", - "block.create.fluid_pipe": "액체 파이프", - "block.create.fluid_tank": "액체 탱크", - "block.create.fluid_valve": "액체 밸브", - "block.create.glass_fluid_pipe": "액체 파이프", - "block.create.mechanical_pump": "펌프", - "block.create.smart_fluid_pipe": "스마트 액체 파이프", - "block.create.creative_fluid_tank": "크리에이티브 탱크", - "block.create.portable_fluid_interface": "액체 인터페이스", - "block.create.hose_pulley": "호스 도르래", - "block.create.item_drain": "아이템 배수구", - "block.create.spout": "주입기", - - "block.create.creative_motor": "크리에이티브 모터", - "block.create.encased_fan": "선풍기", - "block.create.flywheel": "플라이휠", - "block.create.furnace_engine": "화로 엔진", - "block.create.water_wheel": "물레바퀴", - "block.create.windmill_bearing": "풍차 베어링", - "block.create.hand_crank": "핸드 크랭크", - - "item.create.belt_connector": "벨트", - "block.create.shaft": "축", - "block.create.belt": "벨트", - "block.create.cogwheel": "톱니바퀴", - "block.create.large_cogwheel": "큰 톱니바퀴", - "block.create.rotation_speed_controller": "회전 속도 컨트롤러", - "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", - "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", - - "item.create.vertical_gearbox": "수직 기어박스", - "block.create.gearbox": "기어박스", - "block.create.gearshift": "기어쉬프트", - "block.create.clutch": "클러치", - "block.create.encased_chain_drive": "체인 드라이브", - "block.create.adjustable_chain_gearshift": "벨트 변속기", - "block.create.speedometer": "속도 계측기", - "block.create.stressometer": "피로도 계측기", - - "block.create.linear_chassis": "어두운 직선 섀시", - "block.create.mechanical_bearing": "베어링", - "block.create.clockwork_bearing": "시계 베어링", - "block.create.cart_assembler": "카트 조립기", - "block.create.mechanical_piston": "기계식 피스톤", - "block.create.mechanical_piston_head": "기계식 피스톤 머리", - "block.create.sticky_mechanical_piston": "기계식 끈끈이 피스톤", - "block.create.sticker": "부착기", - "block.create.pulley_magnet": "도르래 자석", - "block.create.radial_chassis": "원형 섀시", - "block.create.secondary_linear_chassis": "밝은 직선 섀시", - "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.sequenced_gearshift": "순서 기어쉬프트", - "block.create.rope": "밧줄", - "block.create.rope_pulley": "밧줄 도르래", - "block.create.gantry_carriage": "갠트리 운반대", - "block.create.gantry_shaft": "갠트리 축", - - "block.create.millstone": "맷돌", - "block.create.mechanical_mixer": "믹서", - "block.create.mechanical_arm": "기계 팔", - "block.create.mechanical_crafter": "조합기", - "block.create.mechanical_drill": "드릴", - "block.create.mechanical_harvester": "수확기", - "block.create.mechanical_plough": "쟁기", - "block.create.mechanical_press": "압착기", - "block.create.mechanical_saw": "톱", - "block.create.deployer": "배포기", - "block.create.minecart_anchor": "광산 수레 정박기", - "block.create.mysterious_cuckoo_clock": "뻐꾸기 시계?", - "block.create.crushing_wheel": "분쇄 휠", - "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", - "block.create.cuckoo_clock": "뻐꾸기 시계", - "block.create.nozzle": "노즐", - "block.create.portable_storage_interface": "아이템 인터페이스", - "block.create.turntable": "돌림판", + "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", "block.create.weighted_ejector": "투척기", - "block.create.content_observer": "정보 감지기", - "block.create.chute": "슈트", - "block.create.smart_chute": "스마트 슈트", - "block.create.basin": "대야", - "block.create.depot": "아이템 거치대", - "block.create.adjustable_crate": "가변 창고", - "block.create.andesite_casing": "안산암 케이스", - "block.create.andesite_funnel": "안산암 퍼널", - "block.create.andesite_belt_funnel": "안산암 퍼널", - "block.create.andesite_tunnel": "안산암 터널", - "block.create.reinforced_rail": "강화된 레일", - "block.create.blaze_burner": "블레이즈 버너", - "block.create.brass_belt_funnel": "황동 퍼널", - "block.create.brass_block": "황동 블록", - "block.create.brass_casing": "황동 케이스", - "block.create.brass_funnel": "황동 퍼널", - "block.create.brass_tunnel": "황동 터널", - + "block.create.white_nixie_tube": "하얀색 닉시관", + "block.create.white_sail": "하얀색 날개", + "block.create.white_seat": "하얀색 좌석", + "block.create.white_toolbox": "하얀색 공구상자", + "block.create.white_valve_handle": "하얀색 밸브 손잡이", + "block.create.windmill_bearing": "풍차 베어링", + "block.create.wooden_bracket": "나무 지지대", + "block.create.yellow_nixie_tube": "노란색 닉시관", + "block.create.yellow_sail": "노란색 날개", + "block.create.yellow_seat": "노란색 좌석", + "block.create.yellow_toolbox": "노란색 공구상자", + "block.create.yellow_valve_handle": "노란색 밸브 손잡이", + "block.create.zinc_block": "아연 블록", + "block.create.zinc_ore": "아연 광석", + + "enchantment.create.capacity": "저장량", + "enchantment.create.potato_recovery": "대포알 회수", + "entity.create.contraption": "구조물", - "entity.create.seat": "좌석", - "entity.create.stationary_contraption": "고정된 구조물", - "entity.create.super_glue": "강력 접착제", "entity.create.crafting_blueprint": "조합 청사진", "entity.create.gantry_contraption": "갠트리 구조물", "entity.create.potato_projectile": "감자포 투사체", - - "item.create.attribute_filter": "속성 필터 틀", - "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 구조물", - "item.create.chest_minecart_contraption": "상자가 실린 광산 수레 구조물", - "item.create.minecart_contraption": "광산 수레 구조물", - "item.create.minecart_coupling": "광산 수레 커플링", - + "entity.create.seat": "좌석", + "entity.create.stationary_contraption": "고정된 구조물", + "entity.create.super_glue": "강력 접착제", - "block.create.powered_latch": "레드스톤 걸쇠", - "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", - "block.create.pulse_repeater": "펄스 중계기", - "block.create.redstone_contact": "동형 감지기", - "block.create.redstone_link": "레드스톤 링크", - "block.create.adjustable_pulse_repeater": "가변 펄스 중계기", - "block.create.adjustable_repeater": "가변 중계기", - "block.create.analog_lever": "아날로그 레버", - "block.create.stockpile_switch": "수량 스위치", - "block.create.controller_rail": "방향 레일", + "fluid.create.potion": "포션", + "fluid.create.tea": "건축가의 차", - "block.create.creative_crate": "크리에이티브 창고", - "block.create.schematic_table": "청사진 탁자", - "block.create.schematicannon": "청사진 대포", - "item.create.deforester": "산림파괴자", - "item.create.extendo_grip": "외장형 연장 팔", - "item.create.handheld_blockzapper": "휴대용 블록발사기", - "item.create.handheld_worldshaper": "크리에이티브 세계편집기", - "item.create.goggles": "엔지니어의 고글", - "item.create.red_sand_paper": "붉은 사포", - "item.create.sand_paper": "사포", - "item.create.schematic": "청사진", - "item.create.schematic_and_quill": "청사진과 깃펜", - "item.create.empty_schematic": "빈 청사진", - - "block.create.copper_block": "구리 블록", - "block.create.copper_casing": "구리 케이스", - "block.create.copper_ore": "구리 광석", - "block.create.copper_shingles": "구리 판자", - "block.create.copper_tiles": "구리 타일", - "block.create.refined_radiance_casing": "빛나는 케이스", - "block.create.shadow_steel_casing": "그림자 케이스", - "block.create.zinc_block": "아연 블록", - "block.create.zinc_ore": "아연 광석", "item.create.andesite_alloy": "안산암 합금", + "item.create.attribute_filter": "속성 필터 틀", + "item.create.bar_of_chocolate": "초콜릿 바", + "item.create.belt_connector": "벨트", "item.create.blaze_cake": "블레이즈 케이크", "item.create.blaze_cake_base": "블레이즈 케이크 틀", "item.create.brass_hand": "황동 손", "item.create.brass_ingot": "황동 주괴", "item.create.brass_nugget": "황동 조각", "item.create.brass_sheet": "황동 판", + "item.create.builders_tea": "건축가의 차", + "item.create.chest_minecart_contraption": "상자가 실린 광산 수레 구조물", + "item.create.chocolate_bucket": "초콜릿 양동이", + "item.create.chocolate_glazed_berries": "초콜릿 바른 열매", "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": "분쇄된 철 광석", + "item.create.crushed_lead_ore": "분쇄된 납 광석", + "item.create.crushed_nickel_ore": "분쇄된 니켈 광석", + "item.create.crushed_osmium_ore": "분쇄된 오스뮴 광석", + "item.create.crushed_platinum_ore": "분쇄된 플래티넘 광석", + "item.create.crushed_quicksilver_ore": "분쇄된 수은 광석", + "item.create.crushed_silver_ore": "분쇄된 은 광석", + "item.create.crushed_tin_ore": "분쇄된 주석 광석", + "item.create.crushed_uranium_ore": "분쇄된 우라늄 광석", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", + "item.create.diving_boots": "다이빙 부츠", + "item.create.diving_helmet": "다이빙 헬멧", "item.create.dough": "반죽", "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", + "item.create.empty_schematic": "빈 청사진", + "item.create.extendo_grip": "외장형 연장 팔", "item.create.filter": "필터 틀", + "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 구조물", + "item.create.goggles": "엔지니어의 고글", "item.create.golden_sheet": "금 판", - "item.create.integrated_circuit": "집적 회로", + "item.create.handheld_worldshaper": "크리에이티브 세계편집기", + "item.create.honey_bucket": "꿀 양동이", + "item.create.honeyed_apple": "꿀 바른 사과", + "item.create.incomplete_cogwheel": "미완성된 톱니바퀴", + "item.create.incomplete_large_cogwheel": "미완성된 큰 톱니바퀴", + "item.create.incomplete_precision_mechanism": "미완성된 정밀 기계장치", "item.create.iron_sheet": "철 판", - "item.create.lapis_sheet": "청금석 판", + "item.create.linked_controller": "레드스톤 링크 조작기", + "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.red_sand_paper": "붉은 사포", "item.create.refined_radiance": "정제된 광채", "item.create.rose_quartz": "장밋빛 석영", + "item.create.sand_paper": "사포", + "item.create.schematic": "청사진", + "item.create.schematic_and_quill": "청사진과 깃펜", "item.create.shadow_steel": "그림자 강철", "item.create.super_glue": "강력 접착제", + "item.create.sweet_roll": "롤빵", "item.create.tree_fertilizer": "나무 비료", + "item.create.vertical_gearbox": "수직 기어박스", "item.create.wand_of_symmetry": "대칭의 지팡이", "item.create.wheat_flour": "밀가루", "item.create.whisk": "혼합기", "item.create.wrench": "렌치", "item.create.zinc_ingot": "아연 주괴", "item.create.zinc_nugget": "아연 조각", - "block.create.metal_bracket": "금속 지지대", - "block.create.wooden_bracket": "나무 지지대", - "block.create.lit_blaze_burner": "불타는 빈 블레이즈 버너", - "item.create.precision_mechanism": "정밀 기계장치", - "item.create.potato_cannon": "감자포", - "item.create.linked_controller": "레드스톤 링크 조작기", - "item.create.incomplete_cogwheel": "미완성된 톱니바퀴", - "item.create.incomplete_large_cogwheel": "미완성된 큰 톱니바퀴", - "item.create.incomplete_precision_mechanism": "미완성된 정밀 기계장치", - "item.create.diving_boots": "다이빙 부츠", - "item.create.diving_helmet": "다이빙 헬멧", - "block.create.copper_backtank": "구리 산소통", - "item.create.crafting_blueprint": "조합 청사진", - "item.create.copper_backtank": "구리 산소통", - "block.create.peculiar_bell": "황동 종", - "block.create.lectern_controller": "독서대 조작기", - "block.create.haunted_bell": "귀신들린 종", - "block.create.chocolate": "초콜릿", - "block.create.honey": "꿀", - "fluid.create.chocolate": "초콜릿", - "fluid.create.honey": "꿀", - "fluid.create.milk": "우유", - "fluid.create.potion": "포션", - "fluid.create.tea": "건축가의 차", - "item.create.builders_tea": "건축가의 차", - "item.create.bar_of_chocolate": "초콜릿 바", - "item.create.chocolate_bucket": "초콜릿 양동이", - "item.create.honey_bucket": "꿀 양동이", - "item.create.sweet_roll": "롤빵", - "item.create.chocolate_glazed_berries": "초콜릿 바른 열매", - "item.create.honeyed_apple": "꿀 바른 사과", - "enchantment.create.capacity": "저장량", - "enchantment.create.potato_recovery": "대포알 회수", - "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Create!", "advancement.create.root.desc": "멋진 장치들을 창조할 시간입니다!", "advancement.create.andesite_alloy": "이게 합금?", - "advancement.create.andesite_alloy.desc": "암석으로도 합금을 만들 수 있나요?", - + "advancement.create.andesite_alloy.desc": "돌로 합금을 만들 수 있나요?", "advancement.create.its_alive": "살아 움직이는", - "advancement.create.its_alive.desc": "당신의 첫 장치가 움직입니다!", + "advancement.create.its_alive.desc": "당신의 첫 장치가 움직입니다!", "advancement.create.shifting_gears": "톱니바퀴 돌리고!", "advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하여 장치의 속도를 바꿀 수 있습니다.", "advancement.create.overstressed": "과부하", @@ -620,12 +587,12 @@ "advancement.create.aesthetics.desc": "축, 파이프, 톱니바퀴에 지지대를 설치하세요.", "advancement.create.reinforced": "튼튼 보강!", "advancement.create.reinforced.desc": "축, 파이프, 벨트에 적절한 케이스를 씌우세요.", - "advancement.create.water_wheel": "수력 동력화", + "advancement.create.water_wheel": "수력 동력화", "advancement.create.water_wheel.desc": "물레바퀴를 설치하고 회전하게 만드세요!", "advancement.create.chocolate_wheel": "초콜릿바퀴", "advancement.create.chocolate_wheel.desc": "녹은 초콜릿으로 물레바퀴를 돌리세요.", "advancement.create.lava_wheel": "불레바퀴", - "advancement.create.lava_wheel.desc": "용암으로 물레바퀴를 회전하게 만드세ㅇ... 어?", + "advancement.create.lava_wheel.desc": "용암으로 물레바퀴를 회전하게 만드세... 어?", "advancement.create.cuckoo": "벌써 이렇게나 시간이 지났어?", "advancement.create.cuckoo.desc": "뻐꾸기 시계가 잘 시간을 알립니다. 잘 자...", "advancement.create.millstone": "나만의 작은 분쇄기", @@ -654,7 +621,6 @@ "advancement.create.blaze_burner.desc": "블레이즈 버너를 얻으세요.", "advancement.create.compact": "자동 압축", "advancement.create.compact.desc": "대야와 압착기를 이용하서 아이템을 섞어보세요.", - "advancement.create.brass": "진짜 합금", "advancement.create.brass.desc": "구리와 아연을 가지고 황동을 만드세요.", "advancement.create.brass_casing": "황동기 시대", @@ -669,7 +635,7 @@ "advancement.create.chocolate.desc": "초콜릿 양동이를 얻으세요.", "advancement.create.item_drain": "회전 배수", "advancement.create.item_drain.desc": "아이템 배수구가 액체를 비우는 것을 보세요.", - "advancement.create.chained_item_drain": "구른다!", + "advancement.create.chained_item_drain": "데구르르 굴러가", "advancement.create.chained_item_drain.desc": "아이템이 여러 배수구 위를 굴러가는 것을 보세요.", "advancement.create.glass_pipe": "액체 엿보기", "advancement.create.glass_pipe.desc": "액체가 창이 달린 파이프를 지나는 것을 보세요. 직선 파이프를 렌치로 우클릭하면 창문이 생깁니다.", @@ -685,7 +651,6 @@ "advancement.create.infinite_lava.desc": "무한으로 인식되는 용암 웅덩이에서 용암을 끌어올리세요.", "advancement.create.infinite_chocolate": "상상 속에 잠기다", "advancement.create.infinite_chocolate.desc": "무한으로 인식되는 초콜릿 웅덩이에서 초콜릿을 끌어올리세요.", - "advancement.create.crafter": "자동 조합", "advancement.create.crafter.desc": "기계식 조합기를 설치하고 작동시키세요.", "advancement.create.clockwork_bearing": "시계 제작", @@ -694,18 +659,14 @@ "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", "advancement.create.deployer": "찌르고, 설치하고, 공격!", "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 작동시키세요.", - "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", - "advancement.create.crushing_wheel": "한 쌍의 거인들", - "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.flywheel": "공장의 심장", "advancement.create.flywheel.desc": "화로엔진에 플라이휠을 연결하세요.", "advancement.create.overstress_flywheel": "정말정말 높은 피로", "advancement.create.overstress_flywheel.desc": "화로 엔진을 과부하하세요.", - "advancement.create.integrated_circuit": "복잡한 계산", - "advancement.create.integrated_circuit.desc": "집적 회로를 제작하세요.", + "advancement.create.precision_mechanism": "복잡한 호기심", + "advancement.create.precision_mechanism.desc": "정밀 기계장치를 조립하세요.", "advancement.create.mechanical_arm": "바쁘다 바빠!", "advancement.create.mechanical_arm.desc": "기계 팔을 조합하고, 입력부와 출력부를 정하고, 설치한 다음 돌리세요. 그리고 그것이 작동하는 것을 보세요.", "advancement.create.musical_arm": "볼륨 최대로!", @@ -714,6 +675,12 @@ "advancement.create.arm_many_targets.desc": "기계 팔에 10개 이상의 출력부를 설정하세요.", "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", + "advancement.create.fist_bump": "하이파이브!", + "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": "공허에서의 복귀", @@ -722,29 +689,18 @@ "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", "advancement.create.chromatic_age": "양극 시대", "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", - "advancement.create.blaze_cake": "폭주", - "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.extendo_grip": "띠요오옹!", - "advancement.create.extendo_grip.desc": "외장형 연장 팔을 손에 쥐세요.", - "advancement.create.dual_extendo_grip": "궁극의 띠용!", - "advancement.create.dual_extendo_grip.desc": "쌍으로 외장형 연장 팔을 들어 인간을 뛰어넘은 사거리를 가지세요.", - "advancement.create.potato_cannon": "퐁!", - "advancement.create.potato_cannon.desc": "감자포로 적을 처치하세요.", - "advancement.create.precision_mechanism": "복잡한 호기심", - "advancement.create.precision_mechanism.desc": "정밀 기계장치를 조립하세요.", - - "advancement.create.zapper": "나는 스타일있게 건축해", - "advancement.create.zapper.desc": "당신의 건축을 도와줄 멋진 레이저 건, 휴대용 블록발사기를 만드세요.", - "advancement.create.upgraded_zapper": "화려한 빛이 날 감싸네", - "advancement.create.upgraded_zapper.desc": "완전히 업그레이드된 휴대용 블록발사기를 만들고 써보세요.", "advancement.create.wand_of_symmetry": "빛나는 건축", "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.deforester": "빛나는 벌목", - "advancement.create.deforester.desc": "산림파괴자를 만들고, 숲에게 작별인사를 하세요.", - + "advancement.create.extendo_grip": "띠요옹!", + "advancement.create.extendo_grip.desc": "외장형 연장 팔을 손에 쥐세요.", + "advancement.create.potato_cannon": "'퐁!'", + "advancement.create.potato_cannon.desc": "감자포로 적을 처치하세요.", + "advancement.create.dual_extendo_grip": "띠요오오오오오오용!", + "advancement.create.dual_extendo_grip.desc": "양손에 외장형 연장 팔을 들어 초월적인 사거리를 가지세요.", "advancement.create.eob": "End of Beta", "advancement.create.eob.desc": "이후 업데이트를 기다려주세요. <3", + "_": "->------------------------] UI & Messages [------------------------<-", "itemGroup.create.base": "Create", @@ -754,7 +710,7 @@ "death.attack.create.crush.player": "%1$s이(가) %2$s 때문에 분쇄 휠에서 가공되었습니다", "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람에 익어버렸습니다", "death.attack.create.fan_fire.player": "%1$s이(가) %2$s 때문에 뜨거운 바람으로 익어버렸습니다", - "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 제가 되었습니다", + "death.attack.create.fan_lava": "%1$s이(가) 용암 바람에 재가 되었습니다", "death.attack.create.fan_lava.player": "%1$s이(가) %2$s 때문에 용암 바람으로 재가 되었습니다", "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", "death.attack.create.mechanical_drill.player": "%1$s이(가) %2$s 때문에 드릴에 관통당했습니다", @@ -786,6 +742,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", + "create.recipe.deploying": "Deploying", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -795,7 +752,6 @@ "create.recipe.automatic_shaped": "유형 자동 조합", "create.recipe.block_cutting": "블록 절단", "create.recipe.wood_cutting": "나무 절단", - "create.recipe.blockzapper_upgrade": "휴대용 블록발사기 업그레이드", "create.recipe.sandpaper_polishing": "사포질", "create.recipe.mystery_conversion": "?", "create.recipe.spout_filling": "채우기", @@ -811,6 +767,7 @@ "create.recipe.assembly.repeat": "%1$s번 반복하기", "create.recipe.assembly.junk": "조립 실패한 조각들", "create.recipe.processing.chance": "%1$s%% 확률", + "create.recipe.deploying.not_consumed": "소모되지 않음", "create.recipe.heat_requirement.none": "열이 필요하지 않음", "create.recipe.heat_requirement.heated": "가열됨", "create.recipe.heat_requirement.superheated": "초고온 가열됨", @@ -839,6 +796,7 @@ "create.action.discard": "삭제", "create.keyinfo.toolmenu": "메뉴 세부정보 보기", + "create.keyinfo.toolbelt": "근처 공구상자 열기", "create.keyinfo.scrollup": "마우스 휠을 위로 이동 (인게임에서)", "create.keyinfo.scrolldown": "마우스 휠을 아래로 이동 (인게임에서)", @@ -849,6 +807,13 @@ "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", "create.gui.toolmenu.cycle": "스크롤로 순환", + + "create.toolbox.unequip": "되돌리기: %1$s", + "create.toolbox.outOfRange": "현재 아이템은 공구상자와 너무 멀리있습니다", + "create.toolbox.detach": "공구상자와 연결 끊기", + "create.toolbox.depositAll": "근처 공구상자로 모든 아이템 되돌리기", + "create.toolbox.depositBox": "공구상자로 아이템 되돌리기", + "create.gui.symmetryWand.mirrorType": "거울의 형태", "create.gui.symmetryWand.orientation": "거울의 방향", @@ -923,7 +888,7 @@ "create.logistics.firstFrequency": "주파수 #1", "create.logistics.secondFrequency": "주파수 #2", "create.logistics.filter.apply": "%1$s에 필터를 적용했습니다.", - "create.logistics.filter.apply_click_again": "%1$s에 필터를 적용했습니다. 다시 적용하면 가지고 있는 아이템의 수량을 복사하여 필터에 적용합니다.", + "create.logistics.filter.apply_click_again": "%1$s에 필터를 적용했습니다. 다시 클릭하면 가지고 있는 아이템의 수량을 복사하여 필터에 적용합니다.", "create.logistics.filter.apply_count": "필터에 수량을 적용했습니다.", "create.gui.goggles.generator_stats": "동력 상태:", @@ -947,7 +912,6 @@ "create.gui.stressometer.no_rotation": "동력없음", "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", "create.gui.contraptions.network_overstressed": "_과부하!_ _높은 피로도_ _용량_을 가진 발전기를 추가로 설치하거나 _장치 속도_를 _늦추세요_.", - "create.gui.goggles.contraptions.unmovable_block": "움직일 수 없는 블록: (%d, %d, %d)의 \"%s\"", "create.gui.adjustable_crate.title": "가변 창고", "create.gui.adjustable_crate.storageSpace": "저장 공간", "create.gui.stockpile_switch.title": "수량 스위치", @@ -1031,9 +995,9 @@ "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", "create.schematics.maxAllowedSize": "최대 청사진 파일 크기:", - "create.gui.schematicTable.title": "청사진 테이블", "create.gui.schematicTable.refresh": "파일 새로고침", "create.gui.schematicTable.open_folder": "폴더 열기", + "create.gui.schematicTable.title": "청사진 테이블", "create.gui.schematicTable.availableSchematics": "사용가능한 청사진", "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", "create.gui.schematicTable.uploading": "업로딩 중...", @@ -1082,11 +1046,11 @@ "create.materialChecklist": "재료 목록", "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러와지지 않아 재료 목록이 부정확할 수 있습니다.", - - "create.gui.filter.blacklist": "블랙리스트", - "create.gui.filter.blacklist.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.", - "create.gui.filter.whitelist": "화이트리스트", - "create.gui.filter.whitelist.description": "위 목록에 맞는 아이템이면 통과합니다. 빈 화이트리스트는 모두 통과시키지 않습니다.", + + "create.gui.filter.deny_list": "블랙리스트", + "create.gui.filter.deny_list.description": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", + "create.gui.filter.allow_list": "화이트리스트", + "create.gui.filter.allow_list.description": "위에 등록된 아이템만 통과할 수 있습니다. 빈 화이트리스트는 모든 아이템을 막습니다.", "create.gui.filter.respect_data": "상세정보 일치", "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", "create.gui.filter.ignore_data": "상세정보 무시", @@ -1096,18 +1060,14 @@ "create.item_attributes.placeable.inverted": "설치할 수 없음", "create.item_attributes.consumable": "먹을 수 있음", "create.item_attributes.consumable.inverted": "먹을 수 없음", - "create.item_attributes.smeltable": "구워질 수 있음", - "create.item_attributes.smeltable.inverted": "구워질 수 없음", - "create.item_attributes.washable": "세척될 수 있음", - "create.item_attributes.washable.inverted": "세척될 수 없음", - "create.item_attributes.smokable": "훈연될 수 있음", - "create.item_attributes.smokable.inverted": "훈연될 수 없음", - "create.item_attributes.crushable": "분쇄될 수 있음", - "create.item_attributes.crushable.inverted": "분쇄될 수 없음", - "create.item_attributes.blastable": "용광로에 녹일 수 있음", - "create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음", + "create.item_attributes.fluid_container": "액체를 저장할 수 있음", + "create.item_attributes.fluid_container.inverted": "액체를 저장할 수 없음", "create.item_attributes.enchanted": "마법부여됨", "create.item_attributes.enchanted.inverted": "마법부여되지 않음", + "create.item_attributes.max_enchanted": "마법부여가 최고 레벨임", + "create.item_attributes.max_enchanted.inverted": "마법부여가 최고 레벨이 아님", + "create.item_attributes.renamed": "새로운 이름을 지어줌", + "create.item_attributes.renamed.inverted": "새로운 이름이 없음", "create.item_attributes.damaged": "내구도가 닮", "create.item_attributes.damaged.inverted": "내구도가 닳지 않음", "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", @@ -1118,23 +1078,31 @@ "create.item_attributes.equipable.inverted": "장착할 수 없음", "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", "create.item_attributes.furnace_fuel.inverted": "화로 연료로 쓸 수 없음", + "create.item_attributes.washable": "세척될 수 있음", + "create.item_attributes.washable.inverted": "세척될 수 없음", + "create.item_attributes.crushable": "분쇄될 수 있음", + "create.item_attributes.crushable.inverted": "분쇄될 수 없음", + "create.item_attributes.smeltable": "구워질 수 있음", + "create.item_attributes.smeltable.inverted": "구워질 수 없음", + "create.item_attributes.smokable": "훈연될 수 있음", + "create.item_attributes.smokable.inverted": "훈연될 수 없음", + "create.item_attributes.blastable": "용광로에 녹일 수 있음", + "create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음", + "create.item_attributes.shulker_level": "셜커가 %1$s있음", + "create.item_attributes.shulker_level.inverted": "셜커가 %1$s있지 않음", + "create.item_attributes.shulker_level.full": "가득 차", + "create.item_attributes.shulker_level.empty": "비어", + "create.item_attributes.shulker_level.partial": "조금 차", "create.item_attributes.in_tag": "%1$s로 등록됨", "create.item_attributes.in_tag.inverted": "%1$s로 등록되지 않음", "create.item_attributes.in_item_group": "%1$s탭에 속함", "create.item_attributes.in_item_group.inverted": "%1$s탭에 속함", "create.item_attributes.added_by": "%1$s모드가 추가함", "create.item_attributes.added_by.inverted": "%1$s모드가 추가하지 않음", - "create.item_attributes.shulker_level": "셜커가 %1$s있음", - "create.item_attributes.shulker_level.inverted": "셜커가 %1$s있지 않음", - "create.item_attributes.shulker_level.full": "가득 차", - "create.item_attributes.shulker_level.empty": "비어", - "create.item_attributes.shulker_level.partial": "조금 차", "create.item_attributes.has_enchant": "%1$s 마법부여를 가지고 있음", "create.item_attributes.has_enchant.inverted": "%1$s 마법부여를 가지고 있지 않음", "create.item_attributes.color": "염색됨", "create.item_attributes.color.inverted": "염색되지 않음", - "create.item_attributes.max_enchanted": "마법부여가 최고 레벨임", - "create.item_attributes.max_enchanted.inverted": "마법부여가 최고 레벨이 아님", "create.item_attributes.has_fluid": "%1$s을(를) 담고 있음", "create.item_attributes.has_fluid.inverted": "%1$s을(를) 담고 있지 않음", "create.item_attributes.has_name": "%1$s이라는 이름을 갖고 있음", @@ -1149,14 +1117,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_crystal": "%1$s 수정 속성을 가짐", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s 수정 속성을 가지고 있지 않음", - "create.item_attributes.astralsorcery_constellation": "%1$s에 조율됨", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s에 조율되지 않음", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 퍽 속성을 가짐", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 퍽 속성을 가지고 있지 않음", "create.item_attributes.astralsorcery_amulet": "%1$s이(가) 향상됨", "create.item_attributes.astralsorcery_amulet.inverted": "%1$s이(가) 향상되지 않음", + "create.item_attributes.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": "선택된 속성:", @@ -1200,7 +1168,7 @@ "create.weighted_ejector.no_target": "인접한 블록에다 발사합니다 (투척 지점이 설정되지 않았습니다)", "create.weighted_ejector.targeting": "[%1$s,%2$s,%3$s]에다 투척합니다", "create.weighted_ejector.stack_size": "투척하는 아이템의 수량", - + "create.logistics.when_multiple_outputs_available": "여러 출력구가 있을 때", "create.mechanical_arm.selection_mode.round_robin": "돌아가며 처리", @@ -1255,15 +1223,14 @@ "create.hint.full_deployer.title": "배포기 아이템 과적", "create.hint.full_deployer": "이 _배포기_는 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "This is a sample overlay", + "create.gui.config.overlay3": "Click or drag with your mouse", + "create.gui.config.overlay4": "to move this preview", + "create.gui.config.overlay5": "Press ESC to exit this screen", + "create.gui.config.overlay6": "and save the new position", + "create.gui.config.overlay7": "Run /create overlay reset", + "create.gui.config.overlay8": "to reset to the default position", "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", @@ -1273,8 +1240,9 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "이 수레 구조물은 들기에 너무 큽니다", - "create.contraption.minecart_contraption_illegal_pickup": "신비로운 힘이 이 수레 구조물을 세계에 묶어두고 있습니다", + "create.contraption.minecart_contraption_too_big": "이 수레 구조물은 들기에 너무 큽니다!", + "create.contraption.minecart_contraption_illegal_pickup": "신비로운 힘이 이 수레 구조물을 세계에 묶어두고 있습니다!", + "_": "->------------------------] Subtitles [------------------------<-", @@ -1444,7 +1412,7 @@ "block.create.nozzle.tooltip": "NOZZLE", "block.create.nozzle.tooltip.summary": "선풍기 _앞_에 붙여 선풍기의 효과를 _전방향_으로 _확대_합니다.", - + "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", @@ -1453,6 +1421,15 @@ "block.create.turntable.tooltip": "TURNTABLE", "block.create.turntable.tooltip.summary": "_동력_으로 _멀미_를 일으킵니다.", + "block.create.toolbox.tooltip": "공구상자", + "block.create.toolbox.tooltip.summary": "모든 발명가의 가장 친한 동료입니다. _8가지 종류의_ 아이템을 편하게 _많이_ 저장할 수 있습니다.", + "block.create.toolbox.tooltip.condition1": "파괴했을 때", + "block.create.toolbox.tooltip.behaviour1": "아이템을 _떨어뜨리지 않습니다_.", + "block.create.toolbox.tooltip.condition2": "설치했을 때", + "block.create.toolbox.tooltip.behaviour2": "_근처 플레이어_가 _단축키_를 눌러 _원격으로_ 상자 속 아이템에 접근할 수 있습니다.", + "block.create.toolbox.tooltip.condition3": "우클릭했을 때", + "block.create.toolbox.tooltip.behaviour3": "창을 엽니다.", + "block.create.stockpile_switch.tooltip": "stockpile_switch", "block.create.stockpile_switch.tooltip.summary": "붙어있는 _보관함_에 들어있는 아이템을 기반으로 레드스톤 신호를 보냅니다. 필터도 제공됩니다. _비교기_와 반대로, 수량 스위치는 신호가 반전되는 _임계점_을 조절할 수 있습니다.", "block.create.stockpile_switch.tooltip.condition1": "우클릭", @@ -1460,6 +1437,10 @@ "block.create.content_observer.tooltip": "CONTENT OBSERVER", "block.create.content_observer.tooltip.summary": "보관함이나 벨트의 아이템을 등록된 _필터_를 이용해 _탐지_합니다. _보관함, 벨트, 슈트_ 안에 해당 아이템을 탐지하는 동안, 레드스톤 신호를 보냅니다. _퍼널_가 해당 아이템을 수송하면, _1틱_의 레드스톤 신호를 보냅니다.", + "block.create.content_observer.tooltip.condition1": "보관함를 탐지할 때", + "block.create.content_observer.tooltip.behaviour1": "해당 보관함에 _필터 아이템_이 있는 동안 _레드스톤 신호_를 방출합니다.", + "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스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", @@ -1471,6 +1452,11 @@ "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", "block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.", + "item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE", + "item.create.creative_blaze_cake.tooltip.summary": "_블레이즈 버너_의 열 _세기를 조절할 수 있는_ 매우 특별한 케이크입니다. 이 케이크를 섭취한 블레이즈 버너는 _절대 꺼지지_ 않습니다.", + "item.create.creative_blaze_cake.tooltip.condition1": "블레이즈 버너에 우클릭", + "item.create.creative_blaze_cake.tooltip.behaviour1": "블레이즈 버너의 열 세기를 _고정_시킵니다. 다시 사용하면 블레이즈 버너의 열 세기를 _순환_합니다.", + "block.create.controller_rail.tooltip": "CONTROLLER RAIL", "block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.", "block.create.controller_rail.tooltip.condition1": "레드스톤 신호를 받을 때", @@ -1480,15 +1466,19 @@ "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", "item.create.sand_paper.tooltip.condition1": "사용할 때", "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", - + "item.create.builders_tea.tooltip": "BUILDERS TEA", "item.create.builders_tea.tooltip.summary": "하루를 시작하기에 좋은 음료입니다. _새로운 영감_을 줍니다.", "item.create.refined_radiance.tooltip": "REFINED RADIANCE", "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", + "item.create.refined_radiance.tooltip.condition1": "현재 개발 중", + "item.create.refined_radiance.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", + "item.create.shadow_steel.tooltip.condition1": "현재 개발 중", + "item.create.shadow_steel.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.", "item.create.linked_controller.tooltip": "LINKED CONTROLLER", "item.create.linked_controller.tooltip.summary": "_여섯_ _버튼_으로 _레드스톤_ _링크_와 연결되는 _휴대용_ _조작기_입니다.", @@ -1538,17 +1528,6 @@ "block.create.haunted_bell.tooltip.condition1": "들고 있거나 종을 울릴 때", "block.create.haunted_bell.tooltip.behaviour1": "_적대적_ _몹_이 생성되는 _빛이_ _없는_ 자리를 표시합니다.", - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "Use at your own risk.", - "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", "_": "->------------------------] Ponder Content [------------------------<-", @@ -1569,41 +1548,41 @@ "create.ponder.categories": "Create에서 둘러볼 수 있는 목록들", "create.ponder.index_description": "아이콘을 클릭해 관련 아이템과 블록에 대해 알아볼 수 있습니다.", "create.ponder.index_title": "분석 메뉴 제목", - "create.ponder.shared.movement_anchors": "섀시나 강력 접착제를 이용해 큰 구조물도 옮길 수 있습니다.", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "웅크리기 +", - "create.ponder.shared.storage_on_contraption": "구조물에 부착된 보관함은 구조물이 떨어뜨린 아이템을 자동으로 줍습니다.", + "create.ponder.shared.rpm16": "16 RPM", "create.ponder.shared.behaviour_modify_wrench": "이 기능은 렌치를 이용해 변경할 수 있습니다.", + "create.ponder.shared.storage_on_contraption": "구조물에 부착된 보관함은 구조물이 떨어뜨린 아이템을 자동으로 줍습니다.", + "create.ponder.shared.sneak_and": "웅크리기 +", "create.ponder.shared.rpm8": "8 RPM", "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 RPM", "create.ponder.shared.rpm16_source": "기본 속도: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "동력 생산", - "create.ponder.tag.kinetic_sources.description": "동력을 생산하는 장치입니다.", - "create.ponder.tag.contraption_actor": "구조물 장치", - "create.ponder.tag.contraption_actor.description": "움직이는 구조물에 부착되어 특정 기능을 수행하는 장치입니다.", - "create.ponder.tag.arm_targets": "기계 팔의 목표 대상", - "create.ponder.tag.arm_targets.description": "기계 팔이 가져가거나 놓을 곳으로 선택할 수 있는 부품입니다.", - "create.ponder.tag.logistics": "아이템 수송", - "create.ponder.tag.logistics.description": "아이템을 옮기는데 도움을 줄 부품입니다.", - "create.ponder.tag.movement_anchor": "이동 고정장치", - "create.ponder.tag.movement_anchor.description": "부착된 구조물을 다양한 방법으로 움직이게하는 장치입니다.", - "create.ponder.tag.creative": "크리에이티브 모드", - "create.ponder.tag.creative.description": "서바이벌 모드에서는 얻을 수 없는 부품입니다.", - "create.ponder.tag.kinetic_relays": "동력 부품", - "create.ponder.tag.kinetic_relays.description": "동력을 다른 곳으로 연결할 때 도움을 주는 부품입니다.", - "create.ponder.tag.windmill_sails": "풍차 베어링의 날개", - "create.ponder.tag.windmill_sails.description": "조립되었을 때 풍차 구조물의 동력에 영향을 주는 블록들입니다. 이 블록들은 동일한 효율을 가집니다.", - "create.ponder.tag.contraption_assembly": "블록 부착 도구", - "create.ponder.tag.contraption_assembly.description": "블록들을 이어 구조물로 만들게해주는 도구와 부품입니다.", - "create.ponder.tag.decoration": "장식", - "create.ponder.tag.decoration.description": "주로 장식 용도로 쓰이는 부품입니다.", - "create.ponder.tag.kinetic_appliances": "동력 장치", - "create.ponder.tag.kinetic_appliances.description": "동력을 사용하는 장치입니다.", + "create.ponder.shared.movement_anchors": "섀시나 강력 접착제를 이용해 큰 구조물도 옮길 수 있습니다.", "create.ponder.tag.redstone": "레드스톤 부품", "create.ponder.tag.redstone.description": "레드스톤 공학에 쓰이는 부품입니다.", + "create.ponder.tag.contraption_assembly": "블록 부착 도구", + "create.ponder.tag.contraption_assembly.description": "블록들을 이어 구조물로 만들게해주는 도구와 부품입니다.", "create.ponder.tag.fluids": "액체 조정", "create.ponder.tag.fluids.description": "액체를 나르고 사용하는 장치입니다.", + "create.ponder.tag.decoration": "장식", + "create.ponder.tag.decoration.description": "주로 장식 용도로 쓰이는 부품입니다.", + "create.ponder.tag.windmill_sails": "풍차 베어링의 날개", + "create.ponder.tag.windmill_sails.description": "조립되었을 때 풍차 구조물의 동력에 영향을 주는 블록들입니다. 이 블록들은 동일한 효율을 가집니다.", + "create.ponder.tag.arm_targets": "기계 팔의 목표 대상", + "create.ponder.tag.arm_targets.description": "기계 팔이 가져가거나 놓을 곳으로 선택할 수 있는 부품입니다.", + "create.ponder.tag.kinetic_appliances": "동력 장치", + "create.ponder.tag.kinetic_appliances.description": "동력을 사용하는 장치입니다.", + "create.ponder.tag.kinetic_sources": "동력 생산", + "create.ponder.tag.kinetic_sources.description": "동력을 생산하는 장치입니다.", + "create.ponder.tag.movement_anchor": "이동 고정장치", + "create.ponder.tag.movement_anchor.description": "부착된 구조물을 다양한 방법으로 움직이게하는 장치입니다.", + "create.ponder.tag.kinetic_relays": "동력 부품", + "create.ponder.tag.kinetic_relays.description": "동력을 다른 곳으로 연결할 때 도움을 주는 부품입니다.", + "create.ponder.tag.contraption_actor": "구조물 장치", + "create.ponder.tag.contraption_actor.description": "움직이는 구조물에 부착되어 특정 기능을 수행하는 장치입니다.", + "create.ponder.tag.creative": "크리에이티브 모드", + "create.ponder.tag.creative.description": "서바이벌 모드에서는 얻을 수 없는 부품입니다.", + "create.ponder.tag.logistics": "아이템 수송", + "create.ponder.tag.logistics.description": "아이템을 옮기는데 도움을 줄 부품입니다.", "create.ponder.adjustable_pulse_repeater.header": "가변 펄스 중계기를 이용해 신호 조절하기", "create.ponder.adjustable_pulse_repeater.text_1": "가변 펄스 중계기는 딜레이 이후 짧은 신호를 보냅니다.", @@ -2158,6 +2137,16 @@ "create.ponder.piston_pole.text_1": "연장 축이 없으면, 기계식 피스톤은 움직일 수 없습니다.", "create.ponder.piston_pole.text_2": "연장 축의 수가 곧 피스톤이 연장할 수 있는 거리입니다.", + "create.ponder.portable_fluid_interface.header": "구조물 장치의 액체 교환", + "create.ponder.portable_fluid_interface.text_1": "움직이는 구조물의 액체 탱크는 파이프와 연결되지 않습니다.", + "create.ponder.portable_fluid_interface.text_2": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.", + "create.ponder.portable_fluid_interface.text_3": "두 번째 인터페이스를 1~2 블록 띄우고 설치하세요.", + "create.ponder.portable_fluid_interface.text_4": "서로를 마주칠 때마다, 접속을 시도합니다.", + "create.ponder.portable_fluid_interface.text_5": "접속한 상태에서, 블록 상태의 인터페이스는 장치의 모든 탱크와 동일합니다.", + "create.ponder.portable_fluid_interface.text_6": "액체를 넣을 수도 있고...", + "create.ponder.portable_fluid_interface.text_7": "...장치에서 액체를 뺄 수도 있습니다.", + "create.ponder.portable_fluid_interface.text_8": "일정 시간동안 액체가 교환되지 않으면, 장치는 움직입니다.", + "create.ponder.portable_storage_interface.header": "구조물 장치의 아이템 교환", "create.ponder.portable_storage_interface.text_1": "움직이는 장치의 보관함은 플레이어가 열 수 없습니다.", "create.ponder.portable_storage_interface.text_2": "아이템 인터페이스는 장치를 멈추지 않아도 장치 보관함과 상호작용할 수 있습니다.", @@ -2168,15 +2157,6 @@ "create.ponder.portable_storage_interface.text_7": "...장치에서 아이템을 뺄 수도 있습니다.", "create.ponder.portable_storage_interface.text_8": "일정 시간동안 아이템이 교환되지 않으면, 장치는 움직입니다.", - "create.ponder.portable_fluid_interface.header": "구조물 장치의 액체 교환", - "create.ponder.portable_fluid_interface.text_1": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.", - "create.ponder.portable_fluid_interface.text_3": "두 번째 인터페이스를 1~2 블록 띄우고 설치하세요.", - "create.ponder.portable_fluid_interface.text_4": "서로를 마주칠 때마다, 접속을 시도합니다.", - "create.ponder.portable_fluid_interface.text_5": "접속한 상태에서, 블록 상태의 인터페이스는 장치의 모든 탱크와 동일합니다.", - "create.ponder.portable_fluid_interface.text_6": "액체를 넣을 수도 있고...", - "create.ponder.portable_fluid_interface.text_7": "...장치에서 액체를 뺄 수도 있습니다.", - "create.ponder.portable_fluid_interface.text_8": "일정 시간동안 액체가 교환되지 않으면, 장치는 움직입니다.", - "create.ponder.portable_storage_interface_redstone.header": "레드스톤 설정", "create.ponder.portable_storage_interface_redstone.text_1": "레드스톤 신호를 받으면 인터페이스가 작동하지 않습니다.", @@ -2359,7 +2339,7 @@ "create.ponder.windmill_source.text_6": "베어링에 우클릭하면 멈추고, 구조물을 수정할 수 있게 됩니다", "create.ponder.windmill_structure.header": "풍차 구조물", - "create.ponder.windmill_structure.text_1": "최소 8개 이상의 날개 블록이 있는 구조물만 풍차로 사용할 수 있습니다.", - + "create.ponder.windmill_structure.text_1": "최소 8개 이상의 날개 블록이 있는 구조물만 풍차로 사용할 수 있습니다.", + "_": "Thank you for translating Create!" } From 91ba2780e7ba2202817680335265ac23a5be5907 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 20 Nov 2021 13:57:12 +0100 Subject: [PATCH 08/26] Post-PR Datagen - move pt_br to correct location - bump version --- build.gradle | 2 +- gradle.properties | 8 +- src/generated/resources/.cache/cache | 10 +- .../assets/create/lang/unfinished/es_es.json | 80 +- .../assets/create/lang/unfinished/ja_jp.json | 152 +- .../assets/create/lang/unfinished/ko_kr.json | 174 +- .../assets/create/lang/unfinished/pt_br.json | 1729 ++++++++++++++++- .../assets/create/lang/unfinished/zh_cn.json | 100 +- src/main/java/com/simibubi/create/Create.java | 2 +- src/main/resources/META-INF/mods.toml | 2 +- .../resources/assets/create/lang/pt_br.json | 195 +- 11 files changed, 2169 insertions(+), 285 deletions(-) diff --git a/build.gradle b/build.gradle index d8cd566cd..3a70a44ec 100644 --- a/build.gradle +++ b/build.gradle @@ -149,7 +149,7 @@ dependencies { runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:${jei_version}") // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") - implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta12.1") + implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta25") // i'll leave this here commented for easier testing diff --git a/gradle.properties b/gradle.properties index 861b6fc61..01b064cd0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.3.2f +mod_version = 0.3.2g minecraft_version = 1.16.5 -forge_version = 36.2.0 +forge_version = 36.2.9 # build dependency versions forgegradle_version = 4.1.+ @@ -16,8 +16,8 @@ cursegradle_version = 1.4.0 # dependency versions registrate_version = 1.0.10 -flywheel_version = 1.16-0.2.3.44 -jei_version = 7.7.1.116 +flywheel_version = 1.16-0.2.4.52 +jei_version = 7.7.1.137 # curseforge information projectId = 328085 diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 58d8d748c..b43c2f8b2 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -444,16 +444,16 @@ b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 5ae77ed97ee05a7ed98999178677e576c1140007 assets/create/lang/en_ud.json 5a7c0c3ea8d5fe01289b4eb2ea4f175bad825672 assets/create/lang/en_us.json 474dbefbecbec7e8e5969d7226a8c8a0c7a75325 assets/create/lang/unfinished/de_de.json -4d0c0f13e5447af9103b50e9ed845590634a8133 assets/create/lang/unfinished/es_es.json +800b427fc2e4f3b71df9c6295e500d77e8c1d486 assets/create/lang/unfinished/es_es.json 5ad47cb60df592b461672e224dfb89167f8861e1 assets/create/lang/unfinished/fr_fr.json 216065d27084497ffed7cacddfe86cab542643d9 assets/create/lang/unfinished/it_it.json -e74e7450bb11ebe75b14630ea500a442c90d5d55 assets/create/lang/unfinished/ja_jp.json -29bf73836a76028d8eaef57bec7331b7f8df5fc3 assets/create/lang/unfinished/ko_kr.json +b49281c01feadc475c6a4b37ae7b6cff4fe5dd84 assets/create/lang/unfinished/ja_jp.json +e2b22c3cef3a13623b21fbe0ba351249b4881fbc assets/create/lang/unfinished/ko_kr.json 1c9e4860d53f73ce8eb9c3e6667e934cdea4e14b assets/create/lang/unfinished/nl_nl.json b6df7f191d82be94ab0930d25978eb732df5b7ab assets/create/lang/unfinished/pl_pl.json -e5864d2f956b2bd44ef4832e81c9262d3574fa0d assets/create/lang/unfinished/pt_br.json +038f07272c0b1536a0aa210efcf80712df69d098 assets/create/lang/unfinished/pt_br.json ee8a147e1e86c1163a21452b5ea90d9d89dd3b09 assets/create/lang/unfinished/ru_ru.json -ed48c2e55f86cbc6005b2c222f0a5d6a01e996ad assets/create/lang/unfinished/zh_cn.json +eec641484da89c1ee2906318ed3cc08d605f354b assets/create/lang/unfinished/zh_cn.json dca24cfe0020830653e191b03fdd0400c890be1f 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 diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 183c73ff2..667dc101a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 39", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -31,13 +31,13 @@ "block.create.black_nixie_tube": "Tubo Nixie negro", "block.create.black_sail": "Vela negra", "block.create.black_seat": "Asiento negro", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", + "block.create.black_toolbox": "Caja de herramientas negra", "block.create.black_valve_handle": "Asa de válvula negra", "block.create.blaze_burner": "Quemador de Blaze", "block.create.blue_nixie_tube": "Tubo Nixie azul", "block.create.blue_sail": "Vela azul", "block.create.blue_seat": "Asiento azul", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", + "block.create.blue_toolbox": "Caja de herramientas azul", "block.create.blue_valve_handle": "Asa de válvula azul", "block.create.brass_belt_funnel": "Embudo de cinta de latón", "block.create.brass_block": "Bloque de latón", @@ -48,7 +48,7 @@ "block.create.brown_nixie_tube": "Tubo Nixie marrón", "block.create.brown_sail": "Vela marrón", "block.create.brown_seat": "Asiento marrón", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", + "block.create.brown_toolbox": "Caja de herramientas marrón", "block.create.brown_valve_handle": "Asa de válvula marrón", "block.create.cart_assembler": "Ensamblador de vagonetas", "block.create.chiseled_dark_scoria": "Escoria oscura cincelada", @@ -82,7 +82,7 @@ "block.create.cyan_nixie_tube": "Tubo Nixie cian", "block.create.cyan_sail": "Vela cian", "block.create.cyan_seat": "Asiento cian", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", + "block.create.cyan_toolbox": "Caja de herramientas cian", "block.create.cyan_valve_handle": "Asa de válvula cian", "block.create.dark_oak_window": "Ventana de roble oscuro", "block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro", @@ -190,12 +190,12 @@ "block.create.gray_nixie_tube": "Tubo Nixie gris", "block.create.gray_sail": "Vela gris", "block.create.gray_seat": "Asiento gris", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", + "block.create.gray_toolbox": "Caja de herramientas gris", "block.create.gray_valve_handle": "Asa de válvula gris", "block.create.green_nixie_tube": "Tubo Nixie verde", "block.create.green_sail": "Vela verde", "block.create.green_seat": "Asiento verde", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", + "block.create.green_toolbox": "Caja de herramientas verde", "block.create.green_valve_handle": "Asa de válvula verde", "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Campana encantada", @@ -220,17 +220,17 @@ "block.create.light_blue_nixie_tube": "Tubo Nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", "block.create.light_blue_seat": "Asiento azul claro", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", + "block.create.light_blue_toolbox": "Caja de herramientas azul claro", "block.create.light_blue_valve_handle": "Asa de válvula azul claro", "block.create.light_gray_nixie_tube": "Tubo Nixie gris claro", "block.create.light_gray_sail": "Vela gris claro", "block.create.light_gray_seat": "Asiento gris claro", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", + "block.create.light_gray_toolbox": "Caja de herramientas gris claro", "block.create.light_gray_valve_handle": "Asa de válvula gris claro", "block.create.lime_nixie_tube": "Tubo Nixie lima", "block.create.lime_sail": "Vela lima", "block.create.lime_seat": "Asiento lima", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", + "block.create.lime_toolbox": "Caja de herramientas lima", "block.create.lime_valve_handle": "Asa de válvula lima", "block.create.limesand": "Arena caliza", "block.create.limestone": "Piedra caliza", @@ -248,7 +248,7 @@ "block.create.magenta_nixie_tube": "Tubo Nixie magenta", "block.create.magenta_sail": "Vela magenta", "block.create.magenta_seat": "Asiento magenta", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", + "block.create.magenta_toolbox": "Caja de herramientas magenta", "block.create.magenta_valve_handle": "Asa de válvula magenta", "block.create.mechanical_arm": "Brazo mecánico", "block.create.mechanical_bearing": "Rodamiento mecánico", @@ -282,7 +282,7 @@ "block.create.oak_window_pane": "Panel de ventana de roble", "block.create.orange_sail": "Vela naranja", "block.create.orange_seat": "Asiento naranja", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", + "block.create.orange_toolbox": "Caja de herramientas naranja", "block.create.orange_valve_handle": "Asa de válvula naranja", "block.create.ornate_iron_window": "Ventana de hierro ornamentada", "block.create.ornate_iron_window_pane": "Panel de ventana de hierro ornamentada", @@ -335,7 +335,7 @@ "block.create.pink_nixie_tube": "Tubo Nixie rosa", "block.create.pink_sail": "Vela rosa", "block.create.pink_seat": "Asiento rosa", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", + "block.create.pink_toolbox": "Caja de herramientas rosa", "block.create.pink_valve_handle": "Asa de válvula rosa", "block.create.piston_extension_pole": "Pértiga de extensión de pistón", "block.create.polished_dark_scoria": "Escoria oscura pulida", @@ -371,13 +371,13 @@ "block.create.purple_nixie_tube": "Tubo Nixie morado", "block.create.purple_sail": "Vela morada", "block.create.purple_seat": "Asiento morado", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", + "block.create.purple_toolbox": "Caja de herramientas púrpura", "block.create.purple_valve_handle": "Asa de válvula morada", "block.create.radial_chassis": "Chasis radial", "block.create.red_nixie_tube": "Tubo Nixie rojo", "block.create.red_sail": "Vela roja", "block.create.red_seat": "Asiento rojo", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", + "block.create.red_toolbox": "Caja de herramientas roja", "block.create.red_valve_handle": "Asa de válvula roja", "block.create.redstone_contact": "Contacto de redstone", "block.create.redstone_link": "Enlace de redstone", @@ -435,14 +435,14 @@ "block.create.white_nixie_tube": "Tubo Nixie blanco", "block.create.white_sail": "Vela blanca", "block.create.white_seat": "Asiento blanco", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", + "block.create.white_toolbox": "Caja de herramientas blanca", "block.create.white_valve_handle": "Asa de válvula blanco", "block.create.windmill_bearing": "Rodamiento del molino de viento", "block.create.wooden_bracket": "Soporte de madera para ejes", "block.create.yellow_nixie_tube": "Tubo Nixie amarillo", "block.create.yellow_sail": "Vela amarilla", "block.create.yellow_seat": "Asiento amarillo", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", + "block.create.yellow_toolbox": "Caja de herramientas amarilla", "block.create.yellow_valve_handle": "Asa de válvula amarillo", "block.create.zinc_block": "Bloque de zinc", "block.create.zinc_ore": "Mena de zinc", @@ -769,7 +769,7 @@ "create.recipe.assembly.repeat": "Repetir la secuencia %1$s veces", "create.recipe.assembly.junk": "Basura aleatoria", "create.recipe.processing.chance": "%1$s%% Chance", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.deploying.not_consumed": "No consumido", "create.recipe.heat_requirement.none": "No es necesario calentar", "create.recipe.heat_requirement.heated": "Calentado", "create.recipe.heat_requirement.superheated": "Súper-Calentado", @@ -798,7 +798,7 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menú de la Herramienta de Enfoque", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.toolbelt": "Acceder a las cajas de herramientas cercanas", "create.keyinfo.scrollup": "Simular usar la rueda del ratón hacia arriba (en el mundo)", "create.keyinfo.scrolldown": "Simular usar la rueda del ratón hacia abajo (en el mundo)", @@ -810,11 +810,11 @@ "create.gui.toolmenu.focusKey": "Mantén [%1$s] para enfocar", "create.gui.toolmenu.cycle": "[RUEDA DEL RATÓN] para el ciclo", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.toolbox.unequip": "Desequipar: %1$s", + "create.toolbox.outOfRange": "La caja de herramientas del objeto retenido no está en el rango", + "create.toolbox.detach": "Dejar de rastrear y conservar el objeto", + "create.toolbox.depositAll": "Devolver elementos a las cajas de herramientas cercanas", + "create.toolbox.depositBox": "Devolver elementos a la caja de herramientas", "create.gui.symmetryWand.mirrorType": "Espejado", "create.gui.symmetryWand.orientation": "Orientación", @@ -1062,14 +1062,14 @@ "create.item_attributes.placeable.inverted": "no se puede colocar", "create.item_attributes.consumable": "se puede comer", "create.item_attributes.consumable.inverted": "no se puede comer", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.fluid_container": "puede almacenar fluídos", + "create.item_attributes.fluid_container.inverted": "puede almacenar fluídos", "create.item_attributes.enchanted": "está encantado", "create.item_attributes.enchanted.inverted": "no está encantado", "create.item_attributes.max_enchanted": "está encantado en el nivel máximo", "create.item_attributes.max_enchanted.inverted": "no está encantado en el nivel máximo", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.renamed": "tiene un nombre personalizado", + "create.item_attributes.renamed.inverted": "no tiene un nombre personalizado", "create.item_attributes.damaged": "está dañado", "create.item_attributes.damaged.inverted": "no está dañado", "create.item_attributes.badly_damaged": "está muy dañado", @@ -1423,14 +1423,14 @@ "block.create.turntable.tooltip": "PLATAFORMA GIRATORIA", "block.create.turntable.tooltip.summary": "Convierte la _fuerza rotacional_ en un refinado mareo.", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", - "block.create.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "block.create.toolbox.tooltip": "CAJA DE HERRAMIENTAS", + "block.create.toolbox.tooltip.summary": "El compañero más querido de todo inventor. Mantiene una gran cantidad de 8 tipos de objetos diferentes.", + "block.create.toolbox.tooltip.condition1": "Cuando se recoge...", + "block.create.toolbox.tooltip.behaviour1": "Conserva el contenido del inventario.", + "block.create.toolbox.tooltip.condition2": "Cuando se coloca en el rango...", + "block.create.toolbox.tooltip.behaviour2": "Los jugadores cercanos pueden utilizar el enlace de teclas de la caja de herramientas para acceder a su contenido de forma remota.", + "block.create.toolbox.tooltip.condition3": "Cuando se hace clic derecho...", + "block.create.toolbox.tooltip.behaviour3": "Abre la interfaz del contenedor.", "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE ACOPIO", "block.create.stockpile_switch.tooltip.summary": "Activa una señal de redstone en función de la cantidad de _objetos almacenados_ en el _contenedor_ adjunto. Viene con un práctico filtro. A diferencia de un _comparador, el _interruptor de acopio_ permite la configuración de _umbrales_, a partir de los cuales se invierten las señales.", @@ -1439,10 +1439,10 @@ "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDO", "block.create.content_observer.tooltip.summary": "_Detecta objetos_ dentro de _contenedores_ y _transportadores_ que coincidan con un _filtro_ configurado. Mientras el _inventario_, la _cinta_ o la _canaleta_ observados _contengan_ un objeto que coincida, este componente emitirá una _señal de redstone_. Cuando un embudo observado _transfiere_ un objeto coincidente, este componente emitirá un _pulso de redstone_.", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "block.create.content_observer.tooltip.condition1": "Al observar un contenedor...", + "block.create.content_observer.tooltip.behaviour1": "Emite un pulso de Redstone mientras el contenedor observado tiene un contenido coincidente.", + "block.create.content_observer.tooltip.condition2": "Al observar un embudo...", + "block.create.content_observer.tooltip.behaviour2": "Emite un pulso de Redstone cuando se transfiere un objeto que coincide.", "block.create.adjustable_crate.tooltip": "CAJA AJUSTABLE", "block.create.adjustable_crate.tooltip.summary": "Este _contenedor de objetos_ permite el control manual de su capacidad. Puede contener hasta _16 pilas_ de cualquier objeto. Soporta _comparadores de redstone_.", 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 ef0ca16be..34a9f2688 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 48", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -31,13 +31,13 @@ "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", + "block.create.black_toolbox": "黒色の工具箱", "block.create.black_valve_handle": "黒色のバルブハンドル", "block.create.blaze_burner": "ブレイズバーナー", "block.create.blue_nixie_tube": "青色のニキシー管", "block.create.blue_sail": "青色の帆", "block.create.blue_seat": "青色のシート", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", + "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", "block.create.brass_belt_funnel": "真鍮のベルトファンネル", "block.create.brass_block": "真鍮ブロック", @@ -48,7 +48,7 @@ "block.create.brown_nixie_tube": "茶色のニキシー管", "block.create.brown_sail": "茶色の帆", "block.create.brown_seat": "茶色のシート", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", + "block.create.brown_toolbox": "茶色の工具箱", "block.create.brown_valve_handle": "茶色のバルブハンドル", "block.create.cart_assembler": "トロッコアセンブラ", "block.create.chiseled_dark_scoria": "模様入りのダークスコリア", @@ -82,7 +82,7 @@ "block.create.cyan_nixie_tube": "水色のニキシー管", "block.create.cyan_sail": "水色の帆", "block.create.cyan_seat": "水色のシート", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", + "block.create.cyan_toolbox": "水色の工具箱", "block.create.cyan_valve_handle": "水色のバルブハンドル", "block.create.dark_oak_window": "ダークオークの窓", "block.create.dark_oak_window_pane": "ダークオークの窓板", @@ -190,12 +190,12 @@ "block.create.gray_nixie_tube": "灰色のニキシー管", "block.create.gray_sail": "灰色の帆", "block.create.gray_seat": "灰色のシート", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", + "block.create.gray_toolbox": "灰色の工具箱", "block.create.gray_valve_handle": "灰色のバルブハンドル", "block.create.green_nixie_tube": "緑色のニキシー管", "block.create.green_sail": "緑色の帆", "block.create.green_seat": "緑色のシート", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", + "block.create.green_toolbox": "緑色の工具箱", "block.create.green_valve_handle": "緑色のバルブハンドル", "block.create.hand_crank": "ハンドクランク", "block.create.haunted_bell": "憑りつかれた鐘", @@ -220,17 +220,17 @@ "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", "block.create.light_blue_seat": "空色のシート", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", + "block.create.light_blue_toolbox": "空色の工具箱", "block.create.light_blue_valve_handle": "空色のバルブハンドル", "block.create.light_gray_nixie_tube": "薄灰色のニキシー管", "block.create.light_gray_sail": "薄灰色の帆", "block.create.light_gray_seat": "薄灰色のシート", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", + "block.create.light_gray_toolbox": "薄灰色の工具箱", "block.create.light_gray_valve_handle": "薄灰色のバルブハンドル", "block.create.lime_nixie_tube": "黄緑色のニキシー管", "block.create.lime_sail": "黄緑色の帆", "block.create.lime_seat": "黄緑色のシート", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", + "block.create.lime_toolbox": "黄緑色の工具箱", "block.create.lime_valve_handle": "黄緑色のバルブハンドル", "block.create.limesand": "石灰砕砂", "block.create.limestone": "石灰岩", @@ -248,7 +248,7 @@ "block.create.magenta_nixie_tube": "赤紫色のニキシー管", "block.create.magenta_sail": "赤紫色の帆", "block.create.magenta_seat": "赤紫色のシート", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", + "block.create.magenta_toolbox": "赤紫色の工具箱", "block.create.magenta_valve_handle": "赤紫色のバルブハンドル", "block.create.mechanical_arm": "メカニカルアーム", "block.create.mechanical_bearing": "メカニカルベアリング", @@ -282,7 +282,7 @@ "block.create.oak_window_pane": "オークの窓板", "block.create.orange_sail": "橙色の帆", "block.create.orange_seat": "橙色のシート", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", + "block.create.orange_toolbox": "橙色の工具箱", "block.create.orange_valve_handle": "橙色のバルブハンドル", "block.create.ornate_iron_window": "鉄の装飾ガラス", "block.create.ornate_iron_window_pane": "鉄の装飾ガラス板", @@ -335,7 +335,7 @@ "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", "block.create.pink_seat": "桃色のシート", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", + "block.create.pink_toolbox": "桃色の", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", "block.create.polished_dark_scoria": "磨かれたダークスコリア", @@ -371,13 +371,13 @@ "block.create.purple_nixie_tube": "紫色のニキシー管", "block.create.purple_sail": "紫色の帆", "block.create.purple_seat": "紫色のシート", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", + "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", + "block.create.red_toolbox": "赤色の工具箱", "block.create.red_valve_handle": "赤色のバルブハンドル", "block.create.redstone_contact": "レッドストーンコンタクト", "block.create.redstone_link": "レッドストーンリンク", @@ -435,14 +435,14 @@ "block.create.white_nixie_tube": "白色のニキシー管", "block.create.white_sail": "白色の帆", "block.create.white_seat": "白色のシート", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", + "block.create.white_toolbox": "白色の工具箱", "block.create.white_valve_handle": "白色のバルブハンドル", "block.create.windmill_bearing": "風車ベアリング", "block.create.wooden_bracket": "木製ブラケット", "block.create.yellow_nixie_tube": "黄色のニキシー管", "block.create.yellow_sail": "黄色の帆", "block.create.yellow_seat": "黄色のシート", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", + "block.create.yellow_toolbox": "黄色の工具箱", "block.create.yellow_valve_handle": "黄色のバルブハンドル", "block.create.zinc_block": "亜鉛ブロック", "block.create.zinc_ore": "亜鉛鉱石", @@ -483,7 +483,7 @@ "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", "item.create.crafting_blueprint": "クラフトブループリント", - "item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake", + "item.create.creative_blaze_cake": "クリエイティブブレイズケーキ", "item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石", "item.create.crushed_brass": "砕いた真鍮", "item.create.crushed_copper_ore": "砕いた銅鉱石", @@ -573,7 +573,7 @@ "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", "advancement.create.fan_lava": "地熱ファンヒーター", "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "風変りな洗濯機", + "advancement.create.fan_water": "風変わりな洗濯機", "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", "advancement.create.fan_smoke": "メカニカルふいご", "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", @@ -769,7 +769,7 @@ "create.recipe.assembly.repeat": "%1$s回繰り返す", "create.recipe.assembly.junk": "ランダムな仕損品", "create.recipe.processing.chance": "%1$s%%チャンス", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.deploying.not_consumed": "消費されない", "create.recipe.heat_requirement.none": "加熱不要", "create.recipe.heat_requirement.heated": "加熱が必要", "create.recipe.heat_requirement.superheated": "極度の加熱が必要", @@ -798,7 +798,7 @@ "create.action.discard": "捨てる", "create.keyinfo.toolmenu": "ツールメニューをフォーカスする", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.toolbelt": "近くの工具箱にアクセス", "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", @@ -810,11 +810,11 @@ "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", "create.gui.toolmenu.cycle": "[スクロール] で循環", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.toolbox.unequip": "装備解除: %1$s", + "create.toolbox.outOfRange": "範囲内に工具箱がありません", + "create.toolbox.detach": "アイテムの追跡をやめて所持する", + "create.toolbox.depositAll": "近くの工具箱にアイテムを戻す", + "create.toolbox.depositBox": "工具箱にアイテムを戻す", "create.gui.symmetryWand.mirrorType": "ミラーの種類", "create.gui.symmetryWand.orientation": "方向", @@ -1054,42 +1054,42 @@ "create.gui.filter.allow_list": "ホワイトリスト", "create.gui.filter.allow_list.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。空のホワイトリストはすべてを拒否します。", "create.gui.filter.respect_data": "データを重視", - "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", + "create.gui.filter.respect_data.description": "アイテムは、耐久値、エンチャント、その他の属性も一致する場合にのみ一致します。", "create.gui.filter.ignore_data": "データを無視", "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", - "create.item_attributes.placeable": "設置可能か", - "create.item_attributes.placeable.inverted": "設置不可能か", + "create.item_attributes.placeable": "設置できるかか", + "create.item_attributes.placeable.inverted": "設置できないか", "create.item_attributes.consumable": "食べられるか", "create.item_attributes.consumable.inverted": "食べられないか", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.fluid_container": "液体を貯蔵できるか", + "create.item_attributes.fluid_container.inverted": "液体を貯蔵できないか", "create.item_attributes.enchanted": "エンチャント済みか", "create.item_attributes.enchanted.inverted": "エンチャントなしか", "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.renamed": "名前付きか", + "create.item_attributes.renamed.inverted": "名前付きでないか", "create.item_attributes.damaged": "破損してるか", "create.item_attributes.damaged.inverted": "破損していないか", "create.item_attributes.badly_damaged": "ひどく損傷してるか", "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", - "create.item_attributes.not_stackable": "スタック可能か", - "create.item_attributes.not_stackable.inverted": "スタック不可能か", - "create.item_attributes.equipable": "装備可能か", - "create.item_attributes.equipable.inverted": "装備不可能か", + "create.item_attributes.not_stackable": "スタックできるかか", + "create.item_attributes.not_stackable.inverted": "スタックできないか", + "create.item_attributes.equipable": "装備できるかか", + "create.item_attributes.equipable.inverted": "装備できないか", "create.item_attributes.furnace_fuel": "かまどの燃料か", "create.item_attributes.furnace_fuel.inverted": "かまどの燃料でないか", - "create.item_attributes.washable": "洗浄可能か", - "create.item_attributes.washable.inverted": "洗浄不可能か", - "create.item_attributes.crushable": "粉砕可能か", - "create.item_attributes.crushable.inverted": "粉砕不可能か", - "create.item_attributes.smeltable": "精錬可能か", - "create.item_attributes.smeltable.inverted": "精錬不可能か", - "create.item_attributes.smokable": "燻製器で調理可能か", - "create.item_attributes.smokable.inverted": "燻製器で調理不可能か", - "create.item_attributes.blastable": "溶鉱炉で精錬可能か", - "create.item_attributes.blastable.inverted": "溶鉱炉で精錬不可能か", + "create.item_attributes.washable": "洗浄できるかか", + "create.item_attributes.washable.inverted": "洗浄できないか", + "create.item_attributes.crushable": "粉砕できるかか", + "create.item_attributes.crushable.inverted": "粉砕できないか", + "create.item_attributes.smeltable": "精錬できるかか", + "create.item_attributes.smeltable.inverted": "精錬できないか", + "create.item_attributes.smokable": "燻製器で調理できるかか", + "create.item_attributes.smokable.inverted": "燻製器で調理できないか", + "create.item_attributes.blastable": "溶鉱炉で精錬できるかか", + "create.item_attributes.blastable.inverted": "溶鉱炉で精錬できないか", "create.item_attributes.shulker_level": "%1$sシュルカーか", "create.item_attributes.shulker_level.inverted": "%1$sシュルカーでないか", "create.item_attributes.shulker_level.full": "満杯の", @@ -1269,7 +1269,7 @@ "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", "create.subtitle.wrench_rotate": "レンチが使用される", - "create.subtitle.potato_hit": "野菜が衝突する", + "create.subtitle.potato_hit": "野菜の衝撃", "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", "create.subtitle.deployer_polish": "デプロイヤーが磨く", @@ -1347,7 +1347,7 @@ "item.create.potato_cannon.tooltip.condition1": "左クリックしたとき", "item.create.potato_cannon.tooltip.behaviour1": "_インベントリ_の中から_適切_なアイテムを発射します。", "item.create.potato_cannon.tooltip.condition2": "銅のバックタンクを装備した時", - "item.create.potato_cannon.tooltip.behaviour2": "_耐久性_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", + "item.create.potato_cannon.tooltip.behaviour2": "_耐久値_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", "item.create.filter.tooltip": "フィルター", "item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。", @@ -1423,14 +1423,14 @@ "block.create.turntable.tooltip": "ターンテーブル", "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", - "block.create.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", + "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", + "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", + "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", + "block.create.toolbox.tooltip.condition3": "左クリックした時", + "block.create.toolbox.tooltip.behaviour3": "_収納UI_を開きます", "block.create.stockpile_switch.tooltip": "在庫スイッチ", "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", @@ -1439,10 +1439,10 @@ "block.create.content_observer.tooltip": "コンテンツオブザーバー", "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察している_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "block.create.content_observer.tooltip.condition1": "収納ブロックを観察するとき", + "block.create.content_observer.tooltip.behaviour1": "観測するコンテナが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", + "block.create.content_observer.tooltip.condition2": "ファンネルを観察するとき", + "block.create.content_observer.tooltip.behaviour2": "_一致するアイテム_が_輸送_されると、_レッドストーンパルス_を発します。", "block.create.adjustable_crate.tooltip": "可変クレート", "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", @@ -1454,10 +1454,10 @@ "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", - "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", - "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", - "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", - "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", + "item.create.creative_blaze_cake.tooltip": "クリエイティブブレイズケーキ", + "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)だろう。", + "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを左クリックしたとき", + "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力をロックします。再度使用するとブレイズバーナーの火力を循環させます", "block.create.controller_rail.tooltip": "コントローラーレール", "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", @@ -1508,14 +1508,14 @@ "item.create.diving_boots.tooltip": "潜水ブーツ", "item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。", "item.create.diving_boots.tooltip.condition1": "装備したとき", - "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩行_と_ジャンプ_が可能になります。また、メカニカルベルトの影響を受けなくなります。", + "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩いたり_、_ジャンプ_したりできます。また、メカニカルベルトの影響を受けなくなります。", "item.create.crafting_blueprint.tooltip": "クラフトブループリント", "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業でのクラフトを簡単にできます。各スロットが1つのレシピを表しています。", - "item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot", - "item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", - "item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot", - "item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", + "item.create.crafting_blueprint.condition1": "空きスロットを左クリックしたとき", + "item.create.crafting_blueprint.behaviour1": "_レシピ_や表示するアイテムを_設定_できる_クラフトメニュー_を開きます。", + "item.create.crafting_blueprint.condition2": "設定済みスロットを左クリックしたとき", + "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定されたレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", "item.create.minecart_coupling.tooltip": "トロッコ連結器", "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", @@ -1523,7 +1523,7 @@ "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", "block.create.peculiar_bell.tooltip": "風変わりな鐘", - "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘。_魂の炎_の真上に置くと、別の使い方が見つかるかもしれません...", + "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", "block.create.haunted_bell.tooltip": "憑りつかれた鐘", "block.create.haunted_bell.tooltip.summary": "ネザーに彷徨う魂が宿る、呪われた鐘", @@ -1547,7 +1547,7 @@ "create.ponder.slow_text": "熟考(スロー再生)", "create.ponder.exit": "終了", "create.ponder.welcome": "思案画面へようこそ", - "create.ponder.categories": "Createで利用可能なカゴテリ", + "create.ponder.categories": "Createで閲覧できるカテゴリ", "create.ponder.index_description": "アイテムをクリックすると、関連するアイテムやブロックの情報が表示されます。", "create.ponder.index_title": "思案索引", "create.ponder.shared.rpm16": "16 RPM", @@ -1642,7 +1642,7 @@ "create.ponder.belt_directions.text_3": "2.斜め", "create.ponder.belt_directions.text_4": "3.垂直", "create.ponder.belt_directions.text_5": "4.垂直方向のシャフトを水平に", - "create.ponder.belt_directions.text_6": "これらはすべて接続可能な方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", + "create.ponder.belt_directions.text_6": "これらはすべて接続できる方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", @@ -1758,7 +1758,7 @@ "create.ponder.creative_fluid_tank.text_4": "クリエイティブ液体タンクに押し入れた液体は消滅します", "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", - "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで調整可能な原動機です", + "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで出力を調整できる原動機です", "create.ponder.creative_motor.text_2": "背面パネルを見ながらスクロールすると、モーターの回転速度を変更できます", "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", @@ -1945,7 +1945,7 @@ "create.ponder.hose_pulley.header": "ホースプーリーを使った液体の吸入・放出", "create.ponder.hose_pulley.text_1": "ホースプーリーは、大規模な液体の吸入や放出に使います", - "create.ponder.hose_pulley.text_2": "回転力の入出口はプーリーのホースの高さを変えるのに使います", + "create.ponder.hose_pulley.text_2": "回転力の出入口はプーリーのホースの高さを変えるのに使います", "create.ponder.hose_pulley.text_3": "回転方向を逆にするとプーリーが収納されます", "create.ponder.hose_pulley.text_4": "反対側にはパイプを接続できます", "create.ponder.hose_pulley.text_5": "接続された液体ネットワークはプーリーに液体を供給し、放出できます", @@ -2146,7 +2146,7 @@ "create.ponder.portable_fluid_interface.text_4": "すれ違ったときに必ず接続されます", "create.ponder.portable_fluid_interface.text_5": "接続中は、設置されている方のインターフェースはからくり内全てのタンクのように振る舞います", "create.ponder.portable_fluid_interface.text_6": "液体の搬入と...", - "create.ponder.portable_fluid_interface.text_7": "...搬出ができるます", + "create.ponder.portable_fluid_interface.text_7": "...搬出ができます", "create.ponder.portable_fluid_interface.text_8": "しばらく中身が出し入れされないと、このからくりはまた動き出します", "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", 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 0042ac488..8e744ff26 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,9 +1,9 @@ { - "_": "Missing Localizations: 63", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "아카시아 유리창", + "block.create.acacia_window": "아카시아나무 유리창", "block.create.acacia_window_pane": "아카시아나무 유리판 ", "block.create.adjustable_chain_gearshift": "벨트 변속기", "block.create.adjustable_crate": "가변 창고", @@ -31,13 +31,13 @@ "block.create.black_nixie_tube": "검은색 닉시관", "block.create.black_sail": "검은색 날개", "block.create.black_seat": "검은색 좌석", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", + "block.create.black_toolbox": "검은색 공구상자", "block.create.black_valve_handle": "검은색 밸브 손잡이", "block.create.blaze_burner": "블레이즈 버너", "block.create.blue_nixie_tube": "파란색 닉시관", "block.create.blue_sail": "파란색 날개", "block.create.blue_seat": "파란색 좌석", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", + "block.create.blue_toolbox": "파란색 공구상자", "block.create.blue_valve_handle": "파란색 밸브 손잡이", "block.create.brass_belt_funnel": "황동 퍼널", "block.create.brass_block": "황동 블록", @@ -48,7 +48,7 @@ "block.create.brown_nixie_tube": "갈색 닉시관", "block.create.brown_sail": "갈색 날개", "block.create.brown_seat": "갈색 좌석", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", + "block.create.brown_toolbox": "갈색 공구상자", "block.create.brown_valve_handle": "갈색 밸브 손잡이", "block.create.cart_assembler": "카트 조립기", "block.create.chiseled_dark_scoria": "조각된 짙은 스코리아", @@ -82,7 +82,7 @@ "block.create.cyan_nixie_tube": "청록색 닉시관", "block.create.cyan_sail": "청록색 날개", "block.create.cyan_seat": "청록색 좌석", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", + "block.create.cyan_toolbox": "청록색 공구상자", "block.create.cyan_valve_handle": "청록색 밸브 손잡이", "block.create.dark_oak_window": "짙은 참나무 유리창", "block.create.dark_oak_window_pane": "짙은 참나무 유리판", @@ -190,12 +190,12 @@ "block.create.gray_nixie_tube": "회색 닉시관", "block.create.gray_sail": "회색 날개", "block.create.gray_seat": "회색 좌석", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", + "block.create.gray_toolbox": "회색 공구상자", "block.create.gray_valve_handle": "회색 밸브 손잡이", "block.create.green_nixie_tube": "초록색 닉시관", "block.create.green_sail": "초록색 날개", "block.create.green_seat": "초록색 좌석", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", + "block.create.green_toolbox": "초록색 공구상자", "block.create.green_valve_handle": "초록색 밸브 손잡이", "block.create.hand_crank": "핸드 크랭크", "block.create.haunted_bell": "귀신들린 종", @@ -217,20 +217,20 @@ "block.create.layered_scoria": "이어지는 스코리아", "block.create.layered_weathered_limestone": "이어지는 풍화된 석회암", "block.create.lectern_controller": "독서대 조작기", - "block.create.light_blue_nixie_tube": "하늘핵 닉시관", + "block.create.light_blue_nixie_tube": "하늘색 닉시관", "block.create.light_blue_sail": "하늘색 날개", "block.create.light_blue_seat": "하늘색 좌석", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", + "block.create.light_blue_toolbox": "하늘색 공구상자", "block.create.light_blue_valve_handle": "하늘색 밸브 손잡이", "block.create.light_gray_nixie_tube": "회백색 닉시관", "block.create.light_gray_sail": "회백색 날개", "block.create.light_gray_seat": "회백색 좌석", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", + "block.create.light_gray_toolbox": "회백색 공구상자", "block.create.light_gray_valve_handle": "회백색 밸브 손잡이", "block.create.lime_nixie_tube": "연두색 닉시관", "block.create.lime_sail": "연두색 날개", "block.create.lime_seat": "연두색 좌석", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", + "block.create.lime_toolbox": "연두색 공구상자", "block.create.lime_valve_handle": "연두색 밸브 손잡이", "block.create.limesand": "석회모래", "block.create.limestone": "석회암", @@ -248,7 +248,7 @@ "block.create.magenta_nixie_tube": "자홍색 닉시관", "block.create.magenta_sail": "자홍색 날개", "block.create.magenta_seat": "자홍색 좌석", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", + "block.create.magenta_toolbox": "자홍색 공구상자", "block.create.magenta_valve_handle": "자홍색 밸브 손잡이", "block.create.mechanical_arm": "기계 팔", "block.create.mechanical_bearing": "베어링", @@ -282,7 +282,7 @@ "block.create.oak_window_pane": "참나무 유리판", "block.create.orange_sail": "주황색 날개", "block.create.orange_seat": "주황색 좌석", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", + "block.create.orange_toolbox": "주황색 공구상자", "block.create.orange_valve_handle": "주황색 밸브 손잡이", "block.create.ornate_iron_window": "장식된 철 유리창", "block.create.ornate_iron_window_pane": "장식된 철 유리판", @@ -335,7 +335,7 @@ "block.create.pink_nixie_tube": "분홍색 닉시관", "block.create.pink_sail": "분홍색 날개", "block.create.pink_seat": "분홍색 좌석", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", + "block.create.pink_toolbox": "분홍색 공구상자", "block.create.pink_valve_handle": "분홍색 밸브 손잡이", "block.create.piston_extension_pole": "피스톤 연장 축", "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", @@ -368,16 +368,16 @@ "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", "block.create.pulley_magnet": "도르래 자석", "block.create.pulse_repeater": "펄스 중계기", - "block.create.purple_nixie_tube": "보라샥 닉시관", + "block.create.purple_nixie_tube": "보라색 닉시관", "block.create.purple_sail": "보라색 날개", "block.create.purple_seat": "보라색 좌석", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", + "block.create.purple_toolbox": "보라색 공구상자", "block.create.purple_valve_handle": "보라색 밸브 손잡이", "block.create.radial_chassis": "원형 섀시", "block.create.red_nixie_tube": "빨간색 닉시관", "block.create.red_sail": "빨간색 날개", "block.create.red_seat": "빨간색 좌석", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", + "block.create.red_toolbox": "빨간색 공구상자", "block.create.red_valve_handle": "빨간색 밸브 손잡이", "block.create.redstone_contact": "동형 감지기", "block.create.redstone_link": "레드스톤 링크", @@ -435,14 +435,14 @@ "block.create.white_nixie_tube": "하얀색 닉시관", "block.create.white_sail": "하얀색 날개", "block.create.white_seat": "하얀색 좌석", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", + "block.create.white_toolbox": "하얀색 공구상자", "block.create.white_valve_handle": "하얀색 밸브 손잡이", "block.create.windmill_bearing": "풍차 베어링", "block.create.wooden_bracket": "나무 지지대", "block.create.yellow_nixie_tube": "노란색 닉시관", "block.create.yellow_sail": "노란색 날개", "block.create.yellow_seat": "노란색 좌석", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", + "block.create.yellow_toolbox": "노란색 공구상자", "block.create.yellow_valve_handle": "노란색 밸브 손잡이", "block.create.zinc_block": "아연 블록", "block.create.zinc_ore": "아연 광석", @@ -483,20 +483,20 @@ "item.create.copper_sheet": "구리 판", "item.create.crafter_slot_cover": "조합기 슬롯 덮개", "item.create.crafting_blueprint": "조합 청사진", - "item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake", - "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", + "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": "분쇄된 철 광석", - "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", - "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", - "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", - "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", - "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", - "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", - "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", - "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", + "item.create.crushed_lead_ore": "분쇄된 납 광석", + "item.create.crushed_nickel_ore": "분쇄된 니켈 광석", + "item.create.crushed_osmium_ore": "분쇄된 오스뮴 광석", + "item.create.crushed_platinum_ore": "분쇄된 플래티넘 광석", + "item.create.crushed_quicksilver_ore": "분쇄된 수은 광석", + "item.create.crushed_silver_ore": "분쇄된 은 광석", + "item.create.crushed_tin_ore": "분쇄된 주석 광석", + "item.create.crushed_uranium_ore": "분쇄된 우라늄 광석", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", "item.create.diving_boots": "다이빙 부츠", "item.create.diving_helmet": "다이빙 헬멧", @@ -548,7 +548,7 @@ "advancement.create.root": "Create!", "advancement.create.root.desc": "멋진 장치들을 창조할 시간입니다!", "advancement.create.andesite_alloy": "이게 합금?", - "advancement.create.andesite_alloy.desc": "암석으로도 합금을 만들 수 있나요?", + "advancement.create.andesite_alloy.desc": "돌로 합금을 만들 수 있나요?", "advancement.create.its_alive": "살아 움직이는", "advancement.create.its_alive.desc": "당신의 첫 장치가 움직입니다!", "advancement.create.shifting_gears": "톱니바퀴 돌리고!", @@ -594,7 +594,7 @@ "advancement.create.chocolate_wheel": "초콜릿바퀴", "advancement.create.chocolate_wheel.desc": "녹은 초콜릿으로 물레바퀴를 돌리세요.", "advancement.create.lava_wheel": "불레바퀴", - "advancement.create.lava_wheel.desc": "용암으로 물레바퀴를 회전하게 만드세ㅇ... 어?", + "advancement.create.lava_wheel.desc": "용암으로 물레바퀴를 회전하게 만드세... 어?", "advancement.create.cuckoo": "벌써 이렇게나 시간이 지났어?", "advancement.create.cuckoo.desc": "뻐꾸기 시계가 잘 시간을 알립니다. 잘 자...", "advancement.create.millstone": "나만의 작은 분쇄기", @@ -637,7 +637,7 @@ "advancement.create.chocolate.desc": "초콜릿 양동이를 얻으세요.", "advancement.create.item_drain": "회전 배수", "advancement.create.item_drain.desc": "아이템 배수구가 액체를 비우는 것을 보세요.", - "advancement.create.chained_item_drain": "구른다!", + "advancement.create.chained_item_drain": "데구르르 굴러가", "advancement.create.chained_item_drain.desc": "아이템이 여러 배수구 위를 굴러가는 것을 보세요.", "advancement.create.glass_pipe": "액체 엿보기", "advancement.create.glass_pipe.desc": "액체가 창이 달린 파이프를 지나는 것을 보세요. 직선 파이프를 렌치로 우클릭하면 창문이 생깁니다.", @@ -693,12 +693,12 @@ "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", "advancement.create.wand_of_symmetry": "빛나는 건축", "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.extendo_grip": "띠요오옹!", + "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": "쌍으로 외장형 연장 팔을 들어 인간을 뛰어넘은 사거리를 가지세요.", + "advancement.create.dual_extendo_grip": "띠요오오오오오오용!", + "advancement.create.dual_extendo_grip.desc": "양손에 외장형 연장 팔을 들어 초월적인 사거리를 가지세요.", "advancement.create.eob": "End of Beta", "advancement.create.eob.desc": "이후 업데이트를 기다려주세요. <3", @@ -712,7 +712,7 @@ "death.attack.create.crush.player": "%1$s이(가) %2$s 때문에 분쇄 휠에서 가공되었습니다", "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람에 익어버렸습니다", "death.attack.create.fan_fire.player": "%1$s이(가) %2$s 때문에 뜨거운 바람으로 익어버렸습니다", - "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 제가 되었습니다", + "death.attack.create.fan_lava": "%1$s이(가) 용암 바람에 재가 되었습니다", "death.attack.create.fan_lava.player": "%1$s이(가) %2$s 때문에 용암 바람으로 재가 되었습니다", "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", "death.attack.create.mechanical_drill.player": "%1$s이(가) %2$s 때문에 드릴에 관통당했습니다", @@ -744,7 +744,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", - "create.recipe.deploying": "UNLOCALIZED: Deploying", + "create.recipe.deploying": "Deploying", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -769,7 +769,7 @@ "create.recipe.assembly.repeat": "%1$s번 반복하기", "create.recipe.assembly.junk": "조립 실패한 조각들", "create.recipe.processing.chance": "%1$s%% 확률", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.deploying.not_consumed": "소모되지 않음", "create.recipe.heat_requirement.none": "열이 필요하지 않음", "create.recipe.heat_requirement.heated": "가열됨", "create.recipe.heat_requirement.superheated": "초고온 가열됨", @@ -798,7 +798,7 @@ "create.action.discard": "삭제", "create.keyinfo.toolmenu": "메뉴 세부정보 보기", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.toolbelt": "근처 공구상자 열기", "create.keyinfo.scrollup": "마우스 휠을 위로 이동 (인게임에서)", "create.keyinfo.scrolldown": "마우스 휠을 아래로 이동 (인게임에서)", @@ -810,11 +810,11 @@ "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", "create.gui.toolmenu.cycle": "스크롤로 순환", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.toolbox.unequip": "되돌리기: %1$s", + "create.toolbox.outOfRange": "현재 아이템은 공구상자와 너무 멀리있습니다", + "create.toolbox.detach": "공구상자와 연결 끊기", + "create.toolbox.depositAll": "근처 공구상자로 모든 아이템 되돌리기", + "create.toolbox.depositBox": "공구상자로 아이템 되돌리기", "create.gui.symmetryWand.mirrorType": "거울의 형태", "create.gui.symmetryWand.orientation": "거울의 방향", @@ -890,7 +890,7 @@ "create.logistics.firstFrequency": "주파수 #1", "create.logistics.secondFrequency": "주파수 #2", "create.logistics.filter.apply": "%1$s에 필터를 적용했습니다.", - "create.logistics.filter.apply_click_again": "%1$s에 필터를 적용했습니다. 다시 적용하면 가지고 있는 아이템의 수량을 복사하여 필터에 적용합니다.", + "create.logistics.filter.apply_click_again": "%1$s에 필터를 적용했습니다. 다시 클릭하면 가지고 있는 아이템의 수량을 복사하여 필터에 적용합니다.", "create.logistics.filter.apply_count": "필터에 수량을 적용했습니다.", "create.gui.goggles.generator_stats": "동력 상태:", @@ -1049,10 +1049,10 @@ "create.materialChecklist": "재료 목록", "create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러와지지 않아 재료 목록이 부정확할 수 있습니다.", - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", + "create.gui.filter.deny_list": "블랙리스트", + "create.gui.filter.deny_list.description": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", + "create.gui.filter.allow_list": "화이트리스트", + "create.gui.filter.allow_list.description": "위에 등록된 아이템만 통과할 수 있습니다. 빈 화이트리스트는 모든 아이템을 막습니다.", "create.gui.filter.respect_data": "상세정보 일치", "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", "create.gui.filter.ignore_data": "상세정보 무시", @@ -1062,14 +1062,14 @@ "create.item_attributes.placeable.inverted": "설치할 수 없음", "create.item_attributes.consumable": "먹을 수 있음", "create.item_attributes.consumable.inverted": "먹을 수 없음", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.fluid_container": "액체를 저장할 수 있음", + "create.item_attributes.fluid_container.inverted": "액체를 저장할 수 없음", "create.item_attributes.enchanted": "마법부여됨", "create.item_attributes.enchanted.inverted": "마법부여되지 않음", "create.item_attributes.max_enchanted": "마법부여가 최고 레벨임", "create.item_attributes.max_enchanted.inverted": "마법부여가 최고 레벨이 아님", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.renamed": "새로운 이름을 지어줌", + "create.item_attributes.renamed.inverted": "새로운 이름이 없음", "create.item_attributes.damaged": "내구도가 닮", "create.item_attributes.damaged.inverted": "내구도가 닳지 않음", "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", @@ -1225,14 +1225,14 @@ "create.hint.full_deployer.title": "배포기 아이템 과적", "create.hint.full_deployer": "이 _배포기_는 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "This is a sample overlay", + "create.gui.config.overlay3": "Click or drag with your mouse", + "create.gui.config.overlay4": "to move this preview", + "create.gui.config.overlay5": "Press ESC to exit this screen", + "create.gui.config.overlay6": "and save the new position", + "create.gui.config.overlay7": "Run /create overlay reset", + "create.gui.config.overlay8": "to reset to the default position", "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", @@ -1242,8 +1242,8 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "이 수레 구조물은 들기에 너무 큽니다", - "create.contraption.minecart_contraption_illegal_pickup": "신비로운 힘이 이 수레 구조물을 세계에 묶어두고 있습니다", + "create.contraption.minecart_contraption_too_big": "이 수레 구조물은 들기에 너무 큽니다!", + "create.contraption.minecart_contraption_illegal_pickup": "신비로운 힘이 이 수레 구조물을 세계에 묶어두고 있습니다!", "_": "->------------------------] Subtitles [------------------------<-", @@ -1423,14 +1423,14 @@ "block.create.turntable.tooltip": "TURNTABLE", "block.create.turntable.tooltip.summary": "_동력_으로 _멀미_를 일으킵니다.", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", - "block.create.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "block.create.toolbox.tooltip": "공구상자", + "block.create.toolbox.tooltip.summary": "모든 발명가의 가장 친한 동료입니다. _8가지 종류의_ 아이템을 편하게 _많이_ 저장할 수 있습니다.", + "block.create.toolbox.tooltip.condition1": "파괴했을 때", + "block.create.toolbox.tooltip.behaviour1": "아이템을 _떨어뜨리지 않습니다_.", + "block.create.toolbox.tooltip.condition2": "설치했을 때", + "block.create.toolbox.tooltip.behaviour2": "_근처 플레이어_가 _단축키_를 눌러 _원격으로_ 상자 속 아이템에 접근할 수 있습니다.", + "block.create.toolbox.tooltip.condition3": "우클릭했을 때", + "block.create.toolbox.tooltip.behaviour3": "창을 엽니다.", "block.create.stockpile_switch.tooltip": "stockpile_switch", "block.create.stockpile_switch.tooltip.summary": "붙어있는 _보관함_에 들어있는 아이템을 기반으로 레드스톤 신호를 보냅니다. 필터도 제공됩니다. _비교기_와 반대로, 수량 스위치는 신호가 반전되는 _임계점_을 조절할 수 있습니다.", @@ -1439,10 +1439,10 @@ "block.create.content_observer.tooltip": "CONTENT OBSERVER", "block.create.content_observer.tooltip.summary": "보관함이나 벨트의 아이템을 등록된 _필터_를 이용해 _탐지_합니다. _보관함, 벨트, 슈트_ 안에 해당 아이템을 탐지하는 동안, 레드스톤 신호를 보냅니다. _퍼널_가 해당 아이템을 수송하면, _1틱_의 레드스톤 신호를 보냅니다.", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "block.create.content_observer.tooltip.condition1": "보관함를 탐지할 때", + "block.create.content_observer.tooltip.behaviour1": "해당 보관함에 _필터 아이템_이 있는 동안 _레드스톤 신호_를 방출합니다.", + "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스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", @@ -1454,10 +1454,10 @@ "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", "block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.", - "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", - "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", - "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", - "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", + "item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE", + "item.create.creative_blaze_cake.tooltip.summary": "_블레이즈 버너_의 열 _세기를 조절할 수 있는_ 매우 특별한 케이크입니다. 이 케이크를 섭취한 블레이즈 버너는 _절대 꺼지지_ 않습니다.", + "item.create.creative_blaze_cake.tooltip.condition1": "블레이즈 버너에 우클릭", + "item.create.creative_blaze_cake.tooltip.behaviour1": "블레이즈 버너의 열 세기를 _고정_시킵니다. 다시 사용하면 블레이즈 버너의 열 세기를 _순환_합니다.", "block.create.controller_rail.tooltip": "CONTROLLER RAIL", "block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.", @@ -1474,13 +1474,13 @@ "item.create.refined_radiance.tooltip": "REFINED RADIANCE", "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", - "item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + "item.create.refined_radiance.tooltip.condition1": "현재 개발 중", + "item.create.refined_radiance.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", - "item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + "item.create.shadow_steel.tooltip.condition1": "현재 개발 중", + "item.create.shadow_steel.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.", "item.create.linked_controller.tooltip": "LINKED CONTROLLER", "item.create.linked_controller.tooltip.summary": "_여섯_ _버튼_으로 _레드스톤_ _링크_와 연결되는 _휴대용_ _조작기_입니다.", @@ -2140,8 +2140,8 @@ "create.ponder.piston_pole.text_2": "연장 축의 수가 곧 피스톤이 연장할 수 있는 거리입니다.", "create.ponder.portable_fluid_interface.header": "구조물 장치의 액체 교환", - "create.ponder.portable_fluid_interface.text_1": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.", - "create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption", + "create.ponder.portable_fluid_interface.text_1": "움직이는 구조물의 액체 탱크는 파이프와 연결되지 않습니다.", + "create.ponder.portable_fluid_interface.text_2": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.", "create.ponder.portable_fluid_interface.text_3": "두 번째 인터페이스를 1~2 블록 띄우고 설치하세요.", "create.ponder.portable_fluid_interface.text_4": "서로를 마주칠 때마다, 접속을 시도합니다.", "create.ponder.portable_fluid_interface.text_5": "접속한 상태에서, 블록 상태의 인터페이스는 장치의 모든 탱크와 동일합니다.", 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 ba2e42220..83a4a0c54 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,7 +1,10 @@ { - "_": "Missing Localizations: 1652", + "_": "Missing Localizations: 1537", "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "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", @@ -9,12 +12,23 @@ "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_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "Revestimento de Andesito", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_encased_shaft": "Eixo revestido com latão", "block.create.andesite_funnel": "Funil de Andesito", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "Tunel de Andesito", "block.create.basin": "Bacia", "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_sail": "Vela preta", "block.create.black_seat": "Assento preto", "block.create.black_toolbox": "Caixa de ferramentas preta", @@ -37,6 +51,12 @@ "block.create.brown_toolbox": "Caixa de ferramentas marrom", "block.create.brown_valve_handle": "Válvula marrom", "block.create.cart_assembler": "Montador de Carrinho de Mina", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chocolate": "Chocolate", "block.create.chute": "Calha", "block.create.clockwork_bearing": "Rolamento de relôgio", @@ -48,44 +68,125 @@ "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_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "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.crimson_window": "UNLOCALIZED: Crimson Window", + "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.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.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", + "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", + "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", + "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", + "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", "block.create.diorite_bricks": "Tijolos de Diorito", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", "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_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", "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", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "Cano de Fluido", "block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_valve": "Válvula", "block.create.flywheel": "Volante de inércia", + "block.create.framed_glass": "UNLOCALIZED: Framed Glass", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", "block.create.furnace_engine": "Motor de Fornalha", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Tijolos de Gabbro", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", "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.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", "block.create.gray_nixie_tube": "Tubo nixie cinza", "block.create.gray_sail": "Vela cinza", "block.create.gray_seat": "Assento cinza", @@ -99,9 +200,22 @@ "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Sino assombrado", "block.create.honey": "Mel", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "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.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", "block.create.large_cogwheel": "Roda Dentada Grande", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", "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", @@ -124,6 +238,10 @@ "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_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis Linear", "block.create.lit_blaze_burner": "Queimador de Blaze Acesso", @@ -144,15 +262,75 @@ "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.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", + "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Bocal", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", "block.create.orange_sail": "Vela laranja", "block.create.orange_seat": "Assento laranja", "block.create.orange_toolbox": "Caixa de ferramentas laranja", "block.create.orange_valve_handle": "Válvula laranja", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", "block.create.peculiar_bell": "Sino peculiar", "block.create.pink_nixie_tube": "Tubo nixie rosa", "block.create.pink_sail": "Vela rosa", @@ -160,13 +338,34 @@ "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_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", "block.create.polished_dolomite": "Dolomite Polido", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", "block.create.polished_gabbro": "Gabbro Polido", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", "block.create.polished_limestone": "Calcário Polido", "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", + "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", "block.create.polished_weathered_limestone": "Calcário Polido Resistido", "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", "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_repeater": "Repetidor de Pulso", "block.create.purple_nixie_tube": "Tubo nixie roxo", @@ -190,6 +389,16 @@ "block.create.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", "block.create.secondary_linear_chassis": "Chassis linear secundário", "block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.shadow_steel_casing": "Revestiment das Sombras", @@ -197,6 +406,9 @@ "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.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", @@ -204,13 +416,22 @@ "block.create.tiled_glass": "Vidro Entalhado", "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.turntable": "Mesa giratória", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.warped_window": "UNLOCALIZED: Warped Window", + "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", "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_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", "block.create.white_seat": "Assento branco", @@ -260,6 +481,7 @@ "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": "UNLOCALIZED: Crafter Slot Cover", "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", @@ -325,6 +547,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.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,18 +557,60 @@ "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.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", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "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": "UNLOCALIZED: Funnels' Flappy Danglers", "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.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.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.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", @@ -364,6 +629,78 @@ "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.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.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.blaze_cake": "UNLOCALIZED: Sugar Rush", + "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", + "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", + "advancement.create.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", "_": "->------------------------] UI & Messages [------------------------<-", @@ -385,7 +722,20 @@ "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.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.menu.return": "UNLOCALIZED: Return to Menu", + "create.menu.configure": "UNLOCALIZED: Configure...", + "create.menu.ponder_index": "UNLOCALIZED: Ponder Index", + "create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu", + "create.menu.project_page": "UNLOCALIZED: Project Page", + "create.menu.report_bugs": "UNLOCALIZED: Report Issues", + "create.menu.support": "UNLOCALIZED: Support Us", + "create.recipe.crushing": "Moendo", + "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", "create.recipe.fan_smoking": "Defumação em massa", @@ -395,7 +745,35 @@ "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", + "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", + "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "Compactando", + "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", + "create.recipe.sawing": "UNLOCALIZED: Sawing", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", + "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", + "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly", + "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", + "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", + "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", + "create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press", + "create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s", + "create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s", + "create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw", + "create.recipe.assembly.repeat": "UNLOCALIZED: Repeat Sequence %1$s Times", + "create.recipe.assembly.junk": "UNLOCALIZED: Random salvage", + "create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance", + "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", + "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", + "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", + "create.generic.range": "Área", "create.generic.radius": "Raio", "create.generic.width": "Largura", @@ -420,13 +798,24 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", + "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "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.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", + "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", + "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", + "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", + "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", + "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -440,17 +829,125 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", + + "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", + "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", + "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", + "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", + "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", + "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", + "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", + "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", + "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", + + "create.logistics.filter": "UNLOCALIZED: Filter", + "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", + "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", + "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", + "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "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", "create.gui.goggles.pole_length": "Comprimento da vara:", + "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", + "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", + "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", + "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", + "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", + "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "UNLOCALIZED: Adjustable Crate", + "create.gui.adjustable_crate.storageSpace": "UNLOCALIZED: Storage Space", + "create.gui.stockpile_switch.title": "UNLOCALIZED: Stockpile Switch", + "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", + "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", + "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", + "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", + "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Primeira posição feita.", "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", "create.schematicAndQuill.abort": "Seleção removida.", + "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", + "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", @@ -499,7 +996,12 @@ "create.schematics.synchronizing": "Sincronizando...", "create.schematics.uploadTooLarge": "Seu esquema é muito grande", "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", + + "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", + "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", "create.gui.schematicTable.title": "Mesa de Desenho", + "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", + "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Canhão de esquema", @@ -516,6 +1018,9 @@ "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", + "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", + "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", + "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", "create.gui.schematicannon.option.skipMissing.description": "Se o Canhão de esquema não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", "create.gui.schematicannon.option.skipTileEntities.description": "O Canhão de esquema vai evitar substituir blocos que contêm dados como Baus.", "create.gui.schematicannon.option.dontReplaceSolid.description": "O Canhão de esquema nunca irá substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", @@ -541,10 +1046,244 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", + "create.materialChecklist": "UNLOCALIZED: Material Checklist", + "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", + + "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", + "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", + "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", + "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", + "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", + "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", + "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", + "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", + "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", + "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", + "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", + "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", + "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", + "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", + "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", + "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", + "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", + "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", + "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", + "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", + "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", + "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", + "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", + "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", + "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", + "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", + "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", + "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", + "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", + "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", + "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", + "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", + "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", + "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", + "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", + "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", + "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.keyShift": "UNLOCALIZED: Shift", + "create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl", + "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", + "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", + "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", + "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", + "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", + "create.tooltip.stressImpact.high": "UNLOCALIZED: High", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", + "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", + "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", + "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", + "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", + + "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", + "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", + "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", + "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + + "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", + + "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", + "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", + + "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", + "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", + "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", + "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", + "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", + "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + + "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", + "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", + "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", + "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", + "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", + "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above", + "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", + "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", + "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", + "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", + + "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", + "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", + "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", + "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", + "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", + + "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", + "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", + "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", + "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", + "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", + "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", + "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", + + "create.potato_cannon.ammo.attack_damage": "UNLOCALIZED: %1$s Attack Damage", + "create.potato_cannon.ammo.reload_ticks": "UNLOCALIZED: %1$s Reload Ticks", + "create.potato_cannon.ammo.knockback": "UNLOCALIZED: %1$s Knockback", + + "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", + "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", + "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", + + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", + "create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world", "_": "->------------------------] Subtitles [------------------------<-", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.peculiar_bell_use": "UNLOCALIZED: Peculiar Bell tolls", + "create.subtitle.mixing": "UNLOCALIZED: Mixing noises", + "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", + "create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.crushing_1": "UNLOCALIZED: Crushing noises", + "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", + "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", + "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", + "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", + "create.subtitle.haunted_bell_use": "UNLOCALIZED: Haunted Bell tolls", + "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", + "create.subtitle.controller_put": "UNLOCALIZED: Controller thumps", + "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", + "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", + "create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts", + "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", + "create.subtitle.haunted_bell_convert": "UNLOCALIZED: Haunted Bell awakens", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", + "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", + "create.subtitle.controller_take": "UNLOCALIZED: Lectern empties", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", + "_": "->------------------------] Item Descriptions [------------------------<-", @@ -557,6 +1296,20 @@ "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", + "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", + "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", + + "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", + "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", + + "block.create.seat.tooltip": "UNLOCALIZED: SEAT", + "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", + "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", + "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", + + "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", + "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", + "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", @@ -568,11 +1321,48 @@ "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", + "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", + + "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", + "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", + "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_", @@ -598,28 +1388,961 @@ "block.create.schematicannon.tooltip": "Canhão de esquema", "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", + "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", + + "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", + "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", + "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", + "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", + "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.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", + "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", + "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", + "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", + "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", + "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", + "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "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.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", + "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ or _Fluids_ inside _containers_, _pipes_ or _conveyors_ matching a configured _filter_.", + "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", + "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", + "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", + "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "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.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", + "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", + "block.create.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", + "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", + "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", + "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", + + "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", + "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", + "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", + + "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", + "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", + + "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", + "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", + "item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress", + "item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", + "item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress", + "item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + + "item.create.linked_controller.tooltip": "UNLOCALIZED: LINKED CONTROLLER", + "item.create.linked_controller.tooltip.summary": "UNLOCALIZED: Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.", + "item.create.linked_controller.tooltip.condition1": "UNLOCALIZED: R-Click", + "item.create.linked_controller.tooltip.behaviour1": "UNLOCALIZED: _Toggles_ the controller. _Movement_ _controls_ are taken over while its active.", + "item.create.linked_controller.tooltip.condition2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.", + "item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver", + "item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.", + "item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern", + "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", + + "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", + + "item.create.copper_backtank.tooltip": "UNLOCALIZED: COPPER BACKTANK", + "item.create.copper_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.copper_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.copper_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + + "item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", + "item.create.diving_boots.tooltip.summary": "UNLOCALIZED: A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", + "item.create.diving_boots.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.diving_boots.tooltip.behaviour1": "UNLOCALIZED: Wielder _sinks_ _faster_ and _cannot_ _swim_. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", + + "item.create.crafting_blueprint.tooltip": "UNLOCALIZED: CRAFTING BLUEPRINT", + "item.create.crafting_blueprint.tooltip.summary": "UNLOCALIZED: _Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.", + "item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot", + "item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", + "item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot", + "item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", + + "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", + "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", + "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", + "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", + + "block.create.peculiar_bell.tooltip": "UNLOCALIZED: PECULIAR BELL", + "block.create.peculiar_bell.tooltip.summary": "UNLOCALIZED: A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may cause side-effects...", + + "block.create.haunted_bell.tooltip": "UNLOCALIZED: HAUNTED BELL", + "block.create.haunted_bell.tooltip.summary": "UNLOCALIZED: A _Cursed Bell_ haunted by lost souls of the Nether.", + "block.create.haunted_bell.tooltip.condition1": "UNLOCALIZED: When Held or Rang", + "block.create.haunted_bell.tooltip.behaviour1": "UNLOCALIZED: Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.", "_": "->------------------------] Ponder Content [------------------------<-", + "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", + "create.ponder.subject": "UNLOCALIZED: Subject of this scene", + "create.ponder.pondering": "UNLOCALIZED: Pondering about...", + "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", + "create.ponder.associated": "UNLOCALIZED: Associated Entries", + "create.ponder.close": "UNLOCALIZED: Close", + "create.ponder.identify": "UNLOCALIZED: Identify", + "create.ponder.next": "UNLOCALIZED: Next Scene", + "create.ponder.previous": "UNLOCALIZED: Previous Scene", + "create.ponder.replay": "UNLOCALIZED: Replay", + "create.ponder.think_back": "UNLOCALIZED: Think Back", + "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", + "create.ponder.exit": "UNLOCALIZED: Exit", + "create.ponder.welcome": "UNLOCALIZED: Welcome to Ponder", + "create.ponder.categories": "UNLOCALIZED: Available Categories in Create", + "create.ponder.index_description": "UNLOCALIZED: Click one of the icons to learn about its associated Items and Blocks", + "create.ponder.index_title": "UNLOCALIZED: Ponder Index", + "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", + "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", + "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", + "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", + "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", + "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", + "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", + "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", + "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", + "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", + "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", + "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", + "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", + "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", + "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", + "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", + "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", + "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", + "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", + "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", + "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", + "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", + "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", + "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", + "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", + "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", + "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", + "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", + "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", + "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", + "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", + "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", + "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", + "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", + "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", + + "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", + "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", + "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", + "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + + "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", + "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", + "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", + "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", + "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", + "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", + + "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", + "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", + "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", + "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", + + "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", + "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", + "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", + "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", + "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", + + "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", + "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", + "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", + "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", + "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", + "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", + "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", + "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", + "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", + "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", + + "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", + "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", + "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", + + "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", + "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", + "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", + + "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", + "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", + "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", + "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", + "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", + "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", + "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", + + "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", + "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", + "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", + "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", + "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", + "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", + "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", + + "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", + "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", + "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", + + "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", + "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", + "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", + "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", + "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", + + "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", + "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", + "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", + "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", + "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", + + "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", + "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", + "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", + "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", + "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", + "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", + "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", + "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", + "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", + + "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", + "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", + "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", + "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", + "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", + "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", + "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", + "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", + "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", + "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", + "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", + "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", + "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", + + "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", + "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", + "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", + "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", + + "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", + "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", + "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", + "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", + + "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", + "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", + "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front", + "create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", + + "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", + "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", + "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", + "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", + "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", + + "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", + "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", + "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", + "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", + + "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", + "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", + "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", + "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", + "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", + "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", + "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", + + "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", + "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", + "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", + "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", + + "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", + "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", + "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", + "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", + + "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", + "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", + "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", + "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", + "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", + "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", + "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", + "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", + "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", + + "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", + "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", + "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", + + "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", + "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", + "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", + "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", + + "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", + "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", + "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", + + "create.ponder.creative_fluid_tank.header": "UNLOCALIZED: Creative Fluid Tanks", + "create.ponder.creative_fluid_tank.text_1": "UNLOCALIZED: Creative Fluid Tanks can be used to provide a bottomless supply of fluid", + "create.ponder.creative_fluid_tank.text_2": "UNLOCALIZED: Right-Click with a fluid containing item to configure it", + "create.ponder.creative_fluid_tank.text_3": "UNLOCALIZED: Pipe Networks can now endlessly draw the assigned fluid from the tank", + "create.ponder.creative_fluid_tank.text_4": "UNLOCALIZED: Any Fluids pushed back into a Creative Fluid Tank will be voided", + + "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", + "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", + "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", + + "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", + "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", + "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", + "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", + "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", + + "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", + "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", + "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", + "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", + "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", + "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", + "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", + "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", + "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", + "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", + "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", + "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", + "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", + "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", + "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", + "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", + + "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", + "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", + "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", + "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", + + "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", + "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", + "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", + + "create.ponder.deployer_processing.header": "UNLOCALIZED: Processing Items using Deployers", + "create.ponder.deployer_processing.text_1": "UNLOCALIZED: With a fitting held item, Deployers can process items provided beneath them", + "create.ponder.deployer_processing.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Deployer", + "create.ponder.deployer_processing.text_3": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.deployer_processing.text_4": "UNLOCALIZED: The Deployer will hold and process them automatically", + + "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", + "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", + "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", + "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", + + "create.ponder.depot.header": "UNLOCALIZED: Using Depots", + "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", + "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", + "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", + "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", + + "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", + "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", + "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", + "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", + "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", + "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: The flame can be transformed using a soul-infused item", + "create.ponder.empty_blaze_burner.text_6": "UNLOCALIZED: However, without a blaze they are not suitable for industrial heating", + + "create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes", + "create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes", + "create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state", + "create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed", + + "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", + "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", + "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", + + "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", + "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", + "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", + "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", + "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", + "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", + "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", + "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", + "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", + + "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", + "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", + "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", + + "create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes", + "create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets", + "create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window", + "create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments", + "create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids", + "create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first", + "create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents", + "create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid", + + "create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers", + "create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks", + "create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained", + "create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...", + "create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources", + "create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly", + + "create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank", + "create.ponder.fluid_tank_sizes.text_1": "UNLOCALIZED: Fluid Tanks can be combined to increase the total capacity", + "create.ponder.fluid_tank_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.fluid_tank_sizes.text_3": "UNLOCALIZED: ...and grow in height by more than 30 additional layers", + "create.ponder.fluid_tank_sizes.text_4": "UNLOCALIZED: Using a Wrench, a tanks' window can be toggled", + + "create.ponder.fluid_tank_storage.header": "UNLOCALIZED: Storing Fluids in Fluid Tanks", + "create.ponder.fluid_tank_storage.text_1": "UNLOCALIZED: Fluid Tanks can be used to store large amounts of fluid", + "create.ponder.fluid_tank_storage.text_2": "UNLOCALIZED: Pipe networks can push and pull fluids from any side", + "create.ponder.fluid_tank_storage.text_3": "UNLOCALIZED: The contained fluid can be measured by a Comparator", + "create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually", + "create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items", + + "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", + "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", + "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", + "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", + + "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", + "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", + "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", + "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", + "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", + + "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", + "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", + "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", + "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", + "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", + "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", + + "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", + "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", + + "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", + "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", + + "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", + "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", + "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", + "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", + + "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", + "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", + "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", + "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", + + "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", + "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", + "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", + + "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", + "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", + "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", + "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", + + "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", + "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", + "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", + "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", + "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", + + "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", + "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", + "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", + + "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", + "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", + "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", + + "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", + "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", + "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", + "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", + "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", + + "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", + "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", + "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", + + "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", + "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", + "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", + "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", + "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", + + "create.ponder.hose_pulley.header": "UNLOCALIZED: Source Filling and Draining using Hose Pulleys", + "create.ponder.hose_pulley.text_1": "UNLOCALIZED: Hose Pulleys can be used to fill or drain large bodies of Fluid", + "create.ponder.hose_pulley.text_2": "UNLOCALIZED: With the Kinetic Input, the height of the pulleys' hose can be controlled", + "create.ponder.hose_pulley.text_3": "UNLOCALIZED: The Pulley retracts while the input rotation is inverted", + "create.ponder.hose_pulley.text_4": "UNLOCALIZED: On the opposite side, pipes can be connected", + "create.ponder.hose_pulley.text_5": "UNLOCALIZED: Attached pipe networks can either provide fluid to the hose...", + "create.ponder.hose_pulley.text_6": "UNLOCALIZED: ...or pull from it, draining the pool instead", + "create.ponder.hose_pulley.text_7": "UNLOCALIZED: Fill and Drain speed of the pulley depends entirely on the fluid networks' throughput", + + "create.ponder.hose_pulley_infinite.header": "UNLOCALIZED: Passively Filling and Draining large bodies of Fluid", + "create.ponder.hose_pulley_infinite.text_1": "UNLOCALIZED: When deploying the Hose Pulley into a large enough ocean...", + "create.ponder.hose_pulley_infinite.text_2": "UNLOCALIZED: It will provide/dispose fluids without affecting the source", + "create.ponder.hose_pulley_infinite.text_3": "UNLOCALIZED: Pipe networks can limitlessly take fluids from/to such pulleys", + + "create.ponder.hose_pulley_level.header": "UNLOCALIZED: Fill and Drain level of Hose Pulleys", + "create.ponder.hose_pulley_level.text_1": "UNLOCALIZED: While fully retracted, the Hose Pulley cannot operate", + "create.ponder.hose_pulley_level.text_2": "UNLOCALIZED: Draining runs from top to bottom", + "create.ponder.hose_pulley_level.text_3": "UNLOCALIZED: The surface level will end up just below where the hose ends", + "create.ponder.hose_pulley_level.text_4": "UNLOCALIZED: Filling runs from bottom to top", + "create.ponder.hose_pulley_level.text_5": "UNLOCALIZED: The filled pool will not grow beyond the layer above the hose end", + + "create.ponder.item_drain.header": "UNLOCALIZED: Emptying Fluid Containers using Item Drains", + "create.ponder.item_drain.text_1": "UNLOCALIZED: Item Drains can extract fluids from items", + "create.ponder.item_drain.text_2": "UNLOCALIZED: Right-click it to pour fluids from your held item into it", + "create.ponder.item_drain.text_3": "UNLOCALIZED: When items are inserted from the side...", + "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", + "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", + "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", + "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", + + "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", + "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", + "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", + "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", + "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", + "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", + "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", + "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", + "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", + + "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", + "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", + "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", + "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", + + "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", + "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", + "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", + "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", + "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", + "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", + "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", + "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", + "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", + + "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", + "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", + "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", + "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", + "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", + "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", + "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", + + "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", + "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", + "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", + "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", + "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", + "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", + "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", + "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", + "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", + "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", + + "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", + "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", + "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", + "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", + + "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", + "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", + "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", + + "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", + "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", + "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", + "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", + "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", + "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", + "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", + "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", + "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", + + "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", + "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", + "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", + "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", + + "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", + "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", + "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", + "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", + + "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", + "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", + "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", + + "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", + "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", + "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", + + "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", + "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", + "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", + + "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", + "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", + "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", + "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", + "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", + + "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", + "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", + "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", + "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", + + "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", + "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", + "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", + + "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", + "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", + "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", + "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", + "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", + + "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", + "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", + "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", + "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", + + "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", + "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", + "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", + "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", + "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", + + "create.ponder.mechanical_pump_flow.header": "UNLOCALIZED: Fluid Transportation using Mechanical Pumps", + "create.ponder.mechanical_pump_flow.text_1": "UNLOCALIZED: Mechanical Pumps govern the flow of their attached pipe networks", + "create.ponder.mechanical_pump_flow.text_2": "UNLOCALIZED: When powered, their arrow indicates the direction of flow", + "create.ponder.mechanical_pump_flow.text_3": "UNLOCALIZED: The network behind is now pulling fluids...", + "create.ponder.mechanical_pump_flow.text_4": "UNLOCALIZED: ...while the network in front is transferring it outward", + "create.ponder.mechanical_pump_flow.text_5": "UNLOCALIZED: Reversing the input rotation reverses the direction of flow", + "create.ponder.mechanical_pump_flow.text_6": "UNLOCALIZED: Use a Wrench to reverse the orientation of pumps manually", + + "create.ponder.mechanical_pump_speed.header": "UNLOCALIZED: Throughput of Mechanical Pumps", + "create.ponder.mechanical_pump_speed.text_1": "UNLOCALIZED: Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away", + "create.ponder.mechanical_pump_speed.text_2": "UNLOCALIZED: Speeding up the input rotation changes the speed of flow propagation...", + "create.ponder.mechanical_pump_speed.text_3": "UNLOCALIZED: ...aswell as how quickly fluids are transferred", + "create.ponder.mechanical_pump_speed.text_4": "UNLOCALIZED: Pumps can combine their throughputs within shared pipe networks", + "create.ponder.mechanical_pump_speed.text_5": "UNLOCALIZED: Alternating their orientation can help align their flow directions", + + "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", + "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", + "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", + + "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", + "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", + "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", + + "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", + "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", + "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", + "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", + "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", + "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", + + "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", + "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", + "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", + "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", + "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", + "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", + + "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", + "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", + "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", + "create.ponder.nixie_tube.text_3": "UNLOCALIZED: Right-Click with Dye to change their display colour", + + "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", + "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", + "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", + + "create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", + "create.ponder.portable_fluid_interface.text_1": "UNLOCALIZED: Fluid Tanks on moving contraptions cannot be accessed by any pipes", + "create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption", + "create.ponder.portable_fluid_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", + "create.ponder.portable_fluid_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", + "create.ponder.portable_fluid_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL Tanks on the contraption", + "create.ponder.portable_fluid_interface.text_6": "UNLOCALIZED: Fluid can now be inserted...", + "create.ponder.portable_fluid_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", + "create.ponder.portable_fluid_interface.text_8": "UNLOCALIZED: After no contents have been exchanged for a while, the contraption will continue on its way", + + "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", + "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", + "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", + "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", + "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", + "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", + "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", + "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", + "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", + + "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", + "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", + + "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", + "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", + "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", + "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", + "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", + + "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", + "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", + "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", + "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", + "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", + + "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", + "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", + + "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", + "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", + "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", + "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", + "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", + "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", + "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", + "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", + "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", + "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", + + "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", + "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", + "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", + + "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", + "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", + "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", + "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", + "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", + "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", + "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", + + "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", + "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", + "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", + + "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", + "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", + "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", + "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", + + "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", + "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", + "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", + + "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", + "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", + "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", + + "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", + "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", + "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", + "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", + "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", + + "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", + "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", + "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", + + "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", + "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", + "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", + "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", + "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", + "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", + + "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", + "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", + + "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", + "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", + + "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", + "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", + "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", + "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", + "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", + + "create.ponder.smart_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Smart Pipes", + "create.ponder.smart_pipe.text_1": "UNLOCALIZED: Smart pipes can help control flows by fluid type", + "create.ponder.smart_pipe.text_2": "UNLOCALIZED: When placed directly at the source, they can specify the type of fluid to extract", + "create.ponder.smart_pipe.text_3": "UNLOCALIZED: Simply Right-Click their filter slot with any item containing the desired fluid", + "create.ponder.smart_pipe.text_4": "UNLOCALIZED: When placed further down a pipe network, smart pipes will only let matching fluids continue", + + "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", + "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", + "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", + "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", + + "create.ponder.spout_filling.header": "UNLOCALIZED: Filling Items using a Spout", + "create.ponder.spout_filling.text_1": "UNLOCALIZED: The Spout can fill fluid holding items provided beneath it", + "create.ponder.spout_filling.text_2": "UNLOCALIZED: The content of a Spout cannot be accessed manually", + "create.ponder.spout_filling.text_3": "UNLOCALIZED: Instead, Pipes can be used to supply it with fluids", + "create.ponder.spout_filling.text_4": "UNLOCALIZED: The Input items can be placed on a Depot under the Spout", + "create.ponder.spout_filling.text_5": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.spout_filling.text_6": "UNLOCALIZED: The Spout will hold and process them automatically", + + "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", + "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", + "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", + "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", + "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", + + "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", + "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", + "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", + "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", + "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", + + "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", + "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", + "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", + "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", + + "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", + "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", + "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", + "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", + "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", + "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", + + "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", + "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", + "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", + "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", + "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", + "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", + + "create.ponder.valve_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Valves", + "create.ponder.valve_pipe.text_1": "UNLOCALIZED: Valve pipes help control fluids propagating through pipe networks", + "create.ponder.valve_pipe.text_2": "UNLOCALIZED: Their shaft input controls whether fluid is currently allowed through", + "create.ponder.valve_pipe.text_3": "UNLOCALIZED: Given Rotational Force in the opening direction, the valve will open up", + "create.ponder.valve_pipe.text_4": "UNLOCALIZED: It can be closed again by reversing the input rotation", + + "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", + "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", + "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", + "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", + "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", + + "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", + "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", + "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", + "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", + "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", + "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", + "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", + "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", + "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", + "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", + "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", + "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", + + "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", + "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", + "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", + + "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", + "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", + "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", + "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", + "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", + "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", + + "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", + "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", + "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", + "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", + "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", + "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", + "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", + + "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", + "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", + "_": "Thank you for translating Create!" -} +} \ No newline at end of file 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 6e15adb82..35e402507 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: 43", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -31,13 +31,13 @@ "block.create.black_nixie_tube": "黑色辉光管", "block.create.black_sail": "黑色风帆", "block.create.black_seat": "黑色坐垫", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", + "block.create.black_toolbox": "黑色工具箱", "block.create.black_valve_handle": "黑色阀门手轮", "block.create.blaze_burner": "烈焰人燃烧室", "block.create.blue_nixie_tube": "蓝色辉光管", "block.create.blue_sail": "蓝色风帆", "block.create.blue_seat": "蓝色坐垫", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", + "block.create.blue_toolbox": "蓝色工具箱", "block.create.blue_valve_handle": "蓝色阀门手轮", "block.create.brass_belt_funnel": "黄铜传送带漏斗", "block.create.brass_block": "黄铜块", @@ -48,7 +48,7 @@ "block.create.brown_nixie_tube": "棕色辉光管", "block.create.brown_sail": "棕色风帆", "block.create.brown_seat": "棕色坐垫", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", + "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色阀门手轮", "block.create.cart_assembler": "矿车装配站", "block.create.chiseled_dark_scoria": "錾制深色熔渣", @@ -82,7 +82,7 @@ "block.create.cyan_nixie_tube": "青色辉光管", "block.create.cyan_sail": "青色风帆", "block.create.cyan_seat": "青色坐垫", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", + "block.create.cyan_toolbox": "青色工具箱", "block.create.cyan_valve_handle": "青色阀门手轮", "block.create.dark_oak_window": "深色橡木窗户", "block.create.dark_oak_window_pane": "深色橡木窗户板", @@ -190,12 +190,12 @@ "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", + "block.create.gray_toolbox": "灰色工具箱", "block.create.gray_valve_handle": "灰色阀门手轮", "block.create.green_nixie_tube": "绿色辉光管", "block.create.green_sail": "绿色风帆", "block.create.green_seat": "绿色坐垫", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", + "block.create.green_toolbox": "绿色工具箱", "block.create.green_valve_handle": "绿色阀门手轮", "block.create.hand_crank": "手摇曲柄", "block.create.haunted_bell": "森魂钟", @@ -220,17 +220,17 @@ "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", "block.create.light_blue_seat": "淡蓝色坐垫", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", + "block.create.light_blue_toolbox": "淡蓝色工具箱", "block.create.light_blue_valve_handle": "淡蓝色阀门手轮", "block.create.light_gray_nixie_tube": "淡灰色辉光管", "block.create.light_gray_sail": "淡灰色风帆", "block.create.light_gray_seat": "淡灰色坐垫", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", + "block.create.light_gray_toolbox": "淡灰色工具箱", "block.create.light_gray_valve_handle": "淡灰色阀门手轮", "block.create.lime_nixie_tube": "黄绿色辉光管", "block.create.lime_sail": "黄绿色风帆", "block.create.lime_seat": "黄绿色坐垫", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", + "block.create.lime_toolbox": "黄绿色工具箱", "block.create.lime_valve_handle": "黄绿色阀门手轮", "block.create.limesand": "石灰沙", "block.create.limestone": "石灰岩", @@ -248,7 +248,7 @@ "block.create.magenta_nixie_tube": "品红色辉光管", "block.create.magenta_sail": "品红色风帆", "block.create.magenta_seat": "品红色坐垫", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", + "block.create.magenta_toolbox": "品红色工具箱", "block.create.magenta_valve_handle": "品红色阀门手轮", "block.create.mechanical_arm": "动力臂", "block.create.mechanical_bearing": "动力轴承", @@ -282,7 +282,7 @@ "block.create.oak_window_pane": "橡木窗户板", "block.create.orange_sail": "橙色风帆", "block.create.orange_seat": "橙色坐垫", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", + "block.create.orange_toolbox": "橙色工具箱", "block.create.orange_valve_handle": "橙色阀门手轮", "block.create.ornate_iron_window": "华丽铁窗户", "block.create.ornate_iron_window_pane": "华丽铁窗户板", @@ -335,7 +335,7 @@ "block.create.pink_nixie_tube": "粉红色辉光管", "block.create.pink_sail": "粉红色风帆", "block.create.pink_seat": "粉红色坐垫", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", + "block.create.pink_toolbox": "粉红色工具箱", "block.create.pink_valve_handle": "粉红色阀门手轮", "block.create.piston_extension_pole": "活塞杆", "block.create.polished_dark_scoria": "磨制深色熔渣", @@ -371,13 +371,13 @@ "block.create.purple_nixie_tube": "紫色辉光管", "block.create.purple_sail": "紫色风帆", "block.create.purple_seat": "紫色坐垫", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", + "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", + "block.create.red_toolbox": "红色工具箱", "block.create.red_valve_handle": "红色阀门手轮", "block.create.redstone_contact": "接触式红石信号发生器", "block.create.redstone_link": "无线红石信号终端", @@ -435,14 +435,14 @@ "block.create.white_nixie_tube": "白色辉光管", "block.create.white_sail": "白色风帆", "block.create.white_seat": "白色坐垫", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", + "block.create.white_toolbox": "白色工具箱", "block.create.white_valve_handle": "白色阀门手轮", "block.create.windmill_bearing": "风车轴承", "block.create.wooden_bracket": "木质支架", "block.create.yellow_nixie_tube": "黄色辉光管", "block.create.yellow_sail": "黄色风帆", "block.create.yellow_seat": "黄色坐垫", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", + "block.create.yellow_toolbox": "黄色工具箱", "block.create.yellow_valve_handle": "黄色阀门手轮", "block.create.zinc_block": "锌块", "block.create.zinc_ore": "锌矿石", @@ -769,7 +769,7 @@ "create.recipe.assembly.repeat": "该序列需要重复 %1$s 次", "create.recipe.assembly.junk": "随机废料", "create.recipe.processing.chance": "%1$s%%概率", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.deploying.not_consumed": "未消耗", "create.recipe.heat_requirement.none": "无需加热", "create.recipe.heat_requirement.heated": "加热", "create.recipe.heat_requirement.superheated": "超级加热", @@ -798,7 +798,7 @@ "create.action.discard": "放弃", "create.keyinfo.toolmenu": "工具菜单", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.toolbelt": "使用附近的工具箱", "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", @@ -810,11 +810,11 @@ "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", "create.gui.toolmenu.cycle": "[SCROLL] 循环", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.toolbox.unequip": "收回: %1$s", + "create.toolbox.outOfRange": "收纳物品的工具箱不在范围内", + "create.toolbox.detach": "停止追踪并保留物品", + "create.toolbox.depositAll": "把物品收回附近所有的工具箱", + "create.toolbox.depositBox": "把物品收回工具箱", "create.gui.symmetryWand.mirrorType": "镜子类型", "create.gui.symmetryWand.orientation": "方向", @@ -887,8 +887,8 @@ "create.logistics.filter": "过滤器", "create.logistics.recipe_filter": "配方过滤器", "create.logistics.fluid_filter": "流体过滤器", - "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", - "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", + "create.logistics.firstFrequency": "频率 #1", + "create.logistics.secondFrequency": "频率 #2", "create.logistics.filter.apply": "已将过滤应用于%1$s。", "create.logistics.filter.apply_click_again": "已将过滤应用于%1$s,再次点击可将手持物品数量复制到过滤器上。", "create.logistics.filter.apply_count": "已将提取数量应用至过滤器。", @@ -1062,14 +1062,14 @@ "create.item_attributes.placeable.inverted": "不可放置", "create.item_attributes.consumable": "可食用", "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.fluid_container": "可储存流体", + "create.item_attributes.fluid_container.inverted": "不可储存流体", "create.item_attributes.enchanted": "已被附魔", "create.item_attributes.enchanted.inverted": "未被附魔", "create.item_attributes.max_enchanted": "已达到最高附魔等级", "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.renamed": "有自定义名称", + "create.item_attributes.renamed.inverted": "无自定义名称", "create.item_attributes.damaged": "已损坏", "create.item_attributes.damaged.inverted": "未损坏", "create.item_attributes.badly_damaged": "严重受损", @@ -1201,8 +1201,8 @@ "create.linked_controller.bind_mode": "绑定模式激活", "create.linked_controller.press_keybind": "按下%1$s、%2$s、%3$s、%4$s、%5$s或%6$s,可以将该频率绑定到按下的按键上。", "create.linked_controller.key_bound": "该频率已绑定到%1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", + "create.linked_controller.frequency_slot_1": "按键绑定:%1$s, 频率 #1", + "create.linked_controller.frequency_slot_2": "按键绑定:%1$s, 频率 #2", "create.crafting_blueprint.crafting_slot": "原料槽", "create.crafting_blueprint.filter_items_viable": "可以使用过滤器", @@ -1388,8 +1388,8 @@ "block.create.schematicannon.tooltip": "蓝图加农炮", "block.create.schematicannon.tooltip.summary": "发射方块,重新构建已在世界中部署的_蓝图_,会使用相邻箱子中的物品进行填充,_火药_作为燃料。", - "block.create.schematicannon.tooltip.condition1": "When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_", + "block.create.schematicannon.tooltip.condition1": "当右击时", + "block.create.schematicannon.tooltip.behaviour1": "打开_界面_", "block.create.schematic_table.tooltip": "蓝图桌", "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", @@ -1423,14 +1423,14 @@ "block.create.turntable.tooltip": "转盘", "block.create.turntable.tooltip.summary": "让旋转力给你带来一场刺激的旋转风车体验。", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", - "block.create.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "每个发明家最亲爱的伙伴!可以方便地大量_收纳__8种_不同的物品类型。", + "block.create.toolbox.tooltip.condition1": "当拾起时", + "block.create.toolbox.tooltip.behaviour1": "_保留_库存_内容_。", + "block.create.toolbox.tooltip.condition2": "当放置在范围内时 ", + "block.create.toolbox.tooltip.behaviour2": "_附近_的_玩家_可以按下_使用附近的工具箱__快捷键_来_远程_访问它的库存。", + "block.create.toolbox.tooltip.condition3": "当右击时", + "block.create.toolbox.tooltip.behaviour3": "打开_工具箱界面_。", "block.create.stockpile_switch.tooltip": "存量转换器", "block.create.stockpile_switch.tooltip.summary": "根据连接的容器中_储存物品_的数量切换红石信号强度。自带有过滤槽,与_比较器_不同的是,你可以配置_存量转换器_信号反转的_阈值_。", @@ -1438,11 +1438,11 @@ "block.create.stockpile_switch.tooltip.behaviour1": "打开_配置界面_。", "block.create.content_observer.tooltip": "物品侦测器", - "block.create.content_observer.tooltip.summary": "检测_容器_和_传送带_中过滤器匹配的物品。当在_物品栏_,_传送带_或者_溜槽所容物_中侦测到匹配的物品时,此组件将发出_红石信号_。当观察到的漏斗_转移匹配的物品_时,此组件将发出_红石脉冲_。", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "block.create.content_observer.tooltip.summary": "_检测_与配置过的_过滤器_匹配的_容器_、_管道_或_传送带_中的_物品_或_流体_。", + "block.create.content_observer.tooltip.condition1": "当检测容器时", + "block.create.content_observer.tooltip.behaviour1": "如果检测的容器内有_匹配_的_物品_,发出_红石信号_。", + "block.create.content_observer.tooltip.condition2": "当检测漏斗时 ", + "block.create.content_observer.tooltip.behaviour2": "如果一个_匹配_的_物品_通过,则发出一个_红石脉冲_。", "block.create.adjustable_crate.tooltip": "可调节板条箱", "block.create.adjustable_crate.tooltip.summary": "该箱子支持玩家对其容量进行调整,最大可以容纳_16组_物品。支持_红石比较器_。", @@ -1460,9 +1460,9 @@ "item.create.creative_blaze_cake.tooltip.behaviour1": "_锁定_烈焰人燃烧室的热量等级。如果再次使用,会使得燃烧室的热量等级开始_循环_变化。", "block.create.controller_rail.tooltip": "控制铁轨", - "block.create.controller_rail.tooltip.summary": "一种_汇流的,受红石信号影响的_铁轨,可以_较好地控制_经过矿车的_移动速度_。", - "block.create.controller_rail.tooltip.condition1": "通入红石信号时时", - "block.create.controller_rail.tooltip.behaviour1": "根据信号强度_加速_或_减速_经过的矿车。还会将红石信号传递到相邻的控制铁轨。向两个控制铁轨通入不同等级的红石信号,两者中间的轨道会受到以此为区间的连续等级的红石信号的激活。", + "block.create.controller_rail.tooltip.summary": "一种_单向动力铁轨_,能够_精细控制_矿车的_移动速度_。", + "block.create.controller_rail.tooltip.condition1": "当接受红石信号时", + "block.create.controller_rail.tooltip.behaviour1": "根据_信号强度__加速_或_减速_通过的_矿车_。还会将红石信号传递到相邻的控制铁轨。为两个控制铁轨提供不同强度的红石信号将导致信号强度在它们之间的控制铁轨上过渡。", "item.create.sand_paper.tooltip": "砂纸", "item.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸,可以用_机械手_来实现自动化。", diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index cf6320f66..e08288d74 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -60,7 +60,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.3.2f"; + public static final String VERSION = "0.3.2g"; public static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 475f03ec4..2e22df2de 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="v0.3.2f" +version="v0.3.2g" displayName="Create" #updateJSONURL="" displayURL="https://www.curseforge.com/minecraft/mc-mods/create" diff --git a/src/main/resources/assets/create/lang/pt_br.json b/src/main/resources/assets/create/lang/pt_br.json index db9f40431..ba2e42220 100644 --- a/src/main/resources/assets/create/lang/pt_br.json +++ b/src/main/resources/assets/create/lang/pt_br.json @@ -1,4 +1,6 @@ { + "_": "Missing Localizations: 1652", + "_": "->------------------------] Game Elements [------------------------<-", "block.create.adjustable_chain_gearshift": "Correia Ajustável", "block.create.adjustable_crate": "Caixa Ajustável", @@ -6,19 +8,34 @@ "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 Andesite", + "block.create.andesite_bricks": "Tijolos de Andesito", "block.create.andesite_casing": "Revestimento de 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", "block.create.andesite_tunnel": "Tunel de Andesito", "block.create.basin": "Bacia", "block.create.belt": "Esteira Mecânica", + "block.create.black_sail": "Vela preta", + "block.create.black_seat": "Assento preto", + "block.create.black_toolbox": "Caixa de ferramentas preta", + "block.create.black_valve_handle": "Válvula preta", + "block.create.blaze_burner": "Queimador de blaze", + "block.create.blue_nixie_tube": "Tubo nixie azul", + "block.create.blue_sail": "Vela azul", + "block.create.blue_seat": "Assento azul", + "block.create.blue_toolbox": "Caixa de ferramentas azul", + "block.create.blue_valve_handle": "Válvula azul", "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_shaft": "Eixo Revestido com Latão", "block.create.brass_funnel": "Funil de Latão", "block.create.brass_tunnel": "Tunel de Latão", + "block.create.brown_nixie_tube": "Tubo de nixie marrom", + "block.create.brown_sail": "Vela marrom", + "block.create.brown_seat": "Assento marrom", + "block.create.brown_toolbox": "Caixa de ferramentas marrom", + "block.create.brown_valve_handle": "Válvula marrom", "block.create.cart_assembler": "Montador de Carrinho de Mina", "block.create.chocolate": "Chocolate", "block.create.chute": "Calha", @@ -37,6 +54,11 @@ "block.create.creative_motor": "Motor Criativo", "block.create.crushing_wheel": "Roda de Moer", "block.create.cuckoo_clock": "Relógio Cuckok", + "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.deployer": "Implantador", "block.create.depot": "Depósito", "block.create.diorite_bricks": "Tijolos de Diorito", @@ -45,7 +67,6 @@ "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_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_pillar": "Pilar de Dolomite", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", @@ -53,6 +74,7 @@ "block.create.fluid_pipe": "Cano de Fluido", "block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_valve": "Válvula", + "block.create.flywheel": "Volante de inércia", "block.create.furnace_engine": "Motor de Fornalha", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Tijolos de Gabbro", @@ -64,6 +86,16 @@ "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", + "block.create.gray_toolbox": "Caixa de ferramentas cinza", + "block.create.gray_valve_handle": "Válvula cinza", + "block.create.green_nixie_tube": "Tubo nixie verde", + "block.create.green_sail": "Vela verde", + "block.create.green_seat": "Assento verde", + "block.create.green_toolbox": "Caixa de ferramentas verde", + "block.create.green_valve_handle": "Válvula verde", "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Sino assombrado", "block.create.honey": "Mel", @@ -71,6 +103,21 @@ "block.create.item_drain": "Dreno de Item", "block.create.large_cogwheel": "Roda Dentada Grande", "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", + "block.create.light_blue_seat": "Assento azul claro", + "block.create.light_blue_toolbox": "Caixa de ferramentas azul claro", + "block.create.light_blue_valve_handle": "válvula azul claro", + "block.create.light_gray_nixie_tube": "Tubo nixie azul claro", + "block.create.light_gray_sail": "Vela cinza claro", + "block.create.light_gray_seat": "Assento cinza claro", + "block.create.light_gray_toolbox": "Caixa de ferramentas cinza claro", + "block.create.light_gray_valve_handle": "Válvula cinza claro", + "block.create.lime_nixie_tube": "Tubo nixie cinza claro", + "block.create.lime_sail": "Vela lima", + "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", @@ -80,6 +127,11 @@ "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis Linear", "block.create.lit_blaze_burner": "Queimador de Blaze Acesso", + "block.create.magenta_nixie_tube": "Tubo nixie magenta", + "block.create.magenta_sail": "Vela magenta", + "block.create.magenta_seat": "Assento magenta", + "block.create.magenta_toolbox": "Caixa de ferramentas magenta", + "block.create.magenta_valve_handle": "Válvula magenta", "block.create.mechanical_arm": "Braço mecânico", "block.create.mechanical_bearing": "Rolamento mecânico", "block.create.mechanical_crafter": "Fabricador mecânico", @@ -95,9 +147,18 @@ "block.create.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", - "block.create.nixie_tube": "Tubo de Nixie", - "block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell", - "block.create.pink_nixie_tube": "UNLOCALIZED: Pink Nixie Tube", + "block.create.nixie_tube": "Tubo Nixie", + "block.create.nozzle": "Bocal", + "block.create.orange_sail": "Vela laranja", + "block.create.orange_seat": "Assento laranja", + "block.create.orange_toolbox": "Caixa de ferramentas laranja", + "block.create.orange_valve_handle": "Válvula laranja", + "block.create.peculiar_bell": "Sino peculiar", + "block.create.pink_nixie_tube": "Tubo nixie rosa", + "block.create.pink_sail": "Vela rosa", + "block.create.pink_seat": "Assento rosa", + "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", @@ -105,19 +166,32 @@ "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.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.pulley_magnet": "Imã da Polia", "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.radial_chassis": "Chassi Radial", + "block.create.purple_nixie_tube": "Tubo nixie roxo", + "block.create.purple_sail": "Vela roxo", + "block.create.purple_seat": "Assento roxo", + "block.create.purple_toolbox": "Caixa de ferramentas roxa", + "block.create.purple_valve_handle": "válvula roxa", + "block.create.radial_chassis": "Chassis Radial", + "block.create.red_nixie_tube": "Tubo nixie vermelho", + "block.create.red_sail": "Vela vermelha", + "block.create.red_seat": "Assento vermelho", + "block.create.red_toolbox": "Caixa de ferramentas vermelha", + "block.create.red_valve_handle": "Válvula vermelha", "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.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", + "block.create.secondary_linear_chassis": "Chassis linear secundário", + "block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.shadow_steel_casing": "Revestiment das Sombras", "block.create.shaft": "Eixo", "block.create.smart_chute": "calha Inteligente", @@ -137,19 +211,35 @@ "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.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.yellow_nixie_tube": "Tubo nixie amarelo", + "block.create.yellow_sail": "Vela amarela", + "block.create.yellow_seat": "Assento amarelo", + "block.create.yellow_toolbox": "Caixa de amarela", + "block.create.yellow_valve_handle": "Válvula amarela", "block.create.zinc_block": "Bloco de Zinco", "block.create.zinc_ore": "Minério de Zinco", + "enchantment.create.capacity": "Capacidade", "enchantment.create.potato_recovery": "Recuperação de Batata", + "entity.create.contraption": "Engenhoca", "entity.create.crafting_blueprint": "Esquema de Fabricação", "entity.create.gantry_contraption": "Engenhoca de Pórticolo", - "entity.create.potato_projectile": "Projétil deBatata", + "entity.create.potato_projectile": "Projétil de batata", "entity.create.seat": "Assento", "entity.create.stationary_contraption": "Engenhoca estacionária", "entity.create.super_glue": "Super Cola", + "fluid.create.potion": "Poção", "fluid.create.tea": "Chá do Construtor", + "item.create.andesite_alloy": "Liga de Andesito", "item.create.attribute_filter": "Filtro de Atributo", "item.create.bar_of_chocolate": "Barra de Chocolate", @@ -188,7 +278,7 @@ "item.create.crushed_zinc_ore": "Minério de Zinco Esmagado", "item.create.diving_boots": "Botas de Mergulhador", "item.create.diving_helmet": "Capacete de Mergulhador", - "item.create.dough": "Massa", + "item.create.dough": "Massa de pão", "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", @@ -229,7 +319,10 @@ "item.create.wrench": "Chave Inglesa", "item.create.zinc_ingot": "Barra de Zinco", "item.create.zinc_nugget": "Pepita de Zinco", + + "_": "->------------------------] Advancements [------------------------<-", + "advancement.create.root": "Bem vindo a Create", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", @@ -243,10 +336,41 @@ "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", "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", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "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.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.polished_rose_quartz": "Diamantes rosa", + "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", + "advancement.create.mechanical_saw.desc": "Coloque e energize uma serra mecânica.", + "advancement.create.basin": "Operação da bacia", + "advancement.create.basin.desc": "Coloque uma bacia e tente jogar itens nela.", + "advancement.create.mixer": "Misturando", + "advancement.create.mixer.desc": "Coloque um batedor mecânico acima da bacia, energize este, e comece a misturar alguns ingredientes.", + "advancement.create.blaze_burner": "Uma fogueira viva", + "advancement.create.blaze_burner.desc": "Obtenha um queimador de blaze.", + "advancement.create.compact": "Compactação automática", + "advancement.create.compact.desc": "Use uma prensa e uma bacia para compactar alguns itens.", + "advancement.create.brass": "Ligas de verdade", + "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", + "advancement.create.brass_casing": "a era do latão", + "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", + "advancement.create.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.", + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Paletes Create", + "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", "death.attack.create.crush.player": "%1$s foi jogando numa Roda de moer por %2$s", "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", @@ -255,6 +379,12 @@ "death.attack.create.fan_lava.player": "U%1$s foi jogado numa fundidora por %2$s", "death.attack.create.mechanical_drill": "%1$s foi empalado pela Broca Mecânica", "death.attack.create.mechanical_drill.player": "%1$s foi jogado na frente de uma broca por %2$s", + "death.attack.create.mechanical_saw": "%1$s foi cortado ao meio por uma serra mecânica", + "death.attack.create.mechanical_saw.player": "%1$s foi jogado numa serra por %2$s", + "death.attack.create.potato_cannon": "%1$s foi atirado pelo canhão de batatas do %2$", + "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", @@ -282,33 +412,40 @@ "create.generic.unit.millibuckets": "%1$smB", "create.generic.clockwise": "Sentido horário", "create.generic.counter_clockwise": "Sentido anti-horário", + "create.action.scroll": "Rolar", "create.action.confirm": "Confirmar", "create.action.abort": "Abortar", "create.action.saveToFile": "Salvar", "create.action.discard": "Descartar", + "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", + "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", "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", + "create.symmetry.mirror.plane": "Espelhar uma vez", "create.symmetry.mirror.doublePlane": "Retangular", "create.symmetry.mirror.triplePlane": "Octagonal", + "create.orientation.orthogonal": "Ortogonal", "create.orientation.diagonal": "Diagonal", "create.orientation.horizontal": "Horizontal", "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", "create.gui.goggles.pole_length": "Comprimento da vara:", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", - "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", + "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Primeira posição feita.", "create.schematicAndQuill.secondPos": "Segunda posição feita.", @@ -316,6 +453,7 @@ "create.schematicAndQuill.abort": "Seleção removida.", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", + "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", "create.schematic.position": "Posição", "create.schematic.rotation": "Rotação", @@ -357,6 +495,7 @@ "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", + "create.schematics.synchronizing": "Sincronizando...", "create.schematics.uploadTooLarge": "Seu esquema é muito grande", "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", @@ -370,6 +509,7 @@ "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", @@ -382,6 +522,7 @@ "create.gui.schematicannon.option.replaceWithSolid.description": "O Canhão de esquema irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", "create.gui.schematicannon.option.replaceWithAny.description": "O Canhão de esquema irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", "create.gui.schematicannon.option.replaceWithEmpty.description": "O Canhão de esquema irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", + "create.schematicannon.status.idle": "Ocioso", "create.schematicannon.status.ready": "Pronto", "create.schematicannon.status.running": "Trabalhando", @@ -399,10 +540,14 @@ "create.schematicannon.status.schematicInvalid": "Esquema Inválido", "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", + + + "_": "->------------------------] Subtitles [------------------------<-", + + "_": "->------------------------] Item Descriptions [------------------------<-", + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", "item.create.example_item.tooltip.condition1": "Quando this", @@ -411,6 +556,7 @@ "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", @@ -421,18 +567,22 @@ "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_", + "item.create.schematic.tooltip": "ESQUEMA", "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", "item.create.schematic.tooltip.condition1": "Quando Em mãos", "item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela", "item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado", "item.create.schematic.tooltip.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", + "item.create.schematic_and_quill.tooltip": "ESQUEMA E PENA", "item.create.schematic_and_quill.tooltip.summary": "Usado para salvar uma Estrutura no mundo para um arquivo .nbt.", "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", @@ -445,20 +595,31 @@ "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", + "block.create.schematicannon.tooltip": "Canhão de esquema", "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", "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" -} \ No newline at end of file + "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!" + +} From d15b2281c12c4365c169f8b4e13a3e8a93168b95 Mon Sep 17 00:00:00 2001 From: PepperBell <44146161+PepperCode1@users.noreply.github.com> Date: Sat, 20 Nov 2021 09:04:55 -0800 Subject: [PATCH 09/26] Update Registrate --- gradle.properties | 6 +++--- src/main/resources/META-INF/mods.toml | 8 -------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2ec8b7b7a..21188041a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.daemon = false # mod version info mod_version = 0.4 minecraft_version = 1.17.1 -forge_version = 37.0.108 +forge_version = 37.0.110 # build dependency versions forgegradle_version = 5.1.+ @@ -17,9 +17,9 @@ cursegradle_version = 1.4.0 parchment_version = 2021.10.31 # dependency versions -registrate_version = MC1.17.1-1.0.13 +registrate_version = MC1.17.1-1.0.14 flywheel_version = 1.17-0.3.0.12 -jei_version = 8.2.0.34 +jei_version = 8.2.0.36 # curseforge information projectId = 328085 diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 68d417929..1625480c8 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -35,11 +35,3 @@ Technology that empowers the player.''' versionRange="[1.17-0.3.0,1.17-0.3.1)" ordering="AFTER" side="BOTH" - -# TODO: remove once Registrate is fixed -[[dependencies.create]] - modId="registrate" - mandatory=true - versionRange="[1.0.13,1.1.0)" - ordering="AFTER" - side="BOTH" From 7b4f9f924fc9627b0614d6d54b2f12d6fd269c88 Mon Sep 17 00:00:00 2001 From: PepperBell <44146161+PepperCode1@users.noreply.github.com> Date: Sun, 21 Nov 2021 00:44:37 -0800 Subject: [PATCH 10/26] Over-rendered - Replace AngleHelper.horizontalAngle with horizontalAngleNew (return 0 instead of -90 for vertical directions) - Fix FluidRenderer not calculating correct UVs for integer positions - Fix FluidRenderer rendering streams and flowing texture incorrectly - Slightly improve performance of outlines - Rename PartialBufferer to CachedBufferer - Move specific code out of SuperByteBufferCache into CachedBufferer and BakedModelRenderHelper - Move Compartment inside SuperByteBufferCache - Rename some methods and fields --- .../com/simibubi/create/AllBlockPartials.java | 183 +++++++++--------- .../com/simibubi/create/CreateClient.java | 4 + .../animations/AnimatedItemDrain.java | 2 +- .../category/animations/AnimatedSpout.java | 12 +- .../base/KineticTileEntityRenderer.java | 10 +- .../components/actors/DrillRenderer.java | 6 +- .../components/actors/HarvesterRenderer.java | 6 +- .../PortableStorageInterfaceRenderer.java | 6 +- .../components/clock/CuckooClockRenderer.java | 14 +- .../crafter/MechanicalCrafterRenderer.java | 6 +- .../components/crank/HandCrankRenderer.java | 4 +- .../deployer/DeployerActorInstance.java | 14 +- .../deployer/DeployerFilterSlot.java | 4 +- .../components/deployer/DeployerInstance.java | 18 +- .../components/deployer/DeployerRenderer.java | 24 +-- .../components/fan/EncasedFanRenderer.java | 6 +- .../components/flywheel/FlywheelBlock.java | 2 +- .../components/flywheel/FlywheelRenderer.java | 14 +- .../flywheel/engine/EngineRenderer.java | 4 +- .../millstone/MillstoneRenderer.java | 4 +- .../mixer/MechanicalMixerRenderer.java | 8 +- .../motor/CreativeMotorRenderer.java | 4 +- .../press/MechanicalPressRenderer.java | 4 +- .../components/saw/SawRenderer.java | 19 +- .../bearing/BearingRenderer.java | 6 +- .../StabilizedBearingMovementBehaviour.java | 4 +- .../chassis/StickerInstance.java | 86 ++++---- .../chassis/StickerRenderer.java | 10 +- .../gantry/GantryCarriageInstance.java | 141 +++++++------- .../gantry/GantryCarriageRenderer.java | 15 +- .../structureMovement/glue/GlueInstance.java | 2 +- .../glue/SuperGlueRenderer.java | 2 +- .../pulley/AbstractPulleyRenderer.java | 8 +- .../structureMovement/pulley/PulleyBlock.java | 4 - .../pulley/PulleyRenderer.java | 6 +- .../render/SBBContraptionManager.java | 8 +- .../train/CouplingRenderer.java | 8 +- .../contraptions/fluids/PumpRenderer.java | 6 +- .../fluids/actors/HosePulleyRenderer.java | 6 +- .../fluids/actors/ItemDrainRenderer.java | 4 +- .../fluids/actors/SpoutRenderer.java | 8 +- .../fluids/pipes/FluidValveInstance.java | 2 +- .../fluids/pipes/FluidValveRenderer.java | 6 +- .../fluids/tank/FluidTankRenderer.java | 2 +- .../processing/BasinRenderer.java | 2 +- .../burner/BlazeBurnerRenderer.java | 4 +- .../advanced/SpeedControllerRenderer.java | 7 +- .../relays/belt/BeltRenderer.java | 7 +- .../BracketedKineticTileRenderer.java | 6 +- .../relays/encased/ShaftlessCogRenderer.java | 4 +- .../relays/encased/SplitShaftRenderer.java | 4 +- .../relays/gauge/GaugeRenderer.java | 6 +- .../relays/gearbox/GearboxRenderer.java | 4 +- .../armor/CopperBacktankArmorLayer.java | 7 +- .../armor/CopperBacktankRenderer.java | 8 +- .../curiosities/bell/BellRenderer.java | 4 +- .../curiosities/toolbox/ToolboxRenderer.java | 6 +- .../curiosities/tools/BlueprintRenderer.java | 4 +- .../belts/tunnel/BeltTunnelRenderer.java | 4 +- .../block/depot/EjectorRenderer.java | 4 +- .../block/diodes/BrassDiodeRenderer.java | 4 +- .../block/funnel/FunnelRenderer.java | 4 +- .../block/mechanicalArm/ArmRenderer.java | 16 +- .../block/mechanicalArm/ArmTileEntity.java | 2 +- .../block/redstone/AnalogLeverRenderer.java | 6 +- .../block/SchematicannonRenderer.java | 6 +- .../foundation/fluid/FluidRenderer.java | 162 +++++++++------- .../gui/element/GuiGameElement.java | 4 +- .../ponder/elements/WorldSectionElement.java | 13 +- .../render/BakedModelRenderHelper.java | 50 +++++ .../foundation/render/CachedBufferer.java | 89 +++++++++ .../create/foundation/render/Compartment.java | 14 -- .../foundation/render/PartialBufferer.java | 61 ------ .../render/SuperByteBufferCache.java | 133 +++---------- .../behaviour/ValueBoxTransform.java | 2 +- .../scrollvalue/ScrollValueHandler.java | 8 +- .../foundation/utility/AngleHelper.java | 16 +- .../utility/ISimpleReloadListener.java | 1 + .../utility/outliner/BlockClusterOutline.java | 50 ++--- .../foundation/utility/outliner/Outline.java | 44 +++-- .../foundation/utility/outliner/Outliner.java | 56 +++--- 81 files changed, 755 insertions(+), 779 deletions(-) create mode 100644 src/main/java/com/simibubi/create/foundation/render/BakedModelRenderHelper.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java delete mode 100644 src/main/java/com/simibubi/create/foundation/render/Compartment.java delete mode 100644 src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index f3557c64e..fb4ea5e54 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -1,5 +1,6 @@ package com.simibubi.create; +import java.util.EnumMap; import java.util.HashMap; import java.util.Map; @@ -14,144 +15,144 @@ import net.minecraft.world.item.DyeColor; public class AllBlockPartials { - public static final PartialModel SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), - SCHEMATICANNON_PIPE = get("schematicannon/pipe"), + public static final PartialModel - SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFTLESS_LARGE_COGWHEEL = get("large_cogwheel_shaftless"), - COGWHEEL_SHAFT = get("cogwheel_shaft"), SHAFT_HALF = get("shaft_half"), + SCHEMATICANNON_CONNECTOR = block("schematicannon/connector"), + SCHEMATICANNON_PIPE = block("schematicannon/pipe"), - BELT_PULLEY = get("belt_pulley"), BELT_START = get("belt/start"), BELT_MIDDLE = get("belt/middle"), - BELT_END = get("belt/end"), BELT_START_BOTTOM = get("belt/start_bottom"), - BELT_MIDDLE_BOTTOM = get("belt/middle_bottom"), BELT_END_BOTTOM = get("belt/end_bottom"), - BELT_DIAGONAL_START = get("belt/diagonal_start"), BELT_DIAGONAL_MIDDLE = get("belt/diagonal_middle"), - BELT_DIAGONAL_END = get("belt/diagonal_end"), + SHAFTLESS_COGWHEEL = block("cogwheel_shaftless"), SHAFTLESS_LARGE_COGWHEEL = block("large_cogwheel_shaftless"), + COGWHEEL_SHAFT = block("cogwheel_shaft"), SHAFT_HALF = block("shaft_half"), - ENCASED_FAN_INNER = get("encased_fan/propeller"), HAND_CRANK_HANDLE = get("hand_crank/handle"), - MECHANICAL_PRESS_HEAD = get("mechanical_press/head"), MECHANICAL_MIXER_POLE = get("mechanical_mixer/pole"), - MECHANICAL_MIXER_HEAD = get("mechanical_mixer/head"), MECHANICAL_CRAFTER_LID = get("mechanical_crafter/lid"), - MECHANICAL_CRAFTER_ARROW = get("mechanical_crafter/arrow"), - MECHANICAL_CRAFTER_BELT_FRAME = get("mechanical_crafter/belt"), - MECHANICAL_CRAFTER_BELT = get("mechanical_crafter/belt_animated"), - SAW_BLADE_HORIZONTAL_ACTIVE = get("mechanical_saw/blade_horizontal_active"), - SAW_BLADE_HORIZONTAL_INACTIVE = get("mechanical_saw/blade_horizontal_inactive"), - SAW_BLADE_HORIZONTAL_REVERSED = get("mechanical_saw/blade_horizontal_reversed"), - SAW_BLADE_VERTICAL_ACTIVE = get("mechanical_saw/blade_vertical_active"), - SAW_BLADE_VERTICAL_INACTIVE = get("mechanical_saw/blade_vertical_inactive"), - SAW_BLADE_VERTICAL_REVERSED = get("mechanical_saw/blade_vertical_reversed"), GAUGE_DIAL = get("gauge/dial"), - GAUGE_INDICATOR = get("gauge/indicator"), GAUGE_HEAD_SPEED = get("gauge/speedometer/head"), - GAUGE_HEAD_STRESS = get("gauge/stressometer/head"), BEARING_TOP = get("bearing/top"), - BEARING_TOP_WOODEN = get("bearing/top_wooden"), DRILL_HEAD = get("mechanical_drill/head"), - HARVESTER_BLADE = get("mechanical_harvester/blade"), DEPLOYER_POLE = get("deployer/pole"), - DEPLOYER_HAND_POINTING = get("deployer/hand_pointing"), DEPLOYER_HAND_PUNCHING = get("deployer/hand_punching"), - DEPLOYER_HAND_HOLDING = get("deployer/hand_holding"), ANALOG_LEVER_HANDLE = get("analog_lever/handle"), - ANALOG_LEVER_INDICATOR = get("analog_lever/indicator"), FUNNEL_FLAP = get("funnel/flap"), - BELT_FUNNEL_FLAP = get("belt_funnel/flap"), BELT_TUNNEL_FLAP = get("belt_tunnel/flap"), - FLEXPEATER_INDICATOR = get("diodes/indicator"), FLYWHEEL = get("flywheel/wheel"), - FLYWHEEL_UPPER_ROTATING = get("flywheel/upper_rotating_connector"), + BELT_PULLEY = block("belt_pulley"), BELT_START = block("belt/start"), BELT_MIDDLE = block("belt/middle"), + BELT_END = block("belt/end"), BELT_START_BOTTOM = block("belt/start_bottom"), + BELT_MIDDLE_BOTTOM = block("belt/middle_bottom"), BELT_END_BOTTOM = block("belt/end_bottom"), + BELT_DIAGONAL_START = block("belt/diagonal_start"), BELT_DIAGONAL_MIDDLE = block("belt/diagonal_middle"), + BELT_DIAGONAL_END = block("belt/diagonal_end"), - FLYWHEEL_LOWER_ROTATING = get("flywheel/lower_rotating_connector"), - FLYWHEEL_UPPER_SLIDING = get("flywheel/upper_sliding_connector"), - FLYWHEEL_LOWER_SLIDING = get("flywheel/lower_sliding_connector"), - FURNACE_GENERATOR_FRAME = get("furnace_engine/frame"), CUCKOO_MINUTE_HAND = get("cuckoo_clock/minute_hand"), - CUCKOO_HOUR_HAND = get("cuckoo_clock/hour_hand"), CUCKOO_LEFT_DOOR = get("cuckoo_clock/left_door"), - CUCKOO_RIGHT_DOOR = get("cuckoo_clock/right_door"), CUCKOO_PIG = get("cuckoo_clock/pig"), - CUCKOO_CREEPER = get("cuckoo_clock/creeper"), + ENCASED_FAN_INNER = block("encased_fan/propeller"), HAND_CRANK_HANDLE = block("hand_crank/handle"), + MECHANICAL_PRESS_HEAD = block("mechanical_press/head"), MECHANICAL_MIXER_POLE = block("mechanical_mixer/pole"), + MECHANICAL_MIXER_HEAD = block("mechanical_mixer/head"), MECHANICAL_CRAFTER_LID = block("mechanical_crafter/lid"), + MECHANICAL_CRAFTER_ARROW = block("mechanical_crafter/arrow"), + MECHANICAL_CRAFTER_BELT_FRAME = block("mechanical_crafter/belt"), + MECHANICAL_CRAFTER_BELT = block("mechanical_crafter/belt_animated"), + SAW_BLADE_HORIZONTAL_ACTIVE = block("mechanical_saw/blade_horizontal_active"), + SAW_BLADE_HORIZONTAL_INACTIVE = block("mechanical_saw/blade_horizontal_inactive"), + SAW_BLADE_HORIZONTAL_REVERSED = block("mechanical_saw/blade_horizontal_reversed"), + SAW_BLADE_VERTICAL_ACTIVE = block("mechanical_saw/blade_vertical_active"), + SAW_BLADE_VERTICAL_INACTIVE = block("mechanical_saw/blade_vertical_inactive"), + SAW_BLADE_VERTICAL_REVERSED = block("mechanical_saw/blade_vertical_reversed"), GAUGE_DIAL = block("gauge/dial"), + GAUGE_INDICATOR = block("gauge/indicator"), GAUGE_HEAD_SPEED = block("gauge/speedometer/head"), + GAUGE_HEAD_STRESS = block("gauge/stressometer/head"), BEARING_TOP = block("bearing/top"), + BEARING_TOP_WOODEN = block("bearing/top_wooden"), DRILL_HEAD = block("mechanical_drill/head"), + HARVESTER_BLADE = block("mechanical_harvester/blade"), DEPLOYER_POLE = block("deployer/pole"), + DEPLOYER_HAND_POINTING = block("deployer/hand_pointing"), DEPLOYER_HAND_PUNCHING = block("deployer/hand_punching"), + DEPLOYER_HAND_HOLDING = block("deployer/hand_holding"), ANALOG_LEVER_HANDLE = block("analog_lever/handle"), + ANALOG_LEVER_INDICATOR = block("analog_lever/indicator"), FUNNEL_FLAP = block("funnel/flap"), + BELT_FUNNEL_FLAP = block("belt_funnel/flap"), BELT_TUNNEL_FLAP = block("belt_tunnel/flap"), + FLEXPEATER_INDICATOR = block("diodes/indicator"), FLYWHEEL = block("flywheel/wheel"), + FLYWHEEL_UPPER_ROTATING = block("flywheel/upper_rotating_connector"), - GANTRY_COGS = get("gantry_carriage/wheels"), + FLYWHEEL_LOWER_ROTATING = block("flywheel/lower_rotating_connector"), + FLYWHEEL_UPPER_SLIDING = block("flywheel/upper_sliding_connector"), + FLYWHEEL_LOWER_SLIDING = block("flywheel/lower_sliding_connector"), + FURNACE_GENERATOR_FRAME = block("furnace_engine/frame"), CUCKOO_MINUTE_HAND = block("cuckoo_clock/minute_hand"), + CUCKOO_HOUR_HAND = block("cuckoo_clock/hour_hand"), CUCKOO_LEFT_DOOR = block("cuckoo_clock/left_door"), + CUCKOO_RIGHT_DOOR = block("cuckoo_clock/right_door"), CUCKOO_PIG = block("cuckoo_clock/pig"), + CUCKOO_CREEPER = block("cuckoo_clock/creeper"), - ROPE_COIL = get("rope_pulley/rope_coil"), ROPE_HALF = get("rope_pulley/rope_half"), - ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"), + GANTRY_COGS = block("gantry_carriage/wheels"), - HOSE_COIL = get("hose_pulley/rope_coil"), HOSE = get("hose_pulley/rope"), - HOSE_MAGNET = get("hose_pulley/pulley_magnet"), HOSE_HALF = get("hose_pulley/rope_half"), - HOSE_HALF_MAGNET = get("hose_pulley/rope_half_magnet"), + ROPE_COIL = block("rope_pulley/rope_coil"), ROPE_HALF = block("rope_pulley/rope_half"), + ROPE_HALF_MAGNET = block("rope_pulley/rope_half_magnet"), - MILLSTONE_COG = get("millstone/inner"), + HOSE_COIL = block("hose_pulley/rope_coil"), HOSE = block("hose_pulley/rope"), + HOSE_MAGNET = block("hose_pulley/pulley_magnet"), HOSE_HALF = block("hose_pulley/rope_half"), + HOSE_HALF_MAGNET = block("hose_pulley/rope_half_magnet"), - SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"), - SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"), + MILLSTONE_COG = block("millstone/inner"), - STICKER_HEAD = get("sticker/head"), + SYMMETRY_PLANE = block("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = block("symmetry_effect/crossplane"), + SYMMETRY_TRIPLEPLANE = block("symmetry_effect/tripleplane"), - PORTABLE_STORAGE_INTERFACE_MIDDLE = get("portable_storage_interface/block_middle"), - PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED = get("portable_storage_interface/block_middle_powered"), - PORTABLE_STORAGE_INTERFACE_TOP = get("portable_storage_interface/block_top"), + STICKER_HEAD = block("sticker/head"), - PORTABLE_FLUID_INTERFACE_MIDDLE = get("portable_fluid_interface/block_middle"), - PORTABLE_FLUID_INTERFACE_MIDDLE_POWERED = get("portable_fluid_interface/block_middle_powered"), - PORTABLE_FLUID_INTERFACE_TOP = get("portable_fluid_interface/block_top"), + PORTABLE_STORAGE_INTERFACE_MIDDLE = block("portable_storage_interface/block_middle"), + PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED = block("portable_storage_interface/block_middle_powered"), + PORTABLE_STORAGE_INTERFACE_TOP = block("portable_storage_interface/block_top"), - ARM_COG = get("mechanical_arm/cog"), ARM_BASE = get("mechanical_arm/base"), - ARM_LOWER_BODY = get("mechanical_arm/lower_body"), ARM_UPPER_BODY = get("mechanical_arm/upper_body"), - ARM_HEAD = get("mechanical_arm/head"), ARM_CLAW_BASE = get("mechanical_arm/claw_base"), - ARM_CLAW_GRIP = get("mechanical_arm/claw_grip"), + PORTABLE_FLUID_INTERFACE_MIDDLE = block("portable_fluid_interface/block_middle"), + PORTABLE_FLUID_INTERFACE_MIDDLE_POWERED = block("portable_fluid_interface/block_middle_powered"), + PORTABLE_FLUID_INTERFACE_TOP = block("portable_fluid_interface/block_top"), - FLAG_SHORT_IN = get("mechanical_arm/flag/short_in"), FLAG_SHORT_OUT = get("mechanical_arm/flag/short_out"), - FLAG_LONG_IN = get("mechanical_arm/flag/long_in"), FLAG_LONG_OUT = get("mechanical_arm/flag/long_out"), + ARM_COG = block("mechanical_arm/cog"), ARM_BASE = block("mechanical_arm/base"), + ARM_LOWER_BODY = block("mechanical_arm/lower_body"), ARM_UPPER_BODY = block("mechanical_arm/upper_body"), + ARM_HEAD = block("mechanical_arm/head"), ARM_CLAW_BASE = block("mechanical_arm/claw_base"), + ARM_CLAW_GRIP = block("mechanical_arm/claw_grip"), - MECHANICAL_PUMP_ARROW = get("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = get("mechanical_pump/cog"), - FLUID_PIPE_CASING = get("fluid_pipe/casing"), FLUID_VALVE_POINTER = get("fluid_valve/pointer"), + FLAG_SHORT_IN = block("mechanical_arm/flag/short_in"), FLAG_SHORT_OUT = block("mechanical_arm/flag/short_out"), + FLAG_LONG_IN = block("mechanical_arm/flag/long_in"), FLAG_LONG_OUT = block("mechanical_arm/flag/long_out"), - SPOUT_TOP = get("spout/top"), SPOUT_MIDDLE = get("spout/middle"), SPOUT_BOTTOM = get("spout/bottom"), + MECHANICAL_PUMP_ARROW = block("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = block("mechanical_pump/cog"), + FLUID_PIPE_CASING = block("fluid_pipe/casing"), FLUID_VALVE_POINTER = block("fluid_valve/pointer"), - PECULIAR_BELL = get("peculiar_bell"), HAUNTED_BELL = get("haunted_bell"), + SPOUT_TOP = block("spout/top"), SPOUT_MIDDLE = block("spout/middle"), SPOUT_BOTTOM = block("spout/bottom"), - TOOLBOX_DRAWER = get("toolbox/drawer"), + PECULIAR_BELL = block("peculiar_bell"), HAUNTED_BELL = block("haunted_bell"), - SPEED_CONTROLLER_BRACKET = get("rotation_speed_controller/bracket"), + TOOLBOX_DRAWER = block("toolbox/drawer"), - GOGGLES = get("goggles"), + SPEED_CONTROLLER_BRACKET = block("rotation_speed_controller/bracket"), - EJECTOR_TOP = get("weighted_ejector/top"), + GOGGLES = block("goggles"), - COPPER_BACKTANK_SHAFT = get("copper_backtank/block_shaft_input"), - COPPER_BACKTANK_COGS = get("copper_backtank/block_cogs"), + EJECTOR_TOP = block("weighted_ejector/top"), - CRAFTING_BLUEPRINT_1x1 = getEntity("crafting_blueprint_small"), - CRAFTING_BLUEPRINT_2x2 = getEntity("crafting_blueprint_medium"), - CRAFTING_BLUEPRINT_3x3 = getEntity("crafting_blueprint_large"), + COPPER_BACKTANK_SHAFT = block("copper_backtank/block_shaft_input"), + COPPER_BACKTANK_COGS = block("copper_backtank/block_cogs"), - COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"), - COUPLING_RING = getEntity("minecart_coupling/ring"), - COUPLING_CONNECTOR = getEntity("minecart_coupling/connector"); + CRAFTING_BLUEPRINT_1x1 = entity("crafting_blueprint_small"), + CRAFTING_BLUEPRINT_2x2 = entity("crafting_blueprint_medium"), + CRAFTING_BLUEPRINT_3x3 = entity("crafting_blueprint_large"), + + COUPLING_ATTACHMENT = entity("minecart_coupling/attachment"), + COUPLING_RING = entity("minecart_coupling/ring"), + COUPLING_CONNECTOR = entity("minecart_coupling/connector") + + ; public static final Map> PIPE_ATTACHMENTS = - new HashMap<>(); - public static final Map TOOLBOX_LIDS = new HashMap<>(); - public static final Map BLAZES = new HashMap<>(); + new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.class); + public static final Map BLAZES = new EnumMap<>(BlazeBurnerBlock.HeatLevel.class); + public static final Map TOOLBOX_LIDS = new EnumMap<>(DyeColor.class); static { - populateMaps(); - } - - static void populateMaps() { for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) { if (!type.hasModel()) continue; Map map = new HashMap<>(); for (Direction d : Iterate.directions) { String asId = Lang.asId(type.name()); - map.put(d, get("fluid_pipe/" + asId + "/" + Lang.asId(d.getSerializedName()))); + map.put(d, block("fluid_pipe/" + asId + "/" + Lang.asId(d.getSerializedName()))); } PIPE_ATTACHMENTS.put(type, map); } for (BlazeBurnerBlock.HeatLevel heat : BlazeBurnerBlock.HeatLevel.values()) { if (heat == BlazeBurnerBlock.HeatLevel.NONE) continue; - BLAZES.put(heat, get("blaze_burner/blaze/" + heat.getSerializedName())); + BLAZES.put(heat, block("blaze_burner/blaze/" + heat.getSerializedName())); } for (DyeColor color : DyeColor.values()) - TOOLBOX_LIDS.put(color, get("toolbox/lid/" + Lang.asId(color.name()))); + TOOLBOX_LIDS.put(color, block("toolbox/lid/" + Lang.asId(color.name()))); } - private static PartialModel getEntity(String path) { - return new PartialModel(Create.asResource("entity/" + path)); - } - - private static PartialModel get(String path) { + private static PartialModel block(String path) { return new PartialModel(Create.asResource("block/" + path)); } + private static PartialModel entity(String path) { + return new PartialModel(Create.asResource("entity/" + path)); + } + public static void init() { // init static fields } diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 633387202..199c0a44c 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -16,6 +16,7 @@ import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.content.PonderIndex; import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; import com.simibubi.create.foundation.render.AllMaterialSpecs; +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; @@ -66,6 +67,9 @@ public class CreateClient { } public static void clientInit(final FMLClientSetupEvent event) { + BUFFER_CACHE.registerCompartment(CachedBufferer.GENERIC_TILE); + BUFFER_CACHE.registerCompartment(CachedBufferer.PARTIAL); + BUFFER_CACHE.registerCompartment(CachedBufferer.DIRECTIONAL_PARTIAL); BUFFER_CACHE.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE); BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20); BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java index 6c9356f98..1c7e56913 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java @@ -40,7 +40,7 @@ public class AnimatedItemDrain extends AnimatedKinetics { ms.scale(scale, scale, scale); float from = 2/16f; float to = 1f - from; - FluidRenderer.renderTiledFluidBB(fluid, from, from, from, to, 3/4f, to, buffer, ms, LightTexture.FULL_BRIGHT, false); + FluidRenderer.renderFluidBox(fluid, from, from, from, to, 3/4f, to, buffer, ms, LightTexture.FULL_BRIGHT, false); buffer.endBatch(); matrixStack.popPose(); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java index 2e19f9068..faac26a70 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java @@ -71,17 +71,19 @@ public class AnimatedSpout extends AnimatedKinetics { matrixStack.pushPose(); UIRenderHelper.flipForGuiRender(matrixStack); matrixStack.scale(16, 16, 16); - float from = 2/16f; - float to = 1f - from; - FluidRenderer.renderTiledFluidBB(fluids.get(0), from, from, from, to, to, to, buffer, matrixStack, LightTexture.FULL_BRIGHT, false); + float from = 3f / 16f; + float to = 17f / 16f; + FluidRenderer.renderFluidBox(fluids.get(0), from, from, from, to, to, to, buffer, matrixStack, LightTexture.FULL_BRIGHT, false); matrixStack.popPose(); float width = 1 / 128f * squeeze; matrixStack.translate(scale / 2f, scale * 1.5f, scale / 2f); UIRenderHelper.flipForGuiRender(matrixStack); matrixStack.scale(16, 16, 16); - matrixStack.translate(-width / 2, 0, -width / 2); - FluidRenderer.renderTiledFluidBB(fluids.get(0), 0, -0.001f, 0, width, 2.001f, width, buffer, matrixStack, LightTexture.FULL_BRIGHT, + matrixStack.translate(-0.5f, 0, -0.5f); + from = -width / 2 + 0.5f; + to = width / 2 + 0.5f; + FluidRenderer.renderFluidBox(fluids.get(0), from, 0, from, to, 2, to, buffer, matrixStack, LightTexture.FULL_BRIGHT, false); buffer.endBatch(); Lighting.setupFor3DItems(); 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 0a7c53bbe..fdae33fc3 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 @@ -4,11 +4,11 @@ import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlocks; -import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.render.Compartment; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.SuperByteBufferCache; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; @@ -29,7 +29,7 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber(Dist.CLIENT) public class KineticTileEntityRenderer extends SafeTileEntityRenderer { - public static final Compartment KINETIC_TILE = new Compartment<>(); + public static final SuperByteBufferCache.Compartment KINETIC_TILE = new SuperByteBufferCache.Compartment<>(); public static boolean rainbowMode = false; public KineticTileEntityRenderer(BlockEntityRendererProvider.Context context) { @@ -47,7 +47,7 @@ public class KineticTileEntityRenderer extends SafeTileEntityRenderer drawCallback) { - SuperByteBuffer middle = PartialBufferer.get(getMiddleForState(blockState, lit), blockState); - SuperByteBuffer top = PartialBufferer.get(getTopForState(blockState), blockState); + SuperByteBuffer middle = CachedBufferer.partial(getMiddleForState(blockState, lit), blockState); + SuperByteBuffer top = CachedBufferer.partial(getTopForState(blockState), blockState); if (local != null) { middle.transform(local); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java index 8f9fe31a0..71dd3f5d5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java @@ -7,7 +7,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity.Animation; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -38,8 +38,8 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer { VertexConsumer vb = buffer.getBuffer(RenderType.solid()); // Render Hands - SuperByteBuffer hourHand = PartialBufferer.get(AllBlockPartials.CUCKOO_HOUR_HAND, blockState); - SuperByteBuffer minuteHand = PartialBufferer.get(AllBlockPartials.CUCKOO_MINUTE_HAND, blockState); + SuperByteBuffer hourHand = CachedBufferer.partial(AllBlockPartials.CUCKOO_HOUR_HAND, blockState); + SuperByteBuffer minuteHand = CachedBufferer.partial(AllBlockPartials.CUCKOO_MINUTE_HAND, blockState); float hourAngle = clock.hourHand.get(partialTicks); float minuteAngle = clock.minuteHand.get(partialTicks); rotateHand(hourHand, hourAngle, direction).light(light) @@ -48,8 +48,8 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer { .renderInto(ms, vb); // Doors - SuperByteBuffer leftDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_LEFT_DOOR, blockState); - SuperByteBuffer rightDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_RIGHT_DOOR, blockState); + SuperByteBuffer leftDoor = CachedBufferer.partial(AllBlockPartials.CUCKOO_LEFT_DOOR, blockState); + SuperByteBuffer rightDoor = CachedBufferer.partial(AllBlockPartials.CUCKOO_RIGHT_DOOR, blockState); float angle = 0; float offset = 0; @@ -80,7 +80,7 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer { offset = -(angle / 135) * 1 / 2f + 10 / 16f; PartialModel partialModel = (clock.animationType == Animation.PIG ? AllBlockPartials.CUCKOO_PIG : AllBlockPartials.CUCKOO_CREEPER); SuperByteBuffer figure = - PartialBufferer.get(partialModel, blockState); + CachedBufferer.partial(partialModel, blockState); figure.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(direction.getCounterClockWise()))); figure.translate(offset, 0, 0); figure.light(light) @@ -95,7 +95,7 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer { } private SuperByteBuffer transform(PartialModel partial, KineticTileEntity te) { - return PartialBufferer.getFacing(partial, te.getBlockState(), te.getBlockState() + return CachedBufferer.partialFacing(partial, te.getBlockState(), te.getBlockState() .getValue(CuckooClockBlock.HORIZONTAL_FACING) .getOpposite()); } 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 6b03579a2..ad8101b37 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 @@ -13,7 +13,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase; import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -171,7 +171,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer boolean punching = te.mode == Mode.PUNCH; float yRot = AngleHelper.horizontalAngle(facing) + 180; - float zRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; + float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; boolean displayMode = facing == Direction.UP && te.getSpeed() == 0 && !punching; ms.mulPose(Vector3f.YP.rotationDegrees(yRot)); if (!displayMode) { - ms.mulPose(Vector3f.XP.rotationDegrees(zRot)); + ms.mulPose(Vector3f.XP.rotationDegrees(xRot)); ms.translate(0, 0, -11 / 16f); } @@ -116,8 +116,8 @@ public class DeployerRenderer extends SafeTileEntityRenderer BlockState blockState = te.getBlockState(); Vec3 offset = getHandOffset(te, partialTicks, blockState); - SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); - SuperByteBuffer hand = PartialBufferer.get(te.getHandPose(), blockState); + SuperByteBuffer pole = CachedBufferer.partial(AllBlockPartials.DEPLOYER_POLE, blockState); + SuperByteBuffer hand = CachedBufferer.partial(te.getHandPose(), blockState); transform(pole.translate(offset.x, offset.y, offset.z), blockState, true) .light(light) @@ -139,15 +139,15 @@ public class DeployerRenderer extends SafeTileEntityRenderer private static SuperByteBuffer transform(SuperByteBuffer buffer, BlockState deployerState, boolean axisDirectionMatters) { Direction facing = deployerState.getValue(FACING); - float zRotLast = + float yRot = AngleHelper.horizontalAngle(facing); + float xRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; + float zRot = axisDirectionMatters && (deployerState.getValue(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Axis.Z) ? 90 : 0; - float yRot = AngleHelper.horizontalAngle(facing); - float zRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; - buffer.rotateCentered(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI)); buffer.rotateCentered(Direction.UP, (float) ((yRot) / 180 * Math.PI)); - buffer.rotateCentered(Direction.SOUTH, (float) ((zRotLast) / 180 * Math.PI)); + buffer.rotateCentered(Direction.EAST, (float) ((xRot) / 180 * Math.PI)); + buffer.rotateCentered(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI)); return buffer; } @@ -158,8 +158,8 @@ public class DeployerRenderer extends SafeTileEntityRenderer Mode mode = NBTHelper.readEnum(context.tileData, "Mode", Mode.class); PartialModel handPose = getHandPose(mode); - SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); - SuperByteBuffer hand = PartialBufferer.get(handPose, blockState); + SuperByteBuffer pole = CachedBufferer.partial(AllBlockPartials.DEPLOYER_POLE, blockState); + SuperByteBuffer hand = CachedBufferer.partial(handPose, blockState); double factor; if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { 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 6e56c6595..274f95237 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 @@ -8,7 +8,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -38,9 +38,9 @@ public class EncasedFanRenderer extends KineticTileEntityRenderer { int lightInFront = LevelRenderer.getLightColor(te.getLevel(), te.getBlockPos().relative(direction)); SuperByteBuffer shaftHalf = - PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction.getOpposite()); + CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction.getOpposite()); SuperByteBuffer fanInner = - PartialBufferer.getFacing(AllBlockPartials.ENCASED_FAN_INNER, te.getBlockState(), direction.getOpposite()); + CachedBufferer.partialFacing(AllBlockPartials.ENCASED_FAN_INNER, te.getBlockState(), direction.getOpposite()); float time = AnimationTickHolder.getRenderTime(te.getLevel()); float speed = te.getSpeed() * 5; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java index 20954228a..34ae99539 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java @@ -25,7 +25,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; public class FlywheelBlock extends HorizontalKineticBlock implements ITE { - public static EnumProperty CONNECTION = EnumProperty.create("connection", ConnectionState.class); + public static final EnumProperty CONNECTION = EnumProperty.create("connection", ConnectionState.class); public FlywheelBlock(Properties properties) { super(properties); 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 77af77f27..c816de46d 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 @@ -9,7 +9,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock.ConnectionState; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -56,18 +56,18 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { boolean flip = blockState.getValue(FlywheelBlock.CONNECTION) == ConnectionState.LEFT; transformConnector( - rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true, + rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true, rotation, flip).light(light) .renderInto(ms, vb); transformConnector( - rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true, + rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true, rotation, flip).light(light) .renderInto(ms, vb); - transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState), connection), + transformConnector(rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState), connection), true, false, rotation, flip).light(light) .renderInto(ms, vb); - transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState), connection), + transformConnector(rotateToFacing(CachedBufferer.partial(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState), connection), false, false, rotation, flip).light(light) .renderInto(ms, vb); } @@ -78,7 +78,7 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { private void renderFlywheel(KineticTileEntity te, PoseStack ms, int light, BlockState blockState, float angle, VertexConsumer vb) { BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); Direction facing = referenceState.getValue(BlockStateProperties.HORIZONTAL_FACING); - SuperByteBuffer wheel = PartialBufferer.getFacing(AllBlockPartials.FLYWHEEL, referenceState, facing); + SuperByteBuffer wheel = CachedBufferer.partialFacing(AllBlockPartials.FLYWHEEL, referenceState, facing); kineticRotationTransform(wheel, te, blockState.getValue(HORIZONTAL_FACING) .getAxis(), AngleHelper.rad(angle), light); wheel.renderInto(ms, vb); @@ -86,7 +86,7 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() + return CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() .getValue(BlockStateProperties.HORIZONTAL_FACING) .getOpposite()); } 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 5d4d32ef7..1c9c904bd 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 @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -33,7 +33,7 @@ public class EngineRenderer extends SafeTileEntityRe Direction facing = te.getBlockState() .getValue(EngineBlock.FACING); float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing)); - PartialBufferer.get(frame, te.getBlockState()) + CachedBufferer.partial(frame, te.getBlockState()) .rotateCentered(Direction.UP, angle) .translate(0, 0, -1) .light(light) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java index a9931538e..52c2982cc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.millstone; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; @@ -16,7 +16,7 @@ public class MillstoneRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderPartial(AllBlockPartials.MILLSTONE_COG, te.getBlockState()); + return CachedBufferer.partial(AllBlockPartials.MILLSTONE_COG, te.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 cd264ce0b..83d05442f 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 @@ -6,7 +6,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -38,7 +38,7 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer { VertexConsumer vb = buffer.getBuffer(RenderType.solid()); - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState); + SuperByteBuffer superBuffer = CachedBufferer.partial(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState); standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb); float renderedHeadOffset = mixer.getRenderedHeadOffset(partialTicks); @@ -46,12 +46,12 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer { float time = AnimationTickHolder.getRenderTime(te.getLevel()); float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI; - SuperByteBuffer poleRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_POLE, blockState); + SuperByteBuffer poleRender = CachedBufferer.partial(AllBlockPartials.MECHANICAL_MIXER_POLE, blockState); poleRender.translate(0, -renderedHeadOffset, 0) .light(light) .renderInto(ms, vb); - SuperByteBuffer headRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState); + SuperByteBuffer headRender = CachedBufferer.partial(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState); headRender.rotateCentered(Direction.UP, angle) .translate(0, -renderedHeadOffset, 0) .light(light) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java index 421109d1d..e027b6365 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.motor; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; @@ -16,7 +16,7 @@ public class CreativeMotorRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState()); + return CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState()); } } 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 cdf0b95ef..5523a7b2e 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 @@ -7,7 +7,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.MultiBufferSource; @@ -36,7 +36,7 @@ public class MechanicalPressRenderer extends KineticTileEntityRenderer { BlockState blockState = te.getBlockState(); float renderedHeadOffset = ((MechanicalPressTileEntity) te).getRenderedHeadOffset(partialTicks); - SuperByteBuffer headRender = PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState, blockState.getValue(HORIZONTAL_FACING)); + SuperByteBuffer headRender = CachedBufferer.partialFacing(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState, blockState.getValue(HORIZONTAL_FACING)); headRender.translate(0, -renderedHeadOffset, 0) .light(light) .renderInto(ms, buffer.getBuffer(RenderType.solid())); 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 5d1660b98..f71765866 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 @@ -8,13 +8,12 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; @@ -82,7 +81,7 @@ public class SawRenderer extends SafeTileEntityRenderer { rotate = true; } - SuperByteBuffer superBuffer = PartialBufferer.getFacing(partial, blockState); + SuperByteBuffer superBuffer = CachedBufferer.partialFacing(partial, blockState); if (rotate) { superBuffer.rotateCentered(Direction.UP, AngleHelper.rad(90)); } @@ -150,9 +149,9 @@ public class SawRenderer extends SafeTileEntityRenderer { if (state.getValue(FACING) .getAxis() .isHorizontal()) - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, + return CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, state.rotate(te.getLevel(), te.getBlockPos(), Rotation.CLOCKWISE_180)); - return CreateClient.BUFFER_CACHE.renderBlockIn(KineticTileEntityRenderer.KINETIC_TILE, + return CachedBufferer.block(KineticTileEntityRenderer.KINETIC_TILE, getRenderedBlockState(te)); } @@ -181,14 +180,14 @@ public class SawRenderer extends SafeTileEntityRenderer { SuperByteBuffer superBuffer; if (SawBlock.isHorizontal(state)) { if (shouldAnimate) - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE, state); + superBuffer = CachedBufferer.partial(AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE, state); else - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE, state); + superBuffer = CachedBufferer.partial(AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE, state); } else { if (shouldAnimate) - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE, state); + superBuffer = CachedBufferer.partial(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE, state); else - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE, state); + superBuffer = CachedBufferer.partial(AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE, state); } PoseStack m = matrices.getModel(); @@ -199,7 +198,7 @@ public class SawRenderer extends SafeTileEntityRenderer { .rotateX(AngleHelper.verticalAngle(facing)); if (!SawBlock.isHorizontal(state)) MatrixTransformStack.of(m) - .rotateZ(state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 0 : 90); + .rotateZ(state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 90 : 0); MatrixTransformStack.of(m) .unCentre(); 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 682ab368c..b3961f558 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 @@ -6,7 +6,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -35,7 +35,7 @@ public class BearingRenderer extends KineticTileEntityRenderer { .getValue(BlockStateProperties.FACING); PartialModel top = bearingTe.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = PartialBufferer.get(top, te.getBlockState()); + SuperByteBuffer superBuffer = CachedBufferer.partial(top, te.getBlockState()); float interpolatedAngle = bearingTe.getInterpolatedAngle(partialTicks - 1); kineticRotationTransform(superBuffer, te, facing.getAxis(), (float) (interpolatedAngle / 180 * Math.PI), light); @@ -50,7 +50,7 @@ public class BearingRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() + return CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() .getValue(BearingBlock.FACING) .getOpposite()); } 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 0d62a4738..e2b396a71 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 @@ -15,7 +15,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Ori import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; +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; @@ -38,7 +38,7 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { Direction facing = context.state.getValue(BlockStateProperties.FACING); PartialModel top = AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = PartialBufferer.get(top, context.state); + SuperByteBuffer superBuffer = CachedBufferer.partial(top, context.state); float renderPartialTicks = AnimationTickHolder.getPartialTicks(); // rotate to match blockstate diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java index 2f5e78640..d506ef8ff 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 @@ -16,61 +16,61 @@ import net.minecraft.util.Mth; public class StickerInstance extends TileEntityInstance implements IDynamicInstance { - float lastOffset = Float.NaN; - final Direction facing; - final boolean fakeWorld; - final int offset; + float lastOffset = Float.NaN; + final Direction facing; + final boolean fakeWorld; + final int offset; - private final ModelData head; + private final ModelData head; - public StickerInstance(MaterialManager modelManager, StickerTileEntity tile) { - super(modelManager, tile); + public StickerInstance(MaterialManager modelManager, StickerTileEntity tile) { + super(modelManager, tile); - head = getTransformMaterial().getModel(AllBlockPartials.STICKER_HEAD, blockState).createInstance(); + head = getTransformMaterial().getModel(AllBlockPartials.STICKER_HEAD, blockState).createInstance(); - fakeWorld = tile.getLevel() != Minecraft.getInstance().level; - facing = blockState.getValue(StickerBlock.FACING); - offset = blockState.getValue(StickerBlock.EXTENDED) ? 1 : 0; + fakeWorld = tile.getLevel() != Minecraft.getInstance().level; + facing = blockState.getValue(StickerBlock.FACING); + offset = blockState.getValue(StickerBlock.EXTENDED) ? 1 : 0; - animateHead(offset); - } + animateHead(offset); + } - @Override - public void beginFrame() { - float offset = tile.piston.getValue(AnimationTickHolder.getPartialTicks()); + @Override + public void beginFrame() { + float offset = tile.piston.getValue(AnimationTickHolder.getPartialTicks()); - if (fakeWorld) - offset = this.offset; + if (fakeWorld) + offset = this.offset; - if (Mth.equal(offset, lastOffset)) - return; + if (Mth.equal(offset, lastOffset)) + return; - animateHead(offset); + animateHead(offset); - lastOffset = offset; - } + lastOffset = offset; + } - private void animateHead(float offset) { - PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) - .translate(getInstancePosition()) - .nudge(tile.hashCode()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing) + 90) - .unCentre() - .translate(0, (offset * offset) * 4 / 16f, 0); + private void animateHead(float offset) { + PoseStack stack = new PoseStack(); + MatrixTransformStack.of(stack) + .translate(getInstancePosition()) + .nudge(tile.hashCode()) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(AngleHelper.verticalAngle(facing) + 90) + .unCentre() + .translate(0, (offset * offset) * 4 / 16f, 0); - head.setTransform(stack); - } + head.setTransform(stack); + } - @Override - public void updateLight() { - relight(pos, head); - } + @Override + public void updateLight() { + relight(pos, head); + } - @Override - public void remove() { - head.delete(); - } + @Override + public void remove() { + head.delete(); + } } 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 d5bb44269..20ca19568 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 @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -28,7 +28,7 @@ public class StickerRenderer extends SafeTileEntityRenderer { if (Backend.getInstance().canUseInstancing(te.getLevel())) return; BlockState state = te.getBlockState(); - SuperByteBuffer head = PartialBufferer.get(AllBlockPartials.STICKER_HEAD, state); + SuperByteBuffer head = CachedBufferer.partial(AllBlockPartials.STICKER_HEAD, state); float offset = te.piston.getValue(AnimationTickHolder.getPartialTicks(te.getLevel())); if (te.getLevel() != Minecraft.getInstance().level && !te.isVirtual()) @@ -36,9 +36,9 @@ public class StickerRenderer extends SafeTileEntityRenderer { Direction facing = state.getValue(StickerBlock.FACING); head.matrixStacker() - .nudge(te.hashCode()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) + .nudge(te.hashCode()) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) .unCentre() .translate(0, (offset * offset) * 4 / 16f, 0); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java index abf49a69a..bb2c7e68a 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 @@ -5,7 +5,6 @@ import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; @@ -19,93 +18,93 @@ import net.minecraft.util.Mth; public class GantryCarriageInstance extends ShaftInstance implements IDynamicInstance { - private final ModelData gantryCogs; + private final ModelData gantryCogs; - final Direction facing; - final Boolean alongFirst; - final Direction.Axis rotationAxis; - final float rotationMult; - final BlockPos visualPos; + final Direction facing; + final Boolean alongFirst; + final Direction.Axis rotationAxis; + final float rotationMult; + final BlockPos visualPos; - private float lastAngle = Float.NaN; + private float lastAngle = Float.NaN; - public GantryCarriageInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); + public GantryCarriageInstance(MaterialManager dispatcher, KineticTileEntity tile) { + super(dispatcher, tile); - gantryCogs = getTransformMaterial() - .getModel(AllBlockPartials.GANTRY_COGS, blockState) - .createInstance(); + gantryCogs = getTransformMaterial() + .getModel(AllBlockPartials.GANTRY_COGS, blockState) + .createInstance(); - facing = blockState.getValue(GantryCarriageBlock.FACING); - alongFirst = blockState.getValue(GantryCarriageBlock.AXIS_ALONG_FIRST_COORDINATE); - rotationAxis = KineticTileEntityRenderer.getRotationAxisOf(tile); + facing = blockState.getValue(GantryCarriageBlock.FACING); + alongFirst = blockState.getValue(GantryCarriageBlock.AXIS_ALONG_FIRST_COORDINATE); + rotationAxis = KineticTileEntityRenderer.getRotationAxisOf(tile); - rotationMult = getRotationMultiplier(getGantryAxis(), facing); + rotationMult = getRotationMultiplier(getGantryAxis(), facing); - visualPos = facing.getAxisDirection() == Direction.AxisDirection.POSITIVE ? tile.getBlockPos() - : tile.getBlockPos() - .relative(facing.getOpposite()); + visualPos = facing.getAxisDirection() == Direction.AxisDirection.POSITIVE ? tile.getBlockPos() + : tile.getBlockPos() + .relative(facing.getOpposite()); - animateCogs(getCogAngle()); - } + animateCogs(getCogAngle()); + } - @Override - public void beginFrame() { - float cogAngle = getCogAngle(); + @Override + public void beginFrame() { + float cogAngle = getCogAngle(); - if (Mth.equal(cogAngle, lastAngle)) return; + if (Mth.equal(cogAngle, lastAngle)) return; - animateCogs(cogAngle); - } + animateCogs(cogAngle); + } - private float getCogAngle() { - return GantryCarriageRenderer.getAngleForTe(tile, visualPos, rotationAxis) * rotationMult; - } + private float getCogAngle() { + return GantryCarriageRenderer.getAngleForTe(tile, visualPos, rotationAxis) * rotationMult; + } - private void animateCogs(float cogAngle) { - PoseStack ms = new PoseStack(); - MatrixTransformStack.of(ms) - .translate(getInstancePosition()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(alongFirst ^ facing.getAxis() == Direction.Axis.Z ? 90 : 0) - .translate(0, -9 / 16f, 0) - .multiply(Vector3f.XP.rotation(-cogAngle)) - .translate(0, 9 / 16f, 0) - .unCentre(); + private void animateCogs(float cogAngle) { + PoseStack ms = new PoseStack(); + MatrixTransformStack.of(ms) + .translate(getInstancePosition()) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) + .rotateY(alongFirst ^ facing.getAxis() == Direction.Axis.X ? 0 : 90) + .translate(0, -9 / 16f, 0) + .rotateX(-cogAngle) + .translate(0, 9 / 16f, 0) + .unCentre(); - gantryCogs.setTransform(ms); - } + gantryCogs.setTransform(ms); + } - static float getRotationMultiplier(Direction.Axis gantryAxis, Direction facing) { - float multiplier = 1; - if (gantryAxis == Direction.Axis.Z) - if (facing == Direction.DOWN) - multiplier *= -1; - if (gantryAxis == Direction.Axis.Y) - if (facing == Direction.NORTH || facing == Direction.EAST) - multiplier *= -1; + static float getRotationMultiplier(Direction.Axis gantryAxis, Direction facing) { + float multiplier = 1; + if (gantryAxis == Direction.Axis.X) + if (facing == Direction.UP) + multiplier *= -1; + if (gantryAxis == Direction.Axis.Y) + if (facing == Direction.NORTH || facing == Direction.EAST) + multiplier *= -1; - return multiplier; - } + return multiplier; + } - private Direction.Axis getGantryAxis() { - Direction.Axis gantryAxis = Direction.Axis.X; - for (Direction.Axis axis : Iterate.axes) - if (axis != rotationAxis && axis != facing.getAxis()) - gantryAxis = axis; - return gantryAxis; - } + private Direction.Axis getGantryAxis() { + Direction.Axis gantryAxis = Direction.Axis.X; + for (Direction.Axis axis : Iterate.axes) + if (axis != rotationAxis && axis != facing.getAxis()) + gantryAxis = axis; + return gantryAxis; + } - @Override - public void updateLight() { - relight(pos, gantryCogs, rotatingModel); - } + @Override + public void updateLight() { + relight(pos, gantryCogs, rotatingModel); + } - @Override - public void remove() { - super.remove(); - gantryCogs.delete(); - } + @Override + public void remove() { + super.remove(); + gantryCogs.delete(); + } } 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 b08996a15..d65f65cb4 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 @@ -2,11 +2,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ga import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -48,21 +47,21 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { if (axis != rotationAxis && axis != facing.getAxis()) gantryAxis = axis; - if (gantryAxis == Axis.Z) - if (facing == Direction.DOWN) + if (gantryAxis == Axis.X) + if (facing == Direction.UP) angleForTe *= -1; if (gantryAxis == Axis.Y) if (facing == Direction.NORTH || facing == Direction.EAST) angleForTe *= -1; - SuperByteBuffer cogs = PartialBufferer.get(AllBlockPartials.GANTRY_COGS, state); + SuperByteBuffer cogs = CachedBufferer.partial(AllBlockPartials.GANTRY_COGS, state); cogs.matrixStacker() .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(alongFirst ^ facing.getAxis() == Axis.Z ? 90 : 0) + .rotateY(alongFirst ^ facing.getAxis() == Axis.X ? 0 : 90) .translate(0, -9 / 16f, 0) - .multiply(Vector3f.XP.rotation(-angleForTe)) + .rotateX(-angleForTe) .translate(0, 9 / 16f, 0) .unCentre(); @@ -74,7 +73,7 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { public static float getAngleForTe(KineticTileEntity te, final BlockPos pos, Axis axis) { float time = AnimationTickHolder.getRenderTime(te.getLevel()); float offset = getRotationOffsetForPosition(te, pos, axis); - return ((time * te.getSpeed() * 3f / 20 + offset) % 360) / 180 * (float) Math.PI; + return (time * te.getSpeed() * 3f / 20 + offset) % 360; } @Override 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 4bb0cf025..5d8564541 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 @@ -43,7 +43,7 @@ public class GlueInstance extends EntityInstance implements ITi Instancer instancer = getInstancer(materialManager, entity); Direction face = entity.getFacingDirection(); - rotation = new Quaternion(AngleHelper.verticalAngle(face), AngleHelper.horizontalAngleNew(face), 0, true); + rotation = new Quaternion(AngleHelper.verticalAngle(face), AngleHelper.horizontalAngle(face), 0, true); model = new ConditionalInstance<>(instancer) .withCondition(this::shouldShow) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java index 7fd4fd8bd..298486136 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java @@ -70,7 +70,7 @@ public class SuperGlueRenderer extends EntityRenderer { ms.pushPose(); MatrixTransformStack.of(ms) - .rotateY(AngleHelper.horizontalAngleNew(face)) + .rotateY(AngleHelper.horizontalAngle(face)) .rotateX(AngleHelper.verticalAngle(face)); Pose peek = ms.last(); 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 5b88c414c..f60c903ab 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 @@ -7,7 +7,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -61,8 +61,8 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { BlockState blockState = te.getBlockState(); BlockPos pos = te.getBlockPos(); - SuperByteBuffer halfMagnet = PartialBufferer.get(this.halfMagnet, blockState); - SuperByteBuffer halfRope = PartialBufferer.get(this.halfRope, blockState); + SuperByteBuffer halfMagnet = CachedBufferer.partial(this.halfMagnet, blockState); + SuperByteBuffer halfRope = CachedBufferer.partial(this.halfRope, blockState); SuperByteBuffer magnet = renderMagnet(te); SuperByteBuffer rope = renderRope(te); @@ -109,7 +109,7 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected SuperByteBuffer getRotatedCoil(KineticTileEntity te) { BlockState blockState = te.getBlockState(); - return PartialBufferer.getFacing(getCoil(), blockState, + return CachedBufferer.partialFacing(getCoil(), blockState, Direction.get(AxisDirection.POSITIVE, getShaftAxis(te))); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java index 4461909be..91624fe30 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java @@ -8,7 +8,6 @@ import com.simibubi.create.foundation.block.ITE; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -24,7 +23,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; @@ -36,8 +34,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; public class PulleyBlock extends HorizontalAxisKineticBlock implements ITE { - public static EnumProperty HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; - public PulleyBlock(Properties properties) { super(properties); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java index 877c79d76..ce547d079 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java @@ -3,9 +3,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pu import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; -import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; @@ -31,12 +31,12 @@ public class PulleyRenderer extends AbstractPulleyRenderer { @Override protected SuperByteBuffer renderRope(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlock(AllBlocks.ROPE.getDefaultState()); + return CachedBufferer.block(AllBlocks.ROPE.getDefaultState()); } @Override protected SuperByteBuffer renderMagnet(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlock(AllBlocks.PULLEY_MAGNET.getDefaultState()); + return CachedBufferer.block(AllBlocks.PULLEY_MAGNET.getDefaultState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java index ab5961028..90df3034b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java @@ -1,12 +1,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import static com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher.buildStructureBuffer; - import com.jozufozu.flywheel.event.RenderLayerEvent; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.foundation.render.Compartment; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.SuperByteBufferCache; import com.simibubi.create.foundation.utility.Pair; import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; @@ -14,7 +12,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.LevelAccessor; public class SBBContraptionManager extends ContraptionRenderManager { - public static final Compartment> CONTRAPTION = new Compartment<>(); + public static final SuperByteBufferCache.Compartment> CONTRAPTION = new SuperByteBufferCache.Compartment<>(); public SBBContraptionManager(LevelAccessor world) { super(world); @@ -45,7 +43,7 @@ public class SBBContraptionManager extends ContraptionRenderManager buildStructureBuffer(renderInfo.renderWorld, renderInfo.contraption, layer)); + SuperByteBuffer contraptionBuffer = CreateClient.BUFFER_CACHE.get(CONTRAPTION, Pair.of(renderInfo.contraption, layer), () -> ContraptionRenderDispatcher.buildStructureBuffer(renderInfo.renderWorld, renderInfo.contraption, layer)); if (!contraptionBuffer.isEmpty()) { ContraptionMatrices matrices = renderInfo.getMatrices(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java index 7e7a9a149..b58716450 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java @@ -10,7 +10,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; @@ -66,9 +66,9 @@ public class CouplingRenderer { BlockState renderState = Blocks.AIR.defaultBlockState(); VertexConsumer builder = buffer.getBuffer(RenderType.solid()); - SuperByteBuffer attachment = PartialBufferer.get(AllBlockPartials.COUPLING_ATTACHMENT, renderState); - SuperByteBuffer ring = PartialBufferer.get(AllBlockPartials.COUPLING_RING, renderState); - SuperByteBuffer connector = PartialBufferer.get(AllBlockPartials.COUPLING_CONNECTOR, renderState); + SuperByteBuffer attachment = CachedBufferer.partial(AllBlockPartials.COUPLING_ATTACHMENT, renderState); + SuperByteBuffer ring = CachedBufferer.partial(AllBlockPartials.COUPLING_RING, renderState); + SuperByteBuffer connector = CachedBufferer.partial(AllBlockPartials.COUPLING_CONNECTOR, renderState); Vec3 zero = Vec3.ZERO; Vec3 firstEndpoint = transforms.getFirst() 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 68391015c..3ab5f528e 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 @@ -5,7 +5,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -35,7 +35,7 @@ public class PumpRenderer extends KineticTileEntityRenderer { float angle = Mth.lerp(pump.arrowDirection.getValue(partialTicks), 0, 90) - 90; for (float yRot : new float[] { 0, 90 }) { ms.pushPose(); - SuperByteBuffer arrow = PartialBufferer.get(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); + SuperByteBuffer arrow = CachedBufferer.partial(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); Direction direction = blockState.getValue(PumpBlock.FACING); MatrixTransformStack.of(ms) .centre() @@ -53,7 +53,7 @@ public class PumpRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PUMP_COG, te.getBlockState()); + return CachedBufferer.partialFacing(AllBlockPartials.MECHANICAL_PUMP_COG, te.getBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java index 552e96172..5f14a97d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java @@ -4,7 +4,7 @@ import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.AbstractPulleyRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; @@ -31,12 +31,12 @@ public class HosePulleyRenderer extends AbstractPulleyRenderer { @Override protected SuperByteBuffer renderRope(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.HOSE, te.getBlockState()); + return CachedBufferer.partial(AllBlockPartials.HOSE, te.getBlockState()); } @Override protected SuperByteBuffer renderMagnet(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.HOSE_MAGNET, te.getBlockState()); + return CachedBufferer.partial(AllBlockPartials.HOSE_MAGNET, te.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java index d0b7d2a21..a727f6ace 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java @@ -149,7 +149,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer { float yOffset = (11 / 16f) * level; ms.pushPose(); ms.translate(0, yOffset, 0); - FluidRenderer.renderTiledFluidBB(fluidStack, min, min - yOffset, min, max, min, max, buffer, ms, light, + FluidRenderer.renderFluidBox(fluidStack, min, min - yOffset, min, max, min, max, buffer, ms, light, false); ms.popPose(); } @@ -58,7 +58,7 @@ public class SpoutRenderer extends SafeTileEntityRenderer { if (processingTicks != -1) { radius = (float) (Math.pow(((2 * processingProgress) - 1), 2) - 1); AABB bb = new AABB(0.5, .5, 0.5, 0.5, -1.2, 0.5).inflate(radius / 32f); - FluidRenderer.renderTiledFluidBB(fluidStack, (float) bb.minX, (float) bb.minY, (float) bb.minZ, + FluidRenderer.renderFluidBox(fluidStack, (float) bb.minX, (float) bb.minY, (float) bb.minZ, (float) bb.maxX, (float) bb.maxY, (float) bb.maxZ, buffer, ms, light, true); } @@ -72,7 +72,7 @@ public class SpoutRenderer extends SafeTileEntityRenderer { ms.pushPose(); for (PartialModel bit : BITS) { - PartialBufferer.get(bit, te.getBlockState()) + CachedBufferer.partial(bit, te.getBlockState()) .light(light) .renderInto(ms, buffer.getBuffer(RenderType.solid())); ms.translate(0, -3 * squeeze / 32f, 0); 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 40130bf8a..ad63cec1b 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 @@ -35,7 +35,7 @@ public class FluidValveInstance extends ShaftInstance implements IDynamicInstanc Direction.Axis pipeAxis = FluidValveBlock.getPipeAxis(blockState); Direction.Axis shaftAxis = KineticTileEntityRenderer.getRotationAxisOf(tile); - boolean twist = pipeAxis.isHorizontal() && shaftAxis == Direction.Axis.Z || pipeAxis.isVertical(); + boolean twist = pipeAxis.isHorizontal() && shaftAxis == Direction.Axis.X || pipeAxis.isVertical(); pointerRotationOffset = twist ? 90 : 0; pointer = materialManager.defaultSolid() 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 351c5eedd..c5c309bf4 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 @@ -6,7 +6,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -32,7 +32,7 @@ public class FluidValveRenderer extends KineticTileEntityRenderer { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); BlockState blockState = te.getBlockState(); - SuperByteBuffer pointer = PartialBufferer.get(AllBlockPartials.FLUID_VALVE_POINTER, blockState); + SuperByteBuffer pointer = CachedBufferer.partial(AllBlockPartials.FLUID_VALVE_POINTER, blockState); Direction facing = blockState.getValue(FluidValveBlock.FACING); if (!(te instanceof FluidValveTileEntity)) @@ -43,7 +43,7 @@ public class FluidValveRenderer extends KineticTileEntityRenderer { Axis shaftAxis = KineticTileEntityRenderer.getRotationAxisOf(te); int pointerRotationOffset = 0; - if (pipeAxis.isHorizontal() && shaftAxis == Axis.Z || pipeAxis.isVertical()) + if (pipeAxis.isHorizontal() && shaftAxis == Axis.X || pipeAxis.isVertical()) pointerRotationOffset = 90; MatrixTransformStack.of(ms) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java index 52aae668b..a8311a3c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java @@ -63,7 +63,7 @@ public class FluidTankRenderer extends SafeTileEntityRenderer { float partial = Mth.clamp(units / totalUnits, 0, 1); xMax += partial * 12 / 16f; - FluidRenderer.renderTiledFluidBB(renderedFluid, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, + FluidRenderer.renderFluidBox(renderedFluid, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false); xMin = xMax; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java index 48792eec6..c27cf7bea 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java @@ -4,7 +4,7 @@ import com.jozufozu.flywheel.core.PartialModel; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -33,7 +33,7 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer { PartialModel beltPartial = getBeltPartial(diagonal, start, end, bottom); - SuperByteBuffer beltBuffer = PartialBufferer.get(beltPartial, blockState) + SuperByteBuffer beltBuffer = CachedBufferer.partial(beltPartial, blockState) .light(light); SpriteShiftEntry spriteShift = getSpriteShiftEntry(color, diagonal, bottom); @@ -142,7 +141,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { return stack; }; - SuperByteBuffer superBuffer = CreateClient.BUFFER_CACHE.renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, matrixStackSupplier); + SuperByteBuffer superBuffer = CachedBufferer.partialDirectional(AllBlockPartials.BELT_PULLEY, blockState, dir, matrixStackSupplier); KineticTileEntityRenderer.standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb); } } 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 675249471..f8f5754a1 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 @@ -6,7 +6,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -45,7 +45,7 @@ public class BracketedKineticTileRenderer extends KineticTileEntityRenderer { Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); renderRotatingBuffer(te, - PartialBufferer.getFacingVertical(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, te.getBlockState(), facing), + CachedBufferer.partialFacingVertical(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, te.getBlockState(), facing), ms, buffer.getBuffer(RenderType.solid()), light); float offset = getShaftAngleOffset(axis, pos); @@ -53,7 +53,7 @@ public class BracketedKineticTileRenderer extends KineticTileEntityRenderer { float angle = ((time * te.getSpeed() * 3f / 10 + offset) % 360) / 180 * (float) Math.PI; SuperByteBuffer shaft = - PartialBufferer.getFacingVertical(AllBlockPartials.COGWHEEL_SHAFT, te.getBlockState(), facing); + CachedBufferer.partialFacingVertical(AllBlockPartials.COGWHEEL_SHAFT, te.getBlockState(), facing); kineticRotationTransform(shaft, te, axis, angle, light); shaft.renderInto(ms, buffer.getBuffer(RenderType.solid())); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java index c82b5f669..158945ebd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.relays.encased; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; @@ -29,7 +29,7 @@ public class ShaftlessCogRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacingVertical( + return CachedBufferer.partialFacingVertical( large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL, te.getBlockState(), Direction.fromAxisAndDirection(te.getBlockState() .getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java index 82362fb9d..dd7dce660 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java @@ -6,7 +6,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Iterate; @@ -52,7 +52,7 @@ public class SplitShaftRenderer extends KineticTileEntityRenderer { angle = angle / 180f * (float) Math.PI; SuperByteBuffer superByteBuffer = - PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); + CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); kineticRotationTransform(superByteBuffer, te, axis, angle, light); superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.solid())); } 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 4a83e994e..ce495f0bd 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 @@ -8,7 +8,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock.Type; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.Iterate; @@ -48,8 +48,8 @@ public class GaugeRenderer extends KineticTileEntityRenderer { PartialModel partialModel = (type == Type.SPEED ? AllBlockPartials.GAUGE_HEAD_SPEED : AllBlockPartials.GAUGE_HEAD_STRESS); SuperByteBuffer headBuffer = - PartialBufferer.get(partialModel, gaugeState); - SuperByteBuffer dialBuffer = PartialBufferer.get(AllBlockPartials.GAUGE_DIAL, gaugeState); + CachedBufferer.partial(partialModel, gaugeState); + SuperByteBuffer dialBuffer = CachedBufferer.partial(AllBlockPartials.GAUGE_DIAL, gaugeState); float dialPivot = 5.75f / 16; float progress = Mth.lerp(partialTicks, gaugeTE.prevDialState, gaugeTE.dialState); 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 ee29235ee..56194ec81 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 @@ -5,7 +5,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Iterate; @@ -38,7 +38,7 @@ public class GearboxRenderer extends KineticTileEntityRenderer { if (boxAxis == axis) continue; - SuperByteBuffer shaft = PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); + SuperByteBuffer shaft = CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); float offset = getRotationOffsetForPosition(te, pos, axis); float angle = (time * te.getSpeed() * 3f / 10) % 360; diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index 94ff87ca7..743e250e6 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -5,8 +5,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; -import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -58,9 +58,8 @@ public class CopperBacktankArmorLayer extends SafeTileEnt Direction facing = state.getValue(BellBlock.FACING); BellAttachType attachment = state.getValue(BellBlock.ATTACHMENT); - SuperByteBuffer bell = PartialBufferer.get(te.getBellModel(), state); + SuperByteBuffer bell = CachedBufferer.partial(te.getBellModel(), state); if (te.isRinging) bell.rotateCentered(te.ringDirection.getCounterClockWise(), getSwingAngle(te.ringingTicks + partialTicks)); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java index 3eb77e3e7..5eec0a1bd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.curiosities.toolbox; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; import com.simibubi.create.foundation.utility.Iterate; @@ -28,8 +28,8 @@ public class ToolboxRenderer extends SmartTileEntityRenderer Direction facing = blockState.getValue(ToolboxBlock.FACING) .getOpposite(); SuperByteBuffer lid = - PartialBufferer.get(AllBlockPartials.TOOLBOX_LIDS.get(tileEntityIn.getColor()), blockState); - SuperByteBuffer drawer = PartialBufferer.get(AllBlockPartials.TOOLBOX_DRAWER, blockState); + CachedBufferer.partial(AllBlockPartials.TOOLBOX_LIDS.get(tileEntityIn.getColor()), blockState); + SuperByteBuffer drawer = CachedBufferer.partial(AllBlockPartials.TOOLBOX_DRAWER, blockState); float lidAngle = tileEntityIn.lid.getValue(partialTicks); float drawerOffset = tileEntityIn.drawers.getValue(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java index 11f5589b6..2597b3faa 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java @@ -6,7 +6,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix3f; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.Couple; @@ -33,7 +33,7 @@ public class BlueprintRenderer extends EntityRenderer { int light) { PartialModel partialModel = entity.size == 3 ? AllBlockPartials.CRAFTING_BLUEPRINT_3x3 : entity.size == 2 ? AllBlockPartials.CRAFTING_BLUEPRINT_2x2 : AllBlockPartials.CRAFTING_BLUEPRINT_1x1; - SuperByteBuffer sbb = PartialBufferer.get(partialModel, Blocks.AIR.defaultBlockState()); + SuperByteBuffer sbb = CachedBufferer.partial(partialModel, Blocks.AIR.defaultBlockState()); sbb.matrixStacker() .rotateY(-yaw) .rotateX(90.0F + entity.getXRot()) 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 2ed3866f0..c86378987 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 @@ -5,7 +5,7 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -33,7 +33,7 @@ public class BeltTunnelRenderer extends SmartTileEntityRenderer { VertexConsumer vb = buffer.getBuffer(RenderType.solid()); PartialModel partialModel = (blockState.getBlock() instanceof FunnelBlock ? AllBlockPartials.FUNNEL_FLAP : AllBlockPartials.BELT_FUNNEL_FLAP); - SuperByteBuffer flapBuffer = PartialBufferer.get(partialModel, blockState); + SuperByteBuffer flapBuffer = CachedBufferer.partial(partialModel, blockState); Vec3 pivot = VecHelper.voxelSpace(0, 10, 9.5f); MatrixTransformStack msr = MatrixTransformStack.of(ms); 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 26d0b3a22..bbea65714 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 @@ -8,7 +8,7 @@ import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; -import com.simibubi.create.foundation.render.PartialBufferer; +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.Color; @@ -110,12 +110,12 @@ public class ArmRenderer extends KineticTileEntityRenderer { } private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, MatrixTransformStack msr, BlockState blockState, int color, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle, boolean hasItem, boolean isBlockItem, int light) { - SuperByteBuffer base = PartialBufferer.get(AllBlockPartials.ARM_BASE, blockState).light(light); - SuperByteBuffer lowerBody = PartialBufferer.get(AllBlockPartials.ARM_LOWER_BODY, blockState).light(light); - SuperByteBuffer upperBody = PartialBufferer.get(AllBlockPartials.ARM_UPPER_BODY, blockState).light(light); - SuperByteBuffer head = PartialBufferer.get(AllBlockPartials.ARM_HEAD, blockState).light(light); - SuperByteBuffer claw = PartialBufferer.get(AllBlockPartials.ARM_CLAW_BASE, blockState).light(light); - SuperByteBuffer clawGrip = PartialBufferer.get(AllBlockPartials.ARM_CLAW_GRIP, blockState); + SuperByteBuffer base = CachedBufferer.partial(AllBlockPartials.ARM_BASE, blockState).light(light); + SuperByteBuffer lowerBody = CachedBufferer.partial(AllBlockPartials.ARM_LOWER_BODY, blockState).light(light); + SuperByteBuffer upperBody = CachedBufferer.partial(AllBlockPartials.ARM_UPPER_BODY, blockState).light(light); + SuperByteBuffer head = CachedBufferer.partial(AllBlockPartials.ARM_HEAD, blockState).light(light); + SuperByteBuffer claw = CachedBufferer.partial(AllBlockPartials.ARM_CLAW_BASE, blockState).light(light); + SuperByteBuffer clawGrip = CachedBufferer.partial(AllBlockPartials.ARM_CLAW_GRIP, blockState); transformBase(msr, baseAngle); base.transform(msLocal) @@ -188,7 +188,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.ARM_COG, te.getBlockState()); + return CachedBufferer.partial(AllBlockPartials.ARM_COG, te.getBlockState()); } } 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 e8e92c852..ac9e62acb 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 @@ -527,7 +527,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE private class SelectionModeValueBox extends CenteredSideValueBoxTransform { public SelectionModeValueBox() { - super((blockState, direction) -> direction != Direction.DOWN && direction != Direction.UP); + super((blockState, direction) -> !direction.getAxis().isVertical()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java index 114f25794..481e3dda7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java @@ -4,7 +4,7 @@ import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -34,7 +34,7 @@ public class AnalogLeverRenderer extends SafeTileEntityRenderer> DOC_WORLD_SECTION = new Compartment<>(); + public static final SuperByteBufferCache.Compartment> DOC_WORLD_SECTION = new SuperByteBufferCache.Compartment<>(); List renderedTileEntities; List>> tickableTileEntities; @@ -396,12 +393,11 @@ public class WorldSectionElement extends AnimatedSceneElement { private SuperByteBuffer buildStructureBuffer(PonderWorld world, RenderType layer) { ForgeHooksClient.setRenderLayer(layer); - PoseStack ms = new PoseStack(); BlockRenderDispatcher dispatcher = Minecraft.getInstance() .getBlockRenderer(); - ModelBlockRenderer blockRenderer = dispatcher.getModelRenderer(); + PoseStack ms = new PoseStack(); Random random = new Random(); - BufferBuilder builder = new BufferBuilder(DefaultVertexFormat.BLOCK.getIntegerSize()); + BufferBuilder builder = new BufferBuilder(512); builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); world.setMask(this.section); @@ -412,8 +408,7 @@ public class WorldSectionElement extends AnimatedSceneElement { ms.pushPose(); ms.translate(pos.getX(), pos.getY(), pos.getZ()); - if (state.getRenderShape() != RenderShape.ENTITYBLOCK_ANIMATED && state.getBlock() != Blocks.AIR - && ItemBlockRenderTypes.canRenderInLayer(state, layer)) { + if (state.getRenderShape() == RenderShape.MODEL && ItemBlockRenderTypes.canRenderInLayer(state, layer)) { BlockEntity tileEntity = world.getBlockEntity(pos); dispatcher.renderBatched(state, pos, world, ms, builder, true, random, tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); diff --git a/src/main/java/com/simibubi/create/foundation/render/BakedModelRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/BakedModelRenderHelper.java new file mode 100644 index 000000000..fe859a516 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/BakedModelRenderHelper.java @@ -0,0 +1,50 @@ +package com.simibubi.create.foundation.render; + +import java.util.Random; + +import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexFormat; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; + +public class BakedModelRenderHelper { + + public static SuperByteBuffer standardBlockRender(BlockState renderedState) { + BlockRenderDispatcher dispatcher = Minecraft.getInstance() + .getBlockRenderer(); + return standardModelRender(dispatcher.getBlockModel(renderedState), renderedState); + } + + public static SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState) { + return standardModelRender(model, referenceState, new PoseStack()); + } + + public static SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState, PoseStack ms) { + BufferBuilder builder = getBufferBuilder(model, referenceState, ms); + + return new SuperByteBuffer(builder); + } + + public static BufferBuilder getBufferBuilder(BakedModel model, BlockState referenceState, PoseStack ms) { + Minecraft mc = Minecraft.getInstance(); + BlockRenderDispatcher dispatcher = mc.getBlockRenderer(); + ModelBlockRenderer blockRenderer = dispatcher.getModelRenderer(); + BufferBuilder builder = new BufferBuilder(512); + + builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); + blockRenderer.tesselateBlock(mc.level, model, referenceState, BlockPos.ZERO.above(255), ms, builder, true, + new Random(), 42, OverlayTexture.NO_OVERLAY, VirtualEmptyModelData.INSTANCE); + builder.end(); + return builder; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java b/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java new file mode 100644 index 000000000..fe0243b4d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java @@ -0,0 +1,89 @@ +package com.simibubi.create.foundation.render; + +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING; + +import java.util.function.Supplier; + +import org.apache.commons.lang3.tuple.Pair; + +import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.render.SuperByteBufferCache.Compartment; +import com.simibubi.create.foundation.utility.AngleHelper; + +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; + +public class CachedBufferer { + + public static final Compartment GENERIC_TILE = new Compartment<>(); + public static final Compartment PARTIAL = new Compartment<>(); + public static final Compartment> DIRECTIONAL_PARTIAL = new Compartment<>(); + + public static SuperByteBuffer block(BlockState toRender) { + return block(GENERIC_TILE, toRender); + } + + public static SuperByteBuffer block(Compartment compartment, BlockState toRender) { + return CreateClient.BUFFER_CACHE.get(compartment, toRender, () -> BakedModelRenderHelper.standardBlockRender(toRender)); + } + + public static SuperByteBuffer partial(PartialModel partial, BlockState referenceState) { + return CreateClient.BUFFER_CACHE.get(PARTIAL, partial, + () -> BakedModelRenderHelper.standardModelRender(partial.get(), referenceState)); + } + + public static SuperByteBuffer partial(PartialModel partial, BlockState referenceState, + Supplier modelTransform) { + return CreateClient.BUFFER_CACHE.get(PARTIAL, partial, + () -> BakedModelRenderHelper.standardModelRender(partial.get(), referenceState, modelTransform.get())); + } + + public static SuperByteBuffer partialFacing(PartialModel partial, BlockState referenceState) { + Direction facing = referenceState.getValue(FACING); + return partialFacing(partial, referenceState, facing); + } + + public static SuperByteBuffer partialFacing(PartialModel partial, BlockState referenceState, Direction facing) { + return partialDirectional(partial, referenceState, facing, + rotateToFace(facing)); + } + + public static SuperByteBuffer partialFacingVertical(PartialModel partial, BlockState referenceState, Direction facing) { + return partialDirectional(partial, referenceState, facing, + rotateToFaceVertical(facing)); + } + + public static SuperByteBuffer partialDirectional(PartialModel partial, BlockState referenceState, Direction dir, + Supplier modelTransform) { + return CreateClient.BUFFER_CACHE.get(DIRECTIONAL_PARTIAL, Pair.of(dir, partial), + () -> BakedModelRenderHelper.standardModelRender(partial.get(), referenceState, modelTransform.get())); + } + + public static Supplier rotateToFace(Direction facing) { + return () -> { + PoseStack stack = new PoseStack(); + MatrixTransformStack.of(stack) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(AngleHelper.verticalAngle(facing)) + .unCentre(); + return stack; + }; + } + + public static Supplier rotateToFaceVertical(Direction facing) { + return () -> { + PoseStack stack = new PoseStack(); + MatrixTransformStack.of(stack) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(AngleHelper.verticalAngle(facing) + 90) + .unCentre(); + return stack; + }; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/render/Compartment.java b/src/main/java/com/simibubi/create/foundation/render/Compartment.java deleted file mode 100644 index d0b3bd8ff..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/Compartment.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.foundation.render; - -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.core.PartialModel; - -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -public class Compartment { - public static final Compartment GENERIC_TILE = new Compartment<>(); - public static final Compartment PARTIAL = new Compartment<>(); - public static final Compartment> DIRECTIONAL_PARTIAL = new Compartment<>(); -} diff --git a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java b/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java deleted file mode 100644 index de2e3e718..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.foundation.render; - -import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING; - -import java.util.function.Supplier; - -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -public class PartialBufferer { - - public static SuperByteBuffer get(PartialModel partial, BlockState referenceState) { - return CreateClient.BUFFER_CACHE.renderPartial(partial, referenceState); - } - - public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState) { - Direction facing = referenceState.getValue(FACING); - return getFacing(partial, referenceState, facing); - } - - public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState, Direction facing) { - return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, - rotateToFace(facing)); - } - - public static SuperByteBuffer getFacingVertical(PartialModel partial, BlockState referenceState, Direction facing) { - return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, - rotateToFaceVertical(facing)); - } - - public static Supplier rotateToFace(Direction facing) { - return () -> { - PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); - return stack; - }; - } - - public static Supplier rotateToFaceVertical(Direction facing) { - return () -> { - PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing) + 90) - .unCentre(); - return stack; - }; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java index 850170019..f11ea9b94 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java @@ -2,136 +2,53 @@ package com.simibubi.create.foundation.render; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexFormat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.block.ModelBlockRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; public class SuperByteBufferCache { - private Map, Cache> cache; + protected final Map, Cache> caches = new HashMap<>(); - public SuperByteBufferCache() { - cache = new HashMap<>(); - registerCompartment(Compartment.GENERIC_TILE); - registerCompartment(Compartment.PARTIAL); - registerCompartment(Compartment.DIRECTIONAL_PARTIAL); + public synchronized void registerCompartment(Compartment compartment) { + caches.put(compartment, CacheBuilder.newBuilder() + .build()); } - public SuperByteBuffer renderBlock(BlockState toRender) { - return getGeneric(toRender, () -> standardBlockRender(toRender)); + public synchronized void registerCompartment(Compartment compartment, long ticksUntilExpired) { + caches.put(compartment, CacheBuilder.newBuilder() + .expireAfterAccess(ticksUntilExpired * 50, TimeUnit.MILLISECONDS) + .build()); } - public SuperByteBuffer renderPartial(PartialModel partial, BlockState referenceState) { - return get(Compartment.PARTIAL, partial, () -> standardModelRender(partial.get(), referenceState)); - } - - public SuperByteBuffer renderPartial(PartialModel partial, BlockState referenceState, - Supplier modelTransform) { - return get(Compartment.PARTIAL, partial, - () -> standardModelRender(partial.get(), referenceState, modelTransform.get())); - } - - public SuperByteBuffer renderDirectionalPartial(PartialModel partial, BlockState referenceState, - Direction dir) { - return get(Compartment.DIRECTIONAL_PARTIAL, Pair.of(dir, partial), - () -> standardModelRender(partial.get(), referenceState)); - } - - public SuperByteBuffer renderDirectionalPartial(PartialModel partial, BlockState referenceState, Direction dir, - Supplier modelTransform) { - return get(Compartment.DIRECTIONAL_PARTIAL, Pair.of(dir, partial), - () -> standardModelRender(partial.get(), referenceState, modelTransform.get())); - } - - public SuperByteBuffer renderBlockIn(Compartment compartment, BlockState toRender) { - return get(compartment, toRender, () -> standardBlockRender(toRender)); - } - - SuperByteBuffer getGeneric(BlockState key, Supplier supplier) { - return get(Compartment.GENERIC_TILE, key, supplier); - } - - public SuperByteBuffer get(Compartment compartment, T key, Supplier supplier) { - Cache compartmentCache = this.cache.get(compartment); - try { - return compartmentCache.get(key, supplier::get); - } catch (ExecutionException e) { - e.printStackTrace(); - return null; + public SuperByteBuffer get(Compartment compartment, T key, Callable callable) { + Cache cache = caches.get(compartment); + if (cache != null) { + try { + return cache.get(key, callable); + } catch (ExecutionException e) { + e.printStackTrace(); + } } + return null; } public void invalidate(Compartment compartment, T key) { - Cache compartmentCache = this.cache.get(compartment); - compartmentCache.invalidate(key); + caches.get(compartment).invalidate(key); } - public void registerCompartment(Compartment instance) { - synchronized (cache) { - cache.put(instance, CacheBuilder.newBuilder() - .build()); - } - } - - public void registerCompartment(Compartment instance, long ticksUntilExpired) { - synchronized (cache) { - cache.put(instance, CacheBuilder.newBuilder() - .expireAfterAccess(ticksUntilExpired * 50, TimeUnit.MILLISECONDS) - .build()); - } - } - - private SuperByteBuffer standardBlockRender(BlockState renderedState) { - BlockRenderDispatcher dispatcher = Minecraft.getInstance() - .getBlockRenderer(); - return standardModelRender(dispatcher.getBlockModel(renderedState), renderedState); - } - - private SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState) { - return standardModelRender(model, referenceState, new PoseStack()); - } - - private SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState, PoseStack ms) { - BufferBuilder builder = getBufferBuilder(model, referenceState, ms); - - return new SuperByteBuffer(builder); - } - - public static BufferBuilder getBufferBuilder(BakedModel model, BlockState referenceState, PoseStack ms) { - Minecraft mc = Minecraft.getInstance(); - BlockRenderDispatcher dispatcher = mc.getBlockRenderer(); - ModelBlockRenderer blockRenderer = dispatcher.getModelRenderer(); - BufferBuilder builder = new BufferBuilder(512); - - builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); - blockRenderer.tesselateBlock(mc.level, model, referenceState, BlockPos.ZERO.above(255), ms, builder, true, - mc.level.random, 42, OverlayTexture.NO_OVERLAY, VirtualEmptyModelData.INSTANCE); - builder.end(); - return builder; + public void invalidate(Compartment compartment) { + caches.get(compartment).invalidateAll(); } public void invalidate() { - cache.forEach((comp, cache) -> cache.invalidateAll()); + caches.forEach((compartment, cache) -> cache.invalidateAll()); + } + + public static class Compartment { } } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java index f9ebdec95..cc8197e9a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java @@ -99,7 +99,7 @@ public abstract class ValueBoxTransform { protected Vec3 getLocalOffset(BlockState state) { Vec3 location = getSouthLocation(); location = VecHelper.rotateCentered(location, AngleHelper.horizontalAngle(getSide()), Axis.Y); - location = VecHelper.rotateCentered(location, AngleHelper.verticalAngle(getSide()), Axis.Z); + location = VecHelper.rotateCentered(location, AngleHelper.verticalAngle(getSide()), Axis.X); return location; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java index ef5bec5cd..f3b4d0824 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java @@ -30,12 +30,12 @@ public class ScrollValueHandler { @OnlyIn(Dist.CLIENT) public static boolean onScroll(double delta) { - HitResult objectMouseOver = Minecraft.getInstance().hitResult; + Minecraft mc = Minecraft.getInstance(); + HitResult objectMouseOver = mc.hitResult; if (!(objectMouseOver instanceof BlockHitResult)) return false; BlockHitResult result = (BlockHitResult) objectMouseOver; - Minecraft mc = Minecraft.getInstance(); ClientLevel world = mc.level; BlockPos blockPos = result.getBlockPos(); @@ -46,13 +46,13 @@ public class ScrollValueHandler { return false; if (!mc.player.mayBuild()) return false; + if (scrolling.needsWrench && !AllItems.WRENCH.isIn(mc.player.getMainHandItem())) + return false; passiveScrollDirection = (float) -delta; wrenchCog.bump(3, -delta * 10); int prev = scrolling.scrollableValue; - if (scrolling.needsWrench && !AllItems.WRENCH.isIn(mc.player.getMainHandItem())) - return false; if (scrolling.slotPositioning instanceof Sided) ((Sided) scrolling.slotPositioning).fromSide(result.getDirection()); if (!scrolling.testHit(objectMouseOver.getLocation())) diff --git a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java index 33d007d79..9a3e2a393 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java @@ -5,23 +5,9 @@ import net.minecraft.core.Direction.Axis; public class AngleHelper { - /** - * Legacy method. See {@link #horizontalAngleNew(Direction)} for new method. - */ public static float horizontalAngle(Direction facing) { - float angle = facing.toYRot(); - if (facing.getAxis() == Axis.X) - angle = -angle; - return angle; - } - - /** - * Same as {@link #horizontalAngle(Direction)}, but returns 0 instead of -90 for vertical directions. - */ - public static float horizontalAngleNew(Direction facing) { - if (facing.getAxis().isVertical()) { + if (facing.getAxis().isVertical()) return 0; - } float angle = facing.toYRot(); if (facing.getAxis() == Axis.X) angle = -angle; diff --git a/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java b/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java index 76df3e755..fadea7379 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java @@ -8,6 +8,7 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.Unit; import net.minecraft.util.profiling.ProfilerFiller; +// TODO 1.18: remove and replace all usages with ResourceManagerReloadListener @FunctionalInterface public interface ISimpleReloadListener extends PreparableReloadListener { diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java index ab27c0ce9..fb914f2cb 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java @@ -11,6 +11,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.foundation.render.RenderTypes; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; +import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.renderer.RenderType; @@ -31,23 +32,12 @@ public class BlockClusterOutline extends Outline { @Override public void render(PoseStack ms, SuperRenderTypeBuffer buffer, float pt) { - for (MergeEntry edge : cluster.visibleEdges) { + cluster.visibleEdges.forEach(edge -> { Vec3 start = Vec3.atLowerCornerOf(edge.pos); Direction direction = Direction.get(AxisDirection.POSITIVE, edge.axis); renderAACuboidLine(ms, buffer, start, Vec3.atLowerCornerOf(edge.pos.relative(direction))); - } + }); - for (MergeEntry face : cluster.visibleFaces.keySet()) { - AxisDirection axisDirection = cluster.visibleFaces.get(face); - Direction direction = Direction.get(axisDirection, face.axis); - BlockPos pos = face.pos; - if (axisDirection == AxisDirection.POSITIVE) - pos = pos.relative(direction.getOpposite()); - renderBlockFace(ms, buffer, pos, direction); - } - } - - protected void renderBlockFace(PoseStack ms, SuperRenderTypeBuffer buffer, BlockPos pos, Direction face) { Optional faceTexture = params.faceTexture; if (!faceTexture.isPresent()) return; @@ -56,12 +46,22 @@ public class BlockClusterOutline extends Outline { .getLocation(), true); VertexConsumer builder = buffer.getLateBuffer(translucentType); + cluster.visibleFaces.forEach((face, axisDirection) -> { + Direction direction = Direction.get(axisDirection, face.axis); + BlockPos pos = face.pos; + if (axisDirection == AxisDirection.POSITIVE) + pos = pos.relative(direction.getOpposite()); + renderBlockFace(ms, builder, pos, direction); + }); + } + + protected void renderBlockFace(PoseStack ms, VertexConsumer builder, BlockPos pos, Direction face) { Vec3 center = VecHelper.getCenterOf(pos); Vec3 offset = Vec3.atLowerCornerOf(face.getNormal()); Vec3 plane = VecHelper.axisAlingedPlaneOf(offset); Axis axis = face.getAxis(); - offset = offset.scale(1 / 2f + 1 / 64d); + offset = offset.scale(1 / 2f + 1 / 128d); plane = plane.scale(1 / 2f) .add(offset); @@ -80,8 +80,8 @@ public class BlockClusterOutline extends Outline { private static class Cluster { - Map visibleFaces; - Set visibleEdges; + private Map visibleFaces; + private Set visibleEdges; public Cluster() { visibleEdges = new HashSet<>(); @@ -91,9 +91,9 @@ public class BlockClusterOutline extends Outline { public void include(BlockPos pos) { // 6 FACES - for (Axis axis : Axis.values()) { + for (Axis axis : Iterate.axes) { Direction direction = Direction.get(AxisDirection.POSITIVE, axis); - for (int offset : new int[] { 0, 1 }) { + for (int offset : Iterate.zeroAndOne) { MergeEntry entry = new MergeEntry(axis, pos.relative(direction, offset)); if (visibleFaces.remove(entry) == null) visibleFaces.put(entry, offset == 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE); @@ -101,11 +101,11 @@ public class BlockClusterOutline extends Outline { } // 12 EDGES - for (Axis axis : Axis.values()) { - for (Axis axis2 : Axis.values()) { + for (Axis axis : Iterate.axes) { + for (Axis axis2 : Iterate.axes) { if (axis == axis2) continue; - for (Axis axis3 : Axis.values()) { + for (Axis axis3 : Iterate.axes) { if (axis == axis3) continue; if (axis2 == axis3) @@ -114,9 +114,9 @@ public class BlockClusterOutline extends Outline { Direction direction = Direction.get(AxisDirection.POSITIVE, axis2); Direction direction2 = Direction.get(AxisDirection.POSITIVE, axis3); - for (int offset : new int[] { 0, 1 }) { + for (int offset : Iterate.zeroAndOne) { BlockPos entryPos = pos.relative(direction, offset); - for (int offset2 : new int[] { 0, 1 }) { + for (int offset2 : Iterate.zeroAndOne) { entryPos = entryPos.relative(direction2, offset2); MergeEntry entry = new MergeEntry(axis, entryPos); if (!visibleEdges.remove(entry)) @@ -135,8 +135,8 @@ public class BlockClusterOutline extends Outline { private static class MergeEntry { - Axis axis; - BlockPos pos; + private Axis axis; + private BlockPos pos; public MergeEntry(Axis axis, BlockPos pos) { this.axis = axis; diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java index 12713bda4..33e73072c 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java @@ -6,7 +6,6 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Matrix3f; import com.simibubi.create.AllSpecialTextures; @@ -16,6 +15,7 @@ import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -25,7 +25,7 @@ import net.minecraft.world.phys.Vec3; public abstract class Outline { protected OutlineParams params; - protected Matrix3f transformNormals; + protected Matrix3f transformNormals; // TODO: not used? public Outline() { params = new OutlineParams(); @@ -33,6 +33,12 @@ public abstract class Outline { public abstract void render(PoseStack ms, SuperRenderTypeBuffer buffer, float pt); + public void tick() {} + + public OutlineParams getParams() { + return params; + } + public void renderCuboidLine(PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 start, Vec3 end) { Vec3 diff = end.subtract(start); float hAngle = AngleHelper.deg(Mth.atan2(diff.x, diff.z)); @@ -125,13 +131,13 @@ public abstract class Outline { } protected void putVertex(PoseStack ms, VertexConsumer builder, Vec3 pos, float u, float v, Direction normal) { - int i = 15 << 20 | 15 << 4; - int j = i >> 16 & '\uffff'; - int k = i & '\uffff'; - Pose peek = ms.last(); + putVertex(ms.last(), builder, (float) pos.x, (float) pos.y, (float) pos.z, u, v, normal); + } + + protected void putVertex(PoseStack.Pose pose, VertexConsumer builder, float x, float y, float z, float u, float v, Direction normal) { Color rgb = params.rgb; if (transformNormals == null) - transformNormals = peek.normal(); + transformNormals = pose.normal(); int xOffset = 0; int yOffset = 0; @@ -143,23 +149,17 @@ public abstract class Outline { zOffset = normal.getStepZ(); } - builder.vertex(peek.pose(), (float) pos.x, (float) pos.y, (float) pos.z) + builder.vertex(pose.pose(), x, y, z) .color(rgb.getRedAsFloat(), rgb.getGreenAsFloat(), rgb.getBlueAsFloat(), rgb.getAlphaAsFloat() * params.alpha) .uv(u, v) .overlayCoords(OverlayTexture.NO_OVERLAY) - .uv2(j, k) - .normal(peek.normal(), xOffset, yOffset, zOffset) + .uv2(params.lightMap) + .normal(pose.normal(), xOffset, yOffset, zOffset) .endVertex(); transformNormals = null; } - public void tick() {} - - public OutlineParams getParams() { - return params; - } - public static class OutlineParams { protected Optional faceTexture; protected Optional hightlightedFaceTexture; @@ -168,7 +168,7 @@ public abstract class Outline { protected boolean disableCull; protected boolean disableNormals; protected float alpha; - protected int lightMapU, lightMapV; + protected int lightMap; protected Color rgb; private float lineWidth; @@ -178,10 +178,7 @@ public abstract class Outline { lineWidth = 1 / 32f; fadeLineWidth = true; rgb = Color.WHITE; - - int i = 15 << 20 | 15 << 4; - lightMapU = i >> 16 & '\uffff'; - lightMapV = i & '\uffff'; + lightMap = LightTexture.FULL_BRIGHT; } // builder @@ -196,6 +193,11 @@ public abstract class Outline { return this; } + public OutlineParams lightMap(int light) { + lightMap = light; + return this; + } + public OutlineParams lineWidth(float width) { this.lineWidth = width; return this; diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java index f1fa5dc06..e94edaeb4 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java @@ -2,10 +2,9 @@ package com.simibubi.create.foundation.utility.outliner; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; +import java.util.Iterator; import java.util.Map; import java.util.Optional; -import java.util.Set; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; @@ -20,11 +19,8 @@ import net.minecraft.world.phys.Vec3; public class Outliner { - final Map outlines; - - public Map getOutlines() { - return Collections.unmodifiableMap(outlines); - } + private final Map outlines = Collections.synchronizedMap(new HashMap<>()); + private final Map outlinesView = Collections.unmodifiableMap(outlines); // Facade @@ -103,6 +99,10 @@ public class Outliner { return Optional.empty(); } + public Map getOutlines() { + return outlinesView; + } + // Utility private void createAABBOutlineIfMissing(Object slot, AABB bb) { @@ -126,39 +126,30 @@ public class Outliner { // Maintenance - public Outliner() { - outlines = Collections.synchronizedMap(new HashMap<>()); - } - public void tickOutlines() { - Set toClear = new HashSet<>(); - - outlines.forEach((key, entry) -> { - entry.ticksTillRemoval--; - entry.getOutline() - .tick(); - if (entry.isAlive()) - return; - toClear.add(key); - }); - - toClear.forEach(outlines::remove); + Iterator iterator = outlines.values().iterator(); + while (iterator.hasNext()) { + OutlineEntry entry = iterator.next(); + entry.tick(); + if (!entry.isAlive()) + iterator.remove(); + } } public void renderOutlines(PoseStack ms, SuperRenderTypeBuffer buffer, float pt) { outlines.forEach((key, entry) -> { Outline outline = entry.getOutline(); - outline.params.alpha = 1; - if (entry.ticksTillRemoval < 0) { - + OutlineParams params = outline.getParams(); + params.alpha = 1; + if (entry.isFading()) { int prevTicks = entry.ticksTillRemoval + 1; float fadeticks = OutlineEntry.fadeTicks; float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks); float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks); float alpha = Mth.lerp(pt, lastAlpha, currentAlpha); - outline.params.alpha = alpha * alpha * alpha; - if (outline.params.alpha < 1 / 8f) + params.alpha = alpha * alpha * alpha; + if (params.alpha < 1 / 8f) return; } outline.render(ms, buffer, pt); @@ -176,10 +167,19 @@ public class Outliner { ticksTillRemoval = 1; } + public void tick() { + ticksTillRemoval--; + outline.tick(); + } + public boolean isAlive() { return ticksTillRemoval >= -fadeTicks; } + public boolean isFading() { + return ticksTillRemoval < 0; + } + public Outline getOutline() { return outline; } From 64f8e98011041de8bcd88a0715b06c48eb4fbf49 Mon Sep 17 00:00:00 2001 From: DreiMu <59318275+DreiMu@users.noreply.github.com> Date: Sun, 21 Nov 2021 16:50:32 +0100 Subject: [PATCH 11/26] Updates to de_de.json by DreiMu (#2358) --- .../resources/assets/create/lang/de_de.json | 888 +++++++++++------- 1 file changed, 552 insertions(+), 336 deletions(-) diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json index 4b4f99959..a0a98394b 100644 --- a/src/main/resources/assets/create/lang/de_de.json +++ b/src/main/resources/assets/create/lang/de_de.json @@ -19,7 +19,7 @@ "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", "block.create.andesite_encased_shaft": "Andesitummantelte Welle", - "block.create.andesite_funnel": "Andesit Trichter", + "block.create.andesite_funnel": "Andesittrichter", "block.create.andesite_pillar": "Andesitsäule", "block.create.andesite_tunnel": "Andesittunnel", "block.create.basin": "Behälter", @@ -55,7 +55,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steuerungsschiene", + "block.create.controller_rail": "Steureungsschiene", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", "block.create.copper_ore": "Kupfererz", @@ -337,6 +337,11 @@ "block.create.powered_toggle_latch": "T-Flipflop", "block.create.pulley_magnet": "Rollenmagnet", "block.create.pulse_repeater": "Pulsierender Verstärker", + "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", + "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", + + "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", + "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", "block.create.purple_sail": "Lila Segel", "block.create.purple_seat": "Lila Sitz", "block.create.purple_valve_handle": "Lila Ventilgriff", @@ -368,6 +373,49 @@ "block.create.sequenced_gearshift": "Sequenzielle Gangschaltung", "block.create.shadow_steel_casing": "Schattengehäuse", "block.create.shaft": "Welle", + "block.create.shaft.tooltip": "WELLE", + "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", + + "block.create.cogwheel.tooltip": "ZAHNRAD", + "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", + + "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", + "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", + + "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", + "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", + + "block.create.gearbox.tooltip": "GETRIEBE", + "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", + + "block.create.gearshift.tooltip": "GANGSCHALTUNG", + "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.gearshift.tooltip.condition1": "Wenn aktiv", + "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", + + "block.create.clutch.tooltip": "KUPPLUNG", + "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.clutch.tooltip.condition1": "Wenn aktiv", + "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", + + "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", + "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", + "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", + "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", + "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", + "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", + + "block.create.water_wheel.tooltip": "WASSERRAD", + "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", + + "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", + "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", + "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", + "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", + "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", + "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", + "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", + "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", "block.create.smart_chute": "Schlaue Rinne", "block.create.smart_fluid_pipe": "Schlaues Flüssigkeitsrohr", "block.create.speedometer": "Tachometer", @@ -381,6 +429,64 @@ "block.create.tiled_glass": "Glasfliesen", "block.create.tiled_glass_pane": "Glasfliesenscheibe", "block.create.turntable": "Drehtisch", + "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", + "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", + "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", + "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", + + "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", + "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", + "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", + "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", + "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", + "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact items_ in the basin whenever all necessary ingredients are present.", + + "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", + "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + + "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", + "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", + "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", + "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", + + "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", + "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", + "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", + + "block.create.linear_chassis.tooltip": "SCHUBGERÜST", + "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", + "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", + "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", + "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", + "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", + + "block.create.radial_chassis.tooltip": "DREHGERÜST", + "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", + "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", + "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", + "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", + "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", + + "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", + "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", + "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", + "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", + "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", + + "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", + "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", + "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", + "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", "block.create.vertical_framed_glass": "Vertikal Gerahmtes Glas", "block.create.vertical_framed_glass_pane": "Vertikal Gerahmte Glasscheibe", "block.create.water_wheel": "Wasserrad", @@ -405,6 +511,23 @@ "block.create.yellow_valve_handle": "Gelber Ventilgriff", "block.create.zinc_block": "Zinkblock", "block.create.zinc_ore": "Zinkerz", + + "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", + "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", + "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", + "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", + "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", + "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", + "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", + "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", + + "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", + "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", + "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", + "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", + "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", + "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", + "entity.create.contraption": "Vorrichtung", "entity.create.gantry_contraption": "Portalkran Vorrichtung", @@ -504,7 +627,7 @@ "advancement.create.overstressed": "Überfordert", "advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.", "advancement.create.belt": "Befördere es alles", - "advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen", + "advancement.create.belt.desc": "Verbinde zwei Wellen mit einem Mechanischem Riemen", "advancement.create.tunnel": "Geht in Deckung!", "advancement.create.tunnel.desc": "Verschönere deinen Mechanischem Riemen mit einem Tunnel.", "advancement.create.splitter_tunnel": "Divide & Conquer", @@ -513,8 +636,96 @@ "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", "advancement.create.upward_chute": "Luftentführung", "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", + "advancement.create.belt_funnel": "Klappernde Klappen", + "advancement.create.belt_funnel.desc": "Platziere einen seitwärts schauenden Riementrichter auf einem Förderband oder einem Depot um einen speziellen Typ zu erstellen.", + "advancement.create.belt_funnel_kiss": "Die Hühnchen und die Klappen", + "advancement.create.belt_funnel_kiss.desc": "Lasse zwei an Mechanischen Riemen befestigte Riementrichter sich küssen.", "advancement.create.fan": "Mechanischer Luftbändiger", "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", + "advancement.create.fan_lava": "geothermische Heizung", + "advancement.create.fan_lava.desc": "Bleibe in einem Luftzug, der Dinge schmilzt, hängen.", + "advancement.create.fan_water": "Verrücktes Waschen", + "advancement.create.fan_water.desc": "Bleibe in einem Luftzug, der Dinge wäscht, hängen.", + "advancement.create.fan_smoke": "Mechanischer Balg", + "advancement.create.fan_smoke.desc": "Bleibe in einem Luftzug, der Items räuchert, hängen.", + "advancement.create.wrench": "Komfortabel Einstellen", + "advancement.create.wrench.desc": "Stelle einen Schraubenschlüssel her, der beim Bauen von Vorrichtungen hilft. ", + "advancement.create.goggles": "Stress-O-Vision", + "advancement.create.goggles.desc": "Stelle Ingenieursbrillen her, die beim Bekommen von kinetischen Informationen von Bauteilen, hilft.", + "advancement.create.speedometer": "Aber wie schnell genau?", + "advancement.create.speedometer.desc": "Platziere und schalte ein Tachometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.stressometer": "Aber wie belastet genau?", + "advancement.create.stressometer.desc": "Platziere und schalte ein Stressometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.aesthetics": "Boom, Ästhetik!", + "advancement.create.aesthetics.desc": "Plaziere Halterungen an Wellen, Rohren und Zahnrädern.", + "advancement.create.reinforced": "Boom, verstärkt!!", + "advancement.create.reinforced.desc": "Verwende passende Rahmen für Wellen, Rohre und Riemen.", + "advancement.create.water_wheel": "Angespannte Hydraulik", + "advancement.create.water_wheel.desc": "Plaziere ein Wasserrad und versuche es zum drehen zu bringen!", + "advancement.create.chocolate_wheel": "Leckere Energie", + "advancement.create.chocolate_wheel.desc": "Lasse ein Wasserad mit geschmolzerner Schokolade laufen.", + "advancement.create.lava_wheel": "Magmarad", + "advancement.create.lava_wheel.desc": "Das sollte nicht funktioniert haben.", + "advancement.create.cuckoo": "Ist es Zeit?", + "advancement.create.cuckoo.desc": "Bekomme mit, wie eine Kuckucksuhr Schlafenszeit ankündigt.", + "advancement.create.millstone": "Taschenmahlstein", + "advancement.create.millstone.desc": "Plaziere und aktiviere einen Mahlstein.", + "advancement.create.windmill": "Eine leichte Brise", + "advancement.create.windmill.desc": "Baue eine Windmühle.", + "advancement.create.maxed_windmill": "Eine starke Briese", + "advancement.create.maxed_windmill.desc": "Baue eine Windmühle mit maximaler stärke.", + "advancement.create.andesite_casing": "Das Andesit Alter", + "advancement.create.andesite_casing.desc": "Verwende Andesite Legierungen und Holz, um einen einfachen Rahmen zu erstellen.", + "advancement.create.mechanical_drill": "Stationäre Brecher", + "advancement.create.mechanical_drill.desc": "Plaziere und treibe einen Mechanischen Bohrer.", + "advancement.create.press": "Presse macht 'Bonk'!", + "advancement.create.press.desc": "Plaziere und treibe eine Mechanische Presse an um Bleche zu erstellen.", + "advancement.create.polished_rose_quartz": "Pinke Diamanten", + "advancement.create.polished_rose_quartz.desc": "Verwende ein Schmiergelpapier um Rosenquarz zu polieren bis er transparent wird.", + "advancement.create.electron_tube": "Piep piep", + "advancement.create.electron_tube.desc": "Mache ein paar Elektronenröhren, nützlich in weniger primitiven Maschienerien.", + "advancement.create.mechanical_saw": "Stationäres Hacken", + "advancement.create.mechanical_saw.desc": "Plaziere und verwende eine Mechanische Säge.", + "advancement.create.basin": "Beckenbetrieb", + "advancement.create.basin.desc": "Stelle ein Behälter auf und versuche Items reinzuwerfen.", + "advancement.create.mixer": "Misch es zusammen", + "advancement.create.mixer.desc": "Plaziere einen mechanischen Mixer über dem Behälter, treibe ihn an und starte mit dem Mixen von Zutaten.", + "advancement.create.blaze_burner": "Ein lebender Kamin", + "advancement.create.blaze_burner.desc": "Bekomme einen Lohenbrenner.", + "advancement.create.compact": "Automatische Verdichtunge", + "advancement.create.compact.desc": "Verwende eine Presse und einen Behälter um ein paar Items zu verdichten.", + "advancement.create.brass": "Tatsächliche Legierungen", + "advancement.create.brass.desc": "Verwende zerkleinertes Kupfererz und zerkleinertes Zinkerz um messing herzustellen.", + "advancement.create.brass_casing": "Das Messingzeitalter", + "advancement.create.brass_casing.desc": "Verwende das neu erhaltene Messing und etwas Holz, um mehr fortgeschrittene Rahmen herzustellen.", + "advancement.create.copper_casing": "Das Kupferzeitalter", + "advancement.create.copper_casing.desc": "Verwende Kupferbleche und Holz, um Kupferrahmen herzustellen.", + "advancement.create.spout": "Platsch", + "advancement.create.spout.desc": "Schaue einem Flüssigkeitsitem zu, wie es von einem Ausguss gefüllt wird.", + "advancement.create.spout_potion": "Globale Brauerei", + "advancement.create.spout_potion.desc": "Schaue einem Ausguss zu, wie er eine Flasche mit einem Trank füllt.", + "advancement.create.chocolate": "Eine Welt der Fantasie", + "advancement.create.chocolate.desc": "Bekomme einen Schokoladeneimer", + "advancement.create.item_drain": "Entwässerung", + "advancement.create.item_drain.desc": "Schaue einem mit Flüssigkeit gefülltem Item zu, wie es in einem Abfluss getrocknet wird.", + "advancement.create.chained_item_drain": "Lass es rollen!", + "advancement.create.chained_item_drain.desc": "Schaue einem Gegenstand zu, wie er über mehrere verbundene Abflüsse rollt.", + "advancement.create.glass_pipe": "Flussspion", + "advancement.create.glass_pipe.desc": "Beobachte durch ein Rohr mit Fenster, wie Flüssigkeiten durch ein Rohr fließen. Gerade Rohre bekommen ein Fenster, wenn du mit einem Schraubenschlüssel auf diese klickst.", + "advancement.create.pipe_collision": "Lass niemals die Ströme kreuzen!", + "advancement.create.pipe_collision.desc": "Schaue zwei Flüssigkeiten zu, wie sie sich in deinen Rohren treffen.", + "advancement.create.pipe_spill": "Da ist ein Leck!", + "advancement.create.pipe_spill.desc": "Schaue eiem offenem Rohrende zu, wie es Flüssigkeiten aufsaugt oder rauslässt.", + "advancement.create.hose_pulley": "Industrielles Verschütten", + "advancement.create.hose_pulley.desc": "Lass eine Umlenkrolle ab und schau ihr zu, wie sie Wasser aufsaugt oder rauslässt.", + "advancement.create.infinite_water": "Die Ozeane entwässern", + "advancement.create.infinite_water.desc": "Pumpe aus einem Gewässer, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_lava": "Den Kern des Planeten aufsaugen", + "advancement.create.infinite_lava.desc": "Pumpe aus einem Lavasee, der groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_chocolate": "In Fantasie ertrinken", + "advancement.create.infinite_chocolate.desc": "Pumpe aus einem Schokoladenbecken, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.crafter": "Automatisierte Montage", + "advancement.create.crafter.desc": "Plaziere und aktiviere ein paar Mechanische Handwerkseinheiten.", "advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", "advancement.create.dual_extendo_grip": "Ultimatives Boing-Zeitalter", @@ -540,32 +751,32 @@ "create.recipe.crushing": "Mahlen (Mahlwerk)", "create.recipe.milling": "Mahlen (Mahlstein)", - "create.recipe.pressing": "Mechanische Presse", - "create.recipe.mixing": "Mixen", - "create.recipe.sawing": "Sägen", - "create.recipe.blockzapper_upgrade": "Blockpistole", - "create.recipe.sandpaper_polishing": "Schleifen", - "create.recipe.processing.chance": "Chance: %1$s%%", - "create.recipe.heat_requirement.none": "Keine Hitze benötigt", - "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", - "create.recipe.heat_requirement.superheated": "Viel Hitze benötigt", "create.recipe.fan_washing": "Sammelwaschen", "create.recipe.fan_washing.fan": "Propeller hinter fließendem Wasser", "create.recipe.fan_smoking": "Sammelräuchern", "create.recipe.fan_smoking.fan": "Propeller hinter Feuer", "create.recipe.fan_blasting": "Sammelschmelzen", "create.recipe.fan_blasting.fan": "Propeller hinter Lava", + "create.recipe.pressing": "Mechanische Presse", + "create.recipe.mixing": "Mixen", "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", "create.recipe.automatic_brewing": "Automatisiertes Brauen", "create.recipe.packing": "Komprimieren", "create.recipe.automatic_packing": "Automatisiertes Packen", + "create.recipe.sawing": "Sägen", "create.recipe.mechanical_crafting": "Mechanisches Bauen", "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", "create.recipe.block_cutting": "Schneiden von Blöcken", "create.recipe.wood_cutting": "Schneiden von Holz", + "create.recipe.blockzapper_upgrade": "Blockpistole", + "create.recipe.sandpaper_polishing": "Schleifen", "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", "create.recipe.spout_filling": "Befüllung per Ausguss", "create.recipe.draining": "Gegenstandsablassung", + "create.recipe.processing.chance": "Chance: %1$s%%", + "create.recipe.heat_requirement.none": "Keine Hitze benötigt", + "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", + "create.recipe.heat_requirement.superheated": "Viel Hitze benötigt", "create.generic.range": "Reichweite", "create.generic.radius": "Radius", @@ -627,20 +838,6 @@ "create.gui.blockzapper.pattern.chance25": "25%-Chance", "create.gui.blockzapper.pattern.chance50": "50%-Chance", "create.gui.blockzapper.pattern.chance75": "75%-Chance", - - "create.blockzapper.usingBlock": "Auswahl: %1$s", - "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", - "create.blockzapper.component.body": "Rumpf", - "create.blockzapper.component.amplifier": "Verstärker", - "create.blockzapper.component.accelerator": "Beschleuniger", - "create.blockzapper.component.retriever": "Empfänger", - "create.blockzapper.component.scope": "Fernrohr", - "create.blockzapper.componentTier.none": "Nichts", - "create.blockzapper.componentTier.brass": "Messing", - "create.blockzapper.componentTier.chromatic": "Chromatisch", - "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", - "create.blockzapper.empty": "Keine Blöcke übrig!", - "create.gui.terrainzapper.title": "Tragbarer Geländeformer", "create.gui.terrainzapper.placement": "Platzierung", "create.gui.terrainzapper.placement.merged": "Zusammengeführt", @@ -660,139 +857,18 @@ "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "Rezeptfilter", - "create.logistics.fluid_filter": "Flüssigkeitsfilter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filter angewendet auf %1$s.", - "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", - "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", - "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", - - "create.gui.adjustable_crate.title": "Lagerraum", - "create.gui.adjustable_crate.storageSpace": "Lagerraum", - - "create.gui.stockpile_switch.title": "Vorratssensor", - "create.gui.stockpile_switch.invert_signal": "Invertiere Signal", - "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", - - "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", - "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", - "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", - "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", - "create.schematicAndQuill.title": "Bauplanname:", - "create.schematicAndQuill.fallbackName": "Mein Bauplan", - "create.schematicAndQuill.saved": "Gespeichert als %1$s", - "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", - - "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "Nein", - "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", - "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", - "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", - "create.schematic.mirror": "Spiegeln", - "create.schematic.mirror.none": "Nein", - "create.schematic.mirror.frontBack": "Vor-Zurück", - "create.schematic.mirror.leftRight": "Links-Rechts", - "create.schematic.tool.deploy": "Positionieren", - "create.schematic.tool.move": "XZ Bewegen", - "create.schematic.tool.movey": "Y Bewegen", - "create.schematic.tool.rotate": "Rotieren", - "create.schematic.tool.print": "Drucken", - "create.schematic.tool.flip": "Umdrehen", - "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", - "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", - "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", - "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", - "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", - "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Bewegt das Schema vertikal", - "create.schematic.tool.movey.description.1": "[Strg]-Mausrad zum hoch- und runterbewegen", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", - "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", - "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", - "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", - "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", - "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", - - "create.gui.schematicTable.title": "Bauplantisch", - "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", - "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", - "create.gui.schematicTable.uploading": "Hochladen...", - "create.gui.schematicTable.finished": "Hochgeladen!", - "create.gui.schematicTable.refresh": "Aktualisiere Dateien", - "create.gui.schematicTable.open_folder": "Öffne Ordner", - "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", - "create.gui.schematicannon.title": "Bauplankanone", - "create.gui.schematicannon.listPrinter": "Materiallistendruck", - "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", - "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", - "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", - "create.gui.schematicannon.optionEnabled": "Aktiviert", - "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", - "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", - "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", - "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", - "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", - "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", - "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", - "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", - "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", - "create.gui.schematicannon.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", - "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", - "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", - "create.materialChecklist": "Material Checkliste", - "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", - - "create.schematicannon.status.idle": "Aus", - "create.schematicannon.status.ready": "Bereit", - "create.schematicannon.status.running": "An", - "create.schematicannon.status.finished": "Fertig", - "create.schematicannon.status.paused": "Pausiert", - "create.schematicannon.status.stopped": "Gestoppt", - "create.schematicannon.status.noGunpowder": "Schwarzpulver leer", - "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", - "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", - "create.schematicannon.status.searching": "Suchen", - "create.schematicannon.status.skipping": "Überspringen", - "create.schematicannon.status.missingBlock": "Fehlender Block:", - "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", - "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", - "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", - "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", - - "create.gui.filter.deny_list": "Verweigert-Liste", - "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", - "create.gui.filter.allow_list": "Erlaubt-Liste", - "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", - "create.gui.filter.respect_data": "Respektiere Daten", - "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", - "create.gui.filter.ignore_data": "Ignoriere Daten", - "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", + "create.blockzapper.usingBlock": "Auswahl: %1$s", + "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", + "create.blockzapper.component.body": "Rumpf", + "create.blockzapper.component.amplifier": "Verstärker", + "create.blockzapper.component.accelerator": "Beschleuniger", + "create.blockzapper.component.retriever": "Empfänger", + "create.blockzapper.component.scope": "Fernrohr", + "create.blockzapper.componentTier.none": "Nichts", + "create.blockzapper.componentTier.brass": "Messing", + "create.blockzapper.componentTier.chromatic": "Chromatisch", + "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", + "create.blockzapper.empty": "Keine Blöcke übrig!", "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", @@ -817,13 +893,21 @@ "create.contraptions.clockwork.minute_first": "Minutenzeiger zuerst", "create.contraptions.clockwork.hour_first_24": "24-Stunden-Zeiger zuerst", + "create.logistics.filter": "Filter", + "create.logistics.recipe_filter": "Rezeptfilter", + "create.logistics.fluid_filter": "Flüssigkeitsfilter", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "Filter angewendet auf %1$s.", + "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", + "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", + "create.gui.goggles.generator_stats": "Generator Statistik:", "create.gui.goggles.kinetic_stats": "Kinetische Statistik:", "create.gui.goggles.at_current_speed": "bei derzeitiger Geschwindigkeit", "create.gui.goggles.pole_length": "Stab Länge:", "create.gui.goggles.fluid_container": "Flüssigkeitstank Info:", "create.gui.goggles.fluid_container.capacity": "Kapazität:", - "create.gui.assembly.exception": "Diese Vorrichtung konnte nicht gebaut werden:", "create.gui.assembly.exception.unmovableBlock": "Unbeweglicher Block (%4$s) bei [%1$s,%2$s,%3$s]", "create.gui.assembly.exception.chunkNotLoaded": "Der Block bei [%1$s,%2$s,%3$s] war nicht in einem geladenen Chunk", @@ -831,18 +915,20 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", - "create.gui.gauge.info_header": "Messgerät Information:", - "create.gui.speedometer.title": "Rotationsgeschwindigkeit", "create.gui.stressometer.title": "Netzwerkbelastung", "create.gui.stressometer.capacity": "Verbleibende Kapazität", "create.gui.stressometer.overstressed": "Überbelastet", "create.gui.stressometer.no_rotation": "Keine Rotation", - "create.gui.contraptions.not_fast_enough": "Wie es scheint dreht sich dieses %1$s _nicht_ _schnell_ _genug_.", "create.gui.contraptions.network_overstressed": "Wie es scheint ist diese Vorrichtung _überbelastet_. Füge mehr Quellen hinzu oder _verlangsame_ die Komponenten mit hoher _Belastungsauswirkung_.", - + "create.gui.adjustable_crate.title": "Lagerraum", + "create.gui.adjustable_crate.storageSpace": "Lagerraum", + "create.gui.stockpile_switch.title": "Vorratssensor", + "create.gui.stockpile_switch.invert_signal": "Invertiere Signal", + "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", "create.gui.sequenced_gearshift.title": "Sequenzielle Gangschaltung", "create.gui.sequenced_gearshift.instruction": "Befehl", "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Drehe um Winkel", @@ -864,12 +950,201 @@ "create.gui.sequenced_gearshift.speed.back": "Eingangsgeschwindigkeit, Umgekehrt", "create.gui.sequenced_gearshift.speed.back_fast": "Doppelte Geschwindigkeit, Umgekehrt", - "create.tooltip.holdKey": "Halte [%1$s]", - "create.tooltip.holdKeyOrKey": "Halte [%1$s] oder [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Strg", + "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", + "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", + "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", + "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", + "create.schematicAndQuill.title": "Bauplanname:", + "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", + "create.schematicAndQuill.fallbackName": "Mein Bauplan", + "create.schematicAndQuill.saved": "Gespeichert als %1$s", + + "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", + "create.schematic.position": "Position", + "create.schematic.rotation": "Rotation", + "create.schematic.rotation.none": "Nein", + "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", + "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", + "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", + "create.schematic.mirror": "Spiegeln", + "create.schematic.mirror.none": "Nein", + "create.schematic.mirror.frontBack": "Vor-Zurück", + "create.schematic.mirror.leftRight": "Links-Rechts", + "create.schematic.tool.deploy": "Positionieren", + "create.schematic.tool.move": "XZ Bewegen", + "create.schematic.tool.movey": "Y Bewegen", + "create.schematic.tool.rotate": "Rotieren", + "create.schematic.tool.print": "Drucken", + "create.schematic.tool.flip": "Umdrehen", + "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", + "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", + "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", + "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", + "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", + "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Bewegt das Schema vertikal", + "create.schematic.tool.movey.description.1": "[Strg]-Mausrad zum hoch- und runterbewegen", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", + "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", + "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", + "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", + "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", + "create.schematic.tool.print.description.3": "", + + "create.schematics.synchronizing": "Synchronisation...", + "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", + "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", + + "create.gui.schematicTable.refresh": "Aktualisiere Dateien", + "create.gui.schematicTable.open_folder": "Öffne Ordner", + "create.gui.schematicTable.title": "Bauplantisch", + "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", + "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", + "create.gui.schematicTable.uploading": "Hochladen...", + "create.gui.schematicTable.finished": "Hochgeladen!", + "create.gui.schematicannon.title": "Bauplankanone", + "create.gui.schematicannon.listPrinter": "Materiallistendruck", + "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", + "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", + "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", + "create.gui.schematicannon.optionEnabled": "Aktiviert", + "create.gui.schematicannon.optionDisabled": "Deaktiviert", + "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", + "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", + "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", + "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", + "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", + "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", + "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", + "create.gui.schematicannon.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", + "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", + "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", + "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", + "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", + "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", + + "create.schematicannon.status.idle": "Aus", + "create.schematicannon.status.ready": "Bereit", + "create.schematicannon.status.running": "An", + "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", + "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", + "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", + "create.schematicannon.status.finished": "Fertig", + "create.schematicannon.status.paused": "Pausiert", + "create.schematicannon.status.stopped": "Gestoppt", + "create.schematicannon.status.noGunpowder": "Schwarzpulver leer", + "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", + "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", + "create.schematicannon.status.searching": "Suchen", + "create.schematicannon.status.skipping": "Überspringen", + "create.schematicannon.status.missingBlock": "Fehlender Block:", + "create.schematicannon.status.placing": "Platzieren", + + "create.materialChecklist": "Material Checkliste", + "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", + + "create.gui.filter.deny_list": "Verweigert-Liste", + "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", + "create.gui.filter.allow_list": "Erlaubt-Liste", + "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", + "create.gui.filter.respect_data": "Respektiere Daten", + "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", + "create.gui.filter.ignore_data": "Ignoriere Daten", + "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", + + "create.item_attributes.placeable": "ist plazierbar", + "create.item_attributes.placeable.inverted": "ist nicht plazierbar", + "create.item_attributes.consumable": "kann man essen", + "create.item_attributes.consumable.inverted": "kann man nicht essen", + "create.item_attributes.smeltable": "kann geschmolzen werden", + "create.item_attributes.smeltable.inverted": "kann nicht geschmolzen werden", + "create.item_attributes.washable": "kann gewaschen werden", + "create.item_attributes.washable.inverted": "kann nicht gewaschen werden", + "create.item_attributes.smokable": "kann geräuchert werden", + "create.item_attributes.smokable.inverted": "kann nicht geräuchert werden", + "create.item_attributes.crushable": "kann zerkleinert werden", + "create.item_attributes.crushable.inverted": "kann nicht zerkleinert werden", + "create.item_attributes.blastable": "ist im Schmelzofen schmelzbar", + "create.item_attributes.blastable.inverted": "ist nicht im Schmelzofen schmelzbar", + "create.item_attributes.enchanted": "ist verzaubert", + "create.item_attributes.enchanted.inverted": "ist nicht verzaubert", + "create.item_attributes.damaged": "ist beschädigt", + "create.item_attributes.damaged.inverted": "ist nicht beschädigt", + "create.item_attributes.badly_damaged": "ist stark beschädigt", + "create.item_attributes.badly_damaged.inverted": "ist nicht stark beschädigt", + "create.item_attributes.not_stackable": "kann nicht gestapelt werden", + "create.item_attributes.not_stackable.inverted": "kann gestapelt werden", + "create.item_attributes.equipable": "kann ausgerüstet werden", + "create.item_attributes.equipable.inverted": "kann nicht ausgerüstet werden", + "create.item_attributes.furnace_fuel": "ist Brennstoff", + "create.item_attributes.furnace_fuel.inverted": "ist nicht Brennstoff", + "create.item_attributes.in_tag": "ist mit %1$s makiert", + "create.item_attributes.in_tag.inverted": "ist nicht mit %1$s markoiert", + "create.item_attributes.in_item_group": "ist in der Gruppe '%1$s'", + "create.item_attributes.in_item_group.inverted": "ist nicht in der Gruppe '%1$s'", + "create.item_attributes.added_by": "wurde von %1$s hinzugefügt", + "create.item_attributes.added_by.inverted": "wurde nicht von %1$s hinzugefügt", + "create.item_attributes.has_enchant": "ist mit %1$s verzaubert", + "create.item_attributes.has_enchant.inverted": "ist nicht mit %1$s verzaubert", + "create.item_attributes.color": "ist %1$s gefärbt", + "create.item_attributes.color.inverted": "ist nicht %1$s gefärbt", + "create.item_attributes.max_enchanted": "ist mit dem maximalen Level verzaubert", + "create.item_attributes.max_enchanted.inverted": "ist nicht mit dem maximalen Level verzaubert", + "create.item_attributes.has_fluid": "enthält %1$s", + "create.item_attributes.has_fluid.inverted": "enthält nicht %1$s", + "create.item_attributes.has_name": "hat den Benutzerdefinierten Namen %1$s", + "create.item_attributes.has_name.inverted": "hat nicht den benutzerdefinierten Namen %1$s", + "create.item_attributes.book_author": "wurde verfasst von %1$s", + "create.item_attributes.book_author.inverted": "wurde nicht von %1$s verfasst", + "create.item_attributes.book_copy_original": "ist ein Original", + "create.item_attributes.book_copy_original.inverted": "ist kein Original", + "create.item_attributes.book_copy_first": "ist die erste Kopie", + "create.item_attributes.book_copy_first.inverted": "ist nicht die erste Kopie", + "create.item_attributes.book_copy_second": "ist die zweite Kopie", + "create.item_attributes.book_copy_second.inverted": "ist nicht die Zweite Kopie", + "create.item_attributes.book_copy_tattered": "ist ein zerfetztes Durcheinander", + "create.item_attributes.book_copy_tattered.inverted": "sit kein zerfetztes Durcheinander", + "create.item_attributes.astralsorcery_crystal": "hat das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "hat nicht das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_constellation": "ist abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "ist nicht abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_perk_gem": "hat das Vorteilsattribut %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "hat nicht das Vorteilsattribut %1$s", + "create.item_attributes.astralsorcery_amulet": "verbessert %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "verbessert nicht %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", + "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", + "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", + "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", + "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", + "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", + "create.gui.attribute_filter.deny_list": "Verweigert-Liste", + "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", + "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", + "create.tooltip.holdForDescription": "Halte [%1$s] für eine Zusammenfassung", "create.tooltip.holdForControls": "Halte [%1$s] für die Steuerung", + "create.tooltip.holdKey": "Halte [%1$s]", + "create.tooltip.holdKeyOrKey": "Halte [%1$s] oder [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Strg", "create.tooltip.speedRequirement": "Geschwindigkeitsanforderung: %1$s", "create.tooltip.speedRequirement.none": "Keine", "create.tooltip.speedRequirement.medium": "Moderat", @@ -886,6 +1161,31 @@ "create.tooltip.generationSpeed": "Generiert mit %1$s %2$s", "create.tooltip.analogStrength": "Analoge Stärke: %1$s/15", + "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", + "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", + "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", + "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", + + "create.weighted_ejector.target_set": "Ziel ausgewählt", + "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", + "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", + "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", + + "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", + + "create.mechanical_arm.selection_mode.round_robin": "Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", + + "create.tunnel.selection_mode.split": "Aufteilung", + "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", + "create.tunnel.selection_mode.round_robin": "Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", + "create.tunnel.selection_mode.randomize": "Zufällig", + "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", + "create.tooltip.chute.header": "Rinnen Information", "create.tooltip.chute.items_move_down": "Gegenstände bewegen sich nach unten", "create.tooltip.chute.items_move_up": "Gegenstände bewegen sich nach oben", @@ -896,28 +1196,6 @@ "create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb", "create.tooltip.chute.contains": "Enthält: %1$s x%2$s", - "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", - "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", - "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", - "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", - - "create.weighted_ejector.target_set": "Ziel ausgewählt", - "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", - "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", - "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", - - "create.tunnel.selection_mode.split": "Aufteilung", - "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", - "create.tunnel.selection_mode.randomize": "Zufällig", - "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", - "create.hint.hose_pulley.title": "Endlose Versorgung", "create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.", "create.hint.mechanical_arm_no_targets.title": "Keine Ziele", @@ -936,18 +1214,6 @@ "create.gui.config.overlay7": "Benutze /create overlay reset", "create.gui.config.overlay8": "um die Standardposition zurückzusetzen", - "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", - "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", - "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", - "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", - "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", - "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", - "create.gui.attribute_filter.deny_list": "Verweigert-Liste", - "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", - "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", - "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server Tick ist derzeitig um %s ms verlangsamt :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server Tick ist jetzt um %s ms verlangsamt >:)", @@ -967,20 +1233,81 @@ "create.subtitle.block_funnel_eat": "Trichter MAMPFT", "create.subtitle.blaze_munch": "Lohe kaut glücklich", + "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "BEISPIELGEGENSTAND (nur ein Marker, um zu zeigen, dass dieser Tooltip existiert)", "item.create.example_item.tooltip.summary": "Eine Kurzbeschreibung eines Gegenstands. _Unterstriche_ heben einen Begriff hervor.", "item.create.example_item.tooltip.condition1": "Wenn dies", - "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", - "item.create.example_item.tooltip.condition2": "Und wenn dies", - "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", + "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", + "item.create.example_item.tooltip.condition2": "Und wenn dies", + "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", + + "block.create.wooden_bracket.tooltip": "Holzhalterung", + "block.create.wooden_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem gemütlichem und hölzernem Stück Verstärkung.", + + "block.create.metal_bracket.tooltip": "Metallhalterung", + "block.create.metal_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem industriellem und robustem Stück Verstärkung.", + + "block.create.copper_casing.tooltip": "Kupferrahmen", + "block.create.copper_casing.tooltip.summary": "Robustes Maschinengehäuse mit vielfältigen Einsatzmöglichkeiten. Sicher für die Dekoration.", + "block.create.copper_casing.tooltip.condition1": "Wenn auf ein Flüssigkeitsrohr geklickt", + "block.create.copper_casing.tooltip.behaviour1": "_Ummantelt_ das Flüssigkeitsrohr mit dem _Kupferrahmen_. Ummantelte Flüssigkeitsleitungen _verändern ihre Verbindungen nicht mehr_.", + + "block.create.encased_fluid_pipe.tooltip": "Ummantelte Flüssigkeitsleitung", + "block.create.encased_fluid_pipe.tooltip.summary": "Ein _Flüssigkeitsrohr_ mir einem _Kupferrahmen_ ummantelt.", + + "block.create.seat.tooltip": "Sitz", + "block.create.seat.tooltip.summary": "Setz dich hin und genieße die Fahrt! Der Sitz verankert den Spieler an einem sich bewegendem Apparat. Hervorragend auch für statische Möbel! Kommt in verschiedensten Farben.", + "block.create.seat.tooltip.condition1": "Rechtsklick auf den Sitz", + "block.create.seat.tooltip.behaviour1": "Setzt den Spieler auf den _Sitz_. Drücke L-Shift, um den _Sitz_ wieder zu verlassen.", + + "item.create.blaze_cake.tooltip": "Lohenkuchen", + "item.create.blaze_cake.tooltip.summary": "Ein leckeres Vergnügen für deine hart arbeitenden _Lohenbrenner_. Feuert die alle an!", + + "block.create.fluid_pipe.tooltip": "Flüssigkeitsrohr", + "block.create.fluid_pipe.tooltip.summary": "Wird zum herumbewegen von _Flüssigkeiten_ verwendet. Benötigt eine _Mechanische Pumpe_ um die _Flüssigkeiten_ zu bewegen.", + "block.create.fluid_pipe.tooltip.condition1": "Flüssigkeitstransport", + "block.create.fluid_pipe.tooltip.behaviour1": "Verbindet sich zu _Flüssigkeitspeichern_ wie _Tanks_ oder _Behältern_. Offene _Rohrenden_ können auch Flüssigkeitsblöcke platzieren oder die Flüssigkeit auslaufen lassen. Achte auf Lecks!", + "block.create.fluid_pipe.tooltip.condition2": "Rechtsklick mit dem Schraubenschlüssel", + "block.create.fluid_pipe.tooltip.behaviour2": "Plaziert, wenn möglich, ein Fenster in dem Rohr.", + + "block.create.hose_pulley.tooltip": "Umlenkrolle", + + "block.create.fluid_tank.tooltip": "Flüssigkeitstank", + "block.create.fluid_tank.tooltip.summary": "_Speichert_ alle deine geliebten _Flüssigkeiten_. Wächst in Höhe und Breite.", + "block.create.fluid_tank.tooltip.condition1": "Rechtsklick mit dem Schraubenschlüssel", + "block.create.fluid_tank.tooltip.behaviour1": "Ändert das optionale Fenster", + + "block.create.creative_fluid_tank.tooltip": "Kreativer Flüssigkeitstank", + "block.create.creative_fluid_tank.tooltip.summary": "Dieser _Flüssigkeitstank_ erlaubt unendliches reproduzieren von jeder _Flüssigkeit_.", + "block.create.creative_fluid_tank.tooltip.condition1": "Wenn eine Flüssigkeit im Tank ist", + "block.create.creative_fluid_tank.tooltip.behaviour1": "Jedes herausnehmen aus diesem Tank stellt eine _unendliche Versorgung_ der ausgewählten _Flüssigkeit_ bereit. Flüssigkeite, die in diesen Tank _eingefüllt_ werden, werden _zerstört_.", + "block.create.creative_fluid_tank.tooltip.condition2": "Rechtsklick mit dem Schraubenschlüssel", + "block.create.creative_fluid_tank.tooltip.behaviour2": "Ändert das optionale Fenster", + + "block.create.fluid_valve.tooltip": "Flüssigkeitsventil", + "block.create.fluid_valve.tooltip.summary": "Stoppt den Flüssigkeitsfluss durch ein Rohr.", + "block.create.fluid_valve.tooltip.condition1": "Kontrollierbarer Fluss", + "block.create.fluid_valve.tooltip.behaviour1": "_Rotationskraft_, die aufgebracht wird, schließt _Ventil_ und stoppt den Fluss von _Flüssigkeiten_. Kehre die _Rotationskraft_ um, um das _Ventiel_ wieder zu öffnen.", + + "block.create.mechanical_pump.tooltip": "Mechanische Pumpe", + "block.create.mechanical_pump.tooltip.summary": "Nimmt _Rotationskraft_ und verwendet diese um _Flüssigkeiten_ in einem _Rohr_ zu bewegen. Hat eine maximale Reichweite in beide Richtungen. (Standardmäßig 16 Blöcke)", + "block.create.mechanical_pump.tooltip.condition1": "Flüssigkeitsfluss", + "block.create.mechanical_pump.tooltip.behaviour1": "Angewandte _Rotationskraft_ erzeugt Druck, der die _Flüssigkeit_ durch das _Rohrnetzwerk_ zwingt. Kehre die _Rotationskraft_ um, um die Richtung zu ändern, in der die _Flüssigkeit_ fließt.", + "block.create.mechanical_pump.tooltip.control1": "Rechtsklick mit dem Schraubenschlüssel", + "block.create.mechanical_pump.tooltip.action1": "Dreht die Richtung der _Pumpe_, schaltet die Standardflussrichtung um.", + + "block.create.smart_fluid_pipe.tooltip": "Schlaues Flüssigkeitsrohr", + + "block.create.spout.tooltip": "Ausguss", "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", @@ -999,10 +1326,19 @@ "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", - "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", + "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", + "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", + "item.create.deforester.tooltip": "Entforster", + + "item.create.extendo_grip.tooltip": "Extendo Griff", + + "item.create.filter.tooltip": "Filter", + + "item.create.attribute_filter.tooltip": "Attribut Filter", + "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", @@ -1022,12 +1358,16 @@ "item.create.schematic_and_quill.tooltip.control1": "R-Klick", "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", - "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", + "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", + "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", "block.create.schematicannon.tooltip": "BAUPLANKANONE", "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", + "block.create.schematicannon.tooltip.condition1": "Wenn gerechtsklickt", + "block.create.schematicannon.tooltip.behaviour1": "Öffnet das _Interface_", + "block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt", "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", @@ -1036,152 +1376,27 @@ "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", - "block.create.shaft.tooltip": "WELLE", - "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", - - "block.create.cogwheel.tooltip": "ZAHNRAD", - "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", - - "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", - "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", - - "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", - "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", - - "block.create.gearbox.tooltip": "GETRIEBE", - "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", - - "block.create.gearshift.tooltip": "GANGSCHALTUNG", - "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", - "block.create.gearshift.tooltip.condition1": "Wenn aktiv", - "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", - - "block.create.clutch.tooltip": "KUPPLUNG", - "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", - "block.create.clutch.tooltip.condition1": "Wenn aktiv", - "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", - - "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", - "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", - "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", - "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", - "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", - "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", - - "block.create.water_wheel.tooltip": "WASSERRAD", - "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", - - "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", - "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", - "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", - "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", - "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", - "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", - "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", - "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", + "item.create.goggles.tooltip": "Ingenieursbrille", "block.create.turntable.tooltip": "DREHTISCH", "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", - "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", - "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", - "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", - "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", - - "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", - "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", - "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", - "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", - "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", - "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", - "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", - "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact items_ in the basin whenever all necessary ingredients are present.", - - "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", - "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", - "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", - - "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", - "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", - "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", - "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", - - "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", - "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", - "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", - - "block.create.linear_chassis.tooltip": "SCHUBGERÜST", - "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", - "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", - "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", - "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", - - "block.create.radial_chassis.tooltip": "DREHGERÜST", - "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", - "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", - "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", - "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", - "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", - - "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", - "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", - "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", - "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", - - "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", - "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", - "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", - "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", + "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", + "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", - "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", - "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", - "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", - "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", - "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", - "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", - "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", - "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", - - "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", - "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", - "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", - "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", - "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", - "block.create.adjustable_crate.tooltip": "LAGERRAUM", "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", - "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", - "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", - "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", "block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.", - "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", - "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", - - "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", - "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", - "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Bitte halte dies fern von Kindern", "create.tooltip.randomWipDescription1": "Ein Babypanda stirbt jedes mal wenn du diesen Gegenstand benutzt. Jedes. Mal.", "create.tooltip.randomWipDescription2": "Benutzung auf eigene Gefahr.", @@ -1193,4 +1408,5 @@ "create.tooltip.randomWipDescription8": "Benutze es und bereue deine Entscheidung umgehend.", "_": "Thank you for translating Create!" -} \ No newline at end of file + +} From f3109b28abfdb54c31ee7508f4354e6890039812 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 21 Nov 2021 22:03:38 +0100 Subject: [PATCH 12/26] Back on Patch - Fixed Crafters voiding any inserted items after being moved on a contraption - Fixed Crafters crashing the game after being placed by a Schematicannon - A couple of two-ingredient recipes have been made shapeless - Improved piston/pulley contraption collision with blocks in the world - Fixed pistons/pulley contraptions merging into world blocks when disassembling shortly after loaded in - Added jei support for toolbox colouring recipes - Disabled item shadows on belts - Toolbox radial can now be navigated using hotbar shortcuts - Toolbox radial now steps back when right-clicked - Toolbox radial now immediately opens the multi-toolbox view when right-clicking the central "unequip" button - Fixed hidden slots visible in toolbox screen in some gui scales - Toolbox sorting in the radial menu is now deterministic - Fixed Toolboxes not always updating their inventory state to clients - Shulker boxes can no longer be placed inside toolboxes - Fixed potion fluids not displaying their full name in jei - Fixed JEI showing all potion recipes when looking up a specific one --- src/generated/resources/.cache/cache | 134 +++---- .../assets/create/lang/unfinished/de_de.json | 338 +++++++++--------- .../loot_tables/blocks/black_toolbox.json | 11 + .../loot_tables/blocks/blue_toolbox.json | 11 + .../loot_tables/blocks/brown_toolbox.json | 11 + .../loot_tables/blocks/cyan_toolbox.json | 11 + .../loot_tables/blocks/gray_toolbox.json | 11 + .../loot_tables/blocks/green_toolbox.json | 11 + .../blocks/light_blue_toolbox.json | 11 + .../blocks/light_gray_toolbox.json | 11 + .../loot_tables/blocks/lime_toolbox.json | 11 + .../loot_tables/blocks/magenta_toolbox.json | 11 + .../loot_tables/blocks/orange_toolbox.json | 11 + .../loot_tables/blocks/pink_toolbox.json | 11 + .../loot_tables/blocks/purple_toolbox.json | 11 + .../loot_tables/blocks/red_toolbox.json | 11 + .../loot_tables/blocks/white_toolbox.json | 11 + .../loot_tables/blocks/yellow_toolbox.json | 11 + .../recipes/crafting/kinetics/black_seat.json | 14 +- .../kinetics/black_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/blue_seat.json | 14 +- .../kinetics/blue_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/brown_seat.json | 14 +- .../kinetics/brown_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/cyan_seat.json | 14 +- .../kinetics/cyan_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/depot.json | 14 +- .../recipes/crafting/kinetics/gray_seat.json | 14 +- .../kinetics/gray_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/green_seat.json | 14 +- .../kinetics/green_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/light_blue_seat.json | 14 +- .../light_blue_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/light_gray_seat.json | 14 +- .../light_gray_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/lime_seat.json | 14 +- .../kinetics/lime_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/magenta_seat.json | 14 +- .../magenta_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/mechanical_pump.json | 14 +- .../crafting/kinetics/orange_seat.json | 14 +- .../kinetics/orange_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/pink_seat.json | 14 +- .../kinetics/pink_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/purple_seat.json | 14 +- .../kinetics/purple_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/red_seat.json | 14 +- .../kinetics/red_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../recipes/crafting/kinetics/white_seat.json | 14 +- .../kinetics/white_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../crafting/kinetics/yellow_seat.json | 14 +- .../kinetics/yellow_seat_from_other_seat.json | 14 +- ..._valve_handle_from_other_valve_handle.json | 14 +- .../java/com/simibubi/create/AllBlocks.java | 43 ++- .../simibubi/create/compat/jei/CreateJEI.java | 26 +- .../jei/PotionFluidSubtypeInterpreter.java | 44 +++ .../jei/ToolboxColoringRecipeMaker.java | 52 +++ .../crafter/ConnectedInputHandler.java | 6 + .../crafter/MechanicalCrafterTileEntity.java | 11 + .../ControlledContraptionEntity.java | 5 - .../IControlContraption.java | 2 - .../structureMovement/MountedStorage.java | 6 +- .../bearing/ClockworkBearingTileEntity.java | 3 - .../bearing/MechanicalBearingTileEntity.java | 3 - .../piston/LinearActuatorTileEntity.java | 51 +-- .../piston/MechanicalPistonTileEntity.java | 6 +- .../pulley/PulleyTileEntity.java | 2 +- .../fluids/potion/PotionFluid.java | 7 + .../relays/belt/BeltRenderer.java | 8 +- .../toolbox/RadialToolboxMenu.java | 92 ++++- .../curiosities/toolbox/ToolboxBlock.java | 23 +- .../curiosities/toolbox/ToolboxContainer.java | 2 +- .../toolbox/ToolboxHandlerClient.java | 16 +- .../curiosities/toolbox/ToolboxInventory.java | 9 + .../toolbox/ToolboxTileEntity.java | 17 + .../block/depot/EjectorTileEntity.java | 21 +- .../logistics/block/depot/EntityLauncher.java | 9 +- .../data/recipe/StandardRecipeGen.java | 12 +- 93 files changed, 1016 insertions(+), 808 deletions(-) create mode 100644 src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java create mode 100644 src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index b43c2f8b2..73e99b76d 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -443,7 +443,7 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 5ae77ed97ee05a7ed98999178677e576c1140007 assets/create/lang/en_ud.json 5a7c0c3ea8d5fe01289b4eb2ea4f175bad825672 assets/create/lang/en_us.json -474dbefbecbec7e8e5969d7226a8c8a0c7a75325 assets/create/lang/unfinished/de_de.json +c7c1900b9a88af98d3af131dae5f1e2263c86635 assets/create/lang/unfinished/de_de.json 800b427fc2e4f3b71df9c6295e500d77e8c1d486 assets/create/lang/unfinished/es_es.json 5ad47cb60df592b461672e224dfb89167f8861e1 assets/create/lang/unfinished/fr_fr.json 216065d27084497ffed7cacddfe86cab542643d9 assets/create/lang/unfinished/it_it.json @@ -2510,13 +2510,13 @@ bf1d5843f93533f84bc4adec5b77da2114fa2025 data/create/loot_tables/blocks/birch_wi d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/black_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/black_sail.json cccc209d172cc7bac76f1b4ac79085ee90742ab2 data/create/loot_tables/blocks/black_seat.json -c51ad9a71e41bb3ffa807b441ebd1946ea226a68 data/create/loot_tables/blocks/black_toolbox.json +384e1f701f29851edd148d29e8160a492f6f90b4 data/create/loot_tables/blocks/black_toolbox.json f3573f47b8a914aa222633893e158f84fcd6f3d8 data/create/loot_tables/blocks/black_valve_handle.json a2313c9b7d114396fca3c86a740d23fce3873679 data/create/loot_tables/blocks/blaze_burner.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/blue_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/blue_sail.json 3834f7ac2bbc42cead02d4973842adb9ad97e6bf data/create/loot_tables/blocks/blue_seat.json -dc8e1f43464c5a9b28d4cbd37203682fc2a9621f data/create/loot_tables/blocks/blue_toolbox.json +27c64f035b10ac05d829ff84f57cba859de54dc6 data/create/loot_tables/blocks/blue_toolbox.json fcddccd1bf45c2f4ad5f1520e209a4f04487274a data/create/loot_tables/blocks/blue_valve_handle.json 1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_belt_funnel.json 70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data/create/loot_tables/blocks/brass_block.json @@ -2527,7 +2527,7 @@ b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/brass_en d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/brown_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/brown_sail.json d415862a0abe20e8c5c2c8125bb672065330a9bc data/create/loot_tables/blocks/brown_seat.json -be90d95c41b95c30243b26f462cb51b33400ba26 data/create/loot_tables/blocks/brown_toolbox.json +f8c67f9e19b2852ce38ca46404025b2e556b9d51 data/create/loot_tables/blocks/brown_toolbox.json fedfe922f568c06adc2dfdd641b9abc90ba5af8a data/create/loot_tables/blocks/brown_valve_handle.json 0be542fef3bc0e1a0d556883568a1400a8b97df1 data/create/loot_tables/blocks/cart_assembler.json ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data/create/loot_tables/blocks/chiseled_dark_scoria.json @@ -2560,7 +2560,7 @@ d370ee874b5b6b98e9a8c368218fe61f644d956d data/create/loot_tables/blocks/cuckoo_c d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/cyan_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/cyan_sail.json 49a14b9e93abdf02a7aef9c0c4085ac89617fae4 data/create/loot_tables/blocks/cyan_seat.json -6b4281aa990a190722d56c32bd03e21b508f5f49 data/create/loot_tables/blocks/cyan_toolbox.json +cc182db248509db7d98fa44bbbbf62d95c75bec5 data/create/loot_tables/blocks/cyan_toolbox.json fe24fd296812fea3f838defa2ca6270523d9d48e data/create/loot_tables/blocks/cyan_valve_handle.json fd309e1d39dcbcb25c3361edecd8c9afa0f847d0 data/create/loot_tables/blocks/dark_oak_window.json 58e6307ba0efa65a0715662a391fe7dc6fba0c68 data/create/loot_tables/blocks/dark_oak_window_pane.json @@ -2668,12 +2668,12 @@ feca8a1f62e0e13fcb2252d5f782d74938b84431 data/create/loot_tables/blocks/granite_ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/gray_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/gray_sail.json d014357b3a467b23473c8223f32471a04a9ff94c data/create/loot_tables/blocks/gray_seat.json -bfe072e94774289c9d011d68b1cea04cf740fc75 data/create/loot_tables/blocks/gray_toolbox.json +6de2bd9b109e4d396ce20c346d315a06804a5c2c data/create/loot_tables/blocks/gray_toolbox.json 35f916fd0f8465a070270615dbddd716ff68d5bb data/create/loot_tables/blocks/gray_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/green_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/green_sail.json a71599eecd3f1179e3d0367623460e798828aa6d data/create/loot_tables/blocks/green_seat.json -7f0179039e85cb61f60aa1db49bb8c45ce58207d data/create/loot_tables/blocks/green_toolbox.json +751b7548e1ce94770a4fd09fb148567936b6aef7 data/create/loot_tables/blocks/green_toolbox.json 865ebead9601b29e6326dc9e1d4c1ca92f3b7a3b data/create/loot_tables/blocks/green_valve_handle.json 9bdc47ea3ffc52f037f12f40f387e6b72a352c4e data/create/loot_tables/blocks/hand_crank.json c61b386376d19aaf89df3447a26b976a672efec5 data/create/loot_tables/blocks/haunted_bell.json @@ -2697,17 +2697,17 @@ fa8a5922f7346a15a80b5c7e5dfc26d24ea98728 data/create/loot_tables/blocks/layered_ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/light_blue_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_blue_sail.json b403848d3a4b4ad7a048e70c21e200e40d0c67e3 data/create/loot_tables/blocks/light_blue_seat.json -f99311437dd0ba8b13dee786bf10a50879386981 data/create/loot_tables/blocks/light_blue_toolbox.json +8278917f506837483c1e22f6f098e11497150301 data/create/loot_tables/blocks/light_blue_toolbox.json 32afe3fff74ccda4151567961fa6c0b8e3735358 data/create/loot_tables/blocks/light_blue_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/light_gray_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_gray_sail.json 0cc2b20cb6e2dae6cf9d759c85926663f6066c99 data/create/loot_tables/blocks/light_gray_seat.json -21bd11fba85a8dc66f6c97df3863ccc496602fde data/create/loot_tables/blocks/light_gray_toolbox.json +3abcbeb2dcec021626923ed92ff78774965144f6 data/create/loot_tables/blocks/light_gray_toolbox.json 8cc64a1dfb7ce7be2c063248d912c68ad2fe999c data/create/loot_tables/blocks/light_gray_valve_handle.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/lime_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/lime_sail.json f7893090c6ecb4862c90c408b7f9ce8316f8b608 data/create/loot_tables/blocks/lime_seat.json -a9ea20a8dce75489356e0124c218dce0c25dd1fc data/create/loot_tables/blocks/lime_toolbox.json +b3c6fa642315e930308e5d77363b61309b9f34a3 data/create/loot_tables/blocks/lime_toolbox.json cae6d16c8967164698efbce3b91018a8e79a81e9 data/create/loot_tables/blocks/lime_valve_handle.json 7dfd638cc6f0d22bbc8fcbdb7212a3bfc8c85223 data/create/loot_tables/blocks/limesand.json d476eed7b5f0c7438d2e517fc60cd23f19234056 data/create/loot_tables/blocks/limestone.json @@ -2725,7 +2725,7 @@ aa751d2e8a7889907c08c4bec6f6ca266230b6d7 data/create/loot_tables/blocks/linear_c d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/magenta_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/magenta_sail.json 9e5e017cd3b4f544f487a5ca22ef610a4addc8ec data/create/loot_tables/blocks/magenta_seat.json -66271e9a73981cfa07b3aa5abae845670f37afa4 data/create/loot_tables/blocks/magenta_toolbox.json +5ef413eccbc3b5bb7408ec76938a5d22dc016907 data/create/loot_tables/blocks/magenta_toolbox.json 517e983d7387ec0d86845d4cf3deaa6d68c71170 data/create/loot_tables/blocks/magenta_valve_handle.json e64c32da44b7e92dbef36fcb448c42b9bd9ae47c data/create/loot_tables/blocks/mechanical_arm.json 90ddf7b5c3b61758a4ad12a1e6ef16fe6ebf7794 data/create/loot_tables/blocks/mechanical_bearing.json @@ -2759,7 +2759,7 @@ d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/nixie_tu 90cc4d5857f47c48e2b82f394de9567023c5c8ce data/create/loot_tables/blocks/oak_window_pane.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/orange_sail.json 2333aaea940816b6bc8454ba24e0c9f52af94ac0 data/create/loot_tables/blocks/orange_seat.json -de05f444ab1776b77e4d9e50411feb26530f2473 data/create/loot_tables/blocks/orange_toolbox.json +a7afe3ca51fb2d6986521c13a9180466791861fb data/create/loot_tables/blocks/orange_toolbox.json 13338687962ef5b48dd9d142a2a862637d5c6953 data/create/loot_tables/blocks/orange_valve_handle.json 267e9e24fac93e3496a80fcb6ed8e9d1c329d2d2 data/create/loot_tables/blocks/ornate_iron_window.json 1fe77a16f4c86993b5fb30f1f48362787fd7cd0b data/create/loot_tables/blocks/ornate_iron_window_pane.json @@ -2812,7 +2812,7 @@ d3e4ab984aef19ee21a1c5b868eb3fde96c05afd data/create/loot_tables/blocks/paved_we d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/pink_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/pink_sail.json 6f32e1217986407e41358e9417de63602c78e810 data/create/loot_tables/blocks/pink_seat.json -0185cbfd1e039a2c7c1b625561049706adf02931 data/create/loot_tables/blocks/pink_toolbox.json +144ff16d50db20e2696cdfaacac88a4ca186b4cc data/create/loot_tables/blocks/pink_toolbox.json d85b09659f08a73513c57b1b2e5ec7fc4b6f340a data/create/loot_tables/blocks/pink_valve_handle.json 1087b6c6d88dc7c71ed81e1d3e180fe065e6d098 data/create/loot_tables/blocks/piston_extension_pole.json 05302657546d8d410e367e84d4d5e01f01523236 data/create/loot_tables/blocks/polished_dark_scoria.json @@ -2848,13 +2848,13 @@ e8fb62c91226ac107dee45c5ebc54c8dd0aee224 data/create/loot_tables/blocks/pulse_re d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/purple_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/purple_sail.json d7f6caa568e6508177a644fb78dc18ce26c9b2c0 data/create/loot_tables/blocks/purple_seat.json -06c233a9a1aeec64fbd41d3134555ebc535de965 data/create/loot_tables/blocks/purple_toolbox.json +da0e4ad8e4f0eef1a1bcbbf8f2a982ee8ba8b2c7 data/create/loot_tables/blocks/purple_toolbox.json 773e4dc856044dabfe9d2323cbda0460dfb626ee data/create/loot_tables/blocks/purple_valve_handle.json 768420dab8785909891e52c4d77a182d99ba11d3 data/create/loot_tables/blocks/radial_chassis.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/red_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/red_sail.json 71b0fa3b174efe94a2a735ab2426c376c0ef674a data/create/loot_tables/blocks/red_seat.json -2f15d3f98121a4a1348bd3c44c59cbb52619b12e data/create/loot_tables/blocks/red_toolbox.json +e98fa3371baa09502f414deef8a51813db6261f9 data/create/loot_tables/blocks/red_toolbox.json 59ee0fd35978068fbce0882e0b207db7eeb202c0 data/create/loot_tables/blocks/red_valve_handle.json f5907a694206facc01f61f3428f72488486761c7 data/create/loot_tables/blocks/redstone_contact.json 886a0c1386fb12104b736a15689030aaff771270 data/create/loot_tables/blocks/redstone_link.json @@ -2912,14 +2912,14 @@ e3969f1c5966c4992b3280a06e1d6c5000c37df5 data/create/loot_tables/blocks/weighted d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/white_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/white_sail.json 969eda31556feb5a68e350762848d17453275fee data/create/loot_tables/blocks/white_seat.json -7c210ac011b1eda2255773278ae7daa59b1576aa data/create/loot_tables/blocks/white_toolbox.json +4fa07ea92bc0adff6bfddc2d106ca2ee405e9347 data/create/loot_tables/blocks/white_toolbox.json 79fe374f8e677088f928a3a49ff5eeed6128d165 data/create/loot_tables/blocks/white_valve_handle.json 941ea78ea7c0f0061c3d3569ecea333ae6a16bf1 data/create/loot_tables/blocks/windmill_bearing.json 728c8719e653825c030913df94ce845fdc6d79b7 data/create/loot_tables/blocks/wooden_bracket.json d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/yellow_nixie_tube.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/yellow_sail.json 37ead431a278928a09b260ae06a448e2c791a73e data/create/loot_tables/blocks/yellow_seat.json -cbe175f9036f0de82d4f8a03aa0e932a37d25ea3 data/create/loot_tables/blocks/yellow_toolbox.json +66df605afd40132f19f08b0a7f98c32596ba1ce7 data/create/loot_tables/blocks/yellow_toolbox.json 899bb208908a2f9bec5e544ff47526f3e24db720 data/create/loot_tables/blocks/yellow_valve_handle.json 94661e726b3d19271550359ae898a5590939512e data/create/loot_tables/blocks/zinc_block.json 37248ca92d474e440b91c27e3c8e78e568328100 data/create/loot_tables/blocks/zinc_ore.json @@ -3008,16 +3008,16 @@ cc56d21a25286a9024e506dde9fa161230eaf46d data/create/recipes/crafting/kinetics/a cf1f3a6306d47025cebe153cf05949ef69ccbe5a data/create/recipes/crafting/kinetics/attribute_filter.json 059d12526529b2896ed583555373afa31839a0de data/create/recipes/crafting/kinetics/basin.json dcf98e667d321fb4bd9fa6dfec7927a84cdbd5d6 data/create/recipes/crafting/kinetics/belt_connector.json -1123903a11b13448b61cf8f8a5dc2e8013d39ac0 data/create/recipes/crafting/kinetics/black_seat.json -a6243a671bf852a6f92e1927e234ecf23b1c903d data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json -c237d1cd362454b25d3756e742c4a2237b5ec2db data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json -0b747fc291b86fa14f86569160d56a48a15c69d3 data/create/recipes/crafting/kinetics/blue_seat.json -30240bae036699b8c9404893983cb7b70332159e data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json -249c1f67d8b56262d286a027d50023e5d672b1c9 data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +2e40aee7ff7b5518a56ac9b042b925caecac7528 data/create/recipes/crafting/kinetics/black_seat.json +f1f831df77345ade0b62837bb1fb45ad1c763405 data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +d02a23b12abe105660ae613e69979cc7e86bfbca data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +19cf1b77431fc50bee7c7adae51c5025b5f0b6bc data/create/recipes/crafting/kinetics/blue_seat.json +6e03e06a20832116a1daa1a2ebe781b9cb44cb0d data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +f7ed975f13585273832f12d9f28808e0215308af data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json 23fe800a45e81a08eb0aa732c5cb52e4e8ebfe86 data/create/recipes/crafting/kinetics/brass_hand.json -c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/brown_seat.json -a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json -43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +23b98f9772b1567172607cb0aecc65e2fdd933de data/create/recipes/crafting/kinetics/brown_seat.json +ab3b69d035dae7fe696f5dd983d7018649f466a2 data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +9eab21724f64455376c12b14f42a09a3af547201 data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json 860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json abf8a28b4b8ae4ba15beed938736ef3a5a7b27ff data/create/recipes/crafting/kinetics/chute.json a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json @@ -3028,11 +3028,11 @@ e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/c 886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json 59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json cc2ab4b619aa55c03db18b67a62e12b6089e7019 data/create/recipes/crafting/kinetics/cuckoo_clock.json -f11892864a26c4ba79eb46d890a1a4bd96a1ad93 data/create/recipes/crafting/kinetics/cyan_seat.json -8c35fd379244f72f73e1be6115ed8f5f5484f599 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json -dc62d932f6a3723e050cb043fea233efd685f775 data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +67583ae5a8c9f71e3856a1787c6650c34070428e data/create/recipes/crafting/kinetics/cyan_seat.json +6c4d1e8f5b903cc804330a799ad20df59c427d05 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +40018bc6f631c443279c410dc7c5765060f7446a data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/deployer.json -be86df1c4d7af14bc5dcfe044d07c03b6c6d2a75 data/create/recipes/crafting/kinetics/depot.json +2fe66b3d37ff5b0f7f30d5baa4efd713dd8b502a data/create/recipes/crafting/kinetics/depot.json 9c5d30f25a130d591b924c50e5c83e3b787c2758 data/create/recipes/crafting/kinetics/empty_blaze_burner.json 73cd487885be8d5190f24319b4a927b8e34c21cd data/create/recipes/crafting/kinetics/encased_chain_drive.json b07496e4ba5bc56a2c5a395b612c68ba21328867 data/create/recipes/crafting/kinetics/encased_fan.json @@ -3047,30 +3047,30 @@ f4ae37f736d06ccda5fbba7831a7a174ec916a05 data/create/recipes/crafting/kinetics/f b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json 4d4124b4f1df38d892cb19da19c6464522d3e37d data/create/recipes/crafting/kinetics/gearshift.json 5b07af1b09125f874500c3fb140efda90061a19e data/create/recipes/crafting/kinetics/goggles.json -beb7715310352988d5a58d1b39c62f02544795f8 data/create/recipes/crafting/kinetics/gray_seat.json -14e8927183f91c09a2d96fd68d1a722d192b29e8 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json -b7fa20d10c0e0e7270b1c0d6f3881b8e25b39bea data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json -9899501f18e7f3452d4ab4bf658079ab414aa176 data/create/recipes/crafting/kinetics/green_seat.json -6f65a84e00f25d956a6ae834678ff781569b243a data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json -63edaccace961a65aa7bd406d36894c7ca4816b8 data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +4e6db62bd4e72a5b19db4ed634c273cd7206ec61 data/create/recipes/crafting/kinetics/gray_seat.json +89ff5b0b6e78221b78d1daff0401b4a32eccb213 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +8fc378f0641dee74ca17e4fe94f64930f48a5072 data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +01fbdedbb05c66a207784cae902484245c1d6f62 data/create/recipes/crafting/kinetics/green_seat.json +9a11f2a6d34cb0031392c32bffc70c5f5e0bfeed data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +574e32cd8c194576a1c060cfcd7476bcc3f319df data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json 9f08bdaeec88e04a43c2dc103869f9648deee079 data/create/recipes/crafting/kinetics/hand_crank.json d10639b0c3999481531fe0a9383a1bb4af60225e data/create/recipes/crafting/kinetics/hose_pulley.json f4fbb11ef55f3431bd387f3f6f258513bfbc8011 data/create/recipes/crafting/kinetics/item_drain.json 237541c1c318b8426734c1c43be31fbd01413d39 data/create/recipes/crafting/kinetics/large_cogwheel.json -a33e3301fc6d3a446e61a1c4b8a93aff079baeba data/create/recipes/crafting/kinetics/light_blue_seat.json -958bb5d3aeb8d8e5dbf5d97cf5fd9ff5151575dc data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json -df1942d27ce3d0548872fe39d3cac24af3122b61 data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json -9531407075ad027e01063aeabc40ae3e4c100df3 data/create/recipes/crafting/kinetics/light_gray_seat.json -fb66f55b31a60f2168d3b9e80a56ecadebb1db75 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json -e78fec9814d6d0c5c4669c17a8f4d86979972624 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json -3e18f619a50c1e5fabd6d3acc6d029e4cfec661f data/create/recipes/crafting/kinetics/lime_seat.json -d214afbd44e580f5fd1ebb4f16f07ffe34d87cba data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json -505a6d895319b1c73509045ecf5d9dc4e8554cde data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +0397b107ab380cd23390c96f298971a70e9bceef data/create/recipes/crafting/kinetics/light_blue_seat.json +aa06f0594e1b2d31aa41bace309ed95a16529498 data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +bb8759b51aef768fa841962b9ad49676a6096a1c data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +31b9cb3b37118ff339acbba4fcb13bd18983ce24 data/create/recipes/crafting/kinetics/light_gray_seat.json +7bdf2f1b8829fc2fc2db4b325867bb0c1e7daf47 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +b83f189682a8d5426895687c84a9ed90b42f7220 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +8eb806f51491ecd30bf22ac6b28d6f92c4c150a4 data/create/recipes/crafting/kinetics/lime_seat.json +70f75291e20b72140f7893f67c062e5e6800ce51 data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +49a2bedd4ea900eef269006b27635e191f4b364b data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json 61332f88f51bbd465ee0da879e706b994710d949 data/create/recipes/crafting/kinetics/linear_chassis.json 9bf76daab65d048a135d70db522989ebc77ccaf1 data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json -d7d96071874a87edf7bbdcf7a462f95a130d2991 data/create/recipes/crafting/kinetics/magenta_seat.json -5836881feef8fa8b18e4cceb9c3a9a2748b8cf3a data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json -2ea43d6527dcb734578067ff442ec20395b0093b data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +fd0fced8aa6ae01ffb1dc0f55ec5d8522d864a02 data/create/recipes/crafting/kinetics/magenta_seat.json +ba2fb8e07f03b376d3629262b2eaeda988e76af2 data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +631039797c71547fb4fe33ab5cb688e222f123ae data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json 659cd6acdd15511c4b0a396740118b99b76a619d data/create/recipes/crafting/kinetics/mechanical_arm.json 946389078db31de69a7dc4fec5feebddf48dcfc3 data/create/recipes/crafting/kinetics/mechanical_bearing.json a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/mechanical_crafter.json @@ -3080,7 +3080,7 @@ a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/m ac9003ad3320fe2009c1793a3c6e86bdf20ca832 data/create/recipes/crafting/kinetics/mechanical_piston.json 8a2f9068d6fab81f46699f897e619461ca89e38f data/create/recipes/crafting/kinetics/mechanical_plough.json ce8e269907aae5549cea04141bd231f4a20e6453 data/create/recipes/crafting/kinetics/mechanical_press.json -5a685078d3c9d7dbe68080b7b6f2a44fc41582c5 data/create/recipes/crafting/kinetics/mechanical_pump.json +4307cc2c988ac19602f2f86afa2146c7e7fef026 data/create/recipes/crafting/kinetics/mechanical_pump.json ce28bcb47a379976d4a1bdfcfd1cdd0bae0bcdae data/create/recipes/crafting/kinetics/mechanical_saw.json 353146e9501096b4cd9632ad5500b0a2406c6f5d data/create/recipes/crafting/kinetics/metal_bracket.json 58d9046e61eae40958181388186a35dc07cc9a59 data/create/recipes/crafting/kinetics/millstone.json @@ -3088,23 +3088,23 @@ ce28bcb47a379976d4a1bdfcfd1cdd0bae0bcdae data/create/recipes/crafting/kinetics/m be4c7fdb0ba1e9ee6d3dcf200dc2718ad83ec8fb data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json 99935fbbb83fe102454096a2dcafe09d572d9ad3 data/create/recipes/crafting/kinetics/nixie_tube.json 6b1b626394d7269a6861a836992ccdb344b6e7dd data/create/recipes/crafting/kinetics/nozzle.json -9c41cd91a0716d591ed6d1b5128ec731b418850f data/create/recipes/crafting/kinetics/orange_seat.json -a8da214f0a521be1204b669f118348a142bc9a3d data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json -2fa6b1dd7fe3c8d5bb60345d6b7c5213a54d7e31 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json -af871a02d363a619fff8e9dde753aa417b265a80 data/create/recipes/crafting/kinetics/pink_seat.json -840dc5aac716e3d1b79883e8db4bf56f2dc427f9 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json -7e73bcde2b599f1ae5a241dd707c8ab6ce8c5a6e data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +4088c9f8d9d74495860c2d0102277f5af1c22893 data/create/recipes/crafting/kinetics/orange_seat.json +7d87c973228c6a6705ed106ea7c195866f9f4f63 data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +1f404bfa8381f4734b66a6e03dd4f4e8ad3fa7d2 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +d41f850475814e099f21b7232596c1ba12d30798 data/create/recipes/crafting/kinetics/pink_seat.json +e6997dae188b5b07b5ca33c0843628dc73df1cc1 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +7b57fdc904ad0cf8cda25fca8f7008d0268a3d64 data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json 5399c3496a90bed9428c48fdd334ad4f763cbf9a data/create/recipes/crafting/kinetics/piston_extension_pole.json a8e996bed77d3d20725f9d592c250392b3adb106 data/create/recipes/crafting/kinetics/portable_fluid_interface.json 7ed5699349faf2981228769c873057105a5ea3ea data/create/recipes/crafting/kinetics/portable_storage_interface.json 16199a6729005a279854cb1838401f6e73bdebae data/create/recipes/crafting/kinetics/propeller.json -76ba751b65d312d1b34229d76fff2111b593091a data/create/recipes/crafting/kinetics/purple_seat.json -e6c462d64e1de9c7fca95f9c9a25b8d1575979da data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json -9332957af2e72dee5fc78abcf1995773e08f7561 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +b90fdb1047afc234b126a071fb7ddad003203db2 data/create/recipes/crafting/kinetics/purple_seat.json +8be4a393acce649d57178a62f81705abcd919a56 data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +5e630362d97da5ebc8148f890115a1c5265e8a46 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json af84b939ced1c0254a27469f857f571afbadc4f6 data/create/recipes/crafting/kinetics/radial_chassis.json -1059f08b016e1c222f13bd9976d0fcd8fc982619 data/create/recipes/crafting/kinetics/red_seat.json -0827e86e4b5f9d7023ccc19922bcbbaefd5b42d8 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json -5a10019d23726940152e26af3239d55d16bc7880 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +419a93ed1f41a20936a7d66f7271da0a0be4d593 data/create/recipes/crafting/kinetics/red_seat.json +c0c248fa1b8d8d8cb63d3c299e8b35c72b0aab03 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +73c8d12da8a5d9ec8a0d0d5c413bc2f66e463e81 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json af525e135eb927b64462120d201ecae7a7ec61ed data/create/recipes/crafting/kinetics/rope_pulley.json 1b918eb77b3e0fb2234c4c2c0d52e730ae7f3ffa data/create/recipes/crafting/kinetics/rotation_speed_controller.json d0d7fb94621f6f02fa3137666f20e677022d9d5b data/create/recipes/crafting/kinetics/sail_frame.json @@ -3126,15 +3126,15 @@ af5854ee2fa3be195ad9abcdeebe6ed7306b651c data/create/recipes/crafting/kinetics/s 06b5b371ae9dd81df8fd3dee6d3559b1ed0db35c data/create/recipes/crafting/kinetics/weighted_ejector.json f508d510576c93712e7f5265345a32e8818bbf0d data/create/recipes/crafting/kinetics/whisk.json d80a741d2f0d4f742217b43d7e4d37f003ec9f9d data/create/recipes/crafting/kinetics/white_sail.json -f4d88aa2edea548d29cf2678a111d8bb5db7720a data/create/recipes/crafting/kinetics/white_seat.json -7e0d276cd56f04f35d02c25810bffdf8fc297fcd data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json -4d3890621caa0bdbb752a395c1f5761dbbc1121e data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +61894b1302aef9413ca263eb89c3d9f4cfb92239 data/create/recipes/crafting/kinetics/white_seat.json +ceb3d574336ce5ff151db080fe517ba43ff77a49 data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +54a182603347c2d8898f9990f1536128611af749 data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json 8508255518d3718a0d8c2f536f69ffe9ed48a855 data/create/recipes/crafting/kinetics/windmill_bearing.json d11eee4005372b1d0fad283b28c8016d823b5e37 data/create/recipes/crafting/kinetics/wooden_bracket.json 3ec8bb5660656f1c676035d8ba5460462c1d1865 data/create/recipes/crafting/kinetics/wrench.json -5579e58473474c4e59efd1ee39ddf0140d66b618 data/create/recipes/crafting/kinetics/yellow_seat.json -f055d233ac7ee9eac840a658afa01bedd793ff38 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json -19c5c8bddeec51c9b47183c728e9ec4313c54410 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +8b7ca850a23126fd7d65084cbc6506145efee7af data/create/recipes/crafting/kinetics/yellow_seat.json +c574b993d49874bbed5d064205c436271dfa27b8 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +19333b83d10e307d715b5667b8623915880e1861 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json 3f6f3a547dc06c9462da880360f29b49ac3f5e2a data/create/recipes/crafting/logistics/adjustable_crate.json c465151b64381e2222203bf069b717435fdc2b26 data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json 34bcdffae0b104829161c86b7d161068f890daa2 data/create/recipes/crafting/logistics/adjustable_repeater.json diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 4f99e411c..2f1f4b18c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1173", + "_": "Missing Localizations: 1010", "_": "->------------------------] Game Elements [------------------------<-", @@ -21,7 +21,7 @@ "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", "block.create.andesite_encased_shaft": "Andesitummantelte Welle", - "block.create.andesite_funnel": "Andesit Trichter", + "block.create.andesite_funnel": "Andesittrichter", "block.create.andesite_pillar": "Andesitsäule", "block.create.andesite_tunnel": "Andesittunnel", "block.create.basin": "Behälter", @@ -63,7 +63,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steuerungsschiene", + "block.create.controller_rail": "Steureungsschiene", "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", @@ -556,7 +556,7 @@ "advancement.create.overstressed": "Überfordert", "advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.", "advancement.create.belt": "Befördere es alles", - "advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen", + "advancement.create.belt.desc": "Verbinde zwei Wellen mit einem Mechanischem Riemen", "advancement.create.tunnel": "Geht in Deckung!", "advancement.create.tunnel.desc": "Verschönere deinen Mechanischem Riemen mit einem Tunnel.", "advancement.create.splitter_tunnel": "Divide & Conquer", @@ -565,96 +565,96 @@ "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", "advancement.create.upward_chute": "Luftentführung", "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "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.belt_funnel": "Klappernde Klappen", + "advancement.create.belt_funnel.desc": "Platziere einen seitwärts schauenden Riementrichter auf einem Förderband oder einem Depot um einen speziellen Typ zu erstellen.", + "advancement.create.belt_funnel_kiss": "Die Hühnchen und die Klappen", + "advancement.create.belt_funnel_kiss.desc": "Lasse zwei an Mechanischen Riemen befestigte Riementrichter sich küssen.", "advancement.create.fan": "Mechanischer Luftbändiger", "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", - "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.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "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.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "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.fan_lava": "geothermische Heizung", + "advancement.create.fan_lava.desc": "Bleibe in einem Luftzug, der Dinge schmilzt, hängen.", + "advancement.create.fan_water": "Verrücktes Waschen", + "advancement.create.fan_water.desc": "Bleibe in einem Luftzug, der Dinge wäscht, hängen.", + "advancement.create.fan_smoke": "Mechanischer Balg", + "advancement.create.fan_smoke.desc": "Bleibe in einem Luftzug, der Items räuchert, hängen.", + "advancement.create.wrench": "Komfortabel Einstellen", + "advancement.create.wrench.desc": "Stelle einen Schraubenschlüssel her, der beim Bauen von Vorrichtungen hilft. ", + "advancement.create.goggles": "Stress-O-Vision", + "advancement.create.goggles.desc": "Stelle Ingenieursbrillen her, die beim Bekommen von kinetischen Informationen von Bauteilen, hilft.", + "advancement.create.speedometer": "Aber wie schnell genau?", + "advancement.create.speedometer.desc": "Platziere und schalte ein Tachometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.stressometer": "Aber wie belastet genau?", + "advancement.create.stressometer.desc": "Platziere und schalte ein Stressometer ein. Schau es dir durch deine Ingenieursbrille an und lese den genauen Wert ab.", + "advancement.create.aesthetics": "Boom, Ästhetik!", + "advancement.create.aesthetics.desc": "Plaziere Halterungen an Wellen, Rohren und Zahnrädern.", + "advancement.create.reinforced": "Boom, verstärkt!!", + "advancement.create.reinforced.desc": "Verwende passende Rahmen für Wellen, Rohre und Riemen.", + "advancement.create.water_wheel": "Angespannte Hydraulik", + "advancement.create.water_wheel.desc": "Plaziere ein Wasserrad und versuche es zum drehen zu bringen!", + "advancement.create.chocolate_wheel": "Leckere Energie", + "advancement.create.chocolate_wheel.desc": "Lasse ein Wasserad mit geschmolzerner Schokolade laufen.", + "advancement.create.lava_wheel": "Magmarad", + "advancement.create.lava_wheel.desc": "Das sollte nicht funktioniert haben.", + "advancement.create.cuckoo": "Ist es Zeit?", + "advancement.create.cuckoo.desc": "Bekomme mit, wie eine Kuckucksuhr Schlafenszeit ankündigt.", + "advancement.create.millstone": "Taschenmahlstein", + "advancement.create.millstone.desc": "Plaziere und aktiviere einen Mahlstein.", + "advancement.create.windmill": "Eine leichte Brise", + "advancement.create.windmill.desc": "Baue eine Windmühle.", + "advancement.create.maxed_windmill": "Eine starke Briese", + "advancement.create.maxed_windmill.desc": "Baue eine Windmühle mit maximaler stärke.", + "advancement.create.andesite_casing": "Das Andesit Alter", + "advancement.create.andesite_casing.desc": "Verwende Andesite Legierungen und Holz, um einen einfachen Rahmen zu erstellen.", + "advancement.create.mechanical_drill": "Stationäre Brecher", + "advancement.create.mechanical_drill.desc": "Plaziere und treibe einen Mechanischen Bohrer.", + "advancement.create.press": "Presse macht 'Bonk'!", + "advancement.create.press.desc": "Plaziere und treibe eine Mechanische Presse an um Bleche zu erstellen.", + "advancement.create.polished_rose_quartz": "Pinke Diamanten", + "advancement.create.polished_rose_quartz.desc": "Verwende ein Schmiergelpapier um Rosenquarz zu polieren bis er transparent wird.", + "advancement.create.electron_tube": "Piep piep", + "advancement.create.electron_tube.desc": "Mache ein paar Elektronenröhren, nützlich in weniger primitiven Maschienerien.", + "advancement.create.mechanical_saw": "Stationäres Hacken", + "advancement.create.mechanical_saw.desc": "Plaziere und verwende eine Mechanische Säge.", + "advancement.create.basin": "Beckenbetrieb", + "advancement.create.basin.desc": "Stelle ein Behälter auf und versuche Items reinzuwerfen.", + "advancement.create.mixer": "Misch es zusammen", + "advancement.create.mixer.desc": "Plaziere einen mechanischen Mixer über dem Behälter, treibe ihn an und starte mit dem Mixen von Zutaten.", + "advancement.create.blaze_burner": "Ein lebender Kamin", + "advancement.create.blaze_burner.desc": "Bekomme einen Lohenbrenner.", + "advancement.create.compact": "Automatische Verdichtunge", + "advancement.create.compact.desc": "Verwende eine Presse und einen Behälter um ein paar Items zu verdichten.", + "advancement.create.brass": "Tatsächliche Legierungen", + "advancement.create.brass.desc": "Verwende zerkleinertes Kupfererz und zerkleinertes Zinkerz um messing herzustellen.", + "advancement.create.brass_casing": "Das Messingzeitalter", + "advancement.create.brass_casing.desc": "Verwende das neu erhaltene Messing und etwas Holz, um mehr fortgeschrittene Rahmen herzustellen.", + "advancement.create.copper_casing": "Das Kupferzeitalter", + "advancement.create.copper_casing.desc": "Verwende Kupferbleche und Holz, um Kupferrahmen herzustellen.", + "advancement.create.spout": "Platsch", + "advancement.create.spout.desc": "Schaue einem Flüssigkeitsitem zu, wie es von einem Ausguss gefüllt wird.", + "advancement.create.spout_potion": "Globale Brauerei", + "advancement.create.spout_potion.desc": "Schaue einem Ausguss zu, wie er eine Flasche mit einem Trank füllt.", + "advancement.create.chocolate": "Eine Welt der Fantasie", + "advancement.create.chocolate.desc": "Bekomme einen Schokoladeneimer", + "advancement.create.item_drain": "Entwässerung", + "advancement.create.item_drain.desc": "Schaue einem mit Flüssigkeit gefülltem Item zu, wie es in einem Abfluss getrocknet wird.", + "advancement.create.chained_item_drain": "Lass es rollen!", + "advancement.create.chained_item_drain.desc": "Schaue einem Gegenstand zu, wie er über mehrere verbundene Abflüsse rollt.", + "advancement.create.glass_pipe": "Flussspion", + "advancement.create.glass_pipe.desc": "Beobachte durch ein Rohr mit Fenster, wie Flüssigkeiten durch ein Rohr fließen. Gerade Rohre bekommen ein Fenster, wenn du mit einem Schraubenschlüssel auf diese klickst.", + "advancement.create.pipe_collision": "Lass niemals die Ströme kreuzen!", + "advancement.create.pipe_collision.desc": "Schaue zwei Flüssigkeiten zu, wie sie sich in deinen Rohren treffen.", + "advancement.create.pipe_spill": "Da ist ein Leck!", + "advancement.create.pipe_spill.desc": "Schaue eiem offenem Rohrende zu, wie es Flüssigkeiten aufsaugt oder rauslässt.", + "advancement.create.hose_pulley": "Industrielles Verschütten", + "advancement.create.hose_pulley.desc": "Lass eine Umlenkrolle ab und schau ihr zu, wie sie Wasser aufsaugt oder rauslässt.", + "advancement.create.infinite_water": "Die Ozeane entwässern", + "advancement.create.infinite_water.desc": "Pumpe aus einem Gewässer, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_lava": "Den Kern des Planeten aufsaugen", + "advancement.create.infinite_lava.desc": "Pumpe aus einem Lavasee, der groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.infinite_chocolate": "In Fantasie ertrinken", + "advancement.create.infinite_chocolate.desc": "Pumpe aus einem Schokoladenbecken, das groß genug ist, um als unendlich bezeichnet zu werden.", + "advancement.create.crafter": "Automatisierte Montage", + "advancement.create.crafter.desc": "Plaziere und aktiviere ein paar Mechanische Handwerkseinheiten.", "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", @@ -1041,7 +1041,7 @@ "create.schematicannon.status.skipping": "Überspringen", "create.schematicannon.status.missingBlock": "Fehlender Block:", "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", + "create.schematicannon.status.clearing": "UNLOCALIZED: Clearing Blocks", "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", @@ -1058,75 +1058,75 @@ "create.gui.filter.ignore_data": "Ignoriere Daten", "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", + "create.item_attributes.placeable": "ist plazierbar", + "create.item_attributes.placeable.inverted": "ist nicht plazierbar", + "create.item_attributes.consumable": "kann man essen", + "create.item_attributes.consumable.inverted": "kann man nicht essen", "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.enchanted": "ist verzaubert", + "create.item_attributes.enchanted.inverted": "ist nicht verzaubert", + "create.item_attributes.max_enchanted": "ist mit dem maximalen Level verzaubert", + "create.item_attributes.max_enchanted.inverted": "ist nicht mit dem maximalen Level verzaubert", "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", + "create.item_attributes.damaged": "ist beschädigt", + "create.item_attributes.damaged.inverted": "ist nicht beschädigt", + "create.item_attributes.badly_damaged": "ist stark beschädigt", + "create.item_attributes.badly_damaged.inverted": "ist nicht stark beschädigt", + "create.item_attributes.not_stackable": "kann nicht gestapelt werden", + "create.item_attributes.not_stackable.inverted": "kann gestapelt werden", + "create.item_attributes.equipable": "kann ausgerüstet werden", + "create.item_attributes.equipable.inverted": "kann nicht ausgerüstet werden", + "create.item_attributes.furnace_fuel": "ist Brennstoff", + "create.item_attributes.furnace_fuel.inverted": "ist nicht Brennstoff", + "create.item_attributes.washable": "kann gewaschen werden", + "create.item_attributes.washable.inverted": "kann nicht gewaschen werden", + "create.item_attributes.crushable": "kann zerkleinert werden", + "create.item_attributes.crushable.inverted": "kann nicht zerkleinert werden", + "create.item_attributes.smeltable": "kann geschmolzen werden", + "create.item_attributes.smeltable.inverted": "kann nicht geschmolzen werden", + "create.item_attributes.smokable": "kann geräuchert werden", + "create.item_attributes.smokable.inverted": "kann nicht geräuchert werden", + "create.item_attributes.blastable": "ist im Schmelzofen schmelzbar", + "create.item_attributes.blastable.inverted": "ist nicht im Schmelzofen schmelzbar", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", + "create.item_attributes.in_tag": "ist mit %1$s makiert", + "create.item_attributes.in_tag.inverted": "ist nicht mit %1$s markoiert", + "create.item_attributes.in_item_group": "ist in der Gruppe '%1$s'", + "create.item_attributes.in_item_group.inverted": "ist nicht in der Gruppe '%1$s'", + "create.item_attributes.added_by": "wurde von %1$s hinzugefügt", + "create.item_attributes.added_by.inverted": "wurde nicht von %1$s hinzugefügt", + "create.item_attributes.has_enchant": "ist mit %1$s verzaubert", + "create.item_attributes.has_enchant.inverted": "ist nicht mit %1$s verzaubert", + "create.item_attributes.color": "ist %1$s gefärbt", + "create.item_attributes.color.inverted": "ist nicht %1$s gefärbt", + "create.item_attributes.has_fluid": "enthält %1$s", + "create.item_attributes.has_fluid.inverted": "enthält nicht %1$s", + "create.item_attributes.has_name": "hat den Benutzerdefinierten Namen %1$s", + "create.item_attributes.has_name.inverted": "hat nicht den benutzerdefinierten Namen %1$s", + "create.item_attributes.book_author": "wurde verfasst von %1$s", + "create.item_attributes.book_author.inverted": "wurde nicht von %1$s verfasst", + "create.item_attributes.book_copy_original": "ist ein Original", + "create.item_attributes.book_copy_original.inverted": "ist kein Original", + "create.item_attributes.book_copy_first": "ist die erste Kopie", + "create.item_attributes.book_copy_first.inverted": "ist nicht die erste Kopie", + "create.item_attributes.book_copy_second": "ist die zweite Kopie", + "create.item_attributes.book_copy_second.inverted": "ist nicht die Zweite Kopie", + "create.item_attributes.book_copy_tattered": "ist ein zerfetztes Durcheinander", + "create.item_attributes.book_copy_tattered.inverted": "sit kein zerfetztes Durcheinander", + "create.item_attributes.astralsorcery_amulet": "verbessert %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "verbessert nicht %1$s", + "create.item_attributes.astralsorcery_constellation": "ist abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "ist nicht abgestimmt auf %1$s", + "create.item_attributes.astralsorcery_crystal": "hat das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "hat nicht das Kristallattribut %1$s", + "create.item_attributes.astralsorcery_perk_gem": "hat das Vorteilsattribut %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "hat nicht das Vorteilsattribut %1$s", "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", @@ -1296,19 +1296,19 @@ "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", + "block.create.wooden_bracket.tooltip": "Holzhalterung", + "block.create.wooden_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem gemütlichem und hölzernem Stück Verstärkung.", - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", + "block.create.metal_bracket.tooltip": "Metallhalterung", + "block.create.metal_bracket.tooltip.summary": "_Verziere_ deine _Wellen_, _Zahnräder_ und _Rohre_ mit einem industriellem und robustem Stück Verstärkung.", - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", - "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", - "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", + "block.create.seat.tooltip": "Sitz", + "block.create.seat.tooltip.summary": "Setz dich hin und genieße die Fahrt! Der Sitz verankert den Spieler an einem sich bewegendem Apparat. Hervorragend auch für statische Möbel! Kommt in verschiedensten Farben.", + "block.create.seat.tooltip.condition1": "Rechtsklick auf den Sitz", + "block.create.seat.tooltip.behaviour1": "Setzt den Spieler auf den _Sitz_. Drücke L-Shift, um den _Sitz_ wieder zu verlassen.", - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", + "item.create.blaze_cake.tooltip": "Lohenkuchen", + "item.create.blaze_cake.tooltip.summary": "Ein leckeres Vergnügen für deine hart arbeitenden _Lohenbrenner_. Feuert die alle an!", "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", @@ -1335,7 +1335,7 @@ "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip": "Extendo Griff", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", @@ -1349,14 +1349,14 @@ "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip": "Filter", "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip": "Attribut Filter", "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", @@ -1388,15 +1388,15 @@ "block.create.schematicannon.tooltip": "BAUPLANKANONE", "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", + "block.create.schematicannon.tooltip.condition1": "Wenn gerechtsklickt", + "block.create.schematicannon.tooltip.behaviour1": "Öffnet das _Interface_", "block.create.schematic_table.tooltip": "BAUPLANTISCH", "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip": "Ingenieursbrille", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", diff --git a/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json index 0eb8a43f3..7f5a15047 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/black_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json index a7b223542..e3cb8b87b 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/blue_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json index e84f83f1e..a40b0885f 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brown_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json index bad83e82e..42411a759 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/cyan_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json index 07541bf8e..1582b84b0 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/gray_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json index 5cbc865a5..c7934d287 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/green_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json index d4fabb3c5..1eeff4fc1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/light_blue_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json index 062539366..41db750d7 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/light_gray_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json index 0761f4697..79fcfd19b 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/lime_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json index 34eac7d29..8861b538c 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/magenta_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json index 22ebc019b..5849dd968 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/orange_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json index 8ee137fce..803d7a0b1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/pink_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json index ff7977799..a06da3e99 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/purple_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json index 086d5361d..e5069cef1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/red_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json index 31e955723..96b2e2cb9 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/white_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json b/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json index ab79ef612..5741bdd6a 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json +++ b/src/generated/resources/data/create/loot_tables/blocks/yellow_toolbox.json @@ -11,6 +11,17 @@ "function": "minecraft:copy_name", "source": "block_entity" }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "UniqueId", + "target": "UniqueId", + "op": "replace" + } + ] + }, { "function": "minecraft:copy_nbt", "source": "block_entity", diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json index 0d1fc1377..d87b3868d 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:black_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:black_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json index 22cc2ee46..da795d150 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/black" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:black_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json index 2a299aea9..cf85a80af 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/black" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:black_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json index d8e16e527..40ae1fc01 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:blue_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json index cb98a0313..184379895 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/blue" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json index d0ab35dc9..b8f654cae 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/blue" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:blue_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json index 524540853..c9bbb94d8 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:brown_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:brown_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json index 3c395ef26..c235414c7 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/brown" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:brown_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json index eb82a4f83..c491ef9c2 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/brown" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:brown_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json index 95da2741e..32c7f8447 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:cyan_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:cyan_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json index 6cdcf3826..0bcd0d5e3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/cyan" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:cyan_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json index ed3ad74ea..f8f9ca0fb 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/cyan" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:cyan_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json b/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json index 5c4648cc3..1a13c1789 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "I" - ], - "key": { - "A": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "create:andesite_alloy" }, - "I": { + { "item": "create:andesite_casing" } - }, + ], "result": { "item": "create:depot" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json index 288f7d995..1261ff8fb 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:gray_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json index e12a0bd21..6e472ad0a 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/gray" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json index 14aaac1c2..6d525bd1b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/gray" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:gray_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json index 0bd4c58cf..05eb6ec57 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:green_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:green_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json index 9184d9ad7..a78731775 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/green" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:green_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json index 28a61f2c4..8c6552c63 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/green" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:green_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json index 3d826a2e5..a401d1a5f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:light_blue_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:light_blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json index 2057239a0..89b591758 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_blue" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:light_blue_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json index 186c59e53..f2a88f843 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_blue" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:light_blue_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json index 250b3465b..90cf19431 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:light_gray_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:light_gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json index f8ef5e09c..b54bcfd87 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_gray" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:light_gray_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json index a5e2f0c52..623f0ab69 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/light_gray" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:light_gray_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json index c787ad26d..1ae1be949 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:lime_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:lime_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json index 77bf94c8a..b4cbd67da 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/lime" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:lime_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json index fbcf4548d..29ab04baf 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/lime" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:lime_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json index 2e36dc05c..67d64b8c2 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:magenta_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:magenta_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json index 07a2fd9e3..00b9203d3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/magenta" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:magenta_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json index ab8d6ab36..b2d86580f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/magenta" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:magenta_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json index 8b7f9e5a4..20d5b5d2b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "P": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "create:cogwheel" }, - "S": { + { "item": "create:fluid_pipe" } - }, + ], "result": { "item": "create:mechanical_pump" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json index 6f9449a12..a6dda903a 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:orange_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:orange_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json index 29c7f059d..2be9e7759 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/orange" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:orange_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json index 78de18ef1..bad0b3cc4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/orange" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:orange_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json index 4cf047acf..63e80102c 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:pink_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:pink_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json index c4031f9ca..6dcefcffe 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/pink" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:pink_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json index a04c92752..0ecaf8e09 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/pink" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:pink_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json index b813024fa..c234211fc 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:purple_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:purple_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json index 175400157..53b995add 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/purple" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:purple_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json index ae277c7fe..5e82705f3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/purple" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:purple_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json index 738c7fc87..9730ec5b1 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:red_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:red_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json index d7bc542a0..66a9430b4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/red" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:red_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json index 51598f0b1..05db7746c 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/red" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:red_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json index d47cef67a..fd0d850b3 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:white_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:white_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json index 65a0ae6df..3b9651d6b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/white" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:white_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json index 71cfc416c..8c406be85 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/white" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:white_valve_handle" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json index 2c131df05..dc7f71838 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:yellow_wool" }, - "-": { + { "tag": "minecraft:wooden_slabs" } - }, + ], "result": { "item": "create:yellow_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json index e215eb0da..66e4901c4 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/yellow" }, - "-": { + { "tag": "create:seats" } - }, + ], "result": { "item": "create:yellow_seat" } diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json index 4babd7f03..921aebf3f 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json @@ -1,17 +1,13 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "tag": "forge:dyes/yellow" }, - "-": { + { "tag": "create:valve_handles" } - }, + ], "result": { "item": "create:yellow_valve_handle" } diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 2927573f0..562d8fd86 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -183,7 +183,7 @@ import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.MaterialColor; import net.minecraft.client.renderer.RenderType; -import net.minecraft.data.ShapedRecipeBuilder; +import net.minecraft.data.ShapelessRecipeBuilder; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.item.Rarity; @@ -645,11 +645,9 @@ public class AllBlocks { String colourName = colour.getSerializedName(); return REGISTRATE.block(colourName + "_valve_handle", p -> ValveHandleBlock.dyed(p, colour)) .transform(BuilderTransformers.valveHandle(colour)) - .recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', colour.getTag()) - .define('-', AllItemTags.VALVE_HANDLES.tag) + .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(c.get()) + .requires(colour.getTag()) + .requires(AllItemTags.VALVE_HANDLES.tag) .unlockedBy("has_valve", RegistrateRecipeProvider.hasItem(AllItemTags.VALVE_HANDLES.tag)) .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle"))) .register(); @@ -986,18 +984,14 @@ public class AllBlocks { .texture("2", p.modLoc("block/seat/side_" + colourName))); }) .recipe((c, p) -> { - ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', DyeHelper.getWoolOfDye(colour)) - .define('-', ItemTags.WOODEN_SLABS) + ShapelessRecipeBuilder.shapeless(c.get()) + .requires(DyeHelper.getWoolOfDye(colour)) + .requires(ItemTags.WOODEN_SLABS) .unlockedBy("has_wool", RegistrateRecipeProvider.hasItem(ItemTags.WOOL)) .save(p, Create.asResource("crafting/kinetics/" + c.getName())); - ShapedRecipeBuilder.shaped(c.get()) - .pattern("#") - .pattern("-") - .define('#', colour.getTag()) - .define('-', AllItemTags.SEATS.tag) + ShapelessRecipeBuilder.shapeless(c.get()) + .requires(colour.getTag()) + .requires(AllItemTags.SEATS.tag) .unlockedBy("has_seat", RegistrateRecipeProvider.hasItem(AllItemTags.SEATS.tag)) .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); }) @@ -1018,13 +1012,14 @@ public class AllBlocks { .simpleItem() .register(); - public static final BlockEntry SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) - .initialProperties(SharedProperties::wooden) - .properties(AbstractBlock.Properties::noOcclusion) - .blockstate(BlockStateGen.directionalBlockProvider(false)) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .simpleItem() - .register(); + public static final BlockEntry SAIL = + REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) + .initialProperties(SharedProperties::wooden) + .properties(AbstractBlock.Properties::noOcclusion) + .blockstate(BlockStateGen.directionalBlockProvider(false)) + .tag(AllBlockTags.WINDMILL_SAILS.tag) + .simpleItem() + .register(); public static final DyedBlockList DYED_SAILS = new DyedBlockList<>(colour -> { if (colour == DyeColor.WHITE) { @@ -1365,6 +1360,8 @@ public class AllBlocks { .setRolls(ConstantRange.exactly(1)) .add(ItemLootEntry.lootTableItem(block) .apply(CopyName.copyName(CopyName.Source.BLOCK_ENTITY)) + .apply(CopyNbt.copyData(CopyNbt.Source.BLOCK_ENTITY) + .copy("UniqueId", "UniqueId")) .apply(CopyNbt.copyData(CopyNbt.Source.BLOCK_ENTITY) .copy("Inventory", "Inventory"))))); }) 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 39d2c68f7..1c3061439 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -12,6 +12,7 @@ import javax.annotation.Nonnull; import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllFluids; import com.simibubi.create.AllItems; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; @@ -38,6 +39,7 @@ import com.simibubi.create.compat.jei.category.SpoutCategory; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.curiosities.toolbox.ToolboxScreen; @@ -62,6 +64,7 @@ import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; import mezz.jei.api.registration.IRecipeTransferRegistration; +import mezz.jei.api.registration.ISubtypeRegistration; import mezz.jei.api.runtime.IIngredientManager; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -124,8 +127,7 @@ public class CreateJEI implements IModPlugin { autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless) .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() - .size() > 1 && !MechanicalPressTileEntity.canCompress(r), - BasinRecipe::convertShapeless) + .size() > 1 && !MechanicalPressTileEntity.canCompress(r), BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.BASIN::get) .enableWhen(c -> c.allowShapelessInMixer) @@ -174,8 +176,8 @@ public class CreateJEI implements IModPlugin { .build(), deploying = register("deploying", DeployingCategory::new) - .recipeList( - () -> DeployerApplicationRecipe.convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.getType()))) + .recipeList(() -> DeployerApplicationRecipe + .convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.getType()))) .recipes(AllRecipeTypes.DEPLOYING) .catalyst(AllBlocks.DEPLOYER::get) .catalyst(AllBlocks.DEPOT::get) @@ -200,9 +202,8 @@ public class CreateJEI implements IModPlugin { autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() .size() == 1) - .recipes( - r -> (r.getType() == IRecipeType.CRAFTING && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) - && (r instanceof ShapedRecipe)) + .recipes(r -> (r.getType() == IRecipeType.CRAFTING + && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof ShapedRecipe)) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .enableWhen(c -> c.allowRegularCraftingInCrafter) .build(), @@ -233,10 +234,21 @@ public class CreateJEI implements IModPlugin { allCategories.forEach(registration::addRecipeCategories); } + @Override + public void registerFluidSubtypes(ISubtypeRegistration registration) { + PotionFluidSubtypeInterpreter interpreter = new PotionFluidSubtypeInterpreter(); + PotionFluid potionFluid = AllFluids.POTION.get(); + registration.registerSubtypeInterpreter(potionFluid.getSource(), interpreter); + registration.registerSubtypeInterpreter(potionFluid.getFlowing(), interpreter); + } + @Override public void registerRecipes(IRecipeRegistration registration) { ingredientManager = registration.getIngredientManager(); allCategories.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid()))); + + registration.addRecipes(ToolboxColoringRecipeMaker.createRecipes() + .collect(Collectors.toList()), VanillaRecipeCategoryUid.CRAFTING); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java new file mode 100644 index 000000000..807a7a190 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java @@ -0,0 +1,44 @@ +package com.simibubi.create.compat.jei; + +import java.util.List; + +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType; +import com.simibubi.create.foundation.utility.NBTHelper; + +import mezz.jei.api.ingredients.subtypes.IIngredientSubtypeInterpreter; +import mezz.jei.api.ingredients.subtypes.UidContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionUtils; +import net.minecraftforge.fluids.FluidStack; + +/* From JEI's Potion item subtype interpreter */ +public class PotionFluidSubtypeInterpreter implements IIngredientSubtypeInterpreter { + + @Override + public String apply(FluidStack ingredient, UidContext context) { + if (!ingredient.hasTag()) + return IIngredientSubtypeInterpreter.NONE; + + CompoundNBT tag = ingredient.getOrCreateTag(); + Potion potionType = PotionUtils.getPotion(tag); + String potionTypeString = potionType.getName(""); + String bottleType = NBTHelper.readEnum(tag, "Bottle", BottleType.class) + .toString(); + + StringBuilder stringBuilder = new StringBuilder(potionTypeString); + List effects = PotionUtils.getCustomEffects(tag); + + stringBuilder.append(";") + .append(bottleType); + for (EffectInstance effect : potionType.getEffects()) + stringBuilder.append(";") + .append(effect); + for (EffectInstance effect : effects) + stringBuilder.append(";") + .append(effect); + return stringBuilder.toString(); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java new file mode 100644 index 000000000..67321cf1d --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java @@ -0,0 +1,52 @@ +package com.simibubi.create.compat.jei; + +import java.util.Arrays; +import java.util.stream.Stream; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.Create; + +import net.minecraft.block.Block; +import net.minecraft.item.DyeColor; +import net.minecraft.item.DyeItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.ICraftingRecipe; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.item.crafting.ShapelessRecipe; +import net.minecraft.tags.ITag; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; + +public final class ToolboxColoringRecipeMaker { + + // From JEI's ShulkerBoxColoringRecipeMaker + public static Stream createRecipes() { + String group = "create.toolbox.color"; + ItemStack baseShulkerStack = AllBlocks.TOOLBOXES.get(DyeColor.BROWN) + .asStack(); + Ingredient baseShulkerIngredient = Ingredient.of(baseShulkerStack); + + return Arrays.stream(DyeColor.values()) + .filter(dc -> dc != DyeColor.BROWN) + .map(color -> { + DyeItem dye = DyeItem.byColor(color); + ItemStack dyeStack = new ItemStack(dye); + ITag colorTag = color.getTag(); + Ingredient.IItemList dyeList = new Ingredient.SingleItemList(dyeStack); + Ingredient.IItemList colorList = new Ingredient.TagList(colorTag); + Stream colorIngredientStream = Stream.of(dyeList, colorList); + Ingredient colorIngredient = Ingredient.fromValues(colorIngredientStream); + NonNullList inputs = + NonNullList.of(Ingredient.EMPTY, baseShulkerIngredient, colorIngredient); + Block coloredShulkerBox = AllBlocks.TOOLBOXES.get(color) + .get(); + ItemStack output = new ItemStack(coloredShulkerBox); + ResourceLocation id = Create.asResource(group + "." + output.getDescriptionId()); + return new ShapelessRecipe(id, group, output, inputs); + }); + } + + private ToolboxColoringRecipeMaker() {} + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java index 2c4c78fa2..a6050336d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java @@ -221,6 +221,12 @@ public class ConnectedInputHandler { data.clear(); nbt.getList("Data", NBT.TAG_COMPOUND) .forEach(inbt -> data.add(NBTUtil.readBlockPos((CompoundNBT) inbt))); + + // nbt got wiped -> reset + if (data.isEmpty()) { + isController = true; + data.add(BlockPos.ZERO); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index 87f3a9e93..e9664f9cf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -132,6 +132,17 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { return MechanicalCrafterBlock.getTargetDirection(getBlockState()); } + @Override + public void writeSafe(CompoundNBT compound, boolean clientPacket) { + super.writeSafe(compound, clientPacket); + if (input == null) + return; + + CompoundNBT inputNBT = new CompoundNBT(); + input.write(inputNBT); + compound.put("ConnectedInput", inputNBT); + } + @Override public void write(CompoundNBT compound, boolean clientPacket) { compound.put("Inventory", inventory.serializeNBT()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java index c27d87133..c663fc1b8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java @@ -149,11 +149,6 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { if (level.isClientSide) setPos(getX(), getY(), getZ()); } - - Vector3d motion = getDeltaMovement(); - move(motion.x, motion.y, motion.z); - if (ContraptionCollider.collideBlocks(this)) - getController().collided(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java index e5d8c1c9f..3461ee9e9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java @@ -16,8 +16,6 @@ public interface IControlContraption { public boolean isValid(); - public void collided(); - public BlockPos getBlockPosition(); static enum MovementMode implements INamedIconOptions { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java index cc9769c8a..a103a5f3f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.BottomlessItemHandler; @@ -32,6 +33,9 @@ public class MountedStorage { public static boolean canUseAsStorage(TileEntity te) { if (te == null) return false; + + if (te instanceof MechanicalCrafterTileEntity) + return false; if (AllTileEntities.ADJUSTABLE_CRATE.is(te)) return true; @@ -109,7 +113,7 @@ public class MountedStorage { // FIXME: More dynamic mounted storage in .4 if (handler instanceof BottomlessItemHandler) return; - + LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); IItemHandler teHandler = capability.orElse(null); if (!(teHandler instanceof IItemHandlerModifiable)) 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 290b64872..c50930451 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 @@ -367,9 +367,6 @@ public class ClockworkBearingTileEntity extends KineticTileEntity super.setRemoved(); } - @Override - public void collided() {} - @Override public boolean isAttachedTo(AbstractContraptionEntity contraption) { if (!(contraption.getContraption() instanceof ClockworkContraption)) 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 650fda752..7c69bac99 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 @@ -287,9 +287,6 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity return !isRemoved(); } - @Override - public void collided() {} - @Override public boolean isAttachedTo(AbstractContraptionEntity contraption) { return movedContraption == contraption; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index a4f3b1671..d162cc6fd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -5,6 +5,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.IControlContraption; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; @@ -105,18 +106,25 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if ((int) newOffset != (int) offset) visitNewPosition(); + if (contraptionPresent) { + if (moveAndCollideContraption()) { + movedContraption.setContraptionMotion(Vector3d.ZERO); + offset = getGridOffset(offset); + resetContraptionToOffset(); + collided(); + return; + } + } + if (!contraptionPresent || !movedContraption.isStalled()) offset = newOffset; - if (contraptionPresent) - applyContraptionMotion(); - int extensionRange = getExtensionRange(); if (offset <= 0 || offset >= extensionRange) { offset = offset <= 0 ? 0 : extensionRange; if (!level.isClientSide) { - applyContraptionMotion(); - applyContraptionPosition(); + moveAndCollideContraption(); + resetContraptionToOffset(); tryDisassemble(); if (waitingForSpeedChange) { forceMove = true; @@ -192,7 +200,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if (!clientPacket) return; if (forceMovement) - applyContraptionPosition(); + resetContraptionToOffset(); else if (running) { clientOffsetDiff = offset - offsetBefore; offset = offsetBefore; @@ -239,28 +247,31 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity disassemble(); } - @Override - public void collided() { + protected boolean moveAndCollideContraption() { + if (movedContraption == null) + return false; + if (movedContraption.isStalled()) { + movedContraption.setContraptionMotion(Vector3d.ZERO); + return false; + } + + Vector3d motion = getMotionVector(); + movedContraption.setContraptionMotion(getMotionVector()); + movedContraption.move(motion.x, motion.y, motion.z); + return ContraptionCollider.collideBlocks(movedContraption); + } + + protected void collided() { if (level.isClientSide) { waitingForSpeedChange = true; return; } offset = getGridOffset(offset - getMovementSpeed()); - applyContraptionPosition(); + resetContraptionToOffset(); tryDisassemble(); } - protected void applyContraptionMotion() { - if (movedContraption == null) - return; - if (movedContraption.isStalled()) { - movedContraption.setContraptionMotion(Vector3d.ZERO); - return; - } - movedContraption.setContraptionMotion(getMotionVector()); - } - - protected void applyContraptionPosition() { + protected void resetContraptionToOffset() { if (movedContraption == null) return; Vector3d vec = toPosition(offset); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java index 5ca97b096..55b1e6445 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java @@ -81,7 +81,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { BlockPos startPos = BlockPos.ZERO.relative(direction, contraption.initialExtensionProgress); contraption.removeBlocksFromWorld(level, startPos); movedContraption = ControlledContraptionEntity.create(getLevel(), this, contraption); - applyContraptionPosition(); + resetContraptionToOffset(); forceMove = true; level.addFreshEntity(movedContraption); @@ -96,7 +96,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { getLevel().setBlock(worldPosition, getBlockState().setValue(MechanicalPistonBlock.STATE, PistonState.EXTENDED), 3 | 16); if (movedContraption != null) { - applyContraptionPosition(); + resetContraptionToOffset(); movedContraption.disassemble(); AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(level, worldPosition); } @@ -110,7 +110,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { } @Override - public void collided() { + protected void collided() { super.collided(); if (!running && getMovementSpeed() > 0) assembleNextTick = true; 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 5af548f7c..496b34bda 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 @@ -121,7 +121,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { return; offset = getGridOffset(offset); if (movedContraption != null) - applyContraptionPosition(); + resetContraptionToOffset(); if (!level.isClientSide) { if (!remove) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java index d65ffb09a..02a6d6dee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java @@ -16,6 +16,8 @@ import net.minecraft.potion.PotionUtils; import net.minecraft.potion.Potions; import net.minecraft.util.IItemProvider; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.registries.ForgeRegistries; @@ -51,6 +53,11 @@ public class PotionFluid extends VirtualFluid { return color; } + @Override + public ITextComponent getDisplayName(FluidStack stack) { + return new TranslationTextComponent(getTranslationKey(stack)); + } + @Override public String getTranslationKey(FluidStack stack) { CompoundNBT tag = stack.getOrCreateTag(); 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 d7855b0cf..011b640f9 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 @@ -257,10 +257,10 @@ public class BeltRenderer extends SafeTileEntityRenderer { ms.mulPose(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).rotationDegrees(slopeAngle)); if (onSlope) ms.translate(0, slopeOffset, 0); - ms.pushPose(); - ms.translate(0, -1 / 8f + 0.005f, 0); - ShadowRenderHelper.renderShadow(ms, buffer, .75f, .2f); - ms.popPose(); +// ms.pushPose(); +// ms.translate(0, -1 / 8f + 0.005f, 0); +// ShadowRenderHelper.renderShadow(ms, buffer, .75f, .2f); +// ms.popPose(); if (slopeShadowOnly) { ms.popPose(); ms.translate(0, slopeOffset, 0); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java index 406f8cd54..34fa10a67 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java @@ -1,7 +1,11 @@ package com.simibubi.create.content.curiosities.toolbox; +import static com.simibubi.create.content.curiosities.toolbox.ToolboxInventory.STACKS_PER_COMPARTMENT; + import java.util.List; +import javax.annotation.Nullable; + import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; @@ -18,6 +22,7 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.util.InputMappings; import net.minecraft.item.DyeColor; import net.minecraft.item.ItemStack; @@ -42,13 +47,13 @@ public class RadialToolboxMenu extends AbstractSimiScreen { private static final int DEPOSIT = -7; private static final int UNEQUIP = -5; - public RadialToolboxMenu(List toolboxes, State state) { + public RadialToolboxMenu(List toolboxes, State state, @Nullable ToolboxTileEntity selectedBox) { this.toolboxes = toolboxes; this.state = state; hoveredSlot = -1; - if (state == State.SELECT_ITEM_UNEQUIP || state == State.SELECT_ITEM) - selectedBox = toolboxes.get(0); + if (selectedBox != null) + this.selectedBox = selectedBox; } public void prevSlot(int slot) { @@ -135,7 +140,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ItemStack stackInSlot = inv.filters.get(slot); if (!stackInSlot.isEmpty()) { - boolean empty = inv.getStackInSlot(slot * ToolboxInventory.STACKS_PER_COMPARTMENT) + boolean empty = inv.getStackInSlot(slot * STACKS_PER_COMPARTMENT) .isEmpty(); (empty ? AllGuiTextures.TOOLBELT_INACTIVE_SLOT : AllGuiTextures.TOOLBELT_SLOT).draw(ms, this, 0, @@ -257,7 +262,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { ItemStack stackInSlot = inv.filters.get(selected); if (stackInSlot.isEmpty()) return; - if (inv.getStackInSlot(selected * ToolboxInventory.STACKS_PER_COMPARTMENT) + if (inv.getStackInSlot(selected * STACKS_PER_COMPARTMENT) .isEmpty()) return; @@ -279,9 +284,8 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { ToolboxInventory inv = selectedBox.inventory; ItemStack stackInSlot = inv.filters.get(scrollSlot); - if (!stackInSlot.isEmpty() - && !inv.getStackInSlot(scrollSlot * ToolboxInventory.STACKS_PER_COMPARTMENT) - .isEmpty()) + if (!stackInSlot.isEmpty() && !inv.getStackInSlot(scrollSlot * STACKS_PER_COMPARTMENT) + .isEmpty()) break; } @@ -305,20 +309,42 @@ public class RadialToolboxMenu extends AbstractSimiScreen { public boolean mouseClicked(double x, double y, int button) { int selected = (scrollMode ? scrollSlot : hoveredSlot); - if (selected == DEPOSIT) { - onClose(); - ToolboxHandlerClient.COOLDOWN = 2; - return true; + if (button == 0) { + if (selected == DEPOSIT) { + onClose(); + ToolboxHandlerClient.COOLDOWN = 2; + return true; + } + + if (state == State.SELECT_BOX && selected >= 0 && selected < toolboxes.size()) { + state = State.SELECT_ITEM; + selectedBox = toolboxes.get(selected); + return true; + } + + if (state == State.DETACH || state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { + if (selected == UNEQUIP || selected >= 0) { + onClose(); + ToolboxHandlerClient.COOLDOWN = 2; + return true; + } + } } - if (state == State.SELECT_BOX && selected >= 0 && selected < toolboxes.size()) { - state = State.SELECT_ITEM; - selectedBox = toolboxes.get(selected); - return true; - } + if (button == 1) { + if (state == State.SELECT_ITEM && toolboxes.size() > 1) { + state = State.SELECT_BOX; + return true; + } + + if (state == State.SELECT_ITEM_UNEQUIP && selected == UNEQUIP) { + if (toolboxes.size() > 1) { + AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, + Minecraft.getInstance().player.inventory.selected)); + state = State.SELECT_BOX; + return true; + } - if (state == State.DETACH || state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { - if (selected == UNEQUIP || selected >= 0) { onClose(); ToolboxHandlerClient.COOLDOWN = 2; return true; @@ -328,6 +354,34 @@ public class RadialToolboxMenu extends AbstractSimiScreen { return super.mouseClicked(x, y, button); } + @Override + public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { + KeyBinding[] hotbarBinds = minecraft.options.keyHotbarSlots; + for (int i = 0; i < hotbarBinds.length && i < 8; i++) { + if (hotbarBinds[i].matches(code, p_keyPressed_2_)) { + + if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { + ToolboxInventory inv = selectedBox.inventory; + ItemStack stackInSlot = inv.filters.get(i); + if (stackInSlot.isEmpty() || inv.getStackInSlot(i * STACKS_PER_COMPARTMENT) + .isEmpty()) + return false; + } + + if (state == State.SELECT_BOX) + if (i >= toolboxes.size()) + return false; + + scrollMode = true; + scrollSlot = i; + mouseClicked(0, 0, 0); + return true; + } + } + + return super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_); + } + @Override public boolean keyReleased(int code, int p_keyPressed_2_, int p_keyPressed_3_) { InputMappings.Input mouseKey = InputMappings.getKey(code, p_keyPressed_2_); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java index d053c9854..75820623b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java @@ -35,7 +35,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.text.ITextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.World; @@ -79,8 +78,10 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE if (stack == null) return; withTileEntityDo(worldIn, pos, te -> { - te.readInventory(stack.getOrCreateTag() - .getCompound("Inventory")); + CompoundNBT orCreateTag = stack.getOrCreateTag(); + te.readInventory(orCreateTag.getCompound("Inventory")); + if (orCreateTag.contains("UniqueId")) + te.setUniqueId(orCreateTag.getUUID("UniqueId")); if (stack.hasCustomHoverName()) te.setCustomName(stack.getHoverName()); }); @@ -111,16 +112,16 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE public ItemStack getCloneItemStack(IBlockReader world, BlockPos pos, BlockState state) { ItemStack item = new ItemStack(this); Optional tileEntityOptional = getTileEntityOptional(world, pos); - CompoundNBT tag = item.getOrCreateTag(); + CompoundNBT inv = tileEntityOptional.map(tb -> tb.inventory.serializeNBT()) .orElse(new CompoundNBT()); tag.put("Inventory", inv); - ITextComponent customName = tileEntityOptional.map(ToolboxTileEntity::getCustomName) - .orElse(null); - if (customName != null) - item.setHoverName(customName); + tileEntityOptional.map(tb -> tb.getUniqueId()) + .ifPresent(uid -> tag.putUUID("UniqueId", uid)); + tileEntityOptional.map(ToolboxTileEntity::getCustomName) + .ifPresent(item::setHoverName); return item; } @@ -134,8 +135,7 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE } @Override - public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, - ISelectionContext context) { + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { return AllShapes.TOOLBOX.get(state.getValue(FACING)); } @@ -156,7 +156,8 @@ public class ToolboxBlock extends HorizontalBlock implements IWaterLoggable, ITE if (color != null && color != this.color) { if (world.isClientSide) return ActionResultType.SUCCESS; - BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color).getDefaultState()); + BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color) + .getDefaultState()); world.setBlockAndUpdate(pos, newState); return ActionResultType.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java index 7856d3bec..0ff43f3ee 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java @@ -137,7 +137,7 @@ public class ToolboxContainer extends ContainerBase { // Hidden Slots for (int i = 1; i < STACKS_PER_COMPARTMENT; i++) - addSlot(new SlotItemHandler(inventory, baseIndex + i, -100, -100)); + addSlot(new SlotItemHandler(inventory, baseIndex + i, -10000, -10000)); } addPlayerSlots(-12, 166); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java index 741eb326b..da0801905 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java @@ -5,6 +5,7 @@ import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_HOTBAR_ import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_SELECTED_OFF; import static com.simibubi.create.foundation.gui.AllGuiTextures.TOOLBELT_SELECTED_ON; +import java.util.Collections; import java.util.List; import com.google.common.collect.ImmutableList; @@ -108,6 +109,11 @@ public class ToolboxHandlerClient { World level = player.level; List toolboxes = ToolboxHandler.getNearest(player.level, player, 8); + + if (!toolboxes.isEmpty()) + Collections.sort(toolboxes, (te1, te2) -> te1.getUniqueId() + .compareTo(te2.getUniqueId())); + CompoundNBT compound = player.getPersistentData() .getCompound("CreateToolboxData"); @@ -123,8 +129,8 @@ public class ToolboxHandlerClient { if (canReachToolbox) { TileEntity blockEntity = level.getBlockEntity(pos); if (blockEntity instanceof ToolboxTileEntity) { - RadialToolboxMenu screen = new RadialToolboxMenu(ImmutableList.of((ToolboxTileEntity) blockEntity), - RadialToolboxMenu.State.SELECT_ITEM_UNEQUIP); + RadialToolboxMenu screen = new RadialToolboxMenu(toolboxes, + RadialToolboxMenu.State.SELECT_ITEM_UNEQUIP, (ToolboxTileEntity) blockEntity); screen.prevSlot(compound.getCompound(slotKey) .getInt("Slot")); ScreenOpener.open(screen); @@ -132,7 +138,7 @@ public class ToolboxHandlerClient { } } - ScreenOpener.open(new RadialToolboxMenu(ImmutableList.of(), RadialToolboxMenu.State.DETACH)); + ScreenOpener.open(new RadialToolboxMenu(ImmutableList.of(), RadialToolboxMenu.State.DETACH, null)); return; } @@ -140,9 +146,9 @@ public class ToolboxHandlerClient { return; if (toolboxes.size() == 1) - ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_ITEM)); + ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_ITEM, toolboxes.get(0))); else - ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX)); + ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX, null)); } public static void renderOverlay(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java index a1c4dffec..75f451dff 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java @@ -10,6 +10,8 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.block.ShulkerBoxBlock; +import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.common.util.Constants.NBT; @@ -91,6 +93,12 @@ public class ToolboxInventory extends ItemStackHandler { public boolean isItemValid(int slot, ItemStack stack) { if (AllItemTags.TOOLBOXES.matches(stack)) return false; + if (stack.getItem() instanceof BlockItem) { + BlockItem blockItem = (BlockItem) stack.getItem(); + if (blockItem.getBlock() instanceof ShulkerBoxBlock) + return false; + } + if (slot < 0 || slot >= getSlots()) return false; int compartment = slot / STACKS_PER_COMPARTMENT; @@ -138,6 +146,7 @@ public class ToolboxInventory extends ItemStackHandler { protected void onContentsChanged(int slot) { if (!settling && !te.getWorld().isClientSide) settle(slot / STACKS_PER_COMPARTMENT); + te.sendData(); super.onContentsChanged(slot); } 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 d14e83214..b3c42e845 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 @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.UUID; import java.util.WeakHashMap; import com.simibubi.create.AllBlocks; @@ -48,6 +49,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine public LerpedFloat drawers = LerpedFloat.linear() .startWithValue(0); + UUID uniqueId; ToolboxInventory inventory; LazyOptional inventoryProvider; ResetableLazy colorProvider; @@ -280,6 +282,8 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { inventory.deserializeNBT(compound.getCompound("Inventory")); super.fromTag(state, compound, clientPacket); + if (compound.contains("UniqueId", 11)) + this.uniqueId = compound.getUUID("UniqueId"); if (compound.contains("CustomName", 8)) this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName")); if (clientPacket) @@ -288,7 +292,12 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine @Override protected void write(CompoundNBT compound, boolean clientPacket) { + if (uniqueId == null) + uniqueId = UUID.randomUUID(); + compound.put("Inventory", inventory.serializeNBT()); + compound.putUUID("UniqueId", uniqueId); + if (customName != null) compound.putString("CustomName", ITextComponent.Serializer.toJson(customName)); super.write(compound, clientPacket); @@ -361,6 +370,14 @@ public class ToolboxTileEntity extends SmartTileEntity implements INamedContaine inventory.deserializeNBT(compound); } + public void setUniqueId(UUID uniqueId) { + this.uniqueId = uniqueId; + } + + public UUID getUniqueId() { + return uniqueId; + } + public void setCustomName(ITextComponent customName) { this.customName = customName; } 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 bec57a369..28f3ec109 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 @@ -12,6 +12,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.funnel.AbstractFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -332,8 +333,8 @@ public class EjectorTileEntity extends KineticTileEntity { float volume = .125f; float pitch = 1.5f - lidProgress.getValue(); if (((int) level.getGameTime()) % soundRate == 0 && doLogic) - level.playSound(null, worldPosition, SoundEvents.WOODEN_BUTTON_CLICK_OFF, SoundCategory.BLOCKS, volume, - pitch); + level.playSound(null, worldPosition, SoundEvents.WOODEN_BUTTON_CLICK_OFF, SoundCategory.BLOCKS, + volume, pitch); } } @@ -342,7 +343,7 @@ public class EjectorTileEntity extends KineticTileEntity { } private boolean scanTrajectoryForObstacles(int time) { - if (time == 0) + if (time <= 2) return false; Vector3d source = getLaunchedItemLocation(time); @@ -350,7 +351,16 @@ public class EjectorTileEntity extends KineticTileEntity { BlockRayTraceResult rayTraceBlocks = level.clip(new RayTraceContext(source, target, BlockMode.COLLIDER, FluidMode.NONE, null)); - if (rayTraceBlocks.getType() == Type.MISS) { + boolean miss = rayTraceBlocks.getType() == Type.MISS; + + if (!miss && rayTraceBlocks.getType() == Type.BLOCK) { + BlockState blockState = level.getBlockState(rayTraceBlocks.getBlockPos()); + if (FunnelBlock.isFunnel(blockState) && blockState.hasProperty(FunnelBlock.EXTRACTING) + && blockState.getValue(FunnelBlock.EXTRACTING)) + miss = true; + } + + if (miss) { if (earlyTarget != null && earlyTargetTime < time + 1) { earlyTarget = null; earlyTargetTime = 0; @@ -360,7 +370,8 @@ public class EjectorTileEntity extends KineticTileEntity { Vector3d vec = rayTraceBlocks.getLocation(); earlyTarget = Pair.of(vec.add(Vector3d.atLowerCornerOf(rayTraceBlocks.getDirection() - .getNormal()).scale(.25f)), rayTraceBlocks.getBlockPos()); + .getNormal()) + .scale(.25f)), rayTraceBlocks.getBlockPos()); earlyTargetTime = (float) (time + (source.distanceTo(vec) / source.distanceTo(target))); sendData(); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java index 281d248ee..ce5a5239c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EntityLauncher.java @@ -53,7 +53,14 @@ public class EntityLauncher { public Vector3d getGlobalPos(double t, Direction d, BlockPos launcher) { Vector3d start = new Vector3d(launcher.getX() + .5f, launcher.getY() + .5f, launcher.getZ() + .5f); - Vector3d vec = new Vector3d(0, y(t), x(t)); + + float xt = x(t); + float yt = y(t); + double progress = MathHelper.clamp(t / getTotalFlyingTicks(), 0, 1); + double correctionStrength = Math.pow(progress, 3); + + Vector3d vec = new Vector3d(0, yt + (verticalDistance - yt) * correctionStrength * 0.5f, + xt + (horizontalDistance - xt) * correctionStrength); return VecHelper.rotate(vec, 180 + AngleHelper.horizontalAngle(d), Axis.Y) .add(start); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index c959188d0..d068059bd 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -493,10 +493,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("SCS")), MECHANICAL_PUMP = create(AllBlocks.MECHANICAL_PUMP).unlockedByTag(I::copper) - .viaShaped(b -> b.define('P', I.cog()) - .define('S', AllBlocks.FLUID_PIPE.get()) - .pattern("P") - .pattern("S")), + .viaShapeless(b -> b.requires(I.cog()) + .requires(AllBlocks.FLUID_PIPE.get())), SMART_FLUID_PIPE = create(AllBlocks.SMART_FLUID_PIPE).unlockedByTag(I::copper) .viaShaped(b -> b.define('P', I.electronTube()) @@ -599,10 +597,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("P")), DEPOT = create(AllBlocks.DEPOT).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.define('A', I.andesite()) - .define('I', I.andesiteCasing()) - .pattern("A") - .pattern("I")), + .viaShapeless(b -> b.requires(I.andesite()) + .requires(I.andesiteCasing())), WEIGHTED_EJECTOR = create(AllBlocks.WEIGHTED_EJECTOR).unlockedBy(I::andesiteCasing) .viaShaped(b -> b.define('A', I.goldSheet()) From 88e487cdf559e7842538ee8c14ed507fac88b05c Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 22 Nov 2021 00:55:08 +0100 Subject: [PATCH 13/26] Back on Patch, Part II - Fixed piston/pulleys moving before their attached entity is loaded - Recipes with an id suffixed "_manual_only" are now ignored in auto-shaped, auto-shapeless and auto-cutting processing features - Fixed pipes spawning particles at connections between chunks - Fixed pipes not initialising target fluid holders properly when the source is loaded in first - Fixed encased fluid pipes not updating flows when neighbouring blocks change - Fixed fluid pipes not updating flows when adjacent block changes from fluid to block --- src/generated/resources/.cache/cache | 2 +- .../data/create/advancements/aesthetics.json | 4 ++-- .../com/simibubi/create/AllRecipeTypes.java | 6 ++++++ .../simibubi/create/compat/jei/CreateJEI.java | 16 ++++++++------ .../components/crafter/RecipeGridHandler.java | 2 ++ .../mixer/MechanicalMixerTileEntity.java | 3 ++- .../press/MechanicalPressTileEntity.java | 2 +- .../components/saw/SawTileEntity.java | 1 + .../piston/LinearActuatorTileEntity.java | 21 ++++++++++++------- .../pulley/PulleyTileEntity.java | 3 +++ .../contraptions/fluids/FluidNetwork.java | 6 ++++++ .../contraptions/fluids/FluidPropagator.java | 2 +- .../contraptions/fluids/PipeConnection.java | 11 ++++++---- .../fluids/pipes/EncasedPipeBlock.java | 4 +++- 14 files changed, 59 insertions(+), 24 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 73e99b76d..2ef6992db 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -1747,7 +1747,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 58880e397902f8ca5b3b59ed4423e626109ddc4c assets/create/sounds.json -0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json +5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index d723cbe38..59a86f429 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:cogwheel", - "create:large_cogwheel" + "create:large_cogwheel", + "create:cogwheel" ] } }, diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 58a14dbb5..4bbb331cc 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -132,4 +132,10 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { }); } + public static boolean isManualRecipe(IRecipe recipe) { + return recipe.getId() + .getPath() + .endsWith("_manual_only"); + } + } 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 1c3061439..6e6465ab2 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -127,7 +127,8 @@ public class CreateJEI implements IModPlugin { autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless) .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() - .size() > 1 && !MechanicalPressTileEntity.canCompress(r), BasinRecipe::convertShapeless) + .size() > 1 && !MechanicalPressTileEntity.canCompress(r) && !AllRecipeTypes.isManualRecipe(r), + BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.BASIN::get) .enableWhen(c -> c.allowShapelessInMixer) @@ -144,14 +145,16 @@ public class CreateJEI implements IModPlugin { .build(), blockCutting = register("block_cutting", () -> new BlockCuttingCategory(Items.STONE_BRICK_STAIRS)) - .recipeList(() -> CondensedBlockCuttingRecipe.condenseRecipes(findRecipesByType(IRecipeType.STONECUTTING))) + .recipeList(() -> CondensedBlockCuttingRecipe.condenseRecipes(findRecipes( + recipe -> recipe.getType() == IRecipeType.STONECUTTING && !AllRecipeTypes.isManualRecipe(recipe)))) .catalyst(AllBlocks.MECHANICAL_SAW::get) .enableWhen(c -> c.allowStonecuttingOnSaw) .build(), woodCutting = register("wood_cutting", () -> new BlockCuttingCategory(Items.OAK_STAIRS)) .recipeList(() -> CondensedBlockCuttingRecipe - .condenseRecipes(findRecipesByType(SawTileEntity.woodcuttingRecipeType.get()))) + .condenseRecipes(findRecipes(recipe -> recipe.getType() == SawTileEntity.woodcuttingRecipeType.get() + && !AllRecipeTypes.isManualRecipe(recipe)))) .catalyst(AllBlocks.MECHANICAL_SAW::get) .enableWhenBool(c -> c.allowWoodcuttingOnSaw.get() && ModList.get() .isLoaded("druidcraft")) @@ -163,8 +166,8 @@ public class CreateJEI implements IModPlugin { .build(), autoSquare = register("automatic_packing", PackingCategory::autoSquare) - .recipes(r -> (r instanceof ICraftingRecipe) && MechanicalPressTileEntity.canCompress(r), - BasinRecipe::convertShapeless) + .recipes(r -> (r instanceof ICraftingRecipe) && MechanicalPressTileEntity.canCompress(r) + && !AllRecipeTypes.isManualRecipe(r), BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_PRESS::get) .catalyst(AllBlocks.BASIN::get) .enableWhen(c -> c.allowShapedSquareInPress) @@ -203,7 +206,8 @@ public class CreateJEI implements IModPlugin { .recipes(r -> r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() .size() == 1) .recipes(r -> (r.getType() == IRecipeType.CRAFTING - && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof ShapedRecipe)) + && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof ShapedRecipe) + && !AllRecipeTypes.isManualRecipe(r)) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .enableWhen(c -> c.allowRegularCraftingInCrafter) .build(), diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java index 12a0ee73a..93a6e4068 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java @@ -166,6 +166,8 @@ public class RecipeGridHandler { if (numItems > 9) return false; } + if (AllRecipeTypes.isManualRecipe(recipe)) + return false; return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 1d7bd0db7..31a655b56 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -231,7 +231,8 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { return ((r.getSerializer() == IRecipeSerializer.SHAPELESS_RECIPE && AllConfigs.SERVER.recipes.allowShapelessInMixer.get() && r.getIngredients() .size() > 1 - && !MechanicalPressTileEntity.canCompress(r)) || r.getType() == AllRecipeTypes.MIXING.getType()); + && !MechanicalPressTileEntity.canCompress(r)) && !AllRecipeTypes.isManualRecipe(r) + || r.getType() == AllRecipeTypes.MIXING.getType()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index 059067cfd..f94473c89 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -362,7 +362,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { @Override protected boolean matchStaticFilters(IRecipe recipe) { - return (recipe instanceof ICraftingRecipe && canCompress(recipe)) + return (recipe instanceof ICraftingRecipe && canCompress(recipe) && !AllRecipeTypes.isManualRecipe(recipe)) || recipe.getType() == AllRecipeTypes.COMPACTING.getType(); } 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 768f795e3..9040b06b9 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 @@ -367,6 +367,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { return startedSearch.stream() .filter(RecipeConditions.outputMatchesFilter(filtering)) .filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0))) + .filter(r -> !AllRecipeTypes.isManualRecipe(r)) .collect(Collectors.toList()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index d162cc6fd..b05fd4354 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -28,6 +28,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity public float offset; public boolean running; public boolean assembleNextTick; + public boolean needsContraption; public AbstractContraptionEntity movedContraption; protected boolean forceMove; protected ScrollOptionBehaviour movementMode; @@ -41,6 +42,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity super(typeIn); setLazyTickRate(3); forceMove = true; + needsContraption = true; } @Override @@ -65,14 +67,16 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if (level.isClientSide) clientOffsetDiff *= .75f; - if (waitingForSpeedChange && movedContraption != null) { - if (level.isClientSide) { - float syncSpeed = clientOffsetDiff / 2f; - offset += syncSpeed; - movedContraption.setContraptionMotion(toMotionVector(syncSpeed)); - return; + if (waitingForSpeedChange) { + if (movedContraption != null) { + if (level.isClientSide) { + float syncSpeed = clientOffsetDiff / 2f; + offset += syncSpeed; + movedContraption.setContraptionMotion(toMotionVector(syncSpeed)); + return; + } + movedContraption.setContraptionMotion(Vector3d.ZERO); } - movedContraption.setContraptionMotion(Vector3d.ZERO); return; } @@ -101,6 +105,9 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity return; boolean contraptionPresent = movedContraption != null; + if (needsContraption && !contraptionPresent) + return; + float movementSpeed = getMovementSpeed(); float newOffset = offset + movementSpeed; if ((int) newOffset != (int) offset) 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 496b34bda..322a07f24 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 @@ -75,6 +75,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { // Collect Construct if (!level.isClientSide) { + needsContraption = false; BlockPos anchor = worldPosition.below(MathHelper.floor(offset + 1)); initialOffset = MathHelper.floor(offset); PulleyContraption contraption = new PulleyContraption(initialOffset); @@ -107,6 +108,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); level.addFreshEntity(movedContraption); forceMove = true; + needsContraption = true; } } @@ -198,6 +200,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { @Override protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { initialOffset = compound.getInt("InitialOffset"); + needsContraption = compound.getBoolean("NeedsContraption"); super.fromTag(state, compound, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java index eedcc0cd9..ad2defafd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java @@ -133,6 +133,12 @@ public class FluidNetwork { continue; } + // Give pipe end a chance to init connections + if (!adjacent.source.isPresent() && !adjacent.determineSource(world, blockFace.getPos())) { + canRemove = false; + continue; + } + if (adjacent.source.isPresent() && adjacent.source.get() .isEndpoint()) { targets.add(Pair.of(adjacentLocation, adjacent.source.get() diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java index cf4d8f3a7..3c872fa02 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java @@ -133,7 +133,7 @@ public class FluidPropagator { return null; if (otherBlock instanceof FlowingFluidBlock) return null; - if (getStraightPipeAxis(state) == null) + if (getStraightPipeAxis(state) == null && !AllBlocks.ENCASED_FLUID_PIPE.has(state)) return null; for (Direction d : Iterate.directions) { if (!pos.relative(d) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java index 3ef881ba0..d4c851266 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java @@ -24,6 +24,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.World; +import net.minecraft.world.chunk.ChunkStatus; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.util.Constants.NBT; @@ -159,11 +160,13 @@ public class PipeConnection { return true; } - private boolean determineSource(World world, BlockPos pos) { - if (!world.isAreaLoaded(pos, 1)) + public boolean determineSource(World world, BlockPos pos) { + BlockPos relative = pos.relative(side); + // cannot use world.isLoaded because it always returns true onclient + if (world.getChunk(relative.getX() >> 4, relative.getZ() >> 4, ChunkStatus.FULL, false) == null) return false; + BlockFace location = new BlockFace(pos, side); - if (FluidPropagator.isOpenEnd(world, pos, side)) { if (previousSource.orElse(null) instanceof OpenEndedPipe) source = previousSource; @@ -178,7 +181,7 @@ public class PipeConnection { } FluidTransportBehaviour behaviour = - TileEntityBehaviour.get(world, pos.relative(side), FluidTransportBehaviour.TYPE); + TileEntityBehaviour.get(world, relative, FluidTransportBehaviour.TYPE); source = Optional.of(behaviour == null ? new FlowSource.Blocked(location) : new FlowSource.OtherPipe(location)); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java index e668ab22c..65afe2c4c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java @@ -89,7 +89,9 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, boolean isMoving) { DebugPacketSender.sendNeighborsUpdatePacket(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); + // calling getblockstate() as otherBlock param seems to contain the block which was replaced + Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, world.getBlockState(neighborPos) + .getBlock(), neighborPos, isMoving); if (d == null) return; if (!state.getValue(FACING_TO_PROPERTY_MAP.get(d))) From 67afe74250ecc16a2c76112f590675538da63f21 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 22 Nov 2021 02:11:36 +0100 Subject: [PATCH 14/26] Contraption launcher - Fixed Contraptions being affected by Weighted Ejectors --- .../logistics/block/depot/EjectorTileEntity.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 28f3ec109..34dd2634b 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 @@ -31,6 +31,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import net.minecraft.block.BlockState; import net.minecraft.block.ObserverBlock; +import net.minecraft.block.material.PushReaction; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.ItemEntity; @@ -149,6 +150,8 @@ public class EjectorTileEntity extends KineticTileEntity { continue; if (entity instanceof ItemEntity) continue; + if (entity.getPistonPushReaction() == PushReaction.IGNORE) + continue; entity.onGround = false; @@ -379,9 +382,14 @@ public class EjectorTileEntity extends KineticTileEntity { protected void nudgeEntities() { for (Entity entity : level.getEntitiesOfClass(Entity.class, - new AxisAlignedBB(worldPosition).inflate(-1 / 16f, 0, -1 / 16f))) + new AxisAlignedBB(worldPosition).inflate(-1 / 16f, 0, -1 / 16f))) { + if (!entity.isAlive()) + continue; + if (entity.getPistonPushReaction() == PushReaction.IGNORE) + continue; if (!(entity instanceof PlayerEntity)) entity.setPos(entity.getX(), entity.getY() + .125f, entity.getZ()); + } } protected void ejectIfTriggered() { From 27c69250d192d786913f5d2219c6b60934bae543 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 22 Nov 2021 11:38:52 +0100 Subject: [PATCH 15/26] Portable Spillage Interface - Fixed Chutes spilling items when inserting into disconnected storage interfaces - Blaze Burners can now be picked up using the Wrench - Additional safety checks from random crash reports --- .../actors/PortableItemInterfaceTileEntity.java | 8 ++++++-- .../components/actors/SawMovementBehaviour.java | 2 +- .../components/press/MechanicalPressTileEntity.java | 4 ++-- .../contraptions/processing/burner/BlazeBurnerBlock.java | 3 ++- .../processing/burner/LitBlazeBurnerBlock.java | 3 ++- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java index 227c42dee..4ce72e843 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java @@ -17,7 +17,7 @@ public class PortableItemInterfaceTileEntity extends PortableStorageInterfaceTil public PortableItemInterfaceTileEntity(TileEntityType tileEntityTypeIn) { super(tileEntityTypeIn); - capability = LazyOptional.empty(); + capability = createEmptyHandler(); } @Override @@ -31,10 +31,14 @@ public class PortableItemInterfaceTileEntity extends PortableStorageInterfaceTil @Override protected void stopTransferring() { LazyOptional oldCap = capability; - capability = LazyOptional.of(() -> new InterfaceItemHandler(new ItemStackHandler(0))); + capability = createEmptyHandler(); oldCap.invalidate(); super.stopTransferring(); } + + private LazyOptional createEmptyHandler() { + return LazyOptional.of(() -> new InterfaceItemHandler(new ItemStackHandler(0))); + } @Override protected void invalidateCapability() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java index d86291925..7e4647403 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java @@ -78,7 +78,7 @@ public class SawMovementBehaviour extends BlockBreakingMovementBehaviour { World world = context.world; Vector3d dropPos = VecHelper.getCenterOf(pos); - float distance = (float) dropPos.distanceTo(context.position); + float distance = context.position == null ? 1 : (float) dropPos.distanceTo(context.position); ItemEntity entity = new ItemEntity(world, dropPos.x, dropPos.y, dropPos.z, remainder); entity.setDeltaMovement(context.relativeMotion.scale(distance / 20f)); world.addFreshEntity(entity); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index f94473c89..e30e64e82 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -228,9 +228,9 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { pressedItems.clear(); applyBasinRecipe(); Optional basin = getBasin(); - SmartInventory inputs = basin.get() - .getInputInventory(); if (basin.isPresent()) { + SmartInventory inputs = basin.get() + .getInputInventory(); for (int slot = 0; slot < inputs.getSlots(); slot++) { ItemStack stackInSlot = inputs.getItem(slot); if (stackInSlot.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java index 077da0232..68dabcddb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Lang; @@ -55,7 +56,7 @@ import net.minecraftforge.common.util.FakePlayer; @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class BlazeBurnerBlock extends Block implements ITE { +public class BlazeBurnerBlock extends Block implements ITE, IWrenchable { public static final EnumProperty HEAT_LEVEL = EnumProperty.create("blaze", HeatLevel.class); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java index f81829625..60c546178 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java @@ -4,6 +4,7 @@ import java.util.Random; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.Block; @@ -31,7 +32,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ToolType; -public class LitBlazeBurnerBlock extends Block { +public class LitBlazeBurnerBlock extends Block implements IWrenchable { public static final EnumProperty FLAME_TYPE = EnumProperty.create("flame_type", FlameType.class); From 97bff0f95f2106f5be1225dec357b9eb6e435c63 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 22 Nov 2021 12:44:36 +0100 Subject: [PATCH 16/26] Other pipes are available - Moved fluid update fix from encased pipes to all pipes --- .../create/content/contraptions/fluids/FluidPropagator.java | 2 ++ .../content/contraptions/fluids/pipes/EncasedPipeBlock.java | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java index 3c872fa02..d577721b0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java @@ -125,6 +125,8 @@ public class FluidPropagator { BlockPos neighborPos, boolean isMoving) { if (world.isClientSide) return null; + // calling getblockstate() as otherBlock param seems to contain the block which was replaced + otherBlock = world.getBlockState(neighborPos).getBlock(); if (otherBlock instanceof FluidPipeBlock) return null; if (otherBlock instanceof AxisPipeBlock) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java index 65afe2c4c..e668ab22c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java @@ -89,9 +89,7 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, boolean isMoving) { DebugPacketSender.sendNeighborsUpdatePacket(world, pos); - // calling getblockstate() as otherBlock param seems to contain the block which was replaced - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, world.getBlockState(neighborPos) - .getBlock(), neighborPos, isMoving); + Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; if (!state.getValue(FACING_TO_PROPERTY_MAP.get(d))) From 3129672f3a9a4be1e02d19b72efb916e07934f29 Mon Sep 17 00:00:00 2001 From: PepperBell <44146161+PepperCode1@users.noreply.github.com> Date: Mon, 22 Nov 2021 20:12:45 -0800 Subject: [PATCH 17/26] Add CustomUseEffectsItem - Add CustomUseEffectsItem interface implemented on items to control use effects behavior - Replace SandPaperEffectsHandler and SandPaperSoundMixin - Fix broken polishing particles when no items in other hand (polishing last item) --- .../tools/SandPaperEffectsHandler.java | 54 ------------------- .../curiosities/tools/SandPaperItem.java | 25 ++++++++- .../foundation/item/CustomUseEffectsItem.java | 30 +++++++++++ .../mixin/CustomItemUseEffectsMixin.java | 49 +++++++++++++++++ .../foundation/mixin/SandPaperSoundMixin.java | 51 ------------------ .../resources/META-INF/accesstransformer.cfg | 2 + src/main/resources/create.mixins.json | 4 +- 7 files changed, 107 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperEffectsHandler.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/SandPaperSoundMixin.java diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperEffectsHandler.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperEffectsHandler.java deleted file mode 100644 index 4b2d01ecb..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperEffectsHandler.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.Random; - -import net.minecraft.core.particles.ItemParticleOption; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.phys.Vec3; - -public class SandPaperEffectsHandler { - public static void onUseTick(LivingEntity entity, Random random) { - - spawnItemParticles(entity, random); - - if (shouldPlaySound(entity)) - entity.playSound(entity.getEatingSound(entity.getUseItem()), 0.9F + 0.2F * random.nextFloat(), random.nextFloat() * 0.2F + 0.9F); - } - - private static boolean shouldPlaySound(LivingEntity entity) { - // after 6 ticks play the sound every 7th - return (getTicksUsed(entity) - 6) % 7 == 0; - } - - private static int getTicksUsed(LivingEntity entity) { - int useDuration = entity.getUseItem() - .getUseDuration(); - return useDuration - entity.getUseItemRemainingTicks(); - } - - private static void spawnItemParticles(LivingEntity entity, Random random) { - ItemStack sanding = entity.getItemInHand(getNonInteractionHand(entity)); - - Vec3 vec3 = new Vec3(((double)random.nextFloat() - 0.5D) * 0.1D, Math.random() * 0.1D + 0.1D, 0.0D); - vec3 = vec3.xRot(-entity.getXRot() * ((float)Math.PI / 180F)); - vec3 = vec3.yRot(-entity.getYRot() * ((float)Math.PI / 180F)); - double d0 = (double)(-random.nextFloat()) * 0.6D - 0.3D; - Vec3 vec31 = new Vec3(((double)random.nextFloat() - 0.5D) * 0.3D, d0, 0.6D); - vec31 = vec31.xRot(-entity.getXRot() * ((float)Math.PI / 180F)); - vec31 = vec31.yRot(-entity.getYRot() * ((float)Math.PI / 180F)); - vec31 = vec31.add(entity.getX(), entity.getEyeY(), entity.getZ()); - if (entity.level instanceof ServerLevel) //Forge: Fix MC-2518 spawnParticle is nooped on server, need to use server specific variant - ((ServerLevel)entity.level).sendParticles(new ItemParticleOption(ParticleTypes.ITEM, sanding), vec31.x, vec31.y, vec31.z, 1, vec3.x, vec3.y + 0.05D, vec3.z, 0.0D); - else - entity.level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, sanding), vec31.x, vec31.y, vec31.z, vec3.x, vec3.y + 0.05D, vec3.z); - - } - - private static InteractionHand getNonInteractionHand(LivingEntity entity) { - return entity.getUsedItemHand() == InteractionHand.MAIN_HAND ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java index 0476b5459..10db29bdd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java @@ -1,10 +1,12 @@ package com.simibubi.create.content.curiosities.tools; +import java.util.Random; import java.util.function.Consumer; import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.foundation.item.CustomUseEffectsItem; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.VecHelper; @@ -40,7 +42,7 @@ import net.minecraftforge.common.util.FakePlayer; @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class SandPaperItem extends Item { +public class SandPaperItem extends Item implements CustomUseEffectsItem { public SandPaperItem(Properties properties) { super(properties.durability(8)); @@ -200,6 +202,27 @@ public class SandPaperItem extends Item { return toolAction == ToolActions.AXE_SCRAPE || toolAction == ToolActions.AXE_WAX_OFF; } + @Override + public Boolean shouldTriggerUseEffects(ItemStack stack, LivingEntity entity) { + // Trigger every tick so that we have more fine grain control over the animation + return true; + } + + @Override + public boolean triggerUseEffects(ItemStack stack, LivingEntity entity, int count, Random random) { + CompoundTag tag = stack.getOrCreateTag(); + if (tag.contains("Polishing")) { + ItemStack polishing = ItemStack.of(tag.getCompound("Polishing")); + entity.spawnItemParticles(polishing, 1); + } + + // After 6 ticks play the sound every 7th + if ((entity.getTicksUsingItem() - 6) % 7 == 0) + entity.playSound(entity.getEatingSound(stack), 0.9F + 0.2F * random.nextFloat(), random.nextFloat() * 0.2F + 0.9F); + + return true; + } + @Override public SoundEvent getEatingSound() { return AllSoundEvents.SANDING_SHORT.getMainEvent(); diff --git a/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java b/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java new file mode 100644 index 000000000..ac9d79156 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java @@ -0,0 +1,30 @@ +package com.simibubi.create.foundation.item; + +import java.util.Random; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +public interface CustomUseEffectsItem { + /** + * Called to determine if use effects should be applied for this item. + * + * @param stack The ItemStack being used. + * @param entity The LivingEntity using the item. + * @return null for default behavior, or boolean to override default behavior + */ + default Boolean shouldTriggerUseEffects(ItemStack stack, LivingEntity entity) { + return null; + } + + /** + * Called when use effects should be applied for this item. + * + * @param stack The ItemStack being used. + * @param entity The LivingEntity using the item. + * @param count The amount of times effects should be applied. Can safely be ignored. + * @param random The LivingEntity's Random. + * @return if the default behavior should be cancelled or not + */ + boolean triggerUseEffects(ItemStack stack, LivingEntity entity, int count, Random random); +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java new file mode 100644 index 000000000..b1eb2c6f9 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java @@ -0,0 +1,49 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.simibubi.create.foundation.item.CustomUseEffectsItem; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +@Mixin(LivingEntity.class) +public abstract class CustomItemUseEffectsMixin extends Entity { + private CustomItemUseEffectsMixin(EntityType entityType, Level level) { + super(entityType, level); + } + + @Shadow + public abstract ItemStack getUseItem(); + + @Inject(method = "shouldTriggerItemUseEffects()Z", at = @At("HEAD"), cancellable = true) + private void onShouldTriggerUseEffects(CallbackInfoReturnable cir) { + ItemStack using = getUseItem(); + Item item = using.getItem(); + if (item instanceof CustomUseEffectsItem handler) { + Boolean result = handler.shouldTriggerUseEffects(using, (LivingEntity) (Object) this); + if (result != null) { + cir.setReturnValue(result); + } + } + } + + @Inject(method = "triggerItemUseEffects(Lnet/minecraft/world/item/ItemStack;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getUseAnimation()Lnet/minecraft/world/item/UseAnim;", ordinal = 0), cancellable = true) + private void onTriggerUseEffects(ItemStack stack, int count, CallbackInfo ci) { + Item item = stack.getItem(); + if (item instanceof CustomUseEffectsItem handler) { + if (handler.triggerUseEffects(stack, (LivingEntity) (Object) this, count, random)) { + ci.cancel(); + } + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/SandPaperSoundMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/SandPaperSoundMixin.java deleted file mode 100644 index 0a9f63718..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/SandPaperSoundMixin.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.simibubi.create.content.curiosities.tools.SandPaperEffectsHandler; -import com.simibubi.create.content.curiosities.tools.SandPaperItem; - -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; - -@Mixin(LivingEntity.class) -public abstract class SandPaperSoundMixin extends Entity { - - @Shadow - public abstract ItemStack getUseItem(); - - private SandPaperSoundMixin(EntityType pEntityType, Level pLevel) { - super(pEntityType, pLevel); - } - - @Inject(method = "triggerItemUseEffects", cancellable = true, - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getUseAnimation()Lnet/minecraft/world/item/UseAnim;", ordinal = 0)) - private void onTriggerUseEffects(ItemStack pStack, int pCount, CallbackInfo ci) { - LivingEntity self = (LivingEntity) (Object) this; - - Item item = pStack.getItem(); - if (item instanceof SandPaperItem) { - SandPaperEffectsHandler.onUseTick(self, this.random); - ci.cancel(); - } - } - - // Trigger every tick for sandpaper, so that we have more fine grain control over the animation - @Inject(method = "shouldTriggerItemUseEffects", cancellable = true, at = @At("HEAD")) - private void alwaysTriggerUseEffects(CallbackInfoReturnable cir) { - ItemStack using = this.getUseItem(); - Item item = using.getItem(); - if (item instanceof SandPaperItem) { - cir.setReturnValue(true); - } - } -} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 071bd9273..a400d248b 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -43,3 +43,5 @@ public net.minecraft.client.renderer.ItemInHandRenderer f_109301_ # offHandItem # PaletteResize public net.minecraft.world.level.chunk.PaletteResize + +public net.minecraft.world.entity.LivingEntity m_21060_(Lnet/minecraft/world/item/ItemStack;I)V # spawnItemParticles diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index d23a75275..63f484c4d 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -5,8 +5,8 @@ "compatibilityLevel": "JAVA_16", "refmap": "create.refmap.json", "mixins": [ - "PlayerListMixin", - "SandPaperSoundMixin" + "CustomItemUseEffectsMixin", + "PlayerListMixin" ], "client": [ "BreakProgressMixin", From ebf1a895c9149f9853cb5199702dadc15dd0a657 Mon Sep 17 00:00:00 2001 From: Alonso <79758771+Alonsinwhat@users.noreply.github.com> Date: Tue, 23 Nov 2021 12:39:30 -0300 Subject: [PATCH 18/26] es_cl.json by Alonsinwhat (#2365) --- .../resources/assets/create/lang/es_cl.json | 2347 +++++++++++++++++ 1 file changed, 2347 insertions(+) create mode 100644 src/main/resources/assets/create/lang/es_cl.json diff --git a/src/main/resources/assets/create/lang/es_cl.json b/src/main/resources/assets/create/lang/es_cl.json new file mode 100644 index 000000000..86514071e --- /dev/null +++ b/src/main/resources/assets/create/lang/es_cl.json @@ -0,0 +1,2347 @@ +{ + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "Ventana de Acacia", + "block.create.acacia_window_pane": "Panel de Ventana de Acacia", + "block.create.adjustable_chain_gearshift": "Caja de Cambios en Cadena Ajustable", + "block.create.adjustable_crate": "Cajón Ajustable", + "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustable", + "block.create.adjustable_repeater": "Repetidor Ajustable", + "block.create.analog_lever": "Palanca Análoga", + "block.create.andesite_belt_funnel": "Ingreso para Cintas de Andesita", + "block.create.andesite_bricks": "Ladrillos de Andesita", + "block.create.andesite_bricks_slab": "Losa de Ladrillos de Andesita", + "block.create.andesite_bricks_stairs": "Escalera de Ladrillos de Andesita", + "block.create.andesite_bricks_wall": "Muro de Ladrillos de Andesita", + "block.create.andesite_casing": "Cubierta de Andesita", + "block.create.andesite_cobblestone": "Adoquín de Andesita", + "block.create.andesite_cobblestone_slab": "Losa de Adoquín de Andesita", + "block.create.andesite_cobblestone_stairs": "Escaleras de Adoquín de Andesita", + "block.create.andesite_cobblestone_wall": "Muro de Adoquín de Andesita", + "block.create.andesite_encased_shaft": "Eje con Cubierta de Andesita", + "block.create.andesite_funnel": "Ingreso de Andesita", + "block.create.andesite_pillar": "Pilar de Andesita", + "block.create.andesite_tunnel": "Túnel de Andesita", + "block.create.basin": "Tónel", + "block.create.belt": "Cinta", + "block.create.birch_window": "Ventana de Abedul", + "block.create.birch_window_pane": "Panel de Ventana de Abedul", + "block.create.black_nixie_tube": "Tubo Nixie Negro", + "block.create.black_sail": "Vela Negra", + "block.create.black_seat": "Asiento Negro", + "block.create.black_toolbox": "Caja de Herramientas Negra", + "block.create.black_valve_handle": "Válvula Negra", + "block.create.blaze_burner": "Mechero Blaze", + "block.create.blue_nixie_tube": "Tubo Nixie Azul", + "block.create.blue_sail": "Vela Azul", + "block.create.blue_seat": "Asiento Azul", + "block.create.blue_toolbox": "Caja de Herramientas Azul", + "block.create.blue_valve_handle": "Válvula Azul", + "block.create.brass_belt_funnel": "Ingreso para Cintas de Latón", + "block.create.brass_block": "Bloque de Latón", + "block.create.brass_casing": "Cubierta de Latón", + "block.create.brass_encased_shaft": "Eje con Cubierta de Latón", + "block.create.brass_funnel": "Ingreso de Latón", + "block.create.brass_tunnel": "Túnel de Latón", + "block.create.brown_nixie_tube": "Tubo Nixie Marrón", + "block.create.brown_sail": "Vela Marrón", + "block.create.brown_seat": "Asiento Marrón", + "block.create.brown_toolbox": "Caja de Herramientas Marrón", + "block.create.brown_valve_handle": "Válvula Marrón", + "block.create.cart_assembler": "Ensambladora de Vagonetas", + "block.create.chiseled_dark_scoria": "Escoria Oscura Cincelada", + "block.create.chiseled_dolomite": "Dolomita Cincelada", + "block.create.chiseled_gabbro": "Gabro Cincelado", + "block.create.chiseled_limestone": "Piedra Caliza Cincelada", + "block.create.chiseled_scoria": "Escoria Cincelada", + "block.create.chiseled_weathered_limestone": "Piedra Caliza Erosionada Cincelada", + "block.create.chocolate": "Chocolate", + "block.create.chute": "Tolvogán", + "block.create.clockwork_bearing": "Rodamiento De Relojería", + "block.create.clutch": "Embrague", + "block.create.cogwheel": "Engranaje", + "block.create.content_observer": "Observador de Contenidos", + "block.create.controller_rail": "Raíl Controlador", + "block.create.copper_backtank": "Tanque-Mochila de Cobre", + "block.create.copper_block": "Bloque de Cobre", + "block.create.copper_casing": "Cubierta de Cobre", + "block.create.copper_ore": "Mineral de Cobre", + "block.create.copper_shingles": "Tejas de Cobre", + "block.create.copper_tiles": "Baldosas de Cobre", + "block.create.copper_valve_handle": "Válvula de Cobre", + "block.create.creative_crate": "Cajón del Creativo", + "block.create.creative_fluid_tank": "Tanque de Fluidos del Creativo", + "block.create.creative_motor": "Motor del Creativo", + "block.create.crimson_window": "Ventana Carmesí", + "block.create.crimson_window_pane": "Panel de Ventana Carmesí", + "block.create.crushing_wheel": "Rueda Trituradora", + "block.create.crushing_wheel_controller": "Controladora de Rueda Trituradora", + "block.create.cuckoo_clock": "Reloj Cu-Cú", + "block.create.cyan_nixie_tube": "Tubo Nixie Cian", + "block.create.cyan_sail": "Vela Cian", + "block.create.cyan_seat": "Asiento Cian", + "block.create.cyan_toolbox": "Caja de Herramientas Cian", + "block.create.cyan_valve_handle": "Válvula Cian", + "block.create.dark_oak_window": "Ventana de Roble Oscuro", + "block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro", + "block.create.dark_scoria": "Escoria Oscura", + "block.create.dark_scoria_bricks": "Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_wall": "Muro de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_cobblestone": "Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_slab": "Losa de Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_stairs": "Escaleras de Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_wall": "Muro de Adoquín de Escoria Oscura", + "block.create.dark_scoria_pillar": "Pilar de Escoria Oscura", + "block.create.deployer": "Desplegador", + "block.create.depot": "Depósito", + "block.create.diorite_bricks": "Ladrillos de Diorita", + "block.create.diorite_bricks_slab": "Losa de Ladrillos de Diorita", + "block.create.diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita", + "block.create.diorite_bricks_wall": "Muro de Ladrillos de Diorita", + "block.create.diorite_cobblestone": "Adoquin de Diorita", + "block.create.diorite_cobblestone_slab": "Losa de Adoquin de Diorita", + "block.create.diorite_cobblestone_stairs": "Escaleras de Adoquin de Diorita", + "block.create.diorite_cobblestone_wall": "Muro de Adoquin de Diorita", + "block.create.diorite_pillar": "Pilar de Diorita", + "block.create.dolomite": "Dolomita", + "block.create.dolomite_bricks": "Ladrillos de Dolomita", + "block.create.dolomite_bricks_slab": "Losa de Ladrillos de Dolomita", + "block.create.dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita", + "block.create.dolomite_bricks_wall": "Muro de Ladrillos de Dolomita", + "block.create.dolomite_cobblestone": "Adoquín de Dolomita", + "block.create.dolomite_cobblestone_slab": "Losa de Adoquín de Dolomita", + "block.create.dolomite_cobblestone_stairs": "Escaleras de Adoquín de Dolomita", + "block.create.dolomite_cobblestone_wall": "Muro de Adoquín de Dolomita", + "block.create.dolomite_pillar": "Pilar de Dolomita", + "block.create.encased_chain_drive": "Conductor en Cadena Encubierto", + "block.create.encased_fan": "Ventilador Encubierto", + "block.create.encased_fluid_pipe": "Tubería de Fluidos Encubierta", + "block.create.fancy_andesite_bricks": "Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_slab": "Losa de Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_wall": "Muro de Ladrillos de Andesita Lujosos", + "block.create.fancy_dark_scoria_bricks": "Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_wall": "Muro de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_diorite_bricks": "Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_slab": "Losa de Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_wall": "Muro de Ladrillos de Diorita Lujosos", + "block.create.fancy_dolomite_bricks": "Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_slab": "Losa de Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_wall": "Muro de Ladrillos de Dolomita Lujosos", + "block.create.fancy_gabbro_bricks": "Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_slab": "Losa de Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_wall": "Muro de Ladrillos de Gabro Lujosos", + "block.create.fancy_granite_bricks": "Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_slab": "Losa de Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_stairs": "Escaleras de Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_wall": "Muro de Ladrillos de Granito Lujosos", + "block.create.fancy_limestone_bricks": "Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_stairs": "Escaleras de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_scoria_bricks": "Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_slab": "Losa de Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_wall": "Muro de Ladrillos de Escoria Lujosos", + "block.create.fancy_weathered_limestone_bricks": "Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fluid_pipe": "Tubería de Fluidos", + "block.create.fluid_tank": "Tanque de Fluidos", + "block.create.fluid_valve": "Válvula de Fluidos", + "block.create.flywheel": "Volante de Inercia", + "block.create.framed_glass": "Vidrio Enmarcado", + "block.create.framed_glass_pane": "Panel de Vidrio Enmarcado", + "block.create.furnace_engine": "Horno Motor", + "block.create.gabbro": "Gabro", + "block.create.gabbro_bricks": "Ladrillos de Gabro", + "block.create.gabbro_bricks_slab": "Losa de Ladrillos de Gabro", + "block.create.gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro", + "block.create.gabbro_bricks_wall": "Muro de Ladrillos de Gabro", + "block.create.gabbro_cobblestone": "Adoquín de Gabro", + "block.create.gabbro_cobblestone_slab": "Losa de Adoquín de Gabro", + "block.create.gabbro_cobblestone_stairs": "Escaleras de Adoquín de Gabro", + "block.create.gabbro_cobblestone_wall": "Muro de Adoquín de Gabro", + "block.create.gabbro_pillar": "Pilar de Gabro", + "block.create.gantry_carriage": "Carruaje de Grúa", + "block.create.gantry_shaft": "Eje de Grúa", + "block.create.gearbox": "Caja de Engranajes", + "block.create.gearshift": "Caja de Cambios", + "block.create.glass_fluid_pipe": "Tubería de Fluidos de Cristal", + "block.create.granite_bricks": "Ladrillos de Granito", + "block.create.granite_bricks_slab": "Losa de Ladrillos de Granito", + "block.create.granite_bricks_stairs": "Escaleras de Ladrillos de Granito", + "block.create.granite_bricks_wall": "Muro de Ladrillos de Granito", + "block.create.granite_cobblestone": "Adoquín de Granito", + "block.create.granite_cobblestone_slab": "Losa de Adoquín de Granito", + "block.create.granite_cobblestone_stairs": "Escaleras de Adoquín de Granito", + "block.create.granite_cobblestone_wall": "Muro de Adoquín de Granito", + "block.create.granite_pillar": "Pilar de Granito", + "block.create.gray_nixie_tube": "Tubo Nixie Gris", + "block.create.gray_sail": "vela Gris", + "block.create.gray_seat": "Asiento Gris", + "block.create.gray_toolbox": "Caja de Herrameintas Gris", + "block.create.gray_valve_handle": "Válvula Gris", + "block.create.green_nixie_tube": "Tubo Nixie Verde", + "block.create.green_sail": "Vela Verde", + "block.create.green_seat": "Asiento Verde", + "block.create.green_toolbox": "Caja de Herramientas Verde", + "block.create.green_valve_handle": "Válvula Verde", + "block.create.hand_crank": "Manivela", + "block.create.haunted_bell": "Campana Embrujada", + "block.create.honey": "Miel", + "block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal", + "block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal", + "block.create.hose_pulley": "Polea Manguera", + "block.create.item_drain": "Drenaje", + "block.create.jungle_window": "Ventana de Jungla", + "block.create.jungle_window_pane": "Panel de Ventana de Jungla", + "block.create.large_cogwheel": "Engranaje Grande", + "block.create.layered_andesite": "Capa de Andesita", + "block.create.layered_dark_scoria": "Capa de Escoria Oscura", + "block.create.layered_diorite": "Capa de Diorita", + "block.create.layered_dolomite": "Capa de Dolomita", + "block.create.layered_gabbro": "Capa de Gabro", + "block.create.layered_granite": "Capa de Granito", + "block.create.layered_limestone": "Capa de Piedra Caliza", + "block.create.layered_scoria": "Capa de Escoria", + "block.create.layered_weathered_limestone": "Capa de Piedra Caliza", + "block.create.lectern_controller": "Controlador de Atril", + "block.create.light_blue_nixie_tube": "Tubo Nixie Azul Claro", + "block.create.light_blue_sail": "Vela Azul Claro", + "block.create.light_blue_seat": "Asiento Azul Claro", + "block.create.light_blue_toolbox": "Caja de Herramientas Azul Claro", + "block.create.light_blue_valve_handle": "Válvula Azul Claro", + "block.create.light_gray_nixie_tube": "Tubo Nixie Gris Claro", + "block.create.light_gray_sail": "Vela Gris Claro", + "block.create.light_gray_seat": "Asiento Gris Claro", + "block.create.light_gray_toolbox": "Caja de Herramientas Gris Claro", + "block.create.light_gray_valve_handle": "Válvula Gris Claro", + "block.create.lime_nixie_tube": "Tubo Nixie Lima", + "block.create.lime_sail": "Vela Lima", + "block.create.lime_seat": "Asiento Lima", + "block.create.lime_toolbox": "Caja de herramientas Lima", + "block.create.lime_valve_handle": "Válvula Lima", + "block.create.limesand": "Arena Caliza", + "block.create.limestone": "Piedra Caliza", + "block.create.limestone_bricks": "Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_stairs": "Losa de Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza", + "block.create.limestone_cobblestone": "Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_slab": "Losa de Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_stairs": "Escaleras de Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_wall": "Muro de Adoquín de Piedra Caliza", + "block.create.limestone_pillar": "Pilar de Piedra Caliza", + "block.create.linear_chassis": "Chasis Lineal", + "block.create.lit_blaze_burner": "Quemador Blaze Encendido", + "block.create.magenta_nixie_tube": "Tubo Nixie Magenta", + "block.create.magenta_sail": "Vela Magenta", + "block.create.magenta_seat": "Asiento Magenta", + "block.create.magenta_toolbox": "Caja de Herramientas Magenta", + "block.create.magenta_valve_handle": "Válvula Magenta", + "block.create.mechanical_arm": "Brazo Mecánico", + "block.create.mechanical_bearing": "Rodamiento Mecánico", + "block.create.mechanical_crafter": "Crafteador Mecánico", + "block.create.mechanical_drill": "Taladro Mecánico", + "block.create.mechanical_harvester": "Cosechadora Mecánica", + "block.create.mechanical_mixer": "Mezcladora Mecánica", + "block.create.mechanical_piston": "Pistón Mecánico", + "block.create.mechanical_piston_head": "Cabeza de Pistón Mecánico", + "block.create.mechanical_plough": "Arador Mecánico", + "block.create.mechanical_press": "Prensa Mecánica", + "block.create.mechanical_pump": "Bomba Mecánica", + "block.create.mechanical_saw": "Sierra Mecánica", + "block.create.metal_bracket": "Soporte Metálico", + "block.create.millstone": "Piedra de Molino", + "block.create.minecart_anchor": "Ancla de Vagoneta", + "block.create.mossy_andesite": "Andesita Musgosa", + "block.create.mossy_dark_scoria": "Escoria Oscura Musgosa", + "block.create.mossy_diorite": "Diorita Musgosa", + "block.create.mossy_dolomite": "Dolomita Musgosa", + "block.create.mossy_gabbro": "Gabro Musgoso", + "block.create.mossy_granite": "Granito Musgoso", + "block.create.mossy_limestone": "Piedra Caliza Musgosa", + "block.create.mossy_scoria": "Escoria Musgosa", + "block.create.mossy_weathered_limestone": "Piedra Caliza Erosionada Musgosa", + "block.create.mysterious_cuckoo_clock": "Reloj Cu-Cú", + "block.create.natural_scoria": "Escoria Natural", + "block.create.nixie_tube": "Tubo Nixie", + "block.create.nozzle": "Boquilla", + "block.create.oak_window": "Ventana de Roble", + "block.create.oak_window_pane": "Panel de Ventana de Roble", + "block.create.orange_sail": "Vela Naranja", + "block.create.orange_seat": "Asiento Naranja", + "block.create.orange_toolbox": "Caja de Herramientas Naranja", + "block.create.orange_valve_handle": "Válvula Naranja", + "block.create.ornate_iron_window": "Ventana de Hierro Adornada", + "block.create.ornate_iron_window_pane": "Panel de Ventana de Hierro Adornada", + "block.create.overgrown_andesite": "Andesita Descuidada", + "block.create.overgrown_dark_scoria": "Escoria Oscura Descuidada", + "block.create.overgrown_diorite": "Diorita Descuidada", + "block.create.overgrown_dolomite": "Dolomita Descuidada", + "block.create.overgrown_gabbro": "Gabro Descuidado", + "block.create.overgrown_granite": "Granito Descuidado", + "block.create.overgrown_limestone": "Piedra Caliza Descuidada", + "block.create.overgrown_scoria": "Escoria Descuidada", + "block.create.overgrown_weathered_limestone": "Piedra Caliza Erosionada Descuidada", + "block.create.paved_andesite": "Andesita Pavimentada", + "block.create.paved_andesite_slab": "Losa de Andesita Pavimentada", + "block.create.paved_andesite_stairs": "Escaleras de Andesita Pavimentada", + "block.create.paved_andesite_wall": "Muro de Andesita Pavimentada", + "block.create.paved_dark_scoria": "Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_slab": "Losa de Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_stairs": "Escaleras de Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_wall": "Muro de Escoria Oscura Pavimentada", + "block.create.paved_diorite": "Diorita Pavimentada", + "block.create.paved_diorite_slab": "Losa de Diorita Pavimentada", + "block.create.paved_diorite_stairs": "Escaleras de Diorita Pavimentada", + "block.create.paved_diorite_wall": "Muro de Diorita Pavimentada", + "block.create.paved_dolomite": "Dolomita Pavimentada", + "block.create.paved_dolomite_slab": "Losa de Dolomita Pavimentada", + "block.create.paved_dolomite_stairs": "Escaleras de Dolomita Pavimentada", + "block.create.paved_dolomite_wall": "Muro de Dolomita Pavimentada", + "block.create.paved_gabbro": "Gabro Pavimentado", + "block.create.paved_gabbro_slab": "Losa de Gabro Pavimentado", + "block.create.paved_gabbro_stairs": "Escaleras de Gabro Pavimentado", + "block.create.paved_gabbro_wall": "Muro de Gabro Pavimentado", + "block.create.paved_granite": "Granito Pavimentado", + "block.create.paved_granite_slab": "Losa de Granito Pavimentado", + "block.create.paved_granite_stairs": "Escaleras de Granito Pavimentado", + "block.create.paved_granite_wall": "Muro de Granito Pavimentado", + "block.create.paved_limestone": "Piedra Caliza Pavimentada", + "block.create.paved_limestone_slab": "Losa de Piedra Caliza Pavimentada", + "block.create.paved_limestone_stairs": "Escaleras de Piedra Caliza Pavimentada", + "block.create.paved_limestone_wall": "Muros de Piedra Caliza Pavimentada", + "block.create.paved_scoria": "Escoria Pavimentada", + "block.create.paved_scoria_slab": "Losa de Escoria Pavimentada", + "block.create.paved_scoria_stairs": "Escaleras de Escoria Pavimentada", + "block.create.paved_scoria_wall": "Muro de Escoria Pavimentada", + "block.create.paved_weathered_limestone": "Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_slab": "Losa de Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_stairs": "Escaleras de Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_wall": "Muro de Piedra Caliza Erosionada Pavimentada", + "block.create.peculiar_bell": "Campana Peculiar", + "block.create.pink_nixie_tube": "Tubo Nixie Rosado", + "block.create.pink_sail": "Vela Rosada", + "block.create.pink_seat": "Asiento Rosado", + "block.create.pink_toolbox": "Caja de Herramientas Rosada", + "block.create.pink_valve_handle": "Válvula Rosada", + "block.create.piston_extension_pole": "Poste de Extensión de Pistón", + "block.create.polished_dark_scoria": "Escoria Oscura Pulida", + "block.create.polished_dark_scoria_slab": "Losa de Escoria Oscura Pulida", + "block.create.polished_dark_scoria_stairs": "Escaleras de Escoria Oscura Pulida", + "block.create.polished_dark_scoria_wall": "Muro de Escoria Oscura Pulida", + "block.create.polished_dolomite": "Dolomita Pulida", + "block.create.polished_dolomite_slab": "Losa de Dolomita Pulida", + "block.create.polished_dolomite_stairs": "Escaleras de Dolomita Pulida", + "block.create.polished_dolomite_wall": "Muro de Dolomita Pulida", + "block.create.polished_gabbro": "Gabro Pulido", + "block.create.polished_gabbro_slab": "Losa de de Gabro Pulido", + "block.create.polished_gabbro_stairs": "Escaleras de Gabro Pulido", + "block.create.polished_gabbro_wall": "Muro de Gabro Pulido", + "block.create.polished_limestone": "Piedra Caliza Pulida", + "block.create.polished_limestone_slab": "Losa de Piedra Caliza Pulida", + "block.create.polished_limestone_stairs": "Escaleras de Piedra Caliza Pulida", + "block.create.polished_limestone_wall": "Muro de Piedra Caliza Pulida", + "block.create.polished_scoria": "Escoria Pulida", + "block.create.polished_scoria_slab": "Losa de Escoria Pulida", + "block.create.polished_scoria_stairs": "Escaleras de Escoria Pulida", + "block.create.polished_scoria_wall": "Muro de Escoria Pulida", + "block.create.polished_weathered_limestone": "Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_slab": "Losa de Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_stairs": "Escaleras de Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_wall": "Muro de Piedra Caliza Erosionada Pulida", + "block.create.portable_fluid_interface": "Interfaz de Fluidos Portable", + "block.create.portable_storage_interface": "Interfaz de Almacenamientos Portable", + "block.create.powered_latch": "Cerrojo de Redstone", + "block.create.powered_toggle_latch": "Cerrojo Palanca de Redstone", + "block.create.pulley_magnet": "Imán de la Polea", + "block.create.pulse_repeater": "Repetidor de Pulso", + "block.create.purple_nixie_tube": "Tubo Nixie Morado", + "block.create.purple_sail": "Vela Morada", + "block.create.purple_seat": "Asiento Morado", + "block.create.purple_toolbox": "Caja de Herramientas Morada", + "block.create.purple_valve_handle": "Válvula Morada", + "block.create.radial_chassis": "Chasis Radial", + "block.create.red_nixie_tube": "Tubo Nixie Rojo", + "block.create.red_sail": "Vela Roja", + "block.create.red_seat": "Asiento Rojo", + "block.create.red_toolbox": "Caja de Herramientas Roja", + "block.create.red_valve_handle": "Válvula Roja", + "block.create.redstone_contact": "Contacto de Redstone", + "block.create.redstone_link": "Enlace de Redstone", + "block.create.refined_radiance_casing": "Cubierta Radiante", + "block.create.reinforced_rail": "Raíl Reforzado", + "block.create.rope": "Cuerda", + "block.create.rope_pulley": "Polea de Cuerda", + "block.create.rotation_speed_controller": "Controlador de Velocidad de Rotación", + "block.create.sail_frame": "Marco de Vela", + "block.create.schematic_table": "Mesa de Esquemas", + "block.create.schematicannon": "Esquemacañón", + "block.create.scoria": "Escoria", + "block.create.scoria_bricks": "Ladrillos de Escoria", + "block.create.scoria_bricks_slab": "Losa de Ladrillos de Escoria", + "block.create.scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria", + "block.create.scoria_bricks_wall": "Muro de Ladrillos de Escoria", + "block.create.scoria_cobblestone": "Adoquín de Escoria", + "block.create.scoria_cobblestone_slab": "Losa de Adoquín de Escoria", + "block.create.scoria_cobblestone_stairs": "Escaleras de Adoquín de Escoria", + "block.create.scoria_cobblestone_wall": "Muro de Adoquín de Escoria", + "block.create.scoria_pillar": "Pilar de Escoria", + "block.create.secondary_linear_chassis": "Chasis Lineal Secundario", + "block.create.sequenced_gearshift": "Caja de Cambios Secuenciada", + "block.create.shadow_steel_casing": "Cubierta de Sombra", + "block.create.shaft": "Eje", + "block.create.smart_chute": "Tolvogán Inteligente", + "block.create.smart_fluid_pipe": "Tubería de Fluidos Inteligente", + "block.create.speedometer": "Velocímetro", + "block.create.spout": "Surtidor", + "block.create.spruce_window": "Ventana de Abeto", + "block.create.spruce_window_pane": "Panel de Ventana de Abeto", + "block.create.sticker": "Pegador", + "block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso", + "block.create.stockpile_switch": "Interruptor de Reservas", + "block.create.stressometer": "Estresómetro", + "block.create.tiled_glass": "Vidrio Baldosa", + "block.create.tiled_glass_pane": "Panel de Vidrio Baldosa", + "block.create.turntable": "Plato Giratorio", + "block.create.vertical_framed_glass": "Vidrio Baldosa Vertical", + "block.create.vertical_framed_glass_pane": "Panel de Vidrio Baldosa Vertical", + "block.create.warped_window": "Ventana Distorsionada", + "block.create.warped_window_pane": "Panel de Ventana Distorsionada", + "block.create.water_wheel": "Rueda de Agua", + "block.create.weathered_limestone": "Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks": "Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_stairs": "Escaledas de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone": "Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_slab": "Losa de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_stairs": "Escalera de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_wall": "Muro de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_pillar": "Pilar de Piedra Caliza Erosionada", + "block.create.weighted_ejector": "Eyector por Peso", + "block.create.white_nixie_tube": "Tubo Nixie Blanco", + "block.create.white_sail": "Vela Blanca", + "block.create.white_seat": "Asiento Blanco", + "block.create.white_toolbox": "Caja de Herramientas Blanca", + "block.create.white_valve_handle": "Válvula Blanca", + "block.create.windmill_bearing": "Rodamiento de Molino de Viento", + "block.create.wooden_bracket": "Soporte de Madera", + "block.create.yellow_nixie_tube": "Tubo Nixie Amarillo", + "block.create.yellow_sail": "Vela Amarilla", + "block.create.yellow_seat": "Asiento Amarillo", + "block.create.yellow_toolbox": "Caja de Herramientas Amarilla", + "block.create.yellow_valve_handle": "Válvula Amarilla", + "block.create.zinc_block": "Bloque de Zinc", + "block.create.zinc_ore": "Mineral de Zinc", + + "enchantment.create.capacity": "Capacidad", + "enchantment.create.potato_recovery": "Recuperación de papas", + + "entity.create.contraption": "Artefacto", + "entity.create.crafting_blueprint": "Crafteando Planos", + "entity.create.gantry_contraption": "Artefacto de Grúa", + "entity.create.potato_projectile": "Projectil de papa", + "entity.create.seat": "Asiento", + "entity.create.stationary_contraption": "Artefacto Estacionario", + "entity.create.super_glue": "La Gotita", + + "fluid.create.potion": "Poción", + "fluid.create.tea": "Té del Constructor", + + "item.create.andesite_alloy": "Aleación de Andesita", + "item.create.attribute_filter": "Filtro de Atributos", + "item.create.bar_of_chocolate": "Barra de Chocolate", + "item.create.belt_connector": "Cinta Mecánica", + "item.create.blaze_cake": "Pastel Blaze", + "item.create.blaze_cake_base": "Base del Pastel Blaze", + "item.create.brass_hand": "Mano de Latón", + "item.create.brass_ingot": "Lingote de Latón", + "item.create.brass_nugget": "Nugget de Latón", + "item.create.brass_sheet": "Plancha de Latón", + "item.create.builders_tea": "Té del Constructor", + "item.create.chest_minecart_contraption": "Contrapción de Vagoneta con Cofre", + "item.create.chocolate_bucket": "Balde de Chocolate", + "item.create.chocolate_glazed_berries": "Bayas Bañadas en Chocolate", + "item.create.chromatic_compound": "Compuesto Cromático", + "item.create.cinder_flour": "Harina de Cenizas", + "item.create.copper_backtank": "Mochila-Tanque de Cobre", + "item.create.copper_ingot": "Lingote de Cobre", + "item.create.copper_nugget": "Nugget de Cobre", + "item.create.copper_sheet": "Plancha de Cobre", + "item.create.crafter_slot_cover": "Cubre Ranuras", + "item.create.crafting_blueprint": "Plano de Fabricación", + "item.create.creative_blaze_cake": "Pastel Blaze del Creativo", + "item.create.crushed_aluminum_ore": "Mineral de Aluminio Triturado", + "item.create.crushed_brass": "Latón Triturado", + "item.create.crushed_copper_ore": "Mineral de Cobre Triturado", + "item.create.crushed_gold_ore": "Mineral de Oro Triturado", + "item.create.crushed_iron_ore": "Mineral de Hierro Triturado", + "item.create.crushed_lead_ore": "Mineral de Plomo Triturado", + "item.create.crushed_nickel_ore": "Mineral de Níquel Triturado", + "item.create.crushed_osmium_ore": "Mineral de Osmio Triturado", + "item.create.crushed_platinum_ore": "Mineral de Platino Triturado", + "item.create.crushed_quicksilver_ore": "Mineral de Mercurio Triturado", + "item.create.crushed_silver_ore": "Mineral de Plata Triturado", + "item.create.crushed_tin_ore": "Mineral de Estaño Triturado", + "item.create.crushed_uranium_ore": "Mineral de Uranio Triturado", + "item.create.crushed_zinc_ore": "Mineral de Zinc Triturado", + "item.create.diving_boots": "Botas de Buceo", + "item.create.diving_helmet": "Casco de Buceo", + "item.create.dough": "Masa", + "item.create.electron_tube": "Tubo de Electrones", + "item.create.empty_blaze_burner": "Quemador Blaze Vacío", + "item.create.empty_schematic": "Esquema Vacío", + "item.create.extendo_grip": "Agarrextensor", + "item.create.filter": "Filtro", + "item.create.furnace_minecart_contraption": "Contrapción de Vagoneta con Horno", + "item.create.goggles": "Lentes del Ingeniero", + "item.create.golden_sheet": "Plancha Dorada", + "item.create.handheld_worldshaper": "Forma Mundos del Creativo", + "item.create.honey_bucket": "Balde de Miel", + "item.create.honeyed_apple": "Manzana Enmielada", + "item.create.incomplete_cogwheel": "Engranaje Incompleto", + "item.create.incomplete_large_cogwheel": "Engranaje Grande Incompleto", + "item.create.incomplete_precision_mechanism": "Mecanismo de Precisión Incompleto", + "item.create.iron_sheet": "Plancha de Hierro", + "item.create.linked_controller": "Controlador Vinculable", + "item.create.minecart_contraption": "Contrapción de Vagoneta", + "item.create.minecart_coupling": "Acoplamiento de Vagonetas", + "item.create.polished_rose_quartz": "Cuarzo Rosa Pulido", + "item.create.potato_cannon": "Cañón de Papas", + "item.create.powdered_obsidian": "Obsidiana Pulverizada", + "item.create.precision_mechanism": "Mecanismo de Precisión", + "item.create.propeller": "Hélice", + "item.create.red_sand_paper": "Papel de Arena Roja", + "item.create.refined_radiance": "Radiancia Refinada", + "item.create.rose_quartz": "Cuarzo Rosa", + "item.create.sand_paper": "Papel de Arena", + "item.create.schematic": "Esquema", + "item.create.schematic_and_quill": "Esquema con Pluma", + "item.create.shadow_steel": "Acero Sombrío", + "item.create.super_glue": "La Gotita", + "item.create.sweet_roll": "Rollito Dulce", + "item.create.tree_fertilizer": "Fertilizante Arbóreo", + "item.create.vertical_gearbox": "Caja de Engranajes Vertical", + "item.create.wand_of_symmetry": "Vara de Simetría", + "item.create.wheat_flour": "Harina de Trigo", + "item.create.whisk": "Batidor", + "item.create.wrench": "Llave Inglesa", + "item.create.zinc_ingot": "Lingote de Zinc", + "item.create.zinc_nugget": "Nugget de Zinc", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "Bienvenido a Create", + "advancement.create.root.desc": "¡Es hora de empezar a construir algunas contrapciones increíbles!", + "advancement.create.andesite_alloy": "Aliteración Abundante", + "advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.", + "advancement.create.its_alive": "¡Está Vivo!", + "advancement.create.its_alive.desc": "Observa girar a tu primer componente cinético. (Qué hermoso.)", + "advancement.create.shifting_gears": "Engranajes Cambiantes", + "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a uno pequeño, permitiendo cambiar la velocidad de tu contrapción.", + "advancement.create.overstressed": "¡Sobre-Estresado!", + "advancement.create.overstressed.desc": "Experimenta los límites del sobreestrés de primera mano.", + "advancement.create.belt": "Unidad de Algas", + "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", + "advancement.create.tunnel": "¡A cubierto!", + "advancement.create.tunnel.desc": "Embellece tu cinta mecánica con un Túnel.", + "advancement.create.splitter_tunnel": "Divide y Conquista", + "advancement.create.splitter_tunnel.desc": "Crea un divisor con un conjunto de túneles de latón.", + "advancement.create.chute": "Viniendose Abajo", + "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", + "advancement.create.upward_chute": "Abducción Aérea", + "advancement.create.upward_chute.desc": "Observa cómo un objeto arrojado vuela hacia un tolvogán impulsado por un ventilador.", + "advancement.create.belt_funnel": "Aletas Colgantes", + "advancement.create.belt_funnel.desc": "Coloca un ingreso lateral sobre una cinta mecánica o depósito para crear un tipo especial de ingreso.", + "advancement.create.belt_funnel_kiss": "¡Son Cintololos!", + "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", + "advancement.create.fan": "El Maestro del Aire Mecánico", + "advancement.create.fan.desc": "Monta la corriente de aire proporcionada por un ventilador mecánico.", + "advancement.create.fan_lava": "Calentador de Espacio Geotérmico", + "advancement.create.fan_lava.desc": "Quédate atrapado en una corriente de aire que derrite cosas.", + "advancement.create.fan_water": "Lavados Locos", + "advancement.create.fan_water.desc": "Quédate atrapado en una corriente de aire que lava cosas.", + "advancement.create.fan_smoke": "Fuelles Mecánicos", + "advancement.create.fan_smoke.desc": "Quédate atrapado en una corriente de aire que ahuma cosas.", + "advancement.create.wrench": "Configura Convenientemente", + "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus contrapciones.", + "advancement.create.goggles": "Visión Estresada", + "advancement.create.goggles.desc": "Crea lentes de ingeniero, que te ayudan a obtener más información cinética de los componentes.", + "advancement.create.speedometer": "Pero, ¿qué tan rápido exactamente?", + "advancement.create.speedometer.desc": "Coloca y dale poder a un velocímetro. Míralo con tus gafas para leer el número exacto.", + "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", + "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", + "advancement.create.aesthetics": "Bum, estética!", + "advancement.create.aesthetics.desc": "Coloca soportes en un eje, tubería y engranaje.", + "advancement.create.reinforced": "Bum, reforzado!", + "advancement.create.reinforced.desc": "Utiliza bloques de cubierta en un eje, tubería y cinta mecánica.", + "advancement.create.water_wheel": "Aprovechando la Hidráulica", + "advancement.create.water_wheel.desc": "¡Pon una rueda de agua e intenta hacer que gire!", + "advancement.create.chocolate_wheel": "Poder de buen gusto", + "advancement.create.chocolate_wheel.desc": "Haz funcionar una rueda de agua con... chocolate.", + "advancement.create.lava_wheel": "Rueda Magmática", + "advancement.create.lava_wheel.desc": "Ni siquiera debería haber funcionado.", + "advancement.create.cuckoo": "¿Ya es hora?", + "advancement.create.cuckoo.desc": "Sé testigo de cómo un reloj cu-cú anuncia la hora de acostarse. ¡A la cama!", + "advancement.create.millstone": "Trituradora de Bolsillo", + "advancement.create.millstone.desc": "Coloca y dale poder a una Piedra de Molino.", + "advancement.create.windmill": "Una leve brisa", + "advancement.create.windmill.desc": "Arma un molino.", + "advancement.create.maxed_windmill": "Una fuerte brisa", + "advancement.create.maxed_windmill.desc": "Arma un molino con su fuerza máxima.", + "advancement.create.andesite_casing": "La Edad de la Andesita", + "advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.", + "advancement.create.mechanical_drill": "Destructores Estacionarios", + "advancement.create.mechanical_drill.desc": "Coloca y dale poder a un Taladro Mecánico.", + "advancement.create.press": "Prensa Hidráulica de 1000 Kg contra este Trozo de Hierro", + "advancement.create.press.desc": "Dale poder a una prensa mecánica y utilízala para crear algunas planchas.", + "advancement.create.polished_rose_quartz": "Diamantes Rosados", + "advancement.create.polished_rose_quartz.desc": "Usa un trozo de papel de arena para pulir el cuarzo rosa hasta que se vuelva transparente.", + "advancement.create.electron_tube": "Bip Bup", + "advancement.create.electron_tube.desc": "Haz algunos Tubos de Electrones, útiles para crear maquinas un tanto menos... primitivas.", + "advancement.create.mechanical_saw": "Talado Estacionario", + "advancement.create.mechanical_saw.desc": "Coloca y dale poder a una Sierra Mecánica", + "advancement.create.basin": "Operación Tónel", + "advancement.create.basin.desc": "Pon una tónel y prueba a tirar algo dentro.", + "advancement.create.mixer": "Mezclando la cosa", + "advancement.create.mixer.desc": "Coloca una Mezcladora Mecánica sobre una tónel, enciéndela y comienza a mezclar algunos ingredientes.", + "advancement.create.blaze_burner": "Una fogata viviente", + "advancement.create.blaze_burner.desc": "Obtén un Quemador Blaze.", + "advancement.create.compact": "Compactado Automático", + "advancement.create.compact.desc": "Usa una Prensa y una tónel para compactar algunos objetos.", + "advancement.create.brass": "Aleaciones de verdad", + "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", + "advancement.create.brass_casing": "La Edad del Latón", + "advancement.create.brass_casing.desc": "Utiliza tu latón recién obtenido y un poco de madera para crear una cubierta más avanzada.", + "advancement.create.copper_casing": "La Edad del Cobre", + "advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.", + "advancement.create.spout": "Splash", + "advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.", + "advancement.create.spout_potion": "Destilería global", + "advancement.create.spout_potion.desc": "Observa como un surtidor llena una botella con líquido de poción", + "advancement.create.chocolate": "Un mundo de Imaginación", + "advancement.create.chocolate.desc": "Obtén un balde de Chocolate Derretido", + "advancement.create.item_drain": "Drenaje por Caída", + "advancement.create.item_drain.desc": "Observa un objeto ser vaciado por un drenaje.", + "advancement.create.chained_item_drain": "¡Déjalo estar!", + "advancement.create.chained_item_drain.desc": "Observa cómo un objeto pasa por varios drenajes encadenados.", + "advancement.create.glass_pipe": "Flujo Espía", + "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.", + "advancement.create.pipe_collision": "¡Nunca cruces el Río!", + "advancement.create.pipe_collision.desc": "Observa dos fluidos coincidir en tu red de tuberías.", + "advancement.create.pipe_spill": "¡Hay una fuga!", + "advancement.create.pipe_spill.desc": "Observa el final de una tubería tomar o colocar fluidos en el mundo.", + "advancement.create.hose_pulley": "Derrame industrial", + "advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.", + "advancement.create.infinite_water": "Drenando el Oceano", + "advancement.create.infinite_water.desc": "Bombea de un cuerpo de agua lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.infinite_lava": "Drenando el Centro de la Tierra", + "advancement.create.infinite_lava.desc": "Bombea de un cuerpo de lava lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.infinite_chocolate": "Ahogándose en imaginación", + "advancement.create.infinite_chocolate.desc": "Bombea de un cuerpo de chocolate lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.crafter": "Ensamblaje Automático", + "advancement.create.crafter.desc": "Coloca y dale poder a algunos Crafteadores Mecánicos.", + "advancement.create.clockwork_bearing": "Contrapción en Punto", + "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", + "advancement.create.nixie_tube": "Señales de Estilo", + "advancement.create.nixie_tube.desc": "Obtén y coloca un par de Tubos Nixie.", + "advancement.create.deployer": "Toca, Coloca y Ataca", + "advancement.create.deployer.desc": "Coloca y dale poder a un Desplegador, la perfecta reflexión de tí mismo.", + "advancement.create.speed_controller": "¡Los ingenieros lo odian!", + "advancement.create.speed_controller.desc": "Pon un Controlador de Velocidad de Rotación, el último dispositivo del mercado para el engranaje moderno.", + "advancement.create.flywheel": "El Corazón de la Fábrica", + "advancement.create.flywheel.desc": "Conecte con éxito un horno motor al volante de inercia.", + "advancement.create.overstress_flywheel": "Altos niveles de estrés", + "advancement.create.overstress_flywheel.desc": "Sobreestresa un horno motor.", + "advancement.create.precision_mechanism": "Curiosidades Complejas", + "advancement.create.precision_mechanism.desc": "Ensambla un Mecanismo de Precisión.", + "advancement.create.mechanical_arm": "¡Manos Ocupadas!", + "advancement.create.mechanical_arm.desc": "Construye un brazo mecánico, selecciona entradas y salidas, colócalo y dale poder; entonces, observa como hace todo el trabajo por tí.", + "advancement.create.musical_arm": "¡Póneme mi tema principal!", + "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", + "advancement.create.arm_many_targets": "Organizatrón 3000", + "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", + "advancement.create.arm_blaze_burner": "Combustrón 3001", + "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", + "advancement.create.fist_bump": "¡Dame el puño, hermano!", + "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", + "advancement.create.crushing_wheel": "Un par de Gigantes", + "advancement.create.crushing_wheel.desc": "Crea ruedas trituradoras para descomponer los materiales de manera más efectiva.", + "advancement.create.blaze_cake": "Rush de Azúcar", + "advancement.create.blaze_cake.desc": "Preparale a tu Quemador Blaze un pastel especial.", + "advancement.create.chromatic_compound": "Minerales Misteriosos", + "advancement.create.chromatic_compound.desc": "Crea una barra de Compuesto Cromático.", + "advancement.create.shadow_steel": "Retorno Vacío", + "advancement.create.shadow_steel.desc": "Crea Acero Sombrío, una barra de nada.", + "advancement.create.refined_radiance": "Brillante e Inspirador", + "advancement.create.refined_radiance.desc": "Crea Radiancia Refinada, una poderosa sustancia cromática.", + "advancement.create.chromatic_age": "La Edad Cromática", + "advancement.create.chromatic_age.desc": "Crea bloques de cubierta de la luz y de la oscuridad.", + "advancement.create.wand_of_symmetry": "Espejos Radiantes", + "advancement.create.wand_of_symmetry.desc": "Crea la Vara de Simetría.", + "advancement.create.extendo_grip": "¡Boioioing!", + "advancement.create.extendo_grip.desc": "Sostén un Agarrextensor.", + "advancement.create.potato_cannon": "¡Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.", + "advancement.create.dual_extendo_grip": "Boing: El último boioioing.", + "advancement.create.dual_extendo_grip.desc": "Sostén dos Agarrextensores para un alcance inhumano.", + "advancement.create.eob": "Fin de la Beta", + "advancement.create.eob.desc": "Espera encontrar más contenido aquí en el futuro. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Create Palettes", + + "death.attack.create.crush": "%1$s fué procesado por Ruedas Trituradoras", + "death.attack.create.crush.player": "%1$sfue tirado dentro de Ruedas Trituradoras por %2$s", + "death.attack.create.fan_fire": "%1$s se ahumó con un Ventilador", + "death.attack.create.fan_fire.player": "%1$s fué tirado dentro de un ahumador por %2$s", + "death.attack.create.fan_lava": "%1$s fué incinerado por un Ventilador", + "death.attack.create.fan_lava.player": "%1$s fué tirado dentro de una derretidora por %2$s", + "death.attack.create.mechanical_drill": "%1$s fué empalado por un Taladro Mecánico", + "death.attack.create.mechanical_drill.player": "%1$s fué tirado en frente de un Taladro por %2$s", + "death.attack.create.mechanical_saw": "%1$s fué cortado por la mitad por Sierra Mecánica", + "death.attack.create.mechanical_saw.player": "%1$s fué lanzado dentro de una Sierra por %2$s", + "death.attack.create.potato_cannon": "%1$s fue disparado por el Cañón de Papas de %2$s", + "death.attack.create.potato_cannon.item": "%1$s fué disparado por %2$s usando %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s fué reventado por el reloj cu-cú manipulado", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s fué reventado por el reloj cu-cú manipulado", + + "create.block.deployer.damage_source_name": "Un Desplegador pillo", + "create.block.cart_assembler.invalid": "Coloca tu ensamblador de Vagonetas en un bloque de rieles", + + "create.menu.return": "Volver al Menú", + "create.menu.configure": "Configurar...", + "create.menu.ponder_index": "Reflexionar el índice", + "create.menu.only_ingame": "Disponible en el menú de pausa", + "create.menu.project_page": "Página del Proyecto", + "create.menu.report_bugs": "Reportar Problemas", + "create.menu.support": "Apóyanos", + + "create.recipe.crushing": "Triturando", + "create.recipe.milling": "Moliendo", + "create.recipe.fan_washing": "Lavando", + "create.recipe.fan_washing.fan": "Ventilador detrás de una Corriente de Agua", + "create.recipe.fan_smoking": "Ahumado", + "create.recipe.fan_smoking.fan": "Ventilador tras Fuego", + "create.recipe.fan_blasting": "Fundición", + "create.recipe.fan_blasting.fan": "Ventilador tras Lava", + "create.recipe.pressing": "Prensando", + "create.recipe.mixing": "Mezclando", + "create.recipe.deploying": "Desplegando", + "create.recipe.automatic_shapeless": "Crafteo Automatizada sin Forma", + "create.recipe.automatic_brewing": "Preparación Automática", + "create.recipe.packing": "Compactando", + "create.recipe.automatic_packing": "Campactación Automática", + "create.recipe.sawing": "Aserrando", + "create.recipe.mechanical_crafting": "Crafteo Mecánico", + "create.recipe.automatic_shaped": "Crafteo Automático con Forma", + "create.recipe.block_cutting": "Cartando Bloques", + "create.recipe.wood_cutting": "Cortando Madera", + "create.recipe.sandpaper_polishing": "Pulido de Papel de Arena", + "create.recipe.mystery_conversion": "Conversión Misteriosa", + "create.recipe.spout_filling": "Llenado por Surtidor", + "create.recipe.draining": "Drenaje de Objeto", + "create.recipe.sequenced_assembly": "Ensamblaje Secuenciado", + "create.recipe.assembly.next": "Siguiente: %1$s", + "create.recipe.assembly.step": "Paso %1$s:", + "create.recipe.assembly.progress": "Progreso: %1$s/%2$s", + "create.recipe.assembly.pressing": "Procesar en prensa", + "create.recipe.assembly.spout_filling_fluid": "Surte %1$s", + "create.recipe.assembly.deploying_item": "Despliega %1$s", + "create.recipe.assembly.cutting": "Corta con Sierra", + "create.recipe.assembly.repeat": "Repetir Secuencia %1$s Veces", + "create.recipe.assembly.junk": "Chatarra Aleatoria", + "create.recipe.processing.chance": "%1$s%% Probabilidad", + "create.recipe.deploying.not_consumed": "No Consumido", + "create.recipe.heat_requirement.none": "No requiere calor", + "create.recipe.heat_requirement.heated": "Calentado", + "create.recipe.heat_requirement.superheated": "Super-Calentado", + + "create.generic.range": "Rango", + "create.generic.radius": "Radio", + "create.generic.width": "Ancho", + "create.generic.height": "Altura", + "create.generic.length": "Largo", + "create.generic.speed": "Velocidad", + "create.generic.delay": "Retraso", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Segundos", + "create.generic.unit.minutes": "Minutos", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "us", + "create.generic.unit.degrees": "°", + "create.generic.unit.millibuckets": "%1$smB", + "create.generic.clockwise": "En sentido del Reloj", + "create.generic.counter_clockwise": "Al contrario del Reloj", + + "create.action.scroll": "Rueda", + "create.action.confirm": "Confirmar", + "create.action.abort": "Abortar", + "create.action.saveToFile": "Guardar", + "create.action.discard": "Descartar", + + "create.keyinfo.toolmenu": "Fijarse en el Overlay del esquema", + "create.keyinfo.toolbelt": "Acceder a cajas de Herramientas cercanas", + "create.keyinfo.scrollup": "Simular Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "Simular Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Elije una opción:", + "create.gui.scrollInput.scrollToModify": "Rueda para modificar", + "create.gui.scrollInput.scrollToAdjustAmount": "Rueda para ajustar la cantidad", + "create.gui.scrollInput.scrollToSelect": "Rueda para selecionar", + "create.gui.scrollInput.shiftScrollsFaster": "Shiftea para rodar mas rápido", + "create.gui.toolmenu.focusKey": "Mantén [%1$s] para Fijarte", + "create.gui.toolmenu.cycle": "[SCROLL] para ciclar", + + "create.toolbox.unequip": "Desequipar: %1$s", + "create.toolbox.outOfRange": "Caja de Herramientas del objeto fuera de rango", + "create.toolbox.detach": "Detener búsqueda y mantener el objeto", + "create.toolbox.depositAll": "Devolver objetos a cajas de herramientas cercanas", + "create.toolbox.depositBox": "Devolver objetos a la caja de herramientas", + + "create.gui.symmetryWand.mirrorType": "Espejo", + "create.gui.symmetryWand.orientation": "Orientación", + + "create.symmetry.mirror.plane": "Reflejar una vez", + "create.symmetry.mirror.doublePlane": "Rectangular", + "create.symmetry.mirror.triplePlane": "Octagonal", + + "create.orientation.orthogonal": "Ortogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "En el eje Z", + "create.orientation.alongX": "en el eje X", + + "create.gui.terrainzapper.title": "Blockzapper de mano", + "create.gui.terrainzapper.searchDiagonal": "Seguir Diagonales", + "create.gui.terrainzapper.searchFuzzy": "Ignorar bordes de los materiales", + "create.gui.terrainzapper.patternSection": "Patrón", + "create.gui.terrainzapper.pattern.solid": "Solido", + "create.gui.terrainzapper.pattern.checkered": "Tablero de damas", + "create.gui.terrainzapper.pattern.inversecheckered": "Tablero de damas invertido", + "create.gui.terrainzapper.pattern.chance25": "Tiro de 25%", + "create.gui.terrainzapper.pattern.chance50": "Tiro de 50%", + "create.gui.terrainzapper.pattern.chance75": "Tiro de 75%", + "create.gui.terrainzapper.placement": "Colocación", + "create.gui.terrainzapper.placement.merged": "Fusionados", + "create.gui.terrainzapper.placement.attached": "Adjuntos", + "create.gui.terrainzapper.placement.inserted": "Insertados", + "create.gui.terrainzapper.brush": "Brocha", + "create.gui.terrainzapper.brush.cuboid": "Cuboide", + "create.gui.terrainzapper.brush.sphere": "Esfera", + "create.gui.terrainzapper.brush.cylinder": "Cilindro", + "create.gui.terrainzapper.brush.surface": "Superficie", + "create.gui.terrainzapper.brush.cluster": "Grupo", + "create.gui.terrainzapper.tool": "Herramienta", + "create.gui.terrainzapper.tool.fill": "Llenar", + "create.gui.terrainzapper.tool.place": "Colocar", + "create.gui.terrainzapper.tool.replace": "Reemplazar", + "create.gui.terrainzapper.tool.clear": "Borrar", + "create.gui.terrainzapper.tool.overlay": "Overlay", + "create.gui.terrainzapper.tool.flatten": "Aplanar", + + "create.terrainzapper.shiftRightClickToSet": "Shift-Click Derecho para Seleccionar una Forma", + "create.terrainzapper.usingBlock": "Usando: %1$s", + "create.terrainzapper.leftClickToSet": "Click Izquierdo a un Bloque para elegir Material", + + "create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener mas de dos uniones cada una", + "create.minecart_coupling.unloaded": "Partes de tu tren parecen estar en chunks no cargados", + "create.minecart_coupling.no_loops": "Las uniones no puede formar un ciclo", + "create.minecart_coupling.removed": "Removidas todas las uniones de la vagoneta", + "create.minecart_coupling.too_far": "Las vagonetas estan muy separadas entre sí", + + "create.contraptions.movement_mode": "Modo de Movimiento", + "create.contraptions.movement_mode.move_place": "Siempre colocar cuando se Detiene", + "create.contraptions.movement_mode.move_place_returned": "Colocar solo en la Posición Inicial", + "create.contraptions.movement_mode.move_never_place": "Colocar solo cuando el anclaje se destruye", + "create.contraptions.movement_mode.rotate_place": "Colocar siempre que es detenido", + "create.contraptions.movement_mode.rotate_place_returned": "Colocar solo cerca del angulo inicial", + "create.contraptions.movement_mode.rotate_never_place": "Colocar solo cuando el anclaje es destruido", + "create.contraptions.cart_movement_mode": "Modo de Movimiento del Vagón", + "create.contraptions.cart_movement_mode.rotate": "Siempre apuntar en la dirección de movimiento", + "create.contraptions.cart_movement_mode.rotate_paused": "Pausar actores mientras rota", + "create.contraptions.cart_movement_mode.rotation_locked": "Bloquear Rotación", + "create.contraptions.windmill.rotation_direction": "Dirección de Rotación", + "create.contraptions.clockwork.clock_hands": "Manijas del Reloj", + "create.contraptions.clockwork.hour_first": "Horario Primero", + "create.contraptions.clockwork.minute_first": "Minutero Primero", + "create.contraptions.clockwork.hour_first_24": "24-horas Primero", + + "create.logistics.filter": "Filtro", + "create.logistics.recipe_filter": "Filtro de Recetas", + "create.logistics.fluid_filter": "Filtro de Fluidos", + "create.logistics.firstFrequency": "Frec. #1", + "create.logistics.secondFrequency": "Frec. #2", + "create.logistics.filter.apply": "Filtro Aplicado a %1$s.", + "create.logistics.filter.apply_click_again": "Filtro Aplicado a %1$s, haz click de nuevo para copiar la cantidad.", + "create.logistics.filter.apply_count": "Recuento de extracción aplicado al filtro.", + + "create.gui.goggles.generator_stats": "Estadísticas de Generación:", + "create.gui.goggles.kinetic_stats": "Estadísticas Kineticas:", + "create.gui.goggles.at_current_speed": "a la velocidad actual", + "create.gui.goggles.pole_length": "Largo del poste:", + "create.gui.goggles.fluid_container": "Informacion del Contenedor de Fluidos:", + "create.gui.goggles.fluid_container.capacity": "Capacidad: ", + "create.gui.assembly.exception": "Esta contrapción no se pudo ensamblar:", + "create.gui.assembly.exception.unmovableBlock": "Bloque inamovible (%4$s) en [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "El bloque en [%1$s,%2$s,%3$s] no estaba en un chunk cargado", + "create.gui.assembly.exception.structureTooLarge": "Hay muchos bloques incluidos en la contrapción.\nEl máximo configurado es: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Hay muchos postes de extensión en este pistón.\nEl máximo configurado es: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Al pistón le faltan algunos postes de extensión", + "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques de vela: %1$s\nUn mínimo de %2$s son requeridos", + "create.gui.gauge.info_header": "Información del medidor:", + "create.gui.speedometer.title": "Velocidad de Rotación", + "create.gui.stressometer.title": "Estrés de la Red", + "create.gui.stressometer.capacity": "Capacidad Restante", + "create.gui.stressometer.overstressed": "Sobreestresado", + "create.gui.stressometer.no_rotation": "Sin Rotación", + "create.gui.contraptions.not_fast_enough": "Parece que este %1$s _no_ está rotando con _suficiente_ _velocidad_.", + "create.gui.contraptions.network_overstressed": "Parece que esta contrapción está _sobreestresada_. Añade más fuentes o _reduce_ la _velocidad_ de los componentes con gran _impacto_ en el _estrés_.", + "create.gui.adjustable_crate.title": "Cajón Ajustable", + "create.gui.adjustable_crate.storageSpace": "Espacio de Almacenamiento:", + "create.gui.stockpile_switch.title": "Interruptor de Reservas", + "create.gui.stockpile_switch.invert_signal": "Invertir Señal", + "create.gui.stockpile_switch.move_to_lower_at": "Mover a la línea inferior en %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Mover a la línea superior en %1$s%%", + "create.gui.sequenced_gearshift.title": "Caja de Cambios Secuenciada", + "create.gui.sequenced_gearshift.instruction": "Instrucción", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Girar en Ángulo", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Girar", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Ángulo", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Girar para mover Pistón/Polea/Grúa", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistón", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distancia", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Retraso Cronometrado", + "create.gui.sequenced_gearshift.instruction.delay": "Retraso", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Duración", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Fin", + "create.gui.sequenced_gearshift.instruction.end": "Fin", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Esperar nuevo pulso de redstone", + "create.gui.sequenced_gearshift.instruction.await": "Esperar", + "create.gui.sequenced_gearshift.speed": "Velocidad, Dirección", + "create.gui.sequenced_gearshift.speed.forward": "Velocidad ingresada, Adelante", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doble Velocidad, Adelante", + "create.gui.sequenced_gearshift.speed.back": "Velocidad ingresada, Revertido", + "create.gui.sequenced_gearshift.speed.back_fast": "Doble Velocidad, Revertido", + + "create.schematicAndQuill.dimensions": "Tamaño del esquema: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Primera posición establecida.", + "create.schematicAndQuill.secondPos": "Segunda posición establecida.", + "create.schematicAndQuill.noTarget": "Mantén [Ctrl] para Seleccionar Bloques Aéreos.", + "create.schematicAndQuill.abort": "Selección Removida.", + "create.schematicAndQuill.title": "Nombre del Esquema:", + "create.schematicAndQuill.convert": "Guardar y cargar inmediatamente", + "create.schematicAndQuill.fallbackName": "Mi Esquema", + "create.schematicAndQuill.saved": "Guardado como %1$s", + + "create.schematic.invalid": "[!] Objeto Invalido - Usa la Mesa de Esquemas", + "create.schematic.position": "Posición", + "create.schematic.rotation": "Rotación", + "create.schematic.rotation.none": "Ninguno", + "create.schematic.rotation.cw90": "Según las agujas del reloj en 90", + "create.schematic.rotation.cw180": "Según las agujas del reloj en 180", + "create.schematic.rotation.cw270": "Según las agujas del reloj en 270", + "create.schematic.mirror": "Reflejar", + "create.schematic.mirror.none": "Ninguno", + "create.schematic.mirror.frontBack": "Frente-Detrás", + "create.schematic.mirror.leftRight": "Izquierda-Derecha", + "create.schematic.tool.deploy": "Posición", + "create.schematic.tool.move": "Mover XZ", + "create.schematic.tool.movey": "Mover Y", + "create.schematic.tool.rotate": "Rotar", + "create.schematic.tool.print": "Imprimir", + "create.schematic.tool.flip": "Reflejar", + "create.schematic.tool.deploy.description.0": "Mueve la estructura a una ubicación.", + "create.schematic.tool.deploy.description.1": "Haz clic derecho en el suelo para colocar.", + "create.schematic.tool.deploy.description.2": "Mantén [Ctrl] para seleccionar a una distancia fija.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Rueda para seleccionar distancia.", + "create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.", + "create.schematic.tool.move.description.1": "Apunta al esquema y [CTRL]-Rueda para empujarlo.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente.", + "create.schematic.tool.movey.description.1": "[CTRL]-Rueda para moverlo arriba y abajo.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Rota el esquema sobre su centro.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Rueda para rotarlo en 90 Grados.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Instantáneamente construye la estructura en el mundo.", + "create.schematic.tool.print.description.1": "[Click-Derecho] para confirmar la ubicación en la ubicación actual.", + "create.schematic.tool.print.description.2": "Solo en Creativo.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Gira el esquema a lo largo de la cara que seleccionaste.", + "create.schematic.tool.flip.description.1": "Apunta al esquema y [CTRL]-Rueda para voltearlo.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Sincronizando...", + "create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.", + "create.schematics.maxAllowedSize": "El tamaño máximo de archivo de esquema permitido es:", + + "create.gui.schematicTable.refresh": "Refrescar Archivos", + "create.gui.schematicTable.open_folder": "Abrir Carpeta", + "create.gui.schematicTable.title": "Mesa de Esquemas", + "create.gui.schematicTable.availableSchematics": "Esquemas Disponibles", + "create.gui.schematicTable.noSchematics": "Sin Esquemas Guardados", + "create.gui.schematicTable.uploading": "Subiendo...", + "create.gui.schematicTable.finished": "¡Subida Finalizada!", + "create.gui.schematicannon.title": "Esquemacañón", + "create.gui.schematicannon.listPrinter": "Impresora de Lista de Objetos", + "create.gui.schematicannon.gunpowderLevel": "Polvora al %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Tiros restantes: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Con respaldo: %1$s", + "create.gui.schematicannon.optionEnabled": "Actualmente Activado", + "create.gui.schematicannon.optionDisabled": "Actualmente Desactivado", + "create.gui.schematicannon.showOptions": "Mostrar Configuraciones de la Impresora", + "create.gui.schematicannon.option.dontReplaceSolid": "No reemplazar Bloques Sólidos", + "create.gui.schematicannon.option.replaceWithSolid": "Reemplazar Sólido con Sólido", + "create.gui.schematicannon.option.replaceWithAny": "Reemplazar Sólido con cualquier cosa", + "create.gui.schematicannon.option.replaceWithEmpty": "Reemplazar Sólido con Vacío", + "create.gui.schematicannon.option.skipMissing": "Saltarse objetos faltantes", + "create.gui.schematicannon.option.skipTileEntities": "Proteject objetos con información", + "create.gui.schematicannon.slot.gunpowder": "Añade pólvora para alimentar el cañon", + "create.gui.schematicannon.slot.listPrinter": "Coloca libros aquí para imprimir una lista de verificación para tu esquema", + "create.gui.schematicannon.slot.schematic": "Pon tu Esquema aquí. Asegurate de haberlo desplegado en la ubicación deseada.", + "create.gui.schematicannon.option.skipMissing.description": "Si el cañón no puede encontrar un Bloque requerido para colocarlo, saltará a la siguiente Ubicación.", + "create.gui.schematicannon.option.skipTileEntities.description": "El cañón evitará reemplazar bloques con almacenamiento de datos como cofres o máquinas.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "El cañón nunca reemplazará ningún bloque sólido en su área de trabajo, solo no-sólidos y aire.", + "create.gui.schematicannon.option.replaceWithSolid.description": "El cañón solo reemplazará los bloques sólidos en su área de trabajo si el esquema contiene un bloque sólido en esa ubicación.", + "create.gui.schematicannon.option.replaceWithAny.description": "El cañón reemplazará los bloques sólidos en su área de trabajo si el esquema contiene algún bloque de cualquier tipo en la ubicación.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "El cañón reemplazará todos los bloques en su área de trabajo, incluidos los reemplazados por aire.", + + "create.schematicannon.status.idle": "Inactivo", + "create.schematicannon.status.ready": "Listo", + "create.schematicannon.status.running": "En Funcionamiento", + "create.schematicannon.status.finished": "Finalizado", + "create.schematicannon.status.paused": "Pausado", + "create.schematicannon.status.stopped": "Detenido", + "create.schematicannon.status.noGunpowder": "Sin Pólvora", + "create.schematicannon.status.targetNotLoaded": "Objetivo no cargado", + "create.schematicannon.status.targetOutsideRange": "Objetivo muy lejano", + "create.schematicannon.status.searching": "Buscando", + "create.schematicannon.status.skipping": "Saltando", + "create.schematicannon.status.missingBlock": "Objeto Faltante:", + "create.schematicannon.status.placing": "Colocando", + "create.schematicannon.status.clearing": "Limpiando Bloques", + "create.schematicannon.status.schematicInvalid": "Esquema Inválido", + "create.schematicannon.status.schematicNotPlaced": "Esquema no Posicionado", + "create.schematicannon.status.schematicExpired": "Archivo de Esquema Expirado", + + "create.materialChecklist": "Lista de verificación de materiales", + "create.materialChecklist.blocksNotLoaded": "* Descargo de responsabilidad *\n\nLa lista de materiales puede ser inexacta debido a chunks que no se cargan.", + + "create.gui.filter.deny_list": "Lista Negra", + "create.gui.filter.deny_list.description": "Los objetos pasan solo si NO coinciden con ninguno de los anteriores. Una lista negra vacía acepta todo.", + "create.gui.filter.allow_list": "Lista Blanca", + "create.gui.filter.allow_list.description": "Los objetos pasan solo si coinciden con alguno de los anteriores. Una lista blanca vacía rechaza todo.", + "create.gui.filter.respect_data": "Respetar Datos", + "create.gui.filter.respect_data.description": "Los objetos solo coinciden si su durabilidad, encantamientos y otros atributos también coinciden.", + "create.gui.filter.ignore_data": "Ignorar Datos", + "create.gui.filter.ignore_data.description": "Los objetos coinciden sin importar sus datos.", + + "create.item_attributes.placeable": "es colocable", + "create.item_attributes.placeable.inverted": "no es colocable", + "create.item_attributes.consumable": "puede ser consumido", + "create.item_attributes.consumable.inverted": "no puede ser consumido", + "create.item_attributes.fluid_container": "puede guardar fluidos", + "create.item_attributes.fluid_container.inverted": "no puede guardar fluidos", + "create.item_attributes.enchanted": "está encantado", + "create.item_attributes.enchanted.inverted": "está desencantado", + "create.item_attributes.max_enchanted": "está encantado al máximo", + "create.item_attributes.max_enchanted.inverted": "no está encantado al máximo", + "create.item_attributes.renamed": "tiene un nombre customizado", + "create.item_attributes.renamed.inverted": "no tiene un nombre customizado", + "create.item_attributes.damaged": "está dañado", + "create.item_attributes.damaged.inverted": "no está dañado", + "create.item_attributes.badly_damaged": "está muy dañado", + "create.item_attributes.badly_damaged.inverted": "no está muy dañado", + "create.item_attributes.not_stackable": "no se puede juntar en stacks", + "create.item_attributes.not_stackable.inverted": "se puede juntar en stacks", + "create.item_attributes.equipable": "puede ser equipado", + "create.item_attributes.equipable.inverted": "no puede ser equipado", + "create.item_attributes.furnace_fuel": "es combustible", + "create.item_attributes.furnace_fuel.inverted": "no es cumbustible", + "create.item_attributes.washable": "puede Lavarse", + "create.item_attributes.washable.inverted": "no puede Lavarse", + "create.item_attributes.crushable": "puede ser Triturado", + "create.item_attributes.crushable.inverted": "no puede ser Triturado", + "create.item_attributes.smeltable": "puede ser Derretido", + "create.item_attributes.smeltable.inverted": "no puede ser Derretido", + "create.item_attributes.smokable": "puede ser Ahumado", + "create.item_attributes.smokable.inverted": "no puede ser Ahumado", + "create.item_attributes.blastable": "puede ser cocinado en un Alto Horno", + "create.item_attributes.blastable.inverted": "no puede ser cocinado en un Alto Horno", + "create.item_attributes.shulker_level": "es un shulker %1$s", + "create.item_attributes.shulker_level.inverted": "no es un shulker %1$s", + "create.item_attributes.shulker_level.full": "lleno", + "create.item_attributes.shulker_level.empty": "vacío", + "create.item_attributes.shulker_level.partial": "parcialmente lleno", + "create.item_attributes.in_tag": "tiene el tag %1$s", + "create.item_attributes.in_tag.inverted": "no tiene el tag %1$s", + "create.item_attributes.in_item_group": "está en el grupo '%1$s'", + "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", + "create.item_attributes.added_by": "fué añadido por %1$s", + "create.item_attributes.added_by.inverted": "no fué añadido por %1$s", + "create.item_attributes.has_enchant": "está encantado con %1$s", + "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", + "create.item_attributes.color": "está tintado %1$s", + "create.item_attributes.color.inverted": "no está tintado %1$s", + "create.item_attributes.has_fluid": "contiene %1$s", + "create.item_attributes.has_fluid.inverted": "no contiene %1$s", + "create.item_attributes.has_name": "tiene el nombre custom %1$s", + "create.item_attributes.has_name.inverted": "no tiene el nombre custom %1$s", + "create.item_attributes.book_author": "fue escrito por %1$s", + "create.item_attributes.book_author.inverted": "no fue escrito por %1$s", + "create.item_attributes.book_copy_original": "wes un original", + "create.item_attributes.book_copy_original.inverted": "no es un original", + "create.item_attributes.book_copy_first": "es una copia de primera generación", + "create.item_attributes.book_copy_first.inverted": "no es una copia de primera generación", + "create.item_attributes.book_copy_second": "es una copia de segunda generación", + "create.item_attributes.book_copy_second.inverted": "no es una copia de segunda generación", + "create.item_attributes.book_copy_tattered": "es un desastre", + "create.item_attributes.book_copy_tattered.inverted": "no es un desastre", + "create.item_attributes.astralsorcery_amulet": "mejora %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "no mejora %1$s", + "create.item_attributes.astralsorcery_constellation": "está en sintonía con la constelación %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con la constelación %1$s", + "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "no tiene el atributo de cristal %1$s", + "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo de mejora %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo de mejora %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Sin atributos seleccionados", + "create.gui.attribute_filter.selected_attributes": "Atributos seleccionados:", + "create.gui.attribute_filter.add_attribute": "Añadir atributo a la Lista", + "create.gui.attribute_filter.add_inverted_attribute": "Añadir atributo inverso a la Lista", + "create.gui.attribute_filter.allow_list_disjunctive": "Lista Permitida (Cualquiera)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Los objetos pasan si cumplen con uno de los atributos de la lista.", + "create.gui.attribute_filter.allow_list_conjunctive": "Lista Permitida (Todos)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Los objetos pasas si cumplen con TODOS los atributos de la lista.", + "create.gui.attribute_filter.deny_list": "Lista Denegada", + "create.gui.attribute_filter.deny_list.description": "Los objetos pasan si NO tienen ninguno de los atributos de la lista.", + "create.gui.attribute_filter.add_reference_item": "Añadir Objeto de Referencia", + + "create.tooltip.holdForDescription": "Mantén [%1$s] para Resumen", + "create.tooltip.holdForControls": "Mantén [%1$s] para Controles", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Requqrimiento de Velocidad: %1$s", + "create.tooltip.speedRequirement.none": "Ninguno", + "create.tooltip.speedRequirement.medium": "Moderado", + "create.tooltip.speedRequirement.high": "Rápidp", + "create.tooltip.stressImpact": "Impacto en el Estrés Cinético: %1$s", + "create.tooltip.stressImpact.low": "Bajo", + "create.tooltip.stressImpact.medium": "Moderado", + "create.tooltip.stressImpact.high": "Alto", + "create.tooltip.stressImpact.overstressed": "Sobreestresado", + "create.tooltip.capacityProvided": "Capacidad de Estrés Cinético: %1$s", + "create.tooltip.capacityProvided.low": "Pequeña", + "create.tooltip.capacityProvided.medium": "Mediana", + "create.tooltip.capacityProvided.high": "Grande", + "create.tooltip.generationSpeed": "Genera a %1$s %2$s", + "create.tooltip.analogStrength": "Fuerza Análoga: %1$s/15", + + "create.mechanical_arm.extract_from": "Toma objetos desde %1$s", + "create.mechanical_arm.deposit_to": "Deposita objetos en %1$s", + "create.mechanical_arm.summary": "Brazo Mecánico tiene %1$s entreda(s) y %2$s salida(s).", + "create.mechanical_arm.points_outside_range": "%1$s punto(s) de interacción seleccionados removidos debido a limitaciones de rango.", + + "create.weighted_ejector.target_set": "Objetivo Seleccionado", + "create.weighted_ejector.target_not_valid": "Eyectando a bloque adyacente (El objetivo no era Válido)", + "create.weighted_ejector.no_target": "Eyectando a bloque adyacente (Sin objetivo Seleccionado)", + "create.weighted_ejector.targeting": "Eyectando a [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Tamaño del stack eyectado", + + "create.logistics.when_multiple_outputs_available": "Cuando hay varias salidas disponibles", + + "create.mechanical_arm.selection_mode.round_robin": "Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin Forzado", + "create.mechanical_arm.selection_mode.prefer_first": "Preferir Primer Objetivo", + + "create.tunnel.selection_mode.split": "Separar", + "create.tunnel.selection_mode.forced_split": "Separar Forzado", + "create.tunnel.selection_mode.round_robin": "Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "Round Robin Forzado", + "create.tunnel.selection_mode.prefer_nearest": "Preferir el Más Cercano", + "create.tunnel.selection_mode.randomize": "Aleatorizar", + "create.tunnel.selection_mode.synchronize": "Sincronizar Salidas", + + "create.tooltip.chute.header": "Información del Tolvogán", + "create.tooltip.chute.items_move_down": "Objetos van hacia Abajo", + "create.tooltip.chute.items_move_up": "Objetos van hacia Arriba", + "create.tooltip.chute.no_fans_attached": "Sin Ventiladores Adjuntos", + "create.tooltip.chute.fans_push_up": "Ventiladores empujando desde Abajo", + "create.tooltip.chute.fans_push_down": "Ventiladores empujando desde Arriba", + "create.tooltip.chute.fans_pull_up": "Ventiladores tirando desde arriba", + "create.tooltip.chute.fans_pull_down": "Ventiladores tirando desde abajo", + "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:", + "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar", + + "create.linked_controller.bind_mode": "Modo de vinculación activado", + "create.linked_controller.press_keybind": "Presiona %1$s, %2$s, %3$s, %4$s, %5$s o %6$s, para vincular esta frecuencia a la tecla respectiva", + "create.linked_controller.key_bound": "Frequencia vinculada a %1$s", + "create.linked_controller.frequency_slot_1": "Tecla vinculada: %1$s, Frec. #1", + "create.linked_controller.frequency_slot_2": "Tecla vinculada: %1$s, Frec. #2", + + "create.crafting_blueprint.crafting_slot": "Ranura de Ingredientes", + "create.crafting_blueprint.filter_items_viable": "Los Objetos de Filtro Avanzados son viables", + "create.crafting_blueprint.display_slot": "Ranura de Visualización", + "create.crafting_blueprint.inferred": "Inferido de la Receta", + "create.crafting_blueprint.manually_assigned": "Manualmente Asignado", + "create.crafting_blueprint.secondary_display_slot": "Ranura de Visualización Secundaria", + "create.crafting_blueprint.optional": "Opcional", + + "create.potato_cannon.ammo.attack_damage": "%1$s Daño de Ataque", + "create.potato_cannon.ammo.reload_ticks": "%1$s Ticks de Recarga", + "create.potato_cannon.ammo.knockback": "%1$s Retroceso", + + "create.hint.hose_pulley.title": "Suministro sin Fin", + "create.hint.hose_pulley": "El Fluido Objetivo se considera Infinito.", + "create.hint.mechanical_arm_no_targets.title": "Sin Objetivos", + "create.hint.mechanical_arm_no_targets": "Parece que a este _Brazo_ _Mecánico_ no se le asignó ningun _objetivo._ Selecciona cintas, depósitos, ingresos y otros bloques haciendo _click-derecho_ sobre ellos mientras _sostienes_ el _Brazo_ _Mecánico_ en tu _mano_.", + "create.hint.empty_bearing.title": "Actualizar Rodamiento", + "create.hint.empty_bearing": "Haz _Click-Derecho_ en el rodamiento con tu _mano_ _vacía_ para _unir_ la estructura que acabas de construir frente a él.", + "create.hint.full_deployer.title": "Desbordamiento de objetos del Desplegador", + "create.hint.full_deployer": "Parece que este _Desplegador_ contiene _objetos_ de _exceso_ que requieren ser _extraídos._ Usa una _tolva,_ _tolvogán_ u otros parecidos para librarlo del sobreflujo.", + + "create.gui.config.overlay1": "Hola :)", + "create.gui.config.overlay2": "Este es un overlay de ejemplo", + "create.gui.config.overlay3": "Haz clic o arrastra con el mouse", + "create.gui.config.overlay4": "para mover esta previsualización", + "create.gui.config.overlay5": "Presiona ESC para salir de esta pantalla", + "create.gui.config.overlay6": "y guardar la nueva posición", + "create.gui.config.overlay7": "Ejecuta /create overlay reset", + "create.gui.config.overlay8": "para restablecer a la posición predeterminada", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Los ticks del servidor están actualmente siendo ralentizados por %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Los ticks del servidor se ralentizan por %s ms ahora >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Los ticks del servidor han vuelto a la velocidad normal :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps stop para devolver a los ticks del servidor a la velocidad normal", + "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps start para ralentizar artificialmente los ticks del servidor", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.contraption.minecart_contraption_too_big": "Esta contrapción de vagoneta parece demasiado grande para recogerla", + "create.contraption.minecart_contraption_illegal_pickup": "Una fuerza mística está vinculando esta contrapción de vagoneta al mundo", + + + "_": "->------------------------] Subtitles [------------------------<-", + + "create.subtitle.contraption_disassemble": "Contrapción se detiene", + "create.subtitle.peculiar_bell_use": "Campana Peculiar tañe", + "create.subtitle.mixing": "Sonidos de mezcla", + "create.subtitle.mechanical_press_activation_belt": "Prensa Mecánica hace bonk", + "create.subtitle.fwoomp": "Lanza Patatas hace fwoom", + "create.subtitle.worldshaper_place": "El Forma Mundos zapea", + "create.subtitle.crushing_1": "Sonidos de Trituración", + "create.subtitle.depot_slide": "Objeto se desliza", + "create.subtitle.saw_activate_stone": "Sierra Mecánica se activa", + "create.subtitle.blaze_munch": "Quemador Blaze mastica", + "create.subtitle.funnel_flap": "Ingreso aletea", + "create.subtitle.schematicannon_finish": "Esquemacañón campanea", + "create.subtitle.haunted_bell_use": "Campana Embrujada tañe", + "create.subtitle.scroll_value": "Sonidos de Clic", + "create.subtitle.crafter_craft": "Crafteador craftea", + "create.subtitle.controller_put": "Controlador golpetea", + "create.subtitle.cranking": "Manivela gira", + "create.subtitle.wrench_remove": "Componente se rompe", + "create.subtitle.cogs": "Engranajes suenan", + "create.subtitle.slime_added": "Slime chapotea", + "create.subtitle.wrench_rotate": "Llave Inglesa usada", + "create.subtitle.potato_hit": "Impactos vegetales", + "create.subtitle.saw_activate_wood": "Sierra Mecánica se activa", + "create.subtitle.haunted_bell_convert": "Campana Embrujada despierta", + "create.subtitle.deployer_polish": "Desplegador aplica pulido", + "create.subtitle.deny": "Boop denegante", + "create.subtitle.controller_click": "Controlador cliquea", + "create.subtitle.schematicannon_launch_block": "Esquemacañón dispara", + "create.subtitle.copper_armor_equip": "Equipo de Buceo tintinea", + "create.subtitle.controller_take": "Atril se Vacía", + "create.subtitle.mechanical_press_activation": "Prensa Mecánica aplasta", + "create.subtitle.contraption_assemble": "Contración se mueve", + "create.subtitle.crafter_click": "Crafteador cliquea", + "create.subtitle.depot_plop": "Objeto aterriza", + "create.subtitle.confirm": "Ding afirmativo", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "SAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA", + "block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _Ejes, Engranajes_ y _Tuberías_ con un acogedor refuerzo de madera.", + + "block.create.metal_bracket.tooltip": "SOPORTE DE METAL", + "block.create.metal_bracket.tooltip.summary": "_Decora_ tus _Ejes, Engranajes_ y _Tuberías_ con un robusto refuerzo industrial.", + + "block.create.seat.tooltip": "ASIENTO", + "block.create.seat.tooltip.summary": "¡Sientate y Disfruta del viaje! Anclará a un jugador en una _contrapción_ que se mueve. ¡Genial como mueve estático también! Viene en una variedad de colores.", + "block.create.seat.tooltip.condition1": "Click derecho en el Asiento", + "block.create.seat.tooltip.behaviour1": "Sienta al Jugador en el _Asiento_. Pulsa Shift-Izquierdo para dejar el _Asiento_.", + + "item.create.blaze_cake.tooltip": "PASTEL BLAZE", + "item.create.blaze_cake.tooltip.summary": "Un delicioso manjar para tus _Quemadores Blaze_. ¡Los pone en llamas!", + + "item.create.wand_of_symmetry.tooltip": "VARA DE SIMETRÍA", + "item.create.wand_of_symmetry.tooltip.summary": "Refleja perfectamente la ubicación de los bloques en los planos configurados.", + "item.create.wand_of_symmetry.tooltip.condition1": "En la Barra Rápida", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Se mantiene Activo", + "item.create.wand_of_symmetry.tooltip.control1": "Click-Derecho en el Suelo", + "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _Mueve_ el Espejo", + "item.create.wand_of_symmetry.tooltip.control2": "Click-Derecho en el Aire", + "item.create.wand_of_symmetry.tooltip.action2": "_Remueve_ el Espejo activo", + "item.create.wand_of_symmetry.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz de Configuración_", + + "item.create.handheld_worldshaper.tooltip": "FORMA MUNDOS DE MANO", + "item.create.handheld_worldshaper.tooltip.summary": "Útil herramienta para crear _paisajes_ y _terrenos_.", + "item.create.handheld_worldshaper.tooltip.control1": "Click-Izquierdo en un bloque", + "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo.", + "item.create.handheld_worldshaper.tooltip.control2": "Click-Derecho en un bloque", + "item.create.handheld_worldshaper.tooltip.action2": "Aplica la _Brocha_ y _Herramienta_ seleccionadas actualmente en la ubicación designada.", + "item.create.handheld_worldshaper.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz de Configuración_", + + "item.create.tree_fertilizer.tooltip": "FERTILIZANTE ARBÓREO", + "item.create.tree_fertilizer.tooltip.summary": "Una poderosa combinación de minerales adecuada para acelerar el crecimiento de árboles comunes.", + "item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un Brote", + "item.create.tree_fertilizer.tooltip.behaviour1": "Crece árboles _sin importar_ sus _condiciones de espacio_", + + "item.create.extendo_grip.tooltip": "AGARREXTENSOR", + "item.create.extendo_grip.tooltip.summary": "¡Boioioing! _Aumenta fuertemente el alcance_ del portador. Se puede alimentar con Aire Comprimido de una _Mochila-Tanque_ de _Cobre_", + "item.create.extendo_grip.tooltip.condition1": "En la mano contraria", + "item.create.extendo_grip.tooltip.behaviour1": "Aumenta el _alcance_ de los objetos usados en la _Mano Principal_.", + "item.create.extendo_grip.tooltip.condition2": "Mientras se utiliza una Mochila-Tanque", + "item.create.extendo_grip.tooltip.behaviour2": "_No_ se usará _durabilidad_. En cambio, _Aire_ _comprimido_ es drenado del Tanque", + + "item.create.potato_cannon.tooltip": "CAÑON DE PAPAS", + "item.create.potato_cannon.tooltip.summary": "¡Fwoomp! Lanza tus verduras cosechadas en casa a tus enemigos. Se puede alimentar con Aire Comprimido de una _Mochila-Tanque_ de _Cobre_", + "item.create.potato_cannon.tooltip.condition1": "Al hacer Click-Derecho", + "item.create.potato_cannon.tooltip.behaviour1": "_Dispara_ un objeto aceptable de tu _Inventario_.", + "item.create.potato_cannon.tooltip.condition2": "Mientras se usa una Mochila-Tanque", + "item.create.potato_cannon.tooltip.behaviour2": "_No_ se usará _durabilidad_. En cambio, _Aire_ _comprimido_ es drenado del Tanque", + + "item.create.filter.tooltip": "FILTRO", + "item.create.filter.tooltip.summary": "_Controla salidas_ y _entradas_ de dispositivos logísticos con más _precisión_, comparándolos contra un _grupo de objetos_ o varios _filtros_.", + "item.create.filter.tooltip.condition1": "En la ranura del filtro", + "item.create.filter.tooltip.behaviour1": "_Controla_ el flujo de objetos dependiendo de su _configuración_.", + "item.create.filter.tooltip.condition2": "Al hacer Click-Derecho", + "item.create.filter.tooltip.behaviour2": "Abre la _interfaz de configuración_.", + + "item.create.attribute_filter.tooltip": "FILTRO DE ATRIBUTOS", + "item.create.attribute_filter.tooltip.summary": "_Controla salidas_ y _entradas_ de dispositivos logísticos con más _precisión_, comparándolos contra un _grupo de atributos de objetos_ o varias _categorías_.", + "item.create.attribute_filter.tooltip.condition1": "En la ranura de filtro", + "item.create.attribute_filter.tooltip.behaviour1": "_Controla_ el flujo de objetos dependiendo de su _configuración_.", + "item.create.attribute_filter.tooltip.condition2": "Al hacer Click-Derecho", + "item.create.attribute_filter.tooltip.behaviour2": "Abre la _interfaz de configuración_.", + + "item.create.empty_schematic.tooltip": "ESQUEMA VACÍO", + "item.create.empty_schematic.tooltip.summary": "Se utiliza como ingrediente de receta y para escribir en la _Mesa de Esquemas_.", + + "item.create.schematic.tooltip": "ESQUEMA", + "item.create.schematic.tooltip.summary": "Contiene una estructura para ser posicionada y colocada en el mundo. Coloca el holograma como desees y usa un _Esquemacañón_ para construirlo.", + "item.create.schematic.tooltip.condition1": "Al sostenerlo", + "item.create.schematic.tooltip.behaviour1": "Se puede colocar usando las herramientas en pantalla.", + "item.create.schematic.tooltip.control1": "Click-Derecho mientras te agachas", + "item.create.schematic.tooltip.action1": "Abre una _Interfaz_ para ingresar _Coordenadas_ exactas.", + + "item.create.schematic_and_quill.tooltip": "ESQUEMA Y PLUMA", + "item.create.schematic_and_quill.tooltip.summary": "Se utiliza para guardar una estructura de tu mundo en un archivo .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos esquinas opuestas haciendo Click-Derecho", + "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rueda_ en las caras para ajustar el tamaño. Click-Derecho otra vez para guardar.", + "item.create.schematic_and_quill.tooltip.control1": "Click-Derecho", + "item.create.schematic_and_quill.tooltip.action1": "Selecciona una esquina / confirmar guardado.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl Mantenido", + "item.create.schematic_and_quill.tooltip.action2": "Selecciona puntos en el _aire_. _Rueda_ para ajustar la distancia.", + "item.create.schematic_and_quill.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.schematic_and_quill.tooltip.action3": "_Reinicia_ y remueve la selección.", + + "block.create.schematicannon.tooltip": "ESQUEMACAÑÓN", + "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _Esquema_ desplegado en el Mundo. Utiliza objetos de inventarios adyacentes y _Pólvora_ como combustible.", + "block.create.schematicannon.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.schematicannon.tooltip.behaviour1": "Abre la _Interfaz_", + + "block.create.schematic_table.tooltip": "MESA DE ESQUEMAS", + "block.create.schematic_table.tooltip.summary": "Escribe esquemás guardados en un _Esquema Vacío_.", + "block.create.schematic_table.tooltip.condition1": "Al darle un Esquema Vacío", + "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de tu carpeta de esquemas.", + + "item.create.goggles.tooltip": "LENTES", + "item.create.goggles.tooltip.summary": "Un par de anteojos para aumentar tu visión con _información cinética_ util.", + "item.create.goggles.tooltip.condition1": "Al equiparlas", + "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores de colores_ correspondientes al _Nivel de Velocidad_ de un componente cinético colocado, así como el _Impacto de Estrés_ y la _Capacidad_ de los componentes individuales.", + "item.create.goggles.tooltip.condition2": "Al mirar un indicador", + "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre la _Velocidad_ o el _Estrés_ de la red a la que el medidor está conectado.", + "item.create.goggles.tooltip.condition3": "Al mirar contenedores de fluidos", + "item.create.goggles.tooltip.behaviour3": "Muestra información detallada sobre la _Capacidad_ del bloque y de cualquier _Fluido_ guardado dentro.", + + "item.create.wrench.tooltip": "LLAVE INGLESA", + "item.create.wrench.tooltip.summary": "Una útil herramienta para trabajar en contrapciones. Puede _Rotar_, _Desmantelar_ y _Configurar_ componentes.", + "item.create.wrench.tooltip.control1": "Click-Derecho en un componente cinético", + "item.create.wrench.tooltip.action1": "_Rota componentes_ hacia o lejos de la cara en la que se interactuó.", + "item.create.wrench.tooltip.control2": "Click-Derecho mientras te agachas", + "item.create.wrench.tooltip.action2": "_Desmantela componentes Cinéticos_ y los devuelve a _tu inventario_.", + + "block.create.nozzle.tooltip": "BOQUILLA", + "block.create.nozzle.tooltip.summary": "Ponla en frende de un _Ventilador_ Para distribuir su efecto en Entidades en _todas direcciones_.", + + "block.create.cuckoo_clock.tooltip": "RELOJ CU-CU", + "block.create.cuckoo_clock.tooltip.summary": "Artesanía fina para _decorar_ un espacio y _hacer un seguimiento del tiempo_.", + "block.create.cuckoo_clock.tooltip.condition1": "Al darle energía cinética", + "block.create.cuckoo_clock.tooltip.behaviour1": "Muestra la _hora actual_ y toca una melodía dos veces al día. _Se activa_ una vez al _mediodía_ y al anochecer, apenas los _jugadores puedan dormir_.", + + "block.create.turntable.tooltip": "PLATO GIRATORIO", + "block.create.turntable.tooltip.summary": "Convierte la _Fuerza Rotacional_ en Cinetosis refinada .", + + "block.create.toolbox.tooltip": "CAJA DE HERRAMIENTAS", + "block.create.toolbox.tooltip.summary": "La compañía mas querida de todo inventor. Convenientemente _sostiene_ una gran cantidad de _8 Diferentes_ tipos de objeto.", + "block.create.toolbox.tooltip.condition1": "Al recogerla", + "block.create.toolbox.tooltip.behaviour1": "_Mantiene_ los _Contenidos_ del inventario .", + "block.create.toolbox.tooltip.condition2": "Al colocarla en un rango", + "block.create.toolbox.tooltip.behaviour2": "_Jugadores_ _Cercanos_ pueden mantener la _tecla_ de la _Caja de Herramientas_ para acceder a sus contenidos _Remotamente_.", + "block.create.toolbox.tooltip.condition3": "Al hacer Click-Derecho", + "block.create.toolbox.tooltip.behaviour3": "Abre la _Interfaz de Contenedor_.", + + "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE RESERVAS", + "block.create.stockpile_switch.tooltip.summary": "Da una señal de redstone basado en cuántos _Objetos Guardados_ o _Fluidos_ hay en el contenedor adjunto. Viene con un útil filtro. A diferencia de un _Comparador,_ el _Interruptor de Reservas_ permite configurar los _límites,_ a los cuales las señales se invierten.", + "block.create.stockpile_switch.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.stockpile_switch.tooltip.behaviour1": "Abre la _Interfaz de Configuración_.", + + "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDOS", + "block.create.content_observer.tooltip.summary": "_Detecta Objetos_ o _Fluidos_ dentro de _contenedores_, _tuberías_ o _transportadores_ haciendo coincidir un _filtro_ configurado.", + "block.create.content_observer.tooltip.condition1": "Al observar un contenedor", + "block.create.content_observer.tooltip.behaviour1": "Emite una _Señal de Redstone_ mientras que el contenedor observado tenga _contenido_ _coincidible_.", + "block.create.content_observer.tooltip.condition2": "Al observar un Ingreso", + "block.create.content_observer.tooltip.behaviour2": "Emite un _Pulso de Redstone_ cuando un objeto _coincidible_ es _transferido_.", + + "block.create.adjustable_crate.tooltip": "CAJON AJUSTABLE", + "block.create.adjustable_crate.tooltip.summary": "Este _Contenedor de Objetos_ Permite control Manual sobre su capacidad. Puede contener hasta _16 Stacks_ de cualquier Objeto. Soporta _Comparadores de Redstone_.", + "block.create.adjustable_crate.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.adjustable_crate.tooltip.behaviour1": "Abre la _Interfaz_.", + + "block.create.creative_crate.tooltip": "EL CAJON SIN FIN", + "block.create.creative_crate.tooltip.summary": "Este _Contenedor de Objetos_ permite la replicación infinita de cualquier objeto. Ponlo al lado de un _Esquemacañón_ para remover cualquier requerimiento material.", + "block.create.creative_crate.tooltip.condition1": "Cuando un objeto está en la ranura del filtro", + "block.create.creative_crate.tooltip.behaviour1": "Cualquier cosa que _extraiga_ de este contenedor dará una _Fuente Infinita_ del objeto especificado. Objetos _insertados_ dentro del cajón serán _Eliminados._", + + "item.create.creative_blaze_cake.tooltip": "PASTEL CREATIVO", + "item.create.creative_blaze_cake.tooltip.summary": "Un verdadero manjar para tus _Quemadores Blaze_ que permite _controlar su nivel de calor_. Despues de comer este pastel, los Quemadores Blaze _nunca se quedarán sin combustible_.", + "item.create.creative_blaze_cake.tooltip.condition1": "Click-Derecho en el Quemador Blaze", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Bloquea_ el nivel de calor del Quemador. Si se usa de nuevo, _cicla_ el nivel de calor del Quemador", + + "block.create.controller_rail.tooltip": "RAIL CONTROLADOR", + "block.create.controller_rail.tooltip.summary": "Un _raíl propulsado unidireccional_ capaz de _controlar con precisión_ la _velocidad de movimiento_ de una vagoneta.", + "block.create.controller_rail.tooltip.condition1": "Al darle una señal de Redstone", + "block.create.controller_rail.tooltip.behaviour1": "_Acelera_ o _Desacelera_ _vagonetas_ correspondiente a la _fuerza del pulso_. Propaga la señal de redstone a railes controladores adyacentes. Darle poder a dos raíles controladores provocará que los raíles entre estos interpolen su señal.", + + "item.create.sand_paper.tooltip": "PAPEL DE ARENA", + "item.create.sand_paper.tooltip.summary": "Un papel duro que sirve para _pulir materiales_. Puede usarse automaticamente con un Desplegador.", + "item.create.sand_paper.tooltip.condition1": "Al usarlo", + "item.create.sand_paper.tooltip.behaviour1": "Aplica pulido a objetos en la _mano alternativa_ o que están en el _suelo_ al _mirarlos_", + + "item.create.builders_tea.tooltip": "TE DEL CONSTRUCTOR", + "item.create.builders_tea.tooltip.summary": "La mejor bebida para comenzar tu día- _Motivante_ y _Saturante._", + + "item.create.refined_radiance.tooltip": "RADIANCIA REFINADA", + "item.create.refined_radiance.tooltip.summary": "Un material Cromático forjado con _luz absorbida_.", + "item.create.refined_radiance.tooltip.condition1": "Trabajo en Proceso", + "item.create.refined_radiance.tooltip.behaviour1": "Los usos de este material estarán disponibles en una versión futura.", + + "item.create.shadow_steel.tooltip": "ACERO SOMBRÍO", + "item.create.shadow_steel.tooltip.summary": "Un material Cromático forjado _en el vacío_.", + "item.create.shadow_steel.tooltip.condition1": "Trabajo en Progreso", + "item.create.shadow_steel.tooltip.behaviour1": "Los usos de este material estarán disponibles en una versión futura.", + + "item.create.linked_controller.tooltip": "CONTROLADOR VINCULABLE", + "item.create.linked_controller.tooltip.summary": "Permite _control_ _manual_ sobre frecuencias de un _Enlace de Redstone_ asignadas a sus _seis_ _botones_.", + "item.create.linked_controller.tooltip.condition1": "Click-Derecho", + "item.create.linked_controller.tooltip.behaviour1": "_Alterna_ el controlador. Los _controles_ de _movimiento_ se toman el control mientras está activo.", + "item.create.linked_controller.tooltip.condition2": "Click-Derecho mientras te agachas", + "item.create.linked_controller.tooltip.behaviour2": "Abre el manual _Configuración de Interfaz_.", + "item.create.linked_controller.tooltip.condition3": "Clcik-Derecho en un Receptor de Enlace de Redstone", + "item.create.linked_controller.tooltip.behaviour3": "Activa el _Modo de Enlace_, pulsa uno de los _seis controles_ para vincularlo a una de las _Frecuencias_.", + "item.create.linked_controller.tooltip.condition4": "Click-Derecho en un atril", + "item.create.linked_controller.tooltip.behaviour4": "Coloca el controlador en el atril para una activación más sencilla. (Click-Derecho mientras te agashas para recuperarlo)", + + "item.create.diving_helmet.tooltip": "CASCO DE BUCEO", + "item.create.diving_helmet.tooltip.summary": "Junto con un _Tanque_ de _Cobre_, permite al portados _respirar_ bajo el _agua_ por un periodo de tiempo extendido", + "item.create.diving_helmet.tooltip.condition1": "Al equiparlo", + "item.create.diving_helmet.tooltip.behaviour1": "Da el efecto de _Respiración Acuática_, drenando _Aire Comprimido_ lentamente del Tanque.", + + "item.create.copper_backtank.tooltip": "TANQUEMOCHILA DE COBRE", + "item.create.copper_backtank.tooltip.summary": "Un _Tanque_ _Equipable_ para llevar Aire Comprimido.", + "item.create.copper_backtank.tooltip.condition1": "Al Equiparlo", + "item.create.copper_backtank.tooltip.behaviour1": "Proporciona _Aire_ _Comprimido_ al Equipamiento que lo requiere.", + "item.create.copper_backtank.tooltip.condition2": "Al colocarlo, y darle Cinética", + "item.create.copper_backtank.tooltip.behaviour2": "_Recolecta_ _Aire_ _Comprimido_ a una velocidad dependiente de la velocidad de rotación.", + + "item.create.diving_boots.tooltip": "BOTAS DE BUCEO", + "item.create.diving_boots.tooltip.summary": "Un par de _botas_ _pesadas_, permitiendo un mejor recorrido del suelo oceánico.", + "item.create.diving_boots.tooltip.condition1": "Al equiparlas", + "item.create.diving_boots.tooltip.behaviour1": "El portador se _hunde_ _rápido_ y _no puede_ _nadar_. Permite la habilidad de _caminar_ y _saltar_ bajo el agua. El portador tampoco es afectado por las _Cintas_ _Transportadoras_.", + + "item.create.crafting_blueprint.tooltip": "PLANO DE FABRICACIÓN", + "item.create.crafting_blueprint.tooltip.summary": "_Colocado_ en una pared, de puede usar para _especificar_ _orden_ de _ingredientes_ para un crafteo manual mas sencillo. Cada espacio representa una receta.", + "item.create.crafting_blueprint.condition1": "Click-Derecho en un espacio vacío", + "item.create.crafting_blueprint.behaviour1": "Abre un _Menú_ de _Crafteo_ permitiendote _configurar_ una _receta_ y objetos a mostrar.", + "item.create.crafting_blueprint.condition2": "Click-Derecho en un espacio configurado", + "item.create.crafting_blueprint.behaviour2": "_Aplica_ la _receta_ _configurada_ con ingredientes coincidentes que se encuentren en tu _Inventario_. _Agachate_ para craftear un _Stack_ de objetos.", + + "item.create.minecart_coupling.tooltip": "UNION DE VAGONETAS", + "item.create.minecart_coupling.tooltip.summary": "_Encadena_ todas tus _Vagonetas_ o _Contrapciones de Carruago_ juntas para formar un Tren majestuoso.", + "item.create.minecart_coupling.tooltip.condition1": "Al usar en una Vagoneta", + "item.create.minecart_coupling.tooltip.behaviour1": "_Une_ dos Vagonetas juntas, intentando mantenerlas a una _distancia constante_ mientrar se mueven.", + + "block.create.peculiar_bell.tooltip": "CAMPANA PECULIAR", + "block.create.peculiar_bell.tooltip.summary": "Una _Campana de Latón_ decorativa. Ponerla justo sobre _Fuego de Almas_ podría causar efectos secundarios...", + + "block.create.haunted_bell.tooltip": "CAMPANA EMBRUAJADA", + "block.create.haunted_bell.tooltip.summary": "Una _Campana Embrujada_ perseguida por las almas perdidas del Nether.", + "block.create.haunted_bell.tooltip.condition1": "Al sostenerla o colgarla", + "block.create.haunted_bell.tooltip.behaviour1": "Destaca _Puntos no Iluminados_ cercanos en los que _Criaturas Hostiles_ pueden aparecer.", + + + "_": "->------------------------] Ponder Content [------------------------<-", + + "create.ponder.hold_to_ponder": ">Mantén [%1$s] para reflexionar", + "create.ponder.subject": "Sujeto de esta escena", + "create.ponder.pondering": "Reflexionando sobre...", + "create.ponder.identify_mode": "Modo de identificación activado.\nDespausa con [%1$s]", + "create.ponder.associated": "Entradas asociadas", + "create.ponder.close": "Cerrar", + "create.ponder.identify": "Identificar", + "create.ponder.next": "Siguiente Escena", + "create.ponder.previous": "Escena Previa", + "create.ponder.replay": "Reiniciar", + "create.ponder.think_back": "Pensar Atrás", + "create.ponder.slow_text": "Lectura Cómoda", + "create.ponder.exit": "Salir", + "create.ponder.welcome": "Bienvenido a Reflexionar", + "create.ponder.categories": "Categorías Disponibles en Create", + "create.ponder.index_description": "Haz clic en uno de los iconos para conocer sus elementos y bloques asociados", + "create.ponder.index_title": "Índice de Reflexión", + "create.ponder.shared.rpm16": "16 RPM", + "create.ponder.shared.behaviour_modify_wrench": "Este comportamiento se puede modificar con una llave inglesa", + "create.ponder.shared.storage_on_contraption": "Los inventarios adjuntos a la contrapción recogerán los objetos automáticamente", + "create.ponder.shared.sneak_and": "Agáchate +", + "create.ponder.shared.rpm8": "8 RPM", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 RPM", + "create.ponder.shared.rpm16_source": "Fuente: 16 RPM", + "create.ponder.shared.movement_anchors": "Con la ayuda de Chasis o La Gotita, se pueden mover estructuras más grandes.", + "create.ponder.tag.redstone": "Componentes Lógicos", + "create.ponder.tag.redstone.description": "Componentes que ayudan con la ingeniería de redstone", + "create.ponder.tag.contraption_assembly": "Utilidad para adjuntar bloques", + "create.ponder.tag.contraption_assembly.description": "Herramientas y componentes utilizados para ensamblar estructuras movibles como una contrapción animada", + "create.ponder.tag.fluids": "Manipuladores de Fluido", + "create.ponder.tag.fluids.description": "Componentes que ayudan a transmitir y hacer uso de los fluidos", + "create.ponder.tag.decoration": "Estética", + "create.ponder.tag.decoration.description": "Componentes usados, generalmente, con un fin estético", + "create.ponder.tag.windmill_sails": "Velas para rodamientos de molino de viento", + "create.ponder.tag.windmill_sails.description": "Bloques que cuentan para calcular la fuerza de una contrapción de molino de viento cuando se ensambla. Todos tienen la misma eficacia.", + "create.ponder.tag.arm_targets": "Objetivos para brazos mecánicos", + "create.ponder.tag.arm_targets.description": "Componentes que se pueden seleccionar como entradas o salidas de brazo mecánico", + "create.ponder.tag.kinetic_appliances": "Aplicaciones Cinéticas", + "create.ponder.tag.kinetic_appliances.description": "Componentes que hacen uso de la Energía rotacional", + "create.ponder.tag.kinetic_sources": "Fuentes Cinéticas", + "create.ponder.tag.kinetic_sources.description": "Componentes que generan fuerza rotacional", + "create.ponder.tag.movement_anchor": "Anclajes de movimiento", + "create.ponder.tag.movement_anchor.description": "Componentes que permiten la creación de contrapciones móviles, animando una estructura adjunta de distintas formas", + "create.ponder.tag.kinetic_relays": "Bloques Cinéticos", + "create.ponder.tag.kinetic_relays.description": "Componentes que ayudan a transmitir la fuerza de rotación a otros lugares", + "create.ponder.tag.contraption_actor": "Actores de Contrapción", + "create.ponder.tag.contraption_actor.description": "Componentes que exponen un comportamiento especial cuando se adjuntan a una contrapción en movimiento", + "create.ponder.tag.creative": "Modo Creativo", + "create.ponder.tag.creative.description": "Componentes no usualmente disponibles en Modo Supervivencia", + "create.ponder.tag.logistics": "Transportación de Objetos", + "create.ponder.tag.logistics.description": "Componentes que ayudan a mover objetos", + + "create.ponder.adjustable_pulse_repeater.header": "Controlando señales usando Repetidores de Pulso Ajustables", + "create.ponder.adjustable_pulse_repeater.text_1": "Los Repetidores de Pulso Ajustable emiten un pulso corto a cierto retraso", + "create.ponder.adjustable_pulse_repeater.text_2": "Usando la rueda del ratón, el tiempo de carga puede ser configurado", + "create.ponder.adjustable_pulse_repeater.text_3": "Los retrasos configurados pueden alcanzar los 30 minutos", + + "create.ponder.adjustable_repeater.header": "Controlando señales usando Repetidores Ajustables", + "create.ponder.adjustable_repeater.text_1": "Los Repetidores Ajustables funcionan similarmente a los Repetirodes normales", + "create.ponder.adjustable_repeater.text_2": "Se cargan por un tiempo determinado...", + "create.ponder.adjustable_repeater.text_3": "...y se enfrían por la misma duración", + "create.ponder.adjustable_repeater.text_4": "Usando la rueda del ratón, el tiempo de carga puede ser configurado", + "create.ponder.adjustable_repeater.text_5": "Los retrasos configurados pueden alcanzar los 30 minutos", + + "create.ponder.analog_lever.header": "Controlando señales usando la Palanca Análoga", + "create.ponder.analog_lever.text_1": "Las Palancas Análogas son una fuente compacta y precisa de redstone", + "create.ponder.analog_lever.text_2": "Click-Derecho para incrementar la salida análoga", + "create.ponder.analog_lever.text_3": "Click-Derecho mientras te agachas para decrementar la salida de nuevo", + + "create.ponder.andesite_tunnel.header": "Usando Túneles de Andesita", + "create.ponder.andesite_tunnel.text_1": "Los Túneles de Andesita pueden ser usados para cubrir tus cintas", + "create.ponder.andesite_tunnel.text_2": "Cuando un Túnel de Andesita tiene conexiones laterales...", + "create.ponder.andesite_tunnel.text_3": "...separarán exactamente un objeto de cualquier stack que pase a través", + "create.ponder.andesite_tunnel.text_4": "Lo restante continuará en su camino", + + "create.ponder.basin.header": "Procesando Objetos en el tónel", + "create.ponder.basin.text_1": "Un tónel puede sostener Objetos y Fluidos para ser Procesados", + "create.ponder.basin.text_2": "Despues de un procesado, los tóneles intentarán dar salida a un lado y hacia abajo", + "create.ponder.basin.text_3": "Cuando un componente válido está presente, el tónel mostrará un grifo de salida", + "create.ponder.basin.text_4": "Un número de opciones son aplicables aqui", + "create.ponder.basin.text_5": "Los objetos salientes serán atrapados por el inventario debajo", + "create.ponder.basin.text_6": "Sin un grifo, el tónel retendra los objetos procesados dentro", + "create.ponder.basin.text_7": "Esto puede ser útil si los resultados deben ser reusados como ingredientes", + "create.ponder.basin.text_8": "Los objetos de salida deseados tendrán que ser retirados del tónel", + "create.ponder.basin.text_9": "Un Filtro podría ser necesario para evitar sacar objetos sin procesar", + + "create.ponder.bearing_modes.header": "Modos de movimiento del Rodamiento Mecánico", + "create.ponder.bearing_modes.text_1": "Al ser detenido, el Rodamiento colocará la estructura en el ángulo alineado más cercano", + "create.ponder.bearing_modes.text_2": "Puede ser configurado que nunca se vuela a bloques sólidos, o solo hacerlo cerca del ángulo inicial", + + "create.ponder.belt_casing.header": "Cubriendo Cintas", + "create.ponder.belt_casing.text_1": "Cubiertas de Latón y Andesita pueden usarse para decorar tus Cintas Mecánicas", + "create.ponder.belt_casing.text_2": "Una llave inglesa se puede usar para remover la cubierta", + + "create.ponder.belt_connector.header": "Usando Cintas Mecánicas", + "create.ponder.belt_connector.text_1": "Haciendo Click-Derecho en dos ejes con una cinta en la mano los conectará", + "create.ponder.belt_connector.text_2": "Las selecciones equivocadas pueden ser eliminadas con Click-Derecho mientras te agachas", + "create.ponder.belt_connector.text_3": "Ejes Adicionales se pueden añadir a lo largo de la cinta", + "create.ponder.belt_connector.text_4": "Los ejes conectados via Cintas rotarán con Velocidad y Dirección idénticas", + "create.ponder.belt_connector.text_5": "los Ejes adicionales se pueden remover con la Llave Inglesa", + "create.ponder.belt_connector.text_6": "Las Cintas Mecánicas se pueden tintar para fines estéticos", + + "create.ponder.belt_directions.header": "Orientaciones Válidas para las Cintas Mecánicas", + "create.ponder.belt_directions.text_1": "Las cintas no se pueden conectar en direcciones arbitrarias", + "create.ponder.belt_directions.text_2": "1. Se conectan horizontalmente", + "create.ponder.belt_directions.text_3": "2. Se conectan diagonalmente", + "create.ponder.belt_directions.text_4": "3. Se conectan verticalmente", + "create.ponder.belt_directions.text_5": "4. Y pueden conectar Ejes verticales Horizontalmente", + "create.ponder.belt_directions.text_6": "Esas son todas las direcciones posibles. Las cintas pueden unir cualquier distancia entre 2 y 20 bloques", + + "create.ponder.belt_transport.header": "Usando Cintas Mecánicas para Logisticas", + "create.ponder.belt_transport.text_1": "Las cintas que se mueven pueden transportar objetos y entidades", + "create.ponder.belt_transport.text_2": "Hacer Click-Derecho con una mano vacía sacará los objetos de la cinta", + + "create.ponder.blaze_burner.header": "Alimentando Quemadores Blaze", + "create.ponder.blaze_burner.text_1": "Los Quemadores Blaze dan calor a los objetos para ser procesados en el tónel", + "create.ponder.blaze_burner.text_2": "Para esto, deber alimentar al Blaze con objetos combustibles", + "create.ponder.blaze_burner.text_3": "Con un Pastel Blaze, el Quemador puede alcanzar un nivel incluso mayor de calor", + "create.ponder.blaze_burner.text_4": "El proceso de alimentación puede ser automatizado usando Desplegadores o Brazos Mecánicos", + + "create.ponder.brass_funnel.header": "El Ingreso de Latón", + "create.ponder.brass_funnel.text_1": "Los Ingresos de Andesita solo pueden retirar 1 objeto a la vez.", + "create.ponder.brass_funnel.text_2": "Los Ingresos de Latón pueden extraer hasta un Stack completo.", + "create.ponder.brass_funnel.text_3": "Rodando por la ranura de filtro permite mayor control sobre el tamaño del stack extraído.", + "create.ponder.brass_funnel.text_4": "Usar objetos en la ranura de filtro restringirá el ingreso a solo transferir ese tipo de objeto", + + "create.ponder.brass_tunnel.header": "Usando Túneles de Latón", + "create.ponder.brass_tunnel.text_1": "Los Túneles de Latón se pueden usar para cubrir tus Cintas", + "create.ponder.brass_tunnel.text_2": "Los Túneles de Latón tienen ranuras para filtros en cada lado abierto", + "create.ponder.brass_tunnel.text_3": "Los Filtros en conexiones entrantes simplemente bloquean los elementos que no coinciden", + "create.ponder.brass_tunnel.text_4": "Los Filtros en conexiones pueden ser usados para organizar los objetos", + "create.ponder.brass_tunnel.text_5": "Cuando un objeto tiene varias salidas posibles, el modo de distribución decidirá como manejarlo", + "create.ponder.brass_tunnel.text_6": "Los túneles de latón en cinturones paralelos formarán un grupo", + "create.ponder.brass_tunnel.text_7": "Los objetos entrantes ahora serán distribuidos por todas las salidas disponibles", + "create.ponder.brass_tunnel.text_8": "Para esto, los objetos también pueden ser insertados en el bloque de Túnel directamente", + + "create.ponder.brass_tunnel_modes.header": "Modos de Distribución del Túnel de Latón", + "create.ponder.brass_tunnel_modes.text_1": "Usando una Llave, el comporatamiento de la ddistribución de los Túneles de Latón se puede configurar", + "create.ponder.brass_tunnel_modes.text_10": "'Sincronizar Salidas' es una opción única de los Túneles de Latón", + "create.ponder.brass_tunnel_modes.text_11": "Los objetos solo pueden pasar si todos los Túneles en el grupo tienen un objetos en espera", + "create.ponder.brass_tunnel_modes.text_12": "Esto te asegura que todas las cintas suministran objetos a la vez", + "create.ponder.brass_tunnel_modes.text_2": "'Seprarar' intentará distribuir el stack de manera uniforme por todas las salidsa", + "create.ponder.brass_tunnel_modes.text_3": "Si una salida no puede recibir más objetos, será saltada", + "create.ponder.brass_tunnel_modes.text_4": "'Separar Forzado' nunca se saltará salidas, y esperará a que todas estén libres", + "create.ponder.brass_tunnel_modes.text_5": "'Round Robin' mantiene los stacks completos, y los cicla iterativamente a traves de las salidas", + "create.ponder.brass_tunnel_modes.text_6": "Otra Vez, si una salida no puede recibir más objetos, será saltada", + "create.ponder.brass_tunnel_modes.text_7": "'Round Robin Forzado' nunca se salta salidas", + "create.ponder.brass_tunnel_modes.text_8": "'Preferir Cercano' prioritiza las salidas más cercanas de la ubicacion de entrada del objeto", + "create.ponder.brass_tunnel_modes.text_9": "'Aleatorizar' distribuirá los stacks completos al azar entre las salidas", + + "create.ponder.cart_assembler.header": "Moviendo Estructuras usando la Ensambladora de Vagonetas", + "create.ponder.cart_assembler.text_1": "Las Ensambladoras de Vagonetas Potenciadas montan las estructuras adyacentes a las Vagonetas Pasantes", + "create.ponder.cart_assembler.text_2": "Sin una señal de Redstone, desensamblará las contrapciones de vagoneta de vuelta a bloques", + "create.ponder.cart_assembler.text_3": "Usando una Llave en la Vagoneta te permitirá llevar la contrapción a otra parte", + + "create.ponder.cart_assembler_dual.header": "Ensamblando Contrapciones de Carruaje", + "create.ponder.cart_assembler_dual.text_1": "Cuando dos Ensambladores de Vagoneta comparten una estructura adjunta...", + "create.ponder.cart_assembler_dual.text_2": "Darle poder a ambos creará una Contrapción de Carruaje", + "create.ponder.cart_assembler_dual.text_3": "Los carritos se comportarán como los que se conectan via Uniones de Vagoneta", + + "create.ponder.cart_assembler_modes.header": "Configuración de Orientación para las Contrapciones de Vagonetas", + "create.ponder.cart_assembler_modes.text_1": "Las Contrapciones de Vagoneta colo rotarán hacia donde está el movimiento de la vagoneta", + "create.ponder.cart_assembler_modes.text_2": "Esta Flecha indica que lado de la Estructura se considerará el frente", + "create.ponder.cart_assembler_modes.text_3": "Si el Ensamblador está configurado para Bloquear Rotación, la orientación de la contrapción nunca cambiará", + + "create.ponder.cart_assembler_rails.header": "Otros tipos de Vagonetas y Raíles", + "create.ponder.cart_assembler_rails.text_1": "Los Ensambladores de Carrito en las vías normales no afectarán el movimiento de las vagonetas", + "create.ponder.cart_assembler_rails.text_2": "Cuando están en un raíl controlador o potenciado, los carros se mantendrán en su lugar hasta que se encienda", + "create.ponder.cart_assembler_rails.text_3": "Otros tipos de vagonetas se pueden usar como anclaje", + "create.ponder.cart_assembler_rails.text_4": "Los carros con horno se mantendrán alimentados, extrayendo combustible de los inventarios adjuntos", + + "create.ponder.chain_drive.header": "Transmitiendo Fuerza Rotacional con Conductores en Cadena", + "create.ponder.chain_drive.text_1": "Los Conductores en Cadena mantienen la rotación a las otras en fila", + "create.ponder.chain_drive.text_2": "Todos los ejes conectados de esta forma rotarán en la misma dirección", + "create.ponder.chain_drive.text_3": "Cualquier parte de la fila se puede girar en 90 grados", + + "create.ponder.chain_gearshift.header": "Control de la Velocidad de Rotación con la Caja de Cambios en Cadena", + "create.ponder.chain_gearshift.text_1": "Las Cajas de Cambio despotenciadas se comportan igual a los Conductores en Cadena", + "create.ponder.chain_gearshift.text_2": "Al recibir Redstone, la Velocidad transmitida a las otras Cajas de Cambio en la fila es doblada", + "create.ponder.chain_gearshift.text_3": "Cuando la Caja de Cambios no está en la fuente, su velocidad será la mitad", + "create.ponder.chain_gearshift.text_4": "En ambos casos, los Conductores en Cadena en la fila siempre irán al doble la velocidad de las Cajas de Cambios", + "create.ponder.chain_gearshift.text_5": "Usando señales análogas, la razón se puede ajustar más precisamente entre 1 y 2", + "create.ponder.chain_gearshift.text_6": "12 RPM", + + "create.ponder.chute.header": "Transportando Objetos a través de Tolvoganes Verticales", + "create.ponder.chute.text_1": "Los tolvoganes pueden transportar artículos verticalmente desde y hacia los inventarios.", + "create.ponder.chute.text_2": "Usando la Llave, una ventana se puede crear", + "create.ponder.chute.text_3": "Colocar tolvoganes apuntando a las caras laterales de otro lo hará diagonal", + + "create.ponder.chute_upward.header": "Transportando objetos hacia arriba usando Tolvoganes", + "create.ponder.chute_upward.text_1": "Usando Ventiladores desde abajo o arriba, un tolvogán puede transportar objetos hacia arriba", + "create.ponder.chute_upward.text_2": "Inspeccionar tolvoganes con los lentes del ingeniero revela información sobre la dirección de movimiento", + "create.ponder.chute_upward.text_3": "'Por el otro lado', los objetos tendrán que ser insertados/retirados por los lados.", + + "create.ponder.clockwork_bearing.header": "Animando estructuras con Rodamientos de Relojería", + "create.ponder.clockwork_bearing.text_1": "Los Rodamientos de Relojería se adjuntan a los bloques en frente", + "create.ponder.clockwork_bearing.text_2": "Al recibir Fuerza Rotacional, la estructura será rotada acorde a la hora del día", + "create.ponder.clockwork_bearing.text_3": "3:00", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "Haz Click-Derecho en el rodamiento para comenzar o detener la estructura", + "create.ponder.clockwork_bearing.text_6": "En frente del horario, una segunda estructura se puede añadir", + "create.ponder.clockwork_bearing.text_7": "Asegúrate de que las dos estructuras no estén unidas la una a la otra con La Gotita o un similar", + "create.ponder.clockwork_bearing.text_8": "La Segunda Estructura ahora rotará como el Minutero", + + "create.ponder.clutch.header": "Controlando la fuerza Rotacional con un Embrague", + "create.ponder.clutch.text_1": "Los Embragues mantienen la rotación en una línea recta", + "create.ponder.clutch.text_2": "Al ser potenciados con redstone, rompen la conexión", + + "create.ponder.cog_speedup.header": "Cambiando marchas con Engranajes", + "create.ponder.cog_speedup.text_1": "Engranajes grandes y pequeños pueden ser conectados diagonalmente", + "create.ponder.cog_speedup.text_2": "Al cambiar de uno grande a otro pequeño, la velocidad será doblada", + "create.ponder.cog_speedup.text_3": "Al cambiar de uno pequeño a uno grande, la velocidad será la mitad", + + "create.ponder.cogwheel.header": "Transmitiendo Fuerza Rotacional mediante Engranajes", + "create.ponder.cogwheel.text_1": "Los Engranajes transmiten su rotación a los adyacentes", + "create.ponder.cogwheel.text_2": "Los ejes vecinos conectados de esta forma girarán en direcciones opuestas", + + "create.ponder.creative_fluid_tank.header": "Tanques de Fluido del Creativo", + "create.ponder.creative_fluid_tank.text_1": "Los Tanques de Fluido del Creativo se pueden utilizar para proporcionar un suministro de fluido sin fin", + "create.ponder.creative_fluid_tank.text_2": "Haz Click-Derecho con un objeto que contenga un fluido para configurarlo", + "create.ponder.creative_fluid_tank.text_3": "Las redes de tuberías ahora pueden retirar infinitamente el fluido asignado al tanque", + "create.ponder.creative_fluid_tank.text_4": "Cualquier fluido empujado dentro del tanque será eliminado", + + "create.ponder.creative_motor.header": "Generando Energía Rotacional usando Motores del Creativo", + "create.ponder.creative_motor.text_1": "Los Motores del Creativo son una fuente compacta y configurable de fuerza rotacional.", + "create.ponder.creative_motor.text_2": "Rodar por el panel posterior cambia las RPM de salida de rotación de los motores", + + "create.ponder.crushing_wheels.header": "Procesando Objetos usando Ruedas Trituradoras", + "create.ponder.crushing_wheels.text_1": "Un par de Ruedas Trituradoras pueden triturar objetos muy efectivamente", + "create.ponder.crushing_wheels.text_2": "Su ingreso rotacional tiene que hacerlas girar la una contra la otra", + "create.ponder.crushing_wheels.text_3": "Los objetos insertados o tirados encima serán procesados", + "create.ponder.crushing_wheels.text_4": "Los objetos también se pueden insertar y recoger a través de medios automatizados", + + "create.ponder.deployer.header": "Usando el Desplegador", + "create.ponder.deployer.text_1": "Al darle fuerza rotacional, un Desplegador puede imitar acciones humanas", + "create.ponder.deployer.text_10": "Haz clic con Click-Derecho al frente para entregarle un Objeto", + "create.ponder.deployer.text_11": "Los objetos tambien se pueden entregar Automáticamente", + "create.ponder.deployer.text_12": "Los Desplegadores tienen una ranura de filtro", + "create.ponder.deployer.text_13": "Cuando un filtro es configurado, se activa solo mientras sostiene un elemento coincidente", + "create.ponder.deployer.text_14": "Ahora solo se pueden insertar elementos que coincidan con el filtro...", + "create.ponder.deployer.text_15": "...y solo se extraerán los elementos que no coincidan", + "create.ponder.deployer.text_2": "Siempre interactuará con la pocisión 2 bloques en frente de sí mismo.", + "create.ponder.deployer.text_3": "Los bloques directamente en frente no lo obstruirán", + "create.ponder.deployer.text_4": "Los desplegadores pueden:", + "create.ponder.deployer.text_5": "Poner Bloques,", + "create.ponder.deployer.text_6": "Usar Objetos,", + "create.ponder.deployer.text_7": "Activar Bloques,", + "create.ponder.deployer.text_8": "Cosechar Bloques", + "create.ponder.deployer.text_9": "y Atacar Entidades", + + "create.ponder.deployer_contraption.header": "Usando Desplegadores en Contrapciones", + "create.ponder.deployer_contraption.text_1": "Siempre que los Desplegadores se muevan como parte de una contrapción animada...", + "create.ponder.deployer_contraption.text_2": "Se acivarán en cada localización visitada, usando elementos de inventarios en cualquier lugar del artilugio", + "create.ponder.deployer_contraption.text_3": "La ranura de filtro se puede utilizar para especificar qué elementos extraer", + + "create.ponder.deployer_modes.header": "Modos del Desplegador", + "create.ponder.deployer_modes.text_1": "Por defecto, un Desplegador imita una interacción de Click-Derecho", + "create.ponder.deployer_modes.text_2": "Usando una Llave, se puede configurar para imitar un Click-izquierdo en su lugar", + + "create.ponder.deployer_processing.header": "Procesando Objetos usando Desplegadores", + "create.ponder.deployer_processing.text_1": "Con un Objeto retenido adecuado, los Desplegadores pueden procesar elementos proporcionados debajo de ellos", + "create.ponder.deployer_processing.text_2": "Los Objetos de Entrada se pueden soltar o colocar en un depósito debajo del Desplegador", + "create.ponder.deployer_processing.text_3": "Cuando los objetos pasan por una cinta...", + "create.ponder.deployer_processing.text_4": "El Desplegador los mantendrá y procesará automáticamente", + + "create.ponder.deployer_redstone.header": "Controlando Desplegadores con Redstone", + "create.ponder.deployer_redstone.text_1": "Al potenciarlos con Redstone, los Desplegadores no se Activarán", + "create.ponder.deployer_redstone.text_2": "Antes de detenerse, el Desplegador terminará sus ciclos comenzados", + "create.ponder.deployer_redstone.text_3": "Asi mismo, se puede utilizar un pulso negativo para activar exactamente un ciclo de activación", + + "create.ponder.depot.header": "Usando Depósitos", + "create.ponder.depot.text_1": "Los depósitos pueden servir como elementos de cinta 'estacionarios'", + "create.ponder.depot.text_2": "Haz clic con el Click-Derecho para colocar o eliminar objetos manualmente", + "create.ponder.depot.text_3": "Al igual que las Cintas Mecánicas, pueden proporcionar objetos para procesar.", + "create.ponder.depot.text_4": "...así como proporcionar objetos a los brazos mecánicos", + + "create.ponder.empty_blaze_burner.header": "Usando Quemadores Blaze vacíos", + "create.ponder.empty_blaze_burner.text_1": "Haz Click-Derecho en un Blaze con el quemador vacío para capturarlo", + "create.ponder.empty_blaze_burner.text_2": "Alternativamente, los Blazes se pueden conseguir directamente del Spawner", + "create.ponder.empty_blaze_burner.text_3": "Ahora tienes una fuente de calor ideal para varias máquinas", + "create.ponder.empty_blaze_burner.text_4": "Para Motivos Estéticos, los Quemadores Vacíos también se pueden encender con un Mechero.", + "create.ponder.empty_blaze_burner.text_5": "La llama se puede transformar con un objeto infundido con almas.", + "create.ponder.empty_blaze_burner.text_6": "Aun así, sin un Blaze no son aptos para la calefacción industrial", + + "create.ponder.encased_fluid_pipe.header": "Encubriendo Tuberías de Fluido", + "create.ponder.encased_fluid_pipe.text_1": "Las Cubiertas de Cobre se pueden utilizar para decorar tus Tuberías de Fluido.", + "create.ponder.encased_fluid_pipe.text_2": "Además de estar ocultas, las tuberías encubiertas se bloquearán en su estado de conectividad", + "create.ponder.encased_fluid_pipe.text_3": "Ya no reaccionará a los bloques vecinos que se agreguen o eliminen.", + + "create.ponder.fan_direction.header": "Flujo de Aire de los Ventiladores", + "create.ponder.fan_direction.text_1": "Los Ventiladores usan el Aire para crear una corriente de aire", + "create.ponder.fan_direction.text_2": "La Fuerza y ​​la Dirección del flujo dependen de la fuerza rotacional entregada", + + "create.ponder.fan_processing.header": "Procesando Objetos Usando Ventiladores", + "create.ponder.fan_processing.text_1": "Al pasar a través de Lava, El Flujo de Aire se vuelve caliente", + "create.ponder.fan_processing.text_2": "Los objetos que pasen a través serán fundidos", + "create.ponder.fan_processing.text_3": "La comida tirada aquí sería incinerada", + "create.ponder.fan_processing.text_4": "En cambio, se debe usar una configuración de ahumado usando fuego.", + "create.ponder.fan_processing.text_5": "Los Flujos de Aire que atraviesen Agua crearán una configuración de lavado", + "create.ponder.fan_processing.text_6": "Se puede hacer algún procesamiento nuevo e interesante con él.", + "create.ponder.fan_processing.text_7": "La velocidad del ventilador NO afecta la velocidad de procesamiento, solo su rango", + "create.ponder.fan_processing.text_8": "El Procesamiento por Ventilador también se puede aplicar a objetos en depósitos y cintas", + + "create.ponder.fan_source.header": "Generando Fuerza Rotacional usando Ventiladores", + "create.ponder.fan_source.text_1": "Los Ventiladores orientados hacia abajo hacia una Fuente de Calor pueden proporcionar Fuerza Rotacional", + "create.ponder.fan_source.text_2": "Al dalre una señal de Redstone, los Ventiladores empezarán a generar", + + "create.ponder.fluid_pipe_flow.header": "Moviendo fluidos usando Tuberías de Cobre", + "create.ponder.fluid_pipe_flow.text_1": "Las tuberías de fluidos pueden conectar dos o más fuentes de fluidos y objetivos", + "create.ponder.fluid_pipe_flow.text_2": "Con una llave, se puede añadir una ventana a un segmento de tubería recto", + "create.ponder.fluid_pipe_flow.text_3": "Las tuberías con ventana no se conectarán a ningún otro segmento de tubería adyacente.", + "create.ponder.fluid_pipe_flow.text_4": "Alimentadas por bombas mecánicas, las tuberías pueden transportar fluidos.", + "create.ponder.fluid_pipe_flow.text_5": "Ningún fluido se extrae al inicio", + "create.ponder.fluid_pipe_flow.text_6": "Una vez el flujo las conecta, los puntos de conexión transfieren gradualmente su contenido", + "create.ponder.fluid_pipe_flow.text_7": "Por lo tanto, los bloques de tuberías nunca contienen `` físicamente '' ningún fluido.", + + "create.ponder.fluid_pipe_interaction.header": "Drenando y Llenando objetos Contenedores de Fluido", + "create.ponder.fluid_pipe_interaction.text_1": "Los puntos de conexión de una red de tuberías pueden interactuar con una variedad de bloques", + "create.ponder.fluid_pipe_interaction.text_2": "Cualquier bloque con capacidad de almacenamiento de fluidos se puede llenar o drenar", + "create.ponder.fluid_pipe_interaction.text_3": "Se pueden recoger bloques de Fuente justo en frente de un extremo abierto...", + "create.ponder.fluid_pipe_interaction.text_4": "...mientras que se derrama en espacios vacíos puede crear fuentes de fluidos", + "create.ponder.fluid_pipe_interaction.text_5": "Las tuberías también pueden extraer fluidos de un puñado de otros bloques directamente", + + "create.ponder.fluid_tank_sizes.header": "Dimensiones de un Tanque de Fluidos", + "create.ponder.fluid_tank_sizes.text_1": "Los tanques de fluido se pueden combinar para aumentar la capacidad total", + "create.ponder.fluid_tank_sizes.text_2": "Su cuadrado de base puede tener hasta 3 bloques de ancho....", + "create.ponder.fluid_tank_sizes.text_3": "...y pueden crecer en altura en más de 30 capas adicionales", + "create.ponder.fluid_tank_sizes.text_4": "Usando una llave, las ventanas del tanque se pueden alternar", + + "create.ponder.fluid_tank_storage.header": "Guardando Fluidos en Tanques de Fluido", + "create.ponder.fluid_tank_storage.text_1": "Los tanques de Fluido se pueden utilizar para almacenar grandes cantidades de líquidos.", + "create.ponder.fluid_tank_storage.text_2": "Las redes de tuberías pueden empujar y tirar fluidos desde cualquier bloque", + "create.ponder.fluid_tank_storage.text_3": "El líquido contenido se puede medir con un comparador", + "create.ponder.fluid_tank_storage.text_4": "Sin embargo, en el modo Supervivencia, los Fluidos no se pueden agregar ni tomar manualmente", + "create.ponder.fluid_tank_storage.text_5": "Puedes usar tóneles, drenajes y surtidores para drenar o llenar objetos contenedores de líquido", + + "create.ponder.flywheel.header": "Generando Fuerza Rotacional usando el Volante de Inercia", + "create.ponder.flywheel.text_1": "El Volante de Inercia es necesario para Generar Energía al usar el Horno Motor", + "create.ponder.flywheel.text_2": "La fuerza de rotación proporcionada tiene una capacidad de estrés muy grande", + "create.ponder.flywheel.text_3": "El uso de un alto horno duplicará la eficiencia del motor.", + + "create.ponder.funnel_compat.header": "Compatibilidad de Ingresos", + "create.ponder.funnel_compat.text_1": "Los ingresos también deberían interactuar bien con un puñado de otros componentes.", + "create.ponder.funnel_compat.text_2": "Sierras Verticales", + "create.ponder.funnel_compat.text_3": "Depósitos", + "create.ponder.funnel_compat.text_4": "Drenajes", + + "create.ponder.funnel_direction.header": "Dirección de Tranferencia", + "create.ponder.funnel_direction.text_1": "Colocado normalmente, extrae objetos del inventario.", + "create.ponder.funnel_direction.text_2": "Colocado mientras te agachas, pone objetos en el inventario.", + "create.ponder.funnel_direction.text_3": "Con una Llave Inglesa, el ingreso se puede alternar después de la colocación.", + "create.ponder.funnel_direction.text_4": "Se aplican las mismas reglas para la mayoría de las orientaciones.", + "create.ponder.funnel_direction.text_5": "Los ingresos en las sintas extraerán/insertarán dependiendo de la dirección de movimiento.", + + "create.ponder.funnel_intro.header": "Usando Ingresos", + "create.ponder.funnel_intro.text_1": "Los Ingresos son ideales para transferir artículos desde y hacia inventarios.", + + "create.ponder.funnel_redstone.header": "Control de Restone", + "create.ponder.funnel_redstone.text_1": "Las señales de Redstone evitarán que actúe cualquier ingreso", + + "create.ponder.funnel_transfer.header": "Transferencia Directa", + "create.ponder.funnel_transfer.text_1": "Los Ingresos nunca pueden transferir directamente entre inventarios cerrados.", + "create.ponder.funnel_transfer.text_2": "Los tolvoganes o tolvoganes inteligentes podrían ser más adecuados para tales fines.", + "create.ponder.funnel_transfer.text_3": "Lo mismo se aplica al movimiento horizontal. Una cinta mecánica debería ayudar aquí.", + + "create.ponder.furnace_engine.header": "Generando Fuerza rotacional usando el Horno Motor", + "create.ponder.furnace_engine.text_1": "Los Horno Motores generan fuerza rotacional mientras su horno adjunto está en funcionamiento", + "create.ponder.furnace_engine.text_2": "La fuerza rotacional proporcionada tiene una capacidad de tensión muy grande", + "create.ponder.furnace_engine.text_3": "El uso de un Alto Horno duplicará la eficiencia del motor.", + + "create.ponder.gantry_carriage.header": "Usando Carruajes de Grúa", + "create.ponder.gantry_carriage.text_1": "Los Carruajes de Grúa pueden montarse y deslizarse sobre los Ejes de Grúa.", + "create.ponder.gantry_carriage.text_2": "Las Configuraciones de Carruaje pueden mover bloques adjuntos.", + + "create.ponder.gantry_cascaded.header": "Grúas en cascada", + "create.ponder.gantry_cascaded.text_1": "Los ejes de grúa se adhieren a un carruaje sin la necesidad de La Gotita", + "create.ponder.gantry_cascaded.text_2": "Lo mismo se aplica a los carruajes en ejes de grúa movidos", + "create.ponder.gantry_cascaded.text_3": "Por lo tanto, un sistema de carruajes se puede conectar en cascada para cubrir múltiples ejes de movimiento.", + + "create.ponder.gantry_direction.header": "Dirección de Movimiento del Carruaje", + "create.ponder.gantry_direction.text_1": "Los ejes de grúa pueden tener orientaciones opuestas", + "create.ponder.gantry_direction.text_2": "La dirección de movimiento de los Carruajes depende de la orientación de los ejes.", + "create.ponder.gantry_direction.text_3": "...así como la dirección de rotación del eje", + "create.ponder.gantry_direction.text_4": "Se aplican las mismas reglas para la rotación propagada.", + + "create.ponder.gantry_redstone.header": "Propagación de Energía de la Grúa", + "create.ponder.gantry_redstone.text_1": "Los ejes de grúa impulsados ​​por Redstone dejan de mover sus carros", + "create.ponder.gantry_redstone.text_2": "En cambio, su fuerza rotacional se transmite al eje de salida de los carruajes.", + + "create.ponder.gantry_shaft.header": "Usando Ejes de Grúa", + "create.ponder.gantry_shaft.text_1": "Los ejes de grúa forman la base de una configuración de grúa. Los carruajes adjuntos se moverán a lo largo de ellos.", + "create.ponder.gantry_shaft.text_2": "Las Configuraciones de Carruaje pueden mover bloques adjuntos.", + + "create.ponder.gearbox.header": "Transmitiendo Energía Rotacional usando Cajas de Engranajes", + "create.ponder.gearbox.text_1": "Saltar entre ejes de rotación puede volverse pesado rápidamente", + "create.ponder.gearbox.text_2": "Una caja de cambios es el equivalente más compacto de esta configuración.", + "create.ponder.gearbox.text_3": "Los ejes alrededor de las esquinas giran en direcciones simétricas", + "create.ponder.gearbox.text_4": "Las conexiones rectas se invertirán", + + "create.ponder.gearshift.header": "Controlando Fuerza Rotacional usando una Caja de Cambios", + "create.ponder.gearshift.text_1": "Las Cajas de Cambio mantienen la Energía Rotacional en línea recta", + "create.ponder.gearshift.text_2": "Cuando recibe una señal de Redstone, invierte la transmisión", + + "create.ponder.hand_crank.header": "Generando fuerza rotacional mediante manivelas", + "create.ponder.hand_crank.text_1": "Las manivelas pueden ser usadas por los jugadores para generar energía rotacional manualmente", + "create.ponder.hand_crank.text_2": "Mantén presionado el Click-Derecho para girarlo en sentido antihorario", + "create.ponder.hand_crank.text_3": "Su velocidad es relativamente alta", + "create.ponder.hand_crank.text_4": "Agáchate y mantén el Click-Derecho para girarlo en el sentido de las agujas del reloj", + + "create.ponder.hose_pulley.header": "Drenaje y LLenado de Fuentes usando Poleas Manguera", + "create.ponder.hose_pulley.text_1": "Las Poleas Manguera se pueden usar para llenar o drenar grandes cantidades de fluido", + "create.ponder.hose_pulley.text_2": "A través de la Entrada Cinética, se puede controlar la altura de la manguera de las poleas", + "create.ponder.hose_pulley.text_3": "La Polea se retrae al invertir la dirección de Rotación", + "create.ponder.hose_pulley.text_4": "En el lado opuesto, las tuberías se pueden conectar al bloque principal", + "create.ponder.hose_pulley.text_5": "Las redes de tuberías adjuntas pueden proporcionar fluido a la manguera...", + "create.ponder.hose_pulley.text_6": "...o tirar de él, drenando la piscina en su lugar", + "create.ponder.hose_pulley.text_7": "La velocidad de llenado y drenaje de la manguera depende completamente de las redes de tuberías.", + + "create.ponder.hose_pulley_infinite.header": "Drenaje y Llenado pasivo de grandes cantidades de líquido", + "create.ponder.hose_pulley_infinite.text_1": "Al desplegar la Polea Manguera en un océano lo suficientemente grande...", + "create.ponder.hose_pulley_infinite.text_2": "Proporcionará/eliminará fluidos sin afectar la fuente", + "create.ponder.hose_pulley_infinite.text_3": "Las redes de tuberías pueden llevar fluidos ilimitadamente desde o hacia dichas poleas.", + + "create.ponder.hose_pulley_level.header": "Nivel de llenado y drenaje de Poleas Manguera", + "create.ponder.hose_pulley_level.text_1": "Mientras está completamente retraída, la Polea Manguera no puede funcionar", + "create.ponder.hose_pulley_level.text_2": "El drenaje corre de arriba a abajo", + "create.ponder.hose_pulley_level.text_3": "El nivel de la superficie terminará justo debajo de donde termina la manguera.", + "create.ponder.hose_pulley_level.text_4": "El llenado corre de abajo hacia arriba", + "create.ponder.hose_pulley_level.text_5": "La piscina llena no crecerá más allá de la capa sobre el extremo de la manguera.", + + "create.ponder.item_drain.header": "Vaciando Contenedores de Fluido mediante Drenajes", + "create.ponder.item_drain.text_1": "Los Drenajes pueden extraer fluidos de los objetos", + "create.ponder.item_drain.text_2": "Haz Click-Derecho para verter los fluidos del objeto en tu mano en él", + "create.ponder.item_drain.text_3": "Cuando los Objetos se insertan desde el lateral...", + "create.ponder.item_drain.text_4": "...ruedan, vaciando su líquido contenido", + "create.ponder.item_drain.text_5": "Las redes de tuberías ahora pueden extraer el fluido del búfer interno de los Drenajes.", + + "create.ponder.large_cogwheel.header": "Transmitiendo la fuerza rotacional mediante engranajes grandes", + "create.ponder.large_cogwheel.text_1": "Los engranajes grandes se pueden conectar entre sí en ángulo recto", + "create.ponder.large_cogwheel.text_2": "Te ayudará a transmitir la velocidad transportada a otros ejes de rotación", + + "create.ponder.linear_chassis_attachment.header": "Fijando bloques mediante Chasis Lineal", + "create.ponder.linear_chassis_attachment.text_1": "Las caras abiertas de un Chasis Lineal se pueden volver pegajosas", + "create.ponder.linear_chassis_attachment.text_2": "Haz clic de nuevo para hacer el lado opuesto pegajoso", + "create.ponder.linear_chassis_attachment.text_3": "Agáchate y haz Click-Derecho con la mano vacía para eliminar el slime.", + "create.ponder.linear_chassis_attachment.text_4": "Las caras pegadas del Chasis Lineal unirán una línea de bloques frente a él.", + "create.ponder.linear_chassis_attachment.text_5": "Usando una llave, se puede especificar un rango preciso para el Chasis", + "create.ponder.linear_chassis_attachment.text_6": "Mantener presionada la tecla CTRL y mover la rueda del mouse ajusta el rango de todos los bloques de Chasis adjuntos", + "create.ponder.linear_chassis_attachment.text_7": "La colocación de bloques en cualquier otro lado requiere el uso de La Gotita", + "create.ponder.linear_chassis_attachment.text_8": "Usando estas mecánicas, las estructuras de cualquier forma pueden moverse como una contrapción.", + + "create.ponder.linear_chassis_group.header": "Moviendo Chasis Lineales en grupo", + "create.ponder.linear_chassis_group.text_1": "El Chasis Lineal se conecta a bloques de Chasis idénticos junto a ellos", + "create.ponder.linear_chassis_group.text_2": "Cuando uno es movido por una Contrapción, los demás son arrastrados con él.", + "create.ponder.linear_chassis_group.text_3": "El Chasis de un tipo diferente o que mira en otra dirección no se acoplará", + + "create.ponder.mechanical_arm.header": "Configuración de Brazos Mecánicos", + "create.ponder.mechanical_arm.text_1": "Los Brazos Mecánicos deben tener asignadas sus entradas y salidas antes de colocarlos.", + "create.ponder.mechanical_arm.text_2": "Haz Click.Derecho en los inventarios mientras sostienes el brazo para asignarlos como objetivos", + "create.ponder.mechanical_arm.text_3": "Haz Click-Derecho de nuevo para alternar entre Entrada (azul) y Salida (naranja)", + "create.ponder.mechanical_arm.text_4": "Haz Click-Izquierdo en los componentes para eliminar su selección", + "create.ponder.mechanical_arm.text_5": "Una vez colocado, el Brazo Mecánico apuntará a los bloques seleccionados previamente", + "create.ponder.mechanical_arm.text_6": "Pueden tener cualquier cantidad de entradas y salidas dentro de su rango", + "create.ponder.mechanical_arm.text_7": "Sin embargo, no se puede interactuar directamente con todos los tipos de inventario", + "create.ponder.mechanical_arm.text_8": "Los ingresos y depósitos pueden ayudar a sobrepasar esa brecha", + + "create.ponder.mechanical_arm_filtering.header": "Filtrando Salidas del Brazo Mecánico", + "create.ponder.mechanical_arm_filtering.text_1": "Entradas", + "create.ponder.mechanical_arm_filtering.text_2": "Salidas", + "create.ponder.mechanical_arm_filtering.text_3": "A veces es preferible restringir los objetivos del brazo haciendo coincidir un filtro", + "create.ponder.mechanical_arm_filtering.text_4": "Los brazos mecánicos por sí mismos no ofrecen ninguna opción para filtrar", + "create.ponder.mechanical_arm_filtering.text_5": "Los embudos de latón como objetivos, sin embargo, comunican su propio filtro al brazo.", + "create.ponder.mechanical_arm_filtering.text_6": "El brazo es lo suficientemente inteligente como para no recoger artículos que no puede distribuir.", + + "create.ponder.mechanical_arm_modes.header": "Modos de Distribución del Brazo Mecánico", + "create.ponder.mechanical_arm_modes.text_1": "Entrada", + "create.ponder.mechanical_arm_modes.text_2": "Salida", + "create.ponder.mechanical_arm_modes.text_3": "Siempre que un brazo tiene que elegir entre múltiples salidas válidas...", + "create.ponder.mechanical_arm_modes.text_4": "...actuará de acuerdo a su entorno", + "create.ponder.mechanical_arm_modes.text_5": "Rodar con una Llave Inglesa te permite configurarlo", + "create.ponder.mechanical_arm_modes.text_6": "El modo Round Robin simplemente recorre todas las salidas que están disponibles.", + "create.ponder.mechanical_arm_modes.text_7": "Si una salida no puede aceptar más elementos, se omitirá.", + "create.ponder.mechanical_arm_modes.text_8": "El modo Round Robin forzado nunca se saltará salidas, y esperará hasta que la siguiente esté disponible", + "create.ponder.mechanical_arm_modes.text_9": "Preferir el Primero prioriza las salidas seleccionadas primero al configurar el brazo", + + "create.ponder.mechanical_arm_redstone.header": "Controlando Brazos Mecánicos con Redstone", + "create.ponder.mechanical_arm_redstone.text_1": "Cuando reciben una señal de Redstone, los brazos mecánicos no se activan", + "create.ponder.mechanical_arm_redstone.text_2": "Antes de detenerse, termina el ciclo restante", + "create.ponder.mechanical_arm_redstone.text_3": "Asi mismo, se puede utilizar un pulso negativo para activar exactamente un ciclo de activación", + + "create.ponder.mechanical_bearing.header": "Moviendo Estructuras con un Rodamiento Mecánico", + "create.ponder.mechanical_bearing.text_1": "Los Rodamientos Mecánicos se unen al bloque frente a ellos.", + "create.ponder.mechanical_bearing.text_2": "Al recibir Fuerza Rotacional, se ensamblará en una contrapción giratoria.", + + "create.ponder.mechanical_crafter.header": "Configurando Crafteadores Mecánicos", + "create.ponder.mechanical_crafter.text_1": "Se puede usar una variedad de Crafteadores Mecánicos para automatizar cualquier receta de elaboración.", + "create.ponder.mechanical_crafter.text_2": "Usando una llave inglesa, los caminos de los Crafteadores se pueden ordenar", + "create.ponder.mechanical_crafter.text_3": "Para una configuración válida, todas las rutas deben converger en una salida en cualquier lado", + "create.ponder.mechanical_crafter.text_4": "Las salidas se colocarán en el inventario a la salida.", + "create.ponder.mechanical_crafter.text_5": "Los Crafteadores Mecánicos requieren fuerza rotacional para operar", + "create.ponder.mechanical_crafter.text_6": "Haz Click-Derecho al frente para insertar objetos manualmente", + "create.ponder.mechanical_crafter.text_7": "Una vez que cada espacio de una ruta contiene un objeto, comenzará el proceso de elaboración.", + "create.ponder.mechanical_crafter.text_8": "Para las recetas que no ocupan completamente la configuración del crafteador, el inicio se puede forzar usando un Pulso de Redstone", + + "create.ponder.mechanical_crafter_connect.header": "Conectando los Inventarios de los Crafteadores", + "create.ponder.mechanical_crafter_connect.text_1": "Los Objetos se pueden insertar en Crafters automáticamente", + "create.ponder.mechanical_crafter_connect.text_2": "Usando la llave en sus espaldas, las entradas de los Crafteadores Mecánicos se pueden combinar", + "create.ponder.mechanical_crafter_connect.text_3": "Ahora se puede acceder a todos los Crafteadores conectados desde la misma ubicación de entrada", + + "create.ponder.mechanical_crafter_covers.header": "Cubriendo ranuras de Crafteadores Mecánicos", + "create.ponder.mechanical_crafter_covers.text_1": "Algunas recetas requerirán creafteadores adicionales para cerrar brechas en el camino.", + "create.ponder.mechanical_crafter_covers.text_2": "Usando Cubre Ranuras, los Crafteadores se pueden configurar para que actúen como un espacio vacío en el Crafteo", + "create.ponder.mechanical_crafter_covers.text_3": "Las entradas compartidas creadas con la Llave Inglesa en la parte trasera también pueden llegar a los Crafteadores Cubiertos.", + + "create.ponder.mechanical_drill.header": "Rompiendo Bloques con el Taladro Mecánico", + "create.ponder.mechanical_drill.text_1": "Cuando se le entrega Energía Rotacional, un taladro mecánico romperá bloques directamente en frente de él", + "create.ponder.mechanical_drill.text_2": "Su velocidad de extracción depende de la velocidad de entrada rotacional.", + + "create.ponder.mechanical_drill_contraption.header": "Usando Taladros Mecánicos en Contrapciones", + "create.ponder.mechanical_drill_contraption.text_1": "Cuando los taladros se mueven como parte de una contrapción animada...", + "create.ponder.mechanical_drill_contraption.text_2": "...romperán los bloques con los que se encuentren", + + "create.ponder.mechanical_harvester.header": "Usando Cosechadoras Mecánicas en Contrapciones", + "create.ponder.mechanical_harvester.text_1": "Cuando las Cosechadoras se mueven como parte de una Contrapción animada...", + "create.ponder.mechanical_harvester.text_2": "Cosecharán y reiniciaran cualcuier cultivo maduro en su camino", + + "create.ponder.mechanical_mixer.header": "Procesando Objetos con una Mezcladora Mecánica", + "create.ponder.mechanical_mixer.text_1": "Con una Mezcladora y un tónel, algunas recetas de elaboración se pueden automatizar", + "create.ponder.mechanical_mixer.text_2": "Las recetas disponibles incluyen cualquier Crafteo sin Forma Definida, más un par de recetas adicionales.", + "create.ponder.mechanical_mixer.text_3": "Algunas de esas recetas podrían requerir el calor de un Quemador Blaze", + "create.ponder.mechanical_mixer.text_4": "La ranura del filtro se puede utilizar en caso de que dos recetas estén en conflicto.", + + "create.ponder.mechanical_piston.header": "Moviendo Estructuras con el Pistón Mecánico", + "create.ponder.mechanical_piston.text_1": "Los pistones mecánicos pueden mover bloques delante de ellos.", + "create.ponder.mechanical_piston.text_2": "La velocidad y la dirección de movimiento dependen de la velocidad y sentido de entrada rotacional", + "create.ponder.mechanical_piston.text_3": "Los Pistones Mecánicos Pegajosos pueden tirar de los bloques adjuntos hacia atrás", + + "create.ponder.mechanical_piston_modes.header": "Modos de Movimiento de los Pistones Mecánicos", + "create.ponder.mechanical_piston_modes.text_1": "Siempre que los pistones dejan de moverse, la estructura movida se convierte en bloques.", + "create.ponder.mechanical_piston_modes.text_2": "Se puede configurar para que nunca vuelva a bloques sólidos, o solo lo haga en la ubicación en la que comenzó.", + + "create.ponder.mechanical_plough.header": "Usando Aradores Mecánicos den Contrapciones", + "create.ponder.mechanical_plough.text_1": "Cuando los Aradores se mueven siendo parte de una contrapción...", + "create.ponder.mechanical_plough.text_2": "...romperán bloques sin un hitbox de colisión sólido", + "create.ponder.mechanical_plough.text_3": "Adicionalmente, los Aradores crean tierra plantable", + "create.ponder.mechanical_plough.text_4": "...también pueden lanzar entidades sin dañarlas", + + "create.ponder.mechanical_press.header": "Procesando Objetos con la Prensa Mecánica", + "create.ponder.mechanical_press.text_1": "La Prensa Mecánica puede procesar los objetos proporcionados debajo de ella.", + "create.ponder.mechanical_press.text_2": "Los objetos entrantes se pueden soltar o colocar en un depósito debajo de la prensa", + "create.ponder.mechanical_press.text_3": "Cuando los objetos pasan por una cinta mecánica...", + "create.ponder.mechanical_press.text_4": "La prensa los mantendrá y procesará automáticamente", + + "create.ponder.mechanical_press_compacting.header": "Compactando objetos con una prensa mecánica", + "create.ponder.mechanical_press_compacting.text_1": "Al Prensar objetos retenidos en un tónel, se compactarán", + "create.ponder.mechanical_press_compacting.text_2": "La compactación incluye cualquier receta de elaboración de 2x2 o 3x3 rellena, más algunas extra", + "create.ponder.mechanical_press_compacting.text_3": "Algunas de esas recetas podrían requerir el calor de un quemador Blaze", + "create.ponder.mechanical_press_compacting.text_4": "La ranura del filtro se puede utilizar en caso de que dos recetas estén en conflicto.", + + "create.ponder.mechanical_pump_flow.header": "Transporte de fluidos mediante Bombas Mecánicas", + "create.ponder.mechanical_pump_flow.text_1": "Las Bombas Mecánicas gobiernan el flujo de fluídos en las redes de tuberías", + "create.ponder.mechanical_pump_flow.text_2": "Cuando se encienden, su flecha indica la dirección del flujo", + "create.ponder.mechanical_pump_flow.text_3": "La red detrás ahora está extrayendo fluidos...", + "create.ponder.mechanical_pump_flow.text_4": "...mientras la red de enfrente lo está transfiriendo hacia afuera", + "create.ponder.mechanical_pump_flow.text_5": "Invertir la rotación invierte la dirección del flujo", + "create.ponder.mechanical_pump_flow.text_6": "Utiliza una Llave Inglesa para invertir la orientación de las bombas manualmente", + + "create.ponder.mechanical_pump_speed.header": "Rendimiento de las Bombas Mecánicas", + "create.ponder.mechanical_pump_speed.text_1": "Sin importar la velocidad, Las bombas mecánicas afectan a las tuberías conectadas hasta a 16 bloques de distancia", + "create.ponder.mechanical_pump_speed.text_2": "Acelerar la rotación de entrada cambia la velocidad de propagación del flujo....", + "create.ponder.mechanical_pump_speed.text_3": "...así como la rapidez con la que se transfieren los fluidos", + "create.ponder.mechanical_pump_speed.text_4": "Las bombas pueden combinar sus rendimientos dentro de las redes de tuberías compartidas", + "create.ponder.mechanical_pump_speed.text_5": "Alternar su orientación puede ayudar a alinear las direcciones de flujo.", + + "create.ponder.mechanical_saw_breaker.header": "Cortando árboles con la Sierra Mecánica", + "create.ponder.mechanical_saw_breaker.text_1": "Cuando se alimenta con Fuerza Rotacional, una Sierra Mecánica cortará los arboles en frente suya", + "create.ponder.mechanical_saw_breaker.text_2": "Para cortar el árbol por completo, la sierra tiene que romper el último bloque que lo conecta al suelo.", + + "create.ponder.mechanical_saw_contraption.header": "Usando Sierras Mecánicas en Contrapciones", + "create.ponder.mechanical_saw_contraption.text_1": "Cuando las sierras se muevan como parte de una contrapción animada...", + "create.ponder.mechanical_saw_contraption.text_2": "...cortarán cualquier arbol que se interponga en el paso de la contrapción", + + "create.ponder.mechanical_saw_processing.header": "Procesando objetos en la Sierra Mecánica", + "create.ponder.mechanical_saw_processing.text_1": "Las Sierras Mecánicas orientadas hacia arriba pueden procesar una variedad de objetos", + "create.ponder.mechanical_saw_processing.text_2": "El Objeto procesado siempre se mueve en contra del sentido rotacional de la Sierra.", + "create.ponder.mechanical_saw_processing.text_3": "Las Sierras pueden trabajar en línea junto con Cintas Mecánicas", + "create.ponder.mechanical_saw_processing.text_4": "Cuando un ingrediente tiene múltiples resultados posibles, la ranura de filtro puede especificar el resultado.", + "create.ponder.mechanical_saw_processing.text_5": "Sin un filtro, la Sierra ciclará por todos los resultados en su lugar", + + "create.ponder.millstone.header": "Procesando objetos en la Piedra de Molino", + "create.ponder.millstone.text_1": "Las Piedras de Molino procesan los artículos moliéndolos", + "create.ponder.millstone.text_2": "Se pueden accionar desde el lado mediante Engranajes.", + "create.ponder.millstone.text_3": "Lanza o Inserta objetos desde la parte superior", + "create.ponder.millstone.text_4": "Despues de un rato, el resultado se puede obtener haciendo Click-Derecho", + "create.ponder.millstone.text_5": "Las salidas también se pueden extraer mediante automatización", + + "create.ponder.nixie_tube.header": "Usando Tubos Nixie", + "create.ponder.nixie_tube.text_1": "Al recibir señales de Redstone, los Tubos Nixie mostrarán la fuerza de la señal de redstone", + "create.ponder.nixie_tube.text_2": "Usando etiquetas editadas con un yunque, se puede mostrar Texto Personalizado", + "create.ponder.nixie_tube.text_3": "Haz Click-Derecho con un Tinte para cambiar su color de visualización", + + "create.ponder.piston_pole.header": "Postes de Extensión de Pistón", + "create.ponder.piston_pole.text_1": "Sin postes adjuntos, un Pistón Mecanico no se puede mover", + "create.ponder.piston_pole.text_2": "La longitud del poste agregado en su parte posterior determina el rango de extensión", + + "create.ponder.portable_fluid_interface.header": "Intercambio de Fluidos en Contrapciones", + "create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los Tanques de Fluido de una Contrapción en movimiento por ninguna tubería", + "create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los Tanques de Fluidos sin necesidad de detener la contrapción.", + "create.ponder.portable_fluid_interface.text_3": "Coloca un segundo con una distancia de 1 o 2 bloques", + "create.ponder.portable_fluid_interface.text_4": "Cada vez que se crucen, entablarán una conexión.", + "create.ponder.portable_fluid_interface.text_5": "Mientras está activada, la interfaz estacionaria representará a TODOS los tanques en el contrapción", + "create.ponder.portable_fluid_interface.text_6": "El fluido ahora puede ser insertado...", + "create.ponder.portable_fluid_interface.text_7": "...o extraído de la contrapción", + "create.ponder.portable_fluid_interface.text_8": "Después de que no se haya intercambiado ningún contenido durante un tiempo, la contrapción continuará su camino.", + + "create.ponder.portable_storage_interface.header": "Intercambio de Almacenamiento en Contrapciones", + "create.ponder.portable_storage_interface.text_1": "No se puede acceder a los Inventarios de una Contrapción en movimiento por ningún jugador.", + "create.ponder.portable_storage_interface.text_2": "Este componente puede interactuar con los Inventarios sin necesidad de detener la contrapción.", + "create.ponder.portable_storage_interface.text_3": "Coloca un segundo con una distancia de 1 o 2 bloques", + "create.ponder.portable_storage_interface.text_4": "Cada vez que se crucen, entablarán una conexión.", + "create.ponder.portable_storage_interface.text_5": "Mientras está activada, la interfaz estacionaria representará a TODOS los inventarios en el contrapciónWhile engaged, the stationary interface will represent ALL inventories on the contraption", + "create.ponder.portable_storage_interface.text_6": "Ahora puedes insertar objetos...", + "create.ponder.portable_storage_interface.text_7": "...o extraerlos de la contrapción", + "create.ponder.portable_storage_interface.text_8": "Después de que no se haya intercambiado ningún objeto durante un tiempo, la contrapción continuará su camino.", + + "create.ponder.portable_storage_interface_redstone.header": "Control de Redstone", + "create.ponder.portable_storage_interface_redstone.text_1": "La Redstone evitará que la interfaz estacionaria se active", + + "create.ponder.powered_latch.header": "Control de señales usando el Cerrojo de Redstone", + "create.ponder.powered_latch.text_1": "Los Cerrojos de Redstone son palancas controlables de Redstone", + "create.ponder.powered_latch.text_2": "Las señales en la parte trasera lo encienden", + "create.ponder.powered_latch.text_3": "Las señales laterales lo apagan", + "create.ponder.powered_latch.text_4": "Los Cerrojos de Redstone también se pueden alternar manualmente", + + "create.ponder.powered_toggle_latch.header": "Control de señales usando el Cerrojo Palanca de Redstone", + "create.ponder.powered_toggle_latch.text_1": "Los Cerrojos Palanca de Redstone son palancas controlables de Redstone", + "create.ponder.powered_toggle_latch.text_2": "Las señales en la parte posterior cambiarán su estado", + "create.ponder.powered_toggle_latch.text_3": "...entre encendido y apagado", + "create.ponder.powered_toggle_latch.text_4": "Los Cerrojos Palanca de Redstone también se pueden alternar manualmente", + + "create.ponder.pulse_repeater.header": "Controlando Señales con Repetidores de Pulso", + "create.ponder.pulse_repeater.text_1": "Los Repetidores de Pulso acortarán cualquier señal de redstone a un solo pulso", + + "create.ponder.radial_chassis.header": "Uniendo Bloques con el Chasis Radial", + "create.ponder.radial_chassis.text_1": "El chasis radial se conecta a bloques de chasis idénticos en una fila", + "create.ponder.radial_chassis.text_2": "Cuando uno es movido por una contrapción, los demás son arrastrados con él.", + "create.ponder.radial_chassis.text_3": "Las caras laterales de un Chasis Radial se pueden hacer pegajosas", + "create.ponder.radial_chassis.text_4": "Cliquea de nuevo para hacer la otra cara pegajosa", + "create.ponder.radial_chassis.text_5": "Agachate y haz Click-Derecho con la mano vacía para eliminar el slime.", + "create.ponder.radial_chassis.text_6": "Siempre que un bloque esté al lado de una cara pegajosa...", + "create.ponder.radial_chassis.text_7": "...adjuntará todos los bloques alcanzables dentro de un radio en esa capa", + "create.ponder.radial_chassis.text_8": "Usando una Llave Inglesa, se puede especificar un radio preciso para este chasis", + "create.ponder.radial_chassis.text_9": "Los bloques a los que no puede acceder ninguna cara adhesiva no se adhieren", + + "create.ponder.redstone_contact.header": "Contactos de Redstone", + "create.ponder.redstone_contact.text_1": "Los Contactos de Redstone que estén uno frente al otro emitirán una señal de redstone.", + "create.ponder.redstone_contact.text_2": "Esto todavía se aplica cuando uno de ellos es parte de una contrapción en movimiento.", + + "create.ponder.redstone_link.header": "Usando Enlaces de Redstone", + "create.ponder.redstone_link.text_1": "Los enlaces de Redstone pueden transmitir señales de redstone de forma inalámbrica", + "create.ponder.redstone_link.text_2": "Agachate y haz Click-Derecho para alternar el modo de recepción", + "create.ponder.redstone_link.text_3": "Un simple Click-Derecho con una Llave Inglesa puede hacer lo mismo", + "create.ponder.redstone_link.text_4": "Los Receptores emiten la potencia de redstone de los Transmisores dentro de un radio de 128 bloques", + "create.ponder.redstone_link.text_5": "Colocar objetos en las dos ranuras puede especificar una frecuencia", + "create.ponder.redstone_link.text_6": "Solo los enlaces con frecuencias coincidentes se comunicarán entre sí", + + "create.ponder.rope_pulley.header": "Moviendo Estructuras con Poleas de Cuerda", + "create.ponder.rope_pulley.text_1": "Las poleas de Cuerda mueven Bloques de manera vertical al recibir Energía Rotacional", + "create.ponder.rope_pulley.text_2": "La Dirección y la Velocidad del movimiento dependen de la entrada rotacional", + + "create.ponder.rope_pulley_attachment.header": "Moviendo Poleas como parte de una Contrapción", + "create.ponder.rope_pulley_attachment.text_1": "Siempre que las poleas sean movidas por una contrapción...", + "create.ponder.rope_pulley_attachment.text_2": "...la estructura unida a ellas será arrastrada", + "create.ponder.rope_pulley_attachment.text_3": "Ten en cuenta que las poleas solo se pueden mover cuando están paradas", + + "create.ponder.rope_pulley_modes.header": "Modos de Movimiento de las Poleas de Cuerda", + "create.ponder.rope_pulley_modes.text_1": "Siempre que las poleas dejan de moverse, la estructura movida se convierte en Bloques", + "create.ponder.rope_pulley_modes.text_2": "Puede configurarse que nunca vuelva a bloques, o que solo lo haga en la ubicación inicial", + + "create.ponder.rotation_speed_controller.header": "Usando el Controlador de Velocidad de Rotación", + "create.ponder.rotation_speed_controller.text_1": "Los Controladores de Vel. de Rotación transmiten la rotación desde su eje a un Engranaje Grande encima de ellos", + "create.ponder.rotation_speed_controller.text_2": "Usando la entrada de rueda en su lado, la velocidad transportada se puede configurar", + + "create.ponder.sail.header": "Ensamblando Molinos de Viento con Velas", + "create.ponder.sail.text_1": "Las velas son bloques útiles para crear Molinos de Viento", + "create.ponder.sail.text_2": "Se adhieren a los bloques y entre sí sin la necesidad de La Gotita o Bloques de Chasis.", + "create.ponder.sail.text_3": "Haz Click-Derecho con Tinte para pintarlas", + "create.ponder.sail.text_4": "Haz Click-Derecho con Tijeras para convertirlas de nuevo en Marcos.", + + "create.ponder.sail_frame.header": "Ensamblando Molinos con Marcos de Vela", + "create.ponder.sail_frame.text_1": "Los Marcos de Vela son bloques útiles para crear Molinos de Viento", + "create.ponder.sail_frame.text_2": "Se adhieren a los bloques y entre sí sin la necesidad de La Gotita o Bloques de Chasis.", + + "create.ponder.sequenced_gearshift.header": "Control de la velocidad de rotación mediante Cajas de Cambio Secuenciadas", + "create.ponder.sequenced_gearshift.text_1": "Las Cajas de Cambios Sec. transmiten la rotación siguiendo una lista cronometrada de instrucciones", + "create.ponder.sequenced_gearshift.text_2": "Haz Click-Derecho para abrir la interfaz de usuario de configuración", + "create.ponder.sequenced_gearshift.text_3": "Al recibir una señal de Redstone, comenzará a ejecutar su secuencia configurada", + "create.ponder.sequenced_gearshift.text_4": "Una vez terminado, esperará la próxima señal de Redstone y comenzará de nuevo.", + "create.ponder.sequenced_gearshift.text_5": "Se puede usar un Comparador de Redstone para leer el progreso actual", + + "create.ponder.shaft.header": "Transmitiendo Fuerza Rotacional con Ejes", + "create.ponder.shaft.text_1": "Los ejes transmitirán la rotación en línea recta.", + + "create.ponder.shaft_casing.header": "Cubriendo Ejes", + "create.ponder.shaft_casing.text_1": "Puedes usar Cubiertas de Latón y Andesita para decorar tus Ejes", + + "create.ponder.smart_chute.header": "Filtrando Objetos usando Tolvoganes Inteligentes", + "create.ponder.smart_chute.text_1": "Los Tolvoganes Inteligentes son conductos verticales con control adicional", + "create.ponder.smart_chute.text_2": "Los Objetos en la ranura del filtro especifican qué es exactamente lo que pueden extraer y transferir.", + "create.ponder.smart_chute.text_3": "Usa la rueda del mouse para especificar el tamaño de la pila extraída", + "create.ponder.smart_chute.text_4": "Una señal de Redstone evitará que el tolvogán actúe.", + + "create.ponder.smart_pipe.header": "Controlando el Flujo del Fluido mediante Tuberías Inteligentes", + "create.ponder.smart_pipe.text_1": "Las Tuberías Inteligentes pueden ayudar a controlar los Flujos por tipo de Fluido", + "create.ponder.smart_pipe.text_2": "Cuando se colocan directamente en la fuente, pueden especificar el tipo de fluido a extraer.", + "create.ponder.smart_pipe.text_3": "Simplemente haz Click-Derecho en la ranura de filtro con cualquier elemento que contenga el fluido deseado", + "create.ponder.smart_pipe.text_4": "Cuando se colocan más adelante en una red de tuberías, las Tuberías Inteligentes solo permitirán que continúen los fluidos coincidentes", + + "create.ponder.speedometer.header": "Supervisando Información Cinética con el Velocímetro", + "create.ponder.speedometer.text_1": "El velocímetro muestra la velocidad actual de los componentes conectados", + "create.ponder.speedometer.text_2": "Al usar los lentes del ingeniero, el jugador puede obtener información más detallada del indicador.", + "create.ponder.speedometer.text_3": "Los comparadores pueden emitir señales de Redstone analógicas en relación con las mediciones del Velocímetro", + + "create.ponder.spout_filling.header": "Llenando Objetos con el Surtidor", + "create.ponder.spout_filling.text_1": "El Surtidos puede llenar los objetos contenedores de líquidos que se encuentran debajo", + "create.ponder.spout_filling.text_2": "No se puede acceder manualmente al contenido de un Surtidor ", + "create.ponder.spout_filling.text_3": "En cambio, tuberías se deben usar para llenarlos con Fluidos", + "create.ponder.spout_filling.text_4": "Los Objetos de Entrada se pueden colocar en un depósito debajo del Surtidor", + "create.ponder.spout_filling.text_5": "Cuando los Objetos se encuentran en una cinta...", + "create.ponder.spout_filling.text_6": "El Surtidor los mantendrá y procesará autoráticamente", + + "create.ponder.stabilized_bearings.header": "Contrapciones Estabilizadas", + "create.ponder.stabilized_bearings.text_1": "Siempre que los rodamientos mecánicos formen parte de una estructura en movimiento..", + "create.ponder.stabilized_bearings.text_2": "..intentarán mantenerse erguidos", + "create.ponder.stabilized_bearings.text_3": "Una vez más, el rodamiento se unirá al bloque enfrente a él.", + "create.ponder.stabilized_bearings.text_4": "Como resultado, toda la sub-contrapción permanecerá en posición vertical.", + + "create.ponder.sticker.header": "Colocación de bloques con el Pegador", + "create.ponder.sticker.text_1": "Los Pegadores son ideales para la fijación de bloques controlada por Redstone", + "create.ponder.sticker.text_2": "Al recibir señal, alternarán de estado", + "create.ponder.sticker.text_3": "Si se mueve en una contrapción, el bloque se moverá con él.", + "create.ponder.sticker.text_4": "Alternando una vez más, el bloque ya no se adjunta.", + + "create.ponder.stressometer.header": "Supervisando Información Cinética con el Estresómetro", + "create.ponder.stressometer.text_1": "El Estresómetro muestra la capacidad de estrés actual de la red cinética adjunta", + "create.ponder.stressometer.text_2": "Al usar lentes de ingeniero, el jugador puede obtener información más detallada del indicador.", + "create.ponder.stressometer.text_3": "Los comparadores pueden emitir señales de Redstone analógicas en relación con las mediciones del Estresómetro", + + "create.ponder.super_glue.header": "Adjuntando bloques usando La Gotita", + "create.ponder.super_glue.text_1": "La Gotita se puede usar entre 2 bloques", + "create.ponder.super_glue.text_2": "Los bloques unidos se moverán juntos cuando se ensamblen en una contrapción.", + "create.ponder.super_glue.text_3": "Siempre que se sostenga La Gotita en la mano izquierda...", + "create.ponder.super_glue.text_4": "...los bloques añadidos se pegarán a la cara en la que se colocaron automáticamente", + "create.ponder.super_glue.text_5": "La Gotita se puede quitar con Click-Izquierdo", + + "create.ponder.valve_handle.header": "Generación Fuerza Rotacional mediante Válvulas de Cobre", + "create.ponder.valve_handle.text_1": "Los jugadores pueden usar las Válvulas para aplicar fuerza de rotación manualmente", + "create.ponder.valve_handle.text_2": "Mantén presionado el Click-Derecho para girarla en sentido antihorario", + "create.ponder.valve_handle.text_3": "Su velocidad de transporte es lenta y precisa.", + "create.ponder.valve_handle.text_4": "Agáchate y mantén Click-Derecho para girarla en el sentido de las agujas del reloj", + "create.ponder.valve_handle.text_5": "Las Válvulas se pueden teñir con fines estéticos.", + + "create.ponder.valve_pipe.header": "Controlando el Flujo de Fluido mediante Válvulas", + "create.ponder.valve_pipe.text_1": "Las Tuberías de Válvula ayudan a controlar los fluidos que se propagan a través de las redes de tuberías", + "create.ponder.valve_pipe.text_2": "Su entrada de eje controla si al fluido se le permite pasar", + "create.ponder.valve_pipe.text_3": "Dada la fuerza de rotación en la dirección de apertura, la Válvula se abrirá", + "create.ponder.valve_pipe.text_4": "Se puede volver a cerrar invirtiendo la rotación.", + + "create.ponder.water_wheel.header": "Generando fuerza rotacional usando ruedas de agua", + "create.ponder.water_wheel.text_1": "Las ruedas de agua extraen fuerza de las corrientes de agua adyacentes", + "create.ponder.water_wheel.text_2": "MIentras más caras estén siendo empujadas, más rapido rotará", + "create.ponder.water_wheel.text_3": "Las palas de la rueda deben estar orientadas contra el flujo", + "create.ponder.water_wheel.text_4": "De lo contrario, no serán tan efectivas.", + + "create.ponder.weighted_ejector.header": "Usando Eyectores por Peso", + "create.ponder.weighted_ejector.text_1": "Agáchate y haz Click-Derecho sosteniendo un eyector para seleccionar su ubicación de destino", + "create.ponder.weighted_ejector.text_10": "Ahora está limitado a este tamaño de stack y solo se activa cuando su stack retenido alcanza esta cantidad.", + "create.ponder.weighted_ejector.text_11": "Otras entidades siempre activarán un eyector al pisarlo", + "create.ponder.weighted_ejector.text_2": "El Eyector colocado ahora lanzará objetos a la ubicación marcada", + "create.ponder.weighted_ejector.text_3": "Un objetivo válido puede estar a cualquier altura o distancia dentro del alcance", + "create.ponder.weighted_ejector.text_4": "Sin embargo, no pueden estar a un lateral", + "create.ponder.weighted_ejector.text_5": "Si no se seleccionó un objetivo válido, simplemente apuntará al bloque directamente al frente", + "create.ponder.weighted_ejector.text_6": "Suministrale Fuerza Rotacional para cargarlo.", + "create.ponder.weighted_ejector.text_7": "Los objetos colocados en el Eyector hacen que se active", + "create.ponder.weighted_ejector.text_8": "Si se apunta a Inventarios, el Eyector esperará hasta que haya espacio", + "create.ponder.weighted_ejector.text_9": "Con la Llave Inglesa, se puede configurar un tamaño de stack requerido", + + "create.ponder.weighted_ejector_redstone.header": "Controlando Eyectores por Peso con Redstone", + "create.ponder.weighted_ejector_redstone.text_1": "Al recibir señales de Redstone, los Eyectores no se activarán", + "create.ponder.weighted_ejector_redstone.text_2": "Además, los observadores pueden detectar cuándo se activan los Eyectores.", + + "create.ponder.weighted_ejector_tunnel.header": "División de Stacks de Objetos con Eyectores por Peso", + "create.ponder.weighted_ejector_tunnel.text_1": "En combinación con los Túneles de Latón, los Eyectores pueden dividir las pilas de objetos en cantidades específicas", + "create.ponder.weighted_ejector_tunnel.text_2": "Primero, configura el Túnel de Latón a 'Preferir el más Cercano', para priorizar su salida lateral", + "create.ponder.weighted_ejector_tunnel.text_3": "El tamaño de Stack establecido en el Eyector ahora determina la cantidad que se Dividirá", + "create.ponder.weighted_ejector_tunnel.text_4": "Mientras que un nuevo stack del tamaño configurado sale de la salida lateral...", + "create.ponder.weighted_ejector_tunnel.text_5": "...el restante continuará su camino", + + "create.ponder.windmill_source.header": "Generando Fuerza Rotacional mediante Rodamientos de Molino de Viento", + "create.ponder.windmill_source.text_1": "Los Rodamientos de Molino de Viento se unen al bloque delante de ellos", + "create.ponder.windmill_source.text_2": "Si se unen suficientes Bloques de Vela al bloque, puede actuar como un molino de viento", + "create.ponder.windmill_source.text_3": "Activado con Click-Derecho, el Rodamiento de Molino de Viento comenzará a proporcionar Fuerza Rotacional", + "create.ponder.windmill_source.text_4": "La cantidad de Bloques de Velas determina su velocidad de rotación.", + "create.ponder.windmill_source.text_5": "Usa una Llave Inglesa para configurar su dirección de rotación", + "create.ponder.windmill_source.text_6": "Haz Click-Derecho en el Rodamiento en cualquier momento para detener y editar la estructura nuevamente", + + "create.ponder.windmill_structure.header": "Contrapciones de Molino de Viento", + "create.ponder.windmill_structure.text_1": "Cualquier estructura puede contar como un molino de viento válido, siempre que contenga al menos 8 Bloques de Vela.", + + "_": "Gracias por Traducir Create! <3 (Traducción al Español Latino Chilenísimo por Alonsinwhat)" + +} \ No newline at end of file From 52eca118ad6a9b163e4fa46caa2e1bfb81758ed0 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 23 Nov 2021 18:55:39 +0100 Subject: [PATCH 19/26] Back on Patch, Part III - Better visibility for low/half amounts of fluids in basins - Fixed Mechanical Press head getting stuck in extended position when off-screened or when its basin changes - Added processingTime support to mixing recipes (defaults to 100) - Fixed Basin recipes with fluid output not starting when targeted output inventory supports items only - Fixed item extraction from create creating stacks of unstackable items when source inventory allows stacking them (Storage Drawers) - Fixed Deployers not having a valid item capability when asked before their first tick - Fixed Mechanical Crafting recipes able to be automated via packing --- src/generated/resources/.cache/cache | 3 +- .../assets/create/lang/unfinished/es_cl.json | 2348 +++++++++++++++++ .../data/create/advancements/aesthetics.json | 4 +- .../simibubi/create/compat/jei/CreateJEI.java | 7 +- .../deployer/DeployerTileEntity.java | 11 +- .../mixer/MechanicalMixerTileEntity.java | 11 +- .../press/MechanicalPressTileEntity.java | 4 +- .../components/press/PressInstance.java | 3 - .../processing/BasinRenderer.java | 2 + .../processing/BasinTileEntity.java | 60 +- .../create/foundation/item/ItemHelper.java | 5 +- 11 files changed, 2426 insertions(+), 32 deletions(-) create mode 100644 src/generated/resources/assets/create/lang/unfinished/es_cl.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 2ef6992db..5e1ee6ed8 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -444,6 +444,7 @@ b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 5ae77ed97ee05a7ed98999178677e576c1140007 assets/create/lang/en_ud.json 5a7c0c3ea8d5fe01289b4eb2ea4f175bad825672 assets/create/lang/en_us.json c7c1900b9a88af98d3af131dae5f1e2263c86635 assets/create/lang/unfinished/de_de.json +bb65514ab38063b4686efe9e7f1d8de78823111f assets/create/lang/unfinished/es_cl.json 800b427fc2e4f3b71df9c6295e500d77e8c1d486 assets/create/lang/unfinished/es_es.json 5ad47cb60df592b461672e224dfb89167f8861e1 assets/create/lang/unfinished/fr_fr.json 216065d27084497ffed7cacddfe86cab542643d9 assets/create/lang/unfinished/it_it.json @@ -1747,7 +1748,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 58880e397902f8ca5b3b59ed4423e626109ddc4c assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json new file mode 100644 index 000000000..e0c24cece --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -0,0 +1,2348 @@ +{ + "_": "Missing Localizations: 0", + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "Ventana de Acacia", + "block.create.acacia_window_pane": "Panel de Ventana de Acacia", + "block.create.adjustable_chain_gearshift": "Caja de Cambios en Cadena Ajustable", + "block.create.adjustable_crate": "Cajón Ajustable", + "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustable", + "block.create.adjustable_repeater": "Repetidor Ajustable", + "block.create.analog_lever": "Palanca Análoga", + "block.create.andesite_belt_funnel": "Ingreso para Cintas de Andesita", + "block.create.andesite_bricks": "Ladrillos de Andesita", + "block.create.andesite_bricks_slab": "Losa de Ladrillos de Andesita", + "block.create.andesite_bricks_stairs": "Escalera de Ladrillos de Andesita", + "block.create.andesite_bricks_wall": "Muro de Ladrillos de Andesita", + "block.create.andesite_casing": "Cubierta de Andesita", + "block.create.andesite_cobblestone": "Adoquín de Andesita", + "block.create.andesite_cobblestone_slab": "Losa de Adoquín de Andesita", + "block.create.andesite_cobblestone_stairs": "Escaleras de Adoquín de Andesita", + "block.create.andesite_cobblestone_wall": "Muro de Adoquín de Andesita", + "block.create.andesite_encased_shaft": "Eje con Cubierta de Andesita", + "block.create.andesite_funnel": "Ingreso de Andesita", + "block.create.andesite_pillar": "Pilar de Andesita", + "block.create.andesite_tunnel": "Túnel de Andesita", + "block.create.basin": "Tónel", + "block.create.belt": "Cinta", + "block.create.birch_window": "Ventana de Abedul", + "block.create.birch_window_pane": "Panel de Ventana de Abedul", + "block.create.black_nixie_tube": "Tubo Nixie Negro", + "block.create.black_sail": "Vela Negra", + "block.create.black_seat": "Asiento Negro", + "block.create.black_toolbox": "Caja de Herramientas Negra", + "block.create.black_valve_handle": "Válvula Negra", + "block.create.blaze_burner": "Mechero Blaze", + "block.create.blue_nixie_tube": "Tubo Nixie Azul", + "block.create.blue_sail": "Vela Azul", + "block.create.blue_seat": "Asiento Azul", + "block.create.blue_toolbox": "Caja de Herramientas Azul", + "block.create.blue_valve_handle": "Válvula Azul", + "block.create.brass_belt_funnel": "Ingreso para Cintas de Latón", + "block.create.brass_block": "Bloque de Latón", + "block.create.brass_casing": "Cubierta de Latón", + "block.create.brass_encased_shaft": "Eje con Cubierta de Latón", + "block.create.brass_funnel": "Ingreso de Latón", + "block.create.brass_tunnel": "Túnel de Latón", + "block.create.brown_nixie_tube": "Tubo Nixie Marrón", + "block.create.brown_sail": "Vela Marrón", + "block.create.brown_seat": "Asiento Marrón", + "block.create.brown_toolbox": "Caja de Herramientas Marrón", + "block.create.brown_valve_handle": "Válvula Marrón", + "block.create.cart_assembler": "Ensambladora de Vagonetas", + "block.create.chiseled_dark_scoria": "Escoria Oscura Cincelada", + "block.create.chiseled_dolomite": "Dolomita Cincelada", + "block.create.chiseled_gabbro": "Gabro Cincelado", + "block.create.chiseled_limestone": "Piedra Caliza Cincelada", + "block.create.chiseled_scoria": "Escoria Cincelada", + "block.create.chiseled_weathered_limestone": "Piedra Caliza Erosionada Cincelada", + "block.create.chocolate": "Chocolate", + "block.create.chute": "Tolvogán", + "block.create.clockwork_bearing": "Rodamiento De Relojería", + "block.create.clutch": "Embrague", + "block.create.cogwheel": "Engranaje", + "block.create.content_observer": "Observador de Contenidos", + "block.create.controller_rail": "Raíl Controlador", + "block.create.copper_backtank": "Tanque-Mochila de Cobre", + "block.create.copper_block": "Bloque de Cobre", + "block.create.copper_casing": "Cubierta de Cobre", + "block.create.copper_ore": "Mineral de Cobre", + "block.create.copper_shingles": "Tejas de Cobre", + "block.create.copper_tiles": "Baldosas de Cobre", + "block.create.copper_valve_handle": "Válvula de Cobre", + "block.create.creative_crate": "Cajón del Creativo", + "block.create.creative_fluid_tank": "Tanque de Fluidos del Creativo", + "block.create.creative_motor": "Motor del Creativo", + "block.create.crimson_window": "Ventana Carmesí", + "block.create.crimson_window_pane": "Panel de Ventana Carmesí", + "block.create.crushing_wheel": "Rueda Trituradora", + "block.create.crushing_wheel_controller": "Controladora de Rueda Trituradora", + "block.create.cuckoo_clock": "Reloj Cu-Cú", + "block.create.cyan_nixie_tube": "Tubo Nixie Cian", + "block.create.cyan_sail": "Vela Cian", + "block.create.cyan_seat": "Asiento Cian", + "block.create.cyan_toolbox": "Caja de Herramientas Cian", + "block.create.cyan_valve_handle": "Válvula Cian", + "block.create.dark_oak_window": "Ventana de Roble Oscuro", + "block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro", + "block.create.dark_scoria": "Escoria Oscura", + "block.create.dark_scoria_bricks": "Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_bricks_wall": "Muro de Ladrillos de Escoria Oscura", + "block.create.dark_scoria_cobblestone": "Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_slab": "Losa de Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_stairs": "Escaleras de Adoquín de Escoria Oscura", + "block.create.dark_scoria_cobblestone_wall": "Muro de Adoquín de Escoria Oscura", + "block.create.dark_scoria_pillar": "Pilar de Escoria Oscura", + "block.create.deployer": "Desplegador", + "block.create.depot": "Depósito", + "block.create.diorite_bricks": "Ladrillos de Diorita", + "block.create.diorite_bricks_slab": "Losa de Ladrillos de Diorita", + "block.create.diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita", + "block.create.diorite_bricks_wall": "Muro de Ladrillos de Diorita", + "block.create.diorite_cobblestone": "Adoquin de Diorita", + "block.create.diorite_cobblestone_slab": "Losa de Adoquin de Diorita", + "block.create.diorite_cobblestone_stairs": "Escaleras de Adoquin de Diorita", + "block.create.diorite_cobblestone_wall": "Muro de Adoquin de Diorita", + "block.create.diorite_pillar": "Pilar de Diorita", + "block.create.dolomite": "Dolomita", + "block.create.dolomite_bricks": "Ladrillos de Dolomita", + "block.create.dolomite_bricks_slab": "Losa de Ladrillos de Dolomita", + "block.create.dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita", + "block.create.dolomite_bricks_wall": "Muro de Ladrillos de Dolomita", + "block.create.dolomite_cobblestone": "Adoquín de Dolomita", + "block.create.dolomite_cobblestone_slab": "Losa de Adoquín de Dolomita", + "block.create.dolomite_cobblestone_stairs": "Escaleras de Adoquín de Dolomita", + "block.create.dolomite_cobblestone_wall": "Muro de Adoquín de Dolomita", + "block.create.dolomite_pillar": "Pilar de Dolomita", + "block.create.encased_chain_drive": "Conductor en Cadena Encubierto", + "block.create.encased_fan": "Ventilador Encubierto", + "block.create.encased_fluid_pipe": "Tubería de Fluidos Encubierta", + "block.create.fancy_andesite_bricks": "Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_slab": "Losa de Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita Lujosos", + "block.create.fancy_andesite_bricks_wall": "Muro de Ladrillos de Andesita Lujosos", + "block.create.fancy_dark_scoria_bricks": "Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_dark_scoria_bricks_wall": "Muro de Ladrillos de Escoria Oscura Lujosos", + "block.create.fancy_diorite_bricks": "Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_slab": "Losa de Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita Lujosos", + "block.create.fancy_diorite_bricks_wall": "Muro de Ladrillos de Diorita Lujosos", + "block.create.fancy_dolomite_bricks": "Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_slab": "Losa de Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita Lujosos", + "block.create.fancy_dolomite_bricks_wall": "Muro de Ladrillos de Dolomita Lujosos", + "block.create.fancy_gabbro_bricks": "Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_slab": "Losa de Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro Lujosos", + "block.create.fancy_gabbro_bricks_wall": "Muro de Ladrillos de Gabro Lujosos", + "block.create.fancy_granite_bricks": "Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_slab": "Losa de Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_stairs": "Escaleras de Ladrillos de Granito Lujosos", + "block.create.fancy_granite_bricks_wall": "Muro de Ladrillos de Granito Lujosos", + "block.create.fancy_limestone_bricks": "Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_stairs": "Escaleras de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Lujosos", + "block.create.fancy_scoria_bricks": "Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_slab": "Losa de Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Lujosos", + "block.create.fancy_scoria_bricks_wall": "Muro de Ladrillos de Escoria Lujosos", + "block.create.fancy_weathered_limestone_bricks": "Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fancy_weathered_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Erosionada Lujosos", + "block.create.fluid_pipe": "Tubería de Fluidos", + "block.create.fluid_tank": "Tanque de Fluidos", + "block.create.fluid_valve": "Válvula de Fluidos", + "block.create.flywheel": "Volante de Inercia", + "block.create.framed_glass": "Vidrio Enmarcado", + "block.create.framed_glass_pane": "Panel de Vidrio Enmarcado", + "block.create.furnace_engine": "Horno Motor", + "block.create.gabbro": "Gabro", + "block.create.gabbro_bricks": "Ladrillos de Gabro", + "block.create.gabbro_bricks_slab": "Losa de Ladrillos de Gabro", + "block.create.gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro", + "block.create.gabbro_bricks_wall": "Muro de Ladrillos de Gabro", + "block.create.gabbro_cobblestone": "Adoquín de Gabro", + "block.create.gabbro_cobblestone_slab": "Losa de Adoquín de Gabro", + "block.create.gabbro_cobblestone_stairs": "Escaleras de Adoquín de Gabro", + "block.create.gabbro_cobblestone_wall": "Muro de Adoquín de Gabro", + "block.create.gabbro_pillar": "Pilar de Gabro", + "block.create.gantry_carriage": "Carruaje de Grúa", + "block.create.gantry_shaft": "Eje de Grúa", + "block.create.gearbox": "Caja de Engranajes", + "block.create.gearshift": "Caja de Cambios", + "block.create.glass_fluid_pipe": "Tubería de Fluidos de Cristal", + "block.create.granite_bricks": "Ladrillos de Granito", + "block.create.granite_bricks_slab": "Losa de Ladrillos de Granito", + "block.create.granite_bricks_stairs": "Escaleras de Ladrillos de Granito", + "block.create.granite_bricks_wall": "Muro de Ladrillos de Granito", + "block.create.granite_cobblestone": "Adoquín de Granito", + "block.create.granite_cobblestone_slab": "Losa de Adoquín de Granito", + "block.create.granite_cobblestone_stairs": "Escaleras de Adoquín de Granito", + "block.create.granite_cobblestone_wall": "Muro de Adoquín de Granito", + "block.create.granite_pillar": "Pilar de Granito", + "block.create.gray_nixie_tube": "Tubo Nixie Gris", + "block.create.gray_sail": "vela Gris", + "block.create.gray_seat": "Asiento Gris", + "block.create.gray_toolbox": "Caja de Herrameintas Gris", + "block.create.gray_valve_handle": "Válvula Gris", + "block.create.green_nixie_tube": "Tubo Nixie Verde", + "block.create.green_sail": "Vela Verde", + "block.create.green_seat": "Asiento Verde", + "block.create.green_toolbox": "Caja de Herramientas Verde", + "block.create.green_valve_handle": "Válvula Verde", + "block.create.hand_crank": "Manivela", + "block.create.haunted_bell": "Campana Embrujada", + "block.create.honey": "Miel", + "block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal", + "block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal", + "block.create.hose_pulley": "Polea Manguera", + "block.create.item_drain": "Drenaje", + "block.create.jungle_window": "Ventana de Jungla", + "block.create.jungle_window_pane": "Panel de Ventana de Jungla", + "block.create.large_cogwheel": "Engranaje Grande", + "block.create.layered_andesite": "Capa de Andesita", + "block.create.layered_dark_scoria": "Capa de Escoria Oscura", + "block.create.layered_diorite": "Capa de Diorita", + "block.create.layered_dolomite": "Capa de Dolomita", + "block.create.layered_gabbro": "Capa de Gabro", + "block.create.layered_granite": "Capa de Granito", + "block.create.layered_limestone": "Capa de Piedra Caliza", + "block.create.layered_scoria": "Capa de Escoria", + "block.create.layered_weathered_limestone": "Capa de Piedra Caliza", + "block.create.lectern_controller": "Controlador de Atril", + "block.create.light_blue_nixie_tube": "Tubo Nixie Azul Claro", + "block.create.light_blue_sail": "Vela Azul Claro", + "block.create.light_blue_seat": "Asiento Azul Claro", + "block.create.light_blue_toolbox": "Caja de Herramientas Azul Claro", + "block.create.light_blue_valve_handle": "Válvula Azul Claro", + "block.create.light_gray_nixie_tube": "Tubo Nixie Gris Claro", + "block.create.light_gray_sail": "Vela Gris Claro", + "block.create.light_gray_seat": "Asiento Gris Claro", + "block.create.light_gray_toolbox": "Caja de Herramientas Gris Claro", + "block.create.light_gray_valve_handle": "Válvula Gris Claro", + "block.create.lime_nixie_tube": "Tubo Nixie Lima", + "block.create.lime_sail": "Vela Lima", + "block.create.lime_seat": "Asiento Lima", + "block.create.lime_toolbox": "Caja de herramientas Lima", + "block.create.lime_valve_handle": "Válvula Lima", + "block.create.limesand": "Arena Caliza", + "block.create.limestone": "Piedra Caliza", + "block.create.limestone_bricks": "Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_stairs": "Losa de Ladrillos de Piedra Caliza", + "block.create.limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza", + "block.create.limestone_cobblestone": "Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_slab": "Losa de Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_stairs": "Escaleras de Adoquín de Piedra Caliza", + "block.create.limestone_cobblestone_wall": "Muro de Adoquín de Piedra Caliza", + "block.create.limestone_pillar": "Pilar de Piedra Caliza", + "block.create.linear_chassis": "Chasis Lineal", + "block.create.lit_blaze_burner": "Quemador Blaze Encendido", + "block.create.magenta_nixie_tube": "Tubo Nixie Magenta", + "block.create.magenta_sail": "Vela Magenta", + "block.create.magenta_seat": "Asiento Magenta", + "block.create.magenta_toolbox": "Caja de Herramientas Magenta", + "block.create.magenta_valve_handle": "Válvula Magenta", + "block.create.mechanical_arm": "Brazo Mecánico", + "block.create.mechanical_bearing": "Rodamiento Mecánico", + "block.create.mechanical_crafter": "Crafteador Mecánico", + "block.create.mechanical_drill": "Taladro Mecánico", + "block.create.mechanical_harvester": "Cosechadora Mecánica", + "block.create.mechanical_mixer": "Mezcladora Mecánica", + "block.create.mechanical_piston": "Pistón Mecánico", + "block.create.mechanical_piston_head": "Cabeza de Pistón Mecánico", + "block.create.mechanical_plough": "Arador Mecánico", + "block.create.mechanical_press": "Prensa Mecánica", + "block.create.mechanical_pump": "Bomba Mecánica", + "block.create.mechanical_saw": "Sierra Mecánica", + "block.create.metal_bracket": "Soporte Metálico", + "block.create.millstone": "Piedra de Molino", + "block.create.minecart_anchor": "Ancla de Vagoneta", + "block.create.mossy_andesite": "Andesita Musgosa", + "block.create.mossy_dark_scoria": "Escoria Oscura Musgosa", + "block.create.mossy_diorite": "Diorita Musgosa", + "block.create.mossy_dolomite": "Dolomita Musgosa", + "block.create.mossy_gabbro": "Gabro Musgoso", + "block.create.mossy_granite": "Granito Musgoso", + "block.create.mossy_limestone": "Piedra Caliza Musgosa", + "block.create.mossy_scoria": "Escoria Musgosa", + "block.create.mossy_weathered_limestone": "Piedra Caliza Erosionada Musgosa", + "block.create.mysterious_cuckoo_clock": "Reloj Cu-Cú", + "block.create.natural_scoria": "Escoria Natural", + "block.create.nixie_tube": "Tubo Nixie", + "block.create.nozzle": "Boquilla", + "block.create.oak_window": "Ventana de Roble", + "block.create.oak_window_pane": "Panel de Ventana de Roble", + "block.create.orange_sail": "Vela Naranja", + "block.create.orange_seat": "Asiento Naranja", + "block.create.orange_toolbox": "Caja de Herramientas Naranja", + "block.create.orange_valve_handle": "Válvula Naranja", + "block.create.ornate_iron_window": "Ventana de Hierro Adornada", + "block.create.ornate_iron_window_pane": "Panel de Ventana de Hierro Adornada", + "block.create.overgrown_andesite": "Andesita Descuidada", + "block.create.overgrown_dark_scoria": "Escoria Oscura Descuidada", + "block.create.overgrown_diorite": "Diorita Descuidada", + "block.create.overgrown_dolomite": "Dolomita Descuidada", + "block.create.overgrown_gabbro": "Gabro Descuidado", + "block.create.overgrown_granite": "Granito Descuidado", + "block.create.overgrown_limestone": "Piedra Caliza Descuidada", + "block.create.overgrown_scoria": "Escoria Descuidada", + "block.create.overgrown_weathered_limestone": "Piedra Caliza Erosionada Descuidada", + "block.create.paved_andesite": "Andesita Pavimentada", + "block.create.paved_andesite_slab": "Losa de Andesita Pavimentada", + "block.create.paved_andesite_stairs": "Escaleras de Andesita Pavimentada", + "block.create.paved_andesite_wall": "Muro de Andesita Pavimentada", + "block.create.paved_dark_scoria": "Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_slab": "Losa de Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_stairs": "Escaleras de Escoria Oscura Pavimentada", + "block.create.paved_dark_scoria_wall": "Muro de Escoria Oscura Pavimentada", + "block.create.paved_diorite": "Diorita Pavimentada", + "block.create.paved_diorite_slab": "Losa de Diorita Pavimentada", + "block.create.paved_diorite_stairs": "Escaleras de Diorita Pavimentada", + "block.create.paved_diorite_wall": "Muro de Diorita Pavimentada", + "block.create.paved_dolomite": "Dolomita Pavimentada", + "block.create.paved_dolomite_slab": "Losa de Dolomita Pavimentada", + "block.create.paved_dolomite_stairs": "Escaleras de Dolomita Pavimentada", + "block.create.paved_dolomite_wall": "Muro de Dolomita Pavimentada", + "block.create.paved_gabbro": "Gabro Pavimentado", + "block.create.paved_gabbro_slab": "Losa de Gabro Pavimentado", + "block.create.paved_gabbro_stairs": "Escaleras de Gabro Pavimentado", + "block.create.paved_gabbro_wall": "Muro de Gabro Pavimentado", + "block.create.paved_granite": "Granito Pavimentado", + "block.create.paved_granite_slab": "Losa de Granito Pavimentado", + "block.create.paved_granite_stairs": "Escaleras de Granito Pavimentado", + "block.create.paved_granite_wall": "Muro de Granito Pavimentado", + "block.create.paved_limestone": "Piedra Caliza Pavimentada", + "block.create.paved_limestone_slab": "Losa de Piedra Caliza Pavimentada", + "block.create.paved_limestone_stairs": "Escaleras de Piedra Caliza Pavimentada", + "block.create.paved_limestone_wall": "Muros de Piedra Caliza Pavimentada", + "block.create.paved_scoria": "Escoria Pavimentada", + "block.create.paved_scoria_slab": "Losa de Escoria Pavimentada", + "block.create.paved_scoria_stairs": "Escaleras de Escoria Pavimentada", + "block.create.paved_scoria_wall": "Muro de Escoria Pavimentada", + "block.create.paved_weathered_limestone": "Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_slab": "Losa de Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_stairs": "Escaleras de Piedra Caliza Erosionada Pavimentada", + "block.create.paved_weathered_limestone_wall": "Muro de Piedra Caliza Erosionada Pavimentada", + "block.create.peculiar_bell": "Campana Peculiar", + "block.create.pink_nixie_tube": "Tubo Nixie Rosado", + "block.create.pink_sail": "Vela Rosada", + "block.create.pink_seat": "Asiento Rosado", + "block.create.pink_toolbox": "Caja de Herramientas Rosada", + "block.create.pink_valve_handle": "Válvula Rosada", + "block.create.piston_extension_pole": "Poste de Extensión de Pistón", + "block.create.polished_dark_scoria": "Escoria Oscura Pulida", + "block.create.polished_dark_scoria_slab": "Losa de Escoria Oscura Pulida", + "block.create.polished_dark_scoria_stairs": "Escaleras de Escoria Oscura Pulida", + "block.create.polished_dark_scoria_wall": "Muro de Escoria Oscura Pulida", + "block.create.polished_dolomite": "Dolomita Pulida", + "block.create.polished_dolomite_slab": "Losa de Dolomita Pulida", + "block.create.polished_dolomite_stairs": "Escaleras de Dolomita Pulida", + "block.create.polished_dolomite_wall": "Muro de Dolomita Pulida", + "block.create.polished_gabbro": "Gabro Pulido", + "block.create.polished_gabbro_slab": "Losa de de Gabro Pulido", + "block.create.polished_gabbro_stairs": "Escaleras de Gabro Pulido", + "block.create.polished_gabbro_wall": "Muro de Gabro Pulido", + "block.create.polished_limestone": "Piedra Caliza Pulida", + "block.create.polished_limestone_slab": "Losa de Piedra Caliza Pulida", + "block.create.polished_limestone_stairs": "Escaleras de Piedra Caliza Pulida", + "block.create.polished_limestone_wall": "Muro de Piedra Caliza Pulida", + "block.create.polished_scoria": "Escoria Pulida", + "block.create.polished_scoria_slab": "Losa de Escoria Pulida", + "block.create.polished_scoria_stairs": "Escaleras de Escoria Pulida", + "block.create.polished_scoria_wall": "Muro de Escoria Pulida", + "block.create.polished_weathered_limestone": "Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_slab": "Losa de Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_stairs": "Escaleras de Piedra Caliza Erosionada Pulida", + "block.create.polished_weathered_limestone_wall": "Muro de Piedra Caliza Erosionada Pulida", + "block.create.portable_fluid_interface": "Interfaz de Fluidos Portable", + "block.create.portable_storage_interface": "Interfaz de Almacenamientos Portable", + "block.create.powered_latch": "Cerrojo de Redstone", + "block.create.powered_toggle_latch": "Cerrojo Palanca de Redstone", + "block.create.pulley_magnet": "Imán de la Polea", + "block.create.pulse_repeater": "Repetidor de Pulso", + "block.create.purple_nixie_tube": "Tubo Nixie Morado", + "block.create.purple_sail": "Vela Morada", + "block.create.purple_seat": "Asiento Morado", + "block.create.purple_toolbox": "Caja de Herramientas Morada", + "block.create.purple_valve_handle": "Válvula Morada", + "block.create.radial_chassis": "Chasis Radial", + "block.create.red_nixie_tube": "Tubo Nixie Rojo", + "block.create.red_sail": "Vela Roja", + "block.create.red_seat": "Asiento Rojo", + "block.create.red_toolbox": "Caja de Herramientas Roja", + "block.create.red_valve_handle": "Válvula Roja", + "block.create.redstone_contact": "Contacto de Redstone", + "block.create.redstone_link": "Enlace de Redstone", + "block.create.refined_radiance_casing": "Cubierta Radiante", + "block.create.reinforced_rail": "Raíl Reforzado", + "block.create.rope": "Cuerda", + "block.create.rope_pulley": "Polea de Cuerda", + "block.create.rotation_speed_controller": "Controlador de Velocidad de Rotación", + "block.create.sail_frame": "Marco de Vela", + "block.create.schematic_table": "Mesa de Esquemas", + "block.create.schematicannon": "Esquemacañón", + "block.create.scoria": "Escoria", + "block.create.scoria_bricks": "Ladrillos de Escoria", + "block.create.scoria_bricks_slab": "Losa de Ladrillos de Escoria", + "block.create.scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria", + "block.create.scoria_bricks_wall": "Muro de Ladrillos de Escoria", + "block.create.scoria_cobblestone": "Adoquín de Escoria", + "block.create.scoria_cobblestone_slab": "Losa de Adoquín de Escoria", + "block.create.scoria_cobblestone_stairs": "Escaleras de Adoquín de Escoria", + "block.create.scoria_cobblestone_wall": "Muro de Adoquín de Escoria", + "block.create.scoria_pillar": "Pilar de Escoria", + "block.create.secondary_linear_chassis": "Chasis Lineal Secundario", + "block.create.sequenced_gearshift": "Caja de Cambios Secuenciada", + "block.create.shadow_steel_casing": "Cubierta de Sombra", + "block.create.shaft": "Eje", + "block.create.smart_chute": "Tolvogán Inteligente", + "block.create.smart_fluid_pipe": "Tubería de Fluidos Inteligente", + "block.create.speedometer": "Velocímetro", + "block.create.spout": "Surtidor", + "block.create.spruce_window": "Ventana de Abeto", + "block.create.spruce_window_pane": "Panel de Ventana de Abeto", + "block.create.sticker": "Pegador", + "block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso", + "block.create.stockpile_switch": "Interruptor de Reservas", + "block.create.stressometer": "Estresómetro", + "block.create.tiled_glass": "Vidrio Baldosa", + "block.create.tiled_glass_pane": "Panel de Vidrio Baldosa", + "block.create.turntable": "Plato Giratorio", + "block.create.vertical_framed_glass": "Vidrio Baldosa Vertical", + "block.create.vertical_framed_glass_pane": "Panel de Vidrio Baldosa Vertical", + "block.create.warped_window": "Ventana Distorsionada", + "block.create.warped_window_pane": "Panel de Ventana Distorsionada", + "block.create.water_wheel": "Rueda de Agua", + "block.create.weathered_limestone": "Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks": "Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_slab": "Losa de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_stairs": "Escaledas de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_bricks_wall": "Muro de Ladrillos de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone": "Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_slab": "Losa de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_stairs": "Escalera de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_cobblestone_wall": "Muro de Adoquín de Piedra Caliza Erosionada", + "block.create.weathered_limestone_pillar": "Pilar de Piedra Caliza Erosionada", + "block.create.weighted_ejector": "Eyector por Peso", + "block.create.white_nixie_tube": "Tubo Nixie Blanco", + "block.create.white_sail": "Vela Blanca", + "block.create.white_seat": "Asiento Blanco", + "block.create.white_toolbox": "Caja de Herramientas Blanca", + "block.create.white_valve_handle": "Válvula Blanca", + "block.create.windmill_bearing": "Rodamiento de Molino de Viento", + "block.create.wooden_bracket": "Soporte de Madera", + "block.create.yellow_nixie_tube": "Tubo Nixie Amarillo", + "block.create.yellow_sail": "Vela Amarilla", + "block.create.yellow_seat": "Asiento Amarillo", + "block.create.yellow_toolbox": "Caja de Herramientas Amarilla", + "block.create.yellow_valve_handle": "Válvula Amarilla", + "block.create.zinc_block": "Bloque de Zinc", + "block.create.zinc_ore": "Mineral de Zinc", + + "enchantment.create.capacity": "Capacidad", + "enchantment.create.potato_recovery": "Recuperación de papas", + + "entity.create.contraption": "Artefacto", + "entity.create.crafting_blueprint": "Crafteando Planos", + "entity.create.gantry_contraption": "Artefacto de Grúa", + "entity.create.potato_projectile": "Projectil de papa", + "entity.create.seat": "Asiento", + "entity.create.stationary_contraption": "Artefacto Estacionario", + "entity.create.super_glue": "La Gotita", + + "fluid.create.potion": "Poción", + "fluid.create.tea": "Té del Constructor", + + "item.create.andesite_alloy": "Aleación de Andesita", + "item.create.attribute_filter": "Filtro de Atributos", + "item.create.bar_of_chocolate": "Barra de Chocolate", + "item.create.belt_connector": "Cinta Mecánica", + "item.create.blaze_cake": "Pastel Blaze", + "item.create.blaze_cake_base": "Base del Pastel Blaze", + "item.create.brass_hand": "Mano de Latón", + "item.create.brass_ingot": "Lingote de Latón", + "item.create.brass_nugget": "Nugget de Latón", + "item.create.brass_sheet": "Plancha de Latón", + "item.create.builders_tea": "Té del Constructor", + "item.create.chest_minecart_contraption": "Contrapción de Vagoneta con Cofre", + "item.create.chocolate_bucket": "Balde de Chocolate", + "item.create.chocolate_glazed_berries": "Bayas Bañadas en Chocolate", + "item.create.chromatic_compound": "Compuesto Cromático", + "item.create.cinder_flour": "Harina de Cenizas", + "item.create.copper_backtank": "Mochila-Tanque de Cobre", + "item.create.copper_ingot": "Lingote de Cobre", + "item.create.copper_nugget": "Nugget de Cobre", + "item.create.copper_sheet": "Plancha de Cobre", + "item.create.crafter_slot_cover": "Cubre Ranuras", + "item.create.crafting_blueprint": "Plano de Fabricación", + "item.create.creative_blaze_cake": "Pastel Blaze del Creativo", + "item.create.crushed_aluminum_ore": "Mineral de Aluminio Triturado", + "item.create.crushed_brass": "Latón Triturado", + "item.create.crushed_copper_ore": "Mineral de Cobre Triturado", + "item.create.crushed_gold_ore": "Mineral de Oro Triturado", + "item.create.crushed_iron_ore": "Mineral de Hierro Triturado", + "item.create.crushed_lead_ore": "Mineral de Plomo Triturado", + "item.create.crushed_nickel_ore": "Mineral de Níquel Triturado", + "item.create.crushed_osmium_ore": "Mineral de Osmio Triturado", + "item.create.crushed_platinum_ore": "Mineral de Platino Triturado", + "item.create.crushed_quicksilver_ore": "Mineral de Mercurio Triturado", + "item.create.crushed_silver_ore": "Mineral de Plata Triturado", + "item.create.crushed_tin_ore": "Mineral de Estaño Triturado", + "item.create.crushed_uranium_ore": "Mineral de Uranio Triturado", + "item.create.crushed_zinc_ore": "Mineral de Zinc Triturado", + "item.create.diving_boots": "Botas de Buceo", + "item.create.diving_helmet": "Casco de Buceo", + "item.create.dough": "Masa", + "item.create.electron_tube": "Tubo de Electrones", + "item.create.empty_blaze_burner": "Quemador Blaze Vacío", + "item.create.empty_schematic": "Esquema Vacío", + "item.create.extendo_grip": "Agarrextensor", + "item.create.filter": "Filtro", + "item.create.furnace_minecart_contraption": "Contrapción de Vagoneta con Horno", + "item.create.goggles": "Lentes del Ingeniero", + "item.create.golden_sheet": "Plancha Dorada", + "item.create.handheld_worldshaper": "Forma Mundos del Creativo", + "item.create.honey_bucket": "Balde de Miel", + "item.create.honeyed_apple": "Manzana Enmielada", + "item.create.incomplete_cogwheel": "Engranaje Incompleto", + "item.create.incomplete_large_cogwheel": "Engranaje Grande Incompleto", + "item.create.incomplete_precision_mechanism": "Mecanismo de Precisión Incompleto", + "item.create.iron_sheet": "Plancha de Hierro", + "item.create.linked_controller": "Controlador Vinculable", + "item.create.minecart_contraption": "Contrapción de Vagoneta", + "item.create.minecart_coupling": "Acoplamiento de Vagonetas", + "item.create.polished_rose_quartz": "Cuarzo Rosa Pulido", + "item.create.potato_cannon": "Cañón de Papas", + "item.create.powdered_obsidian": "Obsidiana Pulverizada", + "item.create.precision_mechanism": "Mecanismo de Precisión", + "item.create.propeller": "Hélice", + "item.create.red_sand_paper": "Papel de Arena Roja", + "item.create.refined_radiance": "Radiancia Refinada", + "item.create.rose_quartz": "Cuarzo Rosa", + "item.create.sand_paper": "Papel de Arena", + "item.create.schematic": "Esquema", + "item.create.schematic_and_quill": "Esquema con Pluma", + "item.create.shadow_steel": "Acero Sombrío", + "item.create.super_glue": "La Gotita", + "item.create.sweet_roll": "Rollito Dulce", + "item.create.tree_fertilizer": "Fertilizante Arbóreo", + "item.create.vertical_gearbox": "Caja de Engranajes Vertical", + "item.create.wand_of_symmetry": "Vara de Simetría", + "item.create.wheat_flour": "Harina de Trigo", + "item.create.whisk": "Batidor", + "item.create.wrench": "Llave Inglesa", + "item.create.zinc_ingot": "Lingote de Zinc", + "item.create.zinc_nugget": "Nugget de Zinc", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "Bienvenido a Create", + "advancement.create.root.desc": "¡Es hora de empezar a construir algunas contrapciones increíbles!", + "advancement.create.andesite_alloy": "Aliteración Abundante", + "advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.", + "advancement.create.its_alive": "¡Está Vivo!", + "advancement.create.its_alive.desc": "Observa girar a tu primer componente cinético. (Qué hermoso.)", + "advancement.create.shifting_gears": "Engranajes Cambiantes", + "advancement.create.shifting_gears.desc": "Conecta un engranaje grande a uno pequeño, permitiendo cambiar la velocidad de tu contrapción.", + "advancement.create.overstressed": "¡Sobre-Estresado!", + "advancement.create.overstressed.desc": "Experimenta los límites del sobreestrés de primera mano.", + "advancement.create.belt": "Unidad de Algas", + "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", + "advancement.create.tunnel": "¡A cubierto!", + "advancement.create.tunnel.desc": "Embellece tu cinta mecánica con un Túnel.", + "advancement.create.splitter_tunnel": "Divide y Conquista", + "advancement.create.splitter_tunnel.desc": "Crea un divisor con un conjunto de túneles de latón.", + "advancement.create.chute": "Viniendose Abajo", + "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", + "advancement.create.upward_chute": "Abducción Aérea", + "advancement.create.upward_chute.desc": "Observa cómo un objeto arrojado vuela hacia un tolvogán impulsado por un ventilador.", + "advancement.create.belt_funnel": "Aletas Colgantes", + "advancement.create.belt_funnel.desc": "Coloca un ingreso lateral sobre una cinta mecánica o depósito para crear un tipo especial de ingreso.", + "advancement.create.belt_funnel_kiss": "¡Son Cintololos!", + "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", + "advancement.create.fan": "El Maestro del Aire Mecánico", + "advancement.create.fan.desc": "Monta la corriente de aire proporcionada por un ventilador mecánico.", + "advancement.create.fan_lava": "Calentador de Espacio Geotérmico", + "advancement.create.fan_lava.desc": "Quédate atrapado en una corriente de aire que derrite cosas.", + "advancement.create.fan_water": "Lavados Locos", + "advancement.create.fan_water.desc": "Quédate atrapado en una corriente de aire que lava cosas.", + "advancement.create.fan_smoke": "Fuelles Mecánicos", + "advancement.create.fan_smoke.desc": "Quédate atrapado en una corriente de aire que ahuma cosas.", + "advancement.create.wrench": "Configura Convenientemente", + "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus contrapciones.", + "advancement.create.goggles": "Visión Estresada", + "advancement.create.goggles.desc": "Crea lentes de ingeniero, que te ayudan a obtener más información cinética de los componentes.", + "advancement.create.speedometer": "Pero, ¿qué tan rápido exactamente?", + "advancement.create.speedometer.desc": "Coloca y dale poder a un velocímetro. Míralo con tus gafas para leer el número exacto.", + "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", + "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", + "advancement.create.aesthetics": "Bum, estética!", + "advancement.create.aesthetics.desc": "Coloca soportes en un eje, tubería y engranaje.", + "advancement.create.reinforced": "Bum, reforzado!", + "advancement.create.reinforced.desc": "Utiliza bloques de cubierta en un eje, tubería y cinta mecánica.", + "advancement.create.water_wheel": "Aprovechando la Hidráulica", + "advancement.create.water_wheel.desc": "¡Pon una rueda de agua e intenta hacer que gire!", + "advancement.create.chocolate_wheel": "Poder de buen gusto", + "advancement.create.chocolate_wheel.desc": "Haz funcionar una rueda de agua con... chocolate.", + "advancement.create.lava_wheel": "Rueda Magmática", + "advancement.create.lava_wheel.desc": "Ni siquiera debería haber funcionado.", + "advancement.create.cuckoo": "¿Ya es hora?", + "advancement.create.cuckoo.desc": "Sé testigo de cómo un reloj cu-cú anuncia la hora de acostarse. ¡A la cama!", + "advancement.create.millstone": "Trituradora de Bolsillo", + "advancement.create.millstone.desc": "Coloca y dale poder a una Piedra de Molino.", + "advancement.create.windmill": "Una leve brisa", + "advancement.create.windmill.desc": "Arma un molino.", + "advancement.create.maxed_windmill": "Una fuerte brisa", + "advancement.create.maxed_windmill.desc": "Arma un molino con su fuerza máxima.", + "advancement.create.andesite_casing": "La Edad de la Andesita", + "advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.", + "advancement.create.mechanical_drill": "Destructores Estacionarios", + "advancement.create.mechanical_drill.desc": "Coloca y dale poder a un Taladro Mecánico.", + "advancement.create.press": "Prensa Hidráulica de 1000 Kg contra este Trozo de Hierro", + "advancement.create.press.desc": "Dale poder a una prensa mecánica y utilízala para crear algunas planchas.", + "advancement.create.polished_rose_quartz": "Diamantes Rosados", + "advancement.create.polished_rose_quartz.desc": "Usa un trozo de papel de arena para pulir el cuarzo rosa hasta que se vuelva transparente.", + "advancement.create.electron_tube": "Bip Bup", + "advancement.create.electron_tube.desc": "Haz algunos Tubos de Electrones, útiles para crear maquinas un tanto menos... primitivas.", + "advancement.create.mechanical_saw": "Talado Estacionario", + "advancement.create.mechanical_saw.desc": "Coloca y dale poder a una Sierra Mecánica", + "advancement.create.basin": "Operación Tónel", + "advancement.create.basin.desc": "Pon una tónel y prueba a tirar algo dentro.", + "advancement.create.mixer": "Mezclando la cosa", + "advancement.create.mixer.desc": "Coloca una Mezcladora Mecánica sobre una tónel, enciéndela y comienza a mezclar algunos ingredientes.", + "advancement.create.blaze_burner": "Una fogata viviente", + "advancement.create.blaze_burner.desc": "Obtén un Quemador Blaze.", + "advancement.create.compact": "Compactado Automático", + "advancement.create.compact.desc": "Usa una Prensa y una tónel para compactar algunos objetos.", + "advancement.create.brass": "Aleaciones de verdad", + "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", + "advancement.create.brass_casing": "La Edad del Latón", + "advancement.create.brass_casing.desc": "Utiliza tu latón recién obtenido y un poco de madera para crear una cubierta más avanzada.", + "advancement.create.copper_casing": "La Edad del Cobre", + "advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.", + "advancement.create.spout": "Splash", + "advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.", + "advancement.create.spout_potion": "Destilería global", + "advancement.create.spout_potion.desc": "Observa como un surtidor llena una botella con líquido de poción", + "advancement.create.chocolate": "Un mundo de Imaginación", + "advancement.create.chocolate.desc": "Obtén un balde de Chocolate Derretido", + "advancement.create.item_drain": "Drenaje por Caída", + "advancement.create.item_drain.desc": "Observa un objeto ser vaciado por un drenaje.", + "advancement.create.chained_item_drain": "¡Déjalo estar!", + "advancement.create.chained_item_drain.desc": "Observa cómo un objeto pasa por varios drenajes encadenados.", + "advancement.create.glass_pipe": "Flujo Espía", + "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.", + "advancement.create.pipe_collision": "¡Nunca cruces el Río!", + "advancement.create.pipe_collision.desc": "Observa dos fluidos coincidir en tu red de tuberías.", + "advancement.create.pipe_spill": "¡Hay una fuga!", + "advancement.create.pipe_spill.desc": "Observa el final de una tubería tomar o colocar fluidos en el mundo.", + "advancement.create.hose_pulley": "Derrame industrial", + "advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.", + "advancement.create.infinite_water": "Drenando el Oceano", + "advancement.create.infinite_water.desc": "Bombea de un cuerpo de agua lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.infinite_lava": "Drenando el Centro de la Tierra", + "advancement.create.infinite_lava.desc": "Bombea de un cuerpo de lava lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.infinite_chocolate": "Ahogándose en imaginación", + "advancement.create.infinite_chocolate.desc": "Bombea de un cuerpo de chocolate lo suficientemente grande como para ser considerado Infinito.", + "advancement.create.crafter": "Ensamblaje Automático", + "advancement.create.crafter.desc": "Coloca y dale poder a algunos Crafteadores Mecánicos.", + "advancement.create.clockwork_bearing": "Contrapción en Punto", + "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", + "advancement.create.nixie_tube": "Señales de Estilo", + "advancement.create.nixie_tube.desc": "Obtén y coloca un par de Tubos Nixie.", + "advancement.create.deployer": "Toca, Coloca y Ataca", + "advancement.create.deployer.desc": "Coloca y dale poder a un Desplegador, la perfecta reflexión de tí mismo.", + "advancement.create.speed_controller": "¡Los ingenieros lo odian!", + "advancement.create.speed_controller.desc": "Pon un Controlador de Velocidad de Rotación, el último dispositivo del mercado para el engranaje moderno.", + "advancement.create.flywheel": "El Corazón de la Fábrica", + "advancement.create.flywheel.desc": "Conecte con éxito un horno motor al volante de inercia.", + "advancement.create.overstress_flywheel": "Altos niveles de estrés", + "advancement.create.overstress_flywheel.desc": "Sobreestresa un horno motor.", + "advancement.create.precision_mechanism": "Curiosidades Complejas", + "advancement.create.precision_mechanism.desc": "Ensambla un Mecanismo de Precisión.", + "advancement.create.mechanical_arm": "¡Manos Ocupadas!", + "advancement.create.mechanical_arm.desc": "Construye un brazo mecánico, selecciona entradas y salidas, colócalo y dale poder; entonces, observa como hace todo el trabajo por tí.", + "advancement.create.musical_arm": "¡Póneme mi tema principal!", + "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", + "advancement.create.arm_many_targets": "Organizatrón 3000", + "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", + "advancement.create.arm_blaze_burner": "Combustrón 3001", + "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", + "advancement.create.fist_bump": "¡Dame el puño, hermano!", + "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", + "advancement.create.crushing_wheel": "Un par de Gigantes", + "advancement.create.crushing_wheel.desc": "Crea ruedas trituradoras para descomponer los materiales de manera más efectiva.", + "advancement.create.blaze_cake": "Rush de Azúcar", + "advancement.create.blaze_cake.desc": "Preparale a tu Quemador Blaze un pastel especial.", + "advancement.create.chromatic_compound": "Minerales Misteriosos", + "advancement.create.chromatic_compound.desc": "Crea una barra de Compuesto Cromático.", + "advancement.create.shadow_steel": "Retorno Vacío", + "advancement.create.shadow_steel.desc": "Crea Acero Sombrío, una barra de nada.", + "advancement.create.refined_radiance": "Brillante e Inspirador", + "advancement.create.refined_radiance.desc": "Crea Radiancia Refinada, una poderosa sustancia cromática.", + "advancement.create.chromatic_age": "La Edad Cromática", + "advancement.create.chromatic_age.desc": "Crea bloques de cubierta de la luz y de la oscuridad.", + "advancement.create.wand_of_symmetry": "Espejos Radiantes", + "advancement.create.wand_of_symmetry.desc": "Crea la Vara de Simetría.", + "advancement.create.extendo_grip": "¡Boioioing!", + "advancement.create.extendo_grip.desc": "Sostén un Agarrextensor.", + "advancement.create.potato_cannon": "¡Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.", + "advancement.create.dual_extendo_grip": "Boing: El último boioioing.", + "advancement.create.dual_extendo_grip.desc": "Sostén dos Agarrextensores para un alcance inhumano.", + "advancement.create.eob": "Fin de la Beta", + "advancement.create.eob.desc": "Espera encontrar más contenido aquí en el futuro. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Create Palettes", + + "death.attack.create.crush": "%1$s fué procesado por Ruedas Trituradoras", + "death.attack.create.crush.player": "%1$sfue tirado dentro de Ruedas Trituradoras por %2$s", + "death.attack.create.fan_fire": "%1$s se ahumó con un Ventilador", + "death.attack.create.fan_fire.player": "%1$s fué tirado dentro de un ahumador por %2$s", + "death.attack.create.fan_lava": "%1$s fué incinerado por un Ventilador", + "death.attack.create.fan_lava.player": "%1$s fué tirado dentro de una derretidora por %2$s", + "death.attack.create.mechanical_drill": "%1$s fué empalado por un Taladro Mecánico", + "death.attack.create.mechanical_drill.player": "%1$s fué tirado en frente de un Taladro por %2$s", + "death.attack.create.mechanical_saw": "%1$s fué cortado por la mitad por Sierra Mecánica", + "death.attack.create.mechanical_saw.player": "%1$s fué lanzado dentro de una Sierra por %2$s", + "death.attack.create.potato_cannon": "%1$s fue disparado por el Cañón de Papas de %2$s", + "death.attack.create.potato_cannon.item": "%1$s fué disparado por %2$s usando %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s fué reventado por el reloj cu-cú manipulado", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s fué reventado por el reloj cu-cú manipulado", + + "create.block.deployer.damage_source_name": "Un Desplegador pillo", + "create.block.cart_assembler.invalid": "Coloca tu ensamblador de Vagonetas en un bloque de rieles", + + "create.menu.return": "Volver al Menú", + "create.menu.configure": "Configurar...", + "create.menu.ponder_index": "Reflexionar el índice", + "create.menu.only_ingame": "Disponible en el menú de pausa", + "create.menu.project_page": "Página del Proyecto", + "create.menu.report_bugs": "Reportar Problemas", + "create.menu.support": "Apóyanos", + + "create.recipe.crushing": "Triturando", + "create.recipe.milling": "Moliendo", + "create.recipe.fan_washing": "Lavando", + "create.recipe.fan_washing.fan": "Ventilador detrás de una Corriente de Agua", + "create.recipe.fan_smoking": "Ahumado", + "create.recipe.fan_smoking.fan": "Ventilador tras Fuego", + "create.recipe.fan_blasting": "Fundición", + "create.recipe.fan_blasting.fan": "Ventilador tras Lava", + "create.recipe.pressing": "Prensando", + "create.recipe.mixing": "Mezclando", + "create.recipe.deploying": "Desplegando", + "create.recipe.automatic_shapeless": "Crafteo Automatizada sin Forma", + "create.recipe.automatic_brewing": "Preparación Automática", + "create.recipe.packing": "Compactando", + "create.recipe.automatic_packing": "Campactación Automática", + "create.recipe.sawing": "Aserrando", + "create.recipe.mechanical_crafting": "Crafteo Mecánico", + "create.recipe.automatic_shaped": "Crafteo Automático con Forma", + "create.recipe.block_cutting": "Cartando Bloques", + "create.recipe.wood_cutting": "Cortando Madera", + "create.recipe.sandpaper_polishing": "Pulido de Papel de Arena", + "create.recipe.mystery_conversion": "Conversión Misteriosa", + "create.recipe.spout_filling": "Llenado por Surtidor", + "create.recipe.draining": "Drenaje de Objeto", + "create.recipe.sequenced_assembly": "Ensamblaje Secuenciado", + "create.recipe.assembly.next": "Siguiente: %1$s", + "create.recipe.assembly.step": "Paso %1$s:", + "create.recipe.assembly.progress": "Progreso: %1$s/%2$s", + "create.recipe.assembly.pressing": "Procesar en prensa", + "create.recipe.assembly.spout_filling_fluid": "Surte %1$s", + "create.recipe.assembly.deploying_item": "Despliega %1$s", + "create.recipe.assembly.cutting": "Corta con Sierra", + "create.recipe.assembly.repeat": "Repetir Secuencia %1$s Veces", + "create.recipe.assembly.junk": "Chatarra Aleatoria", + "create.recipe.processing.chance": "%1$s%% Probabilidad", + "create.recipe.deploying.not_consumed": "No Consumido", + "create.recipe.heat_requirement.none": "No requiere calor", + "create.recipe.heat_requirement.heated": "Calentado", + "create.recipe.heat_requirement.superheated": "Super-Calentado", + + "create.generic.range": "Rango", + "create.generic.radius": "Radio", + "create.generic.width": "Ancho", + "create.generic.height": "Altura", + "create.generic.length": "Largo", + "create.generic.speed": "Velocidad", + "create.generic.delay": "Retraso", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Segundos", + "create.generic.unit.minutes": "Minutos", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "us", + "create.generic.unit.degrees": "°", + "create.generic.unit.millibuckets": "%1$smB", + "create.generic.clockwise": "En sentido del Reloj", + "create.generic.counter_clockwise": "Al contrario del Reloj", + + "create.action.scroll": "Rueda", + "create.action.confirm": "Confirmar", + "create.action.abort": "Abortar", + "create.action.saveToFile": "Guardar", + "create.action.discard": "Descartar", + + "create.keyinfo.toolmenu": "Fijarse en el Overlay del esquema", + "create.keyinfo.toolbelt": "Acceder a cajas de Herramientas cercanas", + "create.keyinfo.scrollup": "Simular Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "Simular Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Elije una opción:", + "create.gui.scrollInput.scrollToModify": "Rueda para modificar", + "create.gui.scrollInput.scrollToAdjustAmount": "Rueda para ajustar la cantidad", + "create.gui.scrollInput.scrollToSelect": "Rueda para selecionar", + "create.gui.scrollInput.shiftScrollsFaster": "Shiftea para rodar mas rápido", + "create.gui.toolmenu.focusKey": "Mantén [%1$s] para Fijarte", + "create.gui.toolmenu.cycle": "[SCROLL] para ciclar", + + "create.toolbox.unequip": "Desequipar: %1$s", + "create.toolbox.outOfRange": "Caja de Herramientas del objeto fuera de rango", + "create.toolbox.detach": "Detener búsqueda y mantener el objeto", + "create.toolbox.depositAll": "Devolver objetos a cajas de herramientas cercanas", + "create.toolbox.depositBox": "Devolver objetos a la caja de herramientas", + + "create.gui.symmetryWand.mirrorType": "Espejo", + "create.gui.symmetryWand.orientation": "Orientación", + + "create.symmetry.mirror.plane": "Reflejar una vez", + "create.symmetry.mirror.doublePlane": "Rectangular", + "create.symmetry.mirror.triplePlane": "Octagonal", + + "create.orientation.orthogonal": "Ortogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "En el eje Z", + "create.orientation.alongX": "en el eje X", + + "create.gui.terrainzapper.title": "Blockzapper de mano", + "create.gui.terrainzapper.searchDiagonal": "Seguir Diagonales", + "create.gui.terrainzapper.searchFuzzy": "Ignorar bordes de los materiales", + "create.gui.terrainzapper.patternSection": "Patrón", + "create.gui.terrainzapper.pattern.solid": "Solido", + "create.gui.terrainzapper.pattern.checkered": "Tablero de damas", + "create.gui.terrainzapper.pattern.inversecheckered": "Tablero de damas invertido", + "create.gui.terrainzapper.pattern.chance25": "Tiro de 25%", + "create.gui.terrainzapper.pattern.chance50": "Tiro de 50%", + "create.gui.terrainzapper.pattern.chance75": "Tiro de 75%", + "create.gui.terrainzapper.placement": "Colocación", + "create.gui.terrainzapper.placement.merged": "Fusionados", + "create.gui.terrainzapper.placement.attached": "Adjuntos", + "create.gui.terrainzapper.placement.inserted": "Insertados", + "create.gui.terrainzapper.brush": "Brocha", + "create.gui.terrainzapper.brush.cuboid": "Cuboide", + "create.gui.terrainzapper.brush.sphere": "Esfera", + "create.gui.terrainzapper.brush.cylinder": "Cilindro", + "create.gui.terrainzapper.brush.surface": "Superficie", + "create.gui.terrainzapper.brush.cluster": "Grupo", + "create.gui.terrainzapper.tool": "Herramienta", + "create.gui.terrainzapper.tool.fill": "Llenar", + "create.gui.terrainzapper.tool.place": "Colocar", + "create.gui.terrainzapper.tool.replace": "Reemplazar", + "create.gui.terrainzapper.tool.clear": "Borrar", + "create.gui.terrainzapper.tool.overlay": "Overlay", + "create.gui.terrainzapper.tool.flatten": "Aplanar", + + "create.terrainzapper.shiftRightClickToSet": "Shift-Click Derecho para Seleccionar una Forma", + "create.terrainzapper.usingBlock": "Usando: %1$s", + "create.terrainzapper.leftClickToSet": "Click Izquierdo a un Bloque para elegir Material", + + "create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener mas de dos uniones cada una", + "create.minecart_coupling.unloaded": "Partes de tu tren parecen estar en chunks no cargados", + "create.minecart_coupling.no_loops": "Las uniones no puede formar un ciclo", + "create.minecart_coupling.removed": "Removidas todas las uniones de la vagoneta", + "create.minecart_coupling.too_far": "Las vagonetas estan muy separadas entre sí", + + "create.contraptions.movement_mode": "Modo de Movimiento", + "create.contraptions.movement_mode.move_place": "Siempre colocar cuando se Detiene", + "create.contraptions.movement_mode.move_place_returned": "Colocar solo en la Posición Inicial", + "create.contraptions.movement_mode.move_never_place": "Colocar solo cuando el anclaje se destruye", + "create.contraptions.movement_mode.rotate_place": "Colocar siempre que es detenido", + "create.contraptions.movement_mode.rotate_place_returned": "Colocar solo cerca del angulo inicial", + "create.contraptions.movement_mode.rotate_never_place": "Colocar solo cuando el anclaje es destruido", + "create.contraptions.cart_movement_mode": "Modo de Movimiento del Vagón", + "create.contraptions.cart_movement_mode.rotate": "Siempre apuntar en la dirección de movimiento", + "create.contraptions.cart_movement_mode.rotate_paused": "Pausar actores mientras rota", + "create.contraptions.cart_movement_mode.rotation_locked": "Bloquear Rotación", + "create.contraptions.windmill.rotation_direction": "Dirección de Rotación", + "create.contraptions.clockwork.clock_hands": "Manijas del Reloj", + "create.contraptions.clockwork.hour_first": "Horario Primero", + "create.contraptions.clockwork.minute_first": "Minutero Primero", + "create.contraptions.clockwork.hour_first_24": "24-horas Primero", + + "create.logistics.filter": "Filtro", + "create.logistics.recipe_filter": "Filtro de Recetas", + "create.logistics.fluid_filter": "Filtro de Fluidos", + "create.logistics.firstFrequency": "Frec. #1", + "create.logistics.secondFrequency": "Frec. #2", + "create.logistics.filter.apply": "Filtro Aplicado a %1$s.", + "create.logistics.filter.apply_click_again": "Filtro Aplicado a %1$s, haz click de nuevo para copiar la cantidad.", + "create.logistics.filter.apply_count": "Recuento de extracción aplicado al filtro.", + + "create.gui.goggles.generator_stats": "Estadísticas de Generación:", + "create.gui.goggles.kinetic_stats": "Estadísticas Kineticas:", + "create.gui.goggles.at_current_speed": "a la velocidad actual", + "create.gui.goggles.pole_length": "Largo del poste:", + "create.gui.goggles.fluid_container": "Informacion del Contenedor de Fluidos:", + "create.gui.goggles.fluid_container.capacity": "Capacidad: ", + "create.gui.assembly.exception": "Esta contrapción no se pudo ensamblar:", + "create.gui.assembly.exception.unmovableBlock": "Bloque inamovible (%4$s) en [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "El bloque en [%1$s,%2$s,%3$s] no estaba en un chunk cargado", + "create.gui.assembly.exception.structureTooLarge": "Hay muchos bloques incluidos en la contrapción.\nEl máximo configurado es: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Hay muchos postes de extensión en este pistón.\nEl máximo configurado es: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Al pistón le faltan algunos postes de extensión", + "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques de vela: %1$s\nUn mínimo de %2$s son requeridos", + "create.gui.gauge.info_header": "Información del medidor:", + "create.gui.speedometer.title": "Velocidad de Rotación", + "create.gui.stressometer.title": "Estrés de la Red", + "create.gui.stressometer.capacity": "Capacidad Restante", + "create.gui.stressometer.overstressed": "Sobreestresado", + "create.gui.stressometer.no_rotation": "Sin Rotación", + "create.gui.contraptions.not_fast_enough": "Parece que este %1$s _no_ está rotando con _suficiente_ _velocidad_.", + "create.gui.contraptions.network_overstressed": "Parece que esta contrapción está _sobreestresada_. Añade más fuentes o _reduce_ la _velocidad_ de los componentes con gran _impacto_ en el _estrés_.", + "create.gui.adjustable_crate.title": "Cajón Ajustable", + "create.gui.adjustable_crate.storageSpace": "Espacio de Almacenamiento:", + "create.gui.stockpile_switch.title": "Interruptor de Reservas", + "create.gui.stockpile_switch.invert_signal": "Invertir Señal", + "create.gui.stockpile_switch.move_to_lower_at": "Mover a la línea inferior en %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Mover a la línea superior en %1$s%%", + "create.gui.sequenced_gearshift.title": "Caja de Cambios Secuenciada", + "create.gui.sequenced_gearshift.instruction": "Instrucción", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Girar en Ángulo", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Girar", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Ángulo", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Girar para mover Pistón/Polea/Grúa", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistón", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distancia", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Retraso Cronometrado", + "create.gui.sequenced_gearshift.instruction.delay": "Retraso", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Duración", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Fin", + "create.gui.sequenced_gearshift.instruction.end": "Fin", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Esperar nuevo pulso de redstone", + "create.gui.sequenced_gearshift.instruction.await": "Esperar", + "create.gui.sequenced_gearshift.speed": "Velocidad, Dirección", + "create.gui.sequenced_gearshift.speed.forward": "Velocidad ingresada, Adelante", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doble Velocidad, Adelante", + "create.gui.sequenced_gearshift.speed.back": "Velocidad ingresada, Revertido", + "create.gui.sequenced_gearshift.speed.back_fast": "Doble Velocidad, Revertido", + + "create.schematicAndQuill.dimensions": "Tamaño del esquema: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Primera posición establecida.", + "create.schematicAndQuill.secondPos": "Segunda posición establecida.", + "create.schematicAndQuill.noTarget": "Mantén [Ctrl] para Seleccionar Bloques Aéreos.", + "create.schematicAndQuill.abort": "Selección Removida.", + "create.schematicAndQuill.title": "Nombre del Esquema:", + "create.schematicAndQuill.convert": "Guardar y cargar inmediatamente", + "create.schematicAndQuill.fallbackName": "Mi Esquema", + "create.schematicAndQuill.saved": "Guardado como %1$s", + + "create.schematic.invalid": "[!] Objeto Invalido - Usa la Mesa de Esquemas", + "create.schematic.position": "Posición", + "create.schematic.rotation": "Rotación", + "create.schematic.rotation.none": "Ninguno", + "create.schematic.rotation.cw90": "Según las agujas del reloj en 90", + "create.schematic.rotation.cw180": "Según las agujas del reloj en 180", + "create.schematic.rotation.cw270": "Según las agujas del reloj en 270", + "create.schematic.mirror": "Reflejar", + "create.schematic.mirror.none": "Ninguno", + "create.schematic.mirror.frontBack": "Frente-Detrás", + "create.schematic.mirror.leftRight": "Izquierda-Derecha", + "create.schematic.tool.deploy": "Posición", + "create.schematic.tool.move": "Mover XZ", + "create.schematic.tool.movey": "Mover Y", + "create.schematic.tool.rotate": "Rotar", + "create.schematic.tool.print": "Imprimir", + "create.schematic.tool.flip": "Reflejar", + "create.schematic.tool.deploy.description.0": "Mueve la estructura a una ubicación.", + "create.schematic.tool.deploy.description.1": "Haz clic derecho en el suelo para colocar.", + "create.schematic.tool.deploy.description.2": "Mantén [Ctrl] para seleccionar a una distancia fija.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Rueda para seleccionar distancia.", + "create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.", + "create.schematic.tool.move.description.1": "Apunta al esquema y [CTRL]-Rueda para empujarlo.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente.", + "create.schematic.tool.movey.description.1": "[CTRL]-Rueda para moverlo arriba y abajo.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Rota el esquema sobre su centro.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Rueda para rotarlo en 90 Grados.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Instantáneamente construye la estructura en el mundo.", + "create.schematic.tool.print.description.1": "[Click-Derecho] para confirmar la ubicación en la ubicación actual.", + "create.schematic.tool.print.description.2": "Solo en Creativo.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Gira el esquema a lo largo de la cara que seleccionaste.", + "create.schematic.tool.flip.description.1": "Apunta al esquema y [CTRL]-Rueda para voltearlo.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Sincronizando...", + "create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.", + "create.schematics.maxAllowedSize": "El tamaño máximo de archivo de esquema permitido es:", + + "create.gui.schematicTable.refresh": "Refrescar Archivos", + "create.gui.schematicTable.open_folder": "Abrir Carpeta", + "create.gui.schematicTable.title": "Mesa de Esquemas", + "create.gui.schematicTable.availableSchematics": "Esquemas Disponibles", + "create.gui.schematicTable.noSchematics": "Sin Esquemas Guardados", + "create.gui.schematicTable.uploading": "Subiendo...", + "create.gui.schematicTable.finished": "¡Subida Finalizada!", + "create.gui.schematicannon.title": "Esquemacañón", + "create.gui.schematicannon.listPrinter": "Impresora de Lista de Objetos", + "create.gui.schematicannon.gunpowderLevel": "Polvora al %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Tiros restantes: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Con respaldo: %1$s", + "create.gui.schematicannon.optionEnabled": "Actualmente Activado", + "create.gui.schematicannon.optionDisabled": "Actualmente Desactivado", + "create.gui.schematicannon.showOptions": "Mostrar Configuraciones de la Impresora", + "create.gui.schematicannon.option.dontReplaceSolid": "No reemplazar Bloques Sólidos", + "create.gui.schematicannon.option.replaceWithSolid": "Reemplazar Sólido con Sólido", + "create.gui.schematicannon.option.replaceWithAny": "Reemplazar Sólido con cualquier cosa", + "create.gui.schematicannon.option.replaceWithEmpty": "Reemplazar Sólido con Vacío", + "create.gui.schematicannon.option.skipMissing": "Saltarse objetos faltantes", + "create.gui.schematicannon.option.skipTileEntities": "Proteject objetos con información", + "create.gui.schematicannon.slot.gunpowder": "Añade pólvora para alimentar el cañon", + "create.gui.schematicannon.slot.listPrinter": "Coloca libros aquí para imprimir una lista de verificación para tu esquema", + "create.gui.schematicannon.slot.schematic": "Pon tu Esquema aquí. Asegurate de haberlo desplegado en la ubicación deseada.", + "create.gui.schematicannon.option.skipMissing.description": "Si el cañón no puede encontrar un Bloque requerido para colocarlo, saltará a la siguiente Ubicación.", + "create.gui.schematicannon.option.skipTileEntities.description": "El cañón evitará reemplazar bloques con almacenamiento de datos como cofres o máquinas.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "El cañón nunca reemplazará ningún bloque sólido en su área de trabajo, solo no-sólidos y aire.", + "create.gui.schematicannon.option.replaceWithSolid.description": "El cañón solo reemplazará los bloques sólidos en su área de trabajo si el esquema contiene un bloque sólido en esa ubicación.", + "create.gui.schematicannon.option.replaceWithAny.description": "El cañón reemplazará los bloques sólidos en su área de trabajo si el esquema contiene algún bloque de cualquier tipo en la ubicación.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "El cañón reemplazará todos los bloques en su área de trabajo, incluidos los reemplazados por aire.", + + "create.schematicannon.status.idle": "Inactivo", + "create.schematicannon.status.ready": "Listo", + "create.schematicannon.status.running": "En Funcionamiento", + "create.schematicannon.status.finished": "Finalizado", + "create.schematicannon.status.paused": "Pausado", + "create.schematicannon.status.stopped": "Detenido", + "create.schematicannon.status.noGunpowder": "Sin Pólvora", + "create.schematicannon.status.targetNotLoaded": "Objetivo no cargado", + "create.schematicannon.status.targetOutsideRange": "Objetivo muy lejano", + "create.schematicannon.status.searching": "Buscando", + "create.schematicannon.status.skipping": "Saltando", + "create.schematicannon.status.missingBlock": "Objeto Faltante:", + "create.schematicannon.status.placing": "Colocando", + "create.schematicannon.status.clearing": "Limpiando Bloques", + "create.schematicannon.status.schematicInvalid": "Esquema Inválido", + "create.schematicannon.status.schematicNotPlaced": "Esquema no Posicionado", + "create.schematicannon.status.schematicExpired": "Archivo de Esquema Expirado", + + "create.materialChecklist": "Lista de verificación de materiales", + "create.materialChecklist.blocksNotLoaded": "* Descargo de responsabilidad *\n\nLa lista de materiales puede ser inexacta debido a chunks que no se cargan.", + + "create.gui.filter.deny_list": "Lista Negra", + "create.gui.filter.deny_list.description": "Los objetos pasan solo si NO coinciden con ninguno de los anteriores. Una lista negra vacía acepta todo.", + "create.gui.filter.allow_list": "Lista Blanca", + "create.gui.filter.allow_list.description": "Los objetos pasan solo si coinciden con alguno de los anteriores. Una lista blanca vacía rechaza todo.", + "create.gui.filter.respect_data": "Respetar Datos", + "create.gui.filter.respect_data.description": "Los objetos solo coinciden si su durabilidad, encantamientos y otros atributos también coinciden.", + "create.gui.filter.ignore_data": "Ignorar Datos", + "create.gui.filter.ignore_data.description": "Los objetos coinciden sin importar sus datos.", + + "create.item_attributes.placeable": "es colocable", + "create.item_attributes.placeable.inverted": "no es colocable", + "create.item_attributes.consumable": "puede ser consumido", + "create.item_attributes.consumable.inverted": "no puede ser consumido", + "create.item_attributes.fluid_container": "puede guardar fluidos", + "create.item_attributes.fluid_container.inverted": "no puede guardar fluidos", + "create.item_attributes.enchanted": "está encantado", + "create.item_attributes.enchanted.inverted": "está desencantado", + "create.item_attributes.max_enchanted": "está encantado al máximo", + "create.item_attributes.max_enchanted.inverted": "no está encantado al máximo", + "create.item_attributes.renamed": "tiene un nombre customizado", + "create.item_attributes.renamed.inverted": "no tiene un nombre customizado", + "create.item_attributes.damaged": "está dañado", + "create.item_attributes.damaged.inverted": "no está dañado", + "create.item_attributes.badly_damaged": "está muy dañado", + "create.item_attributes.badly_damaged.inverted": "no está muy dañado", + "create.item_attributes.not_stackable": "no se puede juntar en stacks", + "create.item_attributes.not_stackable.inverted": "se puede juntar en stacks", + "create.item_attributes.equipable": "puede ser equipado", + "create.item_attributes.equipable.inverted": "no puede ser equipado", + "create.item_attributes.furnace_fuel": "es combustible", + "create.item_attributes.furnace_fuel.inverted": "no es cumbustible", + "create.item_attributes.washable": "puede Lavarse", + "create.item_attributes.washable.inverted": "no puede Lavarse", + "create.item_attributes.crushable": "puede ser Triturado", + "create.item_attributes.crushable.inverted": "no puede ser Triturado", + "create.item_attributes.smeltable": "puede ser Derretido", + "create.item_attributes.smeltable.inverted": "no puede ser Derretido", + "create.item_attributes.smokable": "puede ser Ahumado", + "create.item_attributes.smokable.inverted": "no puede ser Ahumado", + "create.item_attributes.blastable": "puede ser cocinado en un Alto Horno", + "create.item_attributes.blastable.inverted": "no puede ser cocinado en un Alto Horno", + "create.item_attributes.shulker_level": "es un shulker %1$s", + "create.item_attributes.shulker_level.inverted": "no es un shulker %1$s", + "create.item_attributes.shulker_level.full": "lleno", + "create.item_attributes.shulker_level.empty": "vacío", + "create.item_attributes.shulker_level.partial": "parcialmente lleno", + "create.item_attributes.in_tag": "tiene el tag %1$s", + "create.item_attributes.in_tag.inverted": "no tiene el tag %1$s", + "create.item_attributes.in_item_group": "está en el grupo '%1$s'", + "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", + "create.item_attributes.added_by": "fué añadido por %1$s", + "create.item_attributes.added_by.inverted": "no fué añadido por %1$s", + "create.item_attributes.has_enchant": "está encantado con %1$s", + "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", + "create.item_attributes.color": "está tintado %1$s", + "create.item_attributes.color.inverted": "no está tintado %1$s", + "create.item_attributes.has_fluid": "contiene %1$s", + "create.item_attributes.has_fluid.inverted": "no contiene %1$s", + "create.item_attributes.has_name": "tiene el nombre custom %1$s", + "create.item_attributes.has_name.inverted": "no tiene el nombre custom %1$s", + "create.item_attributes.book_author": "fue escrito por %1$s", + "create.item_attributes.book_author.inverted": "no fue escrito por %1$s", + "create.item_attributes.book_copy_original": "wes un original", + "create.item_attributes.book_copy_original.inverted": "no es un original", + "create.item_attributes.book_copy_first": "es una copia de primera generación", + "create.item_attributes.book_copy_first.inverted": "no es una copia de primera generación", + "create.item_attributes.book_copy_second": "es una copia de segunda generación", + "create.item_attributes.book_copy_second.inverted": "no es una copia de segunda generación", + "create.item_attributes.book_copy_tattered": "es un desastre", + "create.item_attributes.book_copy_tattered.inverted": "no es un desastre", + "create.item_attributes.astralsorcery_amulet": "mejora %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "no mejora %1$s", + "create.item_attributes.astralsorcery_constellation": "está en sintonía con la constelación %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con la constelación %1$s", + "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "no tiene el atributo de cristal %1$s", + "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo de mejora %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo de mejora %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Sin atributos seleccionados", + "create.gui.attribute_filter.selected_attributes": "Atributos seleccionados:", + "create.gui.attribute_filter.add_attribute": "Añadir atributo a la Lista", + "create.gui.attribute_filter.add_inverted_attribute": "Añadir atributo inverso a la Lista", + "create.gui.attribute_filter.allow_list_disjunctive": "Lista Permitida (Cualquiera)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Los objetos pasan si cumplen con uno de los atributos de la lista.", + "create.gui.attribute_filter.allow_list_conjunctive": "Lista Permitida (Todos)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Los objetos pasas si cumplen con TODOS los atributos de la lista.", + "create.gui.attribute_filter.deny_list": "Lista Denegada", + "create.gui.attribute_filter.deny_list.description": "Los objetos pasan si NO tienen ninguno de los atributos de la lista.", + "create.gui.attribute_filter.add_reference_item": "Añadir Objeto de Referencia", + + "create.tooltip.holdForDescription": "Mantén [%1$s] para Resumen", + "create.tooltip.holdForControls": "Mantén [%1$s] para Controles", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Requqrimiento de Velocidad: %1$s", + "create.tooltip.speedRequirement.none": "Ninguno", + "create.tooltip.speedRequirement.medium": "Moderado", + "create.tooltip.speedRequirement.high": "Rápidp", + "create.tooltip.stressImpact": "Impacto en el Estrés Cinético: %1$s", + "create.tooltip.stressImpact.low": "Bajo", + "create.tooltip.stressImpact.medium": "Moderado", + "create.tooltip.stressImpact.high": "Alto", + "create.tooltip.stressImpact.overstressed": "Sobreestresado", + "create.tooltip.capacityProvided": "Capacidad de Estrés Cinético: %1$s", + "create.tooltip.capacityProvided.low": "Pequeña", + "create.tooltip.capacityProvided.medium": "Mediana", + "create.tooltip.capacityProvided.high": "Grande", + "create.tooltip.generationSpeed": "Genera a %1$s %2$s", + "create.tooltip.analogStrength": "Fuerza Análoga: %1$s/15", + + "create.mechanical_arm.extract_from": "Toma objetos desde %1$s", + "create.mechanical_arm.deposit_to": "Deposita objetos en %1$s", + "create.mechanical_arm.summary": "Brazo Mecánico tiene %1$s entreda(s) y %2$s salida(s).", + "create.mechanical_arm.points_outside_range": "%1$s punto(s) de interacción seleccionados removidos debido a limitaciones de rango.", + + "create.weighted_ejector.target_set": "Objetivo Seleccionado", + "create.weighted_ejector.target_not_valid": "Eyectando a bloque adyacente (El objetivo no era Válido)", + "create.weighted_ejector.no_target": "Eyectando a bloque adyacente (Sin objetivo Seleccionado)", + "create.weighted_ejector.targeting": "Eyectando a [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Tamaño del stack eyectado", + + "create.logistics.when_multiple_outputs_available": "Cuando hay varias salidas disponibles", + + "create.mechanical_arm.selection_mode.round_robin": "Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin Forzado", + "create.mechanical_arm.selection_mode.prefer_first": "Preferir Primer Objetivo", + + "create.tunnel.selection_mode.split": "Separar", + "create.tunnel.selection_mode.forced_split": "Separar Forzado", + "create.tunnel.selection_mode.round_robin": "Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "Round Robin Forzado", + "create.tunnel.selection_mode.prefer_nearest": "Preferir el Más Cercano", + "create.tunnel.selection_mode.randomize": "Aleatorizar", + "create.tunnel.selection_mode.synchronize": "Sincronizar Salidas", + + "create.tooltip.chute.header": "Información del Tolvogán", + "create.tooltip.chute.items_move_down": "Objetos van hacia Abajo", + "create.tooltip.chute.items_move_up": "Objetos van hacia Arriba", + "create.tooltip.chute.no_fans_attached": "Sin Ventiladores Adjuntos", + "create.tooltip.chute.fans_push_up": "Ventiladores empujando desde Abajo", + "create.tooltip.chute.fans_push_down": "Ventiladores empujando desde Arriba", + "create.tooltip.chute.fans_pull_up": "Ventiladores tirando desde arriba", + "create.tooltip.chute.fans_pull_down": "Ventiladores tirando desde abajo", + "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:", + "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar", + + "create.linked_controller.bind_mode": "Modo de vinculación activado", + "create.linked_controller.press_keybind": "Presiona %1$s, %2$s, %3$s, %4$s, %5$s o %6$s, para vincular esta frecuencia a la tecla respectiva", + "create.linked_controller.key_bound": "Frequencia vinculada a %1$s", + "create.linked_controller.frequency_slot_1": "Tecla vinculada: %1$s, Frec. #1", + "create.linked_controller.frequency_slot_2": "Tecla vinculada: %1$s, Frec. #2", + + "create.crafting_blueprint.crafting_slot": "Ranura de Ingredientes", + "create.crafting_blueprint.filter_items_viable": "Los Objetos de Filtro Avanzados son viables", + "create.crafting_blueprint.display_slot": "Ranura de Visualización", + "create.crafting_blueprint.inferred": "Inferido de la Receta", + "create.crafting_blueprint.manually_assigned": "Manualmente Asignado", + "create.crafting_blueprint.secondary_display_slot": "Ranura de Visualización Secundaria", + "create.crafting_blueprint.optional": "Opcional", + + "create.potato_cannon.ammo.attack_damage": "%1$s Daño de Ataque", + "create.potato_cannon.ammo.reload_ticks": "%1$s Ticks de Recarga", + "create.potato_cannon.ammo.knockback": "%1$s Retroceso", + + "create.hint.hose_pulley.title": "Suministro sin Fin", + "create.hint.hose_pulley": "El Fluido Objetivo se considera Infinito.", + "create.hint.mechanical_arm_no_targets.title": "Sin Objetivos", + "create.hint.mechanical_arm_no_targets": "Parece que a este _Brazo_ _Mecánico_ no se le asignó ningun _objetivo._ Selecciona cintas, depósitos, ingresos y otros bloques haciendo _click-derecho_ sobre ellos mientras _sostienes_ el _Brazo_ _Mecánico_ en tu _mano_.", + "create.hint.empty_bearing.title": "Actualizar Rodamiento", + "create.hint.empty_bearing": "Haz _Click-Derecho_ en el rodamiento con tu _mano_ _vacía_ para _unir_ la estructura que acabas de construir frente a él.", + "create.hint.full_deployer.title": "Desbordamiento de objetos del Desplegador", + "create.hint.full_deployer": "Parece que este _Desplegador_ contiene _objetos_ de _exceso_ que requieren ser _extraídos._ Usa una _tolva,_ _tolvogán_ u otros parecidos para librarlo del sobreflujo.", + + "create.gui.config.overlay1": "Hola :)", + "create.gui.config.overlay2": "Este es un overlay de ejemplo", + "create.gui.config.overlay3": "Haz clic o arrastra con el mouse", + "create.gui.config.overlay4": "para mover esta previsualización", + "create.gui.config.overlay5": "Presiona ESC para salir de esta pantalla", + "create.gui.config.overlay6": "y guardar la nueva posición", + "create.gui.config.overlay7": "Ejecuta /create overlay reset", + "create.gui.config.overlay8": "para restablecer a la posición predeterminada", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Los ticks del servidor están actualmente siendo ralentizados por %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Los ticks del servidor se ralentizan por %s ms ahora >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Los ticks del servidor han vuelto a la velocidad normal :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps stop para devolver a los ticks del servidor a la velocidad normal", + "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps start para ralentizar artificialmente los ticks del servidor", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.contraption.minecart_contraption_too_big": "Esta contrapción de vagoneta parece demasiado grande para recogerla", + "create.contraption.minecart_contraption_illegal_pickup": "Una fuerza mística está vinculando esta contrapción de vagoneta al mundo", + + + "_": "->------------------------] Subtitles [------------------------<-", + + "create.subtitle.contraption_disassemble": "Contrapción se detiene", + "create.subtitle.peculiar_bell_use": "Campana Peculiar tañe", + "create.subtitle.mixing": "Sonidos de mezcla", + "create.subtitle.mechanical_press_activation_belt": "Prensa Mecánica hace bonk", + "create.subtitle.fwoomp": "Lanza Patatas hace fwoom", + "create.subtitle.worldshaper_place": "El Forma Mundos zapea", + "create.subtitle.crushing_1": "Sonidos de Trituración", + "create.subtitle.depot_slide": "Objeto se desliza", + "create.subtitle.saw_activate_stone": "Sierra Mecánica se activa", + "create.subtitle.blaze_munch": "Quemador Blaze mastica", + "create.subtitle.funnel_flap": "Ingreso aletea", + "create.subtitle.schematicannon_finish": "Esquemacañón campanea", + "create.subtitle.haunted_bell_use": "Campana Embrujada tañe", + "create.subtitle.scroll_value": "Sonidos de Clic", + "create.subtitle.crafter_craft": "Crafteador craftea", + "create.subtitle.controller_put": "Controlador golpetea", + "create.subtitle.cranking": "Manivela gira", + "create.subtitle.wrench_remove": "Componente se rompe", + "create.subtitle.cogs": "Engranajes suenan", + "create.subtitle.slime_added": "Slime chapotea", + "create.subtitle.wrench_rotate": "Llave Inglesa usada", + "create.subtitle.potato_hit": "Impactos vegetales", + "create.subtitle.saw_activate_wood": "Sierra Mecánica se activa", + "create.subtitle.haunted_bell_convert": "Campana Embrujada despierta", + "create.subtitle.deployer_polish": "Desplegador aplica pulido", + "create.subtitle.deny": "Boop denegante", + "create.subtitle.controller_click": "Controlador cliquea", + "create.subtitle.schematicannon_launch_block": "Esquemacañón dispara", + "create.subtitle.copper_armor_equip": "Equipo de Buceo tintinea", + "create.subtitle.controller_take": "Atril se Vacía", + "create.subtitle.mechanical_press_activation": "Prensa Mecánica aplasta", + "create.subtitle.contraption_assemble": "Contración se mueve", + "create.subtitle.crafter_click": "Crafteador cliquea", + "create.subtitle.depot_plop": "Objeto aterriza", + "create.subtitle.confirm": "Ding afirmativo", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "SAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA", + "block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _Ejes, Engranajes_ y _Tuberías_ con un acogedor refuerzo de madera.", + + "block.create.metal_bracket.tooltip": "SOPORTE DE METAL", + "block.create.metal_bracket.tooltip.summary": "_Decora_ tus _Ejes, Engranajes_ y _Tuberías_ con un robusto refuerzo industrial.", + + "block.create.seat.tooltip": "ASIENTO", + "block.create.seat.tooltip.summary": "¡Sientate y Disfruta del viaje! Anclará a un jugador en una _contrapción_ que se mueve. ¡Genial como mueve estático también! Viene en una variedad de colores.", + "block.create.seat.tooltip.condition1": "Click derecho en el Asiento", + "block.create.seat.tooltip.behaviour1": "Sienta al Jugador en el _Asiento_. Pulsa Shift-Izquierdo para dejar el _Asiento_.", + + "item.create.blaze_cake.tooltip": "PASTEL BLAZE", + "item.create.blaze_cake.tooltip.summary": "Un delicioso manjar para tus _Quemadores Blaze_. ¡Los pone en llamas!", + + "item.create.wand_of_symmetry.tooltip": "VARA DE SIMETRÍA", + "item.create.wand_of_symmetry.tooltip.summary": "Refleja perfectamente la ubicación de los bloques en los planos configurados.", + "item.create.wand_of_symmetry.tooltip.condition1": "En la Barra Rápida", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Se mantiene Activo", + "item.create.wand_of_symmetry.tooltip.control1": "Click-Derecho en el Suelo", + "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _Mueve_ el Espejo", + "item.create.wand_of_symmetry.tooltip.control2": "Click-Derecho en el Aire", + "item.create.wand_of_symmetry.tooltip.action2": "_Remueve_ el Espejo activo", + "item.create.wand_of_symmetry.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz de Configuración_", + + "item.create.handheld_worldshaper.tooltip": "FORMA MUNDOS DE MANO", + "item.create.handheld_worldshaper.tooltip.summary": "Útil herramienta para crear _paisajes_ y _terrenos_.", + "item.create.handheld_worldshaper.tooltip.control1": "Click-Izquierdo en un bloque", + "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo.", + "item.create.handheld_worldshaper.tooltip.control2": "Click-Derecho en un bloque", + "item.create.handheld_worldshaper.tooltip.action2": "Aplica la _Brocha_ y _Herramienta_ seleccionadas actualmente en la ubicación designada.", + "item.create.handheld_worldshaper.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz de Configuración_", + + "item.create.tree_fertilizer.tooltip": "FERTILIZANTE ARBÓREO", + "item.create.tree_fertilizer.tooltip.summary": "Una poderosa combinación de minerales adecuada para acelerar el crecimiento de árboles comunes.", + "item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un Brote", + "item.create.tree_fertilizer.tooltip.behaviour1": "Crece árboles _sin importar_ sus _condiciones de espacio_", + + "item.create.extendo_grip.tooltip": "AGARREXTENSOR", + "item.create.extendo_grip.tooltip.summary": "¡Boioioing! _Aumenta fuertemente el alcance_ del portador. Se puede alimentar con Aire Comprimido de una _Mochila-Tanque_ de _Cobre_", + "item.create.extendo_grip.tooltip.condition1": "En la mano contraria", + "item.create.extendo_grip.tooltip.behaviour1": "Aumenta el _alcance_ de los objetos usados en la _Mano Principal_.", + "item.create.extendo_grip.tooltip.condition2": "Mientras se utiliza una Mochila-Tanque", + "item.create.extendo_grip.tooltip.behaviour2": "_No_ se usará _durabilidad_. En cambio, _Aire_ _comprimido_ es drenado del Tanque", + + "item.create.potato_cannon.tooltip": "CAÑON DE PAPAS", + "item.create.potato_cannon.tooltip.summary": "¡Fwoomp! Lanza tus verduras cosechadas en casa a tus enemigos. Se puede alimentar con Aire Comprimido de una _Mochila-Tanque_ de _Cobre_", + "item.create.potato_cannon.tooltip.condition1": "Al hacer Click-Derecho", + "item.create.potato_cannon.tooltip.behaviour1": "_Dispara_ un objeto aceptable de tu _Inventario_.", + "item.create.potato_cannon.tooltip.condition2": "Mientras se usa una Mochila-Tanque", + "item.create.potato_cannon.tooltip.behaviour2": "_No_ se usará _durabilidad_. En cambio, _Aire_ _comprimido_ es drenado del Tanque", + + "item.create.filter.tooltip": "FILTRO", + "item.create.filter.tooltip.summary": "_Controla salidas_ y _entradas_ de dispositivos logísticos con más _precisión_, comparándolos contra un _grupo de objetos_ o varios _filtros_.", + "item.create.filter.tooltip.condition1": "En la ranura del filtro", + "item.create.filter.tooltip.behaviour1": "_Controla_ el flujo de objetos dependiendo de su _configuración_.", + "item.create.filter.tooltip.condition2": "Al hacer Click-Derecho", + "item.create.filter.tooltip.behaviour2": "Abre la _interfaz de configuración_.", + + "item.create.attribute_filter.tooltip": "FILTRO DE ATRIBUTOS", + "item.create.attribute_filter.tooltip.summary": "_Controla salidas_ y _entradas_ de dispositivos logísticos con más _precisión_, comparándolos contra un _grupo de atributos de objetos_ o varias _categorías_.", + "item.create.attribute_filter.tooltip.condition1": "En la ranura de filtro", + "item.create.attribute_filter.tooltip.behaviour1": "_Controla_ el flujo de objetos dependiendo de su _configuración_.", + "item.create.attribute_filter.tooltip.condition2": "Al hacer Click-Derecho", + "item.create.attribute_filter.tooltip.behaviour2": "Abre la _interfaz de configuración_.", + + "item.create.empty_schematic.tooltip": "ESQUEMA VACÍO", + "item.create.empty_schematic.tooltip.summary": "Se utiliza como ingrediente de receta y para escribir en la _Mesa de Esquemas_.", + + "item.create.schematic.tooltip": "ESQUEMA", + "item.create.schematic.tooltip.summary": "Contiene una estructura para ser posicionada y colocada en el mundo. Coloca el holograma como desees y usa un _Esquemacañón_ para construirlo.", + "item.create.schematic.tooltip.condition1": "Al sostenerlo", + "item.create.schematic.tooltip.behaviour1": "Se puede colocar usando las herramientas en pantalla.", + "item.create.schematic.tooltip.control1": "Click-Derecho mientras te agachas", + "item.create.schematic.tooltip.action1": "Abre una _Interfaz_ para ingresar _Coordenadas_ exactas.", + + "item.create.schematic_and_quill.tooltip": "ESQUEMA Y PLUMA", + "item.create.schematic_and_quill.tooltip.summary": "Se utiliza para guardar una estructura de tu mundo en un archivo .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos esquinas opuestas haciendo Click-Derecho", + "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rueda_ en las caras para ajustar el tamaño. Click-Derecho otra vez para guardar.", + "item.create.schematic_and_quill.tooltip.control1": "Click-Derecho", + "item.create.schematic_and_quill.tooltip.action1": "Selecciona una esquina / confirmar guardado.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl Mantenido", + "item.create.schematic_and_quill.tooltip.action2": "Selecciona puntos en el _aire_. _Rueda_ para ajustar la distancia.", + "item.create.schematic_and_quill.tooltip.control3": "Click-Derecho mientras te agachas", + "item.create.schematic_and_quill.tooltip.action3": "_Reinicia_ y remueve la selección.", + + "block.create.schematicannon.tooltip": "ESQUEMACAÑÓN", + "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _Esquema_ desplegado en el Mundo. Utiliza objetos de inventarios adyacentes y _Pólvora_ como combustible.", + "block.create.schematicannon.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.schematicannon.tooltip.behaviour1": "Abre la _Interfaz_", + + "block.create.schematic_table.tooltip": "MESA DE ESQUEMAS", + "block.create.schematic_table.tooltip.summary": "Escribe esquemás guardados en un _Esquema Vacío_.", + "block.create.schematic_table.tooltip.condition1": "Al darle un Esquema Vacío", + "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de tu carpeta de esquemas.", + + "item.create.goggles.tooltip": "LENTES", + "item.create.goggles.tooltip.summary": "Un par de anteojos para aumentar tu visión con _información cinética_ util.", + "item.create.goggles.tooltip.condition1": "Al equiparlas", + "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores de colores_ correspondientes al _Nivel de Velocidad_ de un componente cinético colocado, así como el _Impacto de Estrés_ y la _Capacidad_ de los componentes individuales.", + "item.create.goggles.tooltip.condition2": "Al mirar un indicador", + "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre la _Velocidad_ o el _Estrés_ de la red a la que el medidor está conectado.", + "item.create.goggles.tooltip.condition3": "Al mirar contenedores de fluidos", + "item.create.goggles.tooltip.behaviour3": "Muestra información detallada sobre la _Capacidad_ del bloque y de cualquier _Fluido_ guardado dentro.", + + "item.create.wrench.tooltip": "LLAVE INGLESA", + "item.create.wrench.tooltip.summary": "Una útil herramienta para trabajar en contrapciones. Puede _Rotar_, _Desmantelar_ y _Configurar_ componentes.", + "item.create.wrench.tooltip.control1": "Click-Derecho en un componente cinético", + "item.create.wrench.tooltip.action1": "_Rota componentes_ hacia o lejos de la cara en la que se interactuó.", + "item.create.wrench.tooltip.control2": "Click-Derecho mientras te agachas", + "item.create.wrench.tooltip.action2": "_Desmantela componentes Cinéticos_ y los devuelve a _tu inventario_.", + + "block.create.nozzle.tooltip": "BOQUILLA", + "block.create.nozzle.tooltip.summary": "Ponla en frende de un _Ventilador_ Para distribuir su efecto en Entidades en _todas direcciones_.", + + "block.create.cuckoo_clock.tooltip": "RELOJ CU-CU", + "block.create.cuckoo_clock.tooltip.summary": "Artesanía fina para _decorar_ un espacio y _hacer un seguimiento del tiempo_.", + "block.create.cuckoo_clock.tooltip.condition1": "Al darle energía cinética", + "block.create.cuckoo_clock.tooltip.behaviour1": "Muestra la _hora actual_ y toca una melodía dos veces al día. _Se activa_ una vez al _mediodía_ y al anochecer, apenas los _jugadores puedan dormir_.", + + "block.create.turntable.tooltip": "PLATO GIRATORIO", + "block.create.turntable.tooltip.summary": "Convierte la _Fuerza Rotacional_ en Cinetosis refinada .", + + "block.create.toolbox.tooltip": "CAJA DE HERRAMIENTAS", + "block.create.toolbox.tooltip.summary": "La compañía mas querida de todo inventor. Convenientemente _sostiene_ una gran cantidad de _8 Diferentes_ tipos de objeto.", + "block.create.toolbox.tooltip.condition1": "Al recogerla", + "block.create.toolbox.tooltip.behaviour1": "_Mantiene_ los _Contenidos_ del inventario .", + "block.create.toolbox.tooltip.condition2": "Al colocarla en un rango", + "block.create.toolbox.tooltip.behaviour2": "_Jugadores_ _Cercanos_ pueden mantener la _tecla_ de la _Caja de Herramientas_ para acceder a sus contenidos _Remotamente_.", + "block.create.toolbox.tooltip.condition3": "Al hacer Click-Derecho", + "block.create.toolbox.tooltip.behaviour3": "Abre la _Interfaz de Contenedor_.", + + "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE RESERVAS", + "block.create.stockpile_switch.tooltip.summary": "Da una señal de redstone basado en cuántos _Objetos Guardados_ o _Fluidos_ hay en el contenedor adjunto. Viene con un útil filtro. A diferencia de un _Comparador,_ el _Interruptor de Reservas_ permite configurar los _límites,_ a los cuales las señales se invierten.", + "block.create.stockpile_switch.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.stockpile_switch.tooltip.behaviour1": "Abre la _Interfaz de Configuración_.", + + "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDOS", + "block.create.content_observer.tooltip.summary": "_Detecta Objetos_ o _Fluidos_ dentro de _contenedores_, _tuberías_ o _transportadores_ haciendo coincidir un _filtro_ configurado.", + "block.create.content_observer.tooltip.condition1": "Al observar un contenedor", + "block.create.content_observer.tooltip.behaviour1": "Emite una _Señal de Redstone_ mientras que el contenedor observado tenga _contenido_ _coincidible_.", + "block.create.content_observer.tooltip.condition2": "Al observar un Ingreso", + "block.create.content_observer.tooltip.behaviour2": "Emite un _Pulso de Redstone_ cuando un objeto _coincidible_ es _transferido_.", + + "block.create.adjustable_crate.tooltip": "CAJON AJUSTABLE", + "block.create.adjustable_crate.tooltip.summary": "Este _Contenedor de Objetos_ Permite control Manual sobre su capacidad. Puede contener hasta _16 Stacks_ de cualquier Objeto. Soporta _Comparadores de Redstone_.", + "block.create.adjustable_crate.tooltip.condition1": "Al hacer Click-Derecho", + "block.create.adjustable_crate.tooltip.behaviour1": "Abre la _Interfaz_.", + + "block.create.creative_crate.tooltip": "EL CAJON SIN FIN", + "block.create.creative_crate.tooltip.summary": "Este _Contenedor de Objetos_ permite la replicación infinita de cualquier objeto. Ponlo al lado de un _Esquemacañón_ para remover cualquier requerimiento material.", + "block.create.creative_crate.tooltip.condition1": "Cuando un objeto está en la ranura del filtro", + "block.create.creative_crate.tooltip.behaviour1": "Cualquier cosa que _extraiga_ de este contenedor dará una _Fuente Infinita_ del objeto especificado. Objetos _insertados_ dentro del cajón serán _Eliminados._", + + "item.create.creative_blaze_cake.tooltip": "PASTEL CREATIVO", + "item.create.creative_blaze_cake.tooltip.summary": "Un verdadero manjar para tus _Quemadores Blaze_ que permite _controlar su nivel de calor_. Despues de comer este pastel, los Quemadores Blaze _nunca se quedarán sin combustible_.", + "item.create.creative_blaze_cake.tooltip.condition1": "Click-Derecho en el Quemador Blaze", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Bloquea_ el nivel de calor del Quemador. Si se usa de nuevo, _cicla_ el nivel de calor del Quemador", + + "block.create.controller_rail.tooltip": "RAIL CONTROLADOR", + "block.create.controller_rail.tooltip.summary": "Un _raíl propulsado unidireccional_ capaz de _controlar con precisión_ la _velocidad de movimiento_ de una vagoneta.", + "block.create.controller_rail.tooltip.condition1": "Al darle una señal de Redstone", + "block.create.controller_rail.tooltip.behaviour1": "_Acelera_ o _Desacelera_ _vagonetas_ correspondiente a la _fuerza del pulso_. Propaga la señal de redstone a railes controladores adyacentes. Darle poder a dos raíles controladores provocará que los raíles entre estos interpolen su señal.", + + "item.create.sand_paper.tooltip": "PAPEL DE ARENA", + "item.create.sand_paper.tooltip.summary": "Un papel duro que sirve para _pulir materiales_. Puede usarse automaticamente con un Desplegador.", + "item.create.sand_paper.tooltip.condition1": "Al usarlo", + "item.create.sand_paper.tooltip.behaviour1": "Aplica pulido a objetos en la _mano alternativa_ o que están en el _suelo_ al _mirarlos_", + + "item.create.builders_tea.tooltip": "TE DEL CONSTRUCTOR", + "item.create.builders_tea.tooltip.summary": "La mejor bebida para comenzar tu día- _Motivante_ y _Saturante._", + + "item.create.refined_radiance.tooltip": "RADIANCIA REFINADA", + "item.create.refined_radiance.tooltip.summary": "Un material Cromático forjado con _luz absorbida_.", + "item.create.refined_radiance.tooltip.condition1": "Trabajo en Proceso", + "item.create.refined_radiance.tooltip.behaviour1": "Los usos de este material estarán disponibles en una versión futura.", + + "item.create.shadow_steel.tooltip": "ACERO SOMBRÍO", + "item.create.shadow_steel.tooltip.summary": "Un material Cromático forjado _en el vacío_.", + "item.create.shadow_steel.tooltip.condition1": "Trabajo en Progreso", + "item.create.shadow_steel.tooltip.behaviour1": "Los usos de este material estarán disponibles en una versión futura.", + + "item.create.linked_controller.tooltip": "CONTROLADOR VINCULABLE", + "item.create.linked_controller.tooltip.summary": "Permite _control_ _manual_ sobre frecuencias de un _Enlace de Redstone_ asignadas a sus _seis_ _botones_.", + "item.create.linked_controller.tooltip.condition1": "Click-Derecho", + "item.create.linked_controller.tooltip.behaviour1": "_Alterna_ el controlador. Los _controles_ de _movimiento_ se toman el control mientras está activo.", + "item.create.linked_controller.tooltip.condition2": "Click-Derecho mientras te agachas", + "item.create.linked_controller.tooltip.behaviour2": "Abre el manual _Configuración de Interfaz_.", + "item.create.linked_controller.tooltip.condition3": "Clcik-Derecho en un Receptor de Enlace de Redstone", + "item.create.linked_controller.tooltip.behaviour3": "Activa el _Modo de Enlace_, pulsa uno de los _seis controles_ para vincularlo a una de las _Frecuencias_.", + "item.create.linked_controller.tooltip.condition4": "Click-Derecho en un atril", + "item.create.linked_controller.tooltip.behaviour4": "Coloca el controlador en el atril para una activación más sencilla. (Click-Derecho mientras te agashas para recuperarlo)", + + "item.create.diving_helmet.tooltip": "CASCO DE BUCEO", + "item.create.diving_helmet.tooltip.summary": "Junto con un _Tanque_ de _Cobre_, permite al portados _respirar_ bajo el _agua_ por un periodo de tiempo extendido", + "item.create.diving_helmet.tooltip.condition1": "Al equiparlo", + "item.create.diving_helmet.tooltip.behaviour1": "Da el efecto de _Respiración Acuática_, drenando _Aire Comprimido_ lentamente del Tanque.", + + "item.create.copper_backtank.tooltip": "TANQUEMOCHILA DE COBRE", + "item.create.copper_backtank.tooltip.summary": "Un _Tanque_ _Equipable_ para llevar Aire Comprimido.", + "item.create.copper_backtank.tooltip.condition1": "Al Equiparlo", + "item.create.copper_backtank.tooltip.behaviour1": "Proporciona _Aire_ _Comprimido_ al Equipamiento que lo requiere.", + "item.create.copper_backtank.tooltip.condition2": "Al colocarlo, y darle Cinética", + "item.create.copper_backtank.tooltip.behaviour2": "_Recolecta_ _Aire_ _Comprimido_ a una velocidad dependiente de la velocidad de rotación.", + + "item.create.diving_boots.tooltip": "BOTAS DE BUCEO", + "item.create.diving_boots.tooltip.summary": "Un par de _botas_ _pesadas_, permitiendo un mejor recorrido del suelo oceánico.", + "item.create.diving_boots.tooltip.condition1": "Al equiparlas", + "item.create.diving_boots.tooltip.behaviour1": "El portador se _hunde_ _rápido_ y _no puede_ _nadar_. Permite la habilidad de _caminar_ y _saltar_ bajo el agua. El portador tampoco es afectado por las _Cintas_ _Transportadoras_.", + + "item.create.crafting_blueprint.tooltip": "PLANO DE FABRICACIÓN", + "item.create.crafting_blueprint.tooltip.summary": "_Colocado_ en una pared, de puede usar para _especificar_ _orden_ de _ingredientes_ para un crafteo manual mas sencillo. Cada espacio representa una receta.", + "item.create.crafting_blueprint.condition1": "Click-Derecho en un espacio vacío", + "item.create.crafting_blueprint.behaviour1": "Abre un _Menú_ de _Crafteo_ permitiendote _configurar_ una _receta_ y objetos a mostrar.", + "item.create.crafting_blueprint.condition2": "Click-Derecho en un espacio configurado", + "item.create.crafting_blueprint.behaviour2": "_Aplica_ la _receta_ _configurada_ con ingredientes coincidentes que se encuentren en tu _Inventario_. _Agachate_ para craftear un _Stack_ de objetos.", + + "item.create.minecart_coupling.tooltip": "UNION DE VAGONETAS", + "item.create.minecart_coupling.tooltip.summary": "_Encadena_ todas tus _Vagonetas_ o _Contrapciones de Carruago_ juntas para formar un Tren majestuoso.", + "item.create.minecart_coupling.tooltip.condition1": "Al usar en una Vagoneta", + "item.create.minecart_coupling.tooltip.behaviour1": "_Une_ dos Vagonetas juntas, intentando mantenerlas a una _distancia constante_ mientrar se mueven.", + + "block.create.peculiar_bell.tooltip": "CAMPANA PECULIAR", + "block.create.peculiar_bell.tooltip.summary": "Una _Campana de Latón_ decorativa. Ponerla justo sobre _Fuego de Almas_ podría causar efectos secundarios...", + + "block.create.haunted_bell.tooltip": "CAMPANA EMBRUAJADA", + "block.create.haunted_bell.tooltip.summary": "Una _Campana Embrujada_ perseguida por las almas perdidas del Nether.", + "block.create.haunted_bell.tooltip.condition1": "Al sostenerla o colgarla", + "block.create.haunted_bell.tooltip.behaviour1": "Destaca _Puntos no Iluminados_ cercanos en los que _Criaturas Hostiles_ pueden aparecer.", + + + "_": "->------------------------] Ponder Content [------------------------<-", + + "create.ponder.hold_to_ponder": ">Mantén [%1$s] para reflexionar", + "create.ponder.subject": "Sujeto de esta escena", + "create.ponder.pondering": "Reflexionando sobre...", + "create.ponder.identify_mode": "Modo de identificación activado.\nDespausa con [%1$s]", + "create.ponder.associated": "Entradas asociadas", + "create.ponder.close": "Cerrar", + "create.ponder.identify": "Identificar", + "create.ponder.next": "Siguiente Escena", + "create.ponder.previous": "Escena Previa", + "create.ponder.replay": "Reiniciar", + "create.ponder.think_back": "Pensar Atrás", + "create.ponder.slow_text": "Lectura Cómoda", + "create.ponder.exit": "Salir", + "create.ponder.welcome": "Bienvenido a Reflexionar", + "create.ponder.categories": "Categorías Disponibles en Create", + "create.ponder.index_description": "Haz clic en uno de los iconos para conocer sus elementos y bloques asociados", + "create.ponder.index_title": "Índice de Reflexión", + "create.ponder.shared.rpm16": "16 RPM", + "create.ponder.shared.behaviour_modify_wrench": "Este comportamiento se puede modificar con una llave inglesa", + "create.ponder.shared.storage_on_contraption": "Los inventarios adjuntos a la contrapción recogerán los objetos automáticamente", + "create.ponder.shared.sneak_and": "Agáchate +", + "create.ponder.shared.rpm8": "8 RPM", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 RPM", + "create.ponder.shared.rpm16_source": "Fuente: 16 RPM", + "create.ponder.shared.movement_anchors": "Con la ayuda de Chasis o La Gotita, se pueden mover estructuras más grandes.", + "create.ponder.tag.redstone": "Componentes Lógicos", + "create.ponder.tag.redstone.description": "Componentes que ayudan con la ingeniería de redstone", + "create.ponder.tag.contraption_assembly": "Utilidad para adjuntar bloques", + "create.ponder.tag.contraption_assembly.description": "Herramientas y componentes utilizados para ensamblar estructuras movibles como una contrapción animada", + "create.ponder.tag.fluids": "Manipuladores de Fluido", + "create.ponder.tag.fluids.description": "Componentes que ayudan a transmitir y hacer uso de los fluidos", + "create.ponder.tag.decoration": "Estética", + "create.ponder.tag.decoration.description": "Componentes usados, generalmente, con un fin estético", + "create.ponder.tag.windmill_sails": "Velas para rodamientos de molino de viento", + "create.ponder.tag.windmill_sails.description": "Bloques que cuentan para calcular la fuerza de una contrapción de molino de viento cuando se ensambla. Todos tienen la misma eficacia.", + "create.ponder.tag.arm_targets": "Objetivos para brazos mecánicos", + "create.ponder.tag.arm_targets.description": "Componentes que se pueden seleccionar como entradas o salidas de brazo mecánico", + "create.ponder.tag.kinetic_appliances": "Aplicaciones Cinéticas", + "create.ponder.tag.kinetic_appliances.description": "Componentes que hacen uso de la Energía rotacional", + "create.ponder.tag.kinetic_sources": "Fuentes Cinéticas", + "create.ponder.tag.kinetic_sources.description": "Componentes que generan fuerza rotacional", + "create.ponder.tag.movement_anchor": "Anclajes de movimiento", + "create.ponder.tag.movement_anchor.description": "Componentes que permiten la creación de contrapciones móviles, animando una estructura adjunta de distintas formas", + "create.ponder.tag.kinetic_relays": "Bloques Cinéticos", + "create.ponder.tag.kinetic_relays.description": "Componentes que ayudan a transmitir la fuerza de rotación a otros lugares", + "create.ponder.tag.contraption_actor": "Actores de Contrapción", + "create.ponder.tag.contraption_actor.description": "Componentes que exponen un comportamiento especial cuando se adjuntan a una contrapción en movimiento", + "create.ponder.tag.creative": "Modo Creativo", + "create.ponder.tag.creative.description": "Componentes no usualmente disponibles en Modo Supervivencia", + "create.ponder.tag.logistics": "Transportación de Objetos", + "create.ponder.tag.logistics.description": "Componentes que ayudan a mover objetos", + + "create.ponder.adjustable_pulse_repeater.header": "Controlando señales usando Repetidores de Pulso Ajustables", + "create.ponder.adjustable_pulse_repeater.text_1": "Los Repetidores de Pulso Ajustable emiten un pulso corto a cierto retraso", + "create.ponder.adjustable_pulse_repeater.text_2": "Usando la rueda del ratón, el tiempo de carga puede ser configurado", + "create.ponder.adjustable_pulse_repeater.text_3": "Los retrasos configurados pueden alcanzar los 30 minutos", + + "create.ponder.adjustable_repeater.header": "Controlando señales usando Repetidores Ajustables", + "create.ponder.adjustable_repeater.text_1": "Los Repetidores Ajustables funcionan similarmente a los Repetirodes normales", + "create.ponder.adjustable_repeater.text_2": "Se cargan por un tiempo determinado...", + "create.ponder.adjustable_repeater.text_3": "...y se enfrían por la misma duración", + "create.ponder.adjustable_repeater.text_4": "Usando la rueda del ratón, el tiempo de carga puede ser configurado", + "create.ponder.adjustable_repeater.text_5": "Los retrasos configurados pueden alcanzar los 30 minutos", + + "create.ponder.analog_lever.header": "Controlando señales usando la Palanca Análoga", + "create.ponder.analog_lever.text_1": "Las Palancas Análogas son una fuente compacta y precisa de redstone", + "create.ponder.analog_lever.text_2": "Click-Derecho para incrementar la salida análoga", + "create.ponder.analog_lever.text_3": "Click-Derecho mientras te agachas para decrementar la salida de nuevo", + + "create.ponder.andesite_tunnel.header": "Usando Túneles de Andesita", + "create.ponder.andesite_tunnel.text_1": "Los Túneles de Andesita pueden ser usados para cubrir tus cintas", + "create.ponder.andesite_tunnel.text_2": "Cuando un Túnel de Andesita tiene conexiones laterales...", + "create.ponder.andesite_tunnel.text_3": "...separarán exactamente un objeto de cualquier stack que pase a través", + "create.ponder.andesite_tunnel.text_4": "Lo restante continuará en su camino", + + "create.ponder.basin.header": "Procesando Objetos en el tónel", + "create.ponder.basin.text_1": "Un tónel puede sostener Objetos y Fluidos para ser Procesados", + "create.ponder.basin.text_2": "Despues de un procesado, los tóneles intentarán dar salida a un lado y hacia abajo", + "create.ponder.basin.text_3": "Cuando un componente válido está presente, el tónel mostrará un grifo de salida", + "create.ponder.basin.text_4": "Un número de opciones son aplicables aqui", + "create.ponder.basin.text_5": "Los objetos salientes serán atrapados por el inventario debajo", + "create.ponder.basin.text_6": "Sin un grifo, el tónel retendra los objetos procesados dentro", + "create.ponder.basin.text_7": "Esto puede ser útil si los resultados deben ser reusados como ingredientes", + "create.ponder.basin.text_8": "Los objetos de salida deseados tendrán que ser retirados del tónel", + "create.ponder.basin.text_9": "Un Filtro podría ser necesario para evitar sacar objetos sin procesar", + + "create.ponder.bearing_modes.header": "Modos de movimiento del Rodamiento Mecánico", + "create.ponder.bearing_modes.text_1": "Al ser detenido, el Rodamiento colocará la estructura en el ángulo alineado más cercano", + "create.ponder.bearing_modes.text_2": "Puede ser configurado que nunca se vuela a bloques sólidos, o solo hacerlo cerca del ángulo inicial", + + "create.ponder.belt_casing.header": "Cubriendo Cintas", + "create.ponder.belt_casing.text_1": "Cubiertas de Latón y Andesita pueden usarse para decorar tus Cintas Mecánicas", + "create.ponder.belt_casing.text_2": "Una llave inglesa se puede usar para remover la cubierta", + + "create.ponder.belt_connector.header": "Usando Cintas Mecánicas", + "create.ponder.belt_connector.text_1": "Haciendo Click-Derecho en dos ejes con una cinta en la mano los conectará", + "create.ponder.belt_connector.text_2": "Las selecciones equivocadas pueden ser eliminadas con Click-Derecho mientras te agachas", + "create.ponder.belt_connector.text_3": "Ejes Adicionales se pueden añadir a lo largo de la cinta", + "create.ponder.belt_connector.text_4": "Los ejes conectados via Cintas rotarán con Velocidad y Dirección idénticas", + "create.ponder.belt_connector.text_5": "los Ejes adicionales se pueden remover con la Llave Inglesa", + "create.ponder.belt_connector.text_6": "Las Cintas Mecánicas se pueden tintar para fines estéticos", + + "create.ponder.belt_directions.header": "Orientaciones Válidas para las Cintas Mecánicas", + "create.ponder.belt_directions.text_1": "Las cintas no se pueden conectar en direcciones arbitrarias", + "create.ponder.belt_directions.text_2": "1. Se conectan horizontalmente", + "create.ponder.belt_directions.text_3": "2. Se conectan diagonalmente", + "create.ponder.belt_directions.text_4": "3. Se conectan verticalmente", + "create.ponder.belt_directions.text_5": "4. Y pueden conectar Ejes verticales Horizontalmente", + "create.ponder.belt_directions.text_6": "Esas son todas las direcciones posibles. Las cintas pueden unir cualquier distancia entre 2 y 20 bloques", + + "create.ponder.belt_transport.header": "Usando Cintas Mecánicas para Logisticas", + "create.ponder.belt_transport.text_1": "Las cintas que se mueven pueden transportar objetos y entidades", + "create.ponder.belt_transport.text_2": "Hacer Click-Derecho con una mano vacía sacará los objetos de la cinta", + + "create.ponder.blaze_burner.header": "Alimentando Quemadores Blaze", + "create.ponder.blaze_burner.text_1": "Los Quemadores Blaze dan calor a los objetos para ser procesados en el tónel", + "create.ponder.blaze_burner.text_2": "Para esto, deber alimentar al Blaze con objetos combustibles", + "create.ponder.blaze_burner.text_3": "Con un Pastel Blaze, el Quemador puede alcanzar un nivel incluso mayor de calor", + "create.ponder.blaze_burner.text_4": "El proceso de alimentación puede ser automatizado usando Desplegadores o Brazos Mecánicos", + + "create.ponder.brass_funnel.header": "El Ingreso de Latón", + "create.ponder.brass_funnel.text_1": "Los Ingresos de Andesita solo pueden retirar 1 objeto a la vez.", + "create.ponder.brass_funnel.text_2": "Los Ingresos de Latón pueden extraer hasta un Stack completo.", + "create.ponder.brass_funnel.text_3": "Rodando por la ranura de filtro permite mayor control sobre el tamaño del stack extraído.", + "create.ponder.brass_funnel.text_4": "Usar objetos en la ranura de filtro restringirá el ingreso a solo transferir ese tipo de objeto", + + "create.ponder.brass_tunnel.header": "Usando Túneles de Latón", + "create.ponder.brass_tunnel.text_1": "Los Túneles de Latón se pueden usar para cubrir tus Cintas", + "create.ponder.brass_tunnel.text_2": "Los Túneles de Latón tienen ranuras para filtros en cada lado abierto", + "create.ponder.brass_tunnel.text_3": "Los Filtros en conexiones entrantes simplemente bloquean los elementos que no coinciden", + "create.ponder.brass_tunnel.text_4": "Los Filtros en conexiones pueden ser usados para organizar los objetos", + "create.ponder.brass_tunnel.text_5": "Cuando un objeto tiene varias salidas posibles, el modo de distribución decidirá como manejarlo", + "create.ponder.brass_tunnel.text_6": "Los túneles de latón en cinturones paralelos formarán un grupo", + "create.ponder.brass_tunnel.text_7": "Los objetos entrantes ahora serán distribuidos por todas las salidas disponibles", + "create.ponder.brass_tunnel.text_8": "Para esto, los objetos también pueden ser insertados en el bloque de Túnel directamente", + + "create.ponder.brass_tunnel_modes.header": "Modos de Distribución del Túnel de Latón", + "create.ponder.brass_tunnel_modes.text_1": "Usando una Llave, el comporatamiento de la ddistribución de los Túneles de Latón se puede configurar", + "create.ponder.brass_tunnel_modes.text_10": "'Sincronizar Salidas' es una opción única de los Túneles de Latón", + "create.ponder.brass_tunnel_modes.text_11": "Los objetos solo pueden pasar si todos los Túneles en el grupo tienen un objetos en espera", + "create.ponder.brass_tunnel_modes.text_12": "Esto te asegura que todas las cintas suministran objetos a la vez", + "create.ponder.brass_tunnel_modes.text_2": "'Seprarar' intentará distribuir el stack de manera uniforme por todas las salidsa", + "create.ponder.brass_tunnel_modes.text_3": "Si una salida no puede recibir más objetos, será saltada", + "create.ponder.brass_tunnel_modes.text_4": "'Separar Forzado' nunca se saltará salidas, y esperará a que todas estén libres", + "create.ponder.brass_tunnel_modes.text_5": "'Round Robin' mantiene los stacks completos, y los cicla iterativamente a traves de las salidas", + "create.ponder.brass_tunnel_modes.text_6": "Otra Vez, si una salida no puede recibir más objetos, será saltada", + "create.ponder.brass_tunnel_modes.text_7": "'Round Robin Forzado' nunca se salta salidas", + "create.ponder.brass_tunnel_modes.text_8": "'Preferir Cercano' prioritiza las salidas más cercanas de la ubicacion de entrada del objeto", + "create.ponder.brass_tunnel_modes.text_9": "'Aleatorizar' distribuirá los stacks completos al azar entre las salidas", + + "create.ponder.cart_assembler.header": "Moviendo Estructuras usando la Ensambladora de Vagonetas", + "create.ponder.cart_assembler.text_1": "Las Ensambladoras de Vagonetas Potenciadas montan las estructuras adyacentes a las Vagonetas Pasantes", + "create.ponder.cart_assembler.text_2": "Sin una señal de Redstone, desensamblará las contrapciones de vagoneta de vuelta a bloques", + "create.ponder.cart_assembler.text_3": "Usando una Llave en la Vagoneta te permitirá llevar la contrapción a otra parte", + + "create.ponder.cart_assembler_dual.header": "Ensamblando Contrapciones de Carruaje", + "create.ponder.cart_assembler_dual.text_1": "Cuando dos Ensambladores de Vagoneta comparten una estructura adjunta...", + "create.ponder.cart_assembler_dual.text_2": "Darle poder a ambos creará una Contrapción de Carruaje", + "create.ponder.cart_assembler_dual.text_3": "Los carritos se comportarán como los que se conectan via Uniones de Vagoneta", + + "create.ponder.cart_assembler_modes.header": "Configuración de Orientación para las Contrapciones de Vagonetas", + "create.ponder.cart_assembler_modes.text_1": "Las Contrapciones de Vagoneta colo rotarán hacia donde está el movimiento de la vagoneta", + "create.ponder.cart_assembler_modes.text_2": "Esta Flecha indica que lado de la Estructura se considerará el frente", + "create.ponder.cart_assembler_modes.text_3": "Si el Ensamblador está configurado para Bloquear Rotación, la orientación de la contrapción nunca cambiará", + + "create.ponder.cart_assembler_rails.header": "Otros tipos de Vagonetas y Raíles", + "create.ponder.cart_assembler_rails.text_1": "Los Ensambladores de Carrito en las vías normales no afectarán el movimiento de las vagonetas", + "create.ponder.cart_assembler_rails.text_2": "Cuando están en un raíl controlador o potenciado, los carros se mantendrán en su lugar hasta que se encienda", + "create.ponder.cart_assembler_rails.text_3": "Otros tipos de vagonetas se pueden usar como anclaje", + "create.ponder.cart_assembler_rails.text_4": "Los carros con horno se mantendrán alimentados, extrayendo combustible de los inventarios adjuntos", + + "create.ponder.chain_drive.header": "Transmitiendo Fuerza Rotacional con Conductores en Cadena", + "create.ponder.chain_drive.text_1": "Los Conductores en Cadena mantienen la rotación a las otras en fila", + "create.ponder.chain_drive.text_2": "Todos los ejes conectados de esta forma rotarán en la misma dirección", + "create.ponder.chain_drive.text_3": "Cualquier parte de la fila se puede girar en 90 grados", + + "create.ponder.chain_gearshift.header": "Control de la Velocidad de Rotación con la Caja de Cambios en Cadena", + "create.ponder.chain_gearshift.text_1": "Las Cajas de Cambio despotenciadas se comportan igual a los Conductores en Cadena", + "create.ponder.chain_gearshift.text_2": "Al recibir Redstone, la Velocidad transmitida a las otras Cajas de Cambio en la fila es doblada", + "create.ponder.chain_gearshift.text_3": "Cuando la Caja de Cambios no está en la fuente, su velocidad será la mitad", + "create.ponder.chain_gearshift.text_4": "En ambos casos, los Conductores en Cadena en la fila siempre irán al doble la velocidad de las Cajas de Cambios", + "create.ponder.chain_gearshift.text_5": "Usando señales análogas, la razón se puede ajustar más precisamente entre 1 y 2", + "create.ponder.chain_gearshift.text_6": "12 RPM", + + "create.ponder.chute.header": "Transportando Objetos a través de Tolvoganes Verticales", + "create.ponder.chute.text_1": "Los tolvoganes pueden transportar artículos verticalmente desde y hacia los inventarios.", + "create.ponder.chute.text_2": "Usando la Llave, una ventana se puede crear", + "create.ponder.chute.text_3": "Colocar tolvoganes apuntando a las caras laterales de otro lo hará diagonal", + + "create.ponder.chute_upward.header": "Transportando objetos hacia arriba usando Tolvoganes", + "create.ponder.chute_upward.text_1": "Usando Ventiladores desde abajo o arriba, un tolvogán puede transportar objetos hacia arriba", + "create.ponder.chute_upward.text_2": "Inspeccionar tolvoganes con los lentes del ingeniero revela información sobre la dirección de movimiento", + "create.ponder.chute_upward.text_3": "'Por el otro lado', los objetos tendrán que ser insertados/retirados por los lados.", + + "create.ponder.clockwork_bearing.header": "Animando estructuras con Rodamientos de Relojería", + "create.ponder.clockwork_bearing.text_1": "Los Rodamientos de Relojería se adjuntan a los bloques en frente", + "create.ponder.clockwork_bearing.text_2": "Al recibir Fuerza Rotacional, la estructura será rotada acorde a la hora del día", + "create.ponder.clockwork_bearing.text_3": "3:00", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "Haz Click-Derecho en el rodamiento para comenzar o detener la estructura", + "create.ponder.clockwork_bearing.text_6": "En frente del horario, una segunda estructura se puede añadir", + "create.ponder.clockwork_bearing.text_7": "Asegúrate de que las dos estructuras no estén unidas la una a la otra con La Gotita o un similar", + "create.ponder.clockwork_bearing.text_8": "La Segunda Estructura ahora rotará como el Minutero", + + "create.ponder.clutch.header": "Controlando la fuerza Rotacional con un Embrague", + "create.ponder.clutch.text_1": "Los Embragues mantienen la rotación en una línea recta", + "create.ponder.clutch.text_2": "Al ser potenciados con redstone, rompen la conexión", + + "create.ponder.cog_speedup.header": "Cambiando marchas con Engranajes", + "create.ponder.cog_speedup.text_1": "Engranajes grandes y pequeños pueden ser conectados diagonalmente", + "create.ponder.cog_speedup.text_2": "Al cambiar de uno grande a otro pequeño, la velocidad será doblada", + "create.ponder.cog_speedup.text_3": "Al cambiar de uno pequeño a uno grande, la velocidad será la mitad", + + "create.ponder.cogwheel.header": "Transmitiendo Fuerza Rotacional mediante Engranajes", + "create.ponder.cogwheel.text_1": "Los Engranajes transmiten su rotación a los adyacentes", + "create.ponder.cogwheel.text_2": "Los ejes vecinos conectados de esta forma girarán en direcciones opuestas", + + "create.ponder.creative_fluid_tank.header": "Tanques de Fluido del Creativo", + "create.ponder.creative_fluid_tank.text_1": "Los Tanques de Fluido del Creativo se pueden utilizar para proporcionar un suministro de fluido sin fin", + "create.ponder.creative_fluid_tank.text_2": "Haz Click-Derecho con un objeto que contenga un fluido para configurarlo", + "create.ponder.creative_fluid_tank.text_3": "Las redes de tuberías ahora pueden retirar infinitamente el fluido asignado al tanque", + "create.ponder.creative_fluid_tank.text_4": "Cualquier fluido empujado dentro del tanque será eliminado", + + "create.ponder.creative_motor.header": "Generando Energía Rotacional usando Motores del Creativo", + "create.ponder.creative_motor.text_1": "Los Motores del Creativo son una fuente compacta y configurable de fuerza rotacional.", + "create.ponder.creative_motor.text_2": "Rodar por el panel posterior cambia las RPM de salida de rotación de los motores", + + "create.ponder.crushing_wheels.header": "Procesando Objetos usando Ruedas Trituradoras", + "create.ponder.crushing_wheels.text_1": "Un par de Ruedas Trituradoras pueden triturar objetos muy efectivamente", + "create.ponder.crushing_wheels.text_2": "Su ingreso rotacional tiene que hacerlas girar la una contra la otra", + "create.ponder.crushing_wheels.text_3": "Los objetos insertados o tirados encima serán procesados", + "create.ponder.crushing_wheels.text_4": "Los objetos también se pueden insertar y recoger a través de medios automatizados", + + "create.ponder.deployer.header": "Usando el Desplegador", + "create.ponder.deployer.text_1": "Al darle fuerza rotacional, un Desplegador puede imitar acciones humanas", + "create.ponder.deployer.text_10": "Haz clic con Click-Derecho al frente para entregarle un Objeto", + "create.ponder.deployer.text_11": "Los objetos tambien se pueden entregar Automáticamente", + "create.ponder.deployer.text_12": "Los Desplegadores tienen una ranura de filtro", + "create.ponder.deployer.text_13": "Cuando un filtro es configurado, se activa solo mientras sostiene un elemento coincidente", + "create.ponder.deployer.text_14": "Ahora solo se pueden insertar elementos que coincidan con el filtro...", + "create.ponder.deployer.text_15": "...y solo se extraerán los elementos que no coincidan", + "create.ponder.deployer.text_2": "Siempre interactuará con la pocisión 2 bloques en frente de sí mismo.", + "create.ponder.deployer.text_3": "Los bloques directamente en frente no lo obstruirán", + "create.ponder.deployer.text_4": "Los desplegadores pueden:", + "create.ponder.deployer.text_5": "Poner Bloques,", + "create.ponder.deployer.text_6": "Usar Objetos,", + "create.ponder.deployer.text_7": "Activar Bloques,", + "create.ponder.deployer.text_8": "Cosechar Bloques", + "create.ponder.deployer.text_9": "y Atacar Entidades", + + "create.ponder.deployer_contraption.header": "Usando Desplegadores en Contrapciones", + "create.ponder.deployer_contraption.text_1": "Siempre que los Desplegadores se muevan como parte de una contrapción animada...", + "create.ponder.deployer_contraption.text_2": "Se acivarán en cada localización visitada, usando elementos de inventarios en cualquier lugar del artilugio", + "create.ponder.deployer_contraption.text_3": "La ranura de filtro se puede utilizar para especificar qué elementos extraer", + + "create.ponder.deployer_modes.header": "Modos del Desplegador", + "create.ponder.deployer_modes.text_1": "Por defecto, un Desplegador imita una interacción de Click-Derecho", + "create.ponder.deployer_modes.text_2": "Usando una Llave, se puede configurar para imitar un Click-izquierdo en su lugar", + + "create.ponder.deployer_processing.header": "Procesando Objetos usando Desplegadores", + "create.ponder.deployer_processing.text_1": "Con un Objeto retenido adecuado, los Desplegadores pueden procesar elementos proporcionados debajo de ellos", + "create.ponder.deployer_processing.text_2": "Los Objetos de Entrada se pueden soltar o colocar en un depósito debajo del Desplegador", + "create.ponder.deployer_processing.text_3": "Cuando los objetos pasan por una cinta...", + "create.ponder.deployer_processing.text_4": "El Desplegador los mantendrá y procesará automáticamente", + + "create.ponder.deployer_redstone.header": "Controlando Desplegadores con Redstone", + "create.ponder.deployer_redstone.text_1": "Al potenciarlos con Redstone, los Desplegadores no se Activarán", + "create.ponder.deployer_redstone.text_2": "Antes de detenerse, el Desplegador terminará sus ciclos comenzados", + "create.ponder.deployer_redstone.text_3": "Asi mismo, se puede utilizar un pulso negativo para activar exactamente un ciclo de activación", + + "create.ponder.depot.header": "Usando Depósitos", + "create.ponder.depot.text_1": "Los depósitos pueden servir como elementos de cinta 'estacionarios'", + "create.ponder.depot.text_2": "Haz clic con el Click-Derecho para colocar o eliminar objetos manualmente", + "create.ponder.depot.text_3": "Al igual que las Cintas Mecánicas, pueden proporcionar objetos para procesar.", + "create.ponder.depot.text_4": "...así como proporcionar objetos a los brazos mecánicos", + + "create.ponder.empty_blaze_burner.header": "Usando Quemadores Blaze vacíos", + "create.ponder.empty_blaze_burner.text_1": "Haz Click-Derecho en un Blaze con el quemador vacío para capturarlo", + "create.ponder.empty_blaze_burner.text_2": "Alternativamente, los Blazes se pueden conseguir directamente del Spawner", + "create.ponder.empty_blaze_burner.text_3": "Ahora tienes una fuente de calor ideal para varias máquinas", + "create.ponder.empty_blaze_burner.text_4": "Para Motivos Estéticos, los Quemadores Vacíos también se pueden encender con un Mechero.", + "create.ponder.empty_blaze_burner.text_5": "La llama se puede transformar con un objeto infundido con almas.", + "create.ponder.empty_blaze_burner.text_6": "Aun así, sin un Blaze no son aptos para la calefacción industrial", + + "create.ponder.encased_fluid_pipe.header": "Encubriendo Tuberías de Fluido", + "create.ponder.encased_fluid_pipe.text_1": "Las Cubiertas de Cobre se pueden utilizar para decorar tus Tuberías de Fluido.", + "create.ponder.encased_fluid_pipe.text_2": "Además de estar ocultas, las tuberías encubiertas se bloquearán en su estado de conectividad", + "create.ponder.encased_fluid_pipe.text_3": "Ya no reaccionará a los bloques vecinos que se agreguen o eliminen.", + + "create.ponder.fan_direction.header": "Flujo de Aire de los Ventiladores", + "create.ponder.fan_direction.text_1": "Los Ventiladores usan el Aire para crear una corriente de aire", + "create.ponder.fan_direction.text_2": "La Fuerza y ​​la Dirección del flujo dependen de la fuerza rotacional entregada", + + "create.ponder.fan_processing.header": "Procesando Objetos Usando Ventiladores", + "create.ponder.fan_processing.text_1": "Al pasar a través de Lava, El Flujo de Aire se vuelve caliente", + "create.ponder.fan_processing.text_2": "Los objetos que pasen a través serán fundidos", + "create.ponder.fan_processing.text_3": "La comida tirada aquí sería incinerada", + "create.ponder.fan_processing.text_4": "En cambio, se debe usar una configuración de ahumado usando fuego.", + "create.ponder.fan_processing.text_5": "Los Flujos de Aire que atraviesen Agua crearán una configuración de lavado", + "create.ponder.fan_processing.text_6": "Se puede hacer algún procesamiento nuevo e interesante con él.", + "create.ponder.fan_processing.text_7": "La velocidad del ventilador NO afecta la velocidad de procesamiento, solo su rango", + "create.ponder.fan_processing.text_8": "El Procesamiento por Ventilador también se puede aplicar a objetos en depósitos y cintas", + + "create.ponder.fan_source.header": "Generando Fuerza Rotacional usando Ventiladores", + "create.ponder.fan_source.text_1": "Los Ventiladores orientados hacia abajo hacia una Fuente de Calor pueden proporcionar Fuerza Rotacional", + "create.ponder.fan_source.text_2": "Al dalre una señal de Redstone, los Ventiladores empezarán a generar", + + "create.ponder.fluid_pipe_flow.header": "Moviendo fluidos usando Tuberías de Cobre", + "create.ponder.fluid_pipe_flow.text_1": "Las tuberías de fluidos pueden conectar dos o más fuentes de fluidos y objetivos", + "create.ponder.fluid_pipe_flow.text_2": "Con una llave, se puede añadir una ventana a un segmento de tubería recto", + "create.ponder.fluid_pipe_flow.text_3": "Las tuberías con ventana no se conectarán a ningún otro segmento de tubería adyacente.", + "create.ponder.fluid_pipe_flow.text_4": "Alimentadas por bombas mecánicas, las tuberías pueden transportar fluidos.", + "create.ponder.fluid_pipe_flow.text_5": "Ningún fluido se extrae al inicio", + "create.ponder.fluid_pipe_flow.text_6": "Una vez el flujo las conecta, los puntos de conexión transfieren gradualmente su contenido", + "create.ponder.fluid_pipe_flow.text_7": "Por lo tanto, los bloques de tuberías nunca contienen `` físicamente '' ningún fluido.", + + "create.ponder.fluid_pipe_interaction.header": "Drenando y Llenando objetos Contenedores de Fluido", + "create.ponder.fluid_pipe_interaction.text_1": "Los puntos de conexión de una red de tuberías pueden interactuar con una variedad de bloques", + "create.ponder.fluid_pipe_interaction.text_2": "Cualquier bloque con capacidad de almacenamiento de fluidos se puede llenar o drenar", + "create.ponder.fluid_pipe_interaction.text_3": "Se pueden recoger bloques de Fuente justo en frente de un extremo abierto...", + "create.ponder.fluid_pipe_interaction.text_4": "...mientras que se derrama en espacios vacíos puede crear fuentes de fluidos", + "create.ponder.fluid_pipe_interaction.text_5": "Las tuberías también pueden extraer fluidos de un puñado de otros bloques directamente", + + "create.ponder.fluid_tank_sizes.header": "Dimensiones de un Tanque de Fluidos", + "create.ponder.fluid_tank_sizes.text_1": "Los tanques de fluido se pueden combinar para aumentar la capacidad total", + "create.ponder.fluid_tank_sizes.text_2": "Su cuadrado de base puede tener hasta 3 bloques de ancho....", + "create.ponder.fluid_tank_sizes.text_3": "...y pueden crecer en altura en más de 30 capas adicionales", + "create.ponder.fluid_tank_sizes.text_4": "Usando una llave, las ventanas del tanque se pueden alternar", + + "create.ponder.fluid_tank_storage.header": "Guardando Fluidos en Tanques de Fluido", + "create.ponder.fluid_tank_storage.text_1": "Los tanques de Fluido se pueden utilizar para almacenar grandes cantidades de líquidos.", + "create.ponder.fluid_tank_storage.text_2": "Las redes de tuberías pueden empujar y tirar fluidos desde cualquier bloque", + "create.ponder.fluid_tank_storage.text_3": "El líquido contenido se puede medir con un comparador", + "create.ponder.fluid_tank_storage.text_4": "Sin embargo, en el modo Supervivencia, los Fluidos no se pueden agregar ni tomar manualmente", + "create.ponder.fluid_tank_storage.text_5": "Puedes usar tóneles, drenajes y surtidores para drenar o llenar objetos contenedores de líquido", + + "create.ponder.flywheel.header": "Generando Fuerza Rotacional usando el Volante de Inercia", + "create.ponder.flywheel.text_1": "El Volante de Inercia es necesario para Generar Energía al usar el Horno Motor", + "create.ponder.flywheel.text_2": "La fuerza de rotación proporcionada tiene una capacidad de estrés muy grande", + "create.ponder.flywheel.text_3": "El uso de un alto horno duplicará la eficiencia del motor.", + + "create.ponder.funnel_compat.header": "Compatibilidad de Ingresos", + "create.ponder.funnel_compat.text_1": "Los ingresos también deberían interactuar bien con un puñado de otros componentes.", + "create.ponder.funnel_compat.text_2": "Sierras Verticales", + "create.ponder.funnel_compat.text_3": "Depósitos", + "create.ponder.funnel_compat.text_4": "Drenajes", + + "create.ponder.funnel_direction.header": "Dirección de Tranferencia", + "create.ponder.funnel_direction.text_1": "Colocado normalmente, extrae objetos del inventario.", + "create.ponder.funnel_direction.text_2": "Colocado mientras te agachas, pone objetos en el inventario.", + "create.ponder.funnel_direction.text_3": "Con una Llave Inglesa, el ingreso se puede alternar después de la colocación.", + "create.ponder.funnel_direction.text_4": "Se aplican las mismas reglas para la mayoría de las orientaciones.", + "create.ponder.funnel_direction.text_5": "Los ingresos en las sintas extraerán/insertarán dependiendo de la dirección de movimiento.", + + "create.ponder.funnel_intro.header": "Usando Ingresos", + "create.ponder.funnel_intro.text_1": "Los Ingresos son ideales para transferir artículos desde y hacia inventarios.", + + "create.ponder.funnel_redstone.header": "Control de Restone", + "create.ponder.funnel_redstone.text_1": "Las señales de Redstone evitarán que actúe cualquier ingreso", + + "create.ponder.funnel_transfer.header": "Transferencia Directa", + "create.ponder.funnel_transfer.text_1": "Los Ingresos nunca pueden transferir directamente entre inventarios cerrados.", + "create.ponder.funnel_transfer.text_2": "Los tolvoganes o tolvoganes inteligentes podrían ser más adecuados para tales fines.", + "create.ponder.funnel_transfer.text_3": "Lo mismo se aplica al movimiento horizontal. Una cinta mecánica debería ayudar aquí.", + + "create.ponder.furnace_engine.header": "Generando Fuerza rotacional usando el Horno Motor", + "create.ponder.furnace_engine.text_1": "Los Horno Motores generan fuerza rotacional mientras su horno adjunto está en funcionamiento", + "create.ponder.furnace_engine.text_2": "La fuerza rotacional proporcionada tiene una capacidad de tensión muy grande", + "create.ponder.furnace_engine.text_3": "El uso de un Alto Horno duplicará la eficiencia del motor.", + + "create.ponder.gantry_carriage.header": "Usando Carruajes de Grúa", + "create.ponder.gantry_carriage.text_1": "Los Carruajes de Grúa pueden montarse y deslizarse sobre los Ejes de Grúa.", + "create.ponder.gantry_carriage.text_2": "Las Configuraciones de Carruaje pueden mover bloques adjuntos.", + + "create.ponder.gantry_cascaded.header": "Grúas en cascada", + "create.ponder.gantry_cascaded.text_1": "Los ejes de grúa se adhieren a un carruaje sin la necesidad de La Gotita", + "create.ponder.gantry_cascaded.text_2": "Lo mismo se aplica a los carruajes en ejes de grúa movidos", + "create.ponder.gantry_cascaded.text_3": "Por lo tanto, un sistema de carruajes se puede conectar en cascada para cubrir múltiples ejes de movimiento.", + + "create.ponder.gantry_direction.header": "Dirección de Movimiento del Carruaje", + "create.ponder.gantry_direction.text_1": "Los ejes de grúa pueden tener orientaciones opuestas", + "create.ponder.gantry_direction.text_2": "La dirección de movimiento de los Carruajes depende de la orientación de los ejes.", + "create.ponder.gantry_direction.text_3": "...así como la dirección de rotación del eje", + "create.ponder.gantry_direction.text_4": "Se aplican las mismas reglas para la rotación propagada.", + + "create.ponder.gantry_redstone.header": "Propagación de Energía de la Grúa", + "create.ponder.gantry_redstone.text_1": "Los ejes de grúa impulsados ​​por Redstone dejan de mover sus carros", + "create.ponder.gantry_redstone.text_2": "En cambio, su fuerza rotacional se transmite al eje de salida de los carruajes.", + + "create.ponder.gantry_shaft.header": "Usando Ejes de Grúa", + "create.ponder.gantry_shaft.text_1": "Los ejes de grúa forman la base de una configuración de grúa. Los carruajes adjuntos se moverán a lo largo de ellos.", + "create.ponder.gantry_shaft.text_2": "Las Configuraciones de Carruaje pueden mover bloques adjuntos.", + + "create.ponder.gearbox.header": "Transmitiendo Energía Rotacional usando Cajas de Engranajes", + "create.ponder.gearbox.text_1": "Saltar entre ejes de rotación puede volverse pesado rápidamente", + "create.ponder.gearbox.text_2": "Una caja de cambios es el equivalente más compacto de esta configuración.", + "create.ponder.gearbox.text_3": "Los ejes alrededor de las esquinas giran en direcciones simétricas", + "create.ponder.gearbox.text_4": "Las conexiones rectas se invertirán", + + "create.ponder.gearshift.header": "Controlando Fuerza Rotacional usando una Caja de Cambios", + "create.ponder.gearshift.text_1": "Las Cajas de Cambio mantienen la Energía Rotacional en línea recta", + "create.ponder.gearshift.text_2": "Cuando recibe una señal de Redstone, invierte la transmisión", + + "create.ponder.hand_crank.header": "Generando fuerza rotacional mediante manivelas", + "create.ponder.hand_crank.text_1": "Las manivelas pueden ser usadas por los jugadores para generar energía rotacional manualmente", + "create.ponder.hand_crank.text_2": "Mantén presionado el Click-Derecho para girarlo en sentido antihorario", + "create.ponder.hand_crank.text_3": "Su velocidad es relativamente alta", + "create.ponder.hand_crank.text_4": "Agáchate y mantén el Click-Derecho para girarlo en el sentido de las agujas del reloj", + + "create.ponder.hose_pulley.header": "Drenaje y LLenado de Fuentes usando Poleas Manguera", + "create.ponder.hose_pulley.text_1": "Las Poleas Manguera se pueden usar para llenar o drenar grandes cantidades de fluido", + "create.ponder.hose_pulley.text_2": "A través de la Entrada Cinética, se puede controlar la altura de la manguera de las poleas", + "create.ponder.hose_pulley.text_3": "La Polea se retrae al invertir la dirección de Rotación", + "create.ponder.hose_pulley.text_4": "En el lado opuesto, las tuberías se pueden conectar al bloque principal", + "create.ponder.hose_pulley.text_5": "Las redes de tuberías adjuntas pueden proporcionar fluido a la manguera...", + "create.ponder.hose_pulley.text_6": "...o tirar de él, drenando la piscina en su lugar", + "create.ponder.hose_pulley.text_7": "La velocidad de llenado y drenaje de la manguera depende completamente de las redes de tuberías.", + + "create.ponder.hose_pulley_infinite.header": "Drenaje y Llenado pasivo de grandes cantidades de líquido", + "create.ponder.hose_pulley_infinite.text_1": "Al desplegar la Polea Manguera en un océano lo suficientemente grande...", + "create.ponder.hose_pulley_infinite.text_2": "Proporcionará/eliminará fluidos sin afectar la fuente", + "create.ponder.hose_pulley_infinite.text_3": "Las redes de tuberías pueden llevar fluidos ilimitadamente desde o hacia dichas poleas.", + + "create.ponder.hose_pulley_level.header": "Nivel de llenado y drenaje de Poleas Manguera", + "create.ponder.hose_pulley_level.text_1": "Mientras está completamente retraída, la Polea Manguera no puede funcionar", + "create.ponder.hose_pulley_level.text_2": "El drenaje corre de arriba a abajo", + "create.ponder.hose_pulley_level.text_3": "El nivel de la superficie terminará justo debajo de donde termina la manguera.", + "create.ponder.hose_pulley_level.text_4": "El llenado corre de abajo hacia arriba", + "create.ponder.hose_pulley_level.text_5": "La piscina llena no crecerá más allá de la capa sobre el extremo de la manguera.", + + "create.ponder.item_drain.header": "Vaciando Contenedores de Fluido mediante Drenajes", + "create.ponder.item_drain.text_1": "Los Drenajes pueden extraer fluidos de los objetos", + "create.ponder.item_drain.text_2": "Haz Click-Derecho para verter los fluidos del objeto en tu mano en él", + "create.ponder.item_drain.text_3": "Cuando los Objetos se insertan desde el lateral...", + "create.ponder.item_drain.text_4": "...ruedan, vaciando su líquido contenido", + "create.ponder.item_drain.text_5": "Las redes de tuberías ahora pueden extraer el fluido del búfer interno de los Drenajes.", + + "create.ponder.large_cogwheel.header": "Transmitiendo la fuerza rotacional mediante engranajes grandes", + "create.ponder.large_cogwheel.text_1": "Los engranajes grandes se pueden conectar entre sí en ángulo recto", + "create.ponder.large_cogwheel.text_2": "Te ayudará a transmitir la velocidad transportada a otros ejes de rotación", + + "create.ponder.linear_chassis_attachment.header": "Fijando bloques mediante Chasis Lineal", + "create.ponder.linear_chassis_attachment.text_1": "Las caras abiertas de un Chasis Lineal se pueden volver pegajosas", + "create.ponder.linear_chassis_attachment.text_2": "Haz clic de nuevo para hacer el lado opuesto pegajoso", + "create.ponder.linear_chassis_attachment.text_3": "Agáchate y haz Click-Derecho con la mano vacía para eliminar el slime.", + "create.ponder.linear_chassis_attachment.text_4": "Las caras pegadas del Chasis Lineal unirán una línea de bloques frente a él.", + "create.ponder.linear_chassis_attachment.text_5": "Usando una llave, se puede especificar un rango preciso para el Chasis", + "create.ponder.linear_chassis_attachment.text_6": "Mantener presionada la tecla CTRL y mover la rueda del mouse ajusta el rango de todos los bloques de Chasis adjuntos", + "create.ponder.linear_chassis_attachment.text_7": "La colocación de bloques en cualquier otro lado requiere el uso de La Gotita", + "create.ponder.linear_chassis_attachment.text_8": "Usando estas mecánicas, las estructuras de cualquier forma pueden moverse como una contrapción.", + + "create.ponder.linear_chassis_group.header": "Moviendo Chasis Lineales en grupo", + "create.ponder.linear_chassis_group.text_1": "El Chasis Lineal se conecta a bloques de Chasis idénticos junto a ellos", + "create.ponder.linear_chassis_group.text_2": "Cuando uno es movido por una Contrapción, los demás son arrastrados con él.", + "create.ponder.linear_chassis_group.text_3": "El Chasis de un tipo diferente o que mira en otra dirección no se acoplará", + + "create.ponder.mechanical_arm.header": "Configuración de Brazos Mecánicos", + "create.ponder.mechanical_arm.text_1": "Los Brazos Mecánicos deben tener asignadas sus entradas y salidas antes de colocarlos.", + "create.ponder.mechanical_arm.text_2": "Haz Click.Derecho en los inventarios mientras sostienes el brazo para asignarlos como objetivos", + "create.ponder.mechanical_arm.text_3": "Haz Click-Derecho de nuevo para alternar entre Entrada (azul) y Salida (naranja)", + "create.ponder.mechanical_arm.text_4": "Haz Click-Izquierdo en los componentes para eliminar su selección", + "create.ponder.mechanical_arm.text_5": "Una vez colocado, el Brazo Mecánico apuntará a los bloques seleccionados previamente", + "create.ponder.mechanical_arm.text_6": "Pueden tener cualquier cantidad de entradas y salidas dentro de su rango", + "create.ponder.mechanical_arm.text_7": "Sin embargo, no se puede interactuar directamente con todos los tipos de inventario", + "create.ponder.mechanical_arm.text_8": "Los ingresos y depósitos pueden ayudar a sobrepasar esa brecha", + + "create.ponder.mechanical_arm_filtering.header": "Filtrando Salidas del Brazo Mecánico", + "create.ponder.mechanical_arm_filtering.text_1": "Entradas", + "create.ponder.mechanical_arm_filtering.text_2": "Salidas", + "create.ponder.mechanical_arm_filtering.text_3": "A veces es preferible restringir los objetivos del brazo haciendo coincidir un filtro", + "create.ponder.mechanical_arm_filtering.text_4": "Los brazos mecánicos por sí mismos no ofrecen ninguna opción para filtrar", + "create.ponder.mechanical_arm_filtering.text_5": "Los embudos de latón como objetivos, sin embargo, comunican su propio filtro al brazo.", + "create.ponder.mechanical_arm_filtering.text_6": "El brazo es lo suficientemente inteligente como para no recoger artículos que no puede distribuir.", + + "create.ponder.mechanical_arm_modes.header": "Modos de Distribución del Brazo Mecánico", + "create.ponder.mechanical_arm_modes.text_1": "Entrada", + "create.ponder.mechanical_arm_modes.text_2": "Salida", + "create.ponder.mechanical_arm_modes.text_3": "Siempre que un brazo tiene que elegir entre múltiples salidas válidas...", + "create.ponder.mechanical_arm_modes.text_4": "...actuará de acuerdo a su entorno", + "create.ponder.mechanical_arm_modes.text_5": "Rodar con una Llave Inglesa te permite configurarlo", + "create.ponder.mechanical_arm_modes.text_6": "El modo Round Robin simplemente recorre todas las salidas que están disponibles.", + "create.ponder.mechanical_arm_modes.text_7": "Si una salida no puede aceptar más elementos, se omitirá.", + "create.ponder.mechanical_arm_modes.text_8": "El modo Round Robin forzado nunca se saltará salidas, y esperará hasta que la siguiente esté disponible", + "create.ponder.mechanical_arm_modes.text_9": "Preferir el Primero prioriza las salidas seleccionadas primero al configurar el brazo", + + "create.ponder.mechanical_arm_redstone.header": "Controlando Brazos Mecánicos con Redstone", + "create.ponder.mechanical_arm_redstone.text_1": "Cuando reciben una señal de Redstone, los brazos mecánicos no se activan", + "create.ponder.mechanical_arm_redstone.text_2": "Antes de detenerse, termina el ciclo restante", + "create.ponder.mechanical_arm_redstone.text_3": "Asi mismo, se puede utilizar un pulso negativo para activar exactamente un ciclo de activación", + + "create.ponder.mechanical_bearing.header": "Moviendo Estructuras con un Rodamiento Mecánico", + "create.ponder.mechanical_bearing.text_1": "Los Rodamientos Mecánicos se unen al bloque frente a ellos.", + "create.ponder.mechanical_bearing.text_2": "Al recibir Fuerza Rotacional, se ensamblará en una contrapción giratoria.", + + "create.ponder.mechanical_crafter.header": "Configurando Crafteadores Mecánicos", + "create.ponder.mechanical_crafter.text_1": "Se puede usar una variedad de Crafteadores Mecánicos para automatizar cualquier receta de elaboración.", + "create.ponder.mechanical_crafter.text_2": "Usando una llave inglesa, los caminos de los Crafteadores se pueden ordenar", + "create.ponder.mechanical_crafter.text_3": "Para una configuración válida, todas las rutas deben converger en una salida en cualquier lado", + "create.ponder.mechanical_crafter.text_4": "Las salidas se colocarán en el inventario a la salida.", + "create.ponder.mechanical_crafter.text_5": "Los Crafteadores Mecánicos requieren fuerza rotacional para operar", + "create.ponder.mechanical_crafter.text_6": "Haz Click-Derecho al frente para insertar objetos manualmente", + "create.ponder.mechanical_crafter.text_7": "Una vez que cada espacio de una ruta contiene un objeto, comenzará el proceso de elaboración.", + "create.ponder.mechanical_crafter.text_8": "Para las recetas que no ocupan completamente la configuración del crafteador, el inicio se puede forzar usando un Pulso de Redstone", + + "create.ponder.mechanical_crafter_connect.header": "Conectando los Inventarios de los Crafteadores", + "create.ponder.mechanical_crafter_connect.text_1": "Los Objetos se pueden insertar en Crafters automáticamente", + "create.ponder.mechanical_crafter_connect.text_2": "Usando la llave en sus espaldas, las entradas de los Crafteadores Mecánicos se pueden combinar", + "create.ponder.mechanical_crafter_connect.text_3": "Ahora se puede acceder a todos los Crafteadores conectados desde la misma ubicación de entrada", + + "create.ponder.mechanical_crafter_covers.header": "Cubriendo ranuras de Crafteadores Mecánicos", + "create.ponder.mechanical_crafter_covers.text_1": "Algunas recetas requerirán creafteadores adicionales para cerrar brechas en el camino.", + "create.ponder.mechanical_crafter_covers.text_2": "Usando Cubre Ranuras, los Crafteadores se pueden configurar para que actúen como un espacio vacío en el Crafteo", + "create.ponder.mechanical_crafter_covers.text_3": "Las entradas compartidas creadas con la Llave Inglesa en la parte trasera también pueden llegar a los Crafteadores Cubiertos.", + + "create.ponder.mechanical_drill.header": "Rompiendo Bloques con el Taladro Mecánico", + "create.ponder.mechanical_drill.text_1": "Cuando se le entrega Energía Rotacional, un taladro mecánico romperá bloques directamente en frente de él", + "create.ponder.mechanical_drill.text_2": "Su velocidad de extracción depende de la velocidad de entrada rotacional.", + + "create.ponder.mechanical_drill_contraption.header": "Usando Taladros Mecánicos en Contrapciones", + "create.ponder.mechanical_drill_contraption.text_1": "Cuando los taladros se mueven como parte de una contrapción animada...", + "create.ponder.mechanical_drill_contraption.text_2": "...romperán los bloques con los que se encuentren", + + "create.ponder.mechanical_harvester.header": "Usando Cosechadoras Mecánicas en Contrapciones", + "create.ponder.mechanical_harvester.text_1": "Cuando las Cosechadoras se mueven como parte de una Contrapción animada...", + "create.ponder.mechanical_harvester.text_2": "Cosecharán y reiniciaran cualcuier cultivo maduro en su camino", + + "create.ponder.mechanical_mixer.header": "Procesando Objetos con una Mezcladora Mecánica", + "create.ponder.mechanical_mixer.text_1": "Con una Mezcladora y un tónel, algunas recetas de elaboración se pueden automatizar", + "create.ponder.mechanical_mixer.text_2": "Las recetas disponibles incluyen cualquier Crafteo sin Forma Definida, más un par de recetas adicionales.", + "create.ponder.mechanical_mixer.text_3": "Algunas de esas recetas podrían requerir el calor de un Quemador Blaze", + "create.ponder.mechanical_mixer.text_4": "La ranura del filtro se puede utilizar en caso de que dos recetas estén en conflicto.", + + "create.ponder.mechanical_piston.header": "Moviendo Estructuras con el Pistón Mecánico", + "create.ponder.mechanical_piston.text_1": "Los pistones mecánicos pueden mover bloques delante de ellos.", + "create.ponder.mechanical_piston.text_2": "La velocidad y la dirección de movimiento dependen de la velocidad y sentido de entrada rotacional", + "create.ponder.mechanical_piston.text_3": "Los Pistones Mecánicos Pegajosos pueden tirar de los bloques adjuntos hacia atrás", + + "create.ponder.mechanical_piston_modes.header": "Modos de Movimiento de los Pistones Mecánicos", + "create.ponder.mechanical_piston_modes.text_1": "Siempre que los pistones dejan de moverse, la estructura movida se convierte en bloques.", + "create.ponder.mechanical_piston_modes.text_2": "Se puede configurar para que nunca vuelva a bloques sólidos, o solo lo haga en la ubicación en la que comenzó.", + + "create.ponder.mechanical_plough.header": "Usando Aradores Mecánicos den Contrapciones", + "create.ponder.mechanical_plough.text_1": "Cuando los Aradores se mueven siendo parte de una contrapción...", + "create.ponder.mechanical_plough.text_2": "...romperán bloques sin un hitbox de colisión sólido", + "create.ponder.mechanical_plough.text_3": "Adicionalmente, los Aradores crean tierra plantable", + "create.ponder.mechanical_plough.text_4": "...también pueden lanzar entidades sin dañarlas", + + "create.ponder.mechanical_press.header": "Procesando Objetos con la Prensa Mecánica", + "create.ponder.mechanical_press.text_1": "La Prensa Mecánica puede procesar los objetos proporcionados debajo de ella.", + "create.ponder.mechanical_press.text_2": "Los objetos entrantes se pueden soltar o colocar en un depósito debajo de la prensa", + "create.ponder.mechanical_press.text_3": "Cuando los objetos pasan por una cinta mecánica...", + "create.ponder.mechanical_press.text_4": "La prensa los mantendrá y procesará automáticamente", + + "create.ponder.mechanical_press_compacting.header": "Compactando objetos con una prensa mecánica", + "create.ponder.mechanical_press_compacting.text_1": "Al Prensar objetos retenidos en un tónel, se compactarán", + "create.ponder.mechanical_press_compacting.text_2": "La compactación incluye cualquier receta de elaboración de 2x2 o 3x3 rellena, más algunas extra", + "create.ponder.mechanical_press_compacting.text_3": "Algunas de esas recetas podrían requerir el calor de un quemador Blaze", + "create.ponder.mechanical_press_compacting.text_4": "La ranura del filtro se puede utilizar en caso de que dos recetas estén en conflicto.", + + "create.ponder.mechanical_pump_flow.header": "Transporte de fluidos mediante Bombas Mecánicas", + "create.ponder.mechanical_pump_flow.text_1": "Las Bombas Mecánicas gobiernan el flujo de fluídos en las redes de tuberías", + "create.ponder.mechanical_pump_flow.text_2": "Cuando se encienden, su flecha indica la dirección del flujo", + "create.ponder.mechanical_pump_flow.text_3": "La red detrás ahora está extrayendo fluidos...", + "create.ponder.mechanical_pump_flow.text_4": "...mientras la red de enfrente lo está transfiriendo hacia afuera", + "create.ponder.mechanical_pump_flow.text_5": "Invertir la rotación invierte la dirección del flujo", + "create.ponder.mechanical_pump_flow.text_6": "Utiliza una Llave Inglesa para invertir la orientación de las bombas manualmente", + + "create.ponder.mechanical_pump_speed.header": "Rendimiento de las Bombas Mecánicas", + "create.ponder.mechanical_pump_speed.text_1": "Sin importar la velocidad, Las bombas mecánicas afectan a las tuberías conectadas hasta a 16 bloques de distancia", + "create.ponder.mechanical_pump_speed.text_2": "Acelerar la rotación de entrada cambia la velocidad de propagación del flujo....", + "create.ponder.mechanical_pump_speed.text_3": "...así como la rapidez con la que se transfieren los fluidos", + "create.ponder.mechanical_pump_speed.text_4": "Las bombas pueden combinar sus rendimientos dentro de las redes de tuberías compartidas", + "create.ponder.mechanical_pump_speed.text_5": "Alternar su orientación puede ayudar a alinear las direcciones de flujo.", + + "create.ponder.mechanical_saw_breaker.header": "Cortando árboles con la Sierra Mecánica", + "create.ponder.mechanical_saw_breaker.text_1": "Cuando se alimenta con Fuerza Rotacional, una Sierra Mecánica cortará los arboles en frente suya", + "create.ponder.mechanical_saw_breaker.text_2": "Para cortar el árbol por completo, la sierra tiene que romper el último bloque que lo conecta al suelo.", + + "create.ponder.mechanical_saw_contraption.header": "Usando Sierras Mecánicas en Contrapciones", + "create.ponder.mechanical_saw_contraption.text_1": "Cuando las sierras se muevan como parte de una contrapción animada...", + "create.ponder.mechanical_saw_contraption.text_2": "...cortarán cualquier arbol que se interponga en el paso de la contrapción", + + "create.ponder.mechanical_saw_processing.header": "Procesando objetos en la Sierra Mecánica", + "create.ponder.mechanical_saw_processing.text_1": "Las Sierras Mecánicas orientadas hacia arriba pueden procesar una variedad de objetos", + "create.ponder.mechanical_saw_processing.text_2": "El Objeto procesado siempre se mueve en contra del sentido rotacional de la Sierra.", + "create.ponder.mechanical_saw_processing.text_3": "Las Sierras pueden trabajar en línea junto con Cintas Mecánicas", + "create.ponder.mechanical_saw_processing.text_4": "Cuando un ingrediente tiene múltiples resultados posibles, la ranura de filtro puede especificar el resultado.", + "create.ponder.mechanical_saw_processing.text_5": "Sin un filtro, la Sierra ciclará por todos los resultados en su lugar", + + "create.ponder.millstone.header": "Procesando objetos en la Piedra de Molino", + "create.ponder.millstone.text_1": "Las Piedras de Molino procesan los artículos moliéndolos", + "create.ponder.millstone.text_2": "Se pueden accionar desde el lado mediante Engranajes.", + "create.ponder.millstone.text_3": "Lanza o Inserta objetos desde la parte superior", + "create.ponder.millstone.text_4": "Despues de un rato, el resultado se puede obtener haciendo Click-Derecho", + "create.ponder.millstone.text_5": "Las salidas también se pueden extraer mediante automatización", + + "create.ponder.nixie_tube.header": "Usando Tubos Nixie", + "create.ponder.nixie_tube.text_1": "Al recibir señales de Redstone, los Tubos Nixie mostrarán la fuerza de la señal de redstone", + "create.ponder.nixie_tube.text_2": "Usando etiquetas editadas con un yunque, se puede mostrar Texto Personalizado", + "create.ponder.nixie_tube.text_3": "Haz Click-Derecho con un Tinte para cambiar su color de visualización", + + "create.ponder.piston_pole.header": "Postes de Extensión de Pistón", + "create.ponder.piston_pole.text_1": "Sin postes adjuntos, un Pistón Mecanico no se puede mover", + "create.ponder.piston_pole.text_2": "La longitud del poste agregado en su parte posterior determina el rango de extensión", + + "create.ponder.portable_fluid_interface.header": "Intercambio de Fluidos en Contrapciones", + "create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los Tanques de Fluido de una Contrapción en movimiento por ninguna tubería", + "create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los Tanques de Fluidos sin necesidad de detener la contrapción.", + "create.ponder.portable_fluid_interface.text_3": "Coloca un segundo con una distancia de 1 o 2 bloques", + "create.ponder.portable_fluid_interface.text_4": "Cada vez que se crucen, entablarán una conexión.", + "create.ponder.portable_fluid_interface.text_5": "Mientras está activada, la interfaz estacionaria representará a TODOS los tanques en el contrapción", + "create.ponder.portable_fluid_interface.text_6": "El fluido ahora puede ser insertado...", + "create.ponder.portable_fluid_interface.text_7": "...o extraído de la contrapción", + "create.ponder.portable_fluid_interface.text_8": "Después de que no se haya intercambiado ningún contenido durante un tiempo, la contrapción continuará su camino.", + + "create.ponder.portable_storage_interface.header": "Intercambio de Almacenamiento en Contrapciones", + "create.ponder.portable_storage_interface.text_1": "No se puede acceder a los Inventarios de una Contrapción en movimiento por ningún jugador.", + "create.ponder.portable_storage_interface.text_2": "Este componente puede interactuar con los Inventarios sin necesidad de detener la contrapción.", + "create.ponder.portable_storage_interface.text_3": "Coloca un segundo con una distancia de 1 o 2 bloques", + "create.ponder.portable_storage_interface.text_4": "Cada vez que se crucen, entablarán una conexión.", + "create.ponder.portable_storage_interface.text_5": "Mientras está activada, la interfaz estacionaria representará a TODOS los inventarios en el contrapciónWhile engaged, the stationary interface will represent ALL inventories on the contraption", + "create.ponder.portable_storage_interface.text_6": "Ahora puedes insertar objetos...", + "create.ponder.portable_storage_interface.text_7": "...o extraerlos de la contrapción", + "create.ponder.portable_storage_interface.text_8": "Después de que no se haya intercambiado ningún objeto durante un tiempo, la contrapción continuará su camino.", + + "create.ponder.portable_storage_interface_redstone.header": "Control de Redstone", + "create.ponder.portable_storage_interface_redstone.text_1": "La Redstone evitará que la interfaz estacionaria se active", + + "create.ponder.powered_latch.header": "Control de señales usando el Cerrojo de Redstone", + "create.ponder.powered_latch.text_1": "Los Cerrojos de Redstone son palancas controlables de Redstone", + "create.ponder.powered_latch.text_2": "Las señales en la parte trasera lo encienden", + "create.ponder.powered_latch.text_3": "Las señales laterales lo apagan", + "create.ponder.powered_latch.text_4": "Los Cerrojos de Redstone también se pueden alternar manualmente", + + "create.ponder.powered_toggle_latch.header": "Control de señales usando el Cerrojo Palanca de Redstone", + "create.ponder.powered_toggle_latch.text_1": "Los Cerrojos Palanca de Redstone son palancas controlables de Redstone", + "create.ponder.powered_toggle_latch.text_2": "Las señales en la parte posterior cambiarán su estado", + "create.ponder.powered_toggle_latch.text_3": "...entre encendido y apagado", + "create.ponder.powered_toggle_latch.text_4": "Los Cerrojos Palanca de Redstone también se pueden alternar manualmente", + + "create.ponder.pulse_repeater.header": "Controlando Señales con Repetidores de Pulso", + "create.ponder.pulse_repeater.text_1": "Los Repetidores de Pulso acortarán cualquier señal de redstone a un solo pulso", + + "create.ponder.radial_chassis.header": "Uniendo Bloques con el Chasis Radial", + "create.ponder.radial_chassis.text_1": "El chasis radial se conecta a bloques de chasis idénticos en una fila", + "create.ponder.radial_chassis.text_2": "Cuando uno es movido por una contrapción, los demás son arrastrados con él.", + "create.ponder.radial_chassis.text_3": "Las caras laterales de un Chasis Radial se pueden hacer pegajosas", + "create.ponder.radial_chassis.text_4": "Cliquea de nuevo para hacer la otra cara pegajosa", + "create.ponder.radial_chassis.text_5": "Agachate y haz Click-Derecho con la mano vacía para eliminar el slime.", + "create.ponder.radial_chassis.text_6": "Siempre que un bloque esté al lado de una cara pegajosa...", + "create.ponder.radial_chassis.text_7": "...adjuntará todos los bloques alcanzables dentro de un radio en esa capa", + "create.ponder.radial_chassis.text_8": "Usando una Llave Inglesa, se puede especificar un radio preciso para este chasis", + "create.ponder.radial_chassis.text_9": "Los bloques a los que no puede acceder ninguna cara adhesiva no se adhieren", + + "create.ponder.redstone_contact.header": "Contactos de Redstone", + "create.ponder.redstone_contact.text_1": "Los Contactos de Redstone que estén uno frente al otro emitirán una señal de redstone.", + "create.ponder.redstone_contact.text_2": "Esto todavía se aplica cuando uno de ellos es parte de una contrapción en movimiento.", + + "create.ponder.redstone_link.header": "Usando Enlaces de Redstone", + "create.ponder.redstone_link.text_1": "Los enlaces de Redstone pueden transmitir señales de redstone de forma inalámbrica", + "create.ponder.redstone_link.text_2": "Agachate y haz Click-Derecho para alternar el modo de recepción", + "create.ponder.redstone_link.text_3": "Un simple Click-Derecho con una Llave Inglesa puede hacer lo mismo", + "create.ponder.redstone_link.text_4": "Los Receptores emiten la potencia de redstone de los Transmisores dentro de un radio de 128 bloques", + "create.ponder.redstone_link.text_5": "Colocar objetos en las dos ranuras puede especificar una frecuencia", + "create.ponder.redstone_link.text_6": "Solo los enlaces con frecuencias coincidentes se comunicarán entre sí", + + "create.ponder.rope_pulley.header": "Moviendo Estructuras con Poleas de Cuerda", + "create.ponder.rope_pulley.text_1": "Las poleas de Cuerda mueven Bloques de manera vertical al recibir Energía Rotacional", + "create.ponder.rope_pulley.text_2": "La Dirección y la Velocidad del movimiento dependen de la entrada rotacional", + + "create.ponder.rope_pulley_attachment.header": "Moviendo Poleas como parte de una Contrapción", + "create.ponder.rope_pulley_attachment.text_1": "Siempre que las poleas sean movidas por una contrapción...", + "create.ponder.rope_pulley_attachment.text_2": "...la estructura unida a ellas será arrastrada", + "create.ponder.rope_pulley_attachment.text_3": "Ten en cuenta que las poleas solo se pueden mover cuando están paradas", + + "create.ponder.rope_pulley_modes.header": "Modos de Movimiento de las Poleas de Cuerda", + "create.ponder.rope_pulley_modes.text_1": "Siempre que las poleas dejan de moverse, la estructura movida se convierte en Bloques", + "create.ponder.rope_pulley_modes.text_2": "Puede configurarse que nunca vuelva a bloques, o que solo lo haga en la ubicación inicial", + + "create.ponder.rotation_speed_controller.header": "Usando el Controlador de Velocidad de Rotación", + "create.ponder.rotation_speed_controller.text_1": "Los Controladores de Vel. de Rotación transmiten la rotación desde su eje a un Engranaje Grande encima de ellos", + "create.ponder.rotation_speed_controller.text_2": "Usando la entrada de rueda en su lado, la velocidad transportada se puede configurar", + + "create.ponder.sail.header": "Ensamblando Molinos de Viento con Velas", + "create.ponder.sail.text_1": "Las velas son bloques útiles para crear Molinos de Viento", + "create.ponder.sail.text_2": "Se adhieren a los bloques y entre sí sin la necesidad de La Gotita o Bloques de Chasis.", + "create.ponder.sail.text_3": "Haz Click-Derecho con Tinte para pintarlas", + "create.ponder.sail.text_4": "Haz Click-Derecho con Tijeras para convertirlas de nuevo en Marcos.", + + "create.ponder.sail_frame.header": "Ensamblando Molinos con Marcos de Vela", + "create.ponder.sail_frame.text_1": "Los Marcos de Vela son bloques útiles para crear Molinos de Viento", + "create.ponder.sail_frame.text_2": "Se adhieren a los bloques y entre sí sin la necesidad de La Gotita o Bloques de Chasis.", + + "create.ponder.sequenced_gearshift.header": "Control de la velocidad de rotación mediante Cajas de Cambio Secuenciadas", + "create.ponder.sequenced_gearshift.text_1": "Las Cajas de Cambios Sec. transmiten la rotación siguiendo una lista cronometrada de instrucciones", + "create.ponder.sequenced_gearshift.text_2": "Haz Click-Derecho para abrir la interfaz de usuario de configuración", + "create.ponder.sequenced_gearshift.text_3": "Al recibir una señal de Redstone, comenzará a ejecutar su secuencia configurada", + "create.ponder.sequenced_gearshift.text_4": "Una vez terminado, esperará la próxima señal de Redstone y comenzará de nuevo.", + "create.ponder.sequenced_gearshift.text_5": "Se puede usar un Comparador de Redstone para leer el progreso actual", + + "create.ponder.shaft.header": "Transmitiendo Fuerza Rotacional con Ejes", + "create.ponder.shaft.text_1": "Los ejes transmitirán la rotación en línea recta.", + + "create.ponder.shaft_casing.header": "Cubriendo Ejes", + "create.ponder.shaft_casing.text_1": "Puedes usar Cubiertas de Latón y Andesita para decorar tus Ejes", + + "create.ponder.smart_chute.header": "Filtrando Objetos usando Tolvoganes Inteligentes", + "create.ponder.smart_chute.text_1": "Los Tolvoganes Inteligentes son conductos verticales con control adicional", + "create.ponder.smart_chute.text_2": "Los Objetos en la ranura del filtro especifican qué es exactamente lo que pueden extraer y transferir.", + "create.ponder.smart_chute.text_3": "Usa la rueda del mouse para especificar el tamaño de la pila extraída", + "create.ponder.smart_chute.text_4": "Una señal de Redstone evitará que el tolvogán actúe.", + + "create.ponder.smart_pipe.header": "Controlando el Flujo del Fluido mediante Tuberías Inteligentes", + "create.ponder.smart_pipe.text_1": "Las Tuberías Inteligentes pueden ayudar a controlar los Flujos por tipo de Fluido", + "create.ponder.smart_pipe.text_2": "Cuando se colocan directamente en la fuente, pueden especificar el tipo de fluido a extraer.", + "create.ponder.smart_pipe.text_3": "Simplemente haz Click-Derecho en la ranura de filtro con cualquier elemento que contenga el fluido deseado", + "create.ponder.smart_pipe.text_4": "Cuando se colocan más adelante en una red de tuberías, las Tuberías Inteligentes solo permitirán que continúen los fluidos coincidentes", + + "create.ponder.speedometer.header": "Supervisando Información Cinética con el Velocímetro", + "create.ponder.speedometer.text_1": "El velocímetro muestra la velocidad actual de los componentes conectados", + "create.ponder.speedometer.text_2": "Al usar los lentes del ingeniero, el jugador puede obtener información más detallada del indicador.", + "create.ponder.speedometer.text_3": "Los comparadores pueden emitir señales de Redstone analógicas en relación con las mediciones del Velocímetro", + + "create.ponder.spout_filling.header": "Llenando Objetos con el Surtidor", + "create.ponder.spout_filling.text_1": "El Surtidos puede llenar los objetos contenedores de líquidos que se encuentran debajo", + "create.ponder.spout_filling.text_2": "No se puede acceder manualmente al contenido de un Surtidor ", + "create.ponder.spout_filling.text_3": "En cambio, tuberías se deben usar para llenarlos con Fluidos", + "create.ponder.spout_filling.text_4": "Los Objetos de Entrada se pueden colocar en un depósito debajo del Surtidor", + "create.ponder.spout_filling.text_5": "Cuando los Objetos se encuentran en una cinta...", + "create.ponder.spout_filling.text_6": "El Surtidor los mantendrá y procesará autoráticamente", + + "create.ponder.stabilized_bearings.header": "Contrapciones Estabilizadas", + "create.ponder.stabilized_bearings.text_1": "Siempre que los rodamientos mecánicos formen parte de una estructura en movimiento..", + "create.ponder.stabilized_bearings.text_2": "..intentarán mantenerse erguidos", + "create.ponder.stabilized_bearings.text_3": "Una vez más, el rodamiento se unirá al bloque enfrente a él.", + "create.ponder.stabilized_bearings.text_4": "Como resultado, toda la sub-contrapción permanecerá en posición vertical.", + + "create.ponder.sticker.header": "Colocación de bloques con el Pegador", + "create.ponder.sticker.text_1": "Los Pegadores son ideales para la fijación de bloques controlada por Redstone", + "create.ponder.sticker.text_2": "Al recibir señal, alternarán de estado", + "create.ponder.sticker.text_3": "Si se mueve en una contrapción, el bloque se moverá con él.", + "create.ponder.sticker.text_4": "Alternando una vez más, el bloque ya no se adjunta.", + + "create.ponder.stressometer.header": "Supervisando Información Cinética con el Estresómetro", + "create.ponder.stressometer.text_1": "El Estresómetro muestra la capacidad de estrés actual de la red cinética adjunta", + "create.ponder.stressometer.text_2": "Al usar lentes de ingeniero, el jugador puede obtener información más detallada del indicador.", + "create.ponder.stressometer.text_3": "Los comparadores pueden emitir señales de Redstone analógicas en relación con las mediciones del Estresómetro", + + "create.ponder.super_glue.header": "Adjuntando bloques usando La Gotita", + "create.ponder.super_glue.text_1": "La Gotita se puede usar entre 2 bloques", + "create.ponder.super_glue.text_2": "Los bloques unidos se moverán juntos cuando se ensamblen en una contrapción.", + "create.ponder.super_glue.text_3": "Siempre que se sostenga La Gotita en la mano izquierda...", + "create.ponder.super_glue.text_4": "...los bloques añadidos se pegarán a la cara en la que se colocaron automáticamente", + "create.ponder.super_glue.text_5": "La Gotita se puede quitar con Click-Izquierdo", + + "create.ponder.valve_handle.header": "Generación Fuerza Rotacional mediante Válvulas de Cobre", + "create.ponder.valve_handle.text_1": "Los jugadores pueden usar las Válvulas para aplicar fuerza de rotación manualmente", + "create.ponder.valve_handle.text_2": "Mantén presionado el Click-Derecho para girarla en sentido antihorario", + "create.ponder.valve_handle.text_3": "Su velocidad de transporte es lenta y precisa.", + "create.ponder.valve_handle.text_4": "Agáchate y mantén Click-Derecho para girarla en el sentido de las agujas del reloj", + "create.ponder.valve_handle.text_5": "Las Válvulas se pueden teñir con fines estéticos.", + + "create.ponder.valve_pipe.header": "Controlando el Flujo de Fluido mediante Válvulas", + "create.ponder.valve_pipe.text_1": "Las Tuberías de Válvula ayudan a controlar los fluidos que se propagan a través de las redes de tuberías", + "create.ponder.valve_pipe.text_2": "Su entrada de eje controla si al fluido se le permite pasar", + "create.ponder.valve_pipe.text_3": "Dada la fuerza de rotación en la dirección de apertura, la Válvula se abrirá", + "create.ponder.valve_pipe.text_4": "Se puede volver a cerrar invirtiendo la rotación.", + + "create.ponder.water_wheel.header": "Generando fuerza rotacional usando ruedas de agua", + "create.ponder.water_wheel.text_1": "Las ruedas de agua extraen fuerza de las corrientes de agua adyacentes", + "create.ponder.water_wheel.text_2": "MIentras más caras estén siendo empujadas, más rapido rotará", + "create.ponder.water_wheel.text_3": "Las palas de la rueda deben estar orientadas contra el flujo", + "create.ponder.water_wheel.text_4": "De lo contrario, no serán tan efectivas.", + + "create.ponder.weighted_ejector.header": "Usando Eyectores por Peso", + "create.ponder.weighted_ejector.text_1": "Agáchate y haz Click-Derecho sosteniendo un eyector para seleccionar su ubicación de destino", + "create.ponder.weighted_ejector.text_10": "Ahora está limitado a este tamaño de stack y solo se activa cuando su stack retenido alcanza esta cantidad.", + "create.ponder.weighted_ejector.text_11": "Otras entidades siempre activarán un eyector al pisarlo", + "create.ponder.weighted_ejector.text_2": "El Eyector colocado ahora lanzará objetos a la ubicación marcada", + "create.ponder.weighted_ejector.text_3": "Un objetivo válido puede estar a cualquier altura o distancia dentro del alcance", + "create.ponder.weighted_ejector.text_4": "Sin embargo, no pueden estar a un lateral", + "create.ponder.weighted_ejector.text_5": "Si no se seleccionó un objetivo válido, simplemente apuntará al bloque directamente al frente", + "create.ponder.weighted_ejector.text_6": "Suministrale Fuerza Rotacional para cargarlo.", + "create.ponder.weighted_ejector.text_7": "Los objetos colocados en el Eyector hacen que se active", + "create.ponder.weighted_ejector.text_8": "Si se apunta a Inventarios, el Eyector esperará hasta que haya espacio", + "create.ponder.weighted_ejector.text_9": "Con la Llave Inglesa, se puede configurar un tamaño de stack requerido", + + "create.ponder.weighted_ejector_redstone.header": "Controlando Eyectores por Peso con Redstone", + "create.ponder.weighted_ejector_redstone.text_1": "Al recibir señales de Redstone, los Eyectores no se activarán", + "create.ponder.weighted_ejector_redstone.text_2": "Además, los observadores pueden detectar cuándo se activan los Eyectores.", + + "create.ponder.weighted_ejector_tunnel.header": "División de Stacks de Objetos con Eyectores por Peso", + "create.ponder.weighted_ejector_tunnel.text_1": "En combinación con los Túneles de Latón, los Eyectores pueden dividir las pilas de objetos en cantidades específicas", + "create.ponder.weighted_ejector_tunnel.text_2": "Primero, configura el Túnel de Latón a 'Preferir el más Cercano', para priorizar su salida lateral", + "create.ponder.weighted_ejector_tunnel.text_3": "El tamaño de Stack establecido en el Eyector ahora determina la cantidad que se Dividirá", + "create.ponder.weighted_ejector_tunnel.text_4": "Mientras que un nuevo stack del tamaño configurado sale de la salida lateral...", + "create.ponder.weighted_ejector_tunnel.text_5": "...el restante continuará su camino", + + "create.ponder.windmill_source.header": "Generando Fuerza Rotacional mediante Rodamientos de Molino de Viento", + "create.ponder.windmill_source.text_1": "Los Rodamientos de Molino de Viento se unen al bloque delante de ellos", + "create.ponder.windmill_source.text_2": "Si se unen suficientes Bloques de Vela al bloque, puede actuar como un molino de viento", + "create.ponder.windmill_source.text_3": "Activado con Click-Derecho, el Rodamiento de Molino de Viento comenzará a proporcionar Fuerza Rotacional", + "create.ponder.windmill_source.text_4": "La cantidad de Bloques de Velas determina su velocidad de rotación.", + "create.ponder.windmill_source.text_5": "Usa una Llave Inglesa para configurar su dirección de rotación", + "create.ponder.windmill_source.text_6": "Haz Click-Derecho en el Rodamiento en cualquier momento para detener y editar la estructura nuevamente", + + "create.ponder.windmill_structure.header": "Contrapciones de Molino de Viento", + "create.ponder.windmill_structure.text_1": "Cualquier estructura puede contar como un molino de viento válido, siempre que contenga al menos 8 Bloques de Vela.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, 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 6e6465ab2..5d56cdb61 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -36,6 +36,7 @@ import com.simibubi.create.compat.jei.category.ProcessingViaFanCategory; import com.simibubi.create.compat.jei.category.SawingCategory; import com.simibubi.create.compat.jei.category.SequencedAssemblyCategory; import com.simibubi.create.compat.jei.category.SpoutCategory; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; @@ -166,8 +167,10 @@ public class CreateJEI implements IModPlugin { .build(), autoSquare = register("automatic_packing", PackingCategory::autoSquare) - .recipes(r -> (r instanceof ICraftingRecipe) && MechanicalPressTileEntity.canCompress(r) - && !AllRecipeTypes.isManualRecipe(r), BasinRecipe::convertShapeless) + .recipes( + r -> (r instanceof ICraftingRecipe) && !(r instanceof MechanicalCraftingRecipe) + && MechanicalPressTileEntity.canCompress(r) && !AllRecipeTypes.isManualRecipe(r), + BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_PRESS::get) .catalyst(AllBlocks.BASIN::get) .enableWhen(c -> c.allowShapedSquareInPress) 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 22e7c28e7..25e030dcc 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 @@ -105,6 +105,12 @@ public class DeployerTileEntity extends KineticTileEntity { @Override public void initialize() { super.initialize(); + initHandler(); + } + + private void initHandler() { + if (invHandler != null) + return; if (!level.isClientSide) { player = new DeployerFakePlayer((ServerWorld) level); if (deferredInventoryList != null) { @@ -393,8 +399,11 @@ public class DeployerTileEntity extends KineticTileEntity { @Override public LazyOptional getCapability(Capability cap, Direction side) { - if (isItemHandlerCap(cap) && invHandler != null) + if (isItemHandlerCap(cap)) { + if (invHandler == null) + initHandler(); return invHandler.cast(); + } return super.getCapability(cap, side); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 31a655b56..e3bc67164 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidFX; import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.ITriggerable; import com.simibubi.create.foundation.config.AllConfigs; @@ -128,7 +129,15 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { if ((!level.isClientSide || isVirtual()) && runningTicks == 20) { if (processingTicks < 0) { - processingTicks = MathHelper.clamp((MathHelper.log2((int) (512 / speed))) * 15 + 1, 1, 512); + + float recipeSpeed = 1; + if (currentRecipe instanceof ProcessingRecipe) { + int t = ((ProcessingRecipe) currentRecipe).getProcessingDuration(); + if (t != 0) + recipeSpeed = t / 100f; + } + + processingTicks = MathHelper.clamp((MathHelper.log2((int) (512 / speed))) * MathHelper.ceil(recipeSpeed * 15) + 1, 1, 512); Optional basin = getBasin(); if (basin.isPresent()) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index e30e64e82..154517f77 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; @@ -362,7 +363,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { @Override protected boolean matchStaticFilters(IRecipe recipe) { - return (recipe instanceof ICraftingRecipe && canCompress(recipe) && !AllRecipeTypes.isManualRecipe(recipe)) + return (recipe instanceof ICraftingRecipe && !(recipe instanceof MechanicalCraftingRecipe) + && canCompress(recipe) && !AllRecipeTypes.isManualRecipe(recipe)) || recipe.getType() == AllRecipeTypes.COMPACTING.getType(); } 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 500295183..68df2d561 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 @@ -35,9 +35,6 @@ public class PressInstance extends ShaftInstance implements IDynamicInstance { @Override public void beginFrame() { - if (!press.running) - return; - transformModels(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java index d8249efa3..1429b3cd5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java @@ -149,6 +149,8 @@ public class BasinRenderer extends SmartTileEntityRenderer { return 0; float fluidLevel = MathHelper.clamp(totalUnits / 2000, 0, 1); + + fluidLevel = 1 - ((1 - fluidLevel) * (1 - fluidLevel)); float xMin = 2 / 16f; float xMax = 2 / 16f; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index e71fa7d2b..f1d9126ac 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -479,10 +479,19 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor IFluidHandler targetTank = te == null ? null : te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, direction.getOpposite()) .orElse(null); + boolean externalTankNotPresent = targetTank == null; + if (!outputItems.isEmpty() && targetInv == null) return false; - if (!outputFluids.isEmpty() && targetTank == null) - return false; + if (!outputFluids.isEmpty() && externalTankNotPresent) { + // Special case - fluid outputs but output only accepts items + targetTank = outputTank.getCapability() + .orElse(null); + if (targetTank == null) + return false; + if (!acceptFluidOutputsIntoBasin(outputFluids, simulate, targetTank)) + return false; + } if (simulate) return true; @@ -492,8 +501,9 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor continue; spoutputBuffer.add(itemStack.copy()); } - for (FluidStack fluidStack : outputFluids) - spoutputFluidBuffer.add(fluidStack.copy()); + if (!externalTankNotPresent) + for (FluidStack fluidStack : outputFluids) + spoutputFluidBuffer.add(fluidStack.copy()); return true; } @@ -503,7 +513,32 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor if (targetInv == null && !outputItems.isEmpty()) return false; + if (!acceptItemOutputsIntoBasin(outputItems, simulate, targetInv)) + return false; + if (outputFluids.isEmpty()) + return true; + if (targetTank == null) + return false; + if (!acceptFluidOutputsIntoBasin(outputFluids, simulate, targetTank)) + return false; + return true; + } + + private boolean acceptFluidOutputsIntoBasin(List outputFluids, boolean simulate, + IFluidHandler targetTank) { + for (FluidStack fluidStack : outputFluids) { + FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; + int fill = targetTank instanceof SmartFluidTankBehaviour.InternalFluidHandler + ? ((SmartFluidTankBehaviour.InternalFluidHandler) targetTank).forceFill(fluidStack.copy(), action) + : targetTank.fill(fluidStack.copy(), action); + if (fill != fluidStack.getAmount()) + return false; + } + return true; + } + + private boolean acceptItemOutputsIntoBasin(List outputItems, boolean simulate, IItemHandler targetInv) { for (ItemStack itemStack : outputItems) { // Catalyst items are never consumed if (itemStack.hasContainerItem() && itemStack.getContainerItem() @@ -513,21 +548,6 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor .isEmpty()) return false; } - - if (outputFluids.isEmpty()) - return true; - if (targetTank == null) - return false; - - for (FluidStack fluidStack : outputFluids) { - FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; - int fill = targetTank instanceof SmartFluidTankBehaviour.InternalFluidHandler - ? ((SmartFluidTankBehaviour.InternalFluidHandler) targetTank).forceFill(fluidStack.copy(), action) - : targetTank.fill(fluidStack.copy(), action); - if (fill != fluidStack.getAmount()) - return false; - } - return true; } @@ -621,7 +641,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor Vector3d outMotion = directionVec.scale(1 / 16f) .add(0, -1 / 16f, 0); - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 2; i++) { visualizedOutputFluids.forEach(ia -> { FluidStack fluidStack = ia.getValue(); IParticleData fluidParticle = FluidFX.getFluidParticle(fluidStack); diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java b/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java index fdcdbb801..b4a3b93b0 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java @@ -155,7 +155,10 @@ public class ItemHelper { extracting = ItemStack.EMPTY; for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stack = inv.extractItem(slot, maxExtractionCount - extracting.getCount(), true); + int amountToExtractFromThisSlot = + Math.min(maxExtractionCount - extracting.getCount(), inv.getStackInSlot(slot) + .getMaxStackSize()); + ItemStack stack = inv.extractItem(slot, amountToExtractFromThisSlot, true); if (stack.isEmpty()) continue; From 028ac4bbda78fc630dd4b46d57e66efe199d18d8 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Tue, 23 Nov 2021 15:30:16 -0800 Subject: [PATCH 20/26] Transform stack changes - Add ToolBoxInstance - Move from MatrixTransformStack to TransformStack.cast where possible - SuperByteBuffer implements transform traits on its own - Bump flywheel build --- gradle.properties | 2 +- .../com/simibubi/create/AllTileEntities.java | 12 +-- .../category/animations/AnimatedCrafter.java | 4 +- .../base/ShaftlessCogInstance.java | 7 +- .../components/actors/DrillRenderer.java | 14 +-- .../actors/HarvesterActorInstance.java | 22 ++--- .../PortableStorageInterfaceRenderer.java | 3 +- .../crafter/MechanicalCrafterInstance.java | 2 +- .../crafter/MechanicalCrafterRenderer.java | 8 +- .../components/crank/HandCrankInstance.java | 9 +- .../deployer/DeployerActorInstance.java | 20 ++--- .../deployer/DeployerFilterSlot.java | 4 +- .../components/deployer/DeployerRenderer.java | 4 +- .../components/flywheel/FlyWheelInstance.java | 8 +- .../flywheel/engine/EngineInstance.java | 20 ++--- .../components/saw/SawFilterSlot.java | 4 +- .../components/saw/SawRenderer.java | 19 ++-- .../ControlledContraptionEntity.java | 12 +-- .../DirectionalExtenderScrollOptionSlot.java | 5 +- .../OrientedContraptionEntity.java | 4 +- .../chassis/StickerInstance.java | 5 +- .../chassis/StickerRenderer.java | 3 +- .../gantry/GantryCarriageInstance.java | 5 +- .../gantry/GantryCarriageRenderer.java | 3 +- .../glue/SuperGlueRenderer.java | 4 +- .../render/ContraptionRenderDispatcher.java | 18 ++-- .../train/CouplingRenderer.java | 4 +- .../contraptions/fluids/PumpRenderer.java | 17 ++-- .../fluids/actors/ItemDrainRenderer.java | 3 +- .../fluids/pipes/FluidValveInstance.java | 36 ++++---- .../fluids/pipes/FluidValveRenderer.java | 14 ++- .../pipes/SmartFluidPipeTileEntity.java | 4 +- .../processing/BasinRenderer.java | 10 +-- .../relays/belt/BeltInstance.java | 3 +- .../relays/belt/BeltRenderer.java | 20 ++--- .../relays/gauge/GaugeInstance.java | 16 ++-- .../armor/CopperBacktankArmorLayer.java | 3 +- .../armor/CopperBacktankRenderer.java | 3 +- .../symmetry/mirror/CrossPlaneMirror.java | 4 +- .../symmetry/mirror/PlaneMirror.java | 4 +- .../toolbox/RadialToolboxMenu.java | 6 +- .../curiosities/toolbox/ToolBoxInstance.java | 86 +++++++++++++++++++ .../curiosities/toolbox/ToolboxRenderer.java | 20 ++--- .../curiosities/toolbox/ToolboxScreen.java | 12 +-- .../toolbox/ToolboxTileEntity.java | 3 +- .../curiosities/tools/BlueprintRenderer.java | 9 +- .../tools/ExtendoGripItemRenderer.java | 3 +- .../tools/ExtendoGripRenderHandler.java | 4 +- .../weapons/PotatoCannonItemRenderer.java | 4 +- .../weapons/PotatoCannonRenderHandler.java | 6 +- .../weapons/PotatoProjectileRenderMode.java | 12 +-- .../belts/tunnel/BeltTunnelRenderer.java | 3 +- .../logistics/block/chute/ChuteRenderer.java | 3 +- .../logistics/block/depot/DepotRenderer.java | 6 +- .../block/depot/EjectorInstance.java | 6 +- .../block/depot/EjectorRenderer.java | 15 ++-- .../block/depot/EjectorTileEntity.java | 4 +- .../block/diodes/BrassDiodeInstance.java | 9 +- .../block/diodes/BrassDiodeScrollSlot.java | 4 +- .../funnel/FunnelFilterSlotPositioning.java | 8 +- .../block/funnel/FunnelRenderer.java | 3 +- .../inventories/CreativeCrateTileEntity.java | 4 +- .../block/mechanicalArm/ArmInstance.java | 4 +- .../block/mechanicalArm/ArmRenderer.java | 19 ++-- .../block/redstone/AnalogLeverInstance.java | 39 ++++----- .../redstone/FilteredDetectorFilterSlot.java | 4 +- .../block/redstone/NixieTubeRenderer.java | 4 +- .../redstone/RedstoneLinkFrequencySlot.java | 4 +- .../item/LecternControllerRenderer.java | 3 +- .../item/LinkedControllerItemRenderer.java | 3 +- .../block/SchematicannonInstance.java | 6 +- .../schematics/client/SchematicRenderer.java | 4 +- .../client/SchematicTransformation.java | 4 +- .../schematics/client/tools/DeployTool.java | 4 +- .../foundation/fluid/FluidRenderer.java | 5 +- .../foundation/gui/CreateMainMenuScreen.java | 4 +- .../create/foundation/ponder/PonderScene.java | 12 ++- .../ponder/elements/AnimatedSceneElement.java | 6 +- .../ponder/elements/MinecartElement.java | 4 +- .../ponder/elements/ParrotElement.java | 4 +- .../ponder/elements/WorldSectionElement.java | 8 +- .../foundation/render/CachedBufferer.java | 6 +- .../foundation/render/SuperByteBuffer.java | 65 +++++++------- .../render/TileEntityRenderHelper.java | 4 +- .../behaviour/ValueBoxTransform.java | 4 +- .../foundation/utility/outliner/Outline.java | 4 +- 86 files changed, 429 insertions(+), 387 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java diff --git a/gradle.properties b/gradle.properties index 21188041a..1aaf62906 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ parchment_version = 2021.10.31 # dependency versions registrate_version = MC1.17.1-1.0.14 -flywheel_version = 1.17-0.3.0.12 +flywheel_version = 1.17-0.3.0.15 jei_version = 8.2.0.36 # curseforge information diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index bed82065c..073e4adf7 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -128,6 +128,7 @@ import com.simibubi.create.content.curiosities.armor.CopperBacktankTileEntity; import com.simibubi.create.content.curiosities.bell.BellRenderer; import com.simibubi.create.content.curiosities.bell.HauntedBellTileEntity; import com.simibubi.create.content.curiosities.bell.PeculiarBellTileEntity; +import com.simibubi.create.content.curiosities.toolbox.ToolBoxInstance; import com.simibubi.create.content.curiosities.toolbox.ToolboxRenderer; import com.simibubi.create.content.curiosities.toolbox.ToolboxTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelInstance; @@ -195,7 +196,7 @@ public class AllTileEntities { .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) .renderer(() -> BracketedKineticTileRenderer::new) .register(); - + public static final TileEntityEntry MOTOR = Create.registrate() .tileEntity("motor", CreativeMotorTileEntity::new) .instance(() -> HalfShaftInstance::new) @@ -216,14 +217,14 @@ public class AllTileEntities { .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE) .renderer(() -> ShaftRenderer::new) .register(); - + public static final TileEntityEntry ENCASED_COGWHEEL = Create.registrate() .tileEntity("encased_cogwheel", SimpleKineticTileEntity::new) .instance(() -> ShaftlessCogInstance::small) .validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL) .renderer(() -> ShaftlessCogRenderer::small) .register(); - + public static final TileEntityEntry ENCASED_LARGE_COGWHEEL = Create.registrate() .tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new) .instance(() -> ShaftlessCogInstance::large) @@ -407,7 +408,7 @@ public class AllTileEntities { .validBlocks(AllBlocks.MECHANICAL_ARM) .renderer(() -> ArmRenderer::new) .register(); - + public static final TileEntityEntry ITEM_VAULT = Create.registrate() .tileEntity("item_vault", VaultTileEntity::new) .validBlocks(AllBlocks.ITEM_VAULT) @@ -717,9 +718,10 @@ public class AllTileEntities { .validBlocks(AllBlocks.HAUNTED_BELL) .renderer(() -> BellRenderer::new) .register(); - + public static final TileEntityEntry TOOLBOX = Create.registrate() .tileEntity("toolbox", ToolboxTileEntity::new) + .instance(() -> ToolBoxInstance::new) .validBlocks(AllBlocks.TOOLBOXES.toArray()) .renderer(() -> ToolboxRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java index 26084893b..835ea53d6 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java @@ -1,6 +1,6 @@ package com.simibubi.create.compat.jei.category.animations; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.gui.AllGuiTextures; @@ -14,7 +14,7 @@ public class AnimatedCrafter extends AnimatedKinetics { AllGuiTextures.JEI_SHADOW.render(matrixStack, -16, 13); matrixStack.translate(3, 16, 0); - MatrixTransformStack.of(matrixStack) + TransformStack.cast(matrixStack) .rotateX(-12.5f) .rotateY(-22.5f); int scale = 22; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java index 748843051..0ab34da71 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java @@ -4,6 +4,7 @@ import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.PartialModel; 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; @@ -29,17 +30,17 @@ public class ShaftlessCogInstance extends SingleRotatingInstance { super(modelManager, tile); this.large = large; } - + @Override protected Instancer getModel() { BlockState referenceState = tile.getBlockState(); Direction facing = Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE); PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL; - + return getRotatingMaterial().getModel(partial, referenceState, facing, () -> { PoseStack poseStack = new PoseStack(); - new MatrixTransformStack(poseStack).centre() + TransformStack.cast(poseStack).centre() .rotateToFace(facing) .multiply(Vector3f.XN.rotationDegrees(90)) .unCentre(); 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 d98ddf167..a2a92ed5b 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,7 +1,5 @@ package com.simibubi.create.content.contraptions.components.actors; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; @@ -44,22 +42,16 @@ public class DrillRenderer extends KineticTileEntityRenderer { float time = AnimationTickHolder.getRenderTime() / 20; float angle = (float) (((time * speed) % 360)); - PoseStack m = matrices.getModel(); - m.pushPose(); - MatrixTransformStack.of(m) + superBuffer + .transform(matrices.getModel()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing)) .rotateZ(angle) - .unCentre(); - - superBuffer - .transform(m) + .unCentre() .light(matrices.getWorld(), ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.solid())); - - m.popPose(); } } 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 848499aff..def0bf6e0 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 @@ -74,19 +74,15 @@ public class HarvesterActorInstance extends ActorInstance { @Override public void beginFrame() { - PoseStack ms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); - - msr.translate(context.localPos) - .centre() - .rotateY(horizontalAngle) - .unCentre() - .translate(rotOffset) - .rotateX(getRotation()) - .translateBack(rotOffset); - - harvester.setTransform(ms); - } + harvester.loadIdentity() + .translate(context.localPos) + .centre() + .rotateY(horizontalAngle) + .unCentre() + .translate(rotOffset) + .rotateX(getRotation()) + .translateBack(rotOffset); + } private double getRotation() { return AngleHelper.angleLerp(AnimationTickHolder.getPartialTicks(), previousRotation, rotation); 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 1651fcd9e..903465dad 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 @@ -80,8 +80,7 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer rotateToFace(Direction facing) { return () -> { PoseStack stack = new PoseStack(); - TransformStack stacker = MatrixTransformStack.of(stack) + TransformStack stacker = TransformStack.cast(stack) .centre(); if (facing.getAxis() == Direction.Axis.X) stacker.rotateZ(90); 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 ad8101b37..a35f0d13d 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 @@ -5,7 +5,7 @@ import static com.simibubi.create.content.contraptions.base.KineticTileEntityRen import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; @@ -115,14 +115,14 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer mat = materialManager.defaultSolid() @@ -94,13 +94,11 @@ public class DeployerActorInstance extends ActorInstance { Vec3 offset = Vec3.atLowerCornerOf(facing.getNormal()).scale(factor); - PoseStack ms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + stack.setIdentity() + .translate(context.localPos) + .translate(offset); - msr.translate(context.localPos) - .translate(offset); - - transformModel(msr, pole, hand, yRot, xRot, zRot); + transformModel(stack, pole, hand, yRot, xRot, zRot); } static void transformModel(MatrixTransformStack msr, ModelData pole, ModelData hand, float yRot, float xRot, float zRot) { @@ -109,11 +107,11 @@ public class DeployerActorInstance extends ActorInstance { msr.rotate(Direction.UP, (float) ((yRot) / 180 * Math.PI)); msr.rotate(Direction.EAST, (float) ((xRot) / 180 * Math.PI)); - msr.push(); + msr.pushPose(); msr.rotate(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI)); msr.unCentre(); pole.setTransform(msr.unwrap()); - msr.pop(); + msr.popPose(); msr.unCentre(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java index 84ac3fddf..ae37feff1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.deployer; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; @@ -31,7 +31,7 @@ public class DeployerFilterSlot extends ValueBoxTransform { Direction facing = state.getValue(DeployerBlock.FACING); float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; float yRot = AngleHelper.horizontalAngle(facing) + 180; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(xRot); } 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 8f887e7ea..0bb354858 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 @@ -181,8 +181,8 @@ public class DeployerRenderer extends SafeTileEntityRenderer pole.transform(m); hand.transform(m); - pole = transform(pole, blockState, true); - hand = transform(hand, blockState, false); + transform(pole, blockState, true); + transform(hand, blockState, false); pole.light(matrices.getWorld(), ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) .renderInto(matrices.getViewProjection(), builder); 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 3e8707597..87133b5c0 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 @@ -12,7 +12,7 @@ import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; @@ -103,7 +103,7 @@ public class FlyWheelInstance extends KineticTileInstance im private void animate(float angle) { PoseStack ms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); msr.translate(getInstancePosition()); @@ -171,7 +171,7 @@ public class FlyWheelInstance extends KineticTileInstance im return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite); } - protected void transformConnector(MatrixTransformStack ms, boolean upper, boolean rotating, float angle, + protected void transformConnector(TransformStack ms, boolean upper, boolean rotating, float angle, boolean flip) { float shift = upper ? 1 / 4f : -1 / 8f; float offset = upper ? 1 / 4f : 1 / 4f; @@ -198,7 +198,7 @@ public class FlyWheelInstance extends KineticTileInstance im ms.translate(9 / 16f, 0, 0); } - protected void rotateToFacing(MatrixTransformStack buffer, Direction facing) { + protected void rotateToFacing(TransformStack buffer, Direction facing) { buffer.centre() .rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) .unCentre(); 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 0d462560e..b35955579 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 @@ -33,18 +33,14 @@ public class EngineInstance extends TileEntityInstance { float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing)); - PoseStack ms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); - - msr.translate(getInstancePosition()) - .nudge(tile.hashCode()) - .centre() - .rotate(Direction.UP, angle) - .unCentre() - .translate(0, 0, -1); - - this.frame.setTransform(ms); - } + this.frame.loadIdentity() + .translate(getInstancePosition()) + .nudge(tile.hashCode()) + .centre() + .rotate(Direction.UP, angle) + .unCentre() + .translate(0, 0, -1); + } @Override public void remove() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java index e00152755..c9a407a64 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.saw; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.VecHelper; @@ -23,7 +23,7 @@ public class SawFilterSlot extends ValueBoxTransform { @Override protected void rotate(BlockState state, PoseStack ms) { int yRot = state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 270 : 180; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(90); } 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 f71765866..71c7cf6dc 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,7 +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.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; @@ -190,23 +190,18 @@ public class SawRenderer extends SafeTileEntityRenderer { superBuffer = CachedBufferer.partial(AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE, state); } - PoseStack m = matrices.getModel(); - m.pushPose(); - MatrixTransformStack.of(m) + superBuffer.transform(matrices.getModel()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing)); - if (!SawBlock.isHorizontal(state)) - MatrixTransformStack.of(m) - .rotateZ(state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 90 : 0); - MatrixTransformStack.of(m) - .unCentre(); - superBuffer.transform(m) + if (!SawBlock.isHorizontal(state)) { + superBuffer.rotateZ(state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 90 : 0); + } + + superBuffer.unCentre() .light(matrices.getWorld(), ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.cutoutMipped())); - - m.popPose(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java index a2e6d43d2..136416a0d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import static com.simibubi.create.foundation.utility.AngleHelper.angleLerp; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption; @@ -231,10 +231,10 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { Axis axis = getRotationAxis(); for (PoseStack stack : matrixStacks) - MatrixTransformStack.of(stack) - .nudge(getId()) - .centre() - .rotate(angle, axis) - .unCentre(); + TransformStack.cast(stack) + .nudge(getId()) + .centre() + .rotate(angle, axis) + .unCentre(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java index f60edd651..66df467d5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import java.util.function.BiPredicate; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; @@ -27,7 +27,8 @@ public class DirectionalExtenderScrollOptionSlot extends CenteredSideValueBoxTra @Override protected void rotate(BlockState state, PoseStack ms) { if (!getSide().getAxis().isHorizontal()) - MatrixTransformStack.of(ms).rotateY(AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.FACING)) - 90); + TransformStack.cast(ms) + .rotateY(AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.FACING)) - 90); super.rotate(state, ms); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java index 0319bc045..4c9712276 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java @@ -7,7 +7,7 @@ import java.util.UUID; import javax.annotation.Nullable; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; @@ -536,7 +536,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity { } for (PoseStack stack : matrixStacks) - MatrixTransformStack.of(stack) + TransformStack.cast(stack) .nudge(getId()) .centre() .rotateY(angleYaw) 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 d506ef8ff..f6b6c2ecc 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 @@ -51,8 +51,7 @@ public class StickerInstance extends TileEntityInstance imple } private void animateHead(float offset) { - PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) + head.loadIdentity() .translate(getInstancePosition()) .nudge(tile.hashCode()) .centre() @@ -60,8 +59,6 @@ public class StickerInstance extends TileEntityInstance imple .rotateX(AngleHelper.verticalAngle(facing) + 90) .unCentre() .translate(0, (offset * offset) * 4 / 16f, 0); - - head.setTransform(stack); } @Override 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 20ca19568..f4c3c8c27 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 @@ -35,8 +35,7 @@ public class StickerRenderer extends SafeTileEntityRenderer { offset = state.getValue(StickerBlock.EXTENDED) ? 1 : 0; Direction facing = state.getValue(StickerBlock.FACING); - head.matrixStacker() - .nudge(te.hashCode()) + head.nudge(te.hashCode()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) 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 bb2c7e68a..866f7c3a6 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 @@ -62,8 +62,7 @@ public class GantryCarriageInstance extends ShaftInstance implements IDynamicIns } private void animateCogs(float cogAngle) { - PoseStack ms = new PoseStack(); - MatrixTransformStack.of(ms) + gantryCogs.loadIdentity() .translate(getInstancePosition()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) @@ -73,8 +72,6 @@ public class GantryCarriageInstance extends ShaftInstance implements IDynamicIns .rotateX(-cogAngle) .translate(0, 9 / 16f, 0) .unCentre(); - - gantryCogs.setTransform(ms); } static float getRotationMultiplier(Direction.Axis gantryAxis, Direction facing) { 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 d65f65cb4..9e52ea3ea 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 @@ -55,8 +55,7 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { angleForTe *= -1; SuperByteBuffer cogs = CachedBufferer.partial(AllBlockPartials.GANTRY_COGS, state); - cogs.matrixStacker() - .centre() + cogs.centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) .rotateY(alongFirst ^ facing.getAxis() == Axis.X ? 0 : 90) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java index 298486136..adbea90be 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.glue; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -69,7 +69,7 @@ public class SuperGlueRenderer extends EntityRenderer { Direction face = entity.getFacingDirection(); ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(AngleHelper.horizontalAngle(face)) .rotateX(AngleHelper.verticalAngle(face)); Pose peek = ms.last(); 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 6eefda560..59ef2e7eb 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 @@ -12,7 +12,7 @@ import com.jozufozu.flywheel.event.GatherContextEvent; import com.jozufozu.flywheel.event.ReloadRenderersEvent; import com.jozufozu.flywheel.event.RenderLayerEvent; import com.jozufozu.flywheel.util.WorldAttached; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllMovementBehaviours; @@ -127,6 +127,8 @@ public class ContraptionRenderDispatcher { protected static void renderActors(Level world, PlacementSimulationWorld renderWorld, Contraption c, ContraptionMatrices matrices, MultiBufferSource buffer) { + PoseStack m = matrices.getModel(); + for (Pair actor : c.getActors()) { MovementContext context = actor.getRight(); if (context == null) @@ -135,16 +137,14 @@ public class ContraptionRenderDispatcher { context.world = world; StructureTemplate.StructureBlockInfo blockInfo = actor.getLeft(); - PoseStack m = matrices.getModel(); - m.pushPose(); - MatrixTransformStack.of(m) - .translate(blockInfo.pos); - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); - if (movementBehaviour != null) + if (movementBehaviour != null) { + m.pushPose(); + TransformStack.cast(m) + .translate(blockInfo.pos); movementBehaviour.renderInContraption(context, renderWorld, matrices, buffer); - - m.popPose(); + m.popPose(); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java index b58716450..63eead5a9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.tr import static net.minecraft.util.Mth.lerp; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; @@ -80,7 +80,7 @@ public class CouplingRenderer { double connectorPitch = Math.atan2(endPointDiff.y, endPointDiff.multiply(1, 0, 1) .length()) * 180 / Math.PI; - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); carts.forEachWithContext((cart, isFirst) -> { CartEndpoint cartTransform = transforms.get(isFirst); 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 3ab5f528e..aec578a74 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,6 +1,6 @@ package com.simibubi.create.content.contraptions.fluids; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -27,27 +27,24 @@ 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 (!(te instanceof PumpTileEntity)) + if (!(te instanceof PumpTileEntity pump)) return; - PumpTileEntity pump = (PumpTileEntity) te; Vec3 rotationOffset = new Vec3(.5, 14 / 16f, .5); BlockState blockState = te.getBlockState(); float angle = Mth.lerp(pump.arrowDirection.getValue(partialTicks), 0, 90) - 90; + SuperByteBuffer arrow = CachedBufferer.partial(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); for (float yRot : new float[] { 0, 90 }) { - ms.pushPose(); - SuperByteBuffer arrow = CachedBufferer.partial(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); Direction direction = blockState.getValue(PumpBlock.FACING); - MatrixTransformStack.of(ms) - .centre() + arrow.centre() .rotateY(AngleHelper.horizontalAngle(direction) + 180) .rotateX(-AngleHelper.verticalAngle(direction) - 90) .unCentre() .translate(rotationOffset) .rotateY(yRot) .rotateZ(angle) - .translateBack(rotationOffset); - arrow.light(light).renderInto(ms, buffer.getBuffer(RenderType.solid())); - ms.popPose(); + .translateBack(rotationOffset) + .light(light) + .renderInto(ms, buffer.getBuffer(RenderType.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java index a727f6ace..104f8146b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.fluids.actors; import java.util.Random; 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.content.contraptions.processing.EmptyingByBasin; @@ -48,7 +49,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer { BlockPos pos = basin.getBlockPos(); ms.translate(.5, .2f, .5); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(basin.ingredientRotation.getValue(partialTicks)); Random r = new Random(pos.hashCode()); @@ -80,7 +80,7 @@ public class BasinRenderer extends SmartTileEntityRenderer { Vec3 itemPosition = VecHelper.rotate(baseVector, anglePartition * itemCount, Axis.Y); ms.translate(itemPosition.x, itemPosition.y, itemPosition.z); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(anglePartition * itemCount + 35) .rotateX(65); @@ -122,7 +122,7 @@ public class BasinRenderer extends SmartTileEntityRenderer { continue; ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(outVec) .translate(new Vec3(0, Math.max(-.55f, -(progress * progress * 2)), 0)) .translate(directionVec.scale(progress * .5f)) @@ -179,7 +179,7 @@ public class BasinRenderer extends SmartTileEntityRenderer { return yMax; } - + @Override public int getViewDistance() { return 16; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java index 6882d46a5..687e8d0d5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java @@ -8,6 +8,7 @@ import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlockPartials; @@ -130,7 +131,7 @@ public class BeltInstance extends KineticTileInstance { Supplier ms = () -> { PoseStack modelTransform = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(modelTransform); + TransformStack msr = TransformStack.cast(modelTransform); msr.centre(); if (axis == Direction.Axis.X) msr.rotateY(90); 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 10f4347d9..38a990dbd 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 @@ -5,7 +5,7 @@ import java.util.function.Supplier; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; @@ -74,15 +74,15 @@ public class BeltRenderer extends SafeTileEntityRenderer { boolean alongX = facing.getAxis() == Axis.X; PoseStack localTransforms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(localTransforms); + TransformStack msr = TransformStack.cast(localTransforms); VertexConsumer vb = buffer.getBuffer(RenderType.solid()); float renderTick = AnimationTickHolder.getRenderTime(te.getLevel()); - msr.centre(); - msr.rotateY(AngleHelper.horizontalAngle(facing) + (upward ? 180 : 0) + (sideways ? 270 : 0)); - msr.rotateZ(sideways ? 90 : 0); - msr.rotateX(!diagonal && beltSlope != BeltSlope.HORIZONTAL ? 90 : 0); - msr.unCentre(); + msr.centre() + .rotateY(AngleHelper.horizontalAngle(facing) + (upward ? 180 : 0) + (sideways ? 270 : 0)) + .rotateZ(sideways ? 90 : 0) + .rotateX(!diagonal && beltSlope != BeltSlope.HORIZONTAL ? 90 : 0) + .unCentre(); if (downward || beltSlope == BeltSlope.VERTICAL && axisDirection == AxisDirection.POSITIVE) { boolean b = start; @@ -132,7 +132,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { Supplier matrixStackSupplier = () -> { PoseStack stack = new PoseStack(); - MatrixTransformStack stacker = MatrixTransformStack.of(stack); + TransformStack stacker = TransformStack.cast(stack); stacker.centre(); if (dir.getAxis() == Axis.X) stacker.rotateY(90); if (dir.getAxis() == Axis.Y) stacker.rotateX(90); @@ -200,7 +200,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { for (TransportedItemStack transported : te.getInventory() .getTransportedItems()) { ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .nudge(transported.angle); float offset; @@ -263,7 +263,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { ms.popPose(); ms.translate(0, slopeOffset, 0); } - + if (renderUpright) { Entity renderViewEntity = Minecraft.getInstance().cameraEntity; if (renderViewEntity != null) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java index bb2a07583..4b8e69c68 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java @@ -37,7 +37,7 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns Instancer headModel = getHeadModel(); ms = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); msr.translate(getInstancePosition()); float progress = Mth.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); @@ -67,7 +67,7 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns float progress = Mth.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); for (DialFace faceEntry : faces) { faceEntry.updateTransform(msr, progress); @@ -100,10 +100,10 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns this.face = face; } - private void setupTransform(MatrixTransformStack msr, float progress) { + private void setupTransform(TransformStack msr, float progress) { float dialPivot = 5.75f / 16; - ms.pushPose(); + msr.pushPose(); rotateToFace(msr); getSecond().setTransform(ms); @@ -114,13 +114,13 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns getFirst().setTransform(ms); - ms.popPose(); + msr.popPose(); } - private void updateTransform(MatrixTransformStack msr, float progress) { + private void updateTransform(TransformStack msr, float progress) { float dialPivot = 5.75f / 16; - ms.pushPose(); + msr.pushPose(); rotateToFace(msr) .translate(0, dialPivot, dialPivot) @@ -129,7 +129,7 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns getFirst().setTransform(ms); - ms.popPose(); + msr.popPose(); } protected TransformStack rotateToFace(TransformStack msr) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index 743e250e6..cd06d4417 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -71,8 +71,7 @@ public class CopperBacktankArmorLayer implements IDynamicInstance { + + private final Direction facing; + private ModelData lid; + private ModelData[] drawers; + + public ToolBoxInstance(MaterialManager materialManager, ToolboxTileEntity tile) { + super(materialManager, tile); + + facing = blockState.getValue(ToolboxBlock.FACING) + .getOpposite(); + } + + @Override + public void init() { + BlockState blockState = tile.getBlockState(); + + Instancer drawerModel = materialManager.defaultSolid() + .material(Materials.TRANSFORMED) + .getModel(AllBlockPartials.TOOLBOX_DRAWER, blockState); + + drawers = new ModelData[]{drawerModel.createInstance(), drawerModel.createInstance()}; + lid = materialManager.defaultCutout() + .material(Materials.TRANSFORMED) + .getModel(AllBlockPartials.TOOLBOX_LIDS.get(tile.getColor()), blockState) + .createInstance(); + + } + + @Override + public void remove() { + lid.delete(); + + for (ModelData drawer : drawers) { + drawer.delete(); + } + } + + @Override + public void beginFrame() { + + float partialTicks = AnimationTickHolder.getPartialTicks(); + + float lidAngle = tile.lid.getValue(partialTicks); + float drawerOffset = tile.drawers.getValue(partialTicks); + + lid.loadIdentity() + .translate(instancePos) + .centre() + .rotateY(-facing.toYRot()) + .unCentre() + .translate(0, 6 / 16f, 12 / 16f) + .rotateX(135 * lidAngle) + .translateBack(0, 6 / 16f, 12 / 16f); + + for (int offset : Iterate.zeroAndOne) { + drawers[offset].loadIdentity() + .translate(instancePos) + .centre() + .rotateY(-facing.toYRot()) + .unCentre() + .translate(0, offset * 1 / 8f, -drawerOffset * .175f * (2 - offset)); + } + } + + @Override + public void updateLight() { + relight(pos, drawers); + relight(pos, lid); + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java index 5eec0a1bd..86912a652 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxRenderer.java @@ -35,24 +35,22 @@ public class ToolboxRenderer extends SmartTileEntityRenderer float drawerOffset = tileEntityIn.drawers.getValue(partialTicks); VertexConsumer builder = buffer.getBuffer(RenderType.cutoutMipped()); - lid.matrixStacker() - .centre() + lid.centre() .rotateY(-facing.toYRot()) .unCentre() .translate(0, 6 / 16f, 12 / 16f) .rotateX(135 * lidAngle) - .translate(0, -6 / 16f, -12 / 16f); - lid.light(light) + .translate(0, -6 / 16f, -12 / 16f) + .light(light) .renderInto(ms, builder); for (int offset : Iterate.zeroAndOne) { - drawer.matrixStacker() - .centre() - .rotateY(-facing.toYRot()) - .unCentre(); - drawer.translate(0, offset * 1 / 8f, -drawerOffset * .175f * (2 - offset)) - .light(light) - .renderInto(ms, builder); + drawer.centre() + .rotateY(-facing.toYRot()) + .unCentre() + .translate(0, offset * 1 / 8f, -drawerOffset * .175f * (2 - offset)) + .light(light) + .renderInto(ms, builder); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java index ba603c04a..5a3b199c7 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java @@ -4,7 +4,7 @@ import java.util.Collections; import java.util.List; import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; @@ -125,9 +125,9 @@ public class ToolboxScreen extends AbstractSimiContainerScreen } private void renderToolbox(PoseStack ms, int x, int y, float partialTicks) { - ms.pushPose(); - ms.translate(x, y, 100); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) + .pushPose() + .translate(x, y, 100) .scale(50) .rotateX(-22) .rotateY(-202); @@ -136,8 +136,8 @@ public class ToolboxScreen extends AbstractSimiContainerScreen .getDefaultState()) .render(ms); - ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) + .pushPose() .translate(0, -6 / 16f, 12 / 16f) .rotateX(-105 * menu.contentHolder.lid.getValue(partialTicks)) .translate(0, 6 / 16f, -12 / 16f); 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 7712ca5ac..50d375ffc 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 @@ -9,6 +9,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.WeakHashMap; +import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -41,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 { +public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, Nameable, IInstanceRendered { public LerpedFloat lid = LerpedFloat.linear() .startWithValue(0); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java index 2597b3faa..4b68a02cc 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.curiosities.tools; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix3f; import com.simibubi.create.AllBlockPartials; @@ -34,8 +34,7 @@ public class BlueprintRenderer extends EntityRenderer { PartialModel partialModel = entity.size == 3 ? AllBlockPartials.CRAFTING_BLUEPRINT_3x3 : entity.size == 2 ? AllBlockPartials.CRAFTING_BLUEPRINT_2x2 : AllBlockPartials.CRAFTING_BLUEPRINT_1x1; SuperByteBuffer sbb = CachedBufferer.partial(partialModel, Blocks.AIR.defaultBlockState()); - sbb.matrixStacker() - .rotateY(-yaw) + sbb.rotateY(-yaw) .rotateX(90.0F + entity.getXRot()) .translate(-.5, -1 / 32f, -.5); if (entity.size == 2) @@ -60,7 +59,7 @@ public class BlueprintRenderer extends EntityRenderer { } int itemLight = Mth.floor(sl + .5) << 20 | (Mth.floor(bl + .5) & 0xf) << 4; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(vertical ? 0 : -yaw) .rotateX(fakeNormalXRotation); Matrix3f copy = ms.last() @@ -70,7 +69,7 @@ public class BlueprintRenderer extends EntityRenderer { ms.popPose(); ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(-yaw) .rotateX(entity.getXRot()) .translate(0, 0, 1 / 32f + .001); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java index 5d3d3a6f3..88f480986 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.curiosities.tools; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; @@ -22,7 +23,7 @@ public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer { int light, int overlay) { ItemRenderer itemRenderer = Minecraft.getInstance() .getItemRenderer(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); ms.pushPose(); msr.centre(); float itemScale = .5f; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java index 68ba5c5e1..982213757 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.logistics.block.depot; import java.util.Random; -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.content.contraptions.relays.belt.BeltHelper; @@ -37,7 +37,7 @@ public class DepotRenderer extends SafeTileEntityRenderer { int light, int overlay, DepotBehaviour depotBehaviour) { TransportedItemStack transported = depotBehaviour.heldItem; - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); Vec3 itemPosition = VecHelper.getCenterOf(te.getBlockPos()); ms.pushPose(); @@ -101,7 +101,7 @@ public class DepotRenderer extends SafeTileEntityRenderer { int angle, Random r, Vec3 itemPosition) { ItemRenderer itemRenderer = Minecraft.getInstance() .getItemRenderer(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); int count = (int) (Mth.log2((int) (itemStack.getCount()))) / 2; boolean renderUpright = BeltHelper.isItemUpright(itemStack); boolean blockItem = itemRenderer.getModel(itemStack, null, null, 0) 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 d548a236b..b8ca51510 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 @@ -61,10 +61,6 @@ public class EjectorInstance extends ShaftInstance implements IDynamicInstance { private void pivotPlate(float lidProgress) { float angle = lidProgress * 70; - PoseStack ms = new PoseStack(); - - EjectorRenderer.applyLidAngle(tile, angle, MatrixTransformStack.of(ms).translate(getInstancePosition())); - - plate.setTransform(ms); + EjectorRenderer.applyLidAngle(tile, angle, plate.loadIdentity().translate(getInstancePosition())); } } 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 5f354b9f1..868d1c668 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 @@ -1,8 +1,9 @@ package com.simibubi.create.content.logistics.block.depot; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.TransformStack; +import com.jozufozu.flywheel.util.transform.Translate; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; @@ -48,12 +49,12 @@ public class EjectorRenderer extends KineticTileEntityRenderer { if (!Backend.getInstance().canUseInstancing(te.getLevel())) { SuperByteBuffer model = CachedBufferer.partial(AllBlockPartials.EJECTOR_TOP, te.getBlockState()); - applyLidAngle(te, angle, model.matrixStacker()); + applyLidAngle(te, angle, model); model.light(light) .renderInto(ms, vertexBuilder); } - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); float maxTime = (float) (ejector.earlyTarget != null ? ejector.earlyTargetTime : ejector.launcher.getTotalFlyingTicks()); @@ -90,12 +91,12 @@ public class EjectorRenderer extends KineticTileEntityRenderer { ms.popPose(); } - static void applyLidAngle(KineticTileEntity te, float angle, TransformStack matrixStacker) { - applyLidAngle(te, pivot, angle, matrixStacker); + static & Rotate> void applyLidAngle(KineticTileEntity te, float angle, T tr) { + applyLidAngle(te, pivot, angle, tr); } - static void applyLidAngle(KineticTileEntity te, Vec3 rotationOffset, float angle, TransformStack matrixStacker) { - matrixStacker.centre() + static & Rotate> void applyLidAngle(KineticTileEntity te, Vec3 rotationOffset, float angle, T tr) { + tr.centre() .rotateY(180 + AngleHelper.horizontalAngle(te.getBlockState() .getValue(EjectorBlock.HORIZONTAL_FACING))) .unCentre() 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 a6d352250..7d4122d6b 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 @@ -6,7 +6,7 @@ import java.util.List; import javax.annotation.Nullable; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -598,7 +598,7 @@ public class EjectorTileEntity extends KineticTileEntity { @Override protected void rotate(BlockState state, PoseStack ms) { - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(angle(state)) .rotateX(90); } 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 47b3685de..e97d23857 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 @@ -23,12 +23,9 @@ public class BrassDiodeInstance extends TileEntityInstance .material(Materials.TRANSFORMED) .getModel(AllBlockPartials.FLEXPEATER_INDICATOR, blockState).createInstance(); - PoseStack ms = new PoseStack(); - MatrixTransformStack.of(ms).translate(getInstancePosition()); - - indicator - .setTransform(ms) - .setColor(getColor()); + indicator.loadIdentity() + .translate(getInstancePosition()) + .setColor(getColor()); previousState = tile.state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeScrollSlot.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeScrollSlot.java index c63eb8cd7..540a0638a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeScrollSlot.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeScrollSlot.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.block.diodes; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; @@ -20,7 +20,7 @@ public class BrassDiodeScrollSlot extends ValueBoxTransform { @Override protected void rotate(BlockState state, PoseStack ms) { float yRot = AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.HORIZONTAL_FACING)) + 180; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(90); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java index b317e25e7..2188665cb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.block.funnel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; @@ -59,21 +59,21 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { Shape shape = state.getValue(BeltFunnelBlock.SHAPE); super.rotate(state, ms); if (shape == Shape.PULLING || shape == Shape.PUSHING) - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateX(-22.5f); return; } if (state.getBlock() instanceof FunnelBlock) { super.rotate(state, ms); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateX(-22.5f); return; } float yRot = AngleHelper.horizontalAngle(AbstractFunnelBlock.getFunnelFacing(state)) + (facing == Direction.DOWN ? 180 : 0); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(facing == Direction.DOWN ? -90 : 90); } 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 baaa09b05..7ad96f7f4 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 @@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.block.funnel; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; @@ -39,7 +40,7 @@ public class FunnelRenderer extends SmartTileEntityRenderer { : AllBlockPartials.BELT_FUNNEL_FLAP); SuperByteBuffer flapBuffer = CachedBufferer.partial(partialModel, blockState); Vec3 pivot = VecHelper.voxelSpace(0, 10, 9.5f); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); float horizontalAngle = AngleHelper.horizontalAngle(FunnelBlock.getFunnelFacing(blockState) .getOpposite()); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java index 4d157ceb9..bd9d04cc9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.logistics.block.inventories; import java.util.List; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -97,7 +97,7 @@ public class CreativeCrateTileEntity extends CrateTileEntity { @Override protected void rotate(BlockState state, PoseStack ms) { - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateX(90); } 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 6eacffe63..9a8169d04 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 @@ -9,7 +9,7 @@ import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.RotatingData; @@ -122,7 +122,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta } PoseStack msLocal = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(msLocal); + TransformStack msr = TransformStack.cast(msLocal); msr.translate(getInstancePosition()); msr.centre(); 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 bbea65714..4e8e67173 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 @@ -2,6 +2,7 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; @@ -59,7 +60,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { BlockState blockState = te.getBlockState(); PoseStack msLocal = new PoseStack(); - MatrixTransformStack msr = MatrixTransformStack.of(msLocal); + TransformStack msr = TransformStack.cast(msLocal); float baseAngle; float lowerArmAngle; @@ -109,7 +110,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { } - private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, MatrixTransformStack msr, BlockState blockState, int color, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle, boolean hasItem, boolean isBlockItem, int light) { + private void renderArm(VertexConsumer builder, PoseStack ms, PoseStack msLocal, TransformStack msr, BlockState blockState, int color, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle, boolean hasItem, boolean isBlockItem, int light) { SuperByteBuffer base = CachedBufferer.partial(AllBlockPartials.ARM_BASE, blockState).light(light); SuperByteBuffer lowerBody = CachedBufferer.partial(AllBlockPartials.ARM_LOWER_BODY, blockState).light(light); SuperByteBuffer upperBody = CachedBufferer.partial(AllBlockPartials.ARM_UPPER_BODY, blockState).light(light); @@ -147,7 +148,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { } } - private void doItemTransforms(MatrixTransformStack msr, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle) { + private void doItemTransforms(TransformStack msr, float baseAngle, float lowerArmAngle, float upperArmAngle, float headAngle) { transformBase(msr, baseAngle); transformLowerArm(msr, lowerArmAngle); @@ -156,32 +157,32 @@ public class ArmRenderer extends KineticTileEntityRenderer { transformClaw(msr); } - public static void transformClawHalf(MatrixTransformStack msr, boolean hasItem, boolean isBlockItem, int flip) { + public static void transformClawHalf(TransformStack msr, boolean hasItem, boolean isBlockItem, int flip) { msr.translate(0, flip * 3 / 16d, -1 / 16d); msr.rotateX(flip * (hasItem ? isBlockItem ? 0 : -35 : 0)); } - public static void transformClaw(MatrixTransformStack msr) { + public static void transformClaw(TransformStack msr) { msr.translate(0, 0, -4 / 16d); } - public static void transformHead(MatrixTransformStack msr, float headAngle) { + public static void transformHead(TransformStack msr, float headAngle) { msr.translate(0, 11 / 16d, -11 / 16d); msr.rotateX(headAngle); } - public static void transformUpperArm(MatrixTransformStack msr, float upperArmAngle) { + public static void transformUpperArm(TransformStack msr, float upperArmAngle) { msr.translate(0, 12 / 16d, 12 / 16d); msr.rotateX(upperArmAngle); } - public static void transformLowerArm(MatrixTransformStack msr, float lowerArmAngle) { + public static void transformLowerArm(TransformStack msr, float lowerArmAngle) { msr.translate(0, 1 / 16d, -2 / 16d); msr.rotateX(lowerArmAngle); msr.translate(0, -1 / 16d, 0); } - public static void transformBase(MatrixTransformStack msr, float baseAngle) { + public static void transformBase(TransformStack msr, float baseAngle) { msr.translate(0, 4 / 16d, 0); msr.rotateY(baseAngle); } 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 3be20c99a..94d7dbfff 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 @@ -5,7 +5,9 @@ import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.Rotate; +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.jozufozu.flywheel.util.transform.Translate; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; @@ -31,6 +33,8 @@ public class AnalogLeverInstance extends TileEntityInstance & Rotate> T transform(T msr) { + return msr.translate(getInstancePosition()) + .centre() + .rotate(Direction.UP, (float) (rY / 180 * Math.PI)) + .rotate(Direction.EAST, (float) (rX / 180 * Math.PI)) + .unCentre(); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/FilteredDetectorFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/FilteredDetectorFilterSlot.java index b76629505..b7436efe0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/FilteredDetectorFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/FilteredDetectorFilterSlot.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.block.redstone; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; @@ -21,7 +21,7 @@ public class FilteredDetectorFilterSlot extends ValueBoxTransform { @Override protected void rotate(BlockState state, PoseStack ms) { float yRot = AngleHelper.horizontalAngle(state.getValue(HorizontalDirectionalBlock.FACING)) + 180; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(90); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java index 27b7e4c6e..02054c109 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java @@ -4,7 +4,7 @@ import java.util.Map; import java.util.Random; import com.google.common.collect.ImmutableMap; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; @@ -58,7 +58,7 @@ public class NixieTubeRenderer extends SafeTileEntityRenderer { ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(localPos); BlockPos pos = localPos.offset(anchor); BlockState state = blockAccess.getBlockState(pos); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java index 75186528b..73b27b5a2 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.schematics.client; import static java.lang.Math.abs; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; @@ -63,7 +63,7 @@ public class SchematicTransformation { float lr = getScaleLR().get(pt); float rot = rotation.get(pt) + ((fb < 0 && lr < 0) ? 180 : 0); ms.translate(xOrigin, 0, zOrigin); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(rotationOffset) .rotateY(rot) .translateBack(rotationOffset); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java index 0ad5308f6..02181b313 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.schematics.client.tools; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllKeys; import com.simibubi.create.content.schematics.client.SchematicTransformation; @@ -59,7 +59,7 @@ public class DeployTool extends PlacementToolBase { Vec3 origin = new Vec3(xOrigin, 0, zOrigin); ms.translate(x - centerX, y, z - centerZ); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(origin) .translate(rotationOffset) .rotateY(transformation.getCurrentRotation()) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java index eb445bb82..c82207d53 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java @@ -3,6 +3,7 @@ package com.simibubi.create.foundation.fluid; import java.util.function.Function; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -57,7 +58,7 @@ public class FluidRenderer { if (inbound) direction = direction.getOpposite(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + TransformStack msr = TransformStack.cast(ms); ms.pushPose(); msr.centre() .rotateY(AngleHelper.horizontalAngle(direction)) @@ -110,7 +111,7 @@ public class FluidRenderer { if (fluidStack.getFluid() .getAttributes() .isLighterThanAir()) - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(center) .rotateX(180) .translateBack(center); diff --git a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java index c2631f48b..2706ec371 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.gui; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -85,7 +85,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { ms.translate(width / 2, 60, 200); ms.scale(24 * side, 24 * side, 32); ms.translate(-1.75 * ((alpha * alpha) / 2f + .5f), .25f, 0); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateX(45); GuiGameElement.of(AllBlocks.LARGE_COGWHEEL.getDefaultState()) .rotateBlock(0, Util.getMillis() / 32f * side, 0) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java index f41c5147c..8721a19e1 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java @@ -18,7 +18,7 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.mutable.MutableDouble; import org.apache.commons.lang3.mutable.MutableObject; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.mojang.math.Vector4f; @@ -455,14 +455,12 @@ public class PonderScene { public PoseStack apply(PoseStack ms, float pt, boolean overlayCompatible) { ms.translate(width / 2, height / 2, 200 + offset); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateX(-35) - .rotateY(55); - ms.translate(offset, 0, 0); - MatrixTransformStack.of(ms) + .rotateY(55) + .translate(offset, 0, 0) .rotateY(-55) - .rotateX(35); - MatrixTransformStack.of(ms) + .rotateX(35) .rotateX(xRotation.getValue(pt)) .rotateY(yRotation.getValue(pt)); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java index 75325dff4..34e93728b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.ponder.elements; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.ponder.PonderWorld; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -61,8 +61,8 @@ public abstract class AnimatedSceneElement extends PonderSceneElement { protected float applyFade(PoseStack ms, float pt) { float currentFade = fade.getValue(pt); if (fadeVec != null) - MatrixTransformStack.of(ms) - .translate(fadeVec.scale(-1 + currentFade)); + TransformStack.cast(ms) + .translate(fadeVec.scale(-1 + currentFade)); return currentFade; } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java index 630b74094..4a96afb4e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.ponder.elements; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderWorld; @@ -103,7 +103,7 @@ public class MinecartElement extends AnimatedSceneElement { ms.translate(Mth.lerp(pt, entity.xo, entity.getX()), Mth.lerp(pt, entity.yo, entity.getY()), Mth.lerp(pt, entity.zo, entity.getZ())); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(rotation.getValue(pt)); entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java index 6ee81dffc..ac07defce 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java @@ -2,7 +2,7 @@ package com.simibubi.create.foundation.ponder.elements; import java.util.function.Supplier; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.Create; @@ -126,7 +126,7 @@ public class ParrotElement extends AnimatedSceneElement { ms.translate(Mth.lerp(pt, entity.xo, entity.getX()), Mth.lerp(pt, entity.yo, entity.getY()), Mth.lerp(pt, entity.zo, entity.getZ())); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(AngleHelper.angleLerp(pt, entity.yRotO, entity.getYRot())); entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java index 21fe02280..dccffa6ae 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java @@ -7,7 +7,7 @@ import java.util.Map.Entry; import java.util.Random; import java.util.function.Consumer; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.DefaultVertexFormat; @@ -221,7 +221,7 @@ public class WorldSectionElement extends AnimatedSceneElement { } public void transformMS(PoseStack ms, float pt) { - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(VecHelper.lerp(pt, prevAnimatedOffset, animatedOffset)); if (!animatedRotation.equals(Vec3.ZERO) || !prevAnimatedRotation.equals(Vec3.ZERO)) { if (centerOfRotation == null) @@ -229,14 +229,14 @@ public class WorldSectionElement extends AnimatedSceneElement { double rotX = Mth.lerp(pt, prevAnimatedRotation.x, animatedRotation.x); double rotZ = Mth.lerp(pt, prevAnimatedRotation.z, animatedRotation.z); double rotY = Mth.lerp(pt, prevAnimatedRotation.y, animatedRotation.y); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(centerOfRotation) .rotateX(rotX) .rotateZ(rotZ) .rotateY(rotY) .translateBack(centerOfRotation); if (stabilizationAnchor != null) { - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(stabilizationAnchor) .rotateX(-rotX) .rotateZ(-rotZ) diff --git a/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java b/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java index fe0243b4d..278f51c43 100644 --- a/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java +++ b/src/main/java/com/simibubi/create/foundation/render/CachedBufferer.java @@ -7,7 +7,7 @@ import java.util.function.Supplier; import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.render.SuperByteBufferCache.Compartment; @@ -65,7 +65,7 @@ public class CachedBufferer { public static Supplier rotateToFace(Direction facing) { return () -> { PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) + TransformStack.cast(stack) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing)) @@ -77,7 +77,7 @@ public class CachedBufferer { public static Supplier rotateToFaceVertical(Direction facing) { return () -> { PoseStack stack = new PoseStack(); - MatrixTransformStack.of(stack) + TransformStack.cast(stack) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) 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 a5f55507b..059ac689a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -1,7 +1,11 @@ package com.simibubi.create.foundation.render; import com.jozufozu.flywheel.util.BufferBuilderReader; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.Rotate; +import com.jozufozu.flywheel.util.transform.Scale; +import com.jozufozu.flywheel.util.transform.TStack; +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.jozufozu.flywheel.util.transform.Translate; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -24,10 +28,9 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.client.model.pipeline.LightUtil; -public class SuperByteBuffer { +public class SuperByteBuffer implements Scale, Translate, Rotate, TStack { private final BufferBuilderReader template; @@ -62,13 +65,11 @@ public class SuperByteBuffer { private final Vector4f pos = new Vector4f(); private final Vector3f normal = new Vector3f(); private final Vector4f lightPos = new Vector4f(); - private final MatrixTransformStack stacker; public SuperByteBuffer(BufferBuilder buf) { template = new BufferBuilderReader(buf); transforms = new PoseStack(); transforms.pushPose(); - stacker = MatrixTransformStack.of(transforms); } public static float getUnInterpolatedU(TextureAtlasSprite sprite, float u) { @@ -228,20 +229,15 @@ public class SuperByteBuffer { return this; } - public MatrixTransformStack matrixStacker() { - return stacker; - } - - public SuperByteBuffer translate(Vec3 vec) { - return translate(vec.x, vec.y, vec.z); - } - + @Override public SuperByteBuffer translate(double x, double y, double z) { - return translate((float) x, (float) y, (float) z); + transforms.translate(x, y, z); + return this; } - public SuperByteBuffer translate(float x, float y, float z) { - transforms.translate(x, y, z); + @Override + public SuperByteBuffer multiply(Quaternion quaternion) { + transforms.mulPose(quaternion); return this; } @@ -257,27 +253,16 @@ public class SuperByteBuffer { return this; } - public SuperByteBuffer rotate(Direction axis, float radians) { - if (radians == 0) - return this; - transforms.mulPose(axis.step() - .rotation(radians)); - return this; - } - - public SuperByteBuffer rotate(Quaternion q) { - transforms.mulPose(q); - return this; - } - public SuperByteBuffer rotateCentered(Direction axis, float radians) { - return translate(.5f, .5f, .5f).rotate(axis, radians) + translate(.5f, .5f, .5f).rotate(axis, radians) .translate(-.5f, -.5f, -.5f); + return this; } public SuperByteBuffer rotateCentered(Quaternion q) { - return translate(.5f, .5f, .5f).rotate(q) + translate(.5f, .5f, .5f).multiply(q) .translate(-.5f, -.5f, -.5f); + return this; } public SuperByteBuffer color(int r, int g, int b, int a) { @@ -440,6 +425,24 @@ public class SuperByteBuffer { return WORLD_LIGHT_CACHE.computeIfAbsent(pos.asLong(), $ -> 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 5496b3bb5..2f50a7cfe 100644 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java @@ -6,7 +6,7 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.mojang.math.Vector4f; @@ -59,7 +59,7 @@ public class TileEntityRenderHelper { BlockPos pos = tileEntity.getBlockPos(); ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(pos); try { diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java index cc8197e9a..9158b824d 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java @@ -4,7 +4,7 @@ import java.util.function.Function; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -109,7 +109,7 @@ public abstract class ValueBoxTransform { protected void rotate(BlockState state, PoseStack ms) { float yRot = AngleHelper.horizontalAngle(getSide()) + 180; float xRot = getSide() == Direction.UP ? 90 : getSide() == Direction.DOWN ? 270 : 0; - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .rotateY(yRot) .rotateX(xRot); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java index 33e73072c..8f0b7d62e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java @@ -4,7 +4,7 @@ import java.util.Optional; import javax.annotation.Nullable; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Matrix3f; @@ -46,7 +46,7 @@ public abstract class Outline { .length(); float vAngle = AngleHelper.deg(Mth.atan2(hDistance, diff.y)) - 90; ms.pushPose(); - MatrixTransformStack.of(ms) + TransformStack.cast(ms) .translate(start) .rotateY(hAngle).rotateX(vAngle); renderAACuboidLine(ms, buffer, Vec3.ZERO, new Vec3(0, 0, diff.length())); From b8127407fae00b4f6165df34a5866890ea674678 Mon Sep 17 00:00:00 2001 From: Martin Zeller Date: Wed, 24 Nov 2021 06:17:21 +0100 Subject: [PATCH 21/26] Fix de_DE controller rail translation --- src/main/resources/assets/create/lang/de_de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json index a0a98394b..c462dff01 100644 --- a/src/main/resources/assets/create/lang/de_de.json +++ b/src/main/resources/assets/create/lang/de_de.json @@ -55,7 +55,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steureungsschiene", + "block.create.controller_rail": "Steuerungsschiene", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", "block.create.copper_ore": "Kupfererz", From 393cc55e712b1c591aa72742b38c8a68730c2b1f Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 24 Nov 2021 14:06:10 +0100 Subject: [PATCH 22/26] Stealthy Evaporation - Fixed fluid networks losing fluids when extracted amount is lower than a pumps transfer speed - Fixed JEI plugin claiming that some occultism's ritual recipes work in a compacter - Fixed press/deployer/spout failing to process a belt item when another item is processed simultaneously further down the belt --- .../components/press/MechanicalPressTileEntity.java | 2 +- .../content/contraptions/fluids/FluidNetwork.java | 2 ++ .../relays/belt/transport/BeltInventory.java | 13 ++++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index 154517f77..3fd38184c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -344,7 +344,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } private static final List RECIPE_DENY_LIST = - ImmutableList.of(new ResourceLocation("occultism", "spirit_trade")); + ImmutableList.of(new ResourceLocation("occultism", "spirit_trade"), new ResourceLocation("occultism", "ritual")); public static boolean canCompress(IRecipe recipe) { NonNullList ingredients = recipe.getIngredients(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java index ad2defafd..99dd28fbe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java @@ -209,6 +209,8 @@ public class FluidNetwork { if (transfer.isEmpty()) return; + if (simulate) + flowSpeed = transfer.getAmount(); List>> availableOutputs = new ArrayList<>(targets); while (!availableOutputs.isEmpty() && transfer.getAmount() > 0) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index a7e684e09..cef782c11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -115,11 +115,12 @@ public class BeltInventory { } // Don't move if other items are waiting in front + boolean noMovement = false; float currentPos = currentItem.beltPosition; if (stackInFront != null) { float diff = stackInFront.beltPosition - currentPos; if (Math.abs(diff) <= spacing) - continue; + noMovement = true; movement = beltMovementPositive ? Math.min(movement, diff - spacing) : Math.max(movement, diff + spacing); } @@ -138,7 +139,7 @@ public class BeltInventory { // Belt item processing if (!onClient && horizontal) { ItemStack item = currentItem.stack; - if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset)) { + if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset, noMovement)) { iterator.remove(); belt.sendData(); continue; @@ -148,6 +149,9 @@ public class BeltInventory { if (currentItem.locked) continue; } + + if (noMovement) + continue; // Belt Tunnels if (BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset)) @@ -212,7 +216,7 @@ public class BeltInventory { } } - protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset) { + protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset, boolean noMovement) { int currentSegment = (int) currentItem.beltPosition; // Continue processing if held @@ -239,6 +243,9 @@ public class BeltInventory { belt.sendData(); return false; } + + if (noMovement) + return false; // See if any new belt processing catches the item if (currentItem.beltPosition > .5f || beltMovementPositive) { From dfe2f41b59d91bd9bbf11fb6bca7b260dc1c47fe Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 24 Nov 2021 14:13:22 +0100 Subject: [PATCH 23/26] Post-PR Datagen --- src/generated/resources/.cache/cache | 2 +- .../resources/assets/create/lang/unfinished/de_de.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 5e1ee6ed8..20588ac8f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -443,7 +443,7 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 5ae77ed97ee05a7ed98999178677e576c1140007 assets/create/lang/en_ud.json 5a7c0c3ea8d5fe01289b4eb2ea4f175bad825672 assets/create/lang/en_us.json -c7c1900b9a88af98d3af131dae5f1e2263c86635 assets/create/lang/unfinished/de_de.json +871366be20f47f45872f84ec7c6947952c76099c assets/create/lang/unfinished/de_de.json bb65514ab38063b4686efe9e7f1d8de78823111f assets/create/lang/unfinished/es_cl.json 800b427fc2e4f3b71df9c6295e500d77e8c1d486 assets/create/lang/unfinished/es_es.json 5ad47cb60df592b461672e224dfb89167f8861e1 assets/create/lang/unfinished/fr_fr.json diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 2f1f4b18c..eeb1ca872 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -63,7 +63,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steureungsschiene", + "block.create.controller_rail": "Steuerungsschiene", "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", From 6eca28113430962fc6d8a9961db21ccc70d86596 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 24 Nov 2021 11:12:59 -0800 Subject: [PATCH 24/26] Hack for contraption cutout --- .../flywheel/shaders/context/contraption.glsl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/resources/assets/create/flywheel/shaders/context/contraption.glsl b/src/main/resources/assets/create/flywheel/shaders/context/contraption.glsl index 61d0b80c2..42d22c52d 100644 --- a/src/main/resources/assets/create/flywheel/shaders/context/contraption.glsl +++ b/src/main/resources/assets/create/flywheel/shaders/context/contraption.glsl @@ -40,6 +40,14 @@ void FLWFinalizeWorldPos(inout vec4 worldPos) { #elif defined(FRAGMENT_SHADER) #use "flywheel:core/lightutil.glsl" +#define ALPHA_DISCARD 0.1 +// +//#if defined(ALPHA_DISCARD) +//#if defined(GL_ARB_conservative_depth) +//layout (depth_greater) out float gl_FragDepth; +//#endif +//#endif + in vec3 BoxCoord; out vec4 FragColor; @@ -57,6 +65,12 @@ void FLWFinalizeColor(vec4 color) { color.a = a; #endif + #if defined(ALPHA_DISCARD) + if (color.a < ALPHA_DISCARD) { + discard; + } + #endif + FragColor = color; } From 7a4ed99fb54cfbd47dc4c4ea9f90d2587e182ae6 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Sat, 27 Nov 2021 12:46:01 -0800 Subject: [PATCH 25/26] Bump flywheel build - New project slug - StitchedSprite changes --- build.gradle | 8 ++++---- gradle.properties | 2 +- .../java/com/simibubi/create/AllStitchedTextures.java | 3 +-- .../components/structureMovement/glue/GlueInstance.java | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 306d8a9dc..6df71f6b1 100644 --- a/build.gradle +++ b/build.gradle @@ -139,10 +139,10 @@ dependencies { implementation fg.deobf(registrate) shade registrate - if (findProject(':Flywheel') != null) { - implementation project(':Flywheel') // jozu: I use a gradle workspace with both projects + if (findProject(':Flywheel-Forge') != null) { + implementation project(':Flywheel-Forge') // jozu: I use a gradle workspace with both projects } else { - implementation fg.deobf("com.jozufozu.flywheel:Flywheel:${flywheel_version}") + implementation fg.deobf("com.jozufozu.flywheel:Flywheel-Forge:${flywheel_version}") } compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api") @@ -256,7 +256,7 @@ String getChangelogText() { // if (project.hasProperty('simi_curseforge_key')) { // apiKey = project.simi_curseforge_key // } -// +// // project { // id = project.projectId // changelog = System.getenv('CHANGELOG') == null || System.getenv('CHANGELOG').equals('none') ? getChangelogText() : System.getenv('CHANGELOG') diff --git a/gradle.properties b/gradle.properties index 1aaf62906..383fe0145 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ parchment_version = 2021.10.31 # dependency versions registrate_version = MC1.17.1-1.0.14 -flywheel_version = 1.17-0.3.0.15 +flywheel_version = 1.17-0.3.0.17 jei_version = 8.2.0.36 # curseforge information diff --git a/src/main/java/com/simibubi/create/AllStitchedTextures.java b/src/main/java/com/simibubi/create/AllStitchedTextures.java index f18196e89..5a1038dd4 100644 --- a/src/main/java/com/simibubi/create/AllStitchedTextures.java +++ b/src/main/java/com/simibubi/create/AllStitchedTextures.java @@ -1,13 +1,12 @@ package com.simibubi.create; -import com.jozufozu.flywheel.core.AtlasStitcher; import com.jozufozu.flywheel.core.StitchedSprite; import net.minecraft.resources.ResourceLocation; public class AllStitchedTextures { - public static final StitchedSprite SUPER_GLUE = AtlasStitcher.getInstance().get(new ResourceLocation(Create.ID, "entity/super_glue/slime")); + public static final StitchedSprite SUPER_GLUE = new StitchedSprite(new ResourceLocation(Create.ID, "entity/super_glue/slime")); public static void init() { 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 5d8564541..e56e7f577 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 @@ -134,7 +134,7 @@ public class GlueInstance extends EntityInstance implements ITi float maxV; if (USE_ATLAS) { - TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.getSprite(); + TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.get(); minU = sprite.getU0(); maxU = sprite.getU1(); minV = sprite.getV0(); From 1fdf1ff7e91d39152a24a00fe6427dcd3ad77a7f Mon Sep 17 00:00:00 2001 From: PepperBell <44146161+PepperCode1@users.noreply.github.com> Date: Sat, 27 Nov 2021 14:49:43 -0800 Subject: [PATCH 26/26] Destroyed and deprecated - Fix rotation indicator particles - Fix sail dyeing - Turn BreakProgressHook into DestroyProgressRenderingHandler interface - Refactor overlay rendering to properly use API - Change SpriteShiftEntry to use StitchedSprites - Use OnDatapackSyncEvent instead of mixin - Organize foundation.ponder package - Remove usage of deprecated: - Durability bar methods - Constants class --- build.gradle | 2 +- gradle.properties | 2 +- .../com/simibubi/create/AllSoundEvents.java | 21 +-- .../simibubi/create/AllStitchedTextures.java | 5 +- .../com/simibubi/create/CreateClient.java | 21 ++- .../base/ShaftlessCogInstance.java | 1 - .../actors/HarvesterActorInstance.java | 2 - .../crafter/ConnectedInputHandler.java | 4 +- .../crafter/MechanicalCrafterInstance.java | 1 - .../components/crafter/RecipeGridHandler.java | 4 +- .../deployer/DeployerMovementBehaviour.java | 4 +- .../deployer/DeployerMovingInteraction.java | 4 +- .../deployer/DeployerTileEntity.java | 6 +- .../flywheel/engine/EngineInstance.java | 2 - .../press/MechanicalPressTileEntity.java | 4 +- .../components/saw/SawRenderer.java | 1 - .../structureMovement/Contraption.java | 75 ++++---- .../structureMovement/ContraptionHandler.java | 4 +- .../structureMovement/MovementContext.java | 8 +- .../structureMovement/bearing/SailBlock.java | 2 +- .../chassis/StickerInstance.java | 2 - .../gantry/GantryCarriageInstance.java | 2 - .../train/capability/MinecartController.java | 6 +- .../contraptions/fluids/PipeConnection.java | 4 +- .../contraptions/fluids/PumpRenderer.java | 1 - .../fluids/actors/ItemDrainRenderer.java | 1 - .../fluids/pipes/FluidValveInstance.java | 2 - .../fluids/pipes/FluidValveRenderer.java | 1 - .../goggles/GoggleOverlayRenderer.java | 23 ++- .../itemAssembly/SequencedAssemblyItem.java | 33 ++-- .../particle/RotationIndicatorParticle.java | 6 +- .../RotationIndicatorParticleData.java | 2 +- .../processing/BasinTileEntity.java | 12 +- .../ConfigureSequencedGearshiftPacket.java | 4 +- .../SequencedGearshiftTileEntity.java | 4 +- .../contraptions/relays/belt/BeltBlock.java | 18 +- .../relays/belt/BeltInstance.java | 1 - .../contraptions/relays/belt/BeltSlicer.java | 7 +- .../relays/belt/transport/BeltInventory.java | 4 +- .../relays/gauge/GaugeInstance.java | 1 - .../curiosities/ChromaticCompoundItem.java | 28 ++- .../curiosities/armor/BackTankUtil.java | 60 +++--- .../armor/CopperBacktankArmorLayer.java | 21 +-- .../curiosities/armor/CopperBacktankItem.java | 21 +-- .../armor/CopperBacktankTileEntity.java | 4 +- .../symmetry/SymmetryWandItem.java | 3 +- .../toolbox/RadialToolboxMenu.java | 40 ++-- .../toolbox/ToolboxHandlerClient.java | 21 +-- .../curiosities/toolbox/ToolboxInventory.java | 4 +- .../tools/BlueprintOverlayRenderer.java | 31 ++-- .../curiosities/tools/ExtendoGripItem.java | 12 +- .../tools/ExtendoGripItemRenderer.java | 1 - .../curiosities/weapons/PotatoCannonItem.java | 12 +- .../curiosities/zapper/ZapperItem.java | 4 +- .../terrainzapper/WorldshaperScreen.java | 4 +- .../belts/tunnel/BeltTunnelRenderer.java | 1 - .../belts/tunnel/BeltTunnelTileEntity.java | 5 +- .../belts/tunnel/BrassTunnelTileEntity.java | 4 +- .../logistics/block/chute/ChuteRenderer.java | 1 - .../logistics/block/depot/DepotBehaviour.java | 4 +- .../block/depot/EjectorInstance.java | 2 - .../block/depot/EjectorTileEntity.java | 6 +- .../block/diodes/BrassDiodeInstance.java | 2 - .../block/funnel/FunnelRenderer.java | 1 - .../mechanicalArm/ArmPlacementPacket.java | 4 +- .../block/mechanicalArm/ArmRenderer.java | 1 - .../block/mechanicalArm/ArmTileEntity.java | 3 +- .../block/redstone/AnalogLeverInstance.java | 2 - .../block/redstone/NixieTubeTileEntity.java | 6 +- .../item/LecternControllerRenderer.java | 1 - .../item/LinkedControllerClientHandler.java | 20 +- .../item/LinkedControllerItemRenderer.java | 1 - .../item/filter/AttributeFilterContainer.java | 4 +- .../logistics/item/filter/FilterItem.java | 5 +- .../schematics/block/LaunchedItem.java | 4 +- .../schematics/client/SchematicHandler.java | 19 +- .../client/tools/ISchematicTool.java | 4 +- .../client/tools/PlacementToolBase.java | 6 +- .../client/tools/SchematicToolBase.java | 4 +- .../simibubi/create/events/ClientEvents.java | 32 ---- .../simibubi/create/events/CommonEvents.java | 15 +- .../foundation/block/BreakProgressHook.java | 22 --- .../DestroyProgressRenderingHandler.java | 16 ++ .../block/render/SpriteShiftEntry.java | 28 ++- .../block/render/SpriteShifter.java | 37 ---- .../command/SConfigureConfigPacket.java | 4 +- .../foundation/fluid/FluidRenderer.java | 1 - .../foundation/gui/CreateMainMenuScreen.java | 2 +- .../gui/CustomLightingSettings.java | 3 +- .../create/foundation/gui/ScreenOpener.java | 2 +- .../gui/element/GuiGameElement.java | 5 +- .../foundation/mixin/BreakProgressMixin.java | 27 --- .../mixin/DestroyProgressMixin.java | 36 ++++ .../mixin/HeavyBootsOnPlayerMixin.java | 4 +- .../foundation/mixin/PlayerListMixin.java | 25 --- .../foundation/networking/AllPackets.java | 10 +- .../create/foundation/ponder/ElementLink.java | 2 + .../ponder/{content => }/PonderChapter.java | 4 +- .../{content => }/PonderChapterRegistry.java | 3 +- .../foundation/ponder/PonderLocalization.java | 6 +- .../ponder/{content => }/PonderPalette.java | 2 +- .../ponder/PonderRegistrationHelper.java | 2 - .../foundation/ponder/PonderRegistry.java | 3 - .../create/foundation/ponder/PonderScene.java | 173 +++++++++++------- .../ponder/PonderStoryBoardEntry.java | 3 - .../ponder/{content => }/PonderTag.java | 4 +- .../{content => }/PonderTagRegistry.java | 2 +- .../ponder/PonderTooltipHandler.java | 2 + .../create/foundation/ponder/PonderWorld.java | 2 +- .../foundation/ponder/SceneBuilder.java | 88 ++++----- .../foundation/ponder/content/ArmScenes.java | 5 +- .../ponder/content/BearingScenes.java | 5 +- .../foundation/ponder/content/BeltScenes.java | 13 +- .../ponder/content/CartAssemblerScenes.java | 11 +- .../ponder/content/ChainDriveScenes.java | 7 +- .../ponder/content/ChassisScenes.java | 7 +- .../ponder/content/ChuteScenes.java | 7 +- .../ponder/content/CrafterScenes.java | 5 +- .../ponder/content/DebugScenes.java | 13 +- .../ponder/content/DeployerScenes.java | 11 +- .../ponder/content/EjectorScenes.java | 7 +- .../foundation/ponder/content/FanScenes.java | 15 +- .../ponder/content/FunnelScenes.java | 7 +- .../ponder/content/GantryScenes.java | 3 +- .../ponder/content/KineticsScenes.java | 7 +- .../ponder/content/MechanicalDrillScenes.java | 6 +- .../ponder/content/MechanicalSawScenes.java | 7 +- .../ponder/content/MovementActorScenes.java | 11 +- .../ponder/content/PistonScenes.java | 9 +- .../ponder/content/PonderIndex.java | 1 + .../ponder/content/ProcessingScenes.java | 11 +- .../ponder/content/PulleyScenes.java | 5 +- .../ponder/content/RedstoneScenes.java | 7 +- .../ponder/content/TunnelScenes.java | 5 +- .../ponder/content/fluid/DrainScenes.java | 4 +- .../fluid/FluidMovementActorScenes.java | 6 +- .../ponder/content/fluid/FluidTankScenes.java | 8 +- .../content/fluid/HosePulleyScenes.java | 4 +- .../ponder/content/fluid/PipeScenes.java | 6 +- .../ponder/content/fluid/PumpScenes.java | 6 +- .../ponder/content/fluid/SpoutScenes.java | 10 +- .../AnimatedOverlayElement.java | 4 +- .../AnimatedSceneElement.java | 2 +- .../BeltItemElement.java | 2 +- .../{elements => element}/EntityElement.java | 2 +- .../InputWindowElement.java | 6 +- .../MinecartElement.java | 2 +- .../OutlinerElement.java | 2 +- .../{elements => element}/ParrotElement.java | 4 +- .../ponder/{ => element}/PonderElement.java | 4 +- .../PonderOverlayElement.java | 5 +- .../PonderSceneElement.java | 3 +- .../TextWindowElement.java | 6 +- .../{elements => element}/TrackedElement.java | 2 +- .../WorldSectionElement.java | 2 +- .../AnimateElementInstruction.java | 4 +- .../AnimateMinecartInstruction.java | 4 +- .../AnimateParrotInstruction.java | 4 +- .../AnimateTileEntityInstruction.java | 2 +- .../AnimateWorldSectionInstruction.java | 4 +- .../ChaseAABBInstruction.java | 4 +- .../CreateMinecartInstruction.java | 4 +- .../CreateParrotInstruction.java | 4 +- .../DelayInstruction.java | 2 +- .../DisplayWorldSectionInstruction.java | 4 +- .../EmitParticlesInstruction.java | 2 +- .../FadeInOutInstruction.java | 2 +- .../FadeIntoSceneInstruction.java | 4 +- .../FadeOutOfSceneInstruction.java | 4 +- .../HideAllInstruction.java | 6 +- .../HighlightValueBoxInstruction.java | 4 +- .../KeyframeInstruction.java | 3 +- .../LineInstruction.java | 4 +- .../MarkAsFinishedInstruction.java | 3 +- .../MovePoiInstruction.java | 3 +- .../OutlineSelectionInstruction.java | 4 +- .../{ => instruction}/PonderInstruction.java | 4 +- .../ReplaceBlocksInstruction.java | 2 +- .../RotateSceneInstruction.java | 3 +- .../ShowInputInstruction.java | 4 +- .../TextInstruction.java | 6 +- .../TickingInstruction.java | 3 +- .../TileEntityDataInstruction.java | 2 +- .../WorldModifyInstruction.java | 5 +- .../foundation/ponder/ui/ChapterLabel.java | 2 +- .../{ => ui}/NavigatableSimiScreen.java | 4 +- .../foundation/ponder/ui/PonderButton.java | 2 +- .../{content => ui}/PonderIndexScreen.java | 8 +- .../ponder/{ => ui}/PonderProgressBar.java | 38 ++-- .../{content => ui}/PonderTagIndexScreen.java | 7 +- .../{content => ui}/PonderTagScreen.java | 9 +- .../foundation/ponder/{ => ui}/PonderUI.java | 40 ++-- .../foundation/render/SuperByteBuffer.java | 1 - .../filtering/SidedFilteringBehaviour.java | 4 +- .../fluid/SmartFluidTankBehaviour.java | 4 +- .../utility/AnimationTickHolder.java | 2 +- .../create/foundation/utility/NBTHelper.java | 3 +- .../foundation/utility/NBTProcessors.java | 9 +- .../create/foundation/utility/VecHelper.java | 1 - src/main/resources/META-INF/mods.toml | 2 +- src/main/resources/create.mixins.json | 5 +- 201 files changed, 849 insertions(+), 919 deletions(-) delete mode 100644 src/main/java/com/simibubi/create/foundation/block/BreakProgressHook.java create mode 100644 src/main/java/com/simibubi/create/foundation/block/render/DestroyProgressRenderingHandler.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/DestroyProgressMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/PlayerListMixin.java rename src/main/java/com/simibubi/create/foundation/ponder/{content => }/PonderChapter.java (88%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => }/PonderChapterRegistry.java (92%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => }/PonderPalette.java (90%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => }/PonderTag.java (96%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => }/PonderTagRegistry.java (98%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/AnimatedOverlayElement.java (87%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/AnimatedSceneElement.java (97%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/BeltItemElement.java (81%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/EntityElement.java (82%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/InputWindowElement.java (95%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/MinecartElement.java (98%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/OutlinerElement.java (94%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/ParrotElement.java (98%) rename src/main/java/com/simibubi/create/foundation/ponder/{ => element}/PonderElement.java (73%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/PonderOverlayElement.java (64%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/PonderSceneElement.java (84%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/TextWindowElement.java (95%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/TrackedElement.java (95%) rename src/main/java/com/simibubi/create/foundation/ponder/{elements => element}/WorldSectionElement.java (99%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/AnimateElementInstruction.java (91%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/AnimateMinecartInstruction.java (88%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/AnimateParrotInstruction.java (88%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/AnimateTileEntityInstruction.java (98%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/AnimateWorldSectionInstruction.java (89%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/ChaseAABBInstruction.java (81%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/CreateMinecartInstruction.java (74%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/CreateParrotInstruction.java (74%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/DelayInstruction.java (67%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/DisplayWorldSectionInstruction.java (92%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/EmitParticlesInstruction.java (96%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/FadeInOutInstruction.java (94%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/FadeIntoSceneInstruction.java (91%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/FadeOutOfSceneInstruction.java (89%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/HideAllInstruction.java (87%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/HighlightValueBoxInstruction.java (85%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/KeyframeInstruction.java (84%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/LineInstruction.java (81%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/MarkAsFinishedInstruction.java (74%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/MovePoiInstruction.java (75%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/OutlineSelectionInstruction.java (83%) rename src/main/java/com/simibubi/create/foundation/ponder/{ => instruction}/PonderInstruction.java (86%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/ReplaceBlocksInstruction.java (95%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/RotateSceneInstruction.java (88%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/ShowInputInstruction.java (81%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/TextInstruction.java (85%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/TickingInstruction.java (88%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/TileEntityDataInstruction.java (95%) rename src/main/java/com/simibubi/create/foundation/ponder/{instructions => instruction}/WorldModifyInstruction.java (77%) rename src/main/java/com/simibubi/create/foundation/ponder/{ => ui}/NavigatableSimiScreen.java (98%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => ui}/PonderIndexScreen.java (94%) rename src/main/java/com/simibubi/create/foundation/ponder/{ => ui}/PonderProgressBar.java (80%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => ui}/PonderTagIndexScreen.java (96%) rename src/main/java/com/simibubi/create/foundation/ponder/{content => ui}/PonderTagScreen.java (96%) rename src/main/java/com/simibubi/create/foundation/ponder/{ => ui}/PonderUI.java (95%) diff --git a/build.gradle b/build.gradle index 6df71f6b1..f85727944 100644 --- a/build.gradle +++ b/build.gradle @@ -166,7 +166,7 @@ jar { 'Specification-Vendor': 'simibubi', 'Specification-Version': '1', 'Implementation-Title': project.name, - 'Implementation-Version': '${version}', + 'Implementation-Version': "${version}", 'Implementation-Vendor': 'simibubi', 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), 'MixinConfigs': 'create.mixins.json' diff --git a/gradle.properties b/gradle.properties index 383fe0145..8d48f1e3f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.daemon = false # mod version info mod_version = 0.4 minecraft_version = 1.17.1 -forge_version = 37.0.110 +forge_version = 37.0.126 # build dependency versions forgegradle_version = 5.1.+ diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index 354d3f5f8..2e598e113 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -326,8 +326,6 @@ public class AllSoundEvents { wrappedEvents = new ArrayList<>(); variants = new ArrayList<>(); this.id = id; - - variants.add(id); } public SoundEntryBuilder subtitle(String subtitle) { @@ -365,7 +363,7 @@ public class AllSoundEvents { public SoundEntry build() { SoundEntry entry = wrappedEvents.isEmpty() ? new CustomSoundEntry(id, variants, subtitle, category) - : new WrappedSoundEntry(id, variants, subtitle, wrappedEvents, category); + : new WrappedSoundEntry(id, subtitle, wrappedEvents, category); entries.put(entry.getId(), entry); return entry; } @@ -375,13 +373,11 @@ public class AllSoundEvents { public static abstract class SoundEntry { protected ResourceLocation id; - protected List variants; protected String subtitle; protected SoundSource category; - public SoundEntry(ResourceLocation id, List variants, String subtitle, SoundSource category) { + public SoundEntry(ResourceLocation id, String subtitle, SoundSource category) { this.id = id; - this.variants = variants; this.subtitle = subtitle; this.category = category; } @@ -402,10 +398,6 @@ public class AllSoundEvents { return id; } - public List getVariants() { - return variants; - } - public boolean hasSubtitle() { return subtitle != null; } @@ -462,9 +454,9 @@ public class AllSoundEvents { private List>> wrappedEvents; private List>> compiledEvents; - public WrappedSoundEntry(ResourceLocation id, List variants, String subtitle, List>> wrappedEvents, + public WrappedSoundEntry(ResourceLocation id, String subtitle, List>> wrappedEvents, SoundSource category) { - super(id, variants, subtitle, category); + super(id, subtitle, category); this.wrappedEvents = wrappedEvents; compiledEvents = Lists.newArrayList(); } @@ -535,10 +527,12 @@ public class AllSoundEvents { private static class CustomSoundEntry extends SoundEntry { + protected List variants; protected SoundEvent event; public CustomSoundEntry(ResourceLocation id, List variants, String subtitle, SoundSource category) { - super(id, variants, subtitle, category); + super(id, subtitle, category); + this.variants = variants; } @Override @@ -561,6 +555,7 @@ public class AllSoundEvents { JsonObject entry = new JsonObject(); JsonArray list = new JsonArray(); + list.add(id.toString()); for (ResourceLocation variant : variants) { list.add(variant.toString()); } diff --git a/src/main/java/com/simibubi/create/AllStitchedTextures.java b/src/main/java/com/simibubi/create/AllStitchedTextures.java index 5a1038dd4..5e8909404 100644 --- a/src/main/java/com/simibubi/create/AllStitchedTextures.java +++ b/src/main/java/com/simibubi/create/AllStitchedTextures.java @@ -2,13 +2,10 @@ package com.simibubi.create; import com.jozufozu.flywheel.core.StitchedSprite; -import net.minecraft.resources.ResourceLocation; - public class AllStitchedTextures { - public static final StitchedSprite SUPER_GLUE = new StitchedSprite(new ResourceLocation(Create.ID, "entity/super_glue/slime")); + public static final StitchedSprite SUPER_GLUE = new StitchedSprite(Create.asResource("entity/super_glue/slime")); public static void init() { - } } diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 199c0a44c..e0e0c7983 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -3,10 +3,15 @@ package com.simibubi.create; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.components.structureMovement.render.SBBContraptionManager; +import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; +import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; import com.simibubi.create.content.curiosities.bell.SoulPulseEffectHandler; +import com.simibubi.create.content.curiosities.toolbox.ToolboxHandlerClient; +import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer; import com.simibubi.create.content.curiosities.weapons.PotatoCannonRenderHandler; import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler; +import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler; import com.simibubi.create.content.schematics.ClientSchematicLoader; import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; import com.simibubi.create.content.schematics.client.SchematicHandler; @@ -14,7 +19,7 @@ import com.simibubi.create.foundation.ClientResourceReloadListener; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.AllMaterialSpecs; import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.CreateContexts; @@ -32,6 +37,8 @@ import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.OverlayRegistry; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -82,9 +89,21 @@ public class CreateClient { PonderIndex.register(); PonderIndex.registerTags(); + registerOverlays(); + UIRenderHelper.init(); } + private static void registerOverlays() { + // Register overlays in reverse order + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.AIR_LEVEL_ELEMENT, "Create's Remaining Air", CopperBacktankArmorLayer.REMAINING_AIR_OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Toolboxes", ToolboxHandlerClient.OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Goggle Information", GoggleOverlayRenderer.OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Blueprints", BlueprintOverlayRenderer.OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Linked Controller", LinkedControllerClientHandler.OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Schematics", SCHEMATIC_HANDLER.getOverlayRenderer()); + } + public static void invalidateRenderers() { BUFFER_CACHE.invalidate(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java index 0ab34da71..be7b4f7b9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.contraptions.base; import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.PartialModel; -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; 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 def0bf6e0..0ca0679cb 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,8 +4,6 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java index b69e05b46..36a6c2d7c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java @@ -24,10 +24,10 @@ import net.minecraft.core.Direction.AxisDirection; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -219,7 +219,7 @@ public class ConnectedInputHandler { public void read(CompoundTag nbt) { isController = nbt.getBoolean("Controller"); data.clear(); - nbt.getList("Data", NBT.TAG_COMPOUND) + nbt.getList("Data", Tag.TAG_COMPOUND) .forEach(inbt -> data.add(NbtUtils.readBlockPos((CompoundTag) inbt))); // nbt got wiped -> reset diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java index b2445d522..9a52923b1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java @@ -4,7 +4,6 @@ import java.util.function.Supplier; import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java index 7a5f422ea..de7039299 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java @@ -24,6 +24,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingRecipe; @@ -31,7 +32,6 @@ import net.minecraft.world.item.crafting.FireworkRocketRecipe; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.Constants.NBT; public class RecipeGridHandler { @@ -204,7 +204,7 @@ public class RecipeGridHandler { public static GroupedItems read(CompoundTag nbt) { GroupedItems items = new GroupedItems(); - ListTag gridNBT = nbt.getList("Grid", NBT.TAG_COMPOUND); + ListTag gridNBT = nbt.getList("Grid", Tag.TAG_COMPOUND); gridNBT.forEach(inbt -> { CompoundTag entry = (CompoundTag) inbt; int x = entry.getInt("x"); 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 65773a7f1..27321855d 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 @@ -34,6 +34,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Inventory; @@ -43,7 +44,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.items.IItemHandler; @@ -237,7 +237,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { private DeployerFakePlayer getPlayer(MovementContext context) { if (!(context.temporaryData instanceof DeployerFakePlayer) && context.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) context.world); - deployerFakePlayer.getInventory().load(context.tileData.getList("Inventory", NBT.TAG_COMPOUND)); + deployerFakePlayer.getInventory().load(context.tileData.getList("Inventory", Tag.TAG_COMPOUND)); if (context.data.contains("HeldItem")) deployerFakePlayer.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.of(context.data.getCompound("HeldItem"))); context.tileData.remove("Inventory"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java index fbe9d765a..401d77731 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java @@ -9,12 +9,12 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; -import net.minecraftforge.common.util.Constants; public class DeployerMovingInteraction extends MovingInteractionBehaviour { @@ -56,7 +56,7 @@ public class DeployerMovingInteraction extends MovingInteractionBehaviour { if (!(ctx.temporaryData instanceof DeployerFakePlayer) && ctx.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) ctx.world); deployerFakePlayer.getInventory() - .load(ctx.tileData.getList("Inventory", Constants.NBT.TAG_COMPOUND)); + .load(ctx.tileData.getList("Inventory", Tag.TAG_COMPOUND)); ctx.temporaryData = fake = deployerFakePlayer; ctx.tileData.remove("Inventory"); } else 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 18dafef07..a82e8188c 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 @@ -29,6 +29,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -49,7 +50,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -315,8 +315,8 @@ public class DeployerTileEntity extends KineticTileEntity { timer = compound.getInt("Timer"); redstoneLocked = compound.getBoolean("Powered"); - deferredInventoryList = compound.getList("Inventory", NBT.TAG_COMPOUND); - overflowItems = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); + deferredInventoryList = compound.getList("Inventory", Tag.TAG_COMPOUND); + overflowItems = NBTHelper.readItemList(compound.getList("Overflow", Tag.TAG_COMPOUND)); if (compound.contains("HeldItem")) heldItem = ItemStack.of(compound.getCompound("HeldItem")); super.fromTag(compound, clientPacket); 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 b35955579..c2ba83529 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 @@ -4,8 +4,6 @@ import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index 5bf7a0fcc..b17c56f8e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -30,6 +30,7 @@ import net.minecraft.core.NonNullList; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.Container; @@ -45,7 +46,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.RecipeWrapper; @@ -90,7 +90,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { super.fromTag(compound, clientPacket); if (clientPacket) { - NBTHelper.iterateCompoundList(compound.getList("ParticleItems", NBT.TAG_COMPOUND), + NBTHelper.iterateCompoundList(compound.getList("ParticleItems", Tag.TAG_COMPOUND), c -> pressedItems.add(ItemStack.of(c))); spawnParticles(); } 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 71c7cf6dc..b911936c7 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,7 +4,6 @@ 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.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; 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 4e9d9eb9d..7a683be19 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,7 +25,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.backend.IFlywheelWorld; import com.jozufozu.flywheel.light.GridAlignedBB; import com.jozufozu.flywheel.light.ImmutableBox; import com.simibubi.create.AllBlocks; @@ -69,7 +68,6 @@ import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTProcessors; import com.simibubi.create.foundation.utility.UniqueLinkedList; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -109,8 +107,6 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.BlockFlags; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidTank; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -705,30 +701,30 @@ public abstract class Contraption { }); superglue.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Superglue", NBT.TAG_COMPOUND), c -> superglue.add( + NBTHelper.iterateCompoundList(nbt.getList("Superglue", Tag.TAG_COMPOUND), c -> superglue.add( Pair.of(NbtUtils.readBlockPos(c.getCompound("Pos")), Direction.from3DDataValue(c.getByte("Direction"))))); seats.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Seats", NBT.TAG_COMPOUND), c -> seats.add(NbtUtils.readBlockPos(c))); + NBTHelper.iterateCompoundList(nbt.getList("Seats", Tag.TAG_COMPOUND), c -> seats.add(NbtUtils.readBlockPos(c))); seatMapping.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Passengers", NBT.TAG_COMPOUND), + NBTHelper.iterateCompoundList(nbt.getList("Passengers", Tag.TAG_COMPOUND), c -> seatMapping.put(NbtUtils.loadUUID(NBTHelper.getINBT(c, "Id")), c.getInt("Seat"))); stabilizedSubContraptions.clear(); - NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", NBT.TAG_COMPOUND), + NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", Tag.TAG_COMPOUND), c -> stabilizedSubContraptions.put(c.getUUID("Id"), BlockFace.fromNBT(c.getCompound("Location")))); storage.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Storage", NBT.TAG_COMPOUND), c -> storage + NBTHelper.iterateCompoundList(nbt.getList("Storage", Tag.TAG_COMPOUND), c -> storage .put(NbtUtils.readBlockPos(c.getCompound("Pos")), MountedStorage.deserialize(c.getCompound("Data")))); fluidStorage.clear(); - NBTHelper.iterateCompoundList(nbt.getList("FluidStorage", NBT.TAG_COMPOUND), c -> fluidStorage + NBTHelper.iterateCompoundList(nbt.getList("FluidStorage", Tag.TAG_COMPOUND), c -> fluidStorage .put(NbtUtils.readBlockPos(c.getCompound("Pos")), MountedFluidStorage.deserialize(c.getCompound("Data")))); interactors.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Interactors", NBT.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getList("Interactors", Tag.TAG_COMPOUND), c -> { BlockPos pos = NbtUtils.readBlockPos(c.getCompound("Pos")); MovingInteractionBehaviour behaviour = AllInteractionBehaviours.of(getBlocks().get(pos).state.getBlock()); if (behaviour != null) @@ -977,8 +973,8 @@ public abstract class Contraption { if (block.state.getBlock() != blockIn) iterator.remove(); world.removeBlockEntity(add); - int flags = BlockFlags.IS_MOVING | BlockFlags.NO_NEIGHBOR_DROPS | BlockFlags.UPDATE_NEIGHBORS - | BlockFlags.BLOCK_UPDATE | BlockFlags.RERENDER_MAIN_THREAD; + int flags = Block.UPDATE_MOVE_BY_PISTON | Block.UPDATE_SUPPRESS_DROPS | Block.UPDATE_KNOWN_SHAPE + | Block.UPDATE_CLIENTS | Block.UPDATE_IMMEDIATE; if (blockIn instanceof SimpleWaterloggedBlock && oldState.hasProperty(BlockStateProperties.WATERLOGGED) && oldState.getValue(BlockStateProperties.WATERLOGGED)) { world.setBlock(add, Blocks.WATER.defaultBlockState(), flags); @@ -993,7 +989,7 @@ public abstract class Contraption { // if (!shouldUpdateAfterMovement(block)) // continue; - int flags = BlockFlags.IS_MOVING | BlockFlags.DEFAULT; + int flags = Block.UPDATE_MOVE_BY_PISTON | Block.UPDATE_ALL; world.sendBlockUpdated(add, block.state, Blocks.AIR.defaultBlockState(), flags); // when the blockstate is set to air, the block's POI data is removed, but @@ -1053,7 +1049,7 @@ public abstract class Contraption { } world.destroyBlock(targetPos, true); - world.setBlock(targetPos, state, 3 | BlockFlags.IS_MOVING); + world.setBlock(targetPos, state, Block.UPDATE_MOVE_BY_PISTON | Block.UPDATE_ALL); boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; @@ -1102,7 +1098,7 @@ public abstract class Contraption { continue; BlockPos targetPos = transform.apply(block.pos); world.markAndNotifyBlock(targetPos, world.getChunkAt(targetPos), block.state, block.state, - BlockFlags.IS_MOVING | BlockFlags.DEFAULT, 512); + Block.UPDATE_MOVE_BY_PISTON | Block.UPDATE_ALL, 512); } for (int i = 0; i < inventory.getSlots(); i++) { @@ -1301,29 +1297,30 @@ public abstract class Contraption { return maxDistSq; } - private static class ContraptionTileWorld extends WrappedWorld implements IFlywheelWorld { - - private final BlockEntity te; - private final StructureBlockInfo info; - - public ContraptionTileWorld(Level world, BlockEntity te, StructureBlockInfo info) { - super(world); - this.te = te; - this.info = info; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - if (!pos.equals(te.getBlockPos())) - return Blocks.AIR.defaultBlockState(); - return info.state; - } - - @Override - public boolean isLoaded(BlockPos pos) { - return pos.equals(te.getBlockPos()); - } - } + // TODO: unused? +// private static class ContraptionTileWorld extends WrappedWorld implements IFlywheelWorld { +// +// private final BlockEntity te; +// private final StructureBlockInfo info; +// +// public ContraptionTileWorld(Level world, BlockEntity te, StructureBlockInfo info) { +// super(world); +// this.te = te; +// this.info = info; +// } +// +// @Override +// public BlockState getBlockState(BlockPos pos) { +// if (!pos.equals(te.getBlockPos())) +// return Blocks.AIR.defaultBlockState(); +// return info.state; +// } +// +// @Override +// public boolean isLoaded(BlockPos pos) { +// return pos.equals(te.getBlockPos()); +// } +// } public static class ContraptionInvWrapper extends CombinedInvWrapper { protected final boolean isExternal; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java index 8c27827dd..337d8ca34 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java @@ -13,11 +13,11 @@ import com.simibubi.create.foundation.utility.WorldAttached; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectLists; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; public class ContraptionHandler { @@ -63,7 +63,7 @@ public class ContraptionHandler { CompoundTag data = entityLiving.getPersistentData(); if (!data.contains("ContraptionDismountLocation")) return; - Vec3 position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", NBT.TAG_DOUBLE)); + Vec3 position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); if (entityLiving.getVehicle() == null) entityLiving.teleportTo(position.x, position.y, position.z); data.remove("ContraptionDismountLocation"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java index a44c214c6..751044b5b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java @@ -6,11 +6,11 @@ import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; public class MovementContext { @@ -58,10 +58,10 @@ public class MovementContext { public static MovementContext readNBT(Level world, StructureBlockInfo info, CompoundTag nbt, Contraption contraption) { MovementContext context = new MovementContext(world, info, contraption); - context.motion = VecHelper.readNBT(nbt.getList("Motion", NBT.TAG_DOUBLE)); - context.relativeMotion = VecHelper.readNBT(nbt.getList("RelativeMotion", NBT.TAG_DOUBLE)); + context.motion = VecHelper.readNBT(nbt.getList("Motion", Tag.TAG_DOUBLE)); + context.relativeMotion = VecHelper.readNBT(nbt.getList("RelativeMotion", Tag.TAG_DOUBLE)); if (nbt.contains("Position")) - context.position = VecHelper.readNBT(nbt.getList("Position", NBT.TAG_DOUBLE)); + context.position = VecHelper.readNBT(nbt.getList("Position", Tag.TAG_DOUBLE)); context.stall = nbt.getBoolean("Stall"); context.firstMovement = nbt.getBoolean("FirstMovement"); context.data = nbt.getCompound("Data"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java index 5e4313d8a..cbedf838e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java @@ -89,7 +89,7 @@ public class SailBlock extends WrenchableDirectionalBlock { return InteractionResult.PASS; DyeColor color = DyeColor.getColor(heldItem); - if (color != null && color != this.color) { + if (color != null) { if (!world.isClientSide) applyDye(state, world, pos, color); return InteractionResult.SUCCESS; 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 f6b6c2ecc..7f8cd4500 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 @@ -4,8 +4,6 @@ import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; 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 866f7c3a6..d44f3a41a 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 @@ -3,8 +3,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ga import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java index 3eb944707..1eb5503ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java @@ -23,6 +23,7 @@ import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -32,7 +33,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.PoweredRailBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.fmllegacy.network.PacketDistributor; @@ -425,8 +425,8 @@ public class MinecartController implements INBTSerializable { static StallData read(CompoundTag nbt) { StallData stallData = new StallData(); - stallData.position = VecHelper.readNBT(nbt.getList("Pos", NBT.TAG_DOUBLE)); - stallData.motion = VecHelper.readNBT(nbt.getList("Motion", NBT.TAG_DOUBLE)); + stallData.position = VecHelper.readNBT(nbt.getList("Pos", Tag.TAG_DOUBLE)); + stallData.motion = VecHelper.readNBT(nbt.getList("Motion", Tag.TAG_DOUBLE)); stallData.yaw = nbt.getFloat("Yaw"); stallData.pitch = nbt.getFloat("Pitch"); return stallData; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java index 7f968c3f6..ecaebe13a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java @@ -20,6 +20,7 @@ import net.minecraft.core.particles.ParticleOptions; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; @@ -27,7 +28,6 @@ import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.DistExecutor; @@ -246,7 +246,7 @@ public class PipeConnection { CompoundTag connectionData = tag.getCompound(side.getName()); if (connectionData.contains("Pressure")) { - ListTag pressureData = connectionData.getList("Pressure", NBT.TAG_FLOAT); + ListTag pressureData = connectionData.getList("Pressure", Tag.TAG_FLOAT); pressure = Couple.create(pressureData.getFloat(0), pressureData.getFloat(1)); } else pressure.replace(f -> 0f); 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 aec578a74..fc5f40133 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,6 +1,5 @@ package com.simibubi.create.content.contraptions.fluids; -import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java index 104f8146b..0b6c9e33f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.fluids.actors; import java.util.Random; -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; 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 16531a84d..cc109c396 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 @@ -4,8 +4,6 @@ import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; 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 93cbd82c0..a83f0f4ef 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 @@ -1,7 +1,6 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 7568eebf1..40a8ad53b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -27,7 +27,6 @@ import com.simibubi.create.foundation.utility.outliner.Outliner.OutlineEntry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -40,18 +39,21 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; import net.minecraftforge.fmlclient.gui.GuiUtils; public class GoggleOverlayRenderer { + public static final IIngameOverlay OVERLAY = GoggleOverlayRenderer::renderOverlay; + private static final List> customGogglePredicates = new LinkedList<>(); private static final Map outlines = CreateClient.OUTLINER.getOutlines(); public static int hoverTicks = 0; public static BlockPos lastHovered = null; - public static void renderOverlay(PoseStack ms, MultiBufferSource buffer, int light, int overlay, - float partialTicks) { + public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { HitResult objectMouseOver = Minecraft.getInstance().hitResult; if (!(objectMouseOver instanceof BlockHitResult)) { @@ -148,12 +150,9 @@ public class GoggleOverlayRenderer { if (tooltip.isEmpty()) return; - ms.pushPose(); + poseStack.pushPose(); Screen tooltipScreen = new TooltipScreen(new TextComponent("")); - tooltipScreen.init(mc, mc.getWindow() - .getGuiScaledWidth(), - mc.getWindow() - .getGuiScaledHeight()); + tooltipScreen.init(mc, width, height); int titleLinesCount = 1; int tooltipTextWidth = 0; @@ -190,20 +189,20 @@ public class GoggleOverlayRenderer { Theme.c(Theme.Key.VANILLA_TOOLTIP_BORDER, false).copy(); if (fade < 1) { - ms.translate((1 - fade) * Math.signum(cfg.overlayOffsetX.get() + .5f) * 4, 0, 0); + poseStack.translate((1 - fade) * Math.signum(cfg.overlayOffsetX.get() + .5f) * 4, 0, 0); colorBackground.scaleAlpha(fade); colorBorderTop.scaleAlpha(fade); colorBorderBot.scaleAlpha(fade); } - GuiUtils.drawHoveringText(ms, tooltip, posX, posY, tooltipScreen.width, tooltipScreen.height, -1, + GuiUtils.drawHoveringText(poseStack, tooltip, posX, posY, tooltipScreen.width, tooltipScreen.height, -1, colorBackground.getRGB(), colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); ItemStack item = AllItems.GOGGLES.asStack(); GuiGameElement.of(item) .at(posX + 10, posY - 16, 450) - .render(ms); - ms.popPose(); + .render(poseStack); + poseStack.popPose(); } /** diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyItem.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyItem.java index c3cf65db6..4240b612c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyItem.java @@ -4,7 +4,6 @@ import com.simibubi.create.foundation.utility.Color; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.Mth; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -15,28 +14,32 @@ public class SequencedAssemblyItem extends Item { super(p_i48487_1_.stacksTo(1)); } + public float getProgress(ItemStack stack) { + if (!stack.hasTag()) + return 0; + CompoundTag tag = stack.getTag(); + if (!tag.contains("SequencedAssembly")) + return 0; + return tag.getCompound("SequencedAssembly") + .getFloat("Progress"); + } + @Override public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList p_150895_2_) {} @Override - public double getDurabilityForDisplay(ItemStack stack) { - if (!stack.hasTag()) - return 1; - CompoundTag tag = stack.getTag(); - if (!tag.contains("SequencedAssembly")) - return 1; - return Mth.lerp(tag.getCompound("SequencedAssembly") - .getFloat("Progress"), 1, 0); - } - - @Override - public boolean showDurabilityBar(ItemStack stack) { + public boolean isBarVisible(ItemStack stack) { return true; } @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return Color.mixColors(0xFF_46FFE0, 0xFF_FFC074, (float) getDurabilityForDisplay(stack)); + public int getBarWidth(ItemStack stack) { + return Math.round(getProgress(stack) * 13); + } + + @Override + public int getBarColor(ItemStack stack) { + return Color.mixColors(0xFF_FFC074, 0xFF_46FFE0, getProgress(stack)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java index 168050800..d4af3be6d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java +++ b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java @@ -72,9 +72,9 @@ public class RotationIndicatorParticle extends SimpleAnimatedParticle { if (speed < 0 && axis.isVertical()) angle += 180; Vec3 position = VecHelper.rotate(this.offset.scale(radius), angle, axis).add(origin); - x = position.x; - y = position.y; - z = position.z; + this.x = position.x; + this.y = position.y; + this.z = position.z; } public static class Factory implements ParticleProvider { diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java index 636d67a0f..02502d5cd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java @@ -37,7 +37,7 @@ public class RotationIndicatorParticleData @Override public String toString() { - return "Bool"; + return "Char"; } }; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 15e7bd7f8..0f39bcda5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -43,6 +43,7 @@ import net.minecraft.core.particles.ParticleOptions; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -52,7 +53,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; @@ -149,18 +149,18 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor if (compound.contains("PreferredSpoutput")) preferredSpoutput = NBTHelper.readEnum(compound, "PreferredSpoutput", Direction.class); disabledSpoutputs.clear(); - ListTag disabledList = compound.getList("DisabledSpoutput", NBT.TAG_STRING); + ListTag disabledList = compound.getList("DisabledSpoutput", Tag.TAG_STRING); disabledList.forEach(d -> disabledSpoutputs.add(Direction.valueOf(((StringTag) d).getAsString()))); - spoutputBuffer = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); - spoutputFluidBuffer = NBTHelper.readCompoundList(compound.getList("FluidOverflow", NBT.TAG_COMPOUND), + spoutputBuffer = NBTHelper.readItemList(compound.getList("Overflow", Tag.TAG_COMPOUND)); + spoutputFluidBuffer = NBTHelper.readCompoundList(compound.getList("FluidOverflow", Tag.TAG_COMPOUND), FluidStack::loadFluidStackFromNBT); if (!clientPacket) return; - NBTHelper.iterateCompoundList(compound.getList("VisualizedItems", NBT.TAG_COMPOUND), + NBTHelper.iterateCompoundList(compound.getList("VisualizedItems", Tag.TAG_COMPOUND), c -> visualizedOutputItems.add(IntAttached.with(OUTPUT_ANIMATION_TIME, ItemStack.of(c)))); - NBTHelper.iterateCompoundList(compound.getList("VisualizedFluids", NBT.TAG_COMPOUND), + NBTHelper.iterateCompoundList(compound.getList("VisualizedFluids", Tag.TAG_COMPOUND), c -> visualizedOutputFluids .add(IntAttached.with(OUTPUT_ANIMATION_TIME, FluidStack.loadFluidStackFromNBT(c)))); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java index 58f1d0201..75fb4ca84 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java @@ -5,8 +5,8 @@ import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.common.util.Constants.NBT; public class ConfigureSequencedGearshiftPacket extends TileEntityConfigurationPacket { @@ -23,7 +23,7 @@ public class ConfigureSequencedGearshiftPacket extends TileEntityConfigurationPa @Override protected void readSettings(FriendlyByteBuf buffer) { - instructions = buffer.readNbt().getList("data", NBT.TAG_COMPOUND); + instructions = buffer.readNbt().getList("data", Tag.TAG_COMPOUND); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java index a55e9b882..9d2580d82 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java @@ -7,9 +7,9 @@ import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEnt import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.Constants.NBT; public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { @@ -152,7 +152,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { currentInstructionProgress = compound.getFloat("InstructionProgress"); poweredPreviously = compound.getBoolean("PrevPowered"); timer = compound.getInt("Timer"); - instructions = Instruction.deserializeAll(compound.getList("Instructions", NBT.TAG_COMPOUND)); + instructions = Instruction.deserializeAll(compound.getList("Instructions", Tag.TAG_COMPOUND)); super.fromTag(compound, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 6cee39607..c7f5a5f4b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -24,10 +24,13 @@ import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandler; import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -95,7 +98,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE consumer) { - consumer.accept(new ReducedDestroyEffects()); + consumer.accept(new RenderProperties()); } @Override @@ -600,4 +603,17 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE items.add(TransportedItemStack.read((CompoundTag) inbt))); beltMovementPositive = nbt.getBoolean("PositiveOrder"); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java index 4b8e69c68..ad1517163 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java @@ -6,7 +6,6 @@ import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; diff --git a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java index dc5ef84d7..3ae5e7b9f 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java @@ -40,33 +40,29 @@ public class ChromaticCompoundItem extends Item { super(properties); } - @Override - public boolean shouldOverrideMultiplayerNbt() { - return true; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - int light = stack.getOrCreateTag() + public int getLight(ItemStack stack) { + return stack.getOrCreateTag() .getInt("CollectingLight"); - return 1 - light / (float) AllConfigs.SERVER.recipes.lightSourceCountForRefinedRadiance.get(); } @Override - public boolean showDurabilityBar(ItemStack stack) { - int light = stack.getOrCreateTag() - .getInt("CollectingLight"); - return light > 0; + public boolean isBarVisible(ItemStack stack) { + return getLight(stack) > 0; } @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return Color.mixColors(0x413c69, 0xFFFFFF, (float) (1 - getDurabilityForDisplay(stack))); + public int getBarWidth(ItemStack stack) { + return Math.round(13.0F * getLight(stack) / AllConfigs.SERVER.recipes.lightSourceCountForRefinedRadiance.get()); + } + + @Override + public int getBarColor(ItemStack stack) { + return Color.mixColors(0x413c69, 0xFFFFFF, getLight(stack) / (float) AllConfigs.SERVER.recipes.lightSourceCountForRefinedRadiance.get()); } @Override public int getItemStackLimit(ItemStack stack) { - return showDurabilityBar(stack) ? 1 : 16; + return isBarVisible(stack) ? 1 : 16; } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index 50e356f55..82b3649a8 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -70,36 +70,7 @@ public class BackTankUtil { // For Air-using tools @OnlyIn(Dist.CLIENT) - public static int getRGBDurabilityForDisplay(ItemStack stack, int usesPerTank) { - if (usesPerTank == 0) - return 0; - LocalPlayer player = Minecraft.getInstance().player; - if (player == null) - return 0; - ItemStack backtank = get(player); - if (backtank.isEmpty() || !hasAirRemaining(backtank)) - return Mth.hsvToRgb( - Math.max(0.0F, (float) (1.0F - getDurabilityForDisplay(stack, usesPerTank))) / 3.0F, 1.0F, 1.0F); - return backtank.getItem() - .getRGBDurabilityForDisplay(backtank); - } - - @OnlyIn(Dist.CLIENT) - public static double getDurabilityForDisplay(ItemStack stack, int usesPerTank) { - if (usesPerTank == 0) - return 0; - LocalPlayer player = Minecraft.getInstance().player; - if (player == null) - return 0; - ItemStack backtank = get(player); - if (backtank.isEmpty() || !hasAirRemaining(backtank)) - return (double) stack.getDamageValue() / (double) stack.getMaxDamage(); - return backtank.getItem() - .getDurabilityForDisplay(backtank); - } - - @OnlyIn(Dist.CLIENT) - public static boolean showDurabilityBar(ItemStack stack, int usesPerTank) { + public static boolean isBarVisible(ItemStack stack, int usesPerTank) { if (usesPerTank == 0) return false; LocalPlayer player = Minecraft.getInstance().player; @@ -111,4 +82,33 @@ public class BackTankUtil { return true; } + @OnlyIn(Dist.CLIENT) + public static int getBarWidth(ItemStack stack, int usesPerTank) { + if (usesPerTank == 0) + return 13; + LocalPlayer player = Minecraft.getInstance().player; + if (player == null) + return 13; + ItemStack backtank = get(player); + if (backtank.isEmpty() || !hasAirRemaining(backtank)) + return Math.round(13.0F - (float) stack.getDamageValue() / stack.getMaxDamage() * 13.0F); + return backtank.getItem() + .getBarWidth(backtank); + } + + @OnlyIn(Dist.CLIENT) + public static int getBarColor(ItemStack stack, int usesPerTank) { + if (usesPerTank == 0) + return 0; + LocalPlayer player = Minecraft.getInstance().player; + if (player == null) + return 0; + ItemStack backtank = get(player); + if (backtank.isEmpty() || !hasAirRemaining(backtank)) + return Mth.hsvToRgb( + Math.max(0.0F, 1.0F - (float) stack.getDamageValue() / stack.getMaxDamage()) / 3.0F, 1.0F, 1.0F); + return backtank.getItem() + .getBarColor(backtank); + } + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index cd06d4417..1e1cb49e2 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.curiosities.armor; -import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; @@ -17,7 +16,6 @@ import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; @@ -34,9 +32,13 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; public class CopperBacktankArmorLayer> extends RenderLayer { + public static final IIngameOverlay REMAINING_AIR_OVERLAY = CopperBacktankArmorLayer::renderRemainingAirOverlay; + public CopperBacktankArmorLayer(RenderLayerParent renderer) { super(renderer); } @@ -103,7 +105,7 @@ public class CopperBacktankArmorLayer p_150895_2_) { if (!allowdedIn(p_150895_1_)) @@ -55,14 +50,18 @@ public class CopperBacktankItem extends CopperArmorItem implements ICapacityEnch } @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1 - Mth - .clamp(getRemainingAir(stack) / ((float) BackTankUtil.maxAir(stack)), 0, 1); + public boolean isBarVisible(ItemStack stack) { + return true; } @Override - public boolean showDurabilityBar(ItemStack stack) { - return true; + public int getBarWidth(ItemStack stack) { + return Math.round(13.0F * Mth.clamp(getRemainingAir(stack) / ((float) BackTankUtil.maxAir(stack)), 0, 1)); + } + + @Override + public int getBarColor(ItemStack stack) { + return DURABILITY_BAR; } public static int getRemainingAir(ItemStack stack) { 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 f0be21aee..7ee64de74 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 @@ -13,6 +13,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; @@ -22,7 +23,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; public class CopperBacktankTileEntity extends KineticTileEntity implements Nameable { @@ -101,7 +101,7 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea capacityEnchantLevel = compound.getInt("CapacityEnchantment"); airLevel = compound.getInt("Air"); airLevelTimer = compound.getInt("Timer"); - enchantmentTag = compound.getList("Enchantments", NBT.TAG_COMPOUND); + enchantmentTag = compound.getList("Enchantments", Tag.TAG_COMPOUND); if (compound.contains("CustomName", 8)) this.customName = Component.Serializer.fromJson(compound.getString("CustomName")); if (prev != 0 && prev != airLevel && airLevel == BackTankUtil.maxAir(capacityEnchantLevel) && clientPacket) diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java index 5e73f8023..44356b417 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java @@ -47,7 +47,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.IItemRenderProperties; import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.common.util.Constants.BlockFlags; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fmllegacy.network.PacketDistributor; @@ -254,7 +253,7 @@ public class SymmetryWandItem extends Item { BlockSnapshot blocksnapshot = BlockSnapshot.create(world.dimension(), world, position); FluidState ifluidstate = world.getFluidState(position); - world.setBlock(position, ifluidstate.createLegacyBlock(), BlockFlags.UPDATE_NEIGHBORS); + world.setBlock(position, ifluidstate.createLegacyBlock(), Block.UPDATE_KNOWN_SHAPE); world.setBlockAndUpdate(position, blockState); CompoundTag wandNbt = wand.getOrCreateTag(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java index a114fbb13..e8c2e5e29 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java @@ -24,7 +24,6 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.client.KeyMapping; -import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.item.DyeColor; @@ -32,10 +31,6 @@ import net.minecraft.world.item.ItemStack; public class RadialToolboxMenu extends AbstractSimiScreen { - public static enum State { - SELECT_BOX, SELECT_ITEM, SELECT_ITEM_UNEQUIP, DETACH - } - private State state; private int ticksOpen; private int hoveredSlot; @@ -248,13 +243,13 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.DETACH) { if (selected == UNEQUIP) AllPackets.channel.sendToServer( - new ToolboxEquipPacket(null, selected, Minecraft.getInstance().player.getInventory().selected)); + new ToolboxEquipPacket(null, selected, minecraft.player.getInventory().selected)); return; } if (selected == UNEQUIP) AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - Minecraft.getInstance().player.getInventory().selected)); + minecraft.player.getInventory().selected)); if (selected < 0) return; @@ -267,7 +262,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { return; AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - Minecraft.getInstance().player.getInventory().selected)); + minecraft.player.getInventory().selected)); } @Override @@ -307,7 +302,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { @Override public boolean mouseClicked(double x, double y, int button) { - int selected = (scrollMode ? scrollSlot : hoveredSlot); + int selected = scrollMode ? scrollSlot : hoveredSlot; if (button == 0) { if (selected == DEPOSIT) { @@ -340,7 +335,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.SELECT_ITEM_UNEQUIP && selected == UNEQUIP) { if (toolboxes.size() > 1) { AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - Minecraft.getInstance().player.getInventory().selected)); + minecraft.player.getInventory().selected)); state = State.SELECT_BOX; return true; } @@ -355,10 +350,18 @@ public class RadialToolboxMenu extends AbstractSimiScreen { } @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { + public boolean keyPressed(int code, int scanCode, int modifiers) { + InputConstants.Key mouseKey = InputConstants.getKey(code, scanCode); + if (AllKeys.TOOLBELT.getKeybind() + .isActiveAndMatches(mouseKey)) { + onClose(); + ToolboxHandlerClient.COOLDOWN = 2; + return true; + } + KeyMapping[] hotbarBinds = minecraft.options.keyHotbarSlots; for (int i = 0; i < hotbarBinds.length && i < 8; i++) { - if (hotbarBinds[i].matches(code, p_keyPressed_2_)) { + if (hotbarBinds[i].matches(code, scanCode)) { if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { ToolboxInventory inv = selectedBox.inventory; @@ -379,18 +382,11 @@ public class RadialToolboxMenu extends AbstractSimiScreen { } } - return super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_); + return super.keyPressed(code, scanCode, modifiers); } - @Override - public boolean keyReleased(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - InputConstants.Key mouseKey = InputConstants.getKey(code, p_keyPressed_2_); - if (AllKeys.TOOLBELT.getKeybind() - .isActiveAndMatches(mouseKey)) { - this.onClose(); - return true; - } - return super.keyReleased(code, p_keyPressed_2_, p_keyPressed_3_); + public static enum State { + SELECT_BOX, SELECT_ITEM, SELECT_ITEM_UNEQUIP, DETACH } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java index 3152edd9f..931082e95 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java @@ -9,7 +9,6 @@ import java.util.Collections; import java.util.List; import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllKeys; @@ -19,7 +18,6 @@ import com.simibubi.create.foundation.networking.AllPackets; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; @@ -33,9 +31,13 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; public class ToolboxHandlerClient { + public static final IIngameOverlay OVERLAY = ToolboxHandlerClient::renderOverlay; + static int COOLDOWN = 0; public static void clientTick() { @@ -151,12 +153,9 @@ public class ToolboxHandlerClient { ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX, null)); } - public static void renderOverlay(PoseStack ms, MultiBufferSource buffer, int light, int overlay, - float partialTicks) { - Window mainWindow = Minecraft.getInstance() - .getWindow(); - int x = mainWindow.getGuiScaledWidth() / 2 - 90; - int y = mainWindow.getGuiScaledHeight() - 23; + public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { + int x = width / 2 - 90; + int y = height - 23; RenderSystem.enableDepthTest(); Player player = Minecraft.getInstance().player; @@ -170,7 +169,7 @@ public class ToolboxHandlerClient { if (compound.isEmpty()) return; - ms.pushPose(); + poseStack.pushPose(); for (int slot = 0; slot < 9; slot++) { String key = String.valueOf(slot); if (!compound.contains(key)) @@ -183,9 +182,9 @@ public class ToolboxHandlerClient { AllGuiTextures texture = ToolboxHandler.distance(player.position(), pos) < max * max ? selected ? TOOLBELT_SELECTED_ON : TOOLBELT_HOTBAR_ON : selected ? TOOLBELT_SELECTED_OFF : TOOLBELT_HOTBAR_OFF; - texture.render(ms, x + 20 * slot - offset, y + offset); + texture.render(poseStack, x + 20 * slot - offset, y + offset); } - ms.popPose(); + poseStack.popPose(); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java index 00f6eb50f..3dfb03a8b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxInventory.java @@ -11,10 +11,10 @@ import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.ShulkerBoxBlock; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; @@ -152,7 +152,7 @@ public class ToolboxInventory extends ItemStackHandler { @Override public void deserializeNBT(CompoundTag nbt) { - filters = NBTHelper.readItemList(nbt.getList("Compartments", NBT.TAG_COMPOUND)); + filters = NBTHelper.readItemList(nbt.getList("Compartments", Tag.TAG_COMPOUND)); if (filters.size() != 8) { filters.clear(); for (int i = 0; i < 8; i++) diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java index 05ecbf43c..d3be9e46e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java @@ -22,7 +22,6 @@ import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.tags.ItemTags; @@ -37,12 +36,15 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult.Type; -import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; public class BlueprintOverlayRenderer { + public static final IIngameOverlay OVERLAY = BlueprintOverlayRenderer::renderOverlay; + static boolean active; static boolean empty; static boolean lastSneakState; @@ -204,42 +206,39 @@ public class BlueprintOverlayRenderer { } } - public static void renderOverlay(PoseStack ms, MultiBufferSource buffer, int light, int overlay, - float partialTicks) { + public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { if (!active || empty) return; Minecraft mc = Minecraft.getInstance(); int w = 30 + 21 * ingredients.size() + 21; - int x = (mc.getWindow() - .getGuiScaledWidth() - w) / 2; - int y = (int) (mc.getWindow() - .getGuiScaledHeight() / 3f * 2); + int x = (width - w) / 2; + int y = (int) (height / 3f * 2); for (Pair pair : ingredients) { RenderSystem.enableBlend(); - (pair.getSecond() ? AllGuiTextures.HOTSLOT_ACTIVE : AllGuiTextures.HOTSLOT).render(ms, x, y); + (pair.getSecond() ? AllGuiTextures.HOTSLOT_ACTIVE : AllGuiTextures.HOTSLOT).render(poseStack, x, y); ItemStack itemStack = pair.getFirst(); String count = pair.getSecond() ? null : ChatFormatting.GOLD.toString() + itemStack.getCount(); - drawItemStack(ms, mc, x, y, itemStack, count); + drawItemStack(poseStack, mc, x, y, itemStack, count); x += 21; } x += 5; RenderSystem.enableBlend(); - AllGuiTextures.HOTSLOT_ARROW.render(ms, x, y + 4); + AllGuiTextures.HOTSLOT_ARROW.render(poseStack, x, y + 4); x += 25; if (result.isEmpty()) { - AllGuiTextures.HOTSLOT.render(ms, x, y); + AllGuiTextures.HOTSLOT.render(poseStack, x, y); GuiGameElement.of(Items.BARRIER) .at(x + 3, y + 3) - .render(ms); + .render(poseStack); } else { - (resultCraftable ? AllGuiTextures.HOTSLOT_SUPER_ACTIVE : AllGuiTextures.HOTSLOT).render(ms, + (resultCraftable ? AllGuiTextures.HOTSLOT_SUPER_ACTIVE : AllGuiTextures.HOTSLOT).render(poseStack, resultCraftable ? x - 1 : x, resultCraftable ? y - 1 : y); - drawItemStack(ms, mc, x, y, result, null); + drawItemStack(poseStack, mc, x, y, result, null); } } @@ -275,7 +274,7 @@ public class BlueprintOverlayRenderer { if (AllItems.ATTRIBUTE_FILTER.isIn(itemStack)) { WhitelistMode whitelistMode = WhitelistMode.values()[tag.getInt("WhitelistMode")]; - ListTag attributes = tag.getList("MatchedAttributes", NBT.TAG_COMPOUND); + ListTag attributes = tag.getList("MatchedAttributes", net.minecraft.nbt.Tag.TAG_COMPOUND); if (whitelistMode == WhitelistMode.WHITELIST_DISJ && attributes.size() == 1) { ItemAttribute fromNBT = ItemAttribute.fromNBT((CompoundTag) attributes.get(0)); if (fromNBT instanceof ItemAttribute.InTag) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java index 16be7753c..434e3aefc 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java @@ -215,18 +215,18 @@ public class ExtendoGripItem extends Item { } @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return BackTankUtil.getRGBDurabilityForDisplay(stack, maxUses()); + public boolean isBarVisible(ItemStack stack) { + return BackTankUtil.isBarVisible(stack, maxUses()); } @Override - public double getDurabilityForDisplay(ItemStack stack) { - return BackTankUtil.getDurabilityForDisplay(stack, maxUses()); + public int getBarWidth(ItemStack stack) { + return BackTankUtil.getBarWidth(stack, maxUses()); } @Override - public boolean showDurabilityBar(ItemStack stack) { - return BackTankUtil.showDurabilityBar(stack, maxUses()); + public int getBarColor(ItemStack stack) { + return BackTankUtil.getBarColor(stack, maxUses()); } private static int maxUses() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java index 88f480986..4a5169e3e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.curiosities.tools; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java index 836801b35..d916fa132 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java @@ -87,18 +87,18 @@ public class PotatoCannonItem extends ProjectileWeaponItem { } @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return BackTankUtil.getRGBDurabilityForDisplay(stack, maxUses()); + public boolean isBarVisible(ItemStack stack) { + return BackTankUtil.isBarVisible(stack, maxUses()); } @Override - public double getDurabilityForDisplay(ItemStack stack) { - return BackTankUtil.getDurabilityForDisplay(stack, maxUses()); + public int getBarWidth(ItemStack stack) { + return BackTankUtil.getBarWidth(stack, maxUses()); } @Override - public boolean showDurabilityBar(ItemStack stack) { - return BackTankUtil.showDurabilityBar(stack, maxUses()); + public int getBarColor(ItemStack stack) { + return BackTankUtil.getBarColor(stack, maxUses()); } private int maxUses() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java index 0dbcbdf8d..865053fc7 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java @@ -17,6 +17,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.InteractionHand; @@ -40,7 +41,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fml.DistExecutor; public abstract class ZapperItem extends Item { @@ -138,7 +138,7 @@ public abstract class ZapperItem extends Item { stateToUse = NbtUtils.readBlockState(nbt.getCompound("BlockUsed")); stateToUse = BlockHelper.setZeroAge(stateToUse); CompoundTag data = null; - if (AllBlockTags.SAFE_NBT.matches(stateToUse) && nbt.contains("BlockData", NBT.TAG_COMPOUND)) { + if (AllBlockTags.SAFE_NBT.matches(stateToUse) && nbt.contains("BlockData", Tag.TAG_COMPOUND)) { data = nbt.getCompound("BlockData"); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java index 806ae600c..b7cab078d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java @@ -20,11 +20,11 @@ import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.Constants; public class WorldshaperScreen extends ZapperScreen { @@ -59,7 +59,7 @@ public class WorldshaperScreen extends ZapperScreen { CompoundTag nbt = zapper.getOrCreateTag(); currentBrush = NBTHelper.readEnum(nbt, "Brush", TerrainBrushes.class); - if (nbt.contains("BrushParams", Constants.NBT.TAG_COMPOUND)) { + if (nbt.contains("BrushParams", Tag.TAG_COMPOUND)) { BlockPos paramsData = NbtUtils.readBlockPos(nbt.getCompound("BrushParams")); currentBrushParams[0] = paramsData.getX(); currentBrushParams[1] = paramsData.getY(); 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 247ff3ba1..708853df2 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 @@ -1,7 +1,6 @@ package com.simibubi.create.content.logistics.block.belts.tunnel; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java index 39e17521e..88c5c7b8b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java @@ -35,7 +35,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.items.CapabilityItemHandler; @@ -80,13 +79,13 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements IInstanceRe @Override protected void fromTag(CompoundTag compound, boolean clientPacket) { Set newFlaps = new HashSet<>(6); - ListTag flapsNBT = compound.getList("Flaps", NBT.TAG_INT); + ListTag flapsNBT = compound.getList("Flaps", Tag.TAG_INT); for (Tag inbt : flapsNBT) if (inbt instanceof IntTag) newFlaps.add(Direction.from3DDataValue(((IntTag) inbt).getAsInt())); sides.clear(); - ListTag sidesNBT = compound.getList("Sides", NBT.TAG_INT); + ListTag sidesNBT = compound.getList("Sides", Tag.TAG_INT); for (Tag inbt : sidesNBT) if (inbt instanceof IntTag) sides.add(Direction.from3DDataValue(((IntTag) inbt).getAsInt())); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index 0fa82a86e..3081c5fd9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -39,6 +39,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.item.ItemEntity; @@ -48,7 +49,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; @@ -596,7 +596,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave for (boolean filtered : Iterate.trueAndFalse) { distributionTargets.set(filtered, NBTHelper - .readCompoundList(compound.getList(filtered ? "FilteredTargets" : "Targets", NBT.TAG_COMPOUND), nbt -> { + .readCompoundList(compound.getList(filtered ? "FilteredTargets" : "Targets", Tag.TAG_COMPOUND), nbt -> { BlockPos pos = NbtUtils.readBlockPos(nbt.getCompound("Pos")); Direction face = Direction.from3DDataValue(nbt.getInt("Face")); return Pair.of(pos, face); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java index 8adb54ec6..627fbbe92 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.chute; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBehaviour.java index dde4515a7..7f79dc1d9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBehaviour.java @@ -27,13 +27,13 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.Containers; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; @@ -204,7 +204,7 @@ public class DepotBehaviour extends TileEntityBehaviour { heldItem = TransportedItemStack.read(compound.getCompound("HeldItem")); processingOutputBuffer.deserializeNBT(compound.getCompound("OutputBuffer")); if (canMergeItems()) { - ListTag list = compound.getList("Incoming", NBT.TAG_COMPOUND); + ListTag list = compound.getList("Incoming", Tag.TAG_COMPOUND); incoming = NBTHelper.readCompoundList(list, TransportedItemStack::read); } } 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 b8ca51510..846c77310 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 @@ -3,8 +3,6 @@ package com.simibubi.create.content.logistics.block.depot; import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; 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 74f95a11c..aad776901 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 @@ -34,6 +34,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -60,7 +61,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.ItemStackHandler; @@ -532,13 +532,13 @@ public class EjectorTileEntity extends KineticTileEntity { powered = compound.getBoolean("Powered"); state = NBTHelper.readEnum(compound, "State", State.class); lidProgress.readNBT(compound.getCompound("Lid"), false); - launchedItems = NBTHelper.readCompoundList(compound.getList("LaunchedItems", NBT.TAG_COMPOUND), + launchedItems = NBTHelper.readCompoundList(compound.getList("LaunchedItems", Tag.TAG_COMPOUND), nbt -> IntAttached.read(nbt, ItemStack::of)); earlyTarget = null; earlyTargetTime = 0; if (compound.contains("EarlyTarget")) { - earlyTarget = Pair.of(VecHelper.readNBT(compound.getList("EarlyTarget", NBT.TAG_DOUBLE)), + earlyTarget = Pair.of(VecHelper.readNBT(compound.getList("EarlyTarget", Tag.TAG_DOUBLE)), NbtUtils.readBlockPos(compound.getCompound("EarlyTargetPos"))); earlyTargetTime = compound.getFloat("EarlyTargetTime"); } 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 e97d23857..0a914ad73 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 @@ -5,8 +5,6 @@ import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.Color; 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 7ad96f7f4..867930b9b 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 @@ -2,7 +2,6 @@ package com.simibubi.create.content.logistics.block.funnel; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java index d6d95efed..b811f3ad0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java @@ -8,11 +8,11 @@ import com.simibubi.create.foundation.networking.SimplePacketBase; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fmllegacy.network.NetworkEvent.Context; public class ArmPlacementPacket extends SimplePacketBase { @@ -28,7 +28,7 @@ public class ArmPlacementPacket extends SimplePacketBase { public ArmPlacementPacket(FriendlyByteBuf buffer) { CompoundTag nbt = buffer.readNbt(); - receivedTag = nbt.getList("Points", NBT.TAG_COMPOUND); + receivedTag = nbt.getList("Points", Tag.TAG_COMPOUND); pos = buffer.readBlockPos(); } 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 4e8e67173..aa513be83 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 @@ -1,7 +1,6 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; 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 ac9e62acb..4a4165885 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 @@ -42,7 +42,6 @@ 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.common.util.Constants.NBT; public class ArmTileEntity extends KineticTileEntity implements ITransformableTE { @@ -478,7 +477,7 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE phase = NBTHelper.readEnum(compound, "Phase", Phase.class); chasedPointIndex = compound.getInt("TargetPointIndex"); chasedPointProgress = compound.getFloat("MovementProgress"); - interactionPointTag = compound.getList("InteractionPoints", NBT.TAG_COMPOUND); + interactionPointTag = compound.getList("InteractionPoints", Tag.TAG_COMPOUND); redstoneLocked = compound.getBoolean("Powered"); if (!clientPacket) 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 94d7dbfff..d84eff6f6 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 @@ -6,9 +6,7 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.Rotate; -import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.Translate; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java index 28f440c05..ffa7d05d7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java @@ -16,6 +16,7 @@ import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.TextComponent; @@ -26,7 +27,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; public class NixieTubeTileEntity extends SmartTileEntity { @@ -85,7 +85,7 @@ public class NixieTubeTileEntity extends SmartTileEntity { public void displayCustomNameOf(ItemStack stack, int nixiePositionInRow) { CompoundTag compoundnbt = stack.getTagElement("display"); - if (compoundnbt != null && compoundnbt.contains("Name", NBT.TAG_STRING)) { + if (compoundnbt != null && compoundnbt.contains("Name", Tag.TAG_STRING)) { hasCustomText = true; rawCustomText = getJsonFromString(compoundnbt.getString("Name")); customTextIndex = nixiePositionInRow; @@ -117,7 +117,7 @@ public class NixieTubeTileEntity extends SmartTileEntity { protected void fromTag(CompoundTag nbt, boolean clientPacket) { super.fromTag(nbt, clientPacket); - if (nbt.contains("RawCustomText", NBT.TAG_STRING)) { + if (nbt.contains("RawCustomText", Tag.TAG_STRING)) { rawCustomText = getJsonFromString(nbt.getString("RawCustomText")); // Check if string forms valid JSON if (rawCustomText != null && !rawCustomText.isJsonNull()) { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerRenderer.java b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerRenderer.java index b2c9c584b..d56a6ac3d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerRenderer.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.item; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllItems; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java index 5ccb64bb6..194e385c2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java @@ -27,14 +27,17 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.Options; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; public class LinkedControllerClientHandler { + public static final IIngameOverlay OVERLAY = LinkedControllerClientHandler::renderOverlay; + public static Mode MODE = Mode.IDLE; public static int PACKET_RATE = 5; public static Collection currentlyPressed = new HashSet<>(); @@ -227,18 +230,14 @@ public class LinkedControllerClientHandler { controls.forEach(kb -> kb.setDown(false)); } - public static void renderOverlay(PoseStack ms, MultiBufferSource buffer, int light, int overlay, - float partialTicks) { + public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width1, int height1) { if (MODE != Mode.BIND) return; Minecraft mc = Minecraft.getInstance(); - ms.pushPose(); + poseStack.pushPose(); Screen tooltipScreen = new TooltipScreen(null); - tooltipScreen.init(mc, mc.getWindow() - .getGuiScaledWidth(), - mc.getWindow() - .getGuiScaledHeight()); + tooltipScreen.init(mc, width1, height1); Object[] keys = new Object[6]; Vector controls = getControls(); @@ -262,10 +261,9 @@ public class LinkedControllerClientHandler { int x = (tooltipScreen.width / 3) - width / 2; int y = tooltipScreen.height - height; - tooltipScreen.renderComponentTooltip(ms, list, x, y); - - ms.popPose(); + tooltipScreen.renderComponentTooltip(poseStack, list, x, y); + poseStack.popPose(); } public enum Mode { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerItemRenderer.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerItemRenderer.java index 3484b7497..76cf1d624 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerItemRenderer.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.logistics.item; import java.util.Vector; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllItems; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java index 8fd8148f7..2ab82ce70 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; @@ -18,7 +19,6 @@ import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.SlotItemHandler; @@ -132,7 +132,7 @@ public class AttributeFilterContainer extends AbstractFilterContainer { whitelistMode = WhitelistMode.values()[filterItem.getOrCreateTag() .getInt("WhitelistMode")]; ListTag attributes = filterItem.getOrCreateTag() - .getList("MatchedAttributes", NBT.TAG_COMPOUND); + .getList("MatchedAttributes", Tag.TAG_COMPOUND); attributes.forEach(inbt -> { CompoundTag compound = (CompoundTag) inbt; selectedAttributes.add(Pair.of(ItemAttribute.fromNBT(compound), compound.getBoolean("Inverted"))); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java index 899230fa3..dcde5ef04 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java @@ -35,7 +35,6 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fmllegacy.network.NetworkHooks; import net.minecraftforge.items.ItemHandlerHelper; @@ -120,7 +119,7 @@ public class FilterItem extends Item implements MenuProvider { int count = 0; ListTag attributes = filter.getOrCreateTag() - .getList("MatchedAttributes", NBT.TAG_COMPOUND); + .getList("MatchedAttributes", Tag.TAG_COMPOUND); for (Tag inbt : attributes) { CompoundTag compound = (CompoundTag) inbt; ItemAttribute attribute = ItemAttribute.fromNBT(compound); @@ -216,7 +215,7 @@ public class FilterItem extends Item implements MenuProvider { WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag() .getInt("WhitelistMode")]; ListTag attributes = filter.getOrCreateTag() - .getList("MatchedAttributes", NBT.TAG_COMPOUND); + .getList("MatchedAttributes", Tag.TAG_COMPOUND); for (Tag inbt : attributes) { CompoundTag compound = (CompoundTag) inbt; ItemAttribute attribute = ItemAttribute.fromNBT(compound); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java index 1943c04ed..482b93360 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java @@ -13,12 +13,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.Constants; public abstract class LaunchedItem { @@ -111,7 +111,7 @@ public abstract class LaunchedItem { void readNBT(CompoundTag nbt) { super.readNBT(nbt); state = NbtUtils.readBlockState(nbt.getCompound("BlockState")); - if (nbt.contains("Data", Constants.NBT.TAG_COMPOUND)) { + if (nbt.contains("Data", Tag.TAG_COMPOUND)) { data = nbt.getCompound("Data"); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index 7bdadc658..6ad9758c7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -23,7 +23,6 @@ import com.simibubi.create.foundation.utility.outliner.AABBOutline; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; @@ -40,6 +39,8 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlac import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; public class SchematicHandler { @@ -60,6 +61,8 @@ public class SchematicHandler { private SchematicHotbarSlotOverlay overlay; private ToolSelectionScreen selectionScreen; + private final IIngameOverlay overlayRenderer = this::renderOverlay; + public SchematicHandler() { renderers = new Vector<>(3); for (int i = 0; i < renderers.capacity(); i++) @@ -194,16 +197,20 @@ public class SchematicHandler { } - public void renderOverlay(PoseStack ms, MultiBufferSource buffer, int light, int overlay, float partialTicks) { + public IIngameOverlay getOverlayRenderer() { + return overlayRenderer; + } + + public void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { if (!active) return; if (activeSchematicItem != null) - this.overlay.renderOn(ms, activeHotbarSlot); + this.overlay.renderOn(poseStack, activeHotbarSlot); currentTool.getTool() - .renderOverlay(ms, buffer); - selectionScreen.renderPassive(ms, partialTicks); + .renderOverlay(gui, poseStack, partialTicks, width, height); + selectionScreen.renderPassive(poseStack, partialTicks); } - + public void onMouseInput(int button, boolean pressed) { if (!active) return; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java index f38e0c9cf..f7a2ecdf7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.schematics.client.tools; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraftforge.client.gui.ForgeIngameGui; public interface ISchematicTool { @@ -14,7 +14,7 @@ public interface ISchematicTool { public boolean handleMouseWheel(double delta); public void renderTool(PoseStack ms, SuperRenderTypeBuffer buffer); - public void renderOverlay(PoseStack ms, MultiBufferSource buffer); + public void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height); public void renderOnSchematic(PoseStack ms, SuperRenderTypeBuffer buffer); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java index 1dd9d2da8..ca7b40d21 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.schematics.client.tools; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraftforge.client.gui.ForgeIngameGui; public abstract class PlacementToolBase extends SchematicToolBase { @@ -23,8 +23,8 @@ public abstract class PlacementToolBase extends SchematicToolBase { } @Override - public void renderOverlay(PoseStack ms, MultiBufferSource buffer) { - super.renderOverlay(ms, buffer); + public void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { + super.renderOverlay(gui, poseStack, partialTicks, width, height); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java index b2a9679c8..b3296d1d0 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java @@ -18,13 +18,13 @@ import com.simibubi.create.foundation.utility.outliner.AABBOutline; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult.Type; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.gui.ForgeIngameGui; public abstract class SchematicToolBase implements ISchematicTool { @@ -124,7 +124,7 @@ public abstract class SchematicToolBase implements ISchematicTool { public void renderTool(PoseStack ms, SuperRenderTypeBuffer buffer) {} @Override - public void renderOverlay(PoseStack ms, MultiBufferSource buffer) {} + public void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) {} @Override public void renderOnSchematic(PoseStack ms, SuperRenderTypeBuffer buffer) { diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index 8337e012c..df275d65c 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -21,7 +21,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler; -import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler; import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; @@ -56,11 +55,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; -import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; @@ -76,10 +71,8 @@ import net.minecraftforge.client.event.ClientPlayerNetworkEvent; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.EntityViewRenderEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderTooltipEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; -import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.event.TickEvent.ClientTickEvent; import net.minecraftforge.event.TickEvent.Phase; import net.minecraftforge.event.TickEvent.RenderTickEvent; @@ -199,31 +192,6 @@ public class ClientEvents { ms.popPose(); } - @SubscribeEvent - public static void afterRenderOverlayLayer(RenderGameOverlayEvent.PostLayer event) { - PoseStack ms = event.getMatrixStack(); - BufferSource buffers = Minecraft.getInstance() - .renderBuffers() - .bufferSource(); - int light = LightTexture.FULL_BRIGHT; - int overlay = OverlayTexture.NO_OVERLAY; - float pt = event.getPartialTicks(); - - if (event.getOverlay() == ForgeIngameGui.AIR_LEVEL_ELEMENT) - CopperBacktankArmorLayer.renderRemainingAirOverlay(ms, buffers, light, overlay, pt); - if (event.getOverlay() == ForgeIngameGui.HOTBAR_ELEMENT) - onRenderHotbar(ms, buffers, light, overlay, pt); - } - - public static void onRenderHotbar(PoseStack ms, MultiBufferSource buffer, int light, int overlay, - float partialTicks) { - CreateClient.SCHEMATIC_HANDLER.renderOverlay(ms, buffer, light, overlay, partialTicks); - LinkedControllerClientHandler.renderOverlay(ms, buffer, light, overlay, partialTicks); - BlueprintOverlayRenderer.renderOverlay(ms, buffer, light, overlay, partialTicks); - GoggleOverlayRenderer.renderOverlay(ms, buffer, light, overlay, partialTicks); - ToolboxHandlerClient.renderOverlay(ms, buffer, light, overlay, partialTicks); - } - @SubscribeEvent public static void getItemTooltipColor(RenderTooltipEvent.Color event) { PonderTooltipHandler.handleTooltipColor(event); diff --git a/src/main/java/com/simibubi/create/events/CommonEvents.java b/src/main/java/com/simibubi/create/events/CommonEvents.java index 72440efca..debbbba4e 100644 --- a/src/main/java/com/simibubi/create/events/CommonEvents.java +++ b/src/main/java/com/simibubi/create/events/CommonEvents.java @@ -36,6 +36,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.OnDatapackSyncEvent; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.event.TickEvent.Phase; import net.minecraftforge.event.TickEvent.ServerTickEvent; @@ -139,7 +140,7 @@ public class CommonEvents { } @SubscribeEvent - public static void registerReloadListeners(AddReloadListenerEvent event) { + public static void addReloadListeners(AddReloadListenerEvent event) { event.addListener(RecipeFinder.LISTENER); event.addListener(PotionMixingRecipeManager.LISTENER); event.addListener(FluidTransferRecipes.LISTENER); @@ -147,7 +148,17 @@ public class CommonEvents { } @SubscribeEvent - public static void serverStopped(FMLServerStoppingEvent event) { + public static void onDatapackSync(OnDatapackSyncEvent event) { + ServerPlayer player = event.getPlayer(); + if (player != null) { + PotatoProjectileTypeManager.syncTo(player); + } else { + PotatoProjectileTypeManager.syncToAll(); + } + } + + @SubscribeEvent + public static void serverStopping(FMLServerStoppingEvent event) { Create.SCHEMATIC_RECEIVER.shutdown(); } diff --git a/src/main/java/com/simibubi/create/foundation/block/BreakProgressHook.java b/src/main/java/com/simibubi/create/foundation/block/BreakProgressHook.java deleted file mode 100644 index 0b56c2957..000000000 --- a/src/main/java/com/simibubi/create/foundation/block/BreakProgressHook.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.foundation.block; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.core.BlockPos; - -public class BreakProgressHook { - - public static void whenBreaking(ClientLevel world, LevelRenderer renderer, int playerEntityId, BlockPos pos, int progress) { - if (AllBlocks.BELT.has(world.getBlockState(pos))) { - BeltTileEntity belt = (BeltTileEntity) world.getBlockEntity(pos); - - for (BlockPos beltPos : BeltBlock.getBeltChain(world, belt.getController())) { - renderer.destroyBlockProgress(beltPos.hashCode(), beltPos, progress); - } - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/block/render/DestroyProgressRenderingHandler.java b/src/main/java/com/simibubi/create/foundation/block/render/DestroyProgressRenderingHandler.java new file mode 100644 index 000000000..e077bad1b --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/render/DestroyProgressRenderingHandler.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.block.render; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.IBlockRenderProperties; + +public interface DestroyProgressRenderingHandler extends IBlockRenderProperties { + /** + * Called before the default block breaking progress overlay is rendered. + * + * @return if the default rendering should be cancelled or not + */ + boolean renderDestroyProgress(ClientLevel level, LevelRenderer renderer, int breakerId, BlockPos pos, int progress, BlockState blockState); +} diff --git a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java index 0f365ba58..c4efb9b35 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java @@ -1,38 +1,32 @@ package com.simibubi.create.foundation.block.render; -import net.minecraft.client.renderer.texture.TextureAtlas; +import com.jozufozu.flywheel.core.StitchedSprite; + import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; public class SpriteShiftEntry { - protected ResourceLocation originalTextureLocation; - protected ResourceLocation targetTextureLocation; - protected TextureAtlasSprite original; - protected TextureAtlasSprite target; + protected StitchedSprite original; + protected StitchedSprite target; public void set(ResourceLocation originalTextureLocation, ResourceLocation targetTextureLocation) { - this.originalTextureLocation = originalTextureLocation; - this.targetTextureLocation = targetTextureLocation; + original = new StitchedSprite(originalTextureLocation); + target = new StitchedSprite(targetTextureLocation); } public ResourceLocation getOriginalResourceLocation() { - return originalTextureLocation; + return original.getLocation(); } public ResourceLocation getTargetResourceLocation() { - return targetTextureLocation; + return target.getLocation(); } public TextureAtlasSprite getOriginal() { - return original; + return original.get(); } public TextureAtlasSprite getTarget() { - return target; + return target.get(); } - - protected void loadTextures(TextureAtlas atlas) { - original = atlas.getSprite(originalTextureLocation); - target = atlas.getSprite(targetTextureLocation); - } -} \ No newline at end of file +} diff --git a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java index dbca39ce3..04a0cc605 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java @@ -1,21 +1,12 @@ package com.simibubi.create.foundation.block.render; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import com.simibubi.create.Create; -import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -@EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class SpriteShifter { protected static final Map ENTRY_CACHE = new HashMap<>(); @@ -35,32 +26,4 @@ public class SpriteShifter { return get(Create.asResource(originalLocation), Create.asResource(targetLocation)); } - public static List getAllTargetSprites() { - return ENTRY_CACHE.values().stream().map(SpriteShiftEntry::getTargetResourceLocation).collect(Collectors.toList()); - } - - @SubscribeEvent - public static void onTextureStitchPre(TextureStitchEvent.Pre event) { - if (!event.getMap() - .location() - .equals(InventoryMenu.BLOCK_ATLAS)) - return; - - getAllTargetSprites() - .forEach(event::addSprite); - } - - @SubscribeEvent - public static void onTextureStitchPost(TextureStitchEvent.Post event) { - if (!event.getMap() - .location() - .equals(InventoryMenu.BLOCK_ATLAS)) - return; - - TextureAtlas atlas = event.getMap(); - for (SpriteShiftEntry entry : ENTRY_CACHE.values()) { - entry.loadTextures(atlas); - } - } - } diff --git a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java index dabc73fb2..ed6fa72f5 100644 --- a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java +++ b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java @@ -14,8 +14,8 @@ import com.simibubi.create.foundation.config.ui.SubMenuConfigScreen; import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.networking.SimplePacketBase; import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderIndexScreen; +import com.simibubi.create.foundation.ponder.ui.PonderIndexScreen; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java index c82207d53..3cd201912 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java @@ -2,7 +2,6 @@ package com.simibubi.create.foundation.fluid; import java.util.function.Function; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack.Pose; diff --git a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java index 2706ec371..5b1d96d66 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.config.ui.BaseConfigScreen; import com.simibubi.create.foundation.gui.element.BoxElement; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.ponder.content.PonderTagIndexScreen; +import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; diff --git a/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java b/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java index 8f3e34e63..9abc3159c 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java @@ -3,7 +3,6 @@ package com.simibubi.create.foundation.gui; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.math.Matrix4f; import com.mojang.math.Vector3f; -import com.simibubi.create.foundation.utility.VecHelper; public class CustomLightingSettings implements ILightingSettings { @@ -29,7 +28,7 @@ public class CustomLightingSettings implements ILightingSettings { light2.transform(Vector3f.YP.rotationDegrees(yRot2)); light2.transform(Vector3f.XN.rotationDegrees(xRot2)); } else { - light2 = VecHelper.ZERO_3F; + light2 = Vector3f.ZERO; } lightMatrix = new Matrix4f(); diff --git a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java b/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java index cacfa89b9..3d1b6f05f 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java @@ -8,7 +8,7 @@ import java.util.Optional; import javax.annotation.Nullable; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; +import com.simibubi.create.foundation.ponder.ui.NavigatableSimiScreen; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; 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 8f4453f19..461a5a2b5 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 @@ -28,7 +28,6 @@ import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.world.inventory.InventoryMenu; @@ -262,8 +261,8 @@ public class GuiGameElement { ItemRenderer renderer = Minecraft.getInstance().getItemRenderer(); BakedModel bakedModel = renderer.getModel(stack, null, null, 0); - renderer.textureManager.getTexture(TextureAtlas.LOCATION_BLOCKS).setFilter(false, false); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); + renderer.textureManager.getTexture(InventoryMenu.BLOCK_ATLAS).setFilter(false, false); + RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java deleted file mode 100644 index 0f76fceaf..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.foundation.block.BreakProgressHook; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.core.BlockPos; - -@Mixin(ClientLevel.class) -public class BreakProgressMixin { - @Shadow - @Final - private LevelRenderer levelRenderer; // levelRenderer - private final ClientLevel self = (ClientLevel) (Object) this; - - @Inject(at = @At("HEAD"), method = "destroyBlockProgress") - private void onBreakProgress(int playerEntityId, BlockPos pos, int progress, CallbackInfo ci) { - BreakProgressHook.whenBreaking(self, this.levelRenderer, playerEntityId, pos, progress); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/DestroyProgressMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/DestroyProgressMixin.java new file mode 100644 index 000000000..1dde3aa35 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/DestroyProgressMixin.java @@ -0,0 +1,36 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandler; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.IBlockRenderProperties; +import net.minecraftforge.client.RenderProperties; + +@Mixin(ClientLevel.class) +public class DestroyProgressMixin { + @Shadow + @Final + private LevelRenderer levelRenderer; + + @Inject(at = @At("HEAD"), method = "destroyBlockProgress(ILnet/minecraft/core/BlockPos;I)V", cancellable = true) + private void onDestroyBlockProgress(int breakerId, BlockPos pos, int progress, CallbackInfo ci) { + ClientLevel self = (ClientLevel) (Object) this; + BlockState state = self.getBlockState(pos); + IBlockRenderProperties properties = RenderProperties.get(state); + if (properties instanceof DestroyProgressRenderingHandler handler) { + if (handler.renderDestroyProgress(self, levelRenderer, breakerId, pos, progress, state)) { + ci.cancel(); + } + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java index 7ab48fa93..f29265549 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java @@ -18,8 +18,8 @@ import net.minecraftforge.api.distmarker.OnlyIn; @Mixin(LocalPlayer.class) public abstract class HeavyBootsOnPlayerMixin extends AbstractClientPlayer { - public HeavyBootsOnPlayerMixin(ClientLevel p_i50991_1_, GameProfile p_i50991_2_) { - super(p_i50991_1_, p_i50991_2_); + private HeavyBootsOnPlayerMixin(ClientLevel level, GameProfile profile) { + super(level, profile); } @Inject(at = @At("HEAD"), method = "isUnderWater", cancellable = true) diff --git a/src/main/java/com/simibubi/create/foundation/mixin/PlayerListMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/PlayerListMixin.java deleted file mode 100644 index 35924243d..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/PlayerListMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.content.curiosities.weapons.PotatoProjectileTypeManager; - -import net.minecraft.network.Connection; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.players.PlayerList; - -@Mixin(PlayerList.class) -public class PlayerListMixin { - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/stats/ServerRecipeBook;sendInitialRecipeBook(Lnet/minecraft/server/level/ServerPlayer;)V", shift = At.Shift.AFTER), method = "placeNewPlayer(Lnet/minecraft/network/Connection;Lnet/minecraft/server/level/ServerPlayer;)V") - private void afterSendRecipeBookOnPlaceNewPlayer(Connection connection, ServerPlayer player, CallbackInfo ci) { - PotatoProjectileTypeManager.syncTo(player); - } - - @Inject(at = @At("TAIL"), method = "reloadResources()V") - private void onReloadResources(CallbackInfo ci) { - PotatoProjectileTypeManager.syncToAll(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 260a4cb4b..358433140 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -159,11 +159,11 @@ public enum AllPackets { private static class LoadedPacket { private static int index = 0; - BiConsumer encoder; - Function decoder; - BiConsumer> handler; - Class type; - NetworkDirection direction; + private BiConsumer encoder; + private Function decoder; + private BiConsumer> handler; + private Class type; + private NetworkDirection direction; private LoadedPacket(Class type, Function factory, NetworkDirection direction) { encoder = T::write; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java b/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java index 92853a2d5..8484baf65 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java @@ -2,6 +2,8 @@ package com.simibubi.create.foundation.ponder; import java.util.UUID; +import com.simibubi.create.foundation.ponder.element.PonderElement; + public class ElementLink { private Class elementClass; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderChapter.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java rename to src/main/java/com/simibubi/create/foundation/ponder/PonderChapter.java index feb8cac9b..d09c382b4 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderChapter.java @@ -1,12 +1,10 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder; import javax.annotation.Nonnull; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.element.ScreenElement; -import com.simibubi.create.foundation.ponder.PonderLocalization; -import com.simibubi.create.foundation.ponder.PonderRegistry; import net.minecraft.client.gui.GuiComponent; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderChapterRegistry.java similarity index 92% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java rename to src/main/java/com/simibubi/create/foundation/ponder/PonderChapterRegistry.java index 714a7c20b..6fb60ad9a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderChapterRegistry.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder; import java.util.ArrayList; import java.util.Collections; @@ -10,7 +10,6 @@ import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java index f9663a576..cb3738219 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java @@ -7,10 +7,10 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.simibubi.create.Create; import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.content.PonderTagIndexScreen; -import com.simibubi.create.foundation.ponder.content.PonderTagScreen; import com.simibubi.create.foundation.ponder.content.SharedText; +import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen; +import com.simibubi.create.foundation.ponder.ui.PonderTagScreen; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Couple; import com.tterrag.registrate.AbstractRegistrate; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java similarity index 90% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java rename to src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java index d53685b18..395a7c4f8 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderPalette.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder; import com.simibubi.create.foundation.utility.Color; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistrationHelper.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistrationHelper.java index fb6758c31..d17711d57 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistrationHelper.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistrationHelper.java @@ -4,8 +4,6 @@ import java.util.Arrays; import java.util.function.Consumer; import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry.PonderStoryBoard; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.ponder.content.PonderTag; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java index 1fb744560..0d81c2e74 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java @@ -13,10 +13,7 @@ import java.util.Map; import java.util.zip.GZIPInputStream; import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.ponder.content.PonderChapterRegistry; import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTagRegistry; import com.simibubi.create.foundation.ponder.content.SharedText; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java index 8721a19e1..46cdf4e34 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java @@ -24,11 +24,13 @@ import com.mojang.math.Matrix4f; import com.mojang.math.Vector4f; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.elements.PonderOverlayElement; -import com.simibubi.create.foundation.ponder.elements.PonderSceneElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction; +import com.simibubi.create.foundation.ponder.element.PonderElement; +import com.simibubi.create.foundation.ponder.element.PonderOverlayElement; +import com.simibubi.create.foundation.ponder.element.PonderSceneElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.HideAllInstruction; +import com.simibubi.create.foundation.ponder.instruction.PonderInstruction; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Pair; @@ -59,31 +61,32 @@ public class PonderScene { public static final String TITLE_KEY = "header"; - boolean finished; - int sceneIndex; - int textIndex; + private boolean finished; +// private int sceneIndex; + private int textIndex; ResourceLocation sceneId; - IntList keyframeTimes; + private IntList keyframeTimes; - List schedule, activeSchedule; - Map linkedElements; - Set elements; - List tags; + List schedule; + private List activeSchedule; + private Map linkedElements; + private Set elements; + private List tags; - PonderWorld world; - String namespace; - ResourceLocation component; - SceneTransform transform; - SceneRenderInfo info; - Outliner outliner; - String defaultTitle; + private PonderWorld world; + private String namespace; + private ResourceLocation component; + private SceneTransform transform; + private SceneCamera camera; + private Outliner outliner; +// private String defaultTitle; - Vec3 pointOfInterest; - Vec3 chasingPointOfInterest; - WorldSectionElement baseWorldSection; + private Vec3 pointOfInterest; + private Vec3 chasingPointOfInterest; + private WorldSectionElement baseWorldSection; @Nullable - Entity renderViewEntity; + private Entity renderViewEntity; int basePlateOffsetX; int basePlateOffsetZ; @@ -91,9 +94,9 @@ public class PonderScene { float scaleFactor; float yOffset; - boolean stoppedCounting; - int totalTime; - int currentTime; + private boolean stoppedCounting; + private int totalTime; + private int currentTime; public PonderScene(PonderWorld world, String namespace, ResourceLocation component, Collection tags) { if (world != null) @@ -114,7 +117,7 @@ public class PonderScene { activeSchedule = new ArrayList<>(); transform = new SceneTransform(); basePlateSize = getBounds().getXSpan(); - info = new SceneRenderInfo(); + camera = new SceneCamera(); baseWorldSection = new WorldSectionElement(); renderViewEntity = world != null ? new ArmorStand(world, 0, 0, 0) : null; keyframeTimes = new IntArrayList(4); @@ -178,14 +181,6 @@ public class PonderScene { return Pair.of(pickBlock, selectedPos); } - public String getTitle() { - return getString(TITLE_KEY); - } - - public String getString(String key) { - return PonderLocalization.getSpecific(sceneId, key); - } - public void reset() { currentTime = 0; activeSchedule.clear(); @@ -241,9 +236,9 @@ public class PonderScene { forEachVisible(PonderSceneElement.class, e -> e.renderLayer(world, buffer, type, ms, pt)); forEachVisible(PonderSceneElement.class, e -> e.renderLast(world, buffer, ms, pt)); - info.set(transform.xRotation.getValue(pt) + 90, transform.yRotation.getValue(pt) + 180); - world.renderEntities(ms, buffer, info, pt); - world.renderParticles(ms, buffer, info, pt); + camera.set(transform.xRotation.getValue(pt) + 90, transform.yRotation.getValue(pt) + 180); + world.renderEntities(ms, buffer, camera, pt); + world.renderParticles(ms, buffer, camera, pt); outliner.renderOutlines(ms, buffer, pt); ms.popPose(); @@ -340,30 +335,11 @@ public class PonderScene { return function.apply(resolve(link)); } - public PonderWorld getWorld() { - return world; - } - - public Set getElements() { - return elements; - } - public void forEach(Consumer function) { for (PonderElement elemtent : elements) function.accept(elemtent); } - public void forEachWorldEntity(Class type, Consumer function) { - world.getEntityStream() - .filter(type::isInstance) - .map(type::cast) - .forEach(function); - /* - * for (Entity element : world.getEntities()) { if (type.isInstance(element)) - * function.accept(type.cast(element)); } - */ - } - public void forEach(Class type, Consumer function) { for (PonderElement element : elements) if (type.isInstance(element)) @@ -376,8 +352,15 @@ public class PonderScene { function.accept(type.cast(element)); } - public BoundingBox getBounds() { - return world == null ? new BoundingBox(BlockPos.ZERO) : world.getBounds(); + public void forEachWorldEntity(Class type, Consumer function) { + world.getEntityStream() + .filter(type::isInstance) + .map(type::cast) + .forEach(function); + /* + * for (Entity element : world.getEntities()) { if (type.isInstance(element)) + * function.accept(type.cast(element)); } + */ } public Supplier registerText(String defaultText) { @@ -396,10 +379,46 @@ public class PonderScene { return new SceneBuildingUtil(getBounds()); } + public String getTitle() { + return getString(TITLE_KEY); + } + + public String getString(String key) { + return PonderLocalization.getSpecific(sceneId, key); + } + + public PonderWorld getWorld() { + return world; + } + public String getNamespace() { return namespace; } + public int getKeyframeCount() { + return keyframeTimes.size(); + } + + public int getKeyframeTime(int index) { + return keyframeTimes.getInt(index); + } + + public List getTags() { + return tags; + } + + public ResourceLocation getComponent() { + return component; + } + + public Set getElements() { + return elements; + } + + public BoundingBox getBounds() { + return world == null ? new BoundingBox(BlockPos.ZERO) : world.getBounds(); + } + public ResourceLocation getId() { return sceneId; } @@ -420,14 +439,38 @@ public class PonderScene { this.finished = finished; } + public int getBasePlateOffsetX() { + return basePlateOffsetX; + } + + public int getBasePlateOffsetZ() { + return basePlateOffsetZ; + } + + public int getBasePlateSize() { + return basePlateSize; + } + + public float getYOffset() { + return yOffset; + } + + public int getTotalTime() { + return totalTime; + } + + public int getCurrentTime() { + return currentTime; + } + public class SceneTransform { public LerpedFloat xRotation, yRotation; // Screen params - int width, height; - double offset; - Matrix4f cachedMat; + private int width, height; + private double offset; + private Matrix4f cachedMat; public SceneTransform() { xRotation = LerpedFloat.angular() @@ -455,7 +498,7 @@ public class PonderScene { public PoseStack apply(PoseStack ms, float pt, boolean overlayCompatible) { ms.translate(width / 2, height / 2, 200 + offset); - TransformStack.cast(ms) + TransformStack.cast(ms) .rotateX(-35) .rotateY(55) .translate(offset, 0, 0) @@ -529,7 +572,7 @@ public class PonderScene { } - public class SceneRenderInfo extends Camera { + public class SceneCamera extends Camera { public void set(float xRotation, float yRotation) { setRotation(yRotation, xRotation); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java index b801539f9..5936c4483 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java @@ -4,9 +4,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.ponder.content.PonderTag; - import net.minecraft.resources.ResourceLocation; public class PonderStoryBoardEntry { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java rename to src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java index bae29b999..ade6f4a79 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -7,8 +7,6 @@ import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.element.ScreenElement; -import com.simibubi.create.foundation.ponder.PonderLocalization; -import com.simibubi.create.foundation.ponder.PonderRegistry; import net.minecraft.client.gui.GuiComponent; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java rename to src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java index 94017fc1f..cad0c1bab 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index 8d4c56c92..fd62d19ab 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -5,6 +5,8 @@ import java.util.List; import com.google.common.base.Strings; import com.mojang.blaze3d.platform.InputConstants; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.ponder.ui.NavigatableSimiScreen; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index 4e9158eb6..4f69e1f7d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -13,7 +13,7 @@ import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.schematics.SchematicWorld; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java index 391c7efbd..3e4fa29bb 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java @@ -21,41 +21,41 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement.MinecartConstructor; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.ParrotPose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.SpinOnComponentPose; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.AnimateMinecartInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateParrotInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateTileEntityInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateWorldSectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.ChaseAABBInstruction; -import com.simibubi.create.foundation.ponder.instructions.CreateMinecartInstruction; -import com.simibubi.create.foundation.ponder.instructions.CreateParrotInstruction; -import com.simibubi.create.foundation.ponder.instructions.DelayInstruction; -import com.simibubi.create.foundation.ponder.instructions.DisplayWorldSectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.ponder.instructions.FadeOutOfSceneInstruction; -import com.simibubi.create.foundation.ponder.instructions.HighlightValueBoxInstruction; -import com.simibubi.create.foundation.ponder.instructions.KeyframeInstruction; -import com.simibubi.create.foundation.ponder.instructions.LineInstruction; -import com.simibubi.create.foundation.ponder.instructions.MarkAsFinishedInstruction; -import com.simibubi.create.foundation.ponder.instructions.MovePoiInstruction; -import com.simibubi.create.foundation.ponder.instructions.OutlineSelectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.ReplaceBlocksInstruction; -import com.simibubi.create.foundation.ponder.instructions.RotateSceneInstruction; -import com.simibubi.create.foundation.ponder.instructions.ShowInputInstruction; -import com.simibubi.create.foundation.ponder.instructions.TextInstruction; -import com.simibubi.create.foundation.ponder.instructions.TileEntityDataInstruction; +import com.simibubi.create.foundation.ponder.element.AnimatedSceneElement; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.MinecartElement; +import com.simibubi.create.foundation.ponder.element.MinecartElement.MinecartConstructor; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.ParrotPose; +import com.simibubi.create.foundation.ponder.element.ParrotElement.SpinOnComponentPose; +import com.simibubi.create.foundation.ponder.element.TextWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.AnimateMinecartInstruction; +import com.simibubi.create.foundation.ponder.instruction.AnimateParrotInstruction; +import com.simibubi.create.foundation.ponder.instruction.AnimateTileEntityInstruction; +import com.simibubi.create.foundation.ponder.instruction.AnimateWorldSectionInstruction; +import com.simibubi.create.foundation.ponder.instruction.ChaseAABBInstruction; +import com.simibubi.create.foundation.ponder.instruction.CreateMinecartInstruction; +import com.simibubi.create.foundation.ponder.instruction.CreateParrotInstruction; +import com.simibubi.create.foundation.ponder.instruction.DelayInstruction; +import com.simibubi.create.foundation.ponder.instruction.DisplayWorldSectionInstruction; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.instruction.FadeOutOfSceneInstruction; +import com.simibubi.create.foundation.ponder.instruction.HighlightValueBoxInstruction; +import com.simibubi.create.foundation.ponder.instruction.KeyframeInstruction; +import com.simibubi.create.foundation.ponder.instruction.LineInstruction; +import com.simibubi.create.foundation.ponder.instruction.MarkAsFinishedInstruction; +import com.simibubi.create.foundation.ponder.instruction.MovePoiInstruction; +import com.simibubi.create.foundation.ponder.instruction.OutlineSelectionInstruction; +import com.simibubi.create.foundation.ponder.instruction.PonderInstruction; +import com.simibubi.create.foundation.ponder.instruction.ReplaceBlocksInstruction; +import com.simibubi.create.foundation.ponder.instruction.RotateSceneInstruction; +import com.simibubi.create.foundation.ponder.instruction.ShowInputInstruction; +import com.simibubi.create.foundation.ponder.instruction.TextInstruction; +import com.simibubi.create.foundation.ponder.instruction.TileEntityDataInstruction; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; @@ -138,7 +138,7 @@ public class SceneBuilder { * @param title */ public void title(String sceneId, String title) { - scene.sceneId = new ResourceLocation(scene.namespace, sceneId); + scene.sceneId = new ResourceLocation(scene.getNamespace(), sceneId); PonderLocalization.registerSpecific(scene.sceneId, PonderScene.TITLE_KEY, title); } @@ -188,8 +188,8 @@ public class SceneBuilder { */ public void showBasePlate() { world.showSection( - scene.getSceneBuildingUtil().select.cuboid(new BlockPos(scene.basePlateOffsetX, 0, scene.basePlateOffsetZ), - new Vec3i(scene.basePlateSize - 1, 0, scene.basePlateSize - 1)), + scene.getSceneBuildingUtil().select.cuboid(new BlockPos(scene.getBasePlateOffsetX(), 0, scene.getBasePlateOffsetZ()), + new Vec3i(scene.getBasePlateSize() - 1, 0, scene.getBasePlateSize() - 1)), Direction.UP); } @@ -278,13 +278,13 @@ public class SceneBuilder { } public void superGlue(BlockPos pos, Direction side, boolean fullBlock) { - addInstruction(scene -> SuperGlueItem.spawnParticles(scene.world, pos, side, fullBlock)); + addInstruction(scene -> SuperGlueItem.spawnParticles(scene.getWorld(), pos, side, fullBlock)); } private void rotationIndicator(BlockPos pos, boolean direction) { addInstruction(scene -> { - BlockState blockState = scene.world.getBlockState(pos); - BlockEntity tileEntity = scene.world.getBlockEntity(pos); + BlockState blockState = scene.getWorld().getBlockState(pos); + BlockEntity tileEntity = scene.getWorld().getBlockEntity(pos); if (!(blockState.getBlock() instanceof KineticBlock)) return; @@ -307,7 +307,7 @@ public class SceneBuilder { .charAt(0)); for (int i = 0; i < 20; i++) - scene.world.addParticle(particleData, location.x, location.y, location.z, 0, 0, 0); + scene.getWorld().addParticle(particleData, location.x, location.y, location.z, 0, 0, 0); }); } @@ -526,7 +526,7 @@ public class SceneBuilder { } public void restoreBlocks(Selection selection) { - addInstruction(scene -> scene.world.restoreBlocks(selection)); + addInstruction(scene -> scene.getWorld().restoreBlocks(selection)); } public ElementLink makeSectionIndependent(Selection selection) { @@ -777,7 +777,7 @@ public class SceneBuilder { public void modifyTileEntity(BlockPos position, Class teType, Consumer consumer) { addInstruction(scene -> { - BlockEntity tileEntity = scene.world.getBlockEntity(position); + BlockEntity tileEntity = scene.getWorld().getBlockEntity(position); if (teType.isInstance(tileEntity)) consumer.accept(teType.cast(tileEntity)); }); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java index 1a1fb5fe9..489fa594d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java @@ -6,11 +6,12 @@ import com.simibubi.create.content.contraptions.components.crafter.MechanicalCra import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java index 7e027644e..280d81cf6 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java @@ -5,11 +5,12 @@ import com.simibubi.create.content.contraptions.components.actors.HarvesterTileE import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java index 545e31cc2..7e42ff7ab 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java @@ -15,15 +15,16 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FaceCursorPose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FacePointOfInterestPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FaceCursorPose; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FacePointOfInterestPose; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java index 1e2656d0c..6091b89a3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java @@ -5,14 +5,15 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.MinecartElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java index 686b9f7b3..73984829c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java @@ -3,12 +3,13 @@ package com.simibubi.create.foundation.ponder.content; import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement.Builder; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.TextWindowElement.Builder; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java index 0698aa79b..6799f54b3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java @@ -6,12 +6,13 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java index 899db4353..8672254d6 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java @@ -8,12 +8,13 @@ import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java index 1b883c3a4..ca3599d9c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java @@ -8,11 +8,12 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java index 9aa632f3d..196bb65a6 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java @@ -5,16 +5,17 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry.PonderStoryBoard; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.DancePose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FacePointOfInterestPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.DancePose; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FacePointOfInterestPose; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import com.tterrag.registrate.util.entry.ItemEntry; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java index 14918720a..e24662732 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java @@ -4,14 +4,15 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity; import com.simibubi.create.content.curiosities.tools.SandPaperItem; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java index 2b71a8261..d3a714128 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java @@ -4,12 +4,13 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.logistics.block.depot.EjectorTileEntity; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java index aae951c5f..6a778be0b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java @@ -4,16 +4,17 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FlappyPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FlappyPose; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java index dfc3d68a9..5fe639aea 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java @@ -6,12 +6,13 @@ import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java index fad3f5f2d..414d89c19 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java @@ -1,10 +1,11 @@ package com.simibubi.create.foundation.ponder.content; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java index 0be13791f..e698d5b90 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java @@ -13,12 +13,13 @@ import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import com.tterrag.registrate.util.entry.BlockEntry; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java index 494a840fe..74db92edf 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java @@ -4,9 +4,9 @@ import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java index 3b40e7fb4..29715ce43 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java @@ -4,12 +4,13 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java index 8f0d8045d..0cd882d02 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java @@ -5,14 +5,15 @@ import com.simibubi.create.content.contraptions.components.actors.PortableItemIn import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FlappyPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FlappyPose; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java index 316067bb0..3624fb0c4 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java @@ -2,13 +2,14 @@ package com.simibubi.create.foundation.ponder.content; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FaceCursorPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement.FaceCursorPose; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java index 04e0c1de5..20f6b46d8 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.foundation.ponder.PonderRegistrationHelper; import com.simibubi.create.foundation.ponder.PonderRegistry; +import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.ponder.content.fluid.DrainScenes; import com.simibubi.create.foundation.ponder.content.fluid.FluidMovementActorScenes; import com.simibubi.create.foundation.ponder.content.fluid.FluidTankScenes; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java index 53a7be260..fb79e7005 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java @@ -14,14 +14,15 @@ import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlo import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.content.contraptions.processing.burner.LitBlazeBurnerBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.EntityElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java index 9b7f8b20c..0c6ccb5da 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java @@ -1,11 +1,12 @@ package com.simibubi.create.foundation.ponder.content; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java index 409b682f1..c6ee04b40 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java @@ -14,12 +14,13 @@ import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java index 4298b9e26..076a44f0e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java @@ -8,10 +8,11 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.Iterate; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/DrainScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/DrainScenes.java index 46a87e309..a5553a79d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/DrainScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/DrainScenes.java @@ -5,8 +5,8 @@ import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidMovementActorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidMovementActorScenes.java index 1b36d2ebd..a211fcc03 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidMovementActorScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidMovementActorScenes.java @@ -5,12 +5,12 @@ import com.simibubi.create.content.contraptions.components.actors.PortableFluidI import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java index 2ec9a5d38..e7d46d6a6 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java @@ -13,13 +13,13 @@ import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import com.simibubi.create.foundation.utility.VecHelper; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/HosePulleyScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/HosePulleyScenes.java index 7a82c4503..accb2ab6a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/HosePulleyScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/HosePulleyScenes.java @@ -7,11 +7,11 @@ import java.util.List; import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyFluidHandler; import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PipeScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PipeScenes.java index c87ecbc62..891b07235 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PipeScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PipeScenes.java @@ -14,12 +14,12 @@ import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.utility.Pointing; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PumpScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PumpScenes.java index dee73c25d..298af869f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PumpScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/PumpScenes.java @@ -7,12 +7,12 @@ import com.simibubi.create.content.contraptions.fluids.pipes.GlassFluidPipeBlock import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/SpoutScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/SpoutScenes.java index 785431b84..8f86f5d70 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/SpoutScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/SpoutScenes.java @@ -7,14 +7,14 @@ import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; +import com.simibubi.create.foundation.ponder.element.BeltItemElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.ponder.instruction.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.utility.Pointing; import com.simibubi.create.foundation.utility.VecHelper; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedOverlayElement.java similarity index 87% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedOverlayElement.java index 19bbd1334..27d1ff57d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedOverlayElement.java @@ -1,8 +1,8 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.animation.LerpedFloat; public abstract class AnimatedOverlayElement extends PonderOverlayElement { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedSceneElement.java similarity index 97% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedSceneElement.java index 34e93728b..a8c8b7258 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/AnimatedSceneElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java similarity index 81% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java index 4935b3da4..79640d5bc 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/EntityElement.java similarity index 82% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/EntityElement.java index 317c2a9e6..3c3d5b30c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/EntityElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/InputWindowElement.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/InputWindowElement.java index 3f1fb07da..cc2fcbbb7 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/InputWindowElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -7,9 +7,9 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.ponder.PonderLocalization; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderPalette; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.client.gui.Font; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/MinecartElement.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/MinecartElement.java index 4a96afb4e..deded1210 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/MinecartElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/OutlinerElement.java similarity index 94% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/OutlinerElement.java index 44773221a..894397474 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/OutlinerElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import java.util.function.Function; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/ParrotElement.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/ParrotElement.java index ac07defce..134736dc5 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/ParrotElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import java.util.function.Supplier; @@ -8,8 +8,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; import com.simibubi.create.foundation.ponder.PonderWorld; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderElement.java similarity index 73% rename from src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/PonderElement.java index 5b7df27ac..f8f63dc09 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderElement.java @@ -1,4 +1,6 @@ -package com.simibubi.create.foundation.ponder; +package com.simibubi.create.foundation.ponder.element; + +import com.simibubi.create.foundation.ponder.PonderScene; public class PonderElement { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderOverlayElement.java similarity index 64% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/PonderOverlayElement.java index aa1501b5e..9808d3d18 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderOverlayElement.java @@ -1,9 +1,8 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.ponder.PonderElement; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; +import com.simibubi.create.foundation.ponder.ui.PonderUI; public abstract class PonderOverlayElement extends PonderElement { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderSceneElement.java similarity index 84% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/PonderSceneElement.java index ed2e1ca40..b5f5211fa 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/PonderSceneElement.java @@ -1,7 +1,6 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.ponder.PonderElement; import com.simibubi.create.foundation.ponder.PonderWorld; import net.minecraft.client.renderer.MultiBufferSource; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/TextWindowElement.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/TextWindowElement.java index 437f71e21..fd456a496 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/TextWindowElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import java.util.List; import java.util.function.Supplier; @@ -8,9 +8,9 @@ import com.mojang.math.Matrix4f; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.BoxElement; import com.simibubi.create.foundation.ponder.PonderLocalization; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderPalette; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Color; import net.minecraft.network.chat.FormattedText; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/TrackedElement.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/TrackedElement.java index 8c66bcdd3..bcf5fa776 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/TrackedElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import java.lang.ref.WeakReference; import java.util.function.Consumer; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java similarity index 99% rename from src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java rename to src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java index dccffa6ae..11a1ca661 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.elements; +package com.simibubi.create.foundation.ponder.element; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateElementInstruction.java similarity index 91% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateElementInstruction.java index 1d9183d6a..9df762631 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateElementInstruction.java @@ -1,11 +1,11 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.BiConsumer; import java.util.function.Function; import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.PonderSceneElement; +import com.simibubi.create.foundation.ponder.element.PonderSceneElement; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateMinecartInstruction.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateMinecartInstruction.java index de49e865b..3dc1df60a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateMinecartInstruction.java @@ -1,10 +1,10 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.BiConsumer; import java.util.function.Function; import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; +import com.simibubi.create.foundation.ponder.element.MinecartElement; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateParrotInstruction.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateParrotInstruction.java index 7a7165b9f..27b86461e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateParrotInstruction.java @@ -1,10 +1,10 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.BiConsumer; import java.util.function.Function; import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateTileEntityInstruction.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateTileEntityInstruction.java index 82e1f7b8e..373727e8e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateTileEntityInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.Optional; import java.util.function.BiConsumer; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateWorldSectionInstruction.java similarity index 89% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateWorldSectionInstruction.java index 7bce8fbab..afb362a47 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateWorldSectionInstruction.java @@ -1,10 +1,10 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.BiConsumer; import java.util.function.Function; import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ChaseAABBInstruction.java similarity index 81% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/ChaseAABBInstruction.java index 3472b54b9..9370df375 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ChaseAABBInstruction.java @@ -1,7 +1,7 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; import net.minecraft.world.phys.AABB; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateMinecartInstruction.java similarity index 74% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateMinecartInstruction.java index 0ed9c774a..efd187fe4 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateMinecartInstruction.java @@ -1,6 +1,6 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; +import com.simibubi.create.foundation.ponder.element.MinecartElement; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateParrotInstruction.java similarity index 74% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateParrotInstruction.java index 80ebfc806..32ec9153b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/CreateParrotInstruction.java @@ -1,6 +1,6 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/DelayInstruction.java similarity index 67% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/DelayInstruction.java index 0965aa74b..a112b8599 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/DelayInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; public class DelayInstruction extends TickingInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/DisplayWorldSectionInstruction.java similarity index 92% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/DisplayWorldSectionInstruction.java index 67d6e5ecf..b809239de 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/DisplayWorldSectionInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.Optional; import java.util.function.Supplier; @@ -8,7 +8,7 @@ import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/EmitParticlesInstruction.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/EmitParticlesInstruction.java index 223ab83fa..6c19f81e0 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/EmitParticlesInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.Create; import com.simibubi.create.foundation.ponder.PonderScene; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeInOutInstruction.java similarity index 94% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeInOutInstruction.java index a7f195ffe..6860d2565 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeInOutInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.PonderScene; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeIntoSceneInstruction.java similarity index 91% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeIntoSceneInstruction.java index 2f3537c8c..ab3ee8f7e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeIntoSceneInstruction.java @@ -1,8 +1,8 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; +import com.simibubi.create.foundation.ponder.element.AnimatedSceneElement; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeOutOfSceneInstruction.java similarity index 89% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeOutOfSceneInstruction.java index 5cc438f14..249f54f73 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/FadeOutOfSceneInstruction.java @@ -1,8 +1,8 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; +import com.simibubi.create.foundation.ponder.element.AnimatedSceneElement; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/HideAllInstruction.java similarity index 87% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/HideAllInstruction.java index e901ece96..89ea2a8fb 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/HideAllInstruction.java @@ -1,8 +1,8 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedOverlayElement; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; +import com.simibubi.create.foundation.ponder.element.AnimatedOverlayElement; +import com.simibubi.create.foundation.ponder.element.AnimatedSceneElement; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/HighlightValueBoxInstruction.java similarity index 85% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/HighlightValueBoxInstruction.java index aafbae409..0af8b6ad7 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/HighlightValueBoxInstruction.java @@ -1,7 +1,7 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/KeyframeInstruction.java similarity index 84% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/KeyframeInstruction.java index 8bc6ea00a..765e5efe1 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/KeyframeInstruction.java @@ -1,6 +1,5 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; public class KeyframeInstruction extends PonderInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java similarity index 81% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java index 27530110f..6e0d52184 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java @@ -1,7 +1,7 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/MarkAsFinishedInstruction.java similarity index 74% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/MarkAsFinishedInstruction.java index ef15e46dd..31d3a17c7 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/MarkAsFinishedInstruction.java @@ -1,6 +1,5 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; public class MarkAsFinishedInstruction extends PonderInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/MovePoiInstruction.java similarity index 75% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/MovePoiInstruction.java index 8a4dab91f..4b4391341 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/MovePoiInstruction.java @@ -1,6 +1,5 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/OutlineSelectionInstruction.java similarity index 83% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/OutlineSelectionInstruction.java index 23207f9fc..85510775b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/OutlineSelectionInstruction.java @@ -1,8 +1,8 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; +import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; public class OutlineSelectionInstruction extends TickingInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/PonderInstruction.java similarity index 86% rename from src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/PonderInstruction.java index 1309d33f0..48bcb49b2 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/PonderInstruction.java @@ -1,7 +1,9 @@ -package com.simibubi.create.foundation.ponder; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.Consumer; +import com.simibubi.create.foundation.ponder.PonderScene; + public abstract class PonderInstruction { public boolean isBlocking() { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ReplaceBlocksInstruction.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/ReplaceBlocksInstruction.java index 231a512bf..219ad9bfd 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ReplaceBlocksInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.UnaryOperator; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/RotateSceneInstruction.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/RotateSceneInstruction.java index 9edec76fc..ade54ac01 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/RotateSceneInstruction.java @@ -1,6 +1,5 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderScene.SceneTransform; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ShowInputInstruction.java similarity index 81% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/ShowInputInstruction.java index 4a1864478..b94ddbadd 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/ShowInputInstruction.java @@ -1,7 +1,7 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.InputWindowElement; public class ShowInputInstruction extends FadeInOutInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TextInstruction.java similarity index 85% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/TextInstruction.java index d0380cc81..2b81b5805 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TextInstruction.java @@ -1,9 +1,9 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.OutlinerElement; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; +import com.simibubi.create.foundation.ponder.element.OutlinerElement; +import com.simibubi.create.foundation.ponder.element.TextWindowElement; public class TextInstruction extends FadeInOutInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TickingInstruction.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/TickingInstruction.java index 93f2b5a03..fc5549b50 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TickingInstruction.java @@ -1,6 +1,5 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; public abstract class TickingInstruction extends PonderInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TileEntityDataInstruction.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/TileEntityDataInstruction.java index deb5d8c57..65de59767 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/TileEntityDataInstruction.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; import java.util.function.UnaryOperator; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/WorldModifyInstruction.java similarity index 77% rename from src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java rename to src/main/java/com/simibubi/create/foundation/ponder/instruction/WorldModifyInstruction.java index 583514b67..3640fcc40 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/WorldModifyInstruction.java @@ -1,9 +1,8 @@ -package com.simibubi.create.foundation.ponder.instructions; +package com.simibubi.create.foundation.ponder.instruction; -import com.simibubi.create.foundation.ponder.PonderInstruction; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; public abstract class WorldModifyInstruction extends PonderInstruction { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java index 1429bd876..b32dbfe97 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java @@ -8,7 +8,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.widget.AbstractSimiWidget; -import com.simibubi.create.foundation.ponder.content.PonderChapter; +import com.simibubi.create.foundation.ponder.PonderChapter; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index b1cc3a9e8..ffd33428a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder; +package com.simibubi.create.foundation.ponder.ui; import java.util.List; import java.util.Optional; @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; +import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java index e5e700afa..cf2311b50 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.element.RenderElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.gui.widget.ElementWidget; -import com.simibubi.create.foundation.ponder.content.PonderTag; +import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.animation.LerpedFloat; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java similarity index 94% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java index 8a9c43503..17e337439 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder.ui; import java.util.ArrayList; import java.util.List; @@ -12,12 +12,8 @@ import com.simibubi.create.content.contraptions.components.crank.ValveHandleBloc import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; +import com.simibubi.create.foundation.ponder.PonderChapter; import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.ui.ChapterLabel; -import com.simibubi.create.foundation.ponder.ui.LayoutHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderProgressBar.java similarity index 80% rename from src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/PonderProgressBar.java index a438e9a44..aea0edeac 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderProgressBar.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder; +package com.simibubi.create.foundation.ponder.ui; import javax.annotation.Nonnull; @@ -6,9 +6,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.BoxElement; import com.simibubi.create.foundation.gui.widget.AbstractSimiWidget; +import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.sounds.SoundManager; @@ -36,7 +36,7 @@ public class PonderProgressBar extends AbstractSimiWidget { @Override protected boolean clicked(double mouseX, double mouseY) { - return this.active && this.visible && !ponder.getActiveScene().keyframeTimes.isEmpty() + return this.active && this.visible && ponder.getActiveScene().getKeyframeCount() > 0 && mouseX >= (double) this.x && mouseX < (double) (this.x + this.width + 4) && mouseY >= (double) this.y - 3 && mouseY < (double) (this.y + this.height + 20); } @@ -44,39 +44,36 @@ public class PonderProgressBar extends AbstractSimiWidget { @Override public void onClick(double mouseX, double mouseY) { PonderScene activeScene = ponder.getActiveScene(); - IntList keyframeTimes = activeScene.keyframeTimes; int keyframeIndex = getHoveredKeyframeIndex(activeScene, mouseX); if (keyframeIndex == -1) ponder.seekToTime(0); - else if (keyframeIndex == keyframeTimes.size()) - ponder.seekToTime(activeScene.totalTime); + else if (keyframeIndex == activeScene.getKeyframeCount()) + ponder.seekToTime(activeScene.getTotalTime()); else - ponder.seekToTime(keyframeTimes.getInt(keyframeIndex)); + ponder.seekToTime(activeScene.getKeyframeTime(keyframeIndex)); } public int getHoveredKeyframeIndex(PonderScene activeScene, double mouseX) { - IntList keyframeTimes = activeScene.keyframeTimes; - - int totalTime = activeScene.totalTime; + int totalTime = activeScene.getTotalTime(); int clickedAtTime = (int) ((mouseX - x) / ((double) width + 4) * totalTime); { - int lastKeyframeTime = keyframeTimes.getInt(keyframeTimes.size() - 1); + int lastKeyframeTime = activeScene.getKeyframeTime(activeScene.getKeyframeCount() - 1); int diffToEnd = totalTime - clickedAtTime; int diffToLast = clickedAtTime - lastKeyframeTime; if (diffToEnd > 0 && diffToEnd < diffToLast / 2) { - return keyframeTimes.size(); + return activeScene.getKeyframeCount(); } } int index = -1; - for (int i = 0; i < keyframeTimes.size(); i++) { - int keyframeTime = keyframeTimes.getInt(i); + for (int i = 0; i < activeScene.getKeyframeCount(); i++) { + int keyframeTime = activeScene.getKeyframeTime(i); if (keyframeTime > clickedAtTime) break; @@ -129,16 +126,15 @@ public class PonderProgressBar extends AbstractSimiWidget { } else { hoverIndex = -2; } - IntList keyframeTimes = activeScene.keyframeTimes; if (hoverIndex == -1) drawKeyframe(ms, activeScene, true, 0, 0, hoverStartColor, hoverEndColor, 8); - else if (hoverIndex == keyframeTimes.size()) - drawKeyframe(ms, activeScene, true, activeScene.totalTime, width + 4, hoverStartColor, hoverEndColor, 8); + else if (hoverIndex == activeScene.getKeyframeCount()) + drawKeyframe(ms, activeScene, true, activeScene.getTotalTime(), width + 4, hoverStartColor, hoverEndColor, 8); - for (int i = 0; i < keyframeTimes.size(); i++) { - int keyframeTime = keyframeTimes.getInt(i); - int keyframePos = (int) (((float) keyframeTime) / ((float) activeScene.totalTime) * (width + 4)); + for (int i = 0; i < activeScene.getKeyframeCount(); i++) { + int keyframeTime = activeScene.getKeyframeTime(i); + int keyframePos = (int) (((float) keyframeTime) / ((float) activeScene.getTotalTime()) * (width + 4)); boolean selected = i == hoverIndex; int startColor = selected ? hoverStartColor : idleStartColor; @@ -159,7 +155,7 @@ public class PonderProgressBar extends AbstractSimiWidget { ms.translate(0, 0, 100); String text; int offset; - if (activeScene.currentTime < keyframeTime) { + if (activeScene.getCurrentTime() < keyframeTime) { text = ">"; offset = -1 - font.width(text); } else { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagIndexScreen.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java index 1419479ec..7fa8479c3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder.ui; import java.util.List; import java.util.Optional; @@ -14,12 +14,9 @@ import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.BoxElement; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.ui.LayoutHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; +import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index ea24bf7bb..123ad260e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder.content; +package com.simibubi.create.foundation.ponder.ui; import java.util.ArrayList; import java.util.List; @@ -12,13 +12,10 @@ import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.BoxElement; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; +import com.simibubi.create.foundation.ponder.PonderChapter; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.ui.ChapterLabel; -import com.simibubi.create.foundation.ponder.ui.LayoutHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; +import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java rename to src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index b7ee89ab2..35a7da83d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.ponder; +package com.simibubi.create.foundation.ponder.ui; import static com.simibubi.create.foundation.ponder.PonderLocalization.LANG_PREFIX; @@ -22,14 +22,16 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.BoxElement; import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.ponder.PonderChapter; +import com.simibubi.create.foundation.ponder.PonderRegistry; +import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderScene.SceneTransform; +import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry; +import com.simibubi.create.foundation.ponder.PonderTag; +import com.simibubi.create.foundation.ponder.PonderWorld; import com.simibubi.create.foundation.ponder.content.DebugScenes; -import com.simibubi.create.foundation.ponder.content.PonderChapter; import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.content.PonderTagScreen; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; -import com.simibubi.create.foundation.ponder.ui.PonderButton; +import com.simibubi.create.foundation.ponder.element.TextWindowElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Couple; @@ -130,7 +132,7 @@ public class PonderUI extends NavigatableSimiScreen { } PonderUI(List scenes) { - ResourceLocation component = scenes.get(0).component; + ResourceLocation component = scenes.get(0).getComponent(); if (ForgeRegistries.ITEMS.containsKey(component)) stack = new ItemStack(ForgeRegistries.ITEMS.getValue(component)); else @@ -269,7 +271,7 @@ public class PonderUI extends NavigatableSimiScreen { if (referredToByTag != null) { for (int i = 0; i < scenes.size(); i++) { PonderScene ponderScene = scenes.get(i); - if (!ponderScene.tags.contains(referredToByTag)) + if (!ponderScene.getTags().contains(referredToByTag)) continue; if (i == index) break; @@ -311,7 +313,7 @@ public class PonderUI extends NavigatableSimiScreen { } else extendedTickTimer--; - if (activeScene.currentTime == activeScene.totalTime - 1) + if (activeScene.getCurrentTime() == activeScene.getTotalTime() - 1) finishingFlashWarmup = 30; if (finishingFlashWarmup > 0) { finishingFlashWarmup--; @@ -329,7 +331,7 @@ public class PonderUI extends NavigatableSimiScreen { } public void seekToTime(int time) { - if (getActiveScene().currentTime > time) + if (getActiveScene().getCurrentTime() > time) replay(); getActiveScene().seekToTime(time); @@ -366,7 +368,7 @@ public class PonderUI extends NavigatableSimiScreen { PonderScene scene = scenes.get(index); if (hasShiftDown()) { - List list = PonderRegistry.ALL.get(scene.component); + List list = PonderRegistry.ALL.get(scene.getComponent()); PonderStoryBoardEntry sb = list.get(index); StructureTemplate activeTemplate = PonderRegistry.loadSchematic(sb.getSchematicLocation()); PonderWorld world = new PonderWorld(BlockPos.ZERO, Minecraft.getInstance().level); @@ -435,9 +437,9 @@ public class PonderUI extends NavigatableSimiScreen { ms.pushPose(); // ms.translate(0, 0, -800); - story.transform.updateScreenParams(width, height, slide); - story.transform.apply(ms, partialTicks, false); - story.transform.updateSceneRVE(partialTicks); + story.getTransform().updateScreenParams(width, height, slide); + story.getTransform().apply(ms, partialTicks, false); + story.getTransform().updateSceneRVE(partialTicks); story.renderScene(buffer, ms, partialTicks); buffer.draw(); @@ -449,7 +451,7 @@ public class PonderUI extends NavigatableSimiScreen { RenderSystem.enableCull(); RenderSystem.enableDepthTest(); ms.pushPose(); - ms.translate(story.basePlateOffsetX, 0, story.basePlateOffsetZ); + ms.translate(story.getBasePlateOffsetX(), 0, story.getBasePlateOffsetZ()); UIRenderHelper.flipForGuiRender(ms); float flash = finishingFlash.getValue(partialTicks) * .9f; @@ -460,20 +462,20 @@ public class PonderUI extends NavigatableSimiScreen { flash = 1 - flash; for (int f = 0; f < 4; f++) { - ms.translate(story.basePlateSize, 0, 0); + ms.translate(story.getBasePlateSize(), 0, 0); ms.pushPose(); ms.translate(0, 0, -1 / 1024f); if (flash > 0) { ms.pushPose(); ms.scale(1, .5f + flash * .75f, 1); GuiUtils.drawGradientRect(ms.last() - .pose(), 0, 0, -1, -story.basePlateSize, 0, 0x00_c6ffc9, + .pose(), 0, 0, -1, -story.getBasePlateSize(), 0, 0x00_c6ffc9, new Color(0xaa_c6ffc9).scaleAlpha(alpha).getRGB()); ms.popPose(); } ms.translate(0, 0, 2 / 1024f); GuiUtils.drawGradientRect(ms.last() - .pose(), 0, 0, 0, -story.basePlateSize, 4, 0x66_000000, 0x00_000000); + .pose(), 0, 0, 0, -story.getBasePlateSize(), 4, 0x66_000000, 0x00_000000); ms.popPose(); ms.mulPose(Vector3f.YP.rotationDegrees(-90)); } @@ -680,7 +682,7 @@ public class PonderUI extends NavigatableSimiScreen { right.dim(); // Tags - List sceneTags = activeScene.tags; + List sceneTags = activeScene.getTags(); boolean highlightAll = sceneTags.contains(PonderTag.Highlight.ALL); double s = Minecraft.getInstance() .getWindow() 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 059ac689a..dec20e4b0 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -4,7 +4,6 @@ import com.jozufozu.flywheel.util.BufferBuilderReader; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Scale; import com.jozufozu.flywheel.util.transform.TStack; -import com.jozufozu.flywheel.util.transform.TransformStack; import com.jozufozu.flywheel.util.transform.Translate; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java index be678d142..2f12902c9 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.Constants.NBT; public class SidedFilteringBehaviour extends FilteringBehaviour { @@ -74,7 +74,7 @@ public class SidedFilteringBehaviour extends FilteringBehaviour { @Override public void read(CompoundTag nbt, boolean clientPacket) { - NBTHelper.iterateCompoundList(nbt.getList("Filters", NBT.TAG_COMPOUND), compound -> { + NBTHelper.iterateCompoundList(nbt.getList("Filters", Tag.TAG_COMPOUND), compound -> { Direction face = Direction.from3DDataValue(compound.getInt("Side")); if (sidedFilters.containsKey(face)) sidedFilters.get(face) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java index d11a87499..1b237343e 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; -import net.minecraftforge.common.util.Constants.NBT; +import net.minecraft.nbt.Tag; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -181,7 +181,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour { public void read(CompoundTag nbt, boolean clientPacket) { super.read(nbt, clientPacket); MutableInt index = new MutableInt(0); - NBTHelper.iterateCompoundList(nbt.getList(getType().getName() + "Tanks", NBT.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getList(getType().getName() + "Tanks", Tag.TAG_COMPOUND), c -> { if (index.intValue() >= tanks.length) return; tanks[index.intValue()].readNBT(c, clientPacket); diff --git a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java b/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java index 2b22b2fe6..9742d9b7e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.utility; -import com.simibubi.create.foundation.ponder.PonderUI; import com.simibubi.create.foundation.ponder.PonderWorld; +import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java index 6ca4cb548..3951317c2 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java @@ -15,7 +15,6 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; -import net.minecraftforge.common.util.Constants.NBT; public class NBTHelper { @@ -27,7 +26,7 @@ public class NBTHelper { T[] enumConstants = enumClass.getEnumConstants(); if (enumConstants == null) throw new IllegalArgumentException("Non-Enum class passed to readEnum: " + enumClass.getName()); - if (nbt.contains(key, NBT.TAG_STRING)) { + if (nbt.contains(key, Tag.TAG_STRING)) { String name = nbt.getString(key); for (T t : enumConstants) { if (t.name() diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java index 1ec9af8d2..acb3a6a46 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java @@ -17,7 +17,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.SpawnerBlockEntity; -import net.minecraftforge.common.util.Constants; public final class NBTProcessors { @@ -41,17 +40,17 @@ public final class NBTProcessors { return data; }); addProcessor(BlockEntityType.LECTERN, data -> { - if (!data.contains("Book", Constants.NBT.TAG_COMPOUND)) + if (!data.contains("Book", Tag.TAG_COMPOUND)) return data; CompoundTag book = data.getCompound("Book"); - if (!book.contains("tag", Constants.NBT.TAG_COMPOUND)) + if (!book.contains("tag", Tag.TAG_COMPOUND)) return data; CompoundTag tag = book.getCompound("tag"); - if (!tag.contains("pages", Constants.NBT.TAG_LIST)) + if (!tag.contains("pages", Tag.TAG_LIST)) return data; - ListTag pages = tag.getList("pages", Constants.NBT.TAG_STRING); + ListTag pages = tag.getList("pages", Tag.TAG_STRING); for (Tag inbt : pages) { if (textComponentHasClickEvent(inbt.getAsString())) diff --git a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java index 795015692..92946bc88 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java @@ -23,7 +23,6 @@ import net.minecraft.world.phys.Vec3; public class VecHelper { - public static final Vector3f ZERO_3F = new Vector3f(0, 0, 0); public static final Vec3 CENTER_OF_ORIGIN = new Vec3(.5, .5, .5); public static Vec3 rotate(Vec3 vec, Vec3 rotationVec) { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 1625480c8..83163a0a7 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -18,7 +18,7 @@ Technology that empowers the player.''' [[dependencies.create]] modId="forge" mandatory=true - versionRange="[37.0.0,)" + versionRange="[37.0.121,)" ordering="NONE" side="BOTH" diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index 63f484c4d..e5eb552f7 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -5,11 +5,10 @@ "compatibilityLevel": "JAVA_16", "refmap": "create.refmap.json", "mixins": [ - "CustomItemUseEffectsMixin", - "PlayerListMixin" + "CustomItemUseEffectsMixin" ], "client": [ - "BreakProgressMixin", + "DestroyProgressMixin", "EntityContraptionInteractionMixin", "FixNormalScalingMixin", "HeavyBootsOnPlayerMixin",