Merge branch 'mc1.18/global-railways' of https://github.com/Creators-of-Create/Create-Concealed into mc1.18/global-railways

This commit is contained in:
simibubi 2022-06-07 23:50:22 +02:00
commit 9b3b0032fc
36 changed files with 973 additions and 134 deletions

View file

@ -554,22 +554,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
50f7862ded2d9a955c259a12685906a9ec9ad97a assets/create/lang/en_ud.json
8b387eecbadbf8ddf744422baabf223c84268de8 assets/create/lang/en_us.json
f162f6cfe17b1fcbb1303b84545cd3d0c9ce25f5 assets/create/lang/unfinished/de_de.json
b72060f9fc6cf1da5682ceed2ba69ab4c0c30184 assets/create/lang/unfinished/es_cl.json
5ede822fae8b2189db97633c8303c96decd2091f assets/create/lang/unfinished/es_es.json
60618a73865a24d2b8e2f3bfafd5411be725d1ce assets/create/lang/unfinished/fr_fr.json
086ca3a74d4c5c129d83360b0acc8dbdf65e5bb2 assets/create/lang/unfinished/it_it.json
9345b75ecfc27f4c2f25d0b5badbb2801bd1b88b assets/create/lang/unfinished/ja_jp.json
6f4d78f63f63f9b870494c771bba36bd4bddfe38 assets/create/lang/unfinished/ko_kr.json
7f271a3685fc8b100046cf87ceb21e569e356ea9 assets/create/lang/unfinished/nl_nl.json
bba14b1077fe530c9f627792f7b16b104d00623d assets/create/lang/unfinished/pl_pl.json
0ad3218fc001b8031578b4cafa4b1d931badd28f assets/create/lang/unfinished/pt_br.json
285d85ae57a1d9225240a2761b0ac241b47f501c assets/create/lang/unfinished/pt_pt.json
dda44f8eca5de56c4ccb14019c06b0e1c381801a assets/create/lang/unfinished/ro_ro.json
351534ba02df3ce3688e48471981955ac662dce4 assets/create/lang/unfinished/ru_ru.json
5391940638ecc6590d755663db05d138140db0b5 assets/create/lang/unfinished/zh_cn.json
5ec6d587ead9ecf3cf4348422903d5926cf1c8ab assets/create/lang/unfinished/zh_tw.json
bd11cec0a09bc17c36293f2318b3a55816ba7357 assets/create/lang/en_us.json
43dceacc12846afb41841f8e6f89fbde373aee0c assets/create/lang/unfinished/de_de.json
9c8452625f048b42cc44e92781854560fb0a31b6 assets/create/lang/unfinished/es_cl.json
287eeafaa0c3d618b992b3da200b80c30d84b469 assets/create/lang/unfinished/es_es.json
7fc00f821984d29d0f2e58a0cd9f54c107765a9d assets/create/lang/unfinished/fr_fr.json
846428c03588dcf1166b77c92efd0196044b83f2 assets/create/lang/unfinished/it_it.json
abdd740066a0152f3bce5d3368f788e4a949ec35 assets/create/lang/unfinished/ja_jp.json
6a06c83079fdba01a2a565958af15330af7988f5 assets/create/lang/unfinished/ko_kr.json
d2f791d81474467bab224cc1ed7d33209d4b533c assets/create/lang/unfinished/nl_nl.json
b0a821a5b68e8863d76bf0c26881457c640f2db1 assets/create/lang/unfinished/pl_pl.json
59826c6788b6eb792bb8180f7691296b3d16b755 assets/create/lang/unfinished/pt_br.json
3ce46ee7790faf9b5e76159795675b636beee4b9 assets/create/lang/unfinished/pt_pt.json
741cc70fc2aaedd6d79c570705d28343d76cfcf6 assets/create/lang/unfinished/ro_ro.json
5bfbf61f079563cddabb1ac02e68395a8b5ab688 assets/create/lang/unfinished/ru_ru.json
50952f6f40e77ae2ab0ac7fb0bea6a2776b14469 assets/create/lang/unfinished/zh_cn.json
edccb3df1d94493485cfb451c1f7d6dfc4a2678d 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

View file

