Big Data, Part II

- Created "Data-source" behaviour for Boilers, Seats, Kinetic Gauges, Enchantment Table and Fluid-Content Observers
- Minor refactors at some locations
This commit is contained in:
zelophed 2022-06-07 23:14:04 +02:00
parent d969adb233
commit f033633271
36 changed files with 988 additions and 149 deletions

View file

@ -554,22 +554,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
50f7862ded2d9a955c259a12685906a9ec9ad97a assets/create/lang/en_ud.json 50f7862ded2d9a955c259a12685906a9ec9ad97a assets/create/lang/en_ud.json
b8ef69f9d7a670363f8adcc294c890c9d4265955 assets/create/lang/en_us.json 231f8ff1089adcd2f800eae89889d1bc8cfbc880 assets/create/lang/en_us.json
389ca4ecd1ff00ed2a211f6c07b0cf359098a49f assets/create/lang/unfinished/de_de.json c8b2bff9ff418afffb2cf0bcb0cdcfa9217284af assets/create/lang/unfinished/de_de.json
6e7e9849785c878046cd2b582a461aef95b7ce20 assets/create/lang/unfinished/es_cl.json caab06d1829dcbe8d1bd90f5a3372e697950b1c9 assets/create/lang/unfinished/es_cl.json
dbbb124039358f0a19af2f13e40e2767ed502976 assets/create/lang/unfinished/es_es.json aafa069927c628995802b86292b6e688ff37cf7c assets/create/lang/unfinished/es_es.json
9a17028a587007778503582a53a3055a969f05c4 assets/create/lang/unfinished/fr_fr.json 4f36eaeefffb1f14830eeb4e757305472dbe5123 assets/create/lang/unfinished/fr_fr.json
b153f0c6d252ee91ca57751630268f40fd9aa9eb assets/create/lang/unfinished/it_it.json 0708c7e4d9ac7b69c9b81ad6829b370d95e48c83 assets/create/lang/unfinished/it_it.json
292ace9dd69adc7028dfd551038dd612f1a62f34 assets/create/lang/unfinished/ja_jp.json 80c818a030468a7ac89b30b6d977f6ca3dc4dd6c assets/create/lang/unfinished/ja_jp.json
fdc062986ad47205b33c16f4339f9eb11ed89f3e assets/create/lang/unfinished/ko_kr.json 1af2a080a1a4ad06afafeda0c316ca59cc05f1d9 assets/create/lang/unfinished/ko_kr.json
81a2447f877c072cb8709570482c5b98ba18f45f assets/create/lang/unfinished/nl_nl.json 99cabbf434a085f68d1d8acf12736d70f141e68a assets/create/lang/unfinished/nl_nl.json
79f443acec9320796a140b6ca53c399b639c516f assets/create/lang/unfinished/pl_pl.json a76b173ed917a6209f479aa3554784ebe7c62753 assets/create/lang/unfinished/pl_pl.json
df1f85f1762ad26c4ab33eb0e52ab0516c227d27 assets/create/lang/unfinished/pt_br.json 52ff06ad9d938cb90c446d3e3e2401e5a3cb03a8 assets/create/lang/unfinished/pt_br.json
6e54230dee02119d3deef8668f815dfe095285fe assets/create/lang/unfinished/pt_pt.json 3a77d4f14b4a03654f66105666de5aab2d71cfb7 assets/create/lang/unfinished/pt_pt.json
7495c140ed817cc02a68e9ada4a2867a33260411 assets/create/lang/unfinished/ro_ro.json bdcdbfea30a78bb65ab5b1b2054348cd5fb4daab assets/create/lang/unfinished/ro_ro.json
53896d6fd85c2f6bd7fb4376bb4ce41aa1b12f38 assets/create/lang/unfinished/ru_ru.json 2c77fee5e42425963ff239634e1bc131208785e5 assets/create/lang/unfinished/ru_ru.json
a049b20621987947fc060c94b912f3afd90abe9e assets/create/lang/unfinished/zh_cn.json 27a690b057a14d4fe96fae20392b97da3164727e assets/create/lang/unfinished/zh_cn.json
a41da0cb6db644b9e13531ded820857a7811c7c7 assets/create/lang/unfinished/zh_tw.json 6f04d53cca731b7419cb9e617be69b6ca1355eef assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.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.rpm": "RPM",
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "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.clockwise": "Clockwise",
"create.generic.counter_clockwise": "Counter-Clockwise", "create.generic.counter_clockwise": "Counter-Clockwise",
"create.generic.in_quotes": "\"%1$s\"", "create.generic.in_quotes": "\"%1$s\"",
@ -1514,6 +1515,8 @@
"create.display_source.combine_item_names": "Combine Item Names", "create.display_source.combine_item_names": "Combine Item Names",
"create.display_source.count_items": "Amount of matching Items", "create.display_source.count_items": "Amount of matching Items",
"create.display_source.list_items": "List 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.nixie_tube": "Copy Nixie Tubes",
"create.display_source.fill_level": "Container Fill Level", "create.display_source.fill_level": "Container Fill Level",
"create.display_source.fill_level.display": "Display Format", "create.display_source.fill_level.display": "Display Format",
@ -1548,6 +1551,16 @@
"create.display_source.station_summary.minutes": " min", "create.display_source.station_summary.minutes": " min",
"create.display_source.station_summary.seconds": "%1$ss", "create.display_source.station_summary.seconds": "%1$ss",
"create.display_source.observed_train_name": "Detected Train Name", "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.line": "Line %1$s",
"create.display_target.page": "Page %1$s", "create.display_target.page": "Page %1$s",
@ -1557,8 +1570,9 @@
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;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.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": " ;K;M", "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.instant": " ; ",
"create.flap_display.cycles.pixel": "█;▒", "create.flap_display.cycles.pixel": "█;▓;▒",
"create.super_glue.too_far": "Selected area is too big", "create.super_glue.too_far": "Selected area is too big",
"create.super_glue.cannot_reach": "Selected blocks must be connected", "create.super_glue.cannot_reach": "Selected blocks must be connected",
@ -2699,4 +2713,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 942", "_": "Missing Localizations: 956",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Uhrzeigersinn", "create.generic.clockwise": "Uhrzeigersinn",
"create.generic.counter_clockwise": "Gegen-Uhrzeigersinn", "create.generic.counter_clockwise": "Gegen-Uhrzeigersinn",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 592", "_": "Missing Localizations: 606",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us", "create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "En sentido del Reloj", "create.generic.clockwise": "En sentido del Reloj",
"create.generic.counter_clockwise": "Al contrario del Reloj", "create.generic.counter_clockwise": "Al contrario del Reloj",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 256", "_": "Missing Localizations: 270",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "SU(unidades de estrés)", "create.generic.unit.stress": "SU(unidades de estrés)",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "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.clockwise": "En el sentido de las agujas del reloj",
"create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj", "create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1830", "_": "Missing Localizations: 1844",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us", "create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smS", "create.generic.unit.millibuckets": "%1$smS",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "dans le sens horaire", "create.generic.clockwise": "dans le sens horaire",
"create.generic.counter_clockwise": "dans le sens anti-horaire", "create.generic.counter_clockwise": "dans le sens anti-horaire",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1519", "_": "Missing Localizations: 1533",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$s mB", "create.generic.unit.millibuckets": "%1$s mB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Senso orario", "create.generic.clockwise": "Senso orario",
"create.generic.counter_clockwise": "Senso anti-orario", "create.generic.counter_clockwise": "Senso anti-orario",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 258", "_": "Missing Localizations: 272",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "度", "create.generic.unit.degrees": "度",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "時計回り", "create.generic.clockwise": "時計回り",
"create.generic.counter_clockwise": "反時計回り", "create.generic.counter_clockwise": "反時計回り",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 258", "_": "Missing Localizations: 272",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "시계 방향", "create.generic.clockwise": "시계 방향",
"create.generic.counter_clockwise": "시계 반대 방향", "create.generic.counter_clockwise": "시계 반대 방향",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2182", "_": "Missing Localizations: 2196",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -907,7 +907,8 @@
"create.generic.unit.rpm": "UNLOCALIZED: RPM", "create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "UNLOCALIZED: su", "create.generic.unit.stress": "UNLOCALIZED: su",
"create.generic.unit.degrees": "UNLOCALIZED: °", "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.clockwise": "UNLOCALIZED: Clockwise",
"create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise", "create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 631", "_": "Missing Localizations: 645",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "JO", "create.generic.unit.stress": "JO",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smW", "create.generic.unit.millibuckets": "%1$smW",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Zgodnie ze wskazówkami zegara", "create.generic.clockwise": "Zgodnie ze wskazówkami zegara",
"create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara", "create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1126", "_": "Missing Localizations: 1140",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us", "create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Sentido horário", "create.generic.clockwise": "Sentido horário",
"create.generic.counter_clockwise": "Sentido anti-horário", "create.generic.counter_clockwise": "Sentido anti-horário",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1804", "_": "Missing Localizations: 1818",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "us", "create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Sentido horário", "create.generic.clockwise": "Sentido horário",
"create.generic.counter_clockwise": "Sentido anti-horário", "create.generic.counter_clockwise": "Sentido anti-horário",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 259", "_": "Missing Localizations: 273",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "În sensul acelor de ceasornic", "create.generic.clockwise": "În sensul acelor de ceasornic",
"create.generic.counter_clockwise": "În sensul invers acelor de ceasornic", "create.generic.counter_clockwise": "În sensul invers acelor de ceasornic",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 636", "_": "Missing Localizations: 650",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "ен", "create.generic.unit.stress": "ен",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "По часовой стрелке", "create.generic.clockwise": "По часовой стрелке",
"create.generic.counter_clockwise": "Против часовой стрелки", "create.generic.counter_clockwise": "Против часовой стрелки",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 256", "_": "Missing Localizations: 270",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "顺时针方向", "create.generic.clockwise": "顺时针方向",
"create.generic.counter_clockwise": "逆时针方向", "create.generic.counter_clockwise": "逆时针方向",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 650", "_": "Missing Localizations: 664",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -908,6 +908,7 @@
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "度", "create.generic.unit.degrees": "度",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "順時鐘方向", "create.generic.clockwise": "順時鐘方向",
"create.generic.counter_clockwise": "逆時鐘方向", "create.generic.counter_clockwise": "逆時鐘方向",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
@ -1515,6 +1516,8 @@
"create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names",
"create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items",
"create.display_source.list_items": "UNLOCALIZED: List 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.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "UNLOCALIZED: Display Format", "create.display_source.fill_level.display": "UNLOCALIZED: Display Format",
@ -1549,6 +1552,16 @@
"create.display_source.station_summary.minutes": "UNLOCALIZED: min", "create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", "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.line": "UNLOCALIZED: Line %1$s",
"create.display_target.page": "UNLOCALIZED: Page %1$s", "create.display_target.page": "UNLOCALIZED: Page %1$s",
@ -1558,8 +1571,9 @@
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;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.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", "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.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.too_far": "UNLOCALIZED: Selected area is too big",
"create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected",
@ -2700,4 +2714,4 @@
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"
} }

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

View file

@ -168,7 +168,7 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
} }
int amount = amounts.get(index != -1 ? 0 : slotIndex); 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()) if (tooltip.isEmpty())
tooltip.add(0, text); tooltip.add(0, text);
else { else {

View file

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

View file

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

View file

@ -2,29 +2,29 @@ package com.simibubi.create.content.logistics.block.display;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; 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; import net.minecraft.world.level.block.entity.BlockEntity;
public class DisplayLinkContext { public class DisplayLinkContext {
private LevelAccessor level; private Level level;
private DisplayLinkTileEntity te; private DisplayLinkTileEntity te;
public Object flapDisplayContext; public Object flapDisplayContext;
public DisplayLinkContext(LevelAccessor level, DisplayLinkTileEntity te) { public DisplayLinkContext(Level level, DisplayLinkTileEntity te) {
this.level = level; this.level = level;
this.te = te; this.te = te;
} }
public LevelAccessor level() { public Level level() {
return level; return level;
} }
public DisplayLinkTileEntity te() { public DisplayLinkTileEntity te() {
return te; return te;
} }
public BlockEntity getSourceTE() { public BlockEntity getSourceTE() {
return level.getBlockEntity(getSourcePos()); 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.server.level.ServerPlayer;
import net.minecraft.stats.Stats; import net.minecraft.stats.Stats;
public class DeathCounterDataSource extends StatTrackingDisplaySource { public class DeathCounterDisplaySource extends StatTrackingDisplaySource {
@Override @Override
protected int updatedScoreOf(ServerPlayer player) { protected int updatedScoreOf(ServerPlayer player) {
return player.getStats() return player.getStats()
.getValue(Stats.CUSTOM.get(Stats.DEATHS)); .getValue(Stats.CUSTOM.get(Stats.DEATHS));
} }
@Override @Override
protected String getTranslationKey() { protected String getTranslationKey() {
return "player_deaths"; return "player_deaths";

View file

@ -42,9 +42,9 @@ public abstract class DisplaySource extends DisplayBehaviour {
} }
public void onSignalReset(DisplayLinkContext context) {}; public void onSignalReset(DisplayLinkContext context) {};
public void populateData(DisplayLinkContext context) {}; public void populateData(DisplayLinkContext context) {};
public int getPassiveRefreshTicks() { public int getPassiveRefreshTicks() {
return 100; return 100;
}; };
@ -57,6 +57,10 @@ public abstract class DisplaySource extends DisplayBehaviour {
return new TranslatableComponent(id.getNamespace() + ".display_source." + getTranslationKey()); 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, public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay,
FlapDisplayLayout layout) { FlapDisplayLayout layout) {
if (!layout.isLayout("Default")) 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); reserve(i + line, controller, context);
if (i > 0 && isReserved(i + line, controller, context)) if (i > 0 && isReserved(i + line, controller, context))
break; break;
FlapDisplayLayout layout = lines.get(i + line); FlapDisplayLayout layout = lines.get(i + line);
if (i >= text.size()) { if (i >= text.size()) {
if (source instanceof SingleLineDisplaySource) if (source instanceof SingleLineDisplaySource)
break; break;
@ -47,7 +47,7 @@ public class DisplayBoardTarget extends DisplayTarget {
continue; continue;
} }
source.loadFlapDisplayLayout(context, controller, layout); source.loadFlapDisplayLayout(context, controller, layout, i);
for (int sectionIndex = 0; sectionIndex < layout.getSections() for (int sectionIndex = 0; sectionIndex < layout.getSections()
.size(); sectionIndex++) { .size(); sectionIndex++) {
@ -96,7 +96,7 @@ public class DisplayBoardTarget extends DisplayTarget {
FlapDisplayTileEntity controller = fdte.getController(); FlapDisplayTileEntity controller = fdte.getController();
if (controller == null) if (controller == null)
return baseShape; return baseShape;
Vec3i normal = controller.getDirection() Vec3i normal = controller.getDirection()
.getClockWise() .getClockWise()
.getNormal(); .getNormal();

View file

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

View file

@ -23,13 +23,13 @@ public class SignDisplayTarget extends DisplayTarget {
reserve(i + line, sign, context); reserve(i + line, sign, context);
if (i > 0 && isReserved(i + line, sign, context)) if (i > 0 && isReserved(i + line, sign, context))
break; break;
sign.setMessage(i + line, text.get(i)); sign.setMessage(i + line, text.get(i));
changed = true; changed = true;
} }
if (changed && context.level()instanceof Level level) if (changed)
level.sendBlockUpdated(context.getTargetPos(), sign.getBlockState(), sign.getBlockState(), 2); context.level().sendBlockUpdated(context.getTargetPos(), sign.getBlockState(), sign.getBlockState(), 2);
} }
@Override @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.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", "death.attack.create.run_over": "%1$s was run over by %2$s",
"create.block.deployer.damage_source_name": "a rogue Deployer", "create.block.deployer.damage_source_name": "a rogue Deployer",
"create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block", "create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block",
"create.menu.return": "Return to Menu", "create.menu.return": "Return to Menu",
@ -95,7 +95,8 @@
"create.generic.unit.rpm": "RPM", "create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su", "create.generic.unit.stress": "su",
"create.generic.unit.degrees": "\u00B0", "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.clockwise": "Clockwise",
"create.generic.counter_clockwise": "Counter-Clockwise", "create.generic.counter_clockwise": "Counter-Clockwise",
"create.generic.in_quotes": "\"%1$s\"", "create.generic.in_quotes": "\"%1$s\"",
@ -721,11 +722,13 @@
"create.display_link.information_type": "Type of Information", "create.display_link.information_type": "Type of Information",
"create.display_link.display_on": "Write data to:", "create.display_link.display_on": "Write data to:",
"create.display_link.display_on_multiline": "Start writing at:", "create.display_link.display_on_multiline": "Start writing at:",
"create.display_source.label": "Attached Label", "create.display_source.label": "Attached Label",
"create.display_source.combine_item_names": "Combine Item Names", "create.display_source.combine_item_names": "Combine Item Names",
"create.display_source.count_items": "Amount of matching Items", "create.display_source.count_items": "Amount of matching Items",
"create.display_source.list_items": "List 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.nixie_tube": "Copy Nixie Tubes",
"create.display_source.fill_level": "Container Fill Level", "create.display_source.fill_level": "Container Fill Level",
"create.display_source.fill_level.display": "Display Format", "create.display_source.fill_level.display": "Display Format",
@ -760,7 +763,17 @@
"create.display_source.station_summary.minutes": " min", "create.display_source.station_summary.minutes": " min",
"create.display_source.station_summary.seconds": "%1$ss", "create.display_source.station_summary.seconds": "%1$ss",
"create.display_source.observed_train_name": "Detected Train Name", "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.line": "Line %1$s",
"create.display_target.page": "Page %1$s", "create.display_target.page": "Page %1$s",
"create.display_target.single_line": "Single Line", "create.display_target.single_line": "Single Line",
@ -769,8 +782,9 @@
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;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.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": " ;K;M", "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.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.too_far": "Selected area is too big",
"create.super_glue.cannot_reach": "Selected blocks must be connected", "create.super_glue.cannot_reach": "Selected blocks must be connected",