diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index e279ea4cf..afda9a349 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -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 diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 6340843cc..47f819ec7 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.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", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 0764a1878..db10b77e0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 1f5edd36d..870271cc1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index b44781058..f94d8ccc4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 9a002f3b4..b369c8a0c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index a1b3995b4..d68626acd 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index dcfa086e4..bf9206515 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 1f2275d69..9e15aa7e7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index c56108c83..6eeb25223 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index 745cb7f4c..fc519ef79 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 69d157b79..d3c6d1d77 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 3bf18927e..42cac3f8d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 1d0004714..f8a0fb3f4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 8f0ca070d..42f0900ec 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 9afed6624..1d7b3a8ab 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index d61c1dbad..7d8c3e2f7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 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", diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index a1a0acabf..f705856d5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -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); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java index 8860ba11f..2d7942a8c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java @@ -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; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java index 30bc546b2..a07468da3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayRenderer.java @@ -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 diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/RunningScheduleScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/RunningScheduleScreen.java deleted file mode 100644 index 07c593fff..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/RunningScheduleScreen.java +++ /dev/null @@ -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 - */ - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java index 927a68362..cdf7c0b0a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java @@ -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>> DESTINATION_TYPES = + public static List>> INSTRUCTION_TYPES = new ArrayList<>(); public static List>> 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 factory) { - DESTINATION_TYPES.add(Pair.of(Create.asResource(name), factory)); + private static void registerInstruction(String name, Supplier factory) { + INSTRUCTION_TYPES.add(Pair.of(Create.asResource(name), factory)); } private static void registerCondition(String name, Supplier factory) { @@ -56,7 +54,7 @@ public class Schedule { } public static List getTypeOptions(List> 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()) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleEntry.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleEntry.java index b5f112abf..1aeefc729 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleEntry.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleEntry.java @@ -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> 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 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; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java index f32df1b6a..a5818a835 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java @@ -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 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 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; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java index 34a5deb50..a2825a2db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java @@ -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 conditionProgress; List conditionContext; + String currentTitle; int ticksInTransit; List 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 predictions) { + private int predictForEntry(int index, String currentTitle, int accumulatedTime, + Collection 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; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java index a1f708ae8..19be8f685 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java @@ -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 { - 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 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 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 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 destination = entry.destination.getSummary(); + if (supportsConditions) + AllGuiTextures.SCHEDULE_STRIP_WAIT.render(matrixStack, 4, 28); + + Pair 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 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 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 { + startEditing(new DestinationInstruction(), confirmed -> { if (!confirmed) return; @@ -754,7 +768,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen 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 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 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)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java new file mode 100644 index 000000000..c2bf5b6f7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java @@ -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 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 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); + } + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/FilteredDestination.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/FilteredDestination.java deleted file mode 100644 index 28a5517c3..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/FilteredDestination.java +++ /dev/null @@ -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 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 getTitleAs(String type) { - return ImmutableList.of(Lang.translate("schedule.destination.filtered_matching", - new TextComponent(nameFilter).withStyle(ChatFormatting.YELLOW))); - } - - @Override - public List 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>> editorSubWidgets, - List 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())); - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/NearestDestination.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/NearestDestination.java deleted file mode 100644 index c4a5712a8..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/NearestDestination.java +++ /dev/null @@ -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 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"); - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/RedstoneDestination.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/RedstoneDestination.java deleted file mode 100644 index 9392710e4..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/RedstoneDestination.java +++ /dev/null @@ -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 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"); - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleDestination.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstruction.java similarity index 66% rename from src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleDestination.java rename to src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstruction.java index 70f75e985..9015d34c3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleDestination.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstruction.java @@ -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 supplier = null; - for (Pair> pair : Schedule.DESTINATION_TYPES) + Supplier supplier = null; + for (Pair> 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; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstructionWithEditBox.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstructionWithEditBox.java new file mode 100644 index 000000000..6545643d0 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ScheduleInstructionWithEditBox.java @@ -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 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>> editorSubWidgets, + List 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) {} + +} diff --git a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java index c6c4c7832..2587a1ea4 100644 --- a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java @@ -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); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java index 95883e477..a80231a48 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java @@ -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), diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 211f37d6d..1a5fa9861 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -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", diff --git a/src/main/resources/assets/create/textures/gui/edit_condition.pdn b/src/main/resources/assets/create/textures/gui/edit_condition.pdn deleted file mode 100644 index b6ec2c9a8..000000000 Binary files a/src/main/resources/assets/create/textures/gui/edit_condition.pdn and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/schedule.pdn b/src/main/resources/assets/create/textures/gui/schedule.pdn deleted file mode 100644 index e7a90a5e3..000000000 Binary files a/src/main/resources/assets/create/textures/gui/schedule.pdn and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/schedule.png b/src/main/resources/assets/create/textures/gui/schedule.png index 90eb05d13..36ef10f3f 100644 Binary files a/src/main/resources/assets/create/textures/gui/schedule.png and b/src/main/resources/assets/create/textures/gui/schedule.png differ diff --git a/src/main/resources/assets/create/textures/gui/station.pdn b/src/main/resources/assets/create/textures/gui/station.pdn deleted file mode 100644 index b70bd961a..000000000 Binary files a/src/main/resources/assets/create/textures/gui/station.pdn and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/station_assembly.pdn b/src/main/resources/assets/create/textures/gui/station_assembly.pdn deleted file mode 100644 index b26cb90d0..000000000 Binary files a/src/main/resources/assets/create/textures/gui/station_assembly.pdn and /dev/null differ