@ -906,7 +906,8 @@
"create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.millibuckets": "mB",
"create.generic.unit.buckets": "B",
"create.generic.clockwise": "Clockwise",
"create.generic.counter_clockwise": "Counter-Clockwise",
"create.generic.in_quotes": "\"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "Combine Item Names",
"create.display_source.count_items": "Amount of matching Items",
"create.display_source.list_items": "List matching Items",
"create.display_source.fluid_amount": "Amount of matching Fluids",
"create.display_source.list_fluids": "List matching Fluids",
"create.display_source.nixie_tube": "Copy Nixie Tubes",
"create.display_source.fill_level": "Container Fill Level",
"create.display_source.fill_level.display": "Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": " min",
"create.display_source.station_summary.seconds": "%1$ss",
"create.display_source.observed_train_name": "Detected Train Name",
"create.display_source.max_enchant_level": "Max Enchanting Cost",
"create.display_source.boiler_status": "Boiler Status",
"create.display_source.entity_name": "Entity Name",
"create.display_source.kinetic_speed": "Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "Ignore Direction",
"create.display_source.kinetic_speed.directional": "Include Direction",
"create.display_source.kinetic_stress.current": "Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)",
"create.display_target.line": "Line %1$s",
"create.display_target.page": "Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": " ;K;M",
"create.flap_display.cycles.fluid_units": "mB;B ",
"create.flap_display.cycles.instant": " ; ",
"create.flap_display.cycles.pixel": "█;▒",
"create.flap_display.cycles.pixel": "█;▓;▒",
"create.super_glue.too_far": "Selected area is too big",
"create.super_glue.cannot_reach": "Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!"
}
}

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 943",
"_": "Missing Localizations: 957",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Uhrzeigersinn",
"create.generic.counter_clockwise": "Gegen-Uhrzeigersinn",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 593",
"_": "Missing Localizations: 607",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "En sentido del Reloj",
"create.generic.counter_clockwise": "Al contrario del Reloj",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 257",
"_": "Missing Localizations: 271",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "SU(unidades de estrés)",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"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\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1831",
"_": "Missing Localizations: 1845",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smS",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "dans le sens horaire",
"create.generic.counter_clockwise": "dans le sens anti-horaire",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1520",
"_": "Missing Localizations: 1534",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$s mB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Senso orario",
"create.generic.counter_clockwise": "Senso anti-orario",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 259",
"_": "Missing Localizations: 273",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "度",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "時計回り",
"create.generic.counter_clockwise": "反時計回り",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 259",
"_": "Missing Localizations: 273",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "시계 방향",
"create.generic.counter_clockwise": "시계 반대 방향",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2183",
"_": "Missing Localizations: 2197",
"_": "->------------------------] Game Elements [------------------------<-",
@ -907,7 +907,8 @@
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "UNLOCALIZED: su",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB",
"create.generic.unit.millibuckets": "UNLOCALIZED: mB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "UNLOCALIZED: Clockwise",
"create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 632",
"_": "Missing Localizations: 646",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "JO",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smW",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Zgodnie ze wskazówkami zegara",
"create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1127",
"_": "Missing Localizations: 1141",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Sentido horário",
"create.generic.counter_clockwise": "Sentido anti-horário",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1805",
"_": "Missing Localizations: 1819",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Sentido horário",
"create.generic.counter_clockwise": "Sentido anti-horário",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 260",
"_": "Missing Localizations: 274",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"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\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 637",
"_": "Missing Localizations: 651",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "ен",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "По часовой стрелке",
"create.generic.counter_clockwise": "Против часовой стрелки",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 257",
"_": "Missing Localizations: 271",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "顺时针方向",
"create.generic.counter_clockwise": "逆时针方向",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 651",
"_": "Missing Localizations: 665",
"_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "度",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "順時鐘方向",
"create.generic.counter_clockwise": "逆時鐘方向",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1516,6 +1517,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List matching Items",
"create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids",
"create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids",
"create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1550,6 +1553,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name",
"create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost",
"create.display_source.boiler_status": "UNLOCALIZED: Boiler Status",
"create.display_source.entity_name": "UNLOCALIZED: Entity Name",
"create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction",
"create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction",
"create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_target.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1559,8 +1572,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▒",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",

View file

@ -163,11 +163,17 @@ import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock;
import com.simibubi.create.content.logistics.block.display.DisplayLinkBlockItem;
import com.simibubi.create.content.logistics.block.display.source.AccumulatedItemCountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.BoilerDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.EntityNameDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.FillLevelDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.FluidAmountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.FluidListDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemThoughputDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.KineticSpeedDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.KineticStressDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ObservedTrainNameSource;
import com.simibubi.create.content.logistics.block.display.source.StationSummaryDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.StopWatchDisplaySource;
@ -718,6 +724,7 @@ public class AllBlocks {
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(new GaugeGenerator()::generate)
.onRegister(assignDataBehaviour(new KineticSpeedDisplaySource(), "kinetic_speed"))
.item()
.transform(ModelGen.customItemModel("gauge", "_", "item"))
.register();
@ -728,6 +735,10 @@ public class AllBlocks {
.transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact())
.blockstate(new GaugeGenerator()::generate)
.onRegister(assignDataBehaviour(new KineticStressDisplaySource.Current(), "kinetic_stress_current"))
.onRegister(assignDataBehaviour(new KineticStressDisplaySource.Percent(), "kinetic_stress_percent"))
.onRegister(assignDataBehaviour(new KineticStressDisplaySource.Max(), "kinetic_stress_max"))
.onRegister(assignDataBehaviour(new KineticStressDisplaySource.Remaining(), "kinetic_stress_remaining"))
.item()
.transform(ModelGen.customItemModel("gauge", "_", "item"))
.register();
@ -897,6 +908,7 @@ public class AllBlocks {
.transform(pickaxeOnly())
.blockstate(new FluidTankGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard))
.onRegister(assignDataBehaviour(new BoilerDisplaySource(), "boiler_status"))
.addLayer(() -> RenderType::cutoutMipped)
.item(FluidTankItem::new)
.model(AssetLookup.<FluidTankItem>customBlockItemModel("_", "block_single_window"))
@ -1297,6 +1309,7 @@ public class AllBlocks {
.transform(axeOnly())
.onRegister(addMovementBehaviour(movementBehaviour))
.onRegister(addInteractionBehaviour(interactionBehaviour))
.onRegister(assignDataBehaviour(new EntityNameDisplaySource(), "entity_name"))
.blockstate((c, p) -> {
p.simpleBlock(c.get(), p.models()
.withExistingParent(colourName + "_seat", p.modLoc("block/seat"))
@ -1689,6 +1702,8 @@ public class AllBlocks {
.blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p)))
.onRegister(assignDataBehaviour(new ItemCountDisplaySource(), "count_items"))
.onRegister(assignDataBehaviour(new ItemListDisplaySource(), "list_items"))
.onRegister(assignDataBehaviour(new FluidAmountDisplaySource(), "count_fluids"))
.onRegister(assignDataBehaviour(new FluidListDisplaySource(), "list_fluids"))
.item()
.transform(customItemModel("_", "block"))
.register();

View file

@ -168,7 +168,7 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
}
int amount = amounts.get(index != -1 ? 0 : slotIndex);
Component text = (Lang.translate("generic.unit.millibuckets", amount)).withStyle(ChatFormatting.GOLD);
Component text = new TextComponent(String.valueOf(amount)).append(Lang.translate("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD);
if (tooltip.isEmpty())
tooltip.add(0, text);
else {

View file

@ -3,6 +3,8 @@ package com.simibubi.create.content.contraptions.fluids.tank;
import java.util.Arrays;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.components.steam.SteamEngineBlock;
@ -51,6 +53,12 @@ public class BoilerData {
public int attachedEngines;
public int attachedWhistles;
// display
private int maxHeatForSize = 0;
private int maxHeatForWater = 0;
private int minValue = 0;
private int maxValue = 0;
public LerpedFloat gauge = LerpedFloat.linear();
public void tick(FluidTankTileEntity controller) {
@ -99,8 +107,13 @@ public class BoilerData {
return (int) Math.min(18, Mth.ceil(waterSupply) / waterSupplyPerLevel);
}
public boolean isPassive() {
return passiveHeat && maxHeatForSize > 0 && maxHeatForWater > 0;
}
public boolean isPassive(int boilerSize) {
return passiveHeat && getMaxHeatLevelForBoilerSize(boilerSize) > 0 && getMaxHeatLevelForWaterSupply() > 0;
calcMinMaxForSize(boilerSize);
return isPassive();
}
public float getEngineEfficiency(int boilerSize) {
@ -119,77 +132,105 @@ public class BoilerData {
return actualHeat;
}
String spacing = " ";
Component componentSpacing = new TextComponent(spacing);
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking, int boilerSize) {
if (!isActive())
return false;
int forBoilerSize = getMaxHeatLevelForBoilerSize(boilerSize);
int forWaterSupply = getMaxHeatLevelForWaterSupply();
int boilerLevel = Math.min(activeHeat, Math.min(forWaterSupply, forBoilerSize));
Component indent = new TextComponent(IHaveGoggleInformation.spacing);
Component indent2 = new TextComponent(IHaveGoggleInformation.spacing + " ");
int minValue = Math.min(passiveHeat ? 1 : activeHeat, Math.min(forWaterSupply, forBoilerSize));
int maxValue = Math.max(passiveHeat ? 1 : activeHeat, Math.max(forWaterSupply, forBoilerSize));
calcMinMaxForSize(boilerSize);
TextComponent heatLevel = isPassive(boilerSize) ? new TextComponent("Passive")
: (boilerLevel == 0 ? new TextComponent("Idle")
: boilerLevel == 18 ? new TextComponent("Max")
: new TextComponent("Lvl " + IHaveGoggleInformation.format(boilerLevel)));
tooltip.add(componentSpacing.plainCopy()
.append(new TextComponent("Boiler Status: ").append(heatLevel.withStyle(ChatFormatting.GREEN))));
tooltip.add(indent.plainCopy().append(new TextComponent("Boiler Status: ").append(getHeatLevelTextComponent().withStyle(ChatFormatting.GREEN))));
tooltip.add(indent2.plainCopy().append(getSizeComponent(true, false)));
tooltip.add(indent2.plainCopy().append(getWaterComponent(true, false)));
tooltip.add(indent2.plainCopy().append(getHeatComponent(true, false)));
Component h = levelComponent("Heat ...... ", passiveHeat ? 1 : activeHeat, minValue, maxValue);
Component w = levelComponent("Water ... ", forWaterSupply, minValue, maxValue);
Component s = levelComponent("Size ....... ", forBoilerSize, minValue, maxValue);
Component indent = new TextComponent(spacing);
Component indent2 = new TextComponent(spacing + " ");
tooltip.add(indent2.plainCopy()
.append(s));
tooltip.add(indent2.plainCopy()
.append(w));
tooltip.add(indent2.plainCopy()
.append(h));
if (attachedEngines == 0)
return true;
int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize));
double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines)
* BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get());
* BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get());
Component capacity =
new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress"))
.withStyle(ChatFormatting.AQUA);
new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress"))
.withStyle(ChatFormatting.AQUA);
Component engines =
new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY);
new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY);
tooltip.add(indent);
tooltip.add(indent.plainCopy()
.append(Lang.translate("tooltip.capacityProvided")
.withStyle(ChatFormatting.GRAY)));
.append(Lang.translate("tooltip.capacityProvided")
.withStyle(ChatFormatting.GRAY)));
tooltip.add(indent2.plainCopy()
.append(capacity)
.append(engines));
.append(capacity)
.append(engines));
return true;
}
private MutableComponent levelComponent(String text, int level, int min, int max) {
int indexOf = text.indexOf(".");
String label = text.substring(0, indexOf);
String dots = text.substring(indexOf);
MutableComponent c = new TextComponent(label).withStyle(ChatFormatting.GRAY)
.append(new TextComponent(dots).withStyle(ChatFormatting.DARK_GRAY));
public void calcMinMaxForSize(int boilerSize) {
maxHeatForSize = getMaxHeatLevelForBoilerSize(boilerSize);
maxHeatForWater = getMaxHeatLevelForWaterSupply();
c.append(bars(Math.max(0, min - 1), ChatFormatting.DARK_GREEN));
c.append(bars(min > 0 ? 1 : 0, ChatFormatting.GREEN));
c.append(bars(Math.max(0, level - min), ChatFormatting.DARK_GREEN));
c.append(bars(Math.max(0, max - level), ChatFormatting.DARK_RED));
c.append(bars(Math.max(0, Math.min(18 - max, ((max / 5 + 1) * 5) - max)), ChatFormatting.DARK_GRAY));
minValue = Math.min(passiveHeat ? 1 : activeHeat, Math.min(maxHeatForWater, maxHeatForSize));
maxValue = Math.max(passiveHeat ? 1 : activeHeat, Math.max(maxHeatForWater, maxHeatForSize));
}
@NotNull
public TextComponent getHeatLevelTextComponent() {
int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForWater, maxHeatForSize));
return isPassive() ? new TextComponent("Passive")
: (boilerLevel == 0 ? new TextComponent("Idle")
: boilerLevel == 18 ? new TextComponent("Max")
: new TextComponent("Lvl " + IHaveGoggleInformation.format(boilerLevel)));
}
public MutableComponent getSizeComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
return componentHelper("Size ", "....... ", maxHeatForSize, forGoggles, useBlocksAsBars, styles);
}
public MutableComponent getWaterComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
return componentHelper("Water ", "... ", maxHeatForWater, forGoggles, useBlocksAsBars, styles);
}
public MutableComponent getHeatComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
return componentHelper("Heat ", "...... ", passiveHeat ? 1 : activeHeat, forGoggles, useBlocksAsBars, styles);
}
private MutableComponent componentHelper(String label, String dots, int level, boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
MutableComponent base = useBlocksAsBars ? blockComponent(level) : barComponent(level);
if (!forGoggles)
return base;
ChatFormatting style1 = styles.length >= 1 ? styles[0] : ChatFormatting.GRAY;
ChatFormatting style2 = styles.length >= 2 ? styles[1] : ChatFormatting.DARK_GRAY;
return new TextComponent(label).withStyle(style1)
.append(new TextComponent(dots).withStyle(style2))
.append(base);
}
private MutableComponent blockComponent(int level) {
return new TextComponent("" +
"\u2588".repeat(minValue) +
"\u2592".repeat(level - minValue) +
"\u2591".repeat(maxValue - level)
);
}
private MutableComponent barComponent(int level) {
return TextComponent.EMPTY.copy()
.append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN))
.append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN))
.append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN))
.append(bars(Math.max(0, maxValue - level), ChatFormatting.DARK_RED))
.append(bars(Math.max(0, Math.min(18 - maxValue, ((maxValue / 5 + 1) * 5) - maxValue)), ChatFormatting.DARK_GRAY));
return c;
}
private MutableComponent bars(int level, ChatFormatting format) {
@ -218,7 +259,7 @@ public class BoilerData {
if (AllBlocks.STEAM_ENGINE.has(attachedState) && SteamEngineBlock.getFacing(attachedState) == d)
attachedEngines++;
if (AllBlocks.STEAM_WHISTLE.has(attachedState)
&& WhistleBlock.getAttachedDirection(attachedState)
&& WhistleBlock.getAttachedDirection(attachedState)
.getOpposite() == d)
attachedWhistles++;
}

View file

@ -8,8 +8,9 @@ import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.block.display.source.DeathCounterDataSource;
import com.simibubi.create.content.logistics.block.display.source.DeathCounterDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.DisplaySource;
import com.simibubi.create.content.logistics.block.display.source.EnchantPowerDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ScoreboardDisplaySource;
import com.simibubi.create.content.logistics.block.display.target.DisplayTarget;
import com.simibubi.create.content.logistics.block.display.target.LecternDisplayTarget;
@ -177,9 +178,8 @@ public class AllDisplayBehaviours {
public static void register() {
assign(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN);
assign(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN);
assign(register(Create.asResource("death_count_display_source"), new DeathCounterDataSource()),
Blocks.RESPAWN_ANCHOR);
assign(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()),
BlockEntityType.COMMAND_BLOCK);
assign(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR);
assign(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK);
assign(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE);
}
}

View file

@ -2,29 +2,29 @@ package com.simibubi.create.content.logistics.block.display;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
public class DisplayLinkContext {
private LevelAccessor level;
private Level level;
private DisplayLinkTileEntity te;
public Object flapDisplayContext;
public DisplayLinkContext(LevelAccessor level, DisplayLinkTileEntity te) {
public DisplayLinkContext(Level level, DisplayLinkTileEntity te) {
this.level = level;
this.te = te;
}
public LevelAccessor level() {
public Level level() {
return level;
}
public DisplayLinkTileEntity te() {
return te;
}
public BlockEntity getSourceTE() {
return level.getBlockEntity(getSourcePos());
}

View file

@ -0,0 +1,129 @@
package com.simibubi.create.content.logistics.block.display.source;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
import com.simibubi.create.content.contraptions.fluids.tank.BoilerData;
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.LecternBlockEntity;
public class BoilerDisplaySource extends DisplaySource {
public static final List<MutableComponent> notEnoughSpaceSingle = List.of(new TextComponent("Not enough space for Boiler Status!"));
public static final List<MutableComponent> notEnoughSpaceDouble = List.of(new TextComponent("Not enough space"), new TextComponent("for Boiler Status!"));
public static final List<List<MutableComponent>> notEnoughSpaceFlap = List.of(List.of(new TextComponent("Not enough space")), List.of(new TextComponent("for Boiler Status!")));
@Override
public List<MutableComponent> provideText(DisplayLinkContext context, DisplayTargetStats stats) {
if (stats.maxRows() < 2) {
return notEnoughSpaceSingle;
} else if (stats.maxRows() < 4) {
return notEnoughSpaceDouble;
}
boolean isBook = context.getTargetTE() instanceof LecternBlockEntity;
if (isBook) {
Stream<MutableComponent> componentList = getComponents(context, false)
.map(components -> {
Optional<MutableComponent> reduce = components.stream().reduce(MutableComponent::append);
return reduce.orElse(EMPTY_LINE);
});
return List.of(componentList.reduce((comp1, comp2) -> comp1.append(new TextComponent("\n")).append(comp2)).orElse(EMPTY_LINE));
}
return getComponents(context, false)
.map(components -> {
Optional<MutableComponent> reduce = components.stream().reduce(MutableComponent::append);
return reduce.orElse(EMPTY_LINE);
}).toList();
}
@Override
public List<List<MutableComponent>> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) {
if (stats.maxRows() < 4) {
context.flapDisplayContext = Boolean.FALSE;
return notEnoughSpaceFlap;
}
List<List<MutableComponent>> components = getComponents(context, true).toList();
if (stats.maxColumns() * FlapDisplaySection.MONOSPACE < 6 * FlapDisplaySection.MONOSPACE + components.get(1).get(1).getString().length() * FlapDisplaySection.WIDE_MONOSPACE) {
context.flapDisplayContext = Boolean.FALSE;
return notEnoughSpaceFlap;
}
return components;
}
@Override
public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay, FlapDisplayLayout layout, int lineIndex) {
if (lineIndex == 0 || context.flapDisplayContext instanceof Boolean b && !b) {
if (layout.isLayout("Default"))
return;
layout.loadDefault(flapDisplay.getMaxCharCount());
return;
}
String layoutKey = "Boiler";
if (layout.isLayout(layoutKey))
return;
int labelLength = (int) (5 * FlapDisplaySection.MONOSPACE);
float maxSpace = flapDisplay.getMaxCharCount(1) * FlapDisplaySection.MONOSPACE;
FlapDisplaySection label = new FlapDisplaySection(labelLength, "alphabet", false, true);
FlapDisplaySection symbols = new FlapDisplaySection(maxSpace - labelLength, "pixel", false, false).wideFlaps();
layout.configure(layoutKey, List.of(label, symbols));
}
private Stream<List<MutableComponent>> getComponents(DisplayLinkContext context, boolean forFlapDisplay) {
BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof FluidTankTileEntity tankTile))
return Stream.of(EMPTY);
tankTile = tankTile.getControllerTE();
if (tankTile == null)
return Stream.of(EMPTY);
BoilerData boiler = tankTile.boiler;
int totalTankSize = tankTile.getTotalTankSize();
boiler.calcMinMaxForSize(totalTankSize);
String label = forFlapDisplay ? "Boiler Status: " : "Boiler:";
String size = forFlapDisplay ? " Size" : "";
String water = forFlapDisplay ? "Water" : "";
String heat = forFlapDisplay ? " Heat" : "";
//String size = forFlapDisplay ? " Size" : "\u21d5";
//String water = forFlapDisplay ? "Water" : "\ud83c\udf0a";
//String heat = forFlapDisplay ? " Heat" : "\ud83d\udd25";
return Stream.of(
List.of(new TextComponent(label).append(boiler.getHeatLevelTextComponent())),
List.of(new TextComponent(size), boiler.getSizeComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
List.of(new TextComponent(water), boiler.getWaterComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK)),
List.of(new TextComponent(heat), boiler.getHeatComponent(!forFlapDisplay, forFlapDisplay, ChatFormatting.BLACK))
);
}
@Override
protected String getTranslationKey() {
return "boiler_status";
}
}

View file

@ -6,14 +6,14 @@ import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.stats.Stats;
public class DeathCounterDataSource extends StatTrackingDisplaySource {
public class DeathCounterDisplaySource extends StatTrackingDisplaySource {
@Override
protected int updatedScoreOf(ServerPlayer player) {
return player.getStats()
.getValue(Stats.CUSTOM.get(Stats.DEATHS));
}
@Override
protected String getTranslationKey() {
return "player_deaths";

View file

@ -42,9 +42,9 @@ public abstract class DisplaySource extends DisplayBehaviour {
}
public void onSignalReset(DisplayLinkContext context) {};
public void populateData(DisplayLinkContext context) {};
public int getPassiveRefreshTicks() {
return 100;
};
@ -57,6 +57,10 @@ public abstract class DisplaySource extends DisplayBehaviour {
return new TranslatableComponent(id.getNamespace() + ".display_source." + getTranslationKey());
}
public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay, FlapDisplayLayout layout, int lineIndex) {
loadFlapDisplayLayout(context, flapDisplay, layout);
}
public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) {
if (!layout.isLayout("Default"))

View file

@ -0,0 +1,54 @@
package com.simibubi.create.content.logistics.block.display.source;
import java.util.Random;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.EnchantmentTableBlock;
import net.minecraft.world.level.block.entity.EnchantmentTableBlockEntity;
public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource {
protected static final Random random = new Random();
protected static final ItemStack stack = new ItemStack(Items.DIAMOND_PICKAXE);
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
if (!(context.getSourceTE() instanceof EnchantmentTableBlockEntity enchantmentTile))
return ZERO;
BlockPos pos = context.getSourcePos();
Level level = context.level();
float enchantPower = 0;
for(BlockPos offset : EnchantmentTableBlock.BOOKSHELF_OFFSETS) {
if (!EnchantmentTableBlock.isValidBookShelf(level, pos, offset))
continue;
enchantPower += level.getBlockState(pos.offset(offset)).getEnchantPowerBonus(level, pos.offset(offset));
}
int cost = EnchantmentHelper.getEnchantmentCost(random, 2, (int) enchantPower, stack);
return new TextComponent(String.valueOf(cost));
}
@Override
protected String getTranslationKey() {
return "max_enchant_level";
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
}

View file

@ -0,0 +1,39 @@
package com.simibubi.create.content.logistics.block.display.source;
import java.util.List;
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.AABB;
public class EntityNameDisplaySource extends SingleLineDisplaySource {
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
List<SeatEntity> seats = context.level().getEntitiesOfClass(SeatEntity.class, new AABB(context.getSourcePos()));
if (seats.isEmpty())
return EMPTY_LINE;
SeatEntity seatEntity = seats.get(0);
List<Entity> passengers = seatEntity.getPassengers();
if (passengers.isEmpty())
return EMPTY_LINE;
return passengers.get(0).getDisplayName().copy();
}
@Override
protected String getTranslationKey() {
return "entity_name";
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
}

View file

@ -0,0 +1,53 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour;
import com.simibubi.create.foundation.utility.FluidFormatter;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
public class FluidAmountDisplaySource extends SingleLineDisplaySource {
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof ContentObserverTileEntity cote))
return EMPTY_LINE;
TankManipulationBehaviour tankManipulationBehaviour = cote.getBehaviour(TankManipulationBehaviour.OBSERVE);
FilteringBehaviour filteringBehaviour = cote.getBehaviour(FilteringBehaviour.TYPE);
IFluidHandler handler = tankManipulationBehaviour.getInventory();
if (handler == null)
return EMPTY_LINE;
long collected = 0;
for (int i = 0; i < handler.getTanks(); i++) {
FluidStack stack = handler.getFluidInTank(i);
if (stack.isEmpty())
continue;
if (!filteringBehaviour.test(stack))
continue;
collected += stack.getAmount();
}
return new TextComponent(FluidFormatter.asString(collected, false));
}
@Override
protected String getTranslationKey() {
return "fluid_amount";
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
}

View file

@ -0,0 +1,110 @@
package com.simibubi.create.content.logistics.block.display.source;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import org.apache.commons.lang3.mutable.MutableInt;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour;
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.FluidFormatter;
import com.simibubi.create.foundation.utility.IntAttached;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
public class FluidListDisplaySource extends ValueListDisplaySource {
@Override
protected Stream<IntAttached<MutableComponent>> provideEntries(DisplayLinkContext context, int maxRows) {
BlockEntity sourceTE = context.getSourceTE();
if (!(sourceTE instanceof ContentObserverTileEntity cote))
return Stream.empty();
TankManipulationBehaviour tankManipulationBehaviour = cote.getBehaviour(TankManipulationBehaviour.OBSERVE);
FilteringBehaviour filteringBehaviour = cote.getBehaviour(FilteringBehaviour.TYPE);
IFluidHandler handler = tankManipulationBehaviour.getInventory();
if (handler == null)
return Stream.empty();
Map<Fluid, Integer> fluids = new HashMap<>();
Map<Fluid, FluidStack> fluidNames = new HashMap<>();
for (int i = 0; i < handler.getTanks(); i++) {
FluidStack stack = handler.getFluidInTank(i);
if (stack.isEmpty())
continue;
if (!filteringBehaviour.test(stack))
continue;
fluids.merge(stack.getFluid(), stack.getAmount(), Integer::sum);
fluidNames.putIfAbsent(stack.getFluid(), stack);
}
return fluids.entrySet()
.stream()
.sorted((Comparator.comparingInt(value -> ((Map.Entry<Fluid, Integer>) value).getValue()).reversed()))
.limit(maxRows)
.map(entry -> IntAttached.with(
entry.getValue(),
new TranslatableComponent(fluidNames.get(entry.getKey()).getTranslationKey()))
);
}
@Override
protected List<MutableComponent> createComponentsFromEntry(DisplayLinkContext context, IntAttached<MutableComponent> entry) {
int amount = entry.getFirst();
MutableComponent name = entry.getSecond().append(WHITESPACE);
Couple<MutableComponent> formatted = FluidFormatter.asComponents(amount, shortenNumbers(context));
return List.of(formatted.getFirst(), formatted.getSecond(), name);
}
@Override
public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay, FlapDisplayLayout layout) {
Integer max = ((MutableInt) context.flapDisplayContext).getValue();
boolean shorten = shortenNumbers(context);
int length = FluidFormatter.asString(max, shorten).length();
String layoutKey = "FluidList_" + length;
if (layout.isLayout(layoutKey))
return;
int maxCharCount = flapDisplay.getMaxCharCount(1);
int numberLength = Math.min(maxCharCount, Math.max(3, length - 2));
int nameLength = Math.max(maxCharCount - numberLength - 2, 0);
FlapDisplaySection value = new FlapDisplaySection(FlapDisplaySection.MONOSPACE * numberLength, "number", false, false).rightAligned();
FlapDisplaySection unit = new FlapDisplaySection(FlapDisplaySection.MONOSPACE * 2, "fluid_units", true, true);
FlapDisplaySection name = new FlapDisplaySection(FlapDisplaySection.MONOSPACE * nameLength, "alphabet", false, false);
layout.configure(layoutKey, List.of(value, unit, name));
}
@Override
protected String getTranslationKey() {
return "list_fluids";
}
@Override
protected boolean valueFirst() {
return false;
}
}

View file

@ -0,0 +1,49 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import com.simibubi.create.foundation.gui.ModularGuiLineBuilder;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource {
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
if (!(context.getSourceTE() instanceof SpeedGaugeTileEntity gaugeTile))
return ZERO;
boolean absoluteValue = context.sourceConfig().getInt("Directional") == 0;
float speed = absoluteValue ? Math.abs(gaugeTile.getSpeed()) : gaugeTile.getSpeed();
return new TextComponent(IHaveGoggleInformation.format(speed));
}
@Override
protected String getTranslationKey() {
return "kinetic_speed";
}
@Override
@OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) {
super.initConfigurationWidgets(context, builder, isFirstLine);
if (isFirstLine)
return;
builder.addSelectionScrollInput(0, 95, (selectionScrollInput, label) -> {
selectionScrollInput.forOptions(Lang.translatedOptions("display_source.kinetic_speed", "absolute", "directional"));
}, "Directional");
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
}

View file

@ -0,0 +1,80 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
public abstract class KineticStressDisplaySource extends NumericSingleLineDisplaySource {
protected abstract double getValue(StressGaugeTileEntity gaugeTile);
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
if (!(context.getSourceTE() instanceof StressGaugeTileEntity gaugeTile))
return ZERO;
return new TextComponent(IHaveGoggleInformation.format(getValue(gaugeTile)));
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
public static class Current extends KineticStressDisplaySource {
@Override
protected double getValue(StressGaugeTileEntity gaugeTile) {
return gaugeTile.getNetworkStress();
}
@Override
protected String getTranslationKey() {
return "kinetic_stress.current";
}
}
public static class Max extends KineticStressDisplaySource {
@Override
protected double getValue(StressGaugeTileEntity gaugeTile) {
return gaugeTile.getNetworkCapacity();
}
@Override
protected String getTranslationKey() {
return "kinetic_stress.max";
}
}
public static class Percent extends KineticStressDisplaySource {
@Override
protected double getValue(StressGaugeTileEntity gaugeTile) {
return gaugeTile.getNetworkStress() / gaugeTile.getNetworkCapacity() * 100;
}
@Override
protected String getTranslationKey() {
return "kinetic_stress.percent";
}
}
public static class Remaining extends KineticStressDisplaySource {
@Override
protected double getValue(StressGaugeTileEntity gaugeTile) {
return gaugeTile.getNetworkCapacity() - gaugeTile.getNetworkStress();
}
@Override
protected String getTranslationKey() {
return "kinetic_stress.remaining";
}
}
}

View file

@ -37,9 +37,9 @@ public class DisplayBoardTarget extends DisplayTarget {
reserve(i + line, controller, context);
if (i > 0 && isReserved(i + line, controller, context))
break;
FlapDisplayLayout layout = lines.get(i + line);
if (i >= text.size()) {
if (source instanceof SingleLineDisplaySource)
break;
@ -47,7 +47,7 @@ public class DisplayBoardTarget extends DisplayTarget {
continue;
}
source.loadFlapDisplayLayout(context, controller, layout);
source.loadFlapDisplayLayout(context, controller, layout, i);
for (int sectionIndex = 0; sectionIndex < layout.getSections()
.size(); sectionIndex++) {
@ -96,7 +96,7 @@ public class DisplayBoardTarget extends DisplayTarget {
FlapDisplayTileEntity controller = fdte.getController();
if (controller == null)
return baseShape;
Vec3i normal = controller.getDirection()
.getClockWise()
.getNormal();

View file

@ -40,13 +40,13 @@ public class LecternDisplayTarget extends DisplayTarget {
for (int i = 0; i - line < text.size() && i < 50; i++) {
if (tag.size() <= i)
tag.add(StringTag.valueOf(i < line ? "" : Component.Serializer.toJson(text.get(i - line))));
else if (i >= line) {
if (i - line == 0)
reserve(i, lectern, context);
if (i - line > 0 && isReserved(i - line, lectern, context))
break;
tag.set(i, StringTag.valueOf(Component.Serializer.toJson(text.get(i - line))));
}
changed = true;
@ -56,8 +56,8 @@ public class LecternDisplayTarget extends DisplayTarget {
.put("pages", tag);
lectern.setBook(book);
if (changed && context.level()instanceof Level level)
level.sendBlockUpdated(context.getTargetPos(), lectern.getBlockState(), lectern.getBlockState(), 2);
if (changed)
context.level().sendBlockUpdated(context.getTargetPos(), lectern.getBlockState(), lectern.getBlockState(), 2);
}
@Override

View file

@ -23,13 +23,13 @@ public class SignDisplayTarget extends DisplayTarget {
reserve(i + line, sign, context);
if (i > 0 && isReserved(i + line, sign, context))
break;
sign.setMessage(i + line, text.get(i));
changed = true;
}
if (changed && context.level()instanceof Level level)
level.sendBlockUpdated(context.getTargetPos(), sign.getBlockState(), sign.getBlockState(), 2);
if (changed)
context.level().sendBlockUpdated(context.getTargetPos(), sign.getBlockState(), sign.getBlockState(), 2);
}
@Override

View file

@ -0,0 +1,27 @@
package com.simibubi.create.foundation.utility;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
public class FluidFormatter {
public static String asString(long amount, boolean shorten) {
Couple<MutableComponent> couple = asComponents(amount, shorten);
return couple.getFirst().getString() + " " + couple.getSecond().getString();
}
public static Couple<MutableComponent> asComponents(long amount, boolean shorten) {
if (shorten && amount >= 1000) {
return Couple.create(
new TextComponent(String.format("%.1f" , amount / 1000d)),
Lang.translate("generic.unit.buckets")
);
}
return Couple.create(
new TextComponent(String.valueOf(amount)),
Lang.translate("generic.unit.millibuckets")
);
}
}

View file

@ -19,7 +19,7 @@
"death.attack.create.cuckoo_clock_explosion.player": "%1$s was blown up by tampered cuckoo clock",
"death.attack.create.run_over": "%1$s was run over by %2$s",
"create.block.deployer.damage_source_name": "a rogue Deployer",
"create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block",
"create.menu.return": "Return to Menu",
@ -95,7 +95,8 @@
"create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "\u00B0",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.millibuckets": "mB",
"create.generic.unit.buckets": "B",
"create.generic.clockwise": "Clockwise",
"create.generic.counter_clockwise": "Counter-Clockwise",
"create.generic.in_quotes": "\"%1$s\"",
@ -722,11 +723,13 @@
"create.display_link.information_type": "Type of Information",
"create.display_link.display_on": "Write data to:",
"create.display_link.display_on_multiline": "Start writing at:",
"create.display_source.label": "Attached Label",
"create.display_source.combine_item_names": "Combine Item Names",
"create.display_source.count_items": "Amount of matching Items",
"create.display_source.list_items": "List matching Items",
"create.display_source.fluid_amount": "Amount of matching Fluids",
"create.display_source.list_fluids": "List matching Fluids",
"create.display_source.nixie_tube": "Copy Nixie Tubes",
"create.display_source.fill_level": "Container Fill Level",
"create.display_source.fill_level.display": "Display Format",
@ -761,7 +764,17 @@
"create.display_source.station_summary.minutes": " min",
"create.display_source.station_summary.seconds": "%1$ss",
"create.display_source.observed_train_name": "Detected Train Name",
"create.display_source.max_enchant_level": "Max Enchanting Cost",
"create.display_source.boiler_status": "Boiler Status",
"create.display_source.entity_name": "Entity Name",
"create.display_source.kinetic_speed": "Rotation Speed (RPM)",
"create.display_source.kinetic_speed.absolute": "Ignore Direction",
"create.display_source.kinetic_speed.directional": "Include Direction",
"create.display_source.kinetic_stress.current": "Stress Impact (Amount)",
"create.display_source.kinetic_stress.max": "Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)",
"create.display_target.line": "Line %1$s",
"create.display_target.page": "Page %1$s",
"create.display_target.single_line": "Single Line",
@ -770,8 +783,9 @@
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": " ;K;M",
"create.flap_display.cycles.fluid_units": "mB;B ",
"create.flap_display.cycles.instant": " ; ",
"create.flap_display.cycles.pixel": "\u2588;\u2592",
"create.flap_display.cycles.pixel": "\u2588;\u2593;\u2592",
"create.super_glue.too_far": "Selected area is too big",
"create.super_glue.cannot_reach": "Selected blocks must be connected",