Pressure awareness

- Backtanks now warn a player when reaching 10% and 0% respectively
- Pulleys can now be monitored with a Stockpile Switch
- Target blocks now act as a display source for analog redstone strength
This commit is contained in:
simibubi 2022-06-08 14:46:01 +02:00
parent 017c547d0d
commit 70b8d2e998
29 changed files with 415 additions and 124 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
bd11cec0a09bc17c36293f2318b3a55816ba7357 assets/create/lang/en_us.json 96614cd555fed5ebe7d8df6252fa50754c6791fa assets/create/lang/en_us.json
43dceacc12846afb41841f8e6f89fbde373aee0c assets/create/lang/unfinished/de_de.json 36090345672d7090a40724aa825ec4e50c480fbb assets/create/lang/unfinished/de_de.json
9c8452625f048b42cc44e92781854560fb0a31b6 assets/create/lang/unfinished/es_cl.json f365d79601113e1c4c7ecc825e12f6190c90941f assets/create/lang/unfinished/es_cl.json
287eeafaa0c3d618b992b3da200b80c30d84b469 assets/create/lang/unfinished/es_es.json 93ae152cf0acab537d0aed48e812425430f67745 assets/create/lang/unfinished/es_es.json
7fc00f821984d29d0f2e58a0cd9f54c107765a9d assets/create/lang/unfinished/fr_fr.json 9c41eb507db3073c26f29a56655270c0d591209d assets/create/lang/unfinished/fr_fr.json
846428c03588dcf1166b77c92efd0196044b83f2 assets/create/lang/unfinished/it_it.json f47c79169263e0367391d08c35b4ea0b461318ce assets/create/lang/unfinished/it_it.json
abdd740066a0152f3bce5d3368f788e4a949ec35 assets/create/lang/unfinished/ja_jp.json 27d41aac785c80d2d12499a477ac3ce18c6d3942 assets/create/lang/unfinished/ja_jp.json
6a06c83079fdba01a2a565958af15330af7988f5 assets/create/lang/unfinished/ko_kr.json 6f0f264704ae5aea0ff14db7c9c6e0ad1cfd550e assets/create/lang/unfinished/ko_kr.json
d2f791d81474467bab224cc1ed7d33209d4b533c assets/create/lang/unfinished/nl_nl.json 7366202ce7eada97f56bb4bdeb7b83c65fe26eaf assets/create/lang/unfinished/nl_nl.json
b0a821a5b68e8863d76bf0c26881457c640f2db1 assets/create/lang/unfinished/pl_pl.json 411f8b4197e39165d7ffb0507cb02ac9d78bec03 assets/create/lang/unfinished/pl_pl.json
59826c6788b6eb792bb8180f7691296b3d16b755 assets/create/lang/unfinished/pt_br.json dcdfe6cdbfbd89024c9f8a715a96c9ccf37d84bf assets/create/lang/unfinished/pt_br.json
3ce46ee7790faf9b5e76159795675b636beee4b9 assets/create/lang/unfinished/pt_pt.json c45e084905b1e8edff4d6789bb1cf8d6765171e9 assets/create/lang/unfinished/pt_pt.json
741cc70fc2aaedd6d79c570705d28343d76cfcf6 assets/create/lang/unfinished/ro_ro.json 246e2e2f1b8971837b03649aa0cee46789a6c493 assets/create/lang/unfinished/ro_ro.json
5bfbf61f079563cddabb1ac02e68395a8b5ab688 assets/create/lang/unfinished/ru_ru.json f907f78cbe5ba10503fe6c46b4cc66dc13e55164 assets/create/lang/unfinished/ru_ru.json
50952f6f40e77ae2ab0ac7fb0bea6a2776b14469 assets/create/lang/unfinished/zh_cn.json ccd9afb8a17829570f1ee52395845f7b12aab7b3 assets/create/lang/unfinished/zh_cn.json
edccb3df1d94493485cfb451c1f7d6dfc4a2678d assets/create/lang/unfinished/zh_tw.json 72fac7ef99dbb56b21a6ddb69687bb6fb9469bbb 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

@ -1348,6 +1348,10 @@
"create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", "create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.",
"create.hint.full_deployer.title": "Deployer Item Overflow", "create.hint.full_deployer.title": "Deployer Item Overflow",
"create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", "create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.",
"create.backtank.low": "Backtank pressure low",
"create.backtank.depleted": "Backtank pressure depleted",
"create.hint.derailed_train.title": "Derailed Train", "create.hint.derailed_train.title": "Derailed Train",
"create.hint.derailed_train": "It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1562,6 +1566,10 @@
"create.display_source.kinetic_stress.max": "Stress Capacity (Max)", "create.display_source.kinetic_stress.max": "Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "Stress Impact (Percent)", "create.display_source.kinetic_stress.percent": "Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)",
"create.display_source.redstone_power": "Redstone Power",
"create.display_source.redstone_power.display": "Display Format",
"create.display_source.redstone_power.number": "Number",
"create.display_source.redstone_power.progress_bar": "Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 957", "_": "Missing Localizations: 963",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.", "create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.",
"create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf", "create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf",
"create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.", "create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 607", "_": "Missing Localizations: 613",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "Haz _Click-Derecho_ en el rodamiento con tu _mano_ _vacía_ para _unir_ la estructura que acabas de construir frente a él.", "create.hint.empty_bearing": "Haz _Click-Derecho_ en el rodamiento con tu _mano_ _vacía_ para _unir_ la estructura que acabas de construir frente a él.",
"create.hint.full_deployer.title": "Desbordamiento de objetos del Desplegador", "create.hint.full_deployer.title": "Desbordamiento de objetos del Desplegador",
"create.hint.full_deployer": "Parece que este _Desplegador_ contiene _objetos_ de _exceso_ que requieren ser _extraídos._ Usa una _tolva,_ _tolvogán_ u otros parecidos para librarlo del sobreflujo.", "create.hint.full_deployer": "Parece que este _Desplegador_ contiene _objetos_ de _exceso_ que requieren ser _extraídos._ Usa una _tolva,_ _tolvogán_ u otros parecidos para librarlo del sobreflujo.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 271", "_": "Missing Localizations: 277",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "Haz clic derecho sobre el rodamiento con la _mano vacía_ para _adjuntar_ la estructura que acabas de construir delante de él.", "create.hint.empty_bearing": "Haz clic derecho sobre el rodamiento con la _mano vacía_ para _adjuntar_ la estructura que acabas de construir delante de él.",
"create.hint.full_deployer.title": "Exceso de objetos en el desplegador", "create.hint.full_deployer.title": "Exceso de objetos en el desplegador",
"create.hint.full_deployer": "Parece que este _desplegador_ contiene _exceso_ de objetos que necesitan ser _extraídos._ Usa una _tolva_, _embudo_ u otro medio para liberarlo de su excedente.", "create.hint.full_deployer": "Parece que este _desplegador_ contiene _exceso_ de objetos que necesitan ser _extraídos._ Usa una _tolva_, _embudo_ u otro medio para liberarlo de su excedente.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1845", "_": "Missing Localizations: 1851",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.",
"create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow",
"create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1534", "_": "Missing Localizations: 1540",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_Clicca_ _col_ _destro_ il supporto con una _mano_ _vuota_ per _attaccarci_ la struttura che ci hai appena costruito davanti.", "create.hint.empty_bearing": "_Clicca_ _col_ _destro_ il supporto con una _mano_ _vuota_ per _attaccarci_ la struttura che ci hai appena costruito davanti.",
"create.hint.full_deployer.title": "Overflow di oggetti dell'installatore", "create.hint.full_deployer.title": "Overflow di oggetti dell'installatore",
"create.hint.full_deployer": "Sembra che questo _installatore_ contenga _oggetti_ _eccessivi_ che necessitano di essere _estratti_. Usa una _tramoggia_, un _imbuto_ o altro per liberarlo dall'overflow.", "create.hint.full_deployer": "Sembra che questo _installatore_ contenga _oggetti_ _eccessivi_ che necessitano di essere _estratti_. Usa una _tramoggia_, un _imbuto_ o altro per liberarlo dall'overflow.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 273", "_": "Missing Localizations: 279",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。", "create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。",
"create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています", "create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています",
"create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。", "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 273", "_": "Missing Localizations: 279",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.", "create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.",
"create.hint.full_deployer.title": "기계 손 아이템 과적", "create.hint.full_deployer.title": "기계 손 아이템 과적",
"create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", "create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2197", "_": "Missing Localizations: 2203",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.",
"create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow",
"create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 646", "_": "Missing Localizations: 652",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_Kliknij_ na łożysko _PPM_ pustą ręką, aby _przyczepić_ do niego strukturę zbudowaną z przodu.", "create.hint.empty_bearing": "_Kliknij_ na łożysko _PPM_ pustą ręką, aby _przyczepić_ do niego strukturę zbudowaną z przodu.",
"create.hint.full_deployer.title": "Nadmiar przedmiotów w aplikatorze", "create.hint.full_deployer.title": "Nadmiar przedmiotów w aplikatorze",
"create.hint.full_deployer": "Wygląda na to, że ten _aplikator_ zawiera _nadmiar_ _przedmiotów_, które muszą zostać _wyciągnięte_. Użyj _leji_, _lejków_ lub innych sposobów, aby uwolnić od przepełnienia.", "create.hint.full_deployer": "Wygląda na to, że ten _aplikator_ zawiera _nadmiar_ _przedmiotów_, które muszą zostać _wyciągnięte_. Użyj _leji_, _lejków_ lub innych sposobów, aby uwolnić od przepełnienia.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1141", "_": "Missing Localizations: 1147",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": " _clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.", "create.hint.empty_bearing": " _clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.",
"create.hint.full_deployer.title": "Implantador transbordando de itens", "create.hint.full_deployer.title": "Implantador transbordando de itens",
"create.hint.full_deployer": "Aparenta que esse _inplantador_ contém _itens_ em _excesso_ que precisam ser _extraídos._ Use um _funil,_ _funil de andesito/latão_ ou outros meios para extrair os itens excedentes.", "create.hint.full_deployer": "Aparenta que esse _inplantador_ contém _itens_ em _excesso_ que precisam ser _extraídos._ Use um _funil,_ _funil de andesito/latão_ ou outros meios para extrair os itens excedentes.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1819", "_": "Missing Localizations: 1825",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.",
"create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow",
"create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 274", "_": "Missing Localizations: 280",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "Apasă _Click-Dreapta_ pe rulment cu o _mână_ _goală_ pentru a _atașa_ structura pe care tocmai a construit-o în fața ei.", "create.hint.empty_bearing": "Apasă _Click-Dreapta_ pe rulment cu o _mână_ _goală_ pentru a _atașa_ structura pe care tocmai a construit-o în fața ei.",
"create.hint.full_deployer.title": "Revărsare De Obiecte Deployer", "create.hint.full_deployer.title": "Revărsare De Obiecte Deployer",
"create.hint.full_deployer": "De pare că acest _Deployer_ conține _obiecte în_ _exces_ care trebuie să fie _extrase._ Folosește o _pâlnie_ sau alte mijloace pentru a-l elibera din revărsare.", "create.hint.full_deployer": "De pare că acest _Deployer_ conține _obiecte în_ _exces_ care trebuie să fie _extrase._ Folosește o _pâlnie_ sau alte mijloace pentru a-l elibera din revărsare.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 651", "_": "Missing Localizations: 657",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.",
"create.hint.full_deployer.title": "Переполнение автономного активатора", "create.hint.full_deployer.title": "Переполнение автономного активатора",
"create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", "create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 271", "_": "Missing Localizations: 277",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_空手右击_轴承可以将你新建造的结构_接到_轴承上", "create.hint.empty_bearing": "_空手右击_轴承可以将你新建造的结构_接到_轴承上",
"create.hint.full_deployer.title": "机械手物品溢出", "create.hint.full_deployer.title": "机械手物品溢出",
"create.hint.full_deployer": "_机械手_包含_过剩的物品_需要被_提取_使用_漏斗_或其他方法将其从溢出中释放出来", "create.hint.full_deployer": "_机械手_包含_过剩的物品_需要被_提取_使用_漏斗_或其他方法将其从溢出中释放出来",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 665", "_": "Missing Localizations: 671",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1349,6 +1349,10 @@
"create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。", "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。",
"create.hint.full_deployer.title": "機械手物品溢出", "create.hint.full_deployer.title": "機械手物品溢出",
"create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。", "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。",
"create.backtank.low": "UNLOCALIZED: Backtank pressure low",
"create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted",
"create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train",
"create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -1563,6 +1567,10 @@
"create.display_source.kinetic_stress.max": "UNLOCALIZED: Stress Capacity (Max)", "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.percent": "UNLOCALIZED: Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Stress Capacity (Remaining)",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "UNLOCALIZED: Display Format",
"create.display_source.redstone_power.number": "UNLOCALIZED: Number",
"create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar",
"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",

View file

@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Blo
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider;
import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.piston.LinearActuatorTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.piston.LinearActuatorTileEntity;
import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchObservable;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform;
@ -24,7 +25,7 @@ import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
public class PulleyTileEntity extends LinearActuatorTileEntity { public class PulleyTileEntity extends LinearActuatorTileEntity implements StockpileSwitchObservable {
protected int initialOffset; protected int initialOffset;
private float prevAnimatedOffset; private float prevAnimatedOffset;
@ -90,7 +91,8 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
for (i = ((int) offset); i > 0; i--) { for (i = ((int) offset); i > 0; i--) {
BlockPos offset = worldPosition.below(i); BlockPos offset = worldPosition.below(i);
BlockState oldState = level.getBlockState(offset); BlockState oldState = level.getBlockState(offset);
if (oldState.getBlock() instanceof SimpleWaterloggedBlock && oldState.hasProperty(BlockStateProperties.WATERLOGGED) if (oldState.getBlock() instanceof SimpleWaterloggedBlock
&& oldState.hasProperty(BlockStateProperties.WATERLOGGED)
&& oldState.getValue(BlockStateProperties.WATERLOGGED)) { && oldState.getValue(BlockStateProperties.WATERLOGGED)) {
level.setBlock(offset, Blocks.WATER.defaultBlockState(), 66); level.setBlock(offset, Blocks.WATER.defaultBlockState(), 66);
continue; continue;
@ -98,7 +100,8 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
level.setBlock(offset, Blocks.AIR.defaultBlockState(), 66); level.setBlock(offset, Blocks.AIR.defaultBlockState(), 66);
} }
if (!contraption.getBlocks().isEmpty()) { if (!contraption.getBlocks()
.isEmpty()) {
contraption.removeBlocksFromWorld(level, BlockPos.ZERO); contraption.removeBlocksFromWorld(level, BlockPos.ZERO);
movedContraption = ControlledContraptionEntity.create(level, this, contraption); movedContraption = ControlledContraptionEntity.create(level, this, contraption);
movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ());
@ -166,7 +169,8 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
protected Vec3 toPosition(float offset) { protected Vec3 toPosition(float offset) {
if (movedContraption.getContraption() instanceof PulleyContraption) { if (movedContraption.getContraption() instanceof PulleyContraption) {
PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption(); PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption();
return Vec3.atLowerCornerOf(contraption.anchor).add(0, contraption.initialOffset - offset, 0); return Vec3.atLowerCornerOf(contraption.anchor)
.add(0, contraption.initialOffset - offset, 0);
} }
return Vec3.ZERO; return Vec3.ZERO;
@ -208,7 +212,8 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
@Override @Override
protected int getExtensionRange() { protected int getExtensionRange() {
return Math.max(0, Math.min(AllConfigs.SERVER.kinetics.maxRopeLength.get(), (worldPosition.getY() - 1) - level.getMinBuildHeight())); return Math.max(0, Math.min(AllConfigs.SERVER.kinetics.maxRopeLength.get(),
(worldPosition.getY() - 1) - level.getMinBuildHeight()));
} }
@Override @Override
@ -237,4 +242,12 @@ public class PulleyTileEntity extends LinearActuatorTileEntity {
public void animateOffset(float forcedOffset) { public void animateOffset(float forcedOffset) {
offset = forcedOffset; offset = forcedOffset;
} }
@Override
public float getPercent() {
int distance = worldPosition.getY() - level.getMinBuildHeight();
if (distance <= 0)
return 100;
return 100 * getInterpolatedOffset(.5f) / distance;
}
} }

View file

@ -2,11 +2,20 @@ package com.simibubi.create.content.curiosities.armor;
import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllEnchantments;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket;
import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket;
import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -33,10 +42,37 @@ public class BackTankUtil {
return Math.min(tag.getFloat("Air"), maxAir(backtank)); return Math.min(tag.getFloat("Air"), maxAir(backtank));
} }
public static void consumeAir(ItemStack backtank, float i) { public static void consumeAir(LivingEntity entity, ItemStack backtank, float i) {
CompoundTag tag = backtank.getOrCreateTag(); CompoundTag tag = backtank.getOrCreateTag();
tag.putFloat("Air", Math.min(getAir(backtank) - i, maxAir(backtank))); int maxAir = maxAir(backtank);
float air = getAir(backtank);
float newAir = air - i;
tag.putFloat("Air", Math.min(newAir, maxAir));
backtank.setTag(tag); backtank.setTag(tag);
if (!(entity instanceof ServerPlayer player))
return;
sendWarning(player, air, newAir, maxAir / 10f);
sendWarning(player, air, newAir, 1);
}
private static void sendWarning(ServerPlayer player, float air, float newAir, float threshold) {
if (newAir > threshold)
return;
if (air <= threshold)
return;
boolean depleted = threshold == 1;
MutableComponent component = Lang.translate(depleted ? "backtank.depleted" : "backtank.low");
AllSoundEvents.DENY.play(player.level, null, player.blockPosition(), 1, 1.25f);
AllSoundEvents.STEAM.play(player.level, null, player.blockPosition(), .5f, .5f);
player.connection.send(new ClientboundSetTitlesAnimationPacket(10, 40, 10));
player.connection.send(new ClientboundSetSubtitleTextPacket(
new TextComponent("\u26A0 ").withStyle(depleted ? ChatFormatting.RED : ChatFormatting.GOLD)
.append(component.withStyle(ChatFormatting.GRAY))));
player.connection.send(new ClientboundSetTitleTextPacket(new TextComponent("")));
} }
public static int maxAir(ItemStack backtank) { public static int maxAir(ItemStack backtank) {
@ -63,7 +99,7 @@ public class BackTankUtil {
if (!hasAirRemaining(backtank)) if (!hasAirRemaining(backtank))
return false; return false;
float cost = ((float) maxAirWithoutEnchants()) / usesPerTank; float cost = ((float) maxAirWithoutEnchants()) / usesPerTank;
consumeAir(backtank, cost); consumeAir(entity, backtank, cost);
return true; return true;
} }
@ -105,8 +141,8 @@ public class BackTankUtil {
return 0; return 0;
ItemStack backtank = get(player); ItemStack backtank = get(player);
if (backtank.isEmpty() || !hasAirRemaining(backtank)) if (backtank.isEmpty() || !hasAirRemaining(backtank))
return Mth.hsvToRgb( return Mth.hsvToRgb(Math.max(0.0F, 1.0F - (float) stack.getDamageValue() / stack.getMaxDamage()) / 3.0F,
Math.max(0.0F, 1.0F - (float) stack.getDamageValue() / stack.getMaxDamage()) / 3.0F, 1.0F, 1.0F); 1.0F, 1.0F);
return backtank.getItem() return backtank.getItem()
.getBarColor(backtank); .getBarColor(backtank);
} }

View file

@ -58,7 +58,7 @@ public class DivingHelmetItem extends CopperArmorItem {
entity.setAirSupply(Math.min(entity.getMaxAirSupply(), entity.getAirSupply() + 10)); entity.setAirSupply(Math.min(entity.getMaxAirSupply(), entity.getAirSupply() + 10));
entity.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 30, 0, true, false, true)); entity.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 30, 0, true, false, true));
BackTankUtil.consumeAir(backtank, 1); BackTankUtil.consumeAir(entity, backtank, 1);
} }
} }

View file

@ -11,6 +11,7 @@ import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.block.display.source.DeathCounterDisplaySource; 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.EnchantPowerDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.RedstonePowerDisplaySource;
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;
@ -181,5 +182,6 @@ public class AllDisplayBehaviours {
assign(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR); assign(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR);
assign(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK); assign(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK);
assign(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE); assign(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE);
assign(register(Create.asResource("redstone_power_display_source"), new RedstonePowerDisplaySource()), Blocks.TARGET);
} }
} }

View file

@ -7,6 +7,7 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes; import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
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.RedstonePowerDisplaySource;
import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.ScreenOpener;
@ -92,6 +93,11 @@ public class DisplayLinkBlock extends WrenchableDirectionalBlock implements ITE<
boolean isMoving) { boolean isMoving) {
if (worldIn.isClientSide) if (worldIn.isClientSide)
return; return;
if (fromPos.equals(pos.relative(state.getValue(FACING)
.getOpposite())))
sendToGatherers(worldIn, fromPos, (dlte, p) -> dlte.tickSource(), RedstonePowerDisplaySource.class);
boolean powered = shouldBePowered(state, worldIn, pos); boolean powered = shouldBePowered(state, worldIn, pos);
boolean previouslyPowered = state.getValue(POWERED); boolean previouslyPowered = state.getValue(POWERED);
if (previouslyPowered != powered) { if (previouslyPowered != powered) {

View file

@ -1,64 +1,28 @@
package com.simibubi.create.content.logistics.block.display.source; package com.simibubi.create.content.logistics.block.display.source;
import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.WIDE_MONOSPACE;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; 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.StockpileSwitchTileEntity; import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity;
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.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
public class FillLevelDisplaySource extends NumericSingleLineDisplaySource { public class FillLevelDisplaySource extends PercentOrProgressBarDisplaySource {
@Override @Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { protected Float getProgress(DisplayLinkContext context) {
BlockEntity te = context.getSourceTE(); BlockEntity te = context.getSourceTE();
if (!(te instanceof StockpileSwitchTileEntity sste)) if (!(te instanceof StockpileSwitchTileEntity sste))
return EMPTY_LINE; return null;
return sste.currentLevel;
float currentLevel = sste.currentLevel;
if (usePercent(context))
return new TextComponent(Mth.clamp((int) (currentLevel * 100), 0, 100) + "%");
String label = context.sourceConfig()
.getString("Label");
int labelSize = label.isEmpty() ? 0 : label.length() + 1;
int length = Math.min(stats.maxColumns() - labelSize, 128);
if (context.getTargetTE() instanceof SignBlockEntity)
length = (int) (length * 6f / 9f);
if (context.getTargetTE() instanceof FlapDisplayTileEntity)
length = sizeForWideChars(length);
int filledLength = (int) (currentLevel * length);
if (length < 1)
return EMPTY_LINE;
StringBuilder s = new StringBuilder();
int emptySpaces = length - filledLength;
for (int i = 0; i < filledLength; i++)
s.append("\u2588");
for (int i = 0; i < emptySpaces; i++)
s.append("\u2592");
return new TextComponent(s.toString());
} }
private boolean usePercent(DisplayLinkContext context) { @Override
protected boolean progressBarActive(DisplayLinkContext context) {
return context.sourceConfig() return context.sourceConfig()
.getInt("Mode") == 0; .getInt("Mode") != 0;
} }
@Override @Override
@ -66,21 +30,6 @@ public class FillLevelDisplaySource extends NumericSingleLineDisplaySource {
return "fill_level"; return "fill_level";
} }
@Override
protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return usePercent(context) ? super.getFlapDisplayLayoutName(context) : "Progress";
}
@Override
protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return usePercent(context) ? super.createSectionForValue(context, size)
: new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "pixel", false, false).wideFlaps();
}
private int sizeForWideChars(int size) {
return (int) (size * FlapDisplaySection.MONOSPACE / WIDE_MONOSPACE);
}
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) {

View file

@ -0,0 +1,77 @@
package com.simibubi.create.content.logistics.block.display.source;
import static com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection.WIDE_MONOSPACE;
import javax.annotation.Nullable;
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.FlapDisplaySection;
import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.entity.SignBlockEntity;
public abstract class PercentOrProgressBarDisplaySource extends NumericSingleLineDisplaySource {
@Override
protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) {
Float currentLevel = getProgress(context);
if (currentLevel == null)
return EMPTY_LINE;
if (!progressBarActive(context))
return new TextComponent(formatNumeric(currentLevel));
String label = context.sourceConfig()
.getString("Label");
int labelSize = label.isEmpty() ? 0 : label.length() + 1;
int length = Math.min(stats.maxColumns() - labelSize, 128);
if (context.getTargetTE() instanceof SignBlockEntity)
length = (int) (length * 6f / 9f);
if (context.getTargetTE() instanceof FlapDisplayTileEntity)
length = sizeForWideChars(length);
int filledLength = (int) (currentLevel * length);
if (length < 1)
return EMPTY_LINE;
StringBuilder s = new StringBuilder();
int emptySpaces = length - filledLength;
for (int i = 0; i < filledLength; i++)
s.append("\u2588");
for (int i = 0; i < emptySpaces; i++)
s.append("\u2592");
return new TextComponent(s.toString());
}
protected String formatNumeric(Float currentLevel) {
return Mth.clamp((int) (currentLevel * 100), 0, 100) + "%";
}
@Nullable
protected abstract Float getProgress(DisplayLinkContext context);
protected abstract boolean progressBarActive(DisplayLinkContext context);
@Override
protected String getFlapDisplayLayoutName(DisplayLinkContext context) {
return !progressBarActive(context) ? super.getFlapDisplayLayoutName(context) : "Progress";
}
@Override
protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) {
return !progressBarActive(context) ? super.createSectionForValue(context, size)
: new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "pixel", false, false).wideFlaps();
}
private int sizeForWideChars(int size) {
return (int) (size * FlapDisplaySection.MONOSPACE / WIDE_MONOSPACE);
}
}

View file

@ -0,0 +1,58 @@
package com.simibubi.create.content.logistics.block.display.source;
import com.simibubi.create.content.logistics.block.display.DisplayLinkContext;
import com.simibubi.create.foundation.gui.ModularGuiLineBuilder;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class RedstonePowerDisplaySource extends PercentOrProgressBarDisplaySource {
@Override
protected String getTranslationKey() {
return "redstone_power";
}
@Override
protected String formatNumeric(Float currentLevel) {
return String.valueOf((int) (currentLevel * 15));
}
@Override
protected boolean allowsLabeling(DisplayLinkContext context) {
return true;
}
@Override
protected Float getProgress(DisplayLinkContext context) {
BlockState blockState = context.level()
.getBlockState(context.getSourcePos());
return Math.max(context.level()
.getDirectSignalTo(context.getSourcePos()),
blockState.getOptionalValue(BlockStateProperties.POWER)
.orElse(0))
/ 15f;
}
@Override
protected boolean progressBarActive(DisplayLinkContext context) {
return context.sourceConfig()
.getInt("Mode") != 0;
}
@Override
@OnlyIn(Dist.CLIENT)
public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) {
super.initConfigurationWidgets(context, builder, isFirstLine);
if (isFirstLine)
return;
builder.addSelectionScrollInput(0, 120,
(si, l) -> si.forOptions(Lang.translatedOptions("display_source.redstone_power", "number", "progress_bar"))
.titled(Lang.translate("display_source.redstone_power.display")),
"Mode");
}
}

View file

@ -40,7 +40,8 @@ import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
public class StockpileSwitchBlock extends HorizontalDirectionalBlock implements ITE<StockpileSwitchTileEntity>, IWrenchable { public class StockpileSwitchBlock extends HorizontalDirectionalBlock
implements ITE<StockpileSwitchTileEntity>, IWrenchable {
public static final IntegerProperty INDICATOR = IntegerProperty.create("indicator", 0, 6); public static final IntegerProperty INDICATOR = IntegerProperty.create("indicator", 0, 6);
@ -146,18 +147,16 @@ public class StockpileSwitchBlock extends HorizontalDirectionalBlock implements
} }
} }
if (preferredFacing != null) { if (preferredFacing != null)
state = state.setValue(FACING, preferredFacing); return state.setValue(FACING, preferredFacing);
} else if (context.getClickedFace()
.getAxis()
.isHorizontal()) {
state = state.setValue(FACING, context.getClickedFace());
} else {
state = state.setValue(FACING, context.getHorizontalDirection()
.getOpposite());
}
return state; Direction facing = context.getClickedFace()
.getAxis()
.isHorizontal() ? context.getClickedFace()
: context.getHorizontalDirection()
.getOpposite();
return state.setValue(FACING, context.getPlayer() != null && context.getPlayer()
.isSteppingCarefully() ? facing.getOpposite() : facing);
} }
@Override @Override

View file

@ -0,0 +1,7 @@
package com.simibubi.create.content.logistics.block.redstone;
public interface StockpileSwitchObservable {
public float getPercent();
}

View file

@ -11,6 +11,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipula
import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@ -77,10 +78,18 @@ public class StockpileSwitchTileEntity extends SmartTileEntity {
boolean changed = false; boolean changed = false;
float occupied = 0; float occupied = 0;
float totalSpace = 0; float totalSpace = 0;
float prevLevel = currentLevel;
observedInventory.findNewCapability(); observedInventory.findNewCapability();
observedTank.findNewCapability(); observedTank.findNewCapability();
if (observedInventory.hasInventory() || observedTank.hasInventory()) {
BlockPos target = worldPosition.relative(getBlockState().getOptionalValue(StockpileSwitchBlock.FACING)
.orElse(Direction.NORTH));
if (level.getBlockEntity(target) instanceof StockpileSwitchObservable observable) {
currentLevel = observable.getPercent() / 100f;
} else if (observedInventory.hasInventory() || observedTank.hasInventory()) {
if (observedInventory.hasInventory()) { if (observedInventory.hasInventory()) {
// Item inventory // Item inventory
IItemHandler inv = observedInventory.getInventory(); IItemHandler inv = observedInventory.getInventory();
@ -112,6 +121,9 @@ public class StockpileSwitchTileEntity extends SmartTileEntity {
occupied += count * (1f / space); occupied += count * (1f / space);
} }
} }
currentLevel = occupied / totalSpace;
} else { } else {
// No compatible inventories found // No compatible inventories found
if (currentLevel == -1) if (currentLevel == -1)
@ -124,11 +136,8 @@ public class StockpileSwitchTileEntity extends SmartTileEntity {
return; return;
} }
float stockLevel = occupied / totalSpace;
if (currentLevel != stockLevel)
changed = true;
currentLevel = stockLevel;
currentLevel = Mth.clamp(currentLevel, 0, 1); currentLevel = Mth.clamp(currentLevel, 0, 1);
changed = currentLevel != prevLevel;
boolean previouslyPowered = redstoneState; boolean previouslyPowered = redstoneState;
if (redstoneState && currentLevel <= offWhenBelow) if (redstoneState && currentLevel <= offWhenBelow)

View file

@ -557,6 +557,9 @@
"create.hint.full_deployer.title": "Deployer Item Overflow", "create.hint.full_deployer.title": "Deployer Item Overflow",
"create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", "create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.",
"create.backtank.low": "Backtank pressure low",
"create.backtank.depleted": "Backtank pressure depleted",
"create.hint.derailed_train.title": "Derailed Train", "create.hint.derailed_train.title": "Derailed Train",
"create.hint.derailed_train": "It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", "create.hint.derailed_train": "It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.",
@ -774,6 +777,10 @@
"create.display_source.kinetic_stress.max": "Stress Capacity (Max)", "create.display_source.kinetic_stress.max": "Stress Capacity (Max)",
"create.display_source.kinetic_stress.percent": "Stress Impact (Percent)", "create.display_source.kinetic_stress.percent": "Stress Impact (Percent)",
"create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)", "create.display_source.kinetic_stress.remaining": "Stress Capacity (Remaining)",
"create.display_source.redstone_power": "Redstone Power",
"create.display_source.redstone_power.display": "Display Format",
"create.display_source.redstone_power.number": "Number",
"create.display_source.redstone_power.progress_bar": "Progress Bar",
"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",