From 3e744db3dd256c76042e19cd906da9cfbda879a0 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 14 Apr 2022 16:02:56 +0200 Subject: [PATCH] Under Construction - Train Navigation can no longer approach or pass through stations currently in assembly mode - Station screen now displays whether trains can be (dis-)assembled --- src/generated/resources/.cache/cache | 32 ++++++++-------- .../resources/assets/create/lang/en_us.json | 6 +++ .../assets/create/lang/unfinished/de_de.json | 8 +++- .../assets/create/lang/unfinished/es_cl.json | 8 +++- .../assets/create/lang/unfinished/es_es.json | 8 +++- .../assets/create/lang/unfinished/fr_fr.json | 8 +++- .../assets/create/lang/unfinished/it_it.json | 8 +++- .../assets/create/lang/unfinished/ja_jp.json | 8 +++- .../assets/create/lang/unfinished/ko_kr.json | 8 +++- .../assets/create/lang/unfinished/nl_nl.json | 8 +++- .../assets/create/lang/unfinished/pl_pl.json | 8 +++- .../assets/create/lang/unfinished/pt_br.json | 8 +++- .../assets/create/lang/unfinished/pt_pt.json | 8 +++- .../assets/create/lang/unfinished/ro_ro.json | 8 +++- .../assets/create/lang/unfinished/ru_ru.json | 8 +++- .../assets/create/lang/unfinished/zh_cn.json | 8 +++- .../assets/create/lang/unfinished/zh_tw.json | 8 +++- .../logistics/trains/entity/Navigation.java | 9 +++-- .../edgePoint/TrackTargetingBehaviour.java | 38 ++++++++++++++++--- .../edgePoint/TrackTargetingBlockItem.java | 1 + .../edgePoint/station/GlobalStation.java | 28 ++++++++++++-- .../edgePoint/station/StationEditPacket.java | 22 ++++++++++- .../edgePoint/station/StationScreen.java | 29 ++++++++++++-- .../edgePoint/station/StationTileEntity.java | 5 ++- .../logistics/trains/track/TrackBlock.java | 3 +- .../assets/create/lang/default/interface.json | 6 +++ 26 files changed, 247 insertions(+), 52 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7c1c5908b..d18420b4e 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 -7cd7e879350cbb56393165c24062fda5676466b9 assets/create/lang/en_us.json -10e938a41280ab88265f59b293cf1a19ea012f18 assets/create/lang/unfinished/de_de.json -8b17b8042e844f53bf2ae605c0a7d5b6f9e470ee assets/create/lang/unfinished/es_cl.json -4bc7d56deb76a73fa7af16e21b7a95d00d1c1b3c assets/create/lang/unfinished/es_es.json -200deeabcf50a3d91387f90528154f3d0ebea8a4 assets/create/lang/unfinished/fr_fr.json -d806ae2e13f9415b79ce7c7928c8e93ec93dd9bb assets/create/lang/unfinished/it_it.json -5a0afa8b1ccc8b9dcbd0b0353aed8a3d14398059 assets/create/lang/unfinished/ja_jp.json -b851295ec91158c2f6e4b8433ff13057367c5694 assets/create/lang/unfinished/ko_kr.json -fe7e927998605dfa186b0bed7c179b0a92e5da5b assets/create/lang/unfinished/nl_nl.json -352ef01578bc2fedd31ad95c8f48069ee2714240 assets/create/lang/unfinished/pl_pl.json -bc5bddb12f2b01c034e7bf8619ebc8ea3136a526 assets/create/lang/unfinished/pt_br.json -67a9b9769fe289213f95c9f9680b4fa2922930de assets/create/lang/unfinished/pt_pt.json -38ec533de9f914ca5c8209e31cba9b3e06c734b7 assets/create/lang/unfinished/ro_ro.json -556d68b3d26152f1a3a25a568cd1b98b844c66a6 assets/create/lang/unfinished/ru_ru.json -4239813d57b74da7eb654a66342769e111679729 assets/create/lang/unfinished/zh_cn.json -78ef5f771b4d1bb62dc2d4eca06124d28696e8b2 assets/create/lang/unfinished/zh_tw.json +21a0ec20b110e23e7a44e31117dc5861a5c44b3e assets/create/lang/en_us.json +16f34e19d584fcaa1182f9fdf2cfc98f44547727 assets/create/lang/unfinished/de_de.json +74ab4c2c55ddcb691701e2cefb4602f6d4c3f605 assets/create/lang/unfinished/es_cl.json +077b360ede4375444a4233fc1f466d7fe4f1c3bc assets/create/lang/unfinished/es_es.json +b56fd9dcde4d86625ee7bac054a1930d261abbfe assets/create/lang/unfinished/fr_fr.json +588c9afc4ef58d978ed0de8ea96cf63bb936b776 assets/create/lang/unfinished/it_it.json +b7bcc397c94d218a543c4c9ce92f76a248f53cdf assets/create/lang/unfinished/ja_jp.json +8fdfe59e7b0b03e8eb630e9a11daaa074c332d2c assets/create/lang/unfinished/ko_kr.json +798baf454ac567a2e45b94455c7deee98c68ae77 assets/create/lang/unfinished/nl_nl.json +8a942df61c06c81ca7cb065acb9209ff67a645ff assets/create/lang/unfinished/pl_pl.json +ddbda3b983cd89129b260ea831e5f84c05521156 assets/create/lang/unfinished/pt_br.json +05dc11303c62b5ed0e86297a32c96e3a9f1c3cae assets/create/lang/unfinished/pt_pt.json +55e83bbfa05e4d524a570fa3da522fb6f094242c assets/create/lang/unfinished/ro_ro.json +a12be55cac22714da6c30770b7f966ad04505c15 assets/create/lang/unfinished/ru_ru.json +99846a9c58ba657a3f7b13a35927a05932125e73 assets/create/lang/unfinished/zh_cn.json +7462a0b282e5233f651aaa618d776201d6260968 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 123eebf53..3f56b4e78 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1419,6 +1419,12 @@ "create.station.disassemble_train": "Disassemble Train", "create.station.remove_schedule": "Retrieve Schedule", "create.station.remove_auto_schedule": "Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "Cannot build trains", + "create.station.no_assembly_diagonal_1": "on diagonal tracks", + "create.station.no_assembly_curve": "Cannot build trains", + "create.station.no_assembly_curve_1": "on curved tracks", + "create.station.train_not_aligned": "Cannot disassemble,", + "create.station.train_not_aligned_1": "not all carriages aligned", "create.train_assembly.too_many_bogeys": "Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "Frontmost Bogey must be at Station Marker", 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 debb5d7fd..d6f565286 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: 1520", + "_": "Missing Localizations: 1526", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 9e1714656..e06d73115 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: 531", + "_": "Missing Localizations: 537", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 4d8ce2cce..00daede0f 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: 202", + "_": "Missing Localizations: 208", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 5439e96dc..76445a327 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: 1782", + "_": "Missing Localizations: 1788", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 2979d5f2c..d3e2e7f49 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: 1471", + "_": "Missing Localizations: 1477", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 e1f304caf..99851c500 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: 197", + "_": "Missing Localizations: 203", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 af9a03591..00302145d 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: 197", + "_": "Missing Localizations: 203", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 16d6de968..4df96b221 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: 2135", + "_": "Missing Localizations: 2141", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 de061929f..7ce239a52 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: 570", + "_": "Missing Localizations: 576", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 3e5e54cf4..b9092c55c 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: 1382", + "_": "Missing Localizations: 1388", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 2d6ba9725..2bcea0a7c 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: 1754", + "_": "Missing Localizations: 1760", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 f910838be..53fa2a94f 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: 198", + "_": "Missing Localizations: 204", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 3186ee41b..42b848191 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: 575", + "_": "Missing Localizations: 581", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 6f3a1c6b7..90a8f2c08 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: 197", + "_": "Missing Localizations: 203", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", 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 53e3f0aea..956cf2df0 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: 589", + "_": "Missing Localizations: 595", "_": "->------------------------] Game Elements [------------------------<-", @@ -1420,6 +1420,12 @@ "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java index 7456211f8..f939879ee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java @@ -374,7 +374,7 @@ public class Navigation { if (this.destination == null && !simulate) distanceStartedAt = distance; - + if (this.destination == destination) return 0; @@ -701,10 +701,13 @@ public class Navigation { } public void read(CompoundTag tag, TrackGraph graph) { - destination = - tag.contains("Destination") ? graph.getPoint(EdgePointType.STATION, tag.getUUID("Destination")) : null; + destination = graph != null && tag.contains("Destination") + ? graph.getPoint(EdgePointType.STATION, tag.getUUID("Destination")) + : null; + if (destination == null) return; + distanceToDestination = tag.getDouble("DistanceToDestination"); distanceStartedAt = tag.getDouble("DistanceStartedAt"); destinationBehindTrain = tag.getBoolean("BehindTrain"); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBehaviour.java index 5fbeb85f7..6982fea82 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBehaviour.java @@ -4,6 +4,7 @@ import java.util.UUID; import javax.annotation.Nullable; +import com.jozufozu.flywheel.core.PartialModel; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.BezierConnection; @@ -20,16 +21,17 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal. import com.simibubi.create.content.logistics.trains.track.BezierTrackPointLocation; import com.simibubi.create.content.logistics.trains.track.TrackTileEntity; import com.simibubi.create.foundation.render.CachedBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; @@ -37,6 +39,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -52,6 +55,7 @@ public class TrackTargetingBehaviour extends TileEntit private CompoundTag migrationData; private EdgePointType edgePointType; private T edgePoint; + private boolean orthogonal; public TrackTargetingBehaviour(SmartTileEntity te, EdgePointType edgePointType) { super(te); @@ -60,12 +64,14 @@ public class TrackTargetingBehaviour extends TileEntit targetTrack = BlockPos.ZERO; id = UUID.randomUUID(); migrationData = null; + orthogonal = false; } @Override public void write(CompoundTag nbt, boolean clientPacket) { nbt.putUUID("Id", id); nbt.put("TargetTrack", NbtUtils.writeBlockPos(targetTrack)); + nbt.putBoolean("Ortho", orthogonal); nbt.putBoolean("TargetDirection", targetDirection == AxisDirection.POSITIVE); if (migrationData != null && !clientPacket) nbt.put("Migrate", migrationData); @@ -84,6 +90,7 @@ public class TrackTargetingBehaviour extends TileEntit id = nbt.getUUID("Id"); targetTrack = NbtUtils.readBlockPos(nbt.getCompound("TargetTrack")); targetDirection = nbt.getBoolean("TargetDirection") ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; + orthogonal = nbt.getBoolean("Ortho"); if (nbt.contains("Migrate")) migrationData = nbt.getCompound("Migrate"); if (clientPacket) @@ -150,6 +157,15 @@ public class TrackTargetingBehaviour extends TileEntit CompoundTag data = migrationData; migrationData = null; + { + orthogonal = targetBezier == null; + Vec3 direction = edge.getDirection(node1, node2, true); + int nonZeroComponents = 0; + for (Axis axis : Iterate.axes) + nonZeroComponents += direction.get(axis) != 0 ? 1 : 0; + orthogonal &= nonZeroComponents <= 1; + } + EdgeData signalData = edge.getEdgeData(); if (signalData.hasPoints()) { for (EdgePointType otherType : EdgePointType.TYPES.values()) { @@ -165,7 +181,7 @@ public class TrackTargetingBehaviour extends TileEntit return null; otherPoint.tileAdded(tileEntity, front); id = otherPoint.getId(); - tileEntity.setChanged(); + tileEntity.notifyUpdate(); return (T) otherPoint; } } @@ -180,6 +196,7 @@ public class TrackTargetingBehaviour extends TileEntit point.setLocation(reverseEdge ? loc.edge : loc.edge.swap(), reverseEdge ? loc.position : length - loc.position); point.tileAdded(tileEntity, front); loc.graph.addPoint(edgePointType, point); + tileEntity.sendData(); return point; } @@ -195,6 +212,14 @@ public class TrackTargetingBehaviour extends TileEntit return TYPE; } + public boolean isOnCurve() { + return targetBezier != null; + } + + public boolean isOrthogonal() { + return orthogonal; + } + public boolean hasValidTrack() { return getTrackBlockState().getBlock() instanceof ITrackBlock; } @@ -290,10 +315,11 @@ public class TrackTargetingBehaviour extends TileEntit ms.translate(pos.getX(), pos.getY(), pos.getZ()); ITrackBlock track = (ITrackBlock) block; - SuperByteBuffer sbb = CachedBufferer - .partial(track.prepareTrackOverlay(level, pos, trackState, bezier, direction, ms, type), trackState); - sbb.light(LevelRenderer.getLightColor(level, pos)); - sbb.renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + PartialModel partial = track.prepareTrackOverlay(level, pos, trackState, bezier, direction, ms, type); + if (partial != null) + CachedBufferer.partial(partial, trackState) + .light(LevelRenderer.getLightColor(level, pos)) + .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java index c3422b5b8..710abbc4b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/TrackTargetingBlockItem.java @@ -68,6 +68,7 @@ public class TrackTargetingBlockItem extends BlockItem { .getSecond() == AxisDirection.POSITIVE; stackTag.put("SelectedPos", NbtUtils.writeBlockPos(pos)); stackTag.putBoolean("SelectedDirection", front); + stackTag.remove("Bezier"); player.displayClientMessage(Lang.translate("track_target.set"), true); stack.setTag(stackTag); return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/GlobalStation.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/GlobalStation.java index ed2b61f3b..bbdf259e5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/GlobalStation.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/GlobalStation.java @@ -10,44 +10,64 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal. import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; public class GlobalStation extends SingleTileEdgePoint { public String name; public WeakReference nearestTrain; + public boolean assembling; public GlobalStation() { name = "Track Station"; nearestTrain = new WeakReference(null); } + @Override + public void tileAdded(BlockEntity tile, boolean front) { + super.tileAdded(tile, front); + BlockState state = tile.getBlockState(); + assembling = + state != null && state.hasProperty(StationBlock.ASSEMBLING) && state.getValue(StationBlock.ASSEMBLING); + } + @Override public void read(CompoundTag nbt, boolean migration) { super.read(nbt, migration); name = nbt.getString("Name"); + assembling = nbt.getBoolean("Assembling"); nearestTrain = new WeakReference(null); } - + @Override public void read(FriendlyByteBuf buffer) { super.read(buffer); name = buffer.readUtf(); + assembling = buffer.readBoolean(); } @Override public void write(CompoundTag nbt) { super.write(nbt); nbt.putString("Name", name); + nbt.putBoolean("Assembling", assembling); } - + @Override public void write(FriendlyByteBuf buffer) { super.write(buffer); buffer.writeUtf(name); + buffer.writeBoolean(assembling); } - + public boolean canApproachFrom(TrackNode side) { - return isPrimary(side); + return isPrimary(side) && !assembling; + } + + @Override + public boolean canNavigateVia(TrackNode side) { + return super.canNavigateVia(side) && !assembling; } public void reserveFor(Train train) { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationEditPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationEditPacket.java index 78f0c5bb9..089370035 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationEditPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationEditPacket.java @@ -102,12 +102,13 @@ public class StationEditPacket extends TileEntityConfigurationPacket toolTip = ib.getToolTip(); + toolTip.clear(); + toolTip.add(Lang.translate("station." + key) + .withStyle(ChatFormatting.GRAY)); + toolTip.add(Lang.translate("station." + key + "_1") + .withStyle(ChatFormatting.GRAY)); + } + } + @Override protected void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) { super.renderWindow(ms, mouseX, mouseY, partialTicks); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java index 95cf3237c..0ec3d0045 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java @@ -138,6 +138,7 @@ public class StationTileEntity extends SmartTileEntity { tag.putInt("FailedCarriageIndex", failedCarriageIndex); tag.put("HeldItem", autoSchedule.getStackInSlot(0) .serializeNBT()); + super.write(tag, clientPacket); if (!clientPacket) @@ -315,7 +316,7 @@ public class StationTileEntity extends SmartTileEntity { } BlockState potentialBogeyState = level.getBlockState(bogeyOffset.offset(currentPos)); - if (potentialBogeyState.getBlock()instanceof IBogeyBlock bogey && bogeyIndex < bogeyLocations.length) { + if (potentialBogeyState.getBlock() instanceof IBogeyBlock bogey && bogeyIndex < bogeyLocations.length) { bogeyTypes[bogeyIndex] = bogey; bogeyLocations[bogeyIndex] = i; bogeyIndex++; @@ -637,7 +638,7 @@ public class StationTileEntity extends SmartTileEntity { return true; BlockState target = edgePoint.getTrackBlockState(); - if (!(target.getBlock()instanceof ITrackBlock def)) + if (!(target.getBlock() instanceof ITrackBlock def)) return false; Vec3 axis = null; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index 9177332e8..1a9f95913 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -460,7 +460,8 @@ public class TrackBlock extends Block implements EntityBlock, IWrenchable, ITrac msr.translate(offset.subtract(Vec3.atBottomCenterOf(pos))); msr.translate(0, -4 / 16f, 0); - } + } else + return null; } if (normal == null) { diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index f85bdc0c4..bb06d63a4 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -643,6 +643,12 @@ "create.station.disassemble_train": "Disassemble Train", "create.station.remove_schedule": "Retrieve Schedule", "create.station.remove_auto_schedule": "Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "Cannot build trains", + "create.station.no_assembly_diagonal_1": "on diagonal tracks", + "create.station.no_assembly_curve": "Cannot build trains", + "create.station.no_assembly_curve_1": "on curved tracks", + "create.station.train_not_aligned": "Cannot disassemble,", + "create.station.train_not_aligned_1": "not all carriages aligned", "create.train_assembly.too_many_bogeys": "Too many Bogeys attached: %1$s", "create.train_assembly.frontmost_bogey_at_station": "Frontmost Bogey must be at Station Marker",