mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-27 23:47:38 +01:00
Train route Titles
- Schedules now display stops in their tooltip - Schedules can now be given a name through one of their instructions - Fixed Display boards rendering cogs on the wrong axis
This commit is contained in:
parent
f2850183f5
commit
0c6a23db83
41 changed files with 719 additions and 516 deletions
|
@ -543,22 +543,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
|
|||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
7fbb25c577025ff61388c54c43401d8bb80723dd assets/create/lang/en_ud.json
|
||||
d19d6fb4534f1a3cdc05d98e2368cb622cb0b35c assets/create/lang/en_us.json
|
||||
b23660c03917a455183094b16eee6574790856cd assets/create/lang/unfinished/de_de.json
|
||||
6afa96843a684ce21a1d86b1f92741a9683ee4b9 assets/create/lang/unfinished/es_cl.json
|
||||
9d8088da986e4d2a16cd68f29db9a72170868053 assets/create/lang/unfinished/es_es.json
|
||||
0b4738efc913fdee63681abe73b2eb0f30b7248b assets/create/lang/unfinished/fr_fr.json
|
||||
b42daac1a01bfcbdc1b029f343175211cc6efdbd assets/create/lang/unfinished/it_it.json
|
||||
0b73ce20763075102b6a034dd261796a47bbaf11 assets/create/lang/unfinished/ja_jp.json
|
||||
973bfaaaffbfc6a1577073262faf3960e4b0e81d assets/create/lang/unfinished/ko_kr.json
|
||||
18491774d2545653fba5471e166136e8662d8c7f assets/create/lang/unfinished/nl_nl.json
|
||||
ff022ea6d4d89f0f156bebbe9305f8a114bccf0f assets/create/lang/unfinished/pl_pl.json
|
||||
df3767bf9e308e77597d173fb88c6c3f113a00af assets/create/lang/unfinished/pt_br.json
|
||||
ff50da076781c6545bb7dc35898d6ff91bec8952 assets/create/lang/unfinished/pt_pt.json
|
||||
ed7386a57b1758cda9d43ddf12236e56f3394649 assets/create/lang/unfinished/ro_ro.json
|
||||
3a3e94e9a8ef33a7d75e60404e4a3cd0356ee86c assets/create/lang/unfinished/ru_ru.json
|
||||
ca9cdfbe87c61b3d0773aaa2360d6ee0a91cff60 assets/create/lang/unfinished/zh_cn.json
|
||||
8f6fefc6d5aeb0bc180b80dc8229e2c4361bc036 assets/create/lang/unfinished/zh_tw.json
|
||||
0a3b09db8a3bd71570afc1452d62a1fa6bd22baa assets/create/lang/en_us.json
|
||||
7ac6b939d4d1b574806ac3fa3ec495498c9c00a6 assets/create/lang/unfinished/de_de.json
|
||||
58a1b86058fcebf323e2208ba26df584d42f9f97 assets/create/lang/unfinished/es_cl.json
|
||||
1419151466490bfa42b84a99e0e296b54e1aeec5 assets/create/lang/unfinished/es_es.json
|
||||
a366bd2c9b80079b9c42572623165497b6d49531 assets/create/lang/unfinished/fr_fr.json
|
||||
b21c2d0a7cdf713492ab1eb85061df8c73a9d9b9 assets/create/lang/unfinished/it_it.json
|
||||
9874ddfacd2effec2eb852ea9cc009923e372ae5 assets/create/lang/unfinished/ja_jp.json
|
||||
0334b52e3e84870e84fce1e485c6153456dc84e9 assets/create/lang/unfinished/ko_kr.json
|
||||
7f0bd618c72b9743832a7133db0359f546b48f5e assets/create/lang/unfinished/nl_nl.json
|
||||
f6826d25ea7aca1db76e806a44434f64fb11e6b2 assets/create/lang/unfinished/pl_pl.json
|
||||
5ff6c067e106418b32dbb97b3bce56a6990eaf67 assets/create/lang/unfinished/pt_br.json
|
||||
8e639a6e5337e7723c454b3d01dd70e9715318fe assets/create/lang/unfinished/pt_pt.json
|
||||
763413532441a056bd88bbcea394fcf9e50e8c29 assets/create/lang/unfinished/ro_ro.json
|
||||
24430fe32f666e6df5fa9185dabedbe9746155d2 assets/create/lang/unfinished/ru_ru.json
|
||||
9955890700831881c15b3df9d720448c09ae341e assets/create/lang/unfinished/zh_cn.json
|
||||
7294335fc11c054fb761a251493b17866f01f0c2 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
|
||||
|
|
|
@ -893,6 +893,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "Clockwise",
|
||||
"create.generic.counter_clockwise": "Counter-Clockwise",
|
||||
"create.generic.in_quotes": "\"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Scroll",
|
||||
"create.action.confirm": "Confirm",
|
||||
|
@ -1336,24 +1337,27 @@
|
|||
"create.gui.schedule.lmb_edit": "Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "Duplicate",
|
||||
"create.gui.schedule.remove_entry": "Remove Stop",
|
||||
"create.gui.schedule.add_entry": "Add Stop",
|
||||
"create.gui.schedule.remove_entry": "Remove Action",
|
||||
"create.gui.schedule.add_entry": "Add Action",
|
||||
"create.gui.schedule.move_up": "Move up",
|
||||
"create.gui.schedule.move_down": "Move down",
|
||||
"create.gui.schedule.add_condition": "Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "Next Stop:",
|
||||
"create.schedule.destination.editor": "Destination Editor",
|
||||
"create.schedule.destination.filtered": "Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "Station: %1$s",
|
||||
"create.schedule.destination.filter": "Station Name",
|
||||
"create.schedule.destination.filter_2": "Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "Nearest Station",
|
||||
"create.schedule.destination.redstone": "Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "Continue when:",
|
||||
"create.schedule.instruction_type": "Next Action:",
|
||||
"create.schedule.instruction.editor": "Instruction Editor",
|
||||
"create.schedule.instruction.destination": "Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "Continue if/after:",
|
||||
"create.schedule.condition.editor": "Condition Editor",
|
||||
"create.schedule.condition.delay": "Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1514",
|
||||
"_": "Missing Localizations: 1518",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "Uhrzeigersinn",
|
||||
"create.generic.counter_clockwise": "Gegen-Uhrzeigersinn",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Wechseln",
|
||||
"create.action.confirm": "Bestätigen",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 525",
|
||||
"_": "Missing Localizations: 529",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "En sentido del Reloj",
|
||||
"create.generic.counter_clockwise": "Al contrario del Reloj",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Rueda",
|
||||
"create.action.confirm": "Confirmar",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 196",
|
||||
"_": "Missing Localizations: 200",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "En el sentido de las agujas del reloj",
|
||||
"create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Desplazar",
|
||||
"create.action.confirm": "Confirmar",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1776",
|
||||
"_": "Missing Localizations: 1780",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smS",
|
||||
"create.generic.clockwise": "dans le sens horaire",
|
||||
"create.generic.counter_clockwise": "dans le sens anti-horaire",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Faire défiler",
|
||||
"create.action.confirm": "Confirmer",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1465",
|
||||
"_": "Missing Localizations: 1469",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$s mB",
|
||||
"create.generic.clockwise": "Senso orario",
|
||||
"create.generic.counter_clockwise": "Senso anti-orario",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Scorri",
|
||||
"create.action.confirm": "Conferma",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 191",
|
||||
"_": "Missing Localizations: 195",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "時計回り",
|
||||
"create.generic.counter_clockwise": "反時計回り",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "スクロール",
|
||||
"create.action.confirm": "確認",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 191",
|
||||
"_": "Missing Localizations: 195",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "시계 방향",
|
||||
"create.generic.counter_clockwise": "시계 반대 방향",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "스크롤하세요",
|
||||
"create.action.confirm": "확인",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2129",
|
||||
"_": "Missing Localizations: 2133",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB",
|
||||
"create.generic.clockwise": "UNLOCALIZED: Clockwise",
|
||||
"create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Scroll",
|
||||
"create.action.confirm": "Bevestigen",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 564",
|
||||
"_": "Missing Localizations: 568",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smW",
|
||||
"create.generic.clockwise": "Zgodnie ze wskazówkami zegara",
|
||||
"create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Przewiń",
|
||||
"create.action.confirm": "Potwierdź",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1376",
|
||||
"_": "Missing Localizations: 1380",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "Sentido horário",
|
||||
"create.generic.counter_clockwise": "Sentido anti-horário",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Rolar",
|
||||
"create.action.confirm": "Confirmar",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1748",
|
||||
"_": "Missing Localizations: 1752",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "Sentido horário",
|
||||
"create.generic.counter_clockwise": "Sentido anti-horário",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Rolar",
|
||||
"create.action.confirm": "Confirmar",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 192",
|
||||
"_": "Missing Localizations: 196",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "În sensul acelor de ceasornic",
|
||||
"create.generic.counter_clockwise": "În sensul invers acelor de ceasornic",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Derulează",
|
||||
"create.action.confirm": "Confirmă",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 569",
|
||||
"_": "Missing Localizations: 573",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "По часовой стрелке",
|
||||
"create.generic.counter_clockwise": "Против часовой стрелки",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Прокрутка",
|
||||
"create.action.confirm": "Подтвердить",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 191",
|
||||
"_": "Missing Localizations: 195",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "顺时针方向",
|
||||
"create.generic.counter_clockwise": "逆时针方向",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "滚轮",
|
||||
"create.action.confirm": "确认",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 583",
|
||||
"_": "Missing Localizations: 587",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -894,6 +894,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "順時鐘方向",
|
||||
"create.generic.counter_clockwise": "逆時鐘方向",
|
||||
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
|
||||
|
||||
"create.action.scroll": "滾輪",
|
||||
"create.action.confirm": "確認",
|
||||
|
@ -1337,24 +1338,27 @@
|
|||
"create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Stop",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Stop",
|
||||
"create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action",
|
||||
"create.gui.schedule.add_entry": "UNLOCALIZED: Add Action",
|
||||
"create.gui.schedule.move_up": "UNLOCALIZED: Move up",
|
||||
"create.gui.schedule.move_down": "UNLOCALIZED: Move down",
|
||||
"create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.destination.editor": "UNLOCALIZED: Destination Editor",
|
||||
"create.schedule.destination.filtered": "UNLOCALIZED: Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "UNLOCALIZED: Station: %1$s",
|
||||
"create.schedule.destination.filter": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.destination.filter_2": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "UNLOCALIZED: Nearest Station",
|
||||
"create.schedule.destination.redstone": "UNLOCALIZED: Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue when:",
|
||||
"create.schedule.instruction_type": "UNLOCALIZED: Next Action:",
|
||||
"create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor",
|
||||
"create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name",
|
||||
"create.schedule.condition_type": "UNLOCALIZED: Continue if/after:",
|
||||
"create.schedule.condition.editor": "UNLOCALIZED: Condition Editor",
|
||||
"create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s",
|
||||
|
|
|
@ -321,7 +321,9 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
|
|||
return;
|
||||
if (!(passenger instanceof LivingEntity living))
|
||||
return;
|
||||
float prevAngle = living.getYRot();
|
||||
float angle = AngleHelper.deg(-Mth.atan2(motion.x, motion.z));
|
||||
angle = AngleHelper.angleLerp(0.4f, prevAngle, angle);
|
||||
if (level.isClientSide) {
|
||||
living.lerpTo(0, 0, 0, 0, 0, 0, false);
|
||||
living.lerpHeadTo(0, 0);
|
||||
|
|
|
@ -331,7 +331,7 @@ public class Train {
|
|||
|
||||
GlobalStation destination = navigation.destination;
|
||||
if (!navigatingManually && fullRefresh) {
|
||||
GlobalStation preferredDestination = runtime.findNextStation();
|
||||
GlobalStation preferredDestination = runtime.startCurrentInstruction();
|
||||
if (preferredDestination != null)
|
||||
destination = preferredDestination;
|
||||
}
|
||||
|
|
|
@ -234,7 +234,8 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer {
|
|||
|
||||
@Override
|
||||
protected SuperByteBuffer getRotatedModel(KineticTileEntity te, BlockState state) {
|
||||
return CachedBufferer.partial(AllBlockPartials.SHAFTLESS_COGWHEEL, state);
|
||||
return CachedBufferer.partialFacingVertical(AllBlockPartials.SHAFTLESS_COGWHEEL, state,
|
||||
state.getValue(FlapDisplayBlock.HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule;
|
||||
|
||||
public class RunningScheduleScreen {
|
||||
|
||||
/**
|
||||
* use the same rendering and mouse handling from schedule screen but add
|
||||
* progress of train based on ScheduleRuntime
|
||||
*/
|
||||
|
||||
}
|
|
@ -13,10 +13,9 @@ import com.simibubi.create.content.logistics.trains.management.schedule.conditio
|
|||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.StationPoweredCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.StationUnloadedCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.TimeOfDayCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.FilteredDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.NearestDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.RedstoneDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
|
@ -29,15 +28,14 @@ import net.minecraft.resources.ResourceLocation;
|
|||
|
||||
public class Schedule {
|
||||
|
||||
public static List<Pair<ResourceLocation, Supplier<? extends ScheduleDestination>>> DESTINATION_TYPES =
|
||||
public static List<Pair<ResourceLocation, Supplier<? extends ScheduleInstruction>>> INSTRUCTION_TYPES =
|
||||
new ArrayList<>();
|
||||
public static List<Pair<ResourceLocation, Supplier<? extends ScheduleWaitCondition>>> CONDITION_TYPES =
|
||||
new ArrayList<>();
|
||||
|
||||
static {
|
||||
registerDestination("filtered", FilteredDestination::new);
|
||||
registerDestination("nearest", NearestDestination::new);
|
||||
registerDestination("redstone", RedstoneDestination::new);
|
||||
registerInstruction("destination", DestinationInstruction::new);
|
||||
registerInstruction("rename", ChangeTitleInstruction::new);
|
||||
registerCondition("delay", ScheduledDelay::new);
|
||||
registerCondition("time_of_day", TimeOfDayCondition::new);
|
||||
registerCondition("fluid_threshold", FluidThresholdCondition::new);
|
||||
|
@ -47,8 +45,8 @@ public class Schedule {
|
|||
registerCondition("powered", StationPoweredCondition::new);
|
||||
}
|
||||
|
||||
private static void registerDestination(String name, Supplier<? extends ScheduleDestination> factory) {
|
||||
DESTINATION_TYPES.add(Pair.of(Create.asResource(name), factory));
|
||||
private static void registerInstruction(String name, Supplier<? extends ScheduleInstruction> factory) {
|
||||
INSTRUCTION_TYPES.add(Pair.of(Create.asResource(name), factory));
|
||||
}
|
||||
|
||||
private static void registerCondition(String name, Supplier<? extends ScheduleWaitCondition> factory) {
|
||||
|
@ -56,7 +54,7 @@ public class Schedule {
|
|||
}
|
||||
|
||||
public static <T> List<? extends Component> getTypeOptions(List<Pair<ResourceLocation, T>> list) {
|
||||
String langSection = list.equals(DESTINATION_TYPES) ? "destination." : "condition.";
|
||||
String langSection = list.equals(INSTRUCTION_TYPES) ? "instruction." : "condition.";
|
||||
return list.stream()
|
||||
.map(Pair::getFirst)
|
||||
.map(rl -> rl.getNamespace() + ".schedule." + langSection + rl.getPath())
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.ScheduleWaitCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
|
@ -12,7 +12,7 @@ import net.minecraft.nbt.ListTag;
|
|||
import net.minecraft.nbt.Tag;
|
||||
|
||||
public class ScheduleEntry {
|
||||
public ScheduleDestination destination;
|
||||
public ScheduleInstruction instruction;
|
||||
public List<List<ScheduleWaitCondition>> conditions;
|
||||
|
||||
public ScheduleEntry() {
|
||||
|
@ -26,20 +26,23 @@ public class ScheduleEntry {
|
|||
public CompoundTag write() {
|
||||
CompoundTag tag = new CompoundTag();
|
||||
ListTag outer = new ListTag();
|
||||
tag.put("Destination", destination.write());
|
||||
tag.put("Instruction", instruction.write());
|
||||
if (!instruction.supportsConditions())
|
||||
return tag;
|
||||
for (List<ScheduleWaitCondition> column : conditions)
|
||||
outer.add(NBTHelper.writeCompoundList(column, ScheduleWaitCondition::write));
|
||||
tag.put("WaitConditions", outer);
|
||||
tag.put("Conditions", outer);
|
||||
return tag;
|
||||
}
|
||||
|
||||
public static ScheduleEntry fromTag(CompoundTag tag) {
|
||||
ScheduleEntry entry = new ScheduleEntry();
|
||||
entry.destination = ScheduleDestination.fromTag(tag.getCompound("Destination"));
|
||||
entry.instruction = ScheduleInstruction.fromTag(tag.getCompound("Instruction"));
|
||||
entry.conditions = new ArrayList<>();
|
||||
for (Tag t : tag.getList("WaitConditions", Tag.TAG_LIST))
|
||||
if (t instanceof ListTag list)
|
||||
entry.conditions.add(NBTHelper.readCompoundList(list, ScheduleWaitCondition::fromTag));
|
||||
if (entry.instruction.supportsConditions())
|
||||
for (Tag t : tag.getList("Conditions", Tag.TAG_LIST))
|
||||
if (t instanceof ListTag list)
|
||||
entry.conditions.add(NBTHelper.readCompoundList(list, ScheduleWaitCondition::fromTag));
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllContainerTypes;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
import com.simibubi.create.content.logistics.trains.entity.CarriageContraption;
|
||||
import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEntity;
|
||||
import com.simibubi.create.content.logistics.trains.entity.Train;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
|
@ -13,6 +16,8 @@ import net.minecraft.ChatFormatting;
|
|||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
|
@ -27,8 +32,11 @@ import net.minecraft.world.inventory.AbstractContainerMenu;
|
|||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
|
||||
public class ScheduleItem extends Item implements MenuProvider {
|
||||
|
@ -122,6 +130,29 @@ public class ScheduleItem extends Item implements MenuProvider {
|
|||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void appendHoverText(ItemStack stack, Level worldIn, List<Component> tooltip, TooltipFlag flagIn) {
|
||||
Schedule schedule = getSchedule(stack);
|
||||
if (schedule == null || schedule.entries.isEmpty())
|
||||
return;
|
||||
|
||||
MutableComponent caret = new TextComponent("> ").withStyle(ChatFormatting.GRAY);
|
||||
MutableComponent arrow = new TextComponent("-> ").withStyle(ChatFormatting.GRAY);
|
||||
|
||||
List<ScheduleEntry> entries = schedule.entries;
|
||||
for (int i = 0; i < entries.size(); i++) {
|
||||
boolean current = i == schedule.savedProgress && schedule.entries.size() > 1;
|
||||
ScheduleEntry entry = entries.get(i);
|
||||
if (!(entry.instruction instanceof DestinationInstruction destination))
|
||||
continue;
|
||||
ChatFormatting format = current ? ChatFormatting.YELLOW : ChatFormatting.GOLD;
|
||||
MutableComponent prefix = current ? arrow : caret;
|
||||
tooltip.add(prefix.copy()
|
||||
.append(new TextComponent(destination.getFilter()).withStyle(format)));
|
||||
}
|
||||
}
|
||||
|
||||
public static Schedule getSchedule(ItemStack pStack) {
|
||||
if (!pStack.hasTag())
|
||||
return null;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.trains.management.schedule;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.logistics.trains.entity.Train;
|
||||
|
@ -11,8 +12,9 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePoi
|
|||
import com.simibubi.create.content.logistics.trains.management.edgePoint.station.GlobalStation;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.ScheduleWaitCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.TimedWaitCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.FilteredDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.config.CTrains;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
|
@ -42,6 +44,7 @@ public class ScheduleRuntime {
|
|||
int cooldown;
|
||||
List<Integer> conditionProgress;
|
||||
List<CompoundTag> conditionContext;
|
||||
String currentTitle;
|
||||
|
||||
int ticksInTransit;
|
||||
List<Integer> predictionTicks;
|
||||
|
@ -107,12 +110,10 @@ public class ScheduleRuntime {
|
|||
return;
|
||||
}
|
||||
|
||||
GlobalStation nextStation = findNextStation();
|
||||
if (nextStation == null) {
|
||||
train.status.failedNavigation();
|
||||
cooldown = INTERVAL;
|
||||
GlobalStation nextStation = startCurrentInstruction();
|
||||
if (nextStation == null)
|
||||
return;
|
||||
}
|
||||
|
||||
train.status.successfulNavigation();
|
||||
if (nextStation == train.getCurrentStation()) {
|
||||
state = State.IN_TRANSIT;
|
||||
|
@ -146,14 +147,16 @@ public class ScheduleRuntime {
|
|||
}
|
||||
}
|
||||
|
||||
public GlobalStation findNextStation() {
|
||||
public GlobalStation startCurrentInstruction() {
|
||||
ScheduleEntry entry = schedule.entries.get(currentEntry);
|
||||
ScheduleDestination destination = entry.destination;
|
||||
ScheduleInstruction instruction = entry.instruction;
|
||||
|
||||
if (destination instanceof FilteredDestination filtered) {
|
||||
String regex = filtered.nameFilter.replace("*", ".*");
|
||||
if (instruction instanceof DestinationInstruction destination) {
|
||||
String regex = destination.getFilter()
|
||||
.replace("*", ".*");
|
||||
GlobalStation best = null;
|
||||
double bestCost = Double.MAX_VALUE;
|
||||
|
||||
for (GlobalStation globalStation : train.graph.getPoints(EdgePointType.STATION)) {
|
||||
if (!globalStation.name.matches(regex))
|
||||
continue;
|
||||
|
@ -166,9 +169,23 @@ public class ScheduleRuntime {
|
|||
best = globalStation;
|
||||
bestCost = cost;
|
||||
}
|
||||
|
||||
if (best == null) {
|
||||
train.status.failedNavigation();
|
||||
cooldown = INTERVAL;
|
||||
return null;
|
||||
}
|
||||
|
||||
return best;
|
||||
}
|
||||
|
||||
if (instruction instanceof ChangeTitleInstruction title) {
|
||||
currentTitle = title.getScheduleTitle();
|
||||
state = State.PRE_TRANSIT;
|
||||
currentEntry++;
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -196,6 +213,7 @@ public class ScheduleRuntime {
|
|||
paused = true;
|
||||
isAutoSchedule = false;
|
||||
currentEntry = 0;
|
||||
currentTitle = "";
|
||||
schedule = null;
|
||||
state = State.PRE_TRANSIT;
|
||||
conditionProgress = new ArrayList<>();
|
||||
|
@ -213,56 +231,68 @@ public class ScheduleRuntime {
|
|||
if (state == State.POST_TRANSIT || current >= entryCount) {
|
||||
GlobalStation currentStation = train.getCurrentStation();
|
||||
if (currentStation != null)
|
||||
predictions.add(createPrediction(current, currentStation.name, 0));
|
||||
predictions.add(createPrediction(current, currentStation.name, currentTitle, 0));
|
||||
int departureTime = estimateStayDuration(current);
|
||||
if (departureTime == -1)
|
||||
accumulatedTime = -1;
|
||||
|
||||
} else if (train.navigation.destination != null) {
|
||||
CTrains conf = AllConfigs.SERVER.trains;
|
||||
double speed = (conf.getTopSpeedMPT() + conf.getTurningTopSpeedMPT()) / 2;
|
||||
int timeRemaining = (int) (train.navigation.distanceToDestination / speed) * 2;
|
||||
} else {
|
||||
GlobalStation destination = train.navigation.destination;
|
||||
if (destination != null) {
|
||||
CTrains conf = AllConfigs.SERVER.trains;
|
||||
double speed = (conf.getTopSpeedMPT() + conf.getTurningTopSpeedMPT()) / 2;
|
||||
int timeRemaining = (int) (train.navigation.distanceToDestination / speed) * 2;
|
||||
|
||||
if (predictionTicks.size() > current && train.navigation.distanceStartedAt != 0) {
|
||||
float predictedTime = predictionTicks.get(current);
|
||||
if (predictedTime > 0) {
|
||||
predictedTime *=
|
||||
Mth.clamp(train.navigation.distanceToDestination / train.navigation.distanceStartedAt, 0, 1);
|
||||
timeRemaining = (timeRemaining + (int) predictedTime) / 2;
|
||||
if (predictionTicks.size() > current && train.navigation.distanceStartedAt != 0) {
|
||||
float predictedTime = predictionTicks.get(current);
|
||||
if (predictedTime > 0) {
|
||||
predictedTime *= Mth
|
||||
.clamp(train.navigation.distanceToDestination / train.navigation.distanceStartedAt, 0, 1);
|
||||
timeRemaining = (timeRemaining + (int) predictedTime) / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
accumulatedTime += timeRemaining;
|
||||
predictions.add(createPrediction(current, train.navigation.destination.name, accumulatedTime));
|
||||
accumulatedTime += timeRemaining;
|
||||
predictions.add(createPrediction(current, destination.name, currentTitle, accumulatedTime));
|
||||
|
||||
int departureTime = estimateStayDuration(current);
|
||||
if (departureTime != -1)
|
||||
accumulatedTime += departureTime;
|
||||
if (departureTime == -1)
|
||||
accumulatedTime = -1;
|
||||
int departureTime = estimateStayDuration(current);
|
||||
if (departureTime != -1)
|
||||
accumulatedTime += departureTime;
|
||||
if (departureTime == -1)
|
||||
accumulatedTime = -1;
|
||||
|
||||
} else
|
||||
predictForEntry(current, accumulatedTime, predictions);
|
||||
} else
|
||||
predictForEntry(current, currentTitle, accumulatedTime, predictions);
|
||||
}
|
||||
|
||||
// Upcoming
|
||||
String currentTitle = this.currentTitle;
|
||||
for (int i = 1; i < entryCount; i++) {
|
||||
int index = (i + current) % entryCount;
|
||||
if (index == 0 && !schedule.cyclic)
|
||||
break;
|
||||
accumulatedTime = predictForEntry(index, accumulatedTime, predictions);
|
||||
|
||||
if (schedule.entries.get(index).instruction instanceof ChangeTitleInstruction title) {
|
||||
currentTitle = title.getScheduleTitle();
|
||||
continue;
|
||||
}
|
||||
|
||||
accumulatedTime = predictForEntry(index, currentTitle, accumulatedTime, predictions);
|
||||
}
|
||||
|
||||
predictions.removeIf(Objects::isNull);
|
||||
return predictions;
|
||||
}
|
||||
|
||||
private int predictForEntry(int index, int accumulatedTime, Collection<TrainDeparturePrediction> predictions) {
|
||||
private int predictForEntry(int index, String currentTitle, int accumulatedTime,
|
||||
Collection<TrainDeparturePrediction> predictions) {
|
||||
ScheduleEntry entry = schedule.entries.get(index);
|
||||
if (!(entry.destination instanceof FilteredDestination filter))
|
||||
if (!(entry.instruction instanceof DestinationInstruction filter))
|
||||
return accumulatedTime;
|
||||
if (predictionTicks.size() <= currentEntry)
|
||||
return accumulatedTime;
|
||||
if (accumulatedTime == -1) {
|
||||
predictions.add(createPrediction(index, filter.nameFilter, accumulatedTime));
|
||||
predictions.add(createPrediction(index, filter.getFilter(), currentTitle, accumulatedTime));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -277,7 +307,7 @@ public class ScheduleRuntime {
|
|||
accumulatedTime += departureTime;
|
||||
}
|
||||
|
||||
predictions.add(createPrediction(index, filter.nameFilter, accumulatedTime));
|
||||
predictions.add(createPrediction(index, filter.getFilter(), currentTitle, accumulatedTime));
|
||||
|
||||
if (departureTime == -1)
|
||||
return -1;
|
||||
|
@ -301,20 +331,22 @@ public class ScheduleRuntime {
|
|||
return 5; // TODO properly ask conditions for time prediction
|
||||
}
|
||||
|
||||
private TrainDeparturePrediction createPrediction(int index, String destination, int time) {
|
||||
if (++index >= schedule.entries.size()) {
|
||||
private TrainDeparturePrediction createPrediction(int index, String destination, String currentTitle, int time) {
|
||||
if (index >= schedule.entries.size()) {
|
||||
if (!schedule.cyclic)
|
||||
return new TrainDeparturePrediction(train, time, new TextComponent(" "), destination);
|
||||
index %= schedule.entries.size();
|
||||
}
|
||||
|
||||
ScheduleEntry scheduleEntry = schedule.entries.get(index);
|
||||
if (!(scheduleEntry.destination instanceof FilteredDestination fd))
|
||||
return new TrainDeparturePrediction(train, time, new TextComponent(" "), destination);
|
||||
if (!(scheduleEntry.instruction instanceof DestinationInstruction instruction))
|
||||
return null;
|
||||
|
||||
String station = fd.nameFilter.replaceAll("\\*", "")
|
||||
.trim();
|
||||
return new TrainDeparturePrediction(train, time, new TextComponent(station), destination);
|
||||
return new TrainDeparturePrediction(train, time,
|
||||
new TextComponent(currentTitle.isBlank() ? instruction.getFilter()
|
||||
.replaceAll("\\*", "")
|
||||
.trim() : currentTitle),
|
||||
destination);
|
||||
}
|
||||
|
||||
public CompoundTag write() {
|
||||
|
@ -363,7 +395,7 @@ public class ScheduleRuntime {
|
|||
discardSchedule();
|
||||
return stack;
|
||||
}
|
||||
|
||||
|
||||
public void setSchedulePresentClientside(boolean present) {
|
||||
schedule = present ? new Schedule() : null;
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@ import com.mojang.math.Matrix4f;
|
|||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.ScheduleWaitCondition;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.ScheduledDelay;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.condition.TimedWaitCondition.TimeUnit;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.FilteredDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleDestination;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction;
|
||||
import com.simibubi.create.foundation.gui.AllGuiTextures;
|
||||
import com.simibubi.create.foundation.gui.AllIcons;
|
||||
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
||||
|
@ -66,7 +66,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
private LerpedFloat scroll = LerpedFloat.linear()
|
||||
.startWithValue(0);
|
||||
|
||||
Schedule schedule;
|
||||
private Schedule schedule;
|
||||
|
||||
private IconButton confirmButton;
|
||||
private IconButton cyclicButton;
|
||||
|
@ -75,7 +75,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
private IconButton resetProgress;
|
||||
private IconButton skipProgress;
|
||||
|
||||
private ScheduleDestination editingDestination;
|
||||
private ScheduleInstruction editingDestination;
|
||||
private ScheduleWaitCondition editingCondition;
|
||||
private SelectionScrollInput scrollInput;
|
||||
private Label scrollInputLabel;
|
||||
|
@ -159,6 +159,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
cyclicIndicator.visible = false;
|
||||
skipProgress.visible = false;
|
||||
resetProgress.visible = false;
|
||||
|
||||
scrollInput = new SelectionScrollInput(leftPos + 56, topPos + 65, 143, 16);
|
||||
scrollInputLabel = new Label(leftPos + 59, topPos + 69, new TextComponent("")).withShadow();
|
||||
editorConfirm = new IconButton(leftPos + 56 + 168, topPos + 65 + 22, AllIcons.I_CONFIRM);
|
||||
|
@ -167,20 +168,20 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
menu.slotsActive = true;
|
||||
menu.targetSlotActive = field.needsSlot();
|
||||
|
||||
if (field instanceof ScheduleDestination dest) {
|
||||
if (field instanceof ScheduleInstruction instruction) {
|
||||
int startIndex = 0;
|
||||
for (int i = 0; i < Schedule.DESTINATION_TYPES.size(); i++)
|
||||
if (Schedule.DESTINATION_TYPES.get(i)
|
||||
for (int i = 0; i < Schedule.INSTRUCTION_TYPES.size(); i++)
|
||||
if (Schedule.INSTRUCTION_TYPES.get(i)
|
||||
.getFirst()
|
||||
.equals(dest.getId()))
|
||||
.equals(instruction.getId()))
|
||||
startIndex = i;
|
||||
editingDestination = dest;
|
||||
editingDestination = instruction;
|
||||
updateEditorSubwidgets(editingDestination);
|
||||
scrollInput.forOptions(Schedule.getTypeOptions(Schedule.DESTINATION_TYPES))
|
||||
.titled(Lang.translate("schedule.destination_type"))
|
||||
scrollInput.forOptions(Schedule.getTypeOptions(Schedule.INSTRUCTION_TYPES))
|
||||
.titled(Lang.translate("schedule.instruction_type"))
|
||||
.writingTo(scrollInputLabel)
|
||||
.calling(index -> {
|
||||
ScheduleDestination newlyCreated = Schedule.DESTINATION_TYPES.get(index)
|
||||
ScheduleInstruction newlyCreated = Schedule.INSTRUCTION_TYPES.get(index)
|
||||
.getSecond()
|
||||
.get();
|
||||
if (editingDestination.getId()
|
||||
|
@ -230,19 +231,24 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
cyclicIndicator.visible = true;
|
||||
skipProgress.visible = true;
|
||||
resetProgress.visible = true;
|
||||
|
||||
if (editingCondition == null && editingDestination == null)
|
||||
return;
|
||||
|
||||
removeWidget(scrollInput);
|
||||
removeWidget(scrollInputLabel);
|
||||
removeWidget(editorConfirm);
|
||||
removeWidget(editorDelete);
|
||||
|
||||
IScheduleInput editing = editingCondition == null ? editingDestination : editingCondition;
|
||||
editing.setItem(menu.getSlot(36)
|
||||
.getItem());
|
||||
|
||||
editorSubWidgets.forEach(p -> p.getSecond()
|
||||
.accept(editing, p.getFirst()));
|
||||
editorSubWidgets.forEach(p -> removeWidget(p.getFirst()));
|
||||
editorSubWidgets.clear();
|
||||
|
||||
editorDividers = null;
|
||||
editingCondition = null;
|
||||
editingDestination = null;
|
||||
|
@ -257,7 +263,9 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
editorSubWidgets.forEach(p -> removeWidget(p.getFirst()));
|
||||
editorSubWidgets.clear();
|
||||
editorDividers = new ArrayList<>();
|
||||
|
||||
field.createWidgets(this, editorSubWidgets, editorDividers, leftPos - 2, topPos + 40);
|
||||
|
||||
if (editorSubWidgets.isEmpty())
|
||||
editorDividers = null;
|
||||
editorSubWidgets.forEach(pair -> {
|
||||
|
@ -307,7 +315,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
float scrollOffset = -scroll.getValue(partialTicks);
|
||||
|
||||
for (int i = 0; i <= entries.size(); i++) {
|
||||
|
||||
|
||||
if (schedule.savedProgress == i && !schedule.entries.isEmpty()) {
|
||||
matrixStack.pushPose();
|
||||
float expectedY = scrollOffset + topPos + yOffset + 4;
|
||||
|
@ -348,6 +356,9 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
matrixStack.popPose();
|
||||
endStencil();
|
||||
|
||||
if (!scheduleEntry.instruction.supportsConditions())
|
||||
continue;
|
||||
|
||||
float h = cardHeight - 26;
|
||||
float y1 = cardY + 24 + scrollOffset;
|
||||
float y2 = y1 + h;
|
||||
|
@ -363,7 +374,6 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
continue;
|
||||
|
||||
startStencil(matrixStack, leftPos + 43, topPos + y1, 161, h);
|
||||
|
||||
matrixStack.pushPose();
|
||||
matrixStack.translate(0, scrollOffset, 0);
|
||||
renderScheduleConditions(matrixStack, scheduleEntry, cardY, mouseX, mouseY, partialTicks, cardHeight, i);
|
||||
|
@ -409,7 +419,8 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
int maxRows = 0;
|
||||
for (List<ScheduleWaitCondition> list : entry.conditions)
|
||||
maxRows = Math.max(maxRows, list.size());
|
||||
int cardHeight = cardHeader + 24 + maxRows * 18;
|
||||
boolean supportsConditions = entry.instruction.supportsConditions();
|
||||
int cardHeight = cardHeader + (supportsConditions ? 24 + maxRows * 18 : 4);
|
||||
|
||||
matrixStack.pushPose();
|
||||
matrixStack.translate(leftPos + 25, topPos + yOffset, 0);
|
||||
|
@ -418,7 +429,8 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
UIRenderHelper.drawStretched(matrixStack, 1, 0, cardWidth - 2, cardHeight, zLevel, light);
|
||||
UIRenderHelper.drawStretched(matrixStack, 1, 1, cardWidth - 2, cardHeight - 2, zLevel, dark);
|
||||
UIRenderHelper.drawStretched(matrixStack, 2, 2, cardWidth - 4, cardHeight - 4, zLevel, medium);
|
||||
UIRenderHelper.drawStretched(matrixStack, 2, 2, cardWidth - 4, cardHeader, zLevel, light);
|
||||
UIRenderHelper.drawStretched(matrixStack, 2, 2, cardWidth - 4, cardHeader, zLevel,
|
||||
supportsConditions ? light : medium);
|
||||
|
||||
AllGuiTextures.SCHEDULE_CARD_REMOVE.render(matrixStack, cardWidth - 14, 2);
|
||||
AllGuiTextures.SCHEDULE_CARD_DUPLICATE.render(matrixStack, cardWidth - 14, cardHeight - 14);
|
||||
|
@ -431,12 +443,15 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
|
||||
UIRenderHelper.drawStretched(matrixStack, 8, 0, 3, cardHeight + 10, zLevel,
|
||||
AllGuiTextures.SCHEDULE_STRIP_LIGHT);
|
||||
AllGuiTextures.SCHEDULE_STRIP_TRAVEL.render(matrixStack, 4, 6);
|
||||
AllGuiTextures.SCHEDULE_STRIP_WAIT.render(matrixStack, 4, 28);
|
||||
(supportsConditions ? AllGuiTextures.SCHEDULE_STRIP_TRAVEL : AllGuiTextures.SCHEDULE_STRIP_ACTION)
|
||||
.render(matrixStack, 4, 6);
|
||||
|
||||
Pair<ItemStack, Component> destination = entry.destination.getSummary();
|
||||
if (supportsConditions)
|
||||
AllGuiTextures.SCHEDULE_STRIP_WAIT.render(matrixStack, 4, 28);
|
||||
|
||||
Pair<ItemStack, Component> destination = entry.instruction.getSummary();
|
||||
renderInput(matrixStack, destination, 26, 5, false, 100);
|
||||
entry.destination.renderSpecialIcon(matrixStack, 30, 5);
|
||||
entry.instruction.renderSpecialIcon(matrixStack, 30, 5);
|
||||
|
||||
matrixStack.popPose();
|
||||
|
||||
|
@ -518,7 +533,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
ItemStack stack = pair.getFirst();
|
||||
Component text = pair.getSecond();
|
||||
boolean hasItem = !stack.isEmpty();
|
||||
int fieldSize = getFieldSize(minSize, pair);
|
||||
int fieldSize = Math.min(getFieldSize(minSize, pair), 150);
|
||||
matrixStack.pushPose();
|
||||
|
||||
AllGuiTextures left =
|
||||
|
@ -542,7 +557,8 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
}
|
||||
|
||||
if (text != null)
|
||||
font.drawShadow(matrixStack, text, hasItem ? 28 : 8, 4, 0xff_f2f2ee);
|
||||
font.drawShadow(matrixStack, font.substrByWidth(text, 120)
|
||||
.getString(), hasItem ? 28 : 8, 4, 0xff_f2f2ee);
|
||||
|
||||
matrixStack.popPose();
|
||||
return fieldSize;
|
||||
|
@ -575,28 +591,26 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
int maxRows = 0;
|
||||
for (List<ScheduleWaitCondition> list : entry.conditions)
|
||||
maxRows = Math.max(maxRows, list.size());
|
||||
int cardHeight = CARD_HEADER + 24 + maxRows * 18;
|
||||
int cardHeight = CARD_HEADER + (entry.instruction.supportsConditions() ? 24 + maxRows * 18 : 4);
|
||||
|
||||
if (y >= cardHeight) {
|
||||
if (y >= cardHeight + 5) {
|
||||
y -= cardHeight + 10;
|
||||
if (y < 0)
|
||||
return false;
|
||||
continue;
|
||||
}
|
||||
|
||||
int fieldSize = getFieldSize(100, entry.destination.getSummary());
|
||||
int fieldSize = getFieldSize(100, entry.instruction.getSummary());
|
||||
if (x > 25 && x <= 25 + fieldSize && y > 4 && y <= 20) {
|
||||
List<Component> components = new ArrayList<>();
|
||||
components.add(Lang.translate("schedule.destination_type")
|
||||
.withStyle(ChatFormatting.GOLD));
|
||||
components.addAll(entry.destination.getTitleAs("destination"));
|
||||
components.addAll(entry.instruction.getTitleAs("instruction"));
|
||||
components.add(empty);
|
||||
components.add(clickToEdit);
|
||||
renderTooltip(ms, components, Optional.empty(), mx, my);
|
||||
if (click == 0)
|
||||
startEditing(entry.destination, confirmed -> {
|
||||
startEditing(entry.instruction, confirmed -> {
|
||||
if (confirmed)
|
||||
entry.destination = editingDestination;
|
||||
entry.instruction = editingDestination;
|
||||
}, false);
|
||||
return true;
|
||||
}
|
||||
|
@ -746,7 +760,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
|
||||
renderTooltip(ms, ImmutableList.of(Lang.translate("gui.schedule.add_entry")), Optional.empty(), mx, my);
|
||||
if (click == 0)
|
||||
startEditing(new FilteredDestination(), confirmed -> {
|
||||
startEditing(new DestinationInstruction(), confirmed -> {
|
||||
if (!confirmed)
|
||||
return;
|
||||
|
||||
|
@ -754,7 +768,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
ScheduledDelay delay = new ScheduledDelay();
|
||||
ArrayList<ScheduleWaitCondition> initialConditions = new ArrayList<>();
|
||||
initialConditions.add(delay);
|
||||
entry.destination = editingDestination;
|
||||
entry.instruction = editingDestination;
|
||||
delay.value = 5;
|
||||
delay.timeUnit = TimeUnit.SECONDS;
|
||||
entry.conditions.add(initialConditions);
|
||||
|
@ -935,7 +949,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleContaine
|
|||
AllGuiTextures.PLAYER_INVENTORY.render(pPoseStack, leftPos + 38, topPos + 122);
|
||||
font.draw(pPoseStack, playerInventoryTitle, leftPos + 46, topPos + 128, 0x505050);
|
||||
|
||||
formattedcharsequence = editingCondition == null ? Lang.translate("schedule.destination.editor")
|
||||
formattedcharsequence = editingCondition == null ? Lang.translate("schedule.instruction.editor")
|
||||
.getVisualOrderText()
|
||||
: Lang.translate("schedule.condition.editor")
|
||||
.getVisualOrderText();
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
|
||||
public class ChangeTitleInstruction extends ScheduleInstructionWithEditBox {
|
||||
|
||||
@Override
|
||||
public Pair<ItemStack, Component> getSummary() {
|
||||
return Pair.of(icon(), new TextComponent(getLabelText()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId() {
|
||||
return Create.asResource("rename");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getSecondLineIcon() {
|
||||
return icon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConditions() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getScheduleTitle() {
|
||||
return getLabelText();
|
||||
}
|
||||
|
||||
private ItemStack icon() {
|
||||
return new ItemStack(Items.NAME_TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getSecondLineTooltip() {
|
||||
return ImmutableList.of(Lang.translate("schedule.instruction.name_edit_box"),
|
||||
Lang.translate("schedule.instruction.name_edit_box_1")
|
||||
.withStyle(ChatFormatting.GRAY),
|
||||
Lang.translate("schedule.instruction.name_edit_box_2")
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.components.EditBox;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public class DestinationInstruction extends ScheduleInstructionWithEditBox {
|
||||
|
||||
public boolean isWaypoint;
|
||||
|
||||
@Override
|
||||
public Pair<ItemStack, Component> getSummary() {
|
||||
return Pair.of(AllBlocks.TRACK_STATION.asStack(), new TextComponent(getLabelText()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConditions() {
|
||||
return !isWaypoint;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag) {
|
||||
tag.putBoolean("Waypoint", isWaypoint);
|
||||
super.write(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag) {
|
||||
isWaypoint = tag.getBoolean("Waypoint");
|
||||
super.read(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId() {
|
||||
return Create.asResource("destination");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getSecondLineIcon() {
|
||||
return AllBlocks.TRACK_STATION.asStack();
|
||||
}
|
||||
|
||||
public String getFilter() {
|
||||
return getLabelText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getSecondLineTooltip() {
|
||||
return ImmutableList.of(Lang.translate("schedule.instruction.filter_edit_box"),
|
||||
Lang.translate("schedule.instruction.filter_edit_box_1")
|
||||
.withStyle(ChatFormatting.GRAY),
|
||||
Lang.translate("schedule.instruction.filter_edit_box_2")
|
||||
.withStyle(ChatFormatting.DARK_GRAY),
|
||||
Lang.translate("schedule.instruction.filter_edit_box_3")
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
protected void modifyEditBox(EditBox box) {
|
||||
box.setFilter(s -> StringUtils.countMatches(s, '*') <= 3);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.IScheduleInput;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleScreen;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.components.EditBox;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public class FilteredDestination extends ScheduleDestination {
|
||||
public String nameFilter = "";
|
||||
|
||||
@Override
|
||||
public Pair<ItemStack, Component> getSummary() {
|
||||
return Pair.of(AllBlocks.TRACK_STATION.asStack(), new TextComponent(nameFilter));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag) {
|
||||
nameFilter = tag.getString("Filter");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag) {
|
||||
tag.putString("Filter", nameFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId() {
|
||||
return Create.asResource("filtered");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getSecondLineIcon() {
|
||||
return AllBlocks.TRACK_STATION.asStack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getTitleAs(String type) {
|
||||
return ImmutableList.of(Lang.translate("schedule.destination.filtered_matching",
|
||||
new TextComponent(nameFilter).withStyle(ChatFormatting.YELLOW)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getSecondLineTooltip() {
|
||||
return ImmutableList.of(Lang.translate("schedule.destination.filter"),
|
||||
Lang.translate("schedule.destination.filter_2")
|
||||
.withStyle(ChatFormatting.GRAY),
|
||||
Lang.translate("schedule.destination.filter_3")
|
||||
.withStyle(ChatFormatting.DARK_GRAY),
|
||||
Lang.translate("schedule.destination.filter_4")
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void createWidgets(ScheduleScreen screen,
|
||||
List<Pair<GuiEventListener, BiConsumer<IScheduleInput, GuiEventListener>>> editorSubWidgets,
|
||||
List<Integer> dividers, int x, int y) {
|
||||
super.createWidgets(screen, editorSubWidgets, dividers, x, y);
|
||||
EditBox editBox = new EditBox(screen.getFont(), x + 84, y + 52, 112, 10, new TextComponent(nameFilter));
|
||||
editBox.setBordered(false);
|
||||
editBox.setTextColor(0xFFFFFF);
|
||||
editBox.setValue(nameFilter);
|
||||
editBox.setFilter(s -> StringUtils.countMatches(s, '*') <= 3);
|
||||
editBox.changeFocus(false);
|
||||
editBox.mouseClicked(0, 0, 0);
|
||||
editorSubWidgets
|
||||
.add(Pair.of(editBox, (dest, box) -> ((FilteredDestination) dest).nameFilter = ((EditBox) box).getValue()));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class NearestDestination extends ScheduleDestination {
|
||||
@Override
|
||||
public Pair<ItemStack, Component> getSummary() {
|
||||
return Pair.of(AllBlocks.TRACK_STATION.asStack(), Lang.translate("schedule.destination.nearest"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag) {}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag) {}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId() {
|
||||
return Create.asResource("nearest");
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class RedstoneDestination extends ScheduleDestination {
|
||||
@Override
|
||||
public Pair<ItemStack, Component> getSummary() {
|
||||
return Pair.of(AllBlocks.TRACK_STATION.asStack(), new TextComponent("Redstone Pulse"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag) {}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag) {}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId() {
|
||||
return Create.asResource("redstone");
|
||||
}
|
||||
}
|
|
@ -10,11 +10,13 @@ import com.simibubi.create.foundation.utility.Pair;
|
|||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
public abstract class ScheduleDestination implements IScheduleInput {
|
||||
public abstract class ScheduleInstruction implements IScheduleInput {
|
||||
|
||||
protected abstract void write(CompoundTag tag);
|
||||
|
||||
protected abstract void read(CompoundTag tag);
|
||||
|
||||
public abstract boolean supportsConditions();
|
||||
|
||||
public final CompoundTag write() {
|
||||
CompoundTag tag = new CompoundTag();
|
||||
|
@ -23,20 +25,20 @@ public abstract class ScheduleDestination implements IScheduleInput {
|
|||
return tag;
|
||||
}
|
||||
|
||||
public static ScheduleDestination fromTag(CompoundTag tag) {
|
||||
public static ScheduleInstruction fromTag(CompoundTag tag) {
|
||||
ResourceLocation location = new ResourceLocation(tag.getString("Id"));
|
||||
Supplier<? extends ScheduleDestination> supplier = null;
|
||||
for (Pair<ResourceLocation, Supplier<? extends ScheduleDestination>> pair : Schedule.DESTINATION_TYPES)
|
||||
Supplier<? extends ScheduleInstruction> supplier = null;
|
||||
for (Pair<ResourceLocation, Supplier<? extends ScheduleInstruction>> pair : Schedule.INSTRUCTION_TYPES)
|
||||
if (pair.getFirst()
|
||||
.equals(location))
|
||||
supplier = pair.getSecond();
|
||||
|
||||
if (supplier == null) {
|
||||
Create.LOGGER.warn("Could not parse schedule destination type: " + location);
|
||||
return null;
|
||||
Create.LOGGER.warn("Could not parse schedule instruction type: " + location);
|
||||
return new DestinationInstruction();
|
||||
}
|
||||
|
||||
ScheduleDestination scheduleDestination = supplier.get();
|
||||
ScheduleInstruction scheduleDestination = supplier.get();
|
||||
scheduleDestination.read(tag);
|
||||
return scheduleDestination;
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package com.simibubi.create.content.logistics.trains.management.schedule.destination;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.IScheduleInput;
|
||||
import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleScreen;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.components.EditBox;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public abstract class ScheduleInstructionWithEditBox extends ScheduleInstruction {
|
||||
|
||||
private String labelText = "";
|
||||
|
||||
protected String getLabelText() {
|
||||
return labelText;
|
||||
}
|
||||
|
||||
protected void setLabelText(String labelText) {
|
||||
this.labelText = labelText;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag) {
|
||||
labelText = tag.getString("Text");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag) {
|
||||
tag.putString("Text", labelText);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getTitleAs(String type) {
|
||||
return ImmutableList.of(Lang.translate("schedule." + type + "." + getId().getPath() + ".summary")
|
||||
.withStyle(ChatFormatting.GOLD), Lang.translate("generic.in_quotes", new TextComponent(getLabelText())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void createWidgets(ScheduleScreen screen,
|
||||
List<Pair<GuiEventListener, BiConsumer<IScheduleInput, GuiEventListener>>> editorSubWidgets,
|
||||
List<Integer> dividers, int x, int y) {
|
||||
super.createWidgets(screen, editorSubWidgets, dividers, x, y);
|
||||
|
||||
EditBox editBox = new EditBox(screen.getFont(), x + 84, y + 52, 112, 10, new TextComponent(labelText));
|
||||
editBox.setBordered(false);
|
||||
editBox.setTextColor(0xFFFFFF);
|
||||
editBox.setValue(labelText);
|
||||
editBox.changeFocus(false);
|
||||
editBox.mouseClicked(0, 0, 0);
|
||||
editorSubWidgets.add(Pair.of(editBox,
|
||||
(dest, box) -> ((ScheduleInstructionWithEditBox) dest).labelText = ((EditBox) box).getValue()));
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
protected void modifyEditBox(EditBox box) {}
|
||||
|
||||
}
|
|
@ -112,7 +112,7 @@ public class DumpRailwaysCommand {
|
|||
.replaceAll("_", " ")),
|
||||
runtime.paused ? darkBlue : blue);
|
||||
if (!runtime.paused && runtime.state != State.POST_TRANSIT) {
|
||||
for (Component component : runtime.getSchedule().entries.get(runtime.currentEntry).destination
|
||||
for (Component component : runtime.getSchedule().entries.get(runtime.currentEntry).instruction
|
||||
.getTitleAs("destination")) {
|
||||
chat.accept(" - " + component.getString(), blue);
|
||||
}
|
||||
|
|
|
@ -110,6 +110,7 @@ public enum AllGuiTextures implements ScreenElement {
|
|||
SCHEDULE_STRIP_TRAVEL("schedule", 12, 239, 11, 16),
|
||||
SCHEDULE_STRIP_DOTTED("schedule", 23, 239, 11, 16),
|
||||
SCHEDULE_STRIP_END("schedule", 34, 239, 11, 16),
|
||||
SCHEDULE_STRIP_ACTION("schedule", 209, 239, 11, 16),
|
||||
SCHEDULE_EDITOR("schedule_2", 256, 89),
|
||||
SCHEDULE_EDITOR_INACTIVE_SLOT("schedule_2", 0, 91, 18, 18),
|
||||
SCHEDULE_EDITOR_SECOND_LINE("schedule_2", 20, 91, 124, 18),
|
||||
|
|
|
@ -94,6 +94,7 @@
|
|||
"create.generic.unit.millibuckets": "%1$smB",
|
||||
"create.generic.clockwise": "Clockwise",
|
||||
"create.generic.counter_clockwise": "Counter-Clockwise",
|
||||
"create.generic.in_quotes": "\"%1$s\"",
|
||||
|
||||
"create.action.scroll": "Scroll",
|
||||
"create.action.confirm": "Confirm",
|
||||
|
@ -557,25 +558,31 @@
|
|||
"create.gui.schedule.lmb_edit": "Left-Click to Edit",
|
||||
"create.gui.schedule.rmb_remove": "Right-Click to Remove",
|
||||
"create.gui.schedule.duplicate": "Duplicate",
|
||||
"create.gui.schedule.remove_entry": "Remove Stop",
|
||||
"create.gui.schedule.add_entry": "Add Stop",
|
||||
"create.gui.schedule.remove_entry": "Remove Action",
|
||||
"create.gui.schedule.add_entry": "Add Action",
|
||||
"create.gui.schedule.move_up": "Move up",
|
||||
"create.gui.schedule.move_down": "Move down",
|
||||
"create.gui.schedule.add_condition": "Add Condition",
|
||||
"create.gui.schedule.alternative_condition": "Alternative Condition",
|
||||
|
||||
"create.schedule.destination_type": "Next Stop:",
|
||||
"create.schedule.destination.editor": "Destination Editor",
|
||||
"create.schedule.destination.filtered": "Specific Station",
|
||||
"create.schedule.destination.filtered_matching": "Station: %1$s",
|
||||
"create.schedule.destination.filter": "Station Name",
|
||||
"create.schedule.destination.filter_2": "Use * as a text wildcard",
|
||||
"create.schedule.destination.filter_3": "Example: 'My Station, Platform *'",
|
||||
"create.schedule.destination.filter_4": "Train picks nearest unoccupied match",
|
||||
"create.schedule.destination.nearest": "Nearest Station",
|
||||
"create.schedule.destination.redstone": "Station with Redstone Pulse",
|
||||
"create.schedule.condition_type": "Continue when:",
|
||||
"create.schedule.instruction_type": "Next Action:",
|
||||
"create.schedule.instruction.editor": "Instruction Editor",
|
||||
|
||||
"create.schedule.instruction.destination": "Travel to Station",
|
||||
"create.schedule.instruction.destination.summary": "Next Stop:",
|
||||
"create.schedule.instruction.filter_edit_box": "Station Name",
|
||||
"create.schedule.instruction.filter_edit_box_1": "Use * as a text wildcard",
|
||||
"create.schedule.instruction.filter_edit_box_2": "Example: 'My Station, Platform *'",
|
||||
"create.schedule.instruction.filter_edit_box_3": "Train picks nearest unoccupied match",
|
||||
"create.schedule.instruction.rename": "Update Schedule Title",
|
||||
"create.schedule.instruction.rename.summary": "New Title:",
|
||||
"create.schedule.instruction.name_edit_box": "Schedule Title",
|
||||
"create.schedule.instruction.name_edit_box_1": "Affects text shown on displays",
|
||||
"create.schedule.instruction.name_edit_box_2": "Defaults to next destination's name",
|
||||
|
||||
"create.schedule.condition_type": "Continue if/after:",
|
||||
"create.schedule.condition.editor": "Condition Editor",
|
||||
|
||||
"create.schedule.condition.delay": "Scheduled Delay",
|
||||
"create.schedule.condition.delay_short": "Wait: %1$s",
|
||||
"create.schedule.condition.idle": "Cargo Inactivity",
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue