From a1b892ba600355ef65ba4f265548959f28409c9e Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 27 Jun 2022 14:34:32 +0200 Subject: [PATCH] Ponder Ponder - Train Signal Scenes - Rose Quartz Lamp - Train Controls - Train Relocation --- src/generated/resources/.cache/cache | 34 +- .../assets/create/blockstates/controls.json | 92 ++- .../resources/assets/create/lang/en_us.json | 38 +- .../assets/create/lang/unfinished/de_de.json | 40 +- .../assets/create/lang/unfinished/es_cl.json | 40 +- .../assets/create/lang/unfinished/es_es.json | 40 +- .../assets/create/lang/unfinished/fr_fr.json | 40 +- .../assets/create/lang/unfinished/it_it.json | 40 +- .../assets/create/lang/unfinished/ja_jp.json | 40 +- .../assets/create/lang/unfinished/ko_kr.json | 40 +- .../assets/create/lang/unfinished/nl_nl.json | 40 +- .../assets/create/lang/unfinished/pl_pl.json | 40 +- .../assets/create/lang/unfinished/pt_br.json | 79 ++- .../assets/create/lang/unfinished/pt_pt.json | 40 +- .../assets/create/lang/unfinished/ro_ro.json | 40 +- .../assets/create/lang/unfinished/ru_ru.json | 40 +- .../assets/create/lang/unfinished/zh_cn.json | 40 +- .../assets/create/lang/unfinished/zh_tw.json | 40 +- .../java/com/simibubi/create/AllBlocks.java | 4 +- .../steam/whistle/WhistleTileEntity.java | 5 +- .../interaction/controls/ControlsBlock.java | 8 +- .../foundation/ponder/SceneBuilder.java | 52 +- .../ponder/content/PonderIndex.java | 15 + .../ponder/content/RedstoneScenes2.java | 141 +++++ .../ponder/content/trains/TrackScenes.java | 14 +- .../ponder/content/trains/TrainScenes.java | 166 ++++++ .../content/trains/TrainSignalScenes.java | 541 ++++++++++++++++++ .../content/trains/TrainStationScenes.java | 60 +- .../ponder/instruction/LineInstruction.java | 19 +- .../models/block/controls/block_virtual.json | 95 +++ .../assets/create/ponder/rose_quartz_lamp.nbt | Bin 0 -> 638 bytes .../assets/create/ponder/train_controls.nbt | Bin 0 -> 1246 bytes .../assets/create/ponder/train_schedule.nbt | Bin 0 -> 1155 bytes .../create/ponder/train_signal/placement.nbt | Bin 0 -> 1577 bytes .../create/ponder/train_signal/redstone.nbt | Bin 0 -> 1130 bytes .../create/ponder/train_signal/signaling.nbt | Bin 0 -> 2125 bytes .../create/ponder/train_station/assembly.nbt | Bin 1985 -> 2083 bytes 37 files changed, 1804 insertions(+), 119 deletions(-) create mode 100644 src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes2.java create mode 100644 src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainScenes.java create mode 100644 src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainSignalScenes.java create mode 100644 src/main/resources/assets/create/models/block/controls/block_virtual.json create mode 100644 src/main/resources/assets/create/ponder/rose_quartz_lamp.nbt create mode 100644 src/main/resources/assets/create/ponder/train_controls.nbt create mode 100644 src/main/resources/assets/create/ponder/train_schedule.nbt create mode 100644 src/main/resources/assets/create/ponder/train_signal/placement.nbt create mode 100644 src/main/resources/assets/create/ponder/train_signal/redstone.nbt create mode 100644 src/main/resources/assets/create/ponder/train_signal/signaling.nbt diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index c4e4ec2cf..5fc30f621 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -51,7 +51,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json 36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json 7d11142092c89ccba3e74e0a3bdd0ccb446d63b5 assets/create/blockstates/controller_rail.json -641de13967ee1e2f3cc238eee4baa93b3324bb2f assets/create/blockstates/controls.json +80d71365995d4c2a61dd1c15e99cae18551af6e8 assets/create/blockstates/controls.json 961b615124ea9a5a5735e8a79f81a702de7da2cf assets/create/blockstates/copper_backtank.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json a54d18937f8ce000f7ed0dc627d6d3414805006a assets/create/blockstates/copper_ladder.json @@ -559,22 +559,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -022c884e9c43e70b4b4a5e6564f1691588aa9152 assets/create/lang/en_us.json -fa67e4b5cbd891d51c389378ac0b206992436835 assets/create/lang/unfinished/de_de.json -37eda47e7afabec68e8564ab692744a0263ea4db assets/create/lang/unfinished/es_cl.json -2bcbf43ef52cebaf0b8a35be8ae0fae574f6cc79 assets/create/lang/unfinished/es_es.json -ca213ce03cb746d7add46ae66d2dbf2603fda7e0 assets/create/lang/unfinished/fr_fr.json -3b5cba1c56bc78ef18be1b2d2145a8b91d59584d assets/create/lang/unfinished/it_it.json -bd5bffaadb12bdfaea26d17ad3aceef130aa0bb3 assets/create/lang/unfinished/ja_jp.json -40435b76d39e4252d29cafe58d508043c7f526c5 assets/create/lang/unfinished/ko_kr.json -fcbdb2a3e469d22a6cb7e626b7238ad159892204 assets/create/lang/unfinished/nl_nl.json -2e2bb8da893262df07aee6362027e227e600fd10 assets/create/lang/unfinished/pl_pl.json -983d5469ccd171b697f818bd831b6c4f8e8baf8d assets/create/lang/unfinished/pt_br.json -2bd53a9fb09b4e46b4bccdcab83d7cfb459c8f40 assets/create/lang/unfinished/pt_pt.json -9a6b0c119ac70311b38886315eef7cc4df8f469f assets/create/lang/unfinished/ro_ro.json -4ec0c881565f953d447fc235c71fa3c7c7407749 assets/create/lang/unfinished/ru_ru.json -f23bea2510950c22497b7c0700904a5d9ed88a60 assets/create/lang/unfinished/zh_cn.json -87a6f3b191e0158e7f7788b2b3b4f4391aa1f99d assets/create/lang/unfinished/zh_tw.json +e4387cb6c9c2f655780caae6695c21d4b0f7ff00 assets/create/lang/en_us.json +034ed85767e85796f1fbd24e9bc82f6efbb0ff00 assets/create/lang/unfinished/de_de.json +8cb1689cfca91a9b90b696c40c255668432f2067 assets/create/lang/unfinished/es_cl.json +8aae499911d504a1853e93a1faf3cda884cc33c3 assets/create/lang/unfinished/es_es.json +e9e5a2a515962b41deb5cdd64fdda7b88d5b02ce assets/create/lang/unfinished/fr_fr.json +d0553cb3b398b02bccc9424de4a5047d798751c9 assets/create/lang/unfinished/it_it.json +db62d0e6b3eb76e0e1de5f9172586c7c2a4983a2 assets/create/lang/unfinished/ja_jp.json +8ba5cbbcf5b87ce731b591334fa37df9f166d50c assets/create/lang/unfinished/ko_kr.json +a70fb96e62e155970756d7b6fc03b110a9f567c6 assets/create/lang/unfinished/nl_nl.json +78412fe67fe8d83d21cde2b71619bedecdd0dde1 assets/create/lang/unfinished/pl_pl.json +df49ae1125eaa7238b37b3718d3f457eb0995d68 assets/create/lang/unfinished/pt_br.json +08313ea78351409316476109c911c01b7f3cd4e0 assets/create/lang/unfinished/pt_pt.json +532b44d44f9c5936ab3685b8364110e8589f86c2 assets/create/lang/unfinished/ro_ro.json +cd21ad8384b2324dc555d9e83e1335fd3d33be26 assets/create/lang/unfinished/ru_ru.json +f25383665c84b72792df13c958324912f664ef73 assets/create/lang/unfinished/zh_cn.json +f8fd3b4be22a34130711033ed939a6bad87a5dd6 assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/blockstates/controls.json b/src/generated/resources/assets/create/blockstates/controls.json index aaa070173..6ee55b909 100644 --- a/src/generated/resources/assets/create/blockstates/controls.json +++ b/src/generated/resources/assets/create/blockstates/controls.json @@ -1,64 +1,124 @@ { "variants": { - "facing=north,open=false,waterlogged=false": { + "facing=north,open=false,virtual=false,waterlogged=false": { "model": "create:block/controls/block_closed" }, - "facing=south,open=false,waterlogged=false": { + "facing=south,open=false,virtual=false,waterlogged=false": { "model": "create:block/controls/block_closed", "y": 180 }, - "facing=west,open=false,waterlogged=false": { + "facing=west,open=false,virtual=false,waterlogged=false": { "model": "create:block/controls/block_closed", "y": 270 }, - "facing=east,open=false,waterlogged=false": { + "facing=east,open=false,virtual=false,waterlogged=false": { "model": "create:block/controls/block_closed", "y": 90 }, - "facing=north,open=true,waterlogged=false": { + "facing=north,open=true,virtual=false,waterlogged=false": { "model": "create:block/controls/block_open" }, - "facing=south,open=true,waterlogged=false": { + "facing=south,open=true,virtual=false,waterlogged=false": { "model": "create:block/controls/block_open", "y": 180 }, - "facing=west,open=true,waterlogged=false": { + "facing=west,open=true,virtual=false,waterlogged=false": { "model": "create:block/controls/block_open", "y": 270 }, - "facing=east,open=true,waterlogged=false": { + "facing=east,open=true,virtual=false,waterlogged=false": { "model": "create:block/controls/block_open", "y": 90 }, - "facing=north,open=false,waterlogged=true": { + "facing=north,open=false,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual" + }, + "facing=south,open=false,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 180 + }, + "facing=west,open=false,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 270 + }, + "facing=east,open=false,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 90 + }, + "facing=north,open=true,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual" + }, + "facing=south,open=true,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 180 + }, + "facing=west,open=true,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 270 + }, + "facing=east,open=true,virtual=true,waterlogged=false": { + "model": "create:block/controls/block_virtual", + "y": 90 + }, + "facing=north,open=false,virtual=false,waterlogged=true": { "model": "create:block/controls/block_closed" }, - "facing=south,open=false,waterlogged=true": { + "facing=south,open=false,virtual=false,waterlogged=true": { "model": "create:block/controls/block_closed", "y": 180 }, - "facing=west,open=false,waterlogged=true": { + "facing=west,open=false,virtual=false,waterlogged=true": { "model": "create:block/controls/block_closed", "y": 270 }, - "facing=east,open=false,waterlogged=true": { + "facing=east,open=false,virtual=false,waterlogged=true": { "model": "create:block/controls/block_closed", "y": 90 }, - "facing=north,open=true,waterlogged=true": { + "facing=north,open=true,virtual=false,waterlogged=true": { "model": "create:block/controls/block_open" }, - "facing=south,open=true,waterlogged=true": { + "facing=south,open=true,virtual=false,waterlogged=true": { "model": "create:block/controls/block_open", "y": 180 }, - "facing=west,open=true,waterlogged=true": { + "facing=west,open=true,virtual=false,waterlogged=true": { "model": "create:block/controls/block_open", "y": 270 }, - "facing=east,open=true,waterlogged=true": { + "facing=east,open=true,virtual=false,waterlogged=true": { "model": "create:block/controls/block_open", "y": 90 + }, + "facing=north,open=false,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual" + }, + "facing=south,open=false,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 180 + }, + "facing=west,open=false,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 270 + }, + "facing=east,open=false,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 90 + }, + "facing=north,open=true,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual" + }, + "facing=south,open=true,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 180 + }, + "facing=west,open=true,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 270 + }, + "facing=east,open=true,virtual=true,waterlogged=true": { + "model": "create:block/controls/block_virtual", + "y": 90 } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 3734d7c69..3de7ce26b 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -2121,6 +2121,7 @@ "create.ponder.assembly.text_1": "Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "During Assembly no scheduled trains will approach this station", @@ -2252,7 +2253,7 @@ "create.ponder.chunks.text_2": "Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "They will still stop at stations or red signals", "create.ponder.chunks.text_4": "However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "Once near a Player, the train will re-appear", "create.ponder.chute.header": "Transporting Items downward via Chutes", "create.ponder.chute.text_1": "Chutes can transport items vertically from and to inventories", @@ -2761,6 +2762,10 @@ "create.ponder.radial_chassis.text_8": "Using a Wrench, a precise Radius can be specified for this chassis", "create.ponder.radial_chassis.text_9": "Blocks not reachable by any sticky face will not attach", + "create.ponder.redstone.header": "Signals & Redstone", + "create.ponder.redstone.text_1": "Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "Redstone Contacts", "create.ponder.redstone_contact.text_1": "Redstone Contacts facing each other will emit a redstone signal", "create.ponder.redstone_contact.text_2": "This still applies when one of them is part of a moving Contraption", @@ -2786,6 +2791,14 @@ "create.ponder.rope_pulley_modes.text_1": "Whenever Pulleys stop moving, the moved structure reverts to blocks", "create.ponder.rope_pulley_modes.text_2": "It can be configured never to revert to solid blocks, or only at the location it started at", + "create.ponder.rose_quartz_lamp.header": "Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "Using the Rotational Speed Controller", "create.ponder.rotation_speed_controller.text_1": "Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", "create.ponder.rotation_speed_controller.text_2": "Using the scroll input on its side, the conveyed speed can be configured", @@ -2813,6 +2826,17 @@ "create.ponder.shaft_casing.header": "Encasing Shafts", "create.ponder.shaft_casing.text_1": "Brass or Andesite Casing can be used to decorate Shafts", + "create.ponder.signaling.header": "Collision Prevention with Signals", + "create.ponder.signaling.text_1": "Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "Filtering Items using Smart Chutes", "create.ponder.smart_chute.text_1": "Smart Chutes are vertical chutes with additional control", "create.ponder.smart_chute.text_2": "Items in the filter slot specify what exactly they can extract and transfer", @@ -2862,6 +2886,18 @@ "create.ponder.super_glue.text_4": "...added blocks will be glued to the face they were placed on automatically", "create.ponder.super_glue.text_5": "Super Glue can be removed with Left-Click", + "create.ponder.train_controls.header": "Controlling Trains", + "create.ponder.train_controls.text_1": "Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "Using Train Schedules", + "create.ponder.valve_handle.header": "Generating Rotational Force using Valve Handles", "create.ponder.valve_handle.text_1": "Valve Handles can be used by players to apply rotational force manually", "create.ponder.valve_handle.text_2": "Hold Right-Click to rotate it Counter-Clockwise", 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 8e1174e9f..d092bbcd7 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: 1239", + "_": "Missing Localizations: 1270", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 218107b20..f8fbc4c26 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 889", + "_": "Missing Localizations: 920", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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.", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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.", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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.", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", 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 533619c42..438f3c1be 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: 553", + "_": "Missing Localizations: 584", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "Transportar objetos hacia abajo a través de ductos", "create.ponder.chute.text_1": "Los ductos pueden transportar objetos verticalmente desde y hacia los inventarios", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "Con una llave inglesa y usando la rueda de desplazamiento del ratón se puede especificar un radio preciso", "create.ponder.radial_chassis.text_9": "Los bloques no alcanzables por ninguna cara adhesiva no se fijarán", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "Contactos de redstone", "create.ponder.redstone_contact.text_1": "Los contactos de redstone enfrentados emitirán una señal de redstone", "create.ponder.redstone_contact.text_2": "Esto sigue siendo válido cuando uno de ellos forma parte de un artefacto en movimiento", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "Cuando las poleas de cuerda dejan de moverse, la estructura movida vuelve a los bloques", "create.ponder.rope_pulley_modes.text_2": "Puede configurarse para que no vuelva nunca a los bloques sólidos, o sólo en la ubicación en la que comenzó", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "Usar el controlador de velocidad rotacional", "create.ponder.rotation_speed_controller.text_1": "Los controladores de velocidad rotacional transmiten la rotación de su eje a un engranaje grande situado encima.", "create.ponder.rotation_speed_controller.text_2": "Utilizando la rueda de desplazamiento del ratón, puede configurarse la velocidad rotacional", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "Ejes revestidos", "create.ponder.shaft_casing.text_1": "Puedes utilizar el revestidor de latón o de andesita para decorar tus ejes", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "Filtrar objetos mediante ductos inteligentes", "create.ponder.smart_chute.text_1": "Los ductos inteligentes son ductos verticales con control adicional", "create.ponder.smart_chute.text_2": "Los objetos en la ranura para filtros especifican lo que pueden extraer y transferir exactamente", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...los bloques añadidos se pegarán a la cara en la que fueron colocados automáticamente", "create.ponder.super_glue.text_5": "El pegamento se puede quitar con un clic izquierdo", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "Generar fuerza rotacional mediante asas de válvula", "create.ponder.valve_handle.text_1": "Los jugadores pueden utilizar las asas de válvulas para aplicar fuerza rotacional manualmente", "create.ponder.valve_handle.text_2": "Mantén pulsado el clic derecho para rotar en sentido contrario a las agujas del reloj", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 3be36fb70..93363766f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2041", + "_": "Missing Localizations: 2072", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index a9fc11c81..e63d2e33d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1812", + "_": "Missing Localizations: 1843", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", 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 f63cf6164..50a2b1a49 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: 555", + "_": "Missing Localizations: 586", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "シュートでの下方向へ運搬", "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "レンチを使って、シャーシの範囲の半径を正確に指定できます", "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックはくっつきません", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "レッドストーンコンタクト", "create.ponder.redstone_contact.text_1": "向かい合ったレッドストーンコンタクトは、レッドストーン信号を出力します", "create.ponder.redstone_contact.text_2": "これは、片方のコンタクトがからくりの一部である場合でも同様です", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定したりできます", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", "create.ponder.rotation_speed_controller.text_2": "側面のパネルを見ながらスクロールすると、伝達する回転速度を調整できます", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "ケース入りシャフト", "create.ponder.shaft_casing.text_1": "真鍮製、安山岩製ケーシングを使って、シャフトを装飾できます", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "スマートシュートによるアイテムのフィルタリング", "create.ponder.smart_chute.text_1": "スマートシュートは、垂直方向のシュートにフィルター機能を追加したものです", "create.ponder.smart_chute.text_2": "フィルタースロットを使って、何を搬出入するかを設定できます", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "バルブハンドルによる回転力の生成", "create.ponder.valve_handle.text_1": "バルブハンドルは手動で回転力を生み出す原動機です", "create.ponder.valve_handle.text_2": "右クリックし続けると、反時計回りに回転します", 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 42416bd5b..b8c05284d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 555", + "_": "Missing Localizations: 586", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "슈트를 이용해 아이템을 아래로 옮기기", "create.ponder.chute.text_1": "슈트는 보관함에 있는 아이템을 수직으로 옮깁니다.", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "렌치룰 이용하여, 섀시의 부착 반지름을 조절할 수 있습니다.", "create.ponder.radial_chassis.text_9": "접착면 반지름 밖의 블록은 붙지 않습니다.", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "동형 감지기", "create.ponder.redstone_contact.text_1": "서로 마주보는 동형 감지기는 레드스톤 신호를 발생시킵니다.", "create.ponder.redstone_contact.text_2": "어느 한쪽이 움직이는 장치의 일부라도 동일하게 작동합니다.", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "도르래가 움직임을 멈추면, 움직인 구조물은 블록으로 바뀝니다.", "create.ponder.rope_pulley_modes.text_2": "블록으로 바뀌지 않게 하거나, 시작지점에서만 바뀌도록 설정할 수 있습니다.", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "회전 속도 컨트롤러 사용하기", "create.ponder.rotation_speed_controller.text_1": "회전 속도 컨트롤러는 회전을 위 톱니바퀴로 회전을 전달합니다.", "create.ponder.rotation_speed_controller.text_2": "스크롤하여 톱니바퀴에 전달되는 RPM을 조절합니다.", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "축에 케이스 씌우기", "create.ponder.shaft_casing.text_1": "황동 케이스나 안산암 케이스로 축을 장식할 수 있습니다.", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "스마트 슈트을 통한 아이템 필터", "create.ponder.smart_chute.text_1": "스마트 슈트은 필터 기능이 있는 슈트입니다.", "create.ponder.smart_chute.text_2": "필터 슬롯으로 아이템을 지정하여 원하는 아이템을 입출력할 수 있습니다.", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...블록을 설치하면 자동으로 블록을 붙일 수 있습니다.", "create.ponder.super_glue.text_5": "왼쪽 버튼을 누르면 강력 접착제를 제거할 수 있습니다.", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "밸브 손잡이로 동력 생산하기", "create.ponder.valve_handle.text_1": "밸브 손잡이를 사용하면 수동으로 동력을 생성할 수 있습니다.", "create.ponder.valve_handle.text_2": "오클릭하면 반시계 방향으로 회전합니다.", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index c7b20b7cf..f52042a56 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2389", + "_": "Missing Localizations: 2420", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index ca9fdd2b2..9c5093981 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 928", + "_": "Missing Localizations: 959", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "Transport przedmiotów w dół z użyciem zsypów", "create.ponder.chute.text_1": "Zsypy mogą transportować przedmioty pionowo z- i do pojemników", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", "create.ponder.radial_chassis.text_9": "Bloki, które nie są w żaden sposób połączone z lepką stroną stelaża nie będą przesuwane", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "Przełącznik kontaktowy", "create.ponder.redstone_contact.text_1": "Przełączniki kontaktowe skierowane w swoją stronę będą emitować sygnał Redstone", "create.ponder.redstone_contact.text_2": "Działa to też w momencie, kiedy jeden z nich jest częścią ruchomej maszyny", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "Kiedy krążek przestaje się obracać, przyczepiona do niego struktura staje się z powrotem blokami", "create.ponder.rope_pulley_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "Używanie sterownika prędkości obrotu", "create.ponder.rotation_speed_controller.text_1": "Sterownik prędkości obrotu może przekazywać siłę obrotową z jego osi do dużego koła zębatego ponad nim", "create.ponder.rotation_speed_controller.text_2": "Patrząc się na jego bok i przewijając można dostosować wyjściową prędkość", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "Izolowanie wałów", "create.ponder.shaft_casing.text_1": "Mosiężna lub andezytowa obudowa może być użyta do udekorowania wałów", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "Sortowanie przedmiotów z użyciem inteligentnych zsypów", "create.ponder.smart_chute.text_1": "Inteligentny zsyp to pionowy zsyp z dodatkową kontrolą", "create.ponder.smart_chute.text_2": "Poprzez slot filtrujący można zdecydować, które przedmioty mogą być transportowane", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...stawiane bloki będą automatycznie przyklejane", "create.ponder.super_glue.text_5": "Super Glue może zostać usunięty lewym kliknięciem", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "Generowanie siły obrotowej z użyciem pokręteł", "create.ponder.valve_handle.text_1": "Pokrętła mogą być użyte, aby ręcznie wytworzyć siłę obrotową bezpośrednio w miejscu postawienia", "create.ponder.valve_handle.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", 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 9d88c8d28..f852ff701 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1386", + "_": "Missing Localizations: 1453", "_": "->------------------------] Game Elements [------------------------<-", @@ -2004,6 +2004,13 @@ "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.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", + "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", + "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", + "block.create.placard.tooltip.behaviour1": "UNLOCALIZED: _Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.", + "block.create.placard.tooltip.condition2": "UNLOCALIZED: When Punched", + "block.create.placard.tooltip.behaviour2": "UNLOCALIZED: _Removes_ the current _item_ in the frame.", + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", "block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.", "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", @@ -2050,6 +2057,7 @@ "create.ponder.close": "UNLOCALIZED: Close", "create.ponder.identify": "UNLOCALIZED: Identify", "create.ponder.next": "UNLOCALIZED: Next Scene", + "create.ponder.next_up": "UNLOCALIZED: Next up:", "create.ponder.previous": "UNLOCALIZED: Previous Scene", "create.ponder.replay": "UNLOCALIZED: Replay", "create.ponder.think_back": "UNLOCALIZED: Think Back", @@ -2110,6 +2118,28 @@ "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.assembly.header": "UNLOCALIZED: Assembling Trains", + "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", + "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", + "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", + "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", + "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", + "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", + "create.ponder.assembly.text_5": "UNLOCALIZED: Create new bogeys by using Train Casing on Tracks", + "create.ponder.assembly.text_6": "UNLOCALIZED: Click the track again to cycle between bogey designs", + "create.ponder.assembly.text_7": "UNLOCALIZED: Next, attach blocks to them with the help of chassis or super glue", + "create.ponder.assembly.text_8": "UNLOCALIZED: Every Train requires Train Controls on board", + "create.ponder.assembly.text_9": "UNLOCALIZED: An optional second one allows departure from Stations in both directions", + + "create.ponder.auto_schedule.header": "UNLOCALIZED: Stations & Scheduling", + "create.ponder.auto_schedule.text_1": "UNLOCALIZED: Schedules can be used to provide drivers with a destination", + "create.ponder.auto_schedule.text_2": "UNLOCALIZED: Comparators will receive a signal whenever a Train is present", + "create.ponder.auto_schedule.text_3": "UNLOCALIZED: Mind that a Station can only be approached from the indicated direction", + "create.ponder.auto_schedule.text_4": "UNLOCALIZED: Stations can also be used to assign new Schedules automatically", + "create.ponder.auto_schedule.text_5": "UNLOCALIZED: The Schedule placed on a station will automatically copy itself to present trains", + "create.ponder.auto_schedule.text_6": "UNLOCALIZED: As opposed to manual scheduling, drivers will not take the item with them", + "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", @@ -2219,6 +2249,13 @@ "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.chunks.header": "UNLOCALIZED: Traversing unloaded Chunks", + "create.ponder.chunks.text_1": "UNLOCALIZED: Tracks stay functional outside of loaded chunks", + "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", + "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", + "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", + "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", @@ -2644,6 +2681,11 @@ "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.observe.header": "UNLOCALIZED: Detecting Trains", + "create.ponder.observe.text_1": "UNLOCALIZED: Select a Train Track then place the Observer nearby", + "create.ponder.observe.text_2": "UNLOCALIZED: The Observer will detect any Trains passing over the marker", + "create.ponder.observe.text_3": "UNLOCALIZED: Observers can be filtered to activate for matching cargo", + "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", @@ -2721,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2746,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2773,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2822,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index cfea9d346..b550c766c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2098", + "_": "Missing Localizations: 2129", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "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", @@ -2762,6 +2763,10 @@ "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.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "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", @@ -2787,6 +2792,14 @@ "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.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "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", @@ -2814,6 +2827,17 @@ "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.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "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", @@ -2863,6 +2887,18 @@ "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.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "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", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index ff764538e..9b810974e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 556", + "_": "Missing Localizations: 587", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "Transportarea Obiectelor în jos prin Tobogane", "create.ponder.chute.text_1": "Toboganele pot transporta obiecte vertical către și de la inventare", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "Folosind o Cheie, o Rază prrecisă poate fi specificată pentru acest șasiu", "create.ponder.radial_chassis.text_9": "Blocurile inaccesibile de către de oricare față lipicioasă nu se va atașa", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "Contacte Redstone", "create.ponder.redstone_contact.text_1": "Contactele Redstone față în față vor emite un semnal redstone", "create.ponder.redstone_contact.text_2": "Acest lucru încă se aplică atunci când una dintre ele este o parte dintr-o Invenție mișcătoare", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "Oricând Scripetele se opresc din mișcare, structura mutată revine la blocuri", "create.ponder.rope_pulley_modes.text_2": "Poate fi configurat să nu revină la blocuri solide niciodată, sau doar la locația de unde a început", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "Folosirea Controlorului De Viteză De Rotație", "create.ponder.rotation_speed_controller.text_1": "Controlorii De Viteză De Rotație transmit rotație din axa lor către o Roată Dințată Mare deasupra lor", "create.ponder.rotation_speed_controller.text_2": "Folosind intrarea de delurare pe fața lui, viteza transmisă poate fi configurată", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "Încapsularea Rotoarelor", "create.ponder.shaft_casing.text_1": "Carcasele de Alamă sau de Andezit pot fi folosite pentru a decora Rotoare", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "Filtrarea Obiectelor folosind Tobogane Inteligente", "create.ponder.smart_chute.text_1": "Toboganele Inteligente sunt tobogane verticale cu control adițional", "create.ponder.smart_chute.text_2": "Obiectele în slotul de filtru specifică exact pe pot extracta și transfera", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...blocurile adăugate vor fi lipite cu fața cu care au fost plasate automat", "create.ponder.super_glue.text_5": "Super Glue-ul poate fi îndepărtat cu Click-Stânga", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "Generarea Forței De Rotație folosind Mânere De Supapă", "create.ponder.valve_handle.text_1": "Mânerele De Supapă pot fi folosite de jucători pentru a aplica forță de rotație manual", "create.ponder.valve_handle.text_2": "Ține apăsat Click-Dreapta pentru a o roti În Sensul Invers Acelor De Ceasornic", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index b16e87ac6..24aa6aad9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 933", + "_": "Missing Localizations: 964", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "Транспортировке предметов вниз через Желоба", "create.ponder.chute.text_1": "Желоба могут транспортировать предметы вертикально из и в инвентари", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "При помощи ключа можно указать точный радиус для этого шасси", "create.ponder.radial_chassis.text_9": "Блоки не достижимые ни одной липкой гранью не прикрепятся", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "Контактах редстоун сигнала", "create.ponder.redstone_contact.text_1": "Контакты редстоун сигнала направленные друг на друга будут излучать редстоун сигнал", "create.ponder.redstone_contact.text_2": "Также применимо, когда один из них - часть двигающейся штуковины", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "Когда лебёдка останавливается, сдвинутая структура обратно становится блоками", "create.ponder.rope_pulley_modes.text_2": "Можно настроить её так, чтобы структура никогда не становилась блоками или только на начальной позиции", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "Использовании Регулятора скорости вращения", "create.ponder.rotation_speed_controller.text_1": "Регуляторы ск. вращения передают вращение от своих осей на Большую шестерню выше них", "create.ponder.rotation_speed_controller.text_2": "Можно настроить передаваемую скорость при помощи прокрутки по соответствующему месту сбоку", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "Обрамлении Валов", "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для декорации Валов", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "Фильтрации предметов при помощи Умных желобов", "create.ponder.smart_chute.text_1": "Умные желоба - вертикальные желоба с дополнительным контролем", "create.ponder.smart_chute.text_2": "Предметы в слоте фильтра уточняют, что они могут забирать и передавать", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...добавленные блоки будут сразу приклеены к грани, на которую они были поставлены", "create.ponder.super_glue.text_5": "Супер-клей можно удалить левым кликом", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "Генерации силы вращения при помощи Вентилей", "create.ponder.valve_handle.text_1": "Игроки могут использовать вентили для применения силы вращения вручную", "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения его против Часовой стрелки", 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 335fb5c65..baa37eed9 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: 553", + "_": "Missing Localizations: 584", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "使用溜槽向下运输物品", "create.ponder.chute.text_1": "溜槽可在两个容器之间垂直传输物品", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "使用扳手可以精确指定底盘的影响半径", "create.ponder.radial_chassis.text_9": "任何黏性面都不可到达的方块不会被黏着", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "接触式红石信号发生器", "create.ponder.redstone_contact.text_1": "当两个接触式红石信号发生器面对面时,它们会发出红石信号", "create.ponder.redstone_contact.text_2": "并且,若有一方位于运动装置上,此特性也能正常生效", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "当绳索滑轮停止运动时,它所附着的移动结构便会方块化", "create.ponder.rope_pulley_modes.text_2": "你可以调整使整个结构永不方块化,或者仅在结构的初始位置方块化", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "使用转速控制器", "create.ponder.rotation_speed_controller.text_1": "转速控制器将旋转力从其转轴传递至它上方的大齿轮", "create.ponder.rotation_speed_controller.text_2": "在其侧面滚动鼠标滚轮,可以调节输出转速", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "装壳传动杆", "create.ponder.shaft_casing.text_1": "安山或黄铜机壳,装饰传动杆的好伙伴", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "使用智能溜槽过滤物品", "create.ponder.smart_chute.text_1": "智能溜槽是垂直溜槽的升级控制版", "create.ponder.smart_chute.text_2": "当在其过滤槽内指定了物品后,溜槽只会传输这一指定标记的物品", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "……新放置的方块会自动被黏附在所放置方块的面上", "create.ponder.super_glue.text_5": "左击可以清除强力胶", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "使用阀门手轮产生旋转力", "create.ponder.valve_handle.text_1": "玩家可以手动使用阀门手轮来产生旋转力", "create.ponder.valve_handle.text_2": "右击可使它逆时针旋转", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 335a6ba1a..dfdd3285d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 947", + "_": "Missing Localizations: 978", "_": "->------------------------] Game Elements [------------------------<-", @@ -2122,6 +2122,7 @@ "create.ponder.assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", "create.ponder.assembly.text_10": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", "create.ponder.assembly.text_11": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.assembly.text_12": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", "create.ponder.assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", "create.ponder.assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", "create.ponder.assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", @@ -2253,7 +2254,7 @@ "create.ponder.chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", "create.ponder.chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", "create.ponder.chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will visually re-appear", + "create.ponder.chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", "create.ponder.chute.header": "使用滑道向下輸送物品", "create.ponder.chute.text_1": "滑道可以在兩個垂直的儲物空間中輸送物品", @@ -2762,6 +2763,10 @@ "create.ponder.radial_chassis.text_8": "使用扳手可以精確指定底盤的影響範圍", "create.ponder.radial_chassis.text_9": "黏性面一側的不可及方塊不會被黏著", + "create.ponder.redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.redstone_contact.header": "接觸式紅石訊號發生器", "create.ponder.redstone_contact.text_1": "當兩個接觸式紅石訊號發生器面對面時,它們會發出紅石訊號", "create.ponder.redstone_contact.text_2": "並且,若有一方位於運動裝置上,此特性也能正常生效", @@ -2787,6 +2792,14 @@ "create.ponder.rope_pulley_modes.text_1": "當繩索滑輪停止運動時,它所附屬的移動結構便會方塊化", "create.ponder.rope_pulley_modes.text_2": "你可以調整整個結構永不方塊化,或者僅在結構的初始位置方塊化", + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rotation_speed_controller.header": "使用轉速控制器", "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳遞至它上方的大齒輪", "create.ponder.rotation_speed_controller.text_2": "在其側面滾動滑鼠滾輪,可以調節輸出轉速", @@ -2814,6 +2827,17 @@ "create.ponder.shaft_casing.header": "包裹傳動軸", "create.ponder.shaft_casing.text_1": "黃銅及安山岩機殼可以用來裝飾傳動軸", + "create.ponder.signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.smart_chute.header": "使用智慧滑道來過濾物品", "create.ponder.smart_chute.text_1": "智慧滑道是一種可以被控制的滑道", "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,溜槽只會傳輸這一指定標記的物品", @@ -2863,6 +2887,18 @@ "create.ponder.super_glue.text_4": "...新放置的方塊會自動被黏附在所放置方塊的面上", "create.ponder.super_glue.text_5": "左擊可以清除強力膠", + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.valve_handle.header": "使用閥門手輪產生動能", "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪來產生動能", "create.ponder.valve_handle.text_2": "右擊可使它逆時針旋轉", diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index bea9ac92f..2d32be9f3 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1581,9 +1581,11 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) + .addLayer(() -> RenderType::cutoutMipped) .transform(pickaxeOnly()) .blockstate((c, p) -> p.horizontalBlock(c.get(), - s -> AssetLookup.partialBaseModel(c, p, s.getValue(ControlsBlock.OPEN) ? "open" : "closed"))) + s -> AssetLookup.partialBaseModel(c, p, + s.getValue(ControlsBlock.VIRTUAL) ? "virtual" : s.getValue(ControlsBlock.OPEN) ? "open" : "closed"))) .onRegister(addMovementBehaviour(new ControlsMovementBehaviour())) .onRegister(addInteractionBehaviour(new ControlsInteractionBehaviour())) .lang("Train Controls") diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java index b5304092a..2592650dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java @@ -85,8 +85,9 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf } FluidTankTileEntity tank = getTank(); - boolean powered = isPowered() && tank != null && tank.boiler.isActive() - && (tank.boiler.passiveHeat || tank.boiler.activeHeat > 0); + boolean powered = isPowered() + && (tank != null && tank.boiler.isActive() && (tank.boiler.passiveHeat || tank.boiler.activeHeat > 0) + || isVirtual()); animation.chase(powered ? 1 : 0, powered ? .5f : .4f, powered ? Chaser.EXP : Chaser.LINEAR); animation.tickChaser(); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.tickAudio(getOctave(), powered)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsBlock.java index 80f2e3468..9eae0dba5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/ControlsBlock.java @@ -23,16 +23,18 @@ import net.minecraft.world.phys.shapes.VoxelShape; public class ControlsBlock extends HorizontalDirectionalBlock implements IWrenchable, ProperWaterloggedBlock { public static final BooleanProperty OPEN = BooleanProperty.create("open"); + public static final BooleanProperty VIRTUAL = BooleanProperty.create("virtual"); public ControlsBlock(Properties p_54120_) { super(p_54120_); registerDefaultState(defaultBlockState().setValue(OPEN, false) - .setValue(WATERLOGGED, false)); + .setValue(WATERLOGGED, false) + .setValue(VIRTUAL, false)); } @Override protected void createBlockStateDefinition(Builder pBuilder) { - super.createBlockStateDefinition(pBuilder.add(FACING, OPEN, WATERLOGGED)); + super.createBlockStateDefinition(pBuilder.add(FACING, OPEN, WATERLOGGED, VIRTUAL)); } @Override @@ -41,7 +43,7 @@ public class ControlsBlock extends HorizontalDirectionalBlock implements IWrench updateWater(pLevel, pState, pCurrentPos); return pState.setValue(OPEN, pLevel instanceof ContraptionWorld); } - + @Override public FluidState getFluidState(BlockState pState) { return fluidState(pState); 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 889603f81..d8498c292 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java @@ -14,12 +14,16 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; +import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsBlock; import com.simibubi.create.content.contraptions.fluids.PumpTileEntity; import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; 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.content.logistics.trains.management.edgePoint.signal.SignalTileEntity; +import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState; +import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.foundation.ponder.element.AnimatedSceneElement; import com.simibubi.create.foundation.ponder.element.BeltItemElement; import com.simibubi.create.foundation.ponder.element.EntityElement; @@ -165,7 +169,8 @@ public class SceneBuilder { * Use this in case you are not happy with the scale of the scene relative to * the overlay * - * @param factor {@literal >}1 will make the scene appear larger, smaller otherwise + * @param factor {@literal >}1 will make the scene appear larger, smaller + * otherwise */ public void scaleSceneView(float factor) { scene.scaleFactor = factor; @@ -186,10 +191,9 @@ public class SceneBuilder { * of the schematic's structure. Makes for a nice opener */ public void showBasePlate() { - world.showSection( - scene.getSceneBuildingUtil().select.cuboid(new BlockPos(scene.getBasePlateOffsetX(), 0, scene.getBasePlateOffsetZ()), - new Vec3i(scene.getBasePlateSize() - 1, 0, scene.getBasePlateSize() - 1)), - Direction.UP); + world.showSection(scene.getSceneBuildingUtil().select.cuboid( + new BlockPos(scene.getBasePlateOffsetX(), 0, scene.getBasePlateOffsetZ()), + new Vec3i(scene.getBasePlateSize() - 1, 0, scene.getBasePlateSize() - 1)), Direction.UP); } /** @@ -282,8 +286,10 @@ public class SceneBuilder { private void rotationIndicator(BlockPos pos, boolean direction) { addInstruction(scene -> { - BlockState blockState = scene.getWorld().getBlockState(pos); - BlockEntity tileEntity = scene.getWorld().getBlockEntity(pos); + BlockState blockState = scene.getWorld() + .getBlockState(pos); + BlockEntity tileEntity = scene.getWorld() + .getBlockEntity(pos); if (!(blockState.getBlock() instanceof KineticBlock)) return; @@ -306,7 +312,8 @@ public class SceneBuilder { .charAt(0)); for (int i = 0; i < 20; i++) - scene.getWorld().addParticle(particleData, location.x, location.y, location.z, 0, 0, 0); + scene.getWorld() + .addParticle(particleData, location.x, location.y, location.z, 0, 0, 0); }); } @@ -328,8 +335,8 @@ public class SceneBuilder { public void createRedstoneParticles(BlockPos pos, int color, int amount) { Vector3f rgb = new Color(color).asVectorF(); - addInstruction(new EmitParticlesInstruction(VecHelper.getCenterOf(pos), Emitter.withinBlockSpace( - new DustParticleOptions(rgb, 1), Vec3.ZERO), amount, 2)); + addInstruction(new EmitParticlesInstruction(VecHelper.getCenterOf(pos), + Emitter.withinBlockSpace(new DustParticleOptions(rgb, 1), Vec3.ZERO), amount, 2)); } } @@ -387,7 +394,7 @@ public class SceneBuilder { addInstruction(new LineInstruction(color, start, end, duration, false)); } - public void chaseLine(PonderPalette color, Vec3 start, Vec3 end, int duration) { + public void showBigLine(PonderPalette color, Vec3 start, Vec3 end, int duration) { addInstruction(new LineInstruction(color, start, end, duration, true)); } @@ -431,8 +438,7 @@ public class SceneBuilder { public void rotateParrot(ElementLink link, double xRotation, double yRotation, double zRotation, int duration) { - addInstruction( - AnimateParrotInstruction.rotate(link, new Vec3(xRotation, yRotation, zRotation), duration)); + addInstruction(AnimateParrotInstruction.rotate(link, new Vec3(xRotation, yRotation, zRotation), duration)); } public void moveParrot(ElementLink link, Vec3 offset, int duration) { @@ -529,7 +535,8 @@ public class SceneBuilder { } public void restoreBlocks(Selection selection) { - addInstruction(scene -> scene.getWorld().restoreBlocks(selection)); + addInstruction(scene -> scene.getWorld() + .restoreBlocks(selection)); } public ElementLink makeSectionIndependent(Selection selection) { @@ -775,7 +782,8 @@ public class SceneBuilder { public void modifyTileEntity(BlockPos position, Class teType, Consumer consumer) { addInstruction(scene -> { - BlockEntity tileEntity = scene.getWorld().getBlockEntity(position); + BlockEntity tileEntity = scene.getWorld() + .getBlockEntity(position); if (teType.isInstance(tileEntity)) consumer.accept(teType.cast(tileEntity)); }); @@ -814,6 +822,20 @@ public class SceneBuilder { }); } + public void toggleControls(BlockPos position) { + cycleBlockProperty(position, ControlsBlock.VIRTUAL); + } + + public void animateTrainStation(BlockPos position, boolean trainPresent) { + modifyTileNBT(scene.getSceneBuildingUtil().select.position(position), StationTileEntity.class, + c -> c.putBoolean("ForceFlag", trainPresent)); + } + + public void changeSignalState(BlockPos position, SignalState state) { + modifyTileNBT(scene.getSceneBuildingUtil().select.position(position), SignalTileEntity.class, + c -> NBTHelper.writeEnum(c, "State", state)); + } + } public class DebugInstructions { 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 ce3e3507c..42d08396e 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 @@ -16,6 +16,8 @@ import com.simibubi.create.foundation.ponder.content.fluid.PumpScenes; import com.simibubi.create.foundation.ponder.content.fluid.SpoutScenes; import com.simibubi.create.foundation.ponder.content.trains.TrackObserverScenes; import com.simibubi.create.foundation.ponder.content.trains.TrackScenes; +import com.simibubi.create.foundation.ponder.content.trains.TrainScenes; +import com.simibubi.create.foundation.ponder.content.trains.TrainSignalScenes; import com.simibubi.create.foundation.ponder.content.trains.TrainStationScenes; import net.minecraft.world.item.DyeColor; @@ -296,6 +298,8 @@ public class PonderIndex { .addStoryBoard("nixie_tube", RedstoneScenes::nixieTube); HELPER.forComponents(AllBlocks.REDSTONE_LINK) .addStoryBoard("redstone_link", RedstoneScenes::redstoneLink); + HELPER.forComponents(AllBlocks.ROSE_QUARTZ_LAMP) + .addStoryBoard("rose_quartz_lamp", RedstoneScenes2::roseQuartzLamp); // Trains HELPER.forComponents(AllBlocks.TRACK) @@ -307,6 +311,17 @@ public class PonderIndex { .addStoryBoard("train_station/assembly", TrainStationScenes::assembly) .addStoryBoard("train_station/schedule", TrainStationScenes::autoSchedule); + HELPER.forComponents(AllBlocks.TRACK_SIGNAL) + .addStoryBoard("train_signal/placement", TrainSignalScenes::placement) + .addStoryBoard("train_signal/signaling", TrainSignalScenes::signaling) + .addStoryBoard("train_signal/redstone", TrainSignalScenes::redstone); + + HELPER.forComponents(AllItems.SCHEDULE) + .addStoryBoard("train_schedule", TrainScenes::schedule); + + HELPER.forComponents(AllBlocks.CONTROLS) + .addStoryBoard("train_controls", TrainScenes::controls); + HELPER.forComponents(AllBlocks.TRACK_OBSERVER) .addStoryBoard("train_observer", TrackObserverScenes::observe); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes2.java b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes2.java new file mode 100644 index 000000000..fc79d5297 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes2.java @@ -0,0 +1,141 @@ +package com.simibubi.create.foundation.ponder.content; + +import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; +import com.simibubi.create.content.logistics.block.redstone.RoseQuartzLampBlock; +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.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Pointing; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; + +public class RedstoneScenes2 { + + public static void roseQuartzLamp(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("rose_quartz_lamp", "Rose Quartz Lamps"); + scene.configureBasePlate(0, 0, 7); + + BlockPos centerLamp = util.grid.at(3, 1, 3); + Selection input = util.select.fromTo(3, 1, 1, 3, 1, 2); + Selection button = util.select.position(3, 1, 1); + Selection wire = util.select.position(3, 1, 2); + Selection output = util.select.fromTo(5, 1, 2, 5, 1, 1); + Selection comparator = util.select.fromTo(1, 1, 3, 0, 1, 3); + + scene.showBasePlate(); + scene.idle(15); + + ElementLink rowElement = + scene.world.showIndependentSection(util.select.position(centerLamp), Direction.DOWN); + scene.idle(5); + scene.world.showSection(input, Direction.SOUTH); + scene.idle(15); + + scene.world.toggleRedstonePower(input); + scene.effects.indicateRedstone(util.grid.at(3, 1, 1)); + scene.world.cycleBlockProperty(centerLamp, RoseQuartzLampBlock.POWERING); + scene.idle(15); + + scene.overlay.showText(70) + .pointAt(util.vector.blockSurface(centerLamp, Direction.WEST)) + .placeNearTarget() + .attachKeyFrame() + .text("Rose Quartz Lamps activate on a Redstone signal"); + scene.idle(5); + scene.world.toggleRedstonePower(button); + scene.idle(55); + + scene.world.hideSection(input, Direction.EAST); + scene.idle(10); + ElementLink outputElement = scene.world.showIndependentSection(output, Direction.EAST); + scene.world.moveSection(outputElement, util.vector.of(-2, 0, 0), 0); + scene.idle(10); + scene.world.toggleRedstonePower(wire); + scene.world.toggleRedstonePower(output); + scene.idle(5); + + scene.overlay.showText(70) + .pointAt(util.vector.blockSurface(centerLamp, Direction.WEST)) + .placeNearTarget() + .text("They will continue to emit redstone power afterwards"); + scene.idle(60); + + scene.world.hideIndependentSection(outputElement, Direction.NORTH); + scene.world.showSectionAndMerge(util.select.position(centerLamp.west()), Direction.EAST, rowElement); + scene.idle(3); + scene.world.showSectionAndMerge(util.select.position(centerLamp.east()), Direction.WEST, rowElement); + scene.idle(25); + + scene.overlay.showText(50) + .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 3), Direction.WEST)) + .placeNearTarget() + .attachKeyFrame() + .text("When multiple lamps are arranged in a group..."); + scene.idle(40); + + ElementLink inputElement = scene.world.showIndependentSection(input, Direction.SOUTH); + scene.world.moveSection(inputElement, util.vector.of(1, 0, 0), 0); + scene.idle(15); + + scene.world.toggleRedstonePower(input); + scene.effects.indicateRedstone(util.grid.at(4, 1, 1)); + scene.world.cycleBlockProperty(centerLamp, RoseQuartzLampBlock.POWERING); + scene.world.cycleBlockProperty(centerLamp.east(), RoseQuartzLampBlock.POWERING); + scene.idle(15); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(4, 1, 3), Direction.UP)) + .placeNearTarget() + .text("...activating a Lamp will focus the signal to it, deactivating all others"); + + scene.idle(5); + scene.world.toggleRedstonePower(button); + scene.idle(60); + + scene.world.hideIndependentSection(inputElement, Direction.NORTH); + scene.world.moveSection(rowElement, util.vector.of(1, 0, 0), 10); + scene.idle(15); + scene.world.showSectionAndMerge(comparator, Direction.EAST, rowElement); + scene.idle(15); + scene.world.toggleRedstonePower(comparator); + scene.world.modifyTileNBT(comparator, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 13)); + scene.idle(25); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.WEST)) + .placeNearTarget() + .attachKeyFrame() + .text("Comparators output based on the distance to a powered lamp"); + scene.idle(90); + + scene.overlay + .showControls(new InputWindowElement(util.vector.topOf(centerLamp.east(2)), Pointing.DOWN).rightClick() + .withWrench(), 20); + scene.idle(6); + scene.world.cycleBlockProperty(centerLamp.east(), RoseQuartzLampBlock.POWERING); + scene.world.toggleRedstonePower(comparator); + scene.world.modifyTileNBT(comparator, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 0)); + scene.idle(20); + + scene.overlay.showControls(new InputWindowElement(util.vector.topOf(centerLamp), Pointing.DOWN).rightClick() + .withWrench(), 20); + scene.idle(6); + scene.world.cycleBlockProperty(centerLamp.west(), RoseQuartzLampBlock.POWERING); + scene.world.toggleRedstonePower(comparator); + scene.world.modifyTileNBT(comparator, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 15)); + scene.idle(20); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.UP)) + .placeNearTarget() + .attachKeyFrame() + .text("The Lamps can also be toggled manually using a Wrench"); + scene.idle(50); + + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrackScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrackScenes.java index d8738bbcc..ce0865cf3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrackScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrackScenes.java @@ -3,7 +3,6 @@ package com.simibubi.create.foundation.ponder.content.trains; import java.util.List; import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; @@ -273,6 +272,8 @@ public class TrackScenes { scene.world.showSection(util.select.position(4, 1, i), Direction.DOWN); scene.idle(2); } + + scene.world.toggleControls(util.grid.at(4, 3, 3)); scene.idle(15); scene.overlay.showText(60) @@ -325,7 +326,7 @@ public class TrackScenes { scene.idle(25); ElementLink s1 = - scene.world.showIndependentSection(util.select.fromTo(5, 2, 1, 3, 3, 5), Direction.NORTH); + scene.world.showIndependentSection(util.select.fromTo(5, 2, 1, 3, 3, 5), null); scene.world.rotateSection(s1, 0, 180, 0, 0); scene.world.moveSection(s1, util.vector.of(0, 0, 3.5f), 0); scene.world.moveSection(s1, util.vector.of(0, 0, -3.5f), 18); @@ -360,7 +361,8 @@ public class TrackScenes { Selection train = util.select.fromTo(6, 2, 3, 2, 3, 5); Selection track = util.select.fromTo(7, 1, 4, 37, 1, 4); - scene.world.modifyTileNBT(vStation, StationTileEntity.class, c -> c.putBoolean("ForceFlag", true)); + scene.world.animateTrainStation(util.grid.at(7, 1, 1), true); + scene.world.toggleControls(util.grid.at(4, 3, 4)); for (int i = 6; i >= 2; i--) { scene.world.showSectionAndMerge(util.select.position(i, 1, 4), Direction.DOWN, stationTrackElement); @@ -389,7 +391,7 @@ public class TrackScenes { scene.idle(60); scene.idle(30); - scene.world.modifyTileNBT(vStation, StationTileEntity.class, c -> c.putBoolean("ForceFlag", false)); + scene.world.animateTrainStation(util.grid.at(7, 1, 1), false); scene.world.moveSection(trackElement, util.vector.of(12, 0, 0), 120); scene.world.moveSection(stationElement, util.vector.of(12, 0, 0), 120); scene.world.moveSection(stationTrackElement, util.vector.of(12, 0, 0), 120); @@ -451,9 +453,9 @@ public class TrackScenes { .pointAt(util.vector.blockSurface(util.grid.at(3, 2, 4), Direction.WEST)) .placeNearTarget() .attachKeyFrame() - .text("Once near a Player, the train will visually re-appear"); + .text("Once near a Player, the train will re-appear"); scene.idle(30); - scene.world.modifyTileNBT(dStation, StationTileEntity.class, c -> c.putBoolean("ForceFlag", true)); + scene.world.animateTrainStation(util.grid.at(1, 1, 1), true); scene.idle(30); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainScenes.java new file mode 100644 index 000000000..49a9222ae --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainScenes.java @@ -0,0 +1,166 @@ +package com.simibubi.create.foundation.ponder.content.trains; + +import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationBlock; +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.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Pointing; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.AABB; + +public class TrainScenes { + + public static void controls(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("train_controls", "Controlling Trains"); + scene.configureBasePlate(1, 0, 9); + scene.scaleSceneView(.75f); + scene.setSceneOffsetY(-1); + scene.showBasePlate(); + + for (int i = 10; i >= 0; i--) { + scene.world.showSection(util.select.position(i, 1, 4), Direction.DOWN); + scene.idle(1); + } + + BlockPos stationPos = util.grid.at(4, 1, 1); + Selection station = util.select.position(stationPos); + Selection whistle = util.select.fromTo(4, 3, 4, 4, 4, 4); + Selection train = util.select.fromTo(5, 2, 3, 1, 3, 5) + .substract(whistle); + + scene.world.showSection(station, Direction.DOWN); + scene.idle(20); + + ElementLink trainElement = scene.world.showIndependentSection(train, Direction.DOWN); + scene.world.cycleBlockProperty(stationPos, StationBlock.ASSEMBLING); + scene.idle(15); + + BlockPos initialControlsPos = util.grid.at(3, 3, 4); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, train, + new AABB(initialControlsPos).contract(-6 / 16f, 2 / 16f, 0), 85); + scene.idle(15); + + scene.overlay.showText(70) + .pointAt(util.vector.of(3.35f, 3.75f, 5)) + .placeNearTarget() + .attachKeyFrame() + .text("Train Controls are required on every train contraption"); + scene.idle(60); + + scene.world.cycleBlockProperty(stationPos, StationBlock.ASSEMBLING); + scene.effects.indicateSuccess(stationPos); + scene.world.animateTrainStation(stationPos, true); + scene.world.toggleControls(initialControlsPos); + scene.idle(20); + + scene.overlay.showControls( + new InputWindowElement(util.vector.topOf(initialControlsPos), Pointing.DOWN).rightClick(), 70); + scene.idle(20); + + scene.overlay.showText(60) + .pointAt(util.vector.of(3.35f, 3.75f, 5)) + .placeNearTarget() + .attachKeyFrame() + .text("Once assembled, right-click the block to start driving"); + scene.idle(60); + + scene.world.moveSection(trainElement, util.vector.of(4, 0, 0), 20); + scene.world.animateTrainStation(stationPos, false); + scene.idle(30); + + scene.overlay.showText(60) + .pointAt(util.vector.of(7.35f, 3.75f, 5)) + .placeNearTarget() + .text("Accelerate and steer the Train using movement keybinds"); + scene.idle(60); + + scene.world.moveSection(trainElement, util.vector.of(-4, 0, 0), 30); + scene.idle(40); + + scene.overlay + .showControls(new InputWindowElement(util.vector.topOf(initialControlsPos), Pointing.DOWN).scroll(), 70); + scene.idle(20); + + scene.overlay.showText(90) + .pointAt(util.vector.of(3.35f, 3.75f, 5)) + .placeNearTarget() + .text("If desired, the top speed can be fine-tuned using the mouse wheel"); + scene.idle(90); + + scene.world.moveSection(trainElement, util.vector.of(2, 0, 0), 30); + scene.idle(40); + + scene.world.moveSection(trainElement, util.vector.of(-3, 0, 0), 60); + scene.idle(70); + + scene.overlay.showText(50) + .pointAt(util.vector.of(2.35f, 3.75f, 5)) + .placeNearTarget() + .attachKeyFrame() + .text("Hold space to approach a nearby Station"); + scene.idle(40); + + scene.world.moveSection(trainElement, util.vector.of(1, 0, 0), 20); + scene.idle(20); + scene.effects.indicateSuccess(stationPos); + scene.world.animateTrainStation(stationPos, true); + scene.idle(10); + + scene.overlay.showText(80) + .pointAt(util.vector.topOf(stationPos)) + .placeNearTarget() + .text("Trains can only be disassembled back into blocks at Stations"); + scene.idle(40); + scene.world.cycleBlockProperty(stationPos, StationBlock.ASSEMBLING); + scene.world.toggleControls(initialControlsPos); + scene.idle(20); + scene.world.showSectionAndMerge(whistle, Direction.DOWN, trainElement); + scene.idle(20); + scene.world.cycleBlockProperty(stationPos, StationBlock.ASSEMBLING); + scene.effects.indicateSuccess(stationPos); + scene.world.toggleControls(initialControlsPos); + scene.idle(20); + + scene.overlay.showText(70) + .pointAt(util.vector.of(4.95f, 3.75f, 5)) + .placeNearTarget() + .attachKeyFrame() + .text("Assembled Whistles can be activated with the sprint key"); + + scene.idle(40); + scene.world.toggleRedstonePower(whistle); + scene.idle(20); + scene.world.toggleRedstonePower(whistle); + scene.idle(20); + + scene.overlay.showText(70) + .pointAt(util.vector.of(3.35f, 3.75f, 5)) + .placeNearTarget() + .attachKeyFrame() + .text("Sneak or click again to stop controlling the Train"); + scene.idle(60); + } + + public static void schedule(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("train_schedule", "Using Train Schedules"); + scene.configureBasePlate(1, 0, 9); + scene.scaleSceneView(.75f); + scene.setSceneOffsetY(-1); + scene.showBasePlate(); + scene.debug.debugSchematic(); + + for (int i = 10; i >= 0; i--) { + scene.world.showSection(util.select.position(i, 1, 4), Direction.DOWN); + scene.idle(1); + } + + scene.idle(10); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainSignalScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainSignalScenes.java new file mode 100644 index 000000000..372abf7b6 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainSignalScenes.java @@ -0,0 +1,541 @@ +package com.simibubi.create.foundation.ponder.content.trains; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; +import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalBlock; +import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState; +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.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.ParrotElement; +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.utility.Pointing; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class TrainSignalScenes { + + public static void placement(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("placement", "Placing Train Signals"); + scene.configureBasePlate(1, 0, 12); + scene.scaleSceneView(.65f); + scene.setSceneOffsetY(-1); + scene.showBasePlate(); + + for (int i = 13; i >= 0; i--) { + scene.world.showSection(util.select.position(i, 1, 6), Direction.DOWN); + scene.idle(1); + } + + scene.idle(10); + + BlockPos stationPos = util.grid.at(11, 1, 3); + Selection station = util.select.position(stationPos); + BlockPos signalPos = util.grid.at(8, 1, 3); + Selection firstSignal = util.select.position(signalPos); + Selection fakeSignal = util.select.position(7, 1, 3); + Selection secondSignal = util.select.position(8, 1, 9); + Selection thirdSignal = util.select.fromTo(9, 1, 9, 9, 4, 9); + Selection firstNixie = util.select.position(8, 2, 3); + Selection secondNixie = util.select.position(8, 2, 9); + Selection thirdNixie = util.select.position(9, 4, 8); + Selection train = util.select.fromTo(5, 2, 5, 1, 3, 7); + + Vec3 marker = util.vector.topOf(8, 0, 6) + .add(0, 3 / 16f, 0); + + AABB bb = new AABB(marker, marker); + AABB bb3 = bb.move(3, 0, 0); + + scene.overlay.showControls(new InputWindowElement(marker, Pointing.DOWN).rightClick() + .withItem(AllBlocks.TRACK_SIGNAL.asStack()), 40); + scene.idle(6); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb.move(0, -1 / 16f, 0), 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb.move(0, -1 / 16f, 0) + .inflate(.45f, 1 / 16f, .45f), 100); + scene.idle(10); + + scene.overlay.showText(70) + .pointAt(marker) + .placeNearTarget() + .colored(PonderPalette.GREEN) + .text("Select a Train Track then place the Signal nearby"); + scene.idle(60); + + ElementLink signalElement = scene.world.showIndependentSection(fakeSignal, Direction.DOWN); + scene.world.moveSection(signalElement, util.vector.of(1, 0, 0), 0); + scene.idle(15); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, new AABB(signalPos), 20); + scene.idle(25); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(signalPos, Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .text("Signals control the flow of Trains not driven by players"); + scene.idle(70); + + ElementLink trainElement = scene.world.showIndependentSection(train, Direction.DOWN); + Vec3 birbVec = util.vector.centerOf(util.grid.at(2, 3, 6)); + ElementLink birb = scene.special.createBirb(birbVec, FacePointOfInterestPose::new); + + scene.idle(10); + scene.world.showSection(station, Direction.DOWN); + + scene.idle(10); + + scene.overlay.showText(80) + .pointAt(marker.add(-.45, 0, 0)) + .attachKeyFrame() + .placeNearTarget() + .colored(PonderPalette.RED) + .text("Scheduled Trains will never cross signals in the opposite direction"); + scene.idle(90); + + scene.overlay.showControls( + new InputWindowElement(birbVec.add(0, 0.5, 0), Pointing.DOWN).withItem(AllItems.SCHEDULE.asStack()), 40); + scene.idle(6); + scene.special.movePointOfInterest(util.grid.at(19, 4, 6)); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3.inflate(.45f, 0, .45f), 40); + scene.idle(15); + + AABB bb2 = new AABB(marker, marker).move(-.45, 0, 0); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.move(-4, 0, 0), 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.expandTowards(-4, 0, 0), 20); + scene.idle(15); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb, bb, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb, bb.inflate(.45f, 0, .45f), 40); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb3, bb3.inflate(.45f, 0, .45f), 45); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb2, bb2.expandTowards(-4, 0, 0), 45); + scene.idle(20); + scene.special.movePointOfInterest(util.grid.at(5, 1, 4)); + scene.idle(20); + + scene.overlay.showControls(new InputWindowElement(marker, Pointing.DOWN).rightClick() + .withItem(AllBlocks.TRACK_SIGNAL.asStack()), 40); + scene.idle(6); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb.move(0, -1 / 16f, 0), 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb.move(0, -1 / 16f, 0) + .inflate(.45f, 1 / 16f, .45f), 70); + scene.idle(30); + scene.world.showSection(secondSignal, Direction.DOWN); + scene.idle(10); + scene.world.moveSection(signalElement, util.vector.of(0, -1000, 0), 0); + scene.world.showIndependentSectionImmediately(firstSignal); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, new AABB(util.grid.at(8, 1, 9)), 40); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(8, 1, 9), Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .text("...unless a second signal is added facing the opposite way."); + scene.idle(90); + scene.world.hideIndependentSection(signalElement, null); + + scene.overlay.showControls( + new InputWindowElement(birbVec.add(0, 0.5, 0), Pointing.DOWN).withItem(AllItems.SCHEDULE.asStack()), 40); + scene.idle(6); + scene.special.movePointOfInterest(util.grid.at(19, 4, 6)); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3.inflate(.45f, 0, .45f), 40); + scene.idle(15); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.move(-4, 0, 0), 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.expandTowards(-4, 0, 0), 40); + scene.idle(5); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb.inflate(.45f, 0, .45f), 30); + scene.idle(5); + + AABB bb4 = new AABB(marker, marker).move(.45, 0, 0); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb4, bb4, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb4, bb4.expandTowards(2, 0, 0), 20); + scene.idle(15); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb4, bb4.expandTowards(2, 0, 0), 25); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb3, bb3.inflate(.45f, 0, .45f), 25); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb2, bb2.expandTowards(-4, 0, 0), 25); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb.inflate(.45f, 0, .45f), 25); + scene.idle(20); + + scene.world.moveSection(trainElement, util.vector.of(7, 0, 0), 25); + scene.special.moveParrot(birb, util.vector.of(7, 0, 0), 25); + scene.idle(25); + + scene.world.animateTrainStation(stationPos, true); + scene.world.changeSignalState(util.grid.at(8, 1, 9), SignalState.RED); + scene.world.changeSignalState(util.grid.at(9, 4, 9), SignalState.RED); + scene.idle(25); + + scene.world.showSection(thirdSignal, Direction.DOWN); + scene.rotateCameraY(-90); + scene.special.movePointOfInterest(util.grid.at(8, 2, 9)); + scene.idle(5); + scene.world.showSection(firstNixie, Direction.DOWN); + scene.idle(3); + scene.world.showSection(secondNixie, Direction.DOWN); + scene.idle(3); + scene.world.showSection(thirdNixie, Direction.SOUTH); + scene.idle(15); + + scene.overlay.showText(100) + .pointAt(util.vector.blockSurface(util.grid.at(8, 2, 9), Direction.SOUTH)) + .attachKeyFrame() + .placeNearTarget() + .text("Nixie tubes can be attached to make a signal's lights more visible"); + scene.idle(70); + } + + public static void signaling(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("signaling", "Collision Prevention with Signals"); + scene.configureBasePlate(1, 0, 15); + scene.scaleSceneView(.5f); + scene.showBasePlate(); + scene.rotateCameraY(55); + + for (int i = 16; i >= 0; i--) { + scene.world.showSection(util.select.position(i, 1, 7), Direction.DOWN); + scene.world.showSection(util.select.position(i, 1, 15 - i), Direction.DOWN); + scene.idle(1); + } + + Selection train1 = util.select.fromTo(11, 2, 6, 15, 3, 8); + Selection train2a = util.select.fromTo(15, 2, 3, 11, 3, 5); + Selection train2b = util.select.fromTo(19, 2, 3, 16, 3, 5); + Selection train3 = util.select.fromTo(11, 2, 0, 15, 3, 2); + BlockPos s1Pos = util.grid.at(11, 3, 9); + Selection s1 = util.select.fromTo(11, 1, 9, 11, 4, 9); + BlockPos s2Pos = util.grid.at(5, 1, 5); + Selection s2 = util.select.fromTo(5, 1, 5, 5, 2, 5); + BlockPos s3Pos = util.grid.at(9, 1, 2); + Selection s3 = util.select.fromTo(9, 1, 2, 10, 1, 2); + BlockPos s4Pos = util.grid.at(7, 1, 12); + Selection s4 = util.select.fromTo(7, 1, 12, 6, 1, 12); + + float pY = 3 / 16f; + Vec3 m1 = util.vector.topOf(11, 0, 7) + .add(0, pY, 0); + Vec3 m2 = util.vector.topOf(5, 0, 7) + .add(0, pY, 0); + Vec3 m3 = util.vector.topOf(12, 0, 3) + .add(0, pY, 0); + Vec3 m4 = util.vector.topOf(4, 0, 11) + .add(0, pY, 0); + + scene.idle(10); + + scene.world.showSection(s1, Direction.DOWN); + scene.idle(8); + + Vec3 x1 = util.vector.of(17, 1 + pY, 7.5); + Vec3 x2 = util.vector.of(0, 1 + pY, 7.5); + Vec3 xz1 = util.vector.of(1, 1 + pY, 15); + Vec3 xz2 = util.vector.of(16, 1 + pY, 0); + + scene.overlay.showBigLine(PonderPalette.OUTPUT, x1, m1.add(.45, 0, 0), 100); + scene.overlay.showBigLine(PonderPalette.RED, x2, m1.add(-.45, 0, 0), 100); + scene.overlay.showBigLine(PonderPalette.RED, xz1, xz2, 100); + scene.idle(35); + + scene.overlay.showText(60) + .pointAt(m1.add(-.45, 0, 0)) + .attachKeyFrame() + .placeNearTarget() + .text("Train Signals divide a track into segments"); + scene.idle(50); + + scene.world.showSection(s2, Direction.DOWN); + scene.idle(8); + + scene.overlay.showBigLine(PonderPalette.OUTPUT, x1, m1.add(.45, 0, 0), 80); + scene.overlay.showBigLine(PonderPalette.BLUE, x2, m2.add(-.45, 0, 0), 75); + scene.overlay.showBigLine(PonderPalette.RED, m2.add(.45, 0, 0), m1.add(-.45, 0, 0), 75); + scene.overlay.showBigLine(PonderPalette.RED, xz1, xz2, 75); + scene.idle(25); + + scene.world.showSection(s3, Direction.DOWN); + scene.world.showSection(s4, Direction.DOWN); + scene.idle(8); + + scene.overlay.showBigLine(PonderPalette.OUTPUT, x1, m1.add(.45, 0, 0), 50); + scene.overlay.showBigLine(PonderPalette.BLUE, m2.add(-.45, 0, 0), x2, 50); + scene.overlay.showBigLine(PonderPalette.FAST, xz1, m4.add(-.45, 0, .45), 50); + scene.overlay.showBigLine(PonderPalette.RED, m2.add(.45, 0, 0), m1.add(-.45, 0, 0), 50); + scene.overlay.showBigLine(PonderPalette.RED, m4.add(.45, 0, -.45), m3.add(-.45, 0, .45), 50); + scene.overlay.showBigLine(PonderPalette.GREEN, m3.add(.45, 0, -.45), xz2, 50); + scene.idle(40); + + ElementLink trainElement = scene.world.showIndependentSection(train1, null); + ElementLink birb1 = + scene.special.createBirb(util.vector.centerOf(18, 3, 7), FacePointOfInterestPose::new); + scene.world.moveSection(trainElement, util.vector.of(4, 0, 0), 0); + scene.world.moveSection(trainElement, util.vector.of(-9, 0, 0), 45); + scene.special.moveParrot(birb1, util.vector.of(-9, 0, 0), 45); + scene.idle(20); + + scene.world.changeSignalState(s1Pos, SignalState.RED); + scene.effects.indicateRedstone(s1Pos.above()); + scene.world.changeSignalState(s3Pos, SignalState.RED); + scene.effects.indicateRedstone(s3Pos.east()); + scene.overlay.showBigLine(PonderPalette.RED, m2.add(.45, 0, 0), m1.add(-.45, 0, 0), 220); + scene.overlay.showBigLine(PonderPalette.RED, m4.add(.45, 0, -.45), m3.add(-.45, 0, .45), 220); + scene.idle(25); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(s1Pos.above(), Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .colored(PonderPalette.RED) + .text("If a Segment is occupied, no other Trains will be allowed entry"); + scene.idle(50); + + ElementLink trainElement2 = scene.world.showIndependentSection(train3, null); + ElementLink birb2 = + scene.special.createBirb(util.vector.centerOf(18, 3, 7), FacePointOfInterestPose::new); + scene.world.moveSection(trainElement2, util.vector.of(4, 0, 6), 0); + scene.world.moveSection(trainElement2, util.vector.of(-4.5, 0, 0), 35); + scene.special.moveParrot(birb2, util.vector.of(-4.5, 0, 0), 35); + scene.idle(40); + scene.special.movePointOfInterest(s1Pos.above(2)); + scene.idle(10); + + scene.overlay.showText(80) + .pointAt(util.vector.topOf(util.grid.at(9, 0, 6))) + .attachKeyFrame() + .placeNearTarget() + .colored(PonderPalette.RED) + .text("Thus, each Segment will contain only one Train at a time"); + scene.idle(90); + + scene.world.hideIndependentSection(trainElement, Direction.UP); + scene.special.hideElement(birb1, Direction.UP); + scene.idle(3); + scene.world.hideIndependentSection(trainElement2, Direction.UP); + scene.special.hideElement(birb2, Direction.UP); + scene.idle(3); + scene.world.changeSignalState(s1Pos, SignalState.GREEN); + scene.world.changeSignalState(s3Pos, SignalState.GREEN); + scene.idle(20); + + scene.overlay.showControls( + new InputWindowElement(util.vector.blockSurface(s1Pos, Direction.EAST), Pointing.RIGHT).rightClick() + .withWrench(), + 80); + scene.idle(6); + scene.world.cycleBlockProperty(s1Pos, SignalBlock.TYPE); + scene.idle(15); + + scene.overlay.showText(60) + .pointAt(util.vector.blockSurface(s1Pos, Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .text("A second Signal mode is available via the Wrench"); + scene.idle(70); + + AABB bb = new AABB(m1, m1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb.inflate(.45f, 0, .45f), 140); + scene.idle(10); + + AABB bb2 = bb.move(-.45, 0, 0); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.expandTowards(-5, 0, 0), 130); + scene.idle(10); + + AABB bb3 = bb.move(-6, 0, 0); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb3, bb3.inflate(.45f, 0, .45f), 120); + scene.idle(10); + + scene.overlay.showText(60) + .pointAt(util.vector.blockSurface(s2Pos, Direction.WEST)) + .placeNearTarget() + .colored(PonderPalette.BLUE) + .text("Segments of a brass signal usually lead into standard signals"); + scene.idle(70); + + scene.overlay.showText(60) + .pointAt(util.vector.blockSurface(s1Pos, Direction.WEST)) + .placeNearTarget() + .attachKeyFrame() + .text("This special Signal can stop trains under a second condition"); + scene.idle(60); + + trainElement = scene.world.showIndependentSection(train1, Direction.DOWN); + scene.world.moveSection(trainElement, util.vector.of(-10.5, 0, 0), 0); + birb1 = scene.special.createBirb(util.vector.centerOf(3, 3, 7) + .add(.5, 0, 0), DancePose::new); + scene.idle(10); + scene.world.changeSignalState(s2Pos, SignalState.RED); + scene.effects.indicateRedstone(s2Pos.above()); + scene.overlay.showBigLine(PonderPalette.RED, m2.add(-.45, 0, 0), x2, 220); + scene.idle(15); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb, bb.inflate(.45f, 0, .45f), 140); + scene.idle(10); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, bb2, bb2.expandTowards(-5, 0, 0), 130); + scene.idle(10); + + trainElement2 = scene.world.showIndependentSection(train3, null); + birb2 = scene.special.createBirb(util.vector.centerOf(18, 3, 7), FacePointOfInterestPose::new); + + scene.world.moveSection(trainElement2, util.vector.of(4, 0, 6), 0); + scene.world.moveSection(trainElement2, util.vector.of(-4.5, 0, 0), 35); + scene.special.moveParrot(birb2, util.vector.of(-4.5, 0, 0), 35); + + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb, bb.inflate(.45f, 0, .45f), 140); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb2, bb2.expandTowards(-5, 0, 0), 130); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb3, bb3, 1); + scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb3, bb3.inflate(.45f, 0, .45f), 120); + scene.idle(5); + scene.world.changeSignalState(s1Pos, SignalState.RED); + scene.effects.indicateRedstone(s1Pos.above()); + scene.idle(15); + + scene.overlay.showText(50) + .pointAt(util.vector.blockSurface(s1Pos, Direction.WEST)) + .placeNearTarget() + .text("It will stop Trains, which, upon entering..."); + scene.idle(50); + + AABB trainBB = new AABB(util.grid.at(13, 2, 7)).inflate(1, 1, .25f); + for (int i = 1; i < 14; i++) { + scene.idle(2); + scene.overlay.chaseBoundingBoxOutline(i == 13 ? PonderPalette.RED : PonderPalette.OUTPUT, trainBB, + trainBB.move(-i * .5, 0, 0), i == 13 ? 100 : 5); + } + + scene.special.movePointOfInterest(util.grid.at(5, 3, 7)); + scene.idle(20); + + scene.overlay.showText(80) + .pointAt(util.vector.of(7, 4, 7)) + .placeNearTarget() + .colored(PonderPalette.RED) + .text("...would not be able to leave the Segment immediately"); + scene.idle(40); + scene.idle(50); + + ElementLink trainElement3a = scene.world.showIndependentSection(train2a, null); + scene.world.rotateSection(trainElement3a, 0, 45, 0, 0); + scene.world.moveSection(trainElement3a, util.vector.of(4, 0, -6), 0); + scene.world.moveSection(trainElement3a, util.vector.of(-20, 0, 20), 40); + ElementLink birb3 = + scene.special.createBirb(util.vector.of(18, 3.5, -2), FacePointOfInterestPose::new); + scene.special.moveParrot(birb3, util.vector.of(-20, 0, 20), 40); + scene.idle(5); + + scene.effects.indicateRedstone(s3Pos.east()); + scene.world.changeSignalState(s3Pos, SignalState.RED); + + ElementLink trainElement3b = scene.world.showIndependentSection(train2b, null); + scene.world.rotateSection(trainElement3b, 0, 45, 0, 0); + scene.world.moveSection(trainElement3b, util.vector.of(0.5, 0, -7), 0); + scene.world.moveSection(trainElement3b, util.vector.of(-20, 0, 20), 40); + scene.idle(10); + + scene.effects.indicateRedstone(s4Pos.west()); + scene.world.changeSignalState(s4Pos, SignalState.RED); + + scene.idle(5); + scene.world.changeSignalState(s3Pos, SignalState.GREEN); + scene.world.hideIndependentSection(trainElement3a, null); + scene.special.hideElement(birb3, null); + scene.idle(5); + scene.world.hideIndependentSection(trainElement3b, null); + scene.idle(15); + scene.world.changeSignalState(s4Pos, SignalState.GREEN); + scene.idle(15); + + scene.overlay.showBigLine(PonderPalette.GREEN, m2.add(.45, 0, 0), m1.add(-.45, 0, 0), 100); + scene.overlay.showBigLine(PonderPalette.GREEN, m4.add(.45, 0, -.45), m3.add(-.45, 0, .45), 100); + scene.idle(15); + scene.overlay.showText(80) + .pointAt(util.vector.topOf(util.grid.at(9, 0, 6))) + .placeNearTarget() + .colored(PonderPalette.GREEN) + .text("This helps keeping queued Trains out of a busy Segment"); + scene.idle(60); + } + + public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("redstone", "Signals & Redstone"); + scene.configureBasePlate(0, 0, 9); + scene.scaleSceneView(.75f); + scene.setSceneOffsetY(-1); + scene.showBasePlate(); + + for (int i = 1; i <= 7; i++) { + scene.world.showSection(util.select.position(6, 1, i), Direction.DOWN); + scene.idle(2); + } + + scene.idle(10); + + Selection train = util.select.fromTo(5, 2, 3, 7, 3, 7); + Selection lever = util.select.fromTo(2, 1, 3, 1, 1, 3); + Selection comparator = util.select.fromTo(2, 1, 1, 1, 1, 1); + Selection signal = util.select.fromTo(3, 1, 3, 3, 2, 3); + BlockPos signalPos = util.grid.at(3, 1, 3); + + scene.world.showSection(signal, Direction.DOWN); + scene.idle(10); + scene.world.showSection(lever, Direction.EAST); + scene.idle(15); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(3, 2, 3), Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .text("Signals can be forced red by a redstone signal"); + scene.idle(40); + + scene.world.toggleRedstonePower(lever); + scene.effects.indicateRedstone(util.grid.at(1, 1, 3)); + scene.world.changeSignalState(signalPos, SignalState.RED); + scene.idle(40); + + scene.world.toggleRedstonePower(lever); + scene.effects.indicateRedstone(util.grid.at(1, 1, 3)); + scene.world.changeSignalState(signalPos, SignalState.GREEN); + scene.idle(40); + + scene.world.hideSection(lever, Direction.SOUTH); + scene.idle(15); + ElementLink comparatorElement = + scene.world.showIndependentSection(comparator, Direction.SOUTH); + scene.world.moveSection(comparatorElement, util.vector.of(0, 0, 2), 0); + scene.idle(15); + + scene.overlay.showText(80) + .pointAt(util.vector.blockSurface(util.grid.at(3, 2, 3), Direction.WEST)) + .attachKeyFrame() + .placeNearTarget() + .text("Reversely, red signals emit a comparator output"); + scene.idle(40); + + scene.world.showSection(train, Direction.DOWN); + scene.special.createBirb(util.vector.centerOf(util.grid.at(6, 3, 4)), DancePose::new); + scene.idle(10); + scene.world.toggleRedstonePower(comparator); + scene.effects.indicateRedstone(signalPos); + scene.world.changeSignalState(signalPos, SignalState.RED); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainStationScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainStationScenes.java index 282fd150e..2b3139b01 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainStationScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/trains/TrainStationScenes.java @@ -3,7 +3,6 @@ package com.simibubi.create.foundation.ponder.content.trains; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationBlock; -import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.foundation.ponder.ElementLink; import com.simibubi.create.foundation.ponder.PonderPalette; import com.simibubi.create.foundation.ponder.SceneBuilder; @@ -52,6 +51,7 @@ public class TrainStationScenes { Selection train2 = util.select.fromTo(7, 2, 5, 2, 2, 7) .substract(util.select.position(6, 2, 6)) .substract(util.select.position(3, 2, 6)); + Selection train3 = util.select.fromTo(7, 2, 1, 3, 3, 3); BlockPos stationPos = util.grid.at(11, 1, 3); Vec3 marker = util.vector.topOf(11, 0, 6) @@ -234,10 +234,11 @@ public class TrainStationScenes { .text("Open the Station UI and confirm the Assembly process"); scene.idle(50); + scene.world.toggleControls(util.grid.at(10, 3, 6)); + scene.world.toggleControls(util.grid.at(8, 3, 6)); scene.world.cycleBlockProperty(stationPos, StationBlock.ASSEMBLING); scene.effects.indicateSuccess(stationPos); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", true)); + scene.world.animateTrainStation(stationPos, true); scene.idle(20); ElementLink birb = @@ -245,8 +246,7 @@ public class TrainStationScenes { scene.idle(15); scene.special.movePointOfInterest(util.grid.at(18, 3, 6)); scene.idle(15); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", false)); + scene.world.animateTrainStation(stationPos, false); scene.world.moveSection(controlsElement, util.vector.of(18, 0, 0), 70); scene.world.moveSection(trainElement1, util.vector.of(18, 0, 0), 70); scene.world.moveSection(trainElement2, util.vector.of(18, 0, 0), 70); @@ -260,12 +260,43 @@ public class TrainStationScenes { scene.world.hideIndependentSection(trainElement2, null); scene.idle(20); - scene.overlay.showText(80) + scene.overlay.showText(70) .pointAt(stationTop) .placeNearTarget() .attachKeyFrame() .text("Trains can be disassembled back into blocks at stations only"); - scene.idle(50); + scene.idle(60); + + for (int i = 8; i >= 3; i--) { + scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN); + scene.idle(1); + } + + scene.world.toggleControls(util.grid.at(5, 3, 2)); + scene.idle(10); + ElementLink trainElement3 = scene.world.showIndependentSection(train3, Direction.DOWN); + scene.world.moveSection(trainElement3, util.vector.of(0, 0, 4), 0); + scene.idle(15); + + Vec3 target = util.vector.topOf(util.grid.at(5, 3, 6)); + scene.overlay.showControls(new InputWindowElement(target, Pointing.DOWN).rightClick() + .withWrench(), 75); + scene.idle(15); + + scene.overlay.showText(70) + .pointAt(target) + .placeNearTarget() + .attachKeyFrame() + .colored(PonderPalette.BLUE) + .text("Assembled Trains can be relocated to nearby Tracks using the Wrench"); + scene.idle(60); + + scene.overlay + .showControls(new InputWindowElement(util.vector.topOf(util.grid.at(6, 0, 2)), Pointing.DOWN).rightClick() + .withWrench(), 15); + scene.idle(15); + scene.world.moveSection(trainElement3, util.vector.of(0, 0, -4), 5); + } public static void autoSchedule(SceneBuilder scene, SceneBuildingUtil util) { @@ -280,6 +311,8 @@ public class TrainStationScenes { scene.idle(1); } + scene.world.toggleControls(util.grid.at(7, 3, 6)); + scene.idle(4); Selection redstone = util.select.fromTo(8, 1, 2, 8, 1, 1); Selection belt = util.select.fromTo(9, 1, 3, 12, 1, 3); @@ -331,8 +364,7 @@ public class TrainStationScenes { scene.special.moveParrot(birb, util.vector.of(4, 0, 0), 20); scene.idle(20); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", true)); + scene.world.animateTrainStation(stationPos, true); scene.world.toggleRedstonePower(redstone); scene.effects.indicateRedstone(stationPos); scene.idle(25); @@ -345,8 +377,7 @@ public class TrainStationScenes { scene.idle(90); scene.world.hideSection(redstone, Direction.NORTH); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", false)); + scene.world.animateTrainStation(stationPos, false); scene.world.moveSection(trainElement, util.vector.of(0, 1, 0), 5); scene.special.moveParrot(birb, util.vector.of(0, 2, 0), 5); scene.idle(7); @@ -417,9 +448,7 @@ public class TrainStationScenes { scene.world.createItemOnBelt(util.grid.at(11, 1, 3), Direction.DOWN, AllItems.SCHEDULE.asStack()); scene.idle(10); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", true)); - + scene.world.animateTrainStation(stationPos, true); scene.idle(10); scene.overlay.showControls( new InputWindowElement(util.vector.topOf(stationPos), Pointing.DOWN).withItem(AllItems.SCHEDULE.asStack()), @@ -443,8 +472,7 @@ public class TrainStationScenes { scene.world.moveSection(trainElement, util.vector.of(8, 0, 0), 30); scene.special.moveParrot(birb, util.vector.of(8, 0, 0), 30); - scene.world.modifyTileNBT(util.select.position(stationPos), StationTileEntity.class, - c -> c.putBoolean("ForceFlag", false)); + scene.world.animateTrainStation(stationPos, false); scene.idle(10); scene.world.hideIndependentSection(trainElement, null); scene.special.hideElement(birb, null); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java index 89816814f..92b2cc258 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/LineInstruction.java @@ -2,9 +2,7 @@ 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.utility.outliner.Outline.OutlineParams; -import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; public class LineInstruction extends TickingInstruction { @@ -12,27 +10,22 @@ public class LineInstruction extends TickingInstruction { private PonderPalette color; private Vec3 start; private Vec3 end; - private boolean chaseEnd; + private boolean big; - public LineInstruction(PonderPalette color, Vec3 start, Vec3 end, int ticks, boolean chaseEnd) { + public LineInstruction(PonderPalette color, Vec3 start, Vec3 end, int ticks, boolean big) { super(false, ticks); this.color = color; this.start = start; this.end = end; - this.chaseEnd = chaseEnd; + this.big = big; } @Override public void tick(PonderScene scene) { super.tick(scene); - int ticksElapsed = totalTicks - remainingTicks; - float progress = Mth.clamp(ticksElapsed / 15f, 0, 1); - - OutlineParams line = chaseEnd ? scene.getOutliner() - .endChasingLine(start, start, end, progress, true) - : scene.getOutliner() - .showLine(start, start, end); - line.lineWidth(1 / 16f) + scene.getOutliner() + .showLine(start, start, end) + .lineWidth(big ? 1 / 8f : 1 / 16f) .colored(color.getColor()); } diff --git a/src/main/resources/assets/create/models/block/controls/block_virtual.json b/src/main/resources/assets/create/models/block/controls/block_virtual.json new file mode 100644 index 000000000..b22cbbd2f --- /dev/null +++ b/src/main/resources/assets/create/models/block/controls/block_virtual.json @@ -0,0 +1,95 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/controls_frame", + "1_7": "create:block/controls", + "particle": "create:block/bogey/particle" + }, + "elements": [ + { + "from": [4, 9, -1], + "to": [6, 11, 9], + "rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 11]}, + "faces": { + "north": {"uv": [8, 1.5, 9, 2.5], "rotation": 180, "texture": "#1_7"}, + "east": {"uv": [9, 3, 8, 8], "rotation": 90, "texture": "#1_7"}, + "west": {"uv": [9, 3, 8, 8], "rotation": 270, "texture": "#1_7"}, + "up": {"uv": [8, 3, 9, 8], "texture": "#1_7"}, + "down": {"uv": [8, 3, 9, 8], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [10, 9, -1], + "to": [12, 11, 9], + "rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 11]}, + "faces": { + "north": {"uv": [8, 1.5, 9, 2.5], "rotation": 180, "texture": "#1_7"}, + "east": {"uv": [9, 3, 8, 8], "rotation": 90, "texture": "#1_7"}, + "west": {"uv": [9, 3, 8, 8], "rotation": 270, "texture": "#1_7"}, + "up": {"uv": [8, 3, 9, 8], "texture": "#1_7"}, + "down": {"uv": [8, 3, 9, 8], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 4.95, 6.75], + "to": [14, 13.2, 14], + "faces": { + "north": {"uv": [9.5, 3.5, 15.5, 0], "texture": "#1_7"}, + "up": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [9.5, 0, 15.5, 3.5], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [14, 0, 6], + "to": [16, 14, 16], + "faces": { + "north": {"uv": [0, 9, 1, 16], "texture": "#4"}, + "east": {"uv": [13, 0, 8, 7], "texture": "#4"}, + "south": {"uv": [7, 0, 8, 7], "texture": "#4"}, + "west": {"uv": [16, 9, 11, 16], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 14], + "to": [14, 14, 16], + "faces": { + "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"}, + "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"}, + "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [0, 0, 6], + "to": [2, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [7, 9, 8, 16], "texture": "#4"}, + "east": {"uv": [11, 9, 16, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 1, 7], "texture": "#4"}, + "west": {"uv": [8, 0, 13, 7], "texture": "#4"}, + "up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 7], + "to": [14, 13, 15], + "faces": { + "north": {"uv": [1, 14, 7, 10], "rotation": 180, "texture": "#4"}, + "up": {"uv": [1, 13.5, 7, 9.5], "texture": "#4"}, + "down": {"uv": [1, 14.5, 7, 10.5], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [2, 0, 8], + "to": [14, 5, 16], + "faces": { + "north": {"uv": [1, 13.5, 7, 16], "texture": "#4"}, + "south": {"uv": [1, 4.5, 7, 7], "texture": "#4"}, + "down": {"uv": [7, 12, 1, 16], "texture": "#1_7"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/ponder/rose_quartz_lamp.nbt b/src/main/resources/assets/create/ponder/rose_quartz_lamp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..cbc7e1365966fafcffcbe4813bf49e2cc11cbbb8 GIT binary patch literal 638 zcmb2|=3oGW|5K-(@4IXu(5_xTdz%b{;se76w~W&r)*LY{ntXGeYZm))#SQw0S0`yYTwH$B#d6ymC5o z<+be>&aBR1uit*L{jf@1^y|9&2|vTFS3aw(3{l$9`MlQpl~iKsz4?l7lRvCH*yvk& f_g3EbJbMo9eT!Z$31+!{{{y>)bVyV)HvSTEK*mT8oN!i&%f(S zs$Mg*(EQ;k@da}PWE>uynVElRCVzu~I*WS6o3E2|V%}e#m|=d)rL(^7+06TYY|mAl zy3xYwR;O8WEaLOLgVrtIQw}8sMrAHFSX1d6VRAmSDr?yXZ@a|0r9AVVY<%~0^M!~! z*YaZmk1Y+9*^k{%+9T`p;6MwX&yx%1Z!~stragHeAld&yQu36d(G=$trgkeJsnLF- zNA^_!UoCt4i2zHNwxSN6rvj2%Kn~x;g)&OcK+dT|g9jV#^BaZmO_a1W*yn5yWN^yP zII&P3sO$)fu$6^N8^lPUVQ6M3<1zMO#eu~A@+m8Tw!8&u{H+MGVc|FDlofv=F8H1J z2Iyi`w}71v(qcKs0*}4X=6mP4GyhMw>jgQPS=hp0A+xZhK{C5qS%MnhnJX7RuQ>jL zd7k@T88+(~Z>=8krCGOMJWyqut8;&$--7`4f)&DiXR>V!^!Fb>!fg9}=1B*8$Nrgz zrpKRKd;FVx!CsMX+pZ{W4VwDlr`ewEdaZfqDt_Ox@BjblzRkanuea~}|MQsn``>S- zTE{$7vVIcfy-&nFRqfor*6Hl&nY)ATO*v~ODxWcL-mf#id$!hA%rCd!|6-BA{EUw; z9{9{syZ_I+e$&D0J-vOKmQ8(M_v^3uzvH|6_y7IS_Wkt7@cQF9D#m5DSDDgEE}J#0 zo_&+R6}+u{{kG8D{Hxuq7wov-9e)1(*u9ok_b`!V+IBU2^WLxDeC~4Emc4mfc1Cr5 zmVJ41+n(!lZBsAmvff%S^(A9Ooyt3>xxM{A9(qa5-hN(S&ji=+uUDNqA9?%qn-=Nj zEyox6uUez|X7k7Dr$N*17PDJ?2$(iAYO*(bP~Xmt@>8;6=b7Yg=l)!{*{xa_3 z6MDIg?Jo;sPXtM3o;SbiR^A%3Zq~KEy_2R}sdn#~7MWC8d5djE5^hNQiwZdHWRuj!)O;21^kkGD}xW?R%UF)0v zH1P(>a2xS!U1`a;`y(%WtNObsocY|OZx{IvFJ2!j*Sc|yM^LB}dw|foHNtDP7S4X| zWH@_mqRiaYPlHl)Vm{pIkZ_Ct=(XYE%%-Ys*HX)$Ec$b=Y|U@gX3_KFXST1p6<8Ou za_fcY`VKLhsZS@dW+x`NGOY+bbYRy$nU7ab3#QII@Lem|%YOI5!$AkXeTX^!Zq2b} zE14DV&f4DaB%bHHn|aLAqRcQQ?@PDT)IzOdJ@36y44R#8QMmZkbDNKMU*A3R`#+DZ z!5!CD@!eeBXU_{?eiNW~QNAZ>{inKc$#t5mL;oE~D&dw*T{Z7{z~)+;(~F!^HtFfD z+GDpxS>+K=nd;>`&trDYJ@ikztMZ=SldEd%?``~Cnfc6ZpUsV(QYC4vTQN_4_UzLi zrX1F4f7*51AV*B3=iJn-t6r>qKlyjj{wKmKcP=VaIFS7!Z+h$M+w0D!ZQuEHKG)q@ SX`AJ5)CcT3e$+#pfdK%$r)RSO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/ponder/train_schedule.nbt b/src/main/resources/assets/create/ponder/train_schedule.nbt new file mode 100644 index 0000000000000000000000000000000000000000..cae7663b0bb0dc0f401c39674cd9b3579cd42307 GIT binary patch literal 1155 zcmb2|=3oGW|3_z>U3c3>s#%NURftkUC%#vy#AkYa_W&A z6I!EUoDN8=ez$S2b2WdvPU9gCWrxkLq&6Kinf!96+)e)1irii+3nv_ZrJXR*?2d!& zqVA6}689T9rFyO(ZsGHJa)3wXRj2HXmV_F1-iaSOW=&jZ;?j0WVCDryzNLyrQ`$}( z;VabOWd=$vtm)u^2nE=Ilt_9xr)bD4IcG|gW!zZDE_tf`#1B572Lb#~ol}(9(;y6? zrcN24fuF!e1xP75|Agp+8u##kBh(Ox+5AxJL52lL9g~&X_SzAo`AS^}&sLyaK;2pP zE^W7f>VU40&vV&VOyCb?yn?-Se4)tz1)$bb2a>5If!alO?umW5B2Q!6`h z^~+^@jILXn_RL|XdSR;ALF@e+&SjtZb2&2f)cO29-(Je^zZduagGJ4szy0=8 zIX@rmiS-w~(U&(%>*kVI=e8LnxtE78i<$X7?6c*HhSvEVr_Y{}+VtXz!@AcG?*2~t zyrz2NwanRXSDZ7O%Kc;2@sDR`?)cU3eq46(+KA7hDdi9BQlfd+`-QKv5Vox0u@rCB z5WD*QwvPG?)yLBfBE#N?_HUfEG;Xs`%qO0n#;nb@o)JF;&o}O!)6Eog^!c-ARhm3L zL6J8^$^?Y2e{a!yQnl%)^QmigyOyVLuKKlJEAeq@sE3+3_l%7h=Ztwf&+dDoYVhCb zR>ZMyA^$gV*It=(uk1v@$<3DBJv!BgjxUXA&Z;q-@p+4oc1-iO$wIdxT7B1q{q9-+ zZuZQ=QoD(NYLYfjH`cuB$W@UV@36{cUFt{sC;eQR;;$J+R-{{8G;4~`@pWc;aO=&a zeR2LJn#K#K8_Zs!ZG3TM$jhJ)S+U$p=O_M-TE}vZ;_Z3= zB%iAF#IODPJmt^XMZfiH%a`1CJuq2)`+3&ZjYn_$`yF?9zU~HBT@3s7<^6$1)n1d& z9Z+6p`s8ws@pJ!UuWJelxTK1HpEGyp8c%R?#{eIu~r<=25+t%6~EEz=W zAk<0aw&1n(gB%^&!A8H#JI)BqDS$&wVRiOMM%rzQr{$|IWH5Cgw(Rn6Dl31II z@4rfuQO$s4SlFEvD%9TTO#Aezq`(n4KdQN0;nn0HoD$3IVotFcr$ZEncgM}m;PJcl zk|C8dxhZWrFNz+rip7Scl@|DP z$!3rAf|S&BBz6n2>`TrTLbMyAp_;Oi;W+2HSO(^?vK~riRo|2Aa zZ%G{MxhQGx8;K>M<+AtyrO_JXgROV}=kv8=3mC_%PpTwQz9)(DE$db#$xNgJ`6@4Q z_)kCePrqjjgVX%ZYPp~~M0%s5BPorr7li-vhm!xf71nE>+xrpI1{)fA!ZrY0j)mY4k*6zJJey*#w6Dp?hz~VGUkLqw3k7r2cWYJwnjGU z^E4z7U)vz^DMlZys*Iao)K%X=9e!lw&d&Vo|Eb6%m&^ zcwJ)(WZYf}xPL7~3t4`lV{_J*O7ZAvPg-k6`>rqEG;s1}34dAhWzW%gSuwUNlnC!d zhWMCm9dupTb*`JwrNiPG<3_w58^IDeNf5K~Jb8G0Nwu_scmz>Ez+$YlUeiY2&ClG| zMJdnL8lP}#`tVogff+4eQ}QH*I@E-D^l-{Es%0VXZo$NRyk)n6Ap53WqBrU2kJY$h zK!Ln1PEJ`A;Tt#BVhrQd?4e>p2{?9HG}aI|nrXgo8(*OVOaXaLhJ}DD7qIz`SsA+K zo~OouKKqOEmkRnv>l*44QHD-=BIh-K^n)QF(wsi9nQ9uvoye?d#?=Qr(Y%HYvbL1D9O-d(z6SJw5`$1S?oCl3i%Sl};NjEzhQ$w3f1bpsa96UMVEIiqemU z+oT}jqLNGoOBWUi=jX=+?~ExhABuXcXxdiJ=rDP&uP6-A7nDuAVe);{dC=~=PR0-? zyhpn!(S9}3y{)mexjt`YCI6~`hw59|m!2&SZ<&HKHSKgMcJx>T$tCJ+21(FR9@wuF zeb)8D>Y{uYjM!TiuDVaLSl1P5U{2J>%}0Xb`!jP)l5>wLh9+T`tE|(Ufz8hSG(g7C z^rL)-2kwy4xa||evdf<#J1%GL*;ROI5SJuQ;Ha}>Q3ONxprt*FKs9Y(Q)*$T$*>o< YkXO}xM8mFyk)0}|vUaIn4Y+OFKN=7mZU6uP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/ponder/train_signal/redstone.nbt b/src/main/resources/assets/create/ponder/train_signal/redstone.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0a339582e14bfe55be639a28d4c133597385c508 GIT binary patch literal 1130 zcmb2|=3oGW|3_z>&b#d<($@aS^~%!HyuELJGu<_ty{Msgfk&crna~zT#w3?M)k7lf zGbCLnmdBPwZuxEJa(~t8ce_t29#y_%Qfbq@OHhGhlHJ_@bL#&|3e7SyOPuGI-*Q?) zd%kc*)zjB4txD!AJzLY({8EZYG1_-6xT4rLF;CI---{0gGuQK)FZ$;y|2V=xnfq9- z;W>uKkp}x%g(JQgZ%c4$D%7!YIi^_U*7iw2@|1ImO}EvQ_7eeeO2*q(I9FP1`XC^w z1?D?fcJNGfPSN0>xX{L>?UbU?l=k*LLVp#Up9;*J$oe?y3y>jszll@l*TSL>9}k0h ztw3#-E>L4v$S8pfc&ca=!Ur_qi!RIzkX0a^K&wGU7Xj5IUU;0iT|Nb*WiHT+=MX*T zoKseOhB)T=!yAWyJX9mWHi4bmCWc`o$h9EXJlpr%dHLh>84a1|-+jBoTrx9n?gIDI z(g|*2J=q5<#Cq}%vWT6Tk?`l%;xhYx442=jOC&Hgab_)hd%mI}^SdygLGId<443EC z-r78UchqLaWwyU-8aO%BR>a?qn$H82^k0~59zSD3@1+*o=;b>*ME4t=Pu{7w5j~cOAd3S6p{Tf7xf@)h%cVzebd&{NNcYXcwZT{caJ-z$4#chO-b$oi?wp{VE-_NKG`m>+jTNk9fDB@XwbX|*!wt&_2 z+be#ZXPPy0o^~Wh=)bv)D<0gM^1oVzDJUPc)&a_Q$yy!^~`-o{5Jdw47L^CaN_Q&&AL05 z8tshPmi4phDEC1(bD>i+dQZL1=L>!QR^)DG$axH; zduBR+dd<<&&C>HDev5tfGT+ba6Yd>-OMlg^wpsDZw)*K~ovPBBnl)?qvv2p_RlZ&lAAaIgYu~i4_e#9- z5wbRatrsa5gm53&m^o@AnmMuPf YpJVB1X$iC6lWQ6J&d$z!BhJ780K$?kV*mgE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/ponder/train_signal/signaling.nbt b/src/main/resources/assets/create/ponder/train_signal/signaling.nbt new file mode 100644 index 0000000000000000000000000000000000000000..27fed993788c3f3017af1c63fd9eff7d1ff44f58 GIT binary patch literal 2125 zcmbV~Yd9NN9>!VSFs-V()SYH@blRC+aaXO$H0YEDC5>C%qOQfHWHm+IMoAF0E*V0w zTB4z?TXeQ55momP>Mkxz5kji8iE0wvgb(|v&ph4p;XLR3&ig;ld(QjU%aW7YAD;(G zz!6$O>Rn*LAb%IRN2!Xu?C+0APHVWVVrv6;se*d}R|879hI|+H;7n;r<&l#{Mknvx zyLafU{8j(t3K?ZrSvP9ax4__200X)C?{-dgFTdR?9CyrEnkFah(B=iS9KANDl43bi}?q0!QFlq|{Vxg+W+X#pw!M zT~EMaO{hz%krEV$F)}O41Hi^Do$XQ^Op9u|VsC0feNw|hiPhwGiX2QueKL^r^Pqfs zn2h`gKpm#9Af8D_L8{r7P%Zx=bNZ<1A}BH$F)cMRitV5v`Xd+n<*nXekRrm0O~7R{*yH6bnZd17)ba5 zknnw>$Je@2{YqEG|BtKDzXHq&5~~NH)-1Pja2$bUuF`_`$Exr`Hm0_5{*D{^Z!Ozf1Z z$;YeHCV&|uudyb|CcnKR3}a1dr`Q1;241^s)c>p|G@9hr)sjh`u003cW;AOXoEwQ# zxDmQ!Y!;0-jmDcr!%d?-Pr1V$V*EXl==FQah~`v8vxOPwX3*$Z4(;LQ`CnJ2xiZsj)zFSV5xN#0gZoeis($^DXjIm#_!griPmAb*qW}G|} zP23~f3_DQw4PR8ed7k#$_deSlDem>QYkdm7R&CUl7FT7S&xaZ$x=!oCJL=>&-goqA zZ3ee@!qyuNku8+9L&MR*M3GHk;+WkQ#L#Lt4edM^yCr!42Uxi9xA29YHdn6wefFPwLvu>YW6O9{e=X;6Ve8Sg5D_}-!zYSjVFY#xK6M1b z#JfZMsG?hnr6CqvZ{m22xz3bAw+^A{mVw$@H>%{!5Y(uFz+$nIPM45r^FIwSUbH1e zg>$*=q)W=ouK7)~_k}yigg7p<(4FS(CEQBgoQwTcbKr4cK?^855A8ScdDt0Pw-is# z+vMU~D8}*ZrfR>0mD;+Ev~6USEetKns`$qSFKvyBoO4QP;m zqJ^+>>O$0N?SL$m8tv!K%$ocrS2ks(elm9IUzh z*oFiv3{jba+WERdg948QsrOx`IeWeIZkVXDq`m!j<2oyRfk5Y(PoHlK0>0ZIi$W{_ zPT#Y9nD8}tPw^ukerxWBhknEL_snj?YX+}61`Ox|q75M^Fl04-t)HXCxwAL4z7u3f zbImqYpVU8-SyFab>3)KRPE&4#umVDD4a5A17CmFJh+ZE0A11)i|@V_+!>~@odZt4P+7cFW+ub=JH!z zq~TVENK@yJCwtnw3!6W4gaJFQonu{{;Fkeco>tE+U#uxDI`5XFY8&+_6*L?cCcEHE ztzP_xK63St%v3nK8*zR$E)o5o$w*!vO6Z@NCOh{LsFvvG=sbC~+ocLzK>OwJXFYyG zT=Ts9x*C53oe*OEPPcEvUi1q}>UGM9K=ux5gOAz9YTZ)VMMK%SYdL}7ytRDcrvWCE zKmhW5&6Tfbdp&{7Yw6bGarF3!0JRNywA)qQN07UI6Q{SLt~9%jE8x4WbjngA)35i% zYPrInt0Mbl=a~7m6t~oMYvki+gU>ik*G~L;3=@05tifE*>Y|Cmkei-PrCyKkTs+^@ z7(brwa0B+VlQMR?EVKba+_iM7*BxsXv@;ZWsN11!BnMog(n(HvR+2Pd1N`=pwUpF< E0gC7gr~m)} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/ponder/train_station/assembly.nbt b/src/main/resources/assets/create/ponder/train_station/assembly.nbt index e6a24ee9c3ade35fe9bfb0d95b9117876bf48d58..4c325c08e59068a2b7ccce9eb03356315f3f74c3 100644 GIT binary patch literal 2083 zcma)(dpr~BAIHnda3T&7VWN?v*c|sdM1Z}RW&^!h!2Jg@ij{l1>>=kt6Xr3B$a-_}<~&ei0J-;UD* zrmYlw*ssI#q~*u$>rB}G_Da7g$_}UQ2w1-y(6+o@bcOR+#dTEV`6j zPaL=GK}gm_awo!glW7nYnw9ydf|hU9oVWHFLf!|av|7PM1p7!=iFP@lOAT@?`ku(j zePNsxqVdrKw7>|IsBaENxE?VkdbA@V4ΡO{ZBg0LqDp^>AqFfam*RfK^P{yG5} zNAEX83%*0%^6S3H%58xH8^k$K7=lk-$`CDOAgc9`6=4`bLR{aoeO;nU`IDe1pAMA% zov24z{-ANbnSgwU$Vuj8H9!s+QOOe&t!w*s1r>ET<}<&tEdZF{3+*12{^mt^p>**lP2JMgk`kk)51kRS8Dor6&S zmHZO_zoeZ^@+p*N_G2!VpdDP-b>pO?Zw0GL@7rGkP!ti-+jO<@Dv?kHtl|>{U3L7P zNa*<^#)??QWCZ>6_^hPtv-Wl2{*%#0<_l1amI5@HLfL5$gJD9?i@}7v5cqj+$yj@B zDlxkFS?MGIkib%VwIGY!kS9i%wD6B~e@f}yn*xiyQ^Zj#lG_Cim~O|_qZTE4zAi?6~jUn0w1&D`i!r23H>4&-!V8P zmQNH9c;X@xd%Be*x;+&&$3zbBU`ZGId|Fse;x&PlcdJIn%GO7A3U)T(`b~^weVx|e zU~uozucJOuIy0qo_WVngpZ2zfJ(t?X4YwC&q9SX+QJXDv_HatB{4KYO7^utuR^+L2p4B^zoMKHvg#?la8KM;wDkj&pMlUdu*x7j)9Z-!t%r30oawL9>ZR5x4o{WkC088uFVYQ z`t_=MIgZhgCdbVBNvu~wh?(7`YYsfTTgwW_`Z3a(IYn*DSuV5RVaG>Bp}jD*D}Cb6 zzO2tPeLU5T3_9E*v*IRi)d)ACitQ5c4vCu&nGVh@3m=Nem&93+wI#5J=Tf_93QX*} z_-V8ZR9KpZ>Kyr9wj09If*Y_}H6?qboEjD*|)2MYBIC_Nm^X@lsrf=Ep zRbg^zwuXtBeHD$?-k@rpVC1n}!HJZPPUwqeWxPdjQRFoq?3H()-W!g(NQkJ2Vnd*e ztIZOP$gO@~L{`cn46V9dz;%$@Oj0D=15ER778rnTy`FeFB*s`0dLvisD>SI#Go+`> zdhc+)vw%Jsz2ES{;QOmz;yJ4Lp^)7zU&-fbr5u+)9db#iHXyqrA%~1Un z`1E#(@%<3EgteO9ve*PazFyJ9e8NceudDefX<+*m$cs{VLEF zJIT^U60NN!4z=H7YQ=aE>T20mx@T-~ra^FBhar~~bhcn_6tQ<#rJ7y8p+&9=EdoZn z_ysJk30yXjU?CJ@%};jTBQoB#Rma`w4$r3lc*>U{Gp=1U!g~T8K*?+2!`LXjff&R8UP(n4o#QN`#ExlJYrqz|! zydcD01c~CH)w>EcUV4rs_)wJkF(;gy0U70%-nlj>W<4sLbo=Xm_{m>LW8=QM@=_3#l-5WP$xRFhE%p}uLo#!$?rI6;l!?OyhK?&Md zV%at?PbE$Benkle^)t(#upjP5+;DPkfNFoHcg{L~Nj}c8-GXG>a`5l;CVxJHwp#^( z&3a!v^=ozALBCG!3%x*0U5RmKdliG5bux<^w#E&K7>jTablZ~2KoynbrgxQ?x3E%8 zPgIkSOGuT!AOu+BQTXV2FH`sG%7z@!i^8x#>dm)qJoO4a{GJi>?1u?RG(!ZOD=Kt; tD9~b2!?d|jtgtEY*S}f3AKrh?$JAR=)VV|3IPBB literal 1985 zcma)(dpr|*AIHpOLTLoFk){R+dgeAO6F##9HM{DG}x6kIChD)9y=x2s-^2D9NC z`>(E^Z;x0%z&Wg|R7sArTe15b5^LW2>gE3I?umY*#bM0Wg_`AOcc_{75idwqGJ5pi zvl@%n_|!}rl@lu&3pEKXnVcN2D3f@mNmpxT0Yx2*&gY|)3>GDbuMX)G9`!)at5)|x z-5~_2pioGwE$pm(-&nwun)sPo_HPg;dD^d`A&j2S`=wX_RTnJtm zdoP(yR+eTBjgA6ThyA<1NpcH@0T9}+yB6WzI~sOqmk^#R zkv8%zWv4t9OYZi$Ta0(oc09&i>fZ-Ohb`@S|9Zy%wopR;Zm{|Hf%zfd1@>6Uo+#p@ z^&bKhf)>Ja&YdQ_^vw!#aI{GaMMJPsLFm0#hy3T8v&lUPYL1As3)Q5OX^Ud(M#4*r z)q{j|2*Fm}MJu;fxqmz(D2&l`o=XKLzrON0Z`d?zt3VjqxHITfR{2%9#$Z^YL1|KX zZk2~3Zcgt;v8bQrNv_U_v2A*RWt6)u=M9JJqD$_Z0BL~^Efp?n&x=cin(YO#iD}{H z3KWTXQC0S80^`Rf`H5b8>t;st4yn*v_Jitb{%+f;PQi$-=DTAw_6E|A7ko>ggQS~} zPanj&F0phlog3(lWt`&nIh>9h&NAwpaA6@b~ zzBJ!4JT2Krw-cd}VQO@?{2#r#i_zj_1{S`In1kjJYo?{6bOvH7k1NIR9$`PvCB+TMl!=o+fk5!zry99svGQ1O*^bIrr6M4=%#)3W4bnMN zJbiemYPK2gr3DnDkg_`|4hq-TMu>oB%z$eJ<7-13=0ASW1@wn zIO?Y0qk(K^GHRt^^q($W{XZ7e$mspV{+FjiGdIsj(izTS@TH@jk2isi;n+FiHrXNc zEMCPsXvET7^={wRt&z(oF?lFjAaE@d*l%Tw*`CrQ=8r@3B$pLE)z?8jgF|H*@y(_3 zQqae>CUSTD@f(f|-W-TDbKh``WD#a~&rFUBJ7;=%<&!fQYTS0f zlDoZ^`n-+WI_;cj(G4(P1)8ky=cRArvKN{RCyn(6;!+MTuU{j!e*h7RR!%e3+Y<~> zD)?8azXU`mTQVFjiQgnV;<&-*HAT?tARqtz&Ba^(M!G-8d5hk1pIadXc=C4RB>3vB z!rFU7dexT~$88VMP0D1=h`nFERlyubIUNhb;OT<#`ip-)r7ryTyh_nUTl;TI{YdjK zUbBlf`jK`F*Rnw`SLxj2lxP#MLK_z&rIdWBH^dx|NcFjy_m-97e7AEg#DfU+$WAun z_n|C~KeiJGl4ra?dCfw%x@T*3uPagriB*i>+*FAK*ZLjo# zXK#R*Ae9nU5*-*AotOBSu8$~vfYV^M^c7mXF|(x^gg