Mixing up a Storm

- Reduced tps impact of basin recipe lookups noticeable in larger modpacks
- Fixed Brass tunnels distributing back into the side items get inserted from
- Fixed Brass tunnels distributing into sides blocked by an inserting funnel
- Cargo Conditions in schedules now match any cargo if no filter is specified
This commit is contained in:
simibubi 2022-09-23 18:40:15 +02:00
parent 09124ea92b
commit 4d4a959cfa
31 changed files with 169 additions and 91 deletions

View file

@ -559,23 +559,23 @@ 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
f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json
11fd391ac3015f4dace8138ab1ec423ee822c7b4 assets/create/lang/en_us.json c219c77242e645f32704201dd80e279b3759b794 assets/create/lang/en_us.json
da8d1341de295391fbb917b5bd82ddb16e9f96da assets/create/lang/unfinished/de_de.json cf37534c3f98098f42b181083fd7cc1063ac2bbb assets/create/lang/unfinished/de_de.json
b5487949ee53302706c15051157316bb60dfa070 assets/create/lang/unfinished/es_cl.json 83d427726fdc38ec3c5b8c3c0f6f87f49d3e5ff3 assets/create/lang/unfinished/es_cl.json
6df40ff1c18bfb83a33bc17e4458feeeee058bf1 assets/create/lang/unfinished/es_es.json d21caeb0cbe871e38dc101c34ab89ece3cbe2127 assets/create/lang/unfinished/es_es.json
bca24c29adf91e0ee09db39783c59fac843acb46 assets/create/lang/unfinished/fr_fr.json 2215688baa2b0beffe0c19f71a3238df1d01b0c1 assets/create/lang/unfinished/fr_fr.json
c27d2ba08da3b2a326d57c8f4e92adfc431a5b13 assets/create/lang/unfinished/it_it.json 79484f2c3eba2b40f5d82ffdc3abeb3d2e6962d2 assets/create/lang/unfinished/it_it.json
42a6713a509ecd676e7eae6e6492da1e20e79102 assets/create/lang/unfinished/ja_jp.json d659570c9dc89653f03cd4cc82ed50db443638d8 assets/create/lang/unfinished/ja_jp.json
38e01a060e0e468a51b1ca4f0bcbec203837ce04 assets/create/lang/unfinished/ko_kr.json 03c30521d9b1bc7a6eb85d2a59a4c4676dca581e assets/create/lang/unfinished/ko_kr.json
83d812a1003fa3f25a3c28bbf54bf93f583c594a assets/create/lang/unfinished/nl_nl.json 3a56d579d022cc1b20746e9d3a1483e6fa8fb4be assets/create/lang/unfinished/nl_nl.json
ca5cc394354887f89ecbc609f345eeb0dc41c20f assets/create/lang/unfinished/pl_pl.json d5bfeacb442236c8b075fddb41364f85c8cb7feb assets/create/lang/unfinished/pl_pl.json
11b3809e9c4c3c61687f7789979fdbf2332fd6a4 assets/create/lang/unfinished/pt_br.json 0f3f51d065d896a7e3b4abd8c2801fa3e8fbd8c3 assets/create/lang/unfinished/pt_br.json
dd52b8df6ea92c1218e398197a1cedae066b4e0e assets/create/lang/unfinished/pt_pt.json 9f2ec0b2f8fa9b380c7edb56bfb806bcce621cce assets/create/lang/unfinished/pt_pt.json
954a947034232204bd415e4bfb6c59a3a448b604 assets/create/lang/unfinished/ro_ro.json 1f88f0d91bdf5c68224cb65249f77272771939c9 assets/create/lang/unfinished/ro_ro.json
46d3024cd82c9a8dc74f670a1fa19f4fade6db97 assets/create/lang/unfinished/ru_ru.json d815a8642f6b7de3142877bb2a0b642a4e65ad32 assets/create/lang/unfinished/ru_ru.json
2f084cc7b66fe4ea82f5ac3338a1245caf67c54d assets/create/lang/unfinished/uk_ua.json ed29ef4ae8f3633533485d56f7fa8cb77b790a0a assets/create/lang/unfinished/uk_ua.json
82490ac29a0c35c07cde11c340634bf8b416b6a3 assets/create/lang/unfinished/zh_cn.json fa36855229bf63e2c4c6c8ce07cc2a1ab3c67592 assets/create/lang/unfinished/zh_cn.json
426b06805f08ef3fed15f404e9637b2d7082d660 assets/create/lang/unfinished/zh_tw.json 316dae07f95fb65c984fe7c424b566eb8ddba5f9 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

@ -1484,6 +1484,7 @@
"create.schedule.condition.threshold.equal": "exactly", "create.schedule.condition.threshold.equal": "exactly",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "Matching Content", "create.schedule.condition.threshold.matching_content": "Matching Content",
"create.schedule.condition.threshold.anything": "Anything",
"create.schedule.condition.threshold.item_measure": "Item Measure", "create.schedule.condition.threshold.item_measure": "Item Measure",
"create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.items": "Items",
"create.schedule.condition.threshold.stacks": "Stacks", "create.schedule.condition.threshold.stacks": "Stacks",
@ -1491,6 +1492,7 @@
"create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Reference Item", "create.schedule.condition.threshold.place_item": "Reference Item",
"create.schedule.condition.threshold.place_item_2": "Filters can be used", "create.schedule.condition.threshold.place_item_2": "Filters can be used",
"create.schedule.condition.threshold.place_item_3": "Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "Item Cargo Condition", "create.schedule.condition.item_threshold": "Item Cargo Condition",
"create.schedule.condition.redstone_link": "Redstone Link", "create.schedule.condition.redstone_link": "Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 840", "_": "Missing Localizations: 842",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "genau", "create.schedule.condition.threshold.equal": "genau",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s %3$s",
"create.schedule.condition.threshold.matching_content": "passender Inhalt", "create.schedule.condition.threshold.matching_content": "passender Inhalt",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Maßeinheit", "create.schedule.condition.threshold.item_measure": "Maßeinheit",
"create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.items": "Items",
"create.schedule.condition.threshold.stacks": "Stacks", "create.schedule.condition.threshold.stacks": "Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "Zugladestand: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Zugladestand: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Referenz-Item", "create.schedule.condition.threshold.place_item": "Referenz-Item",
"create.schedule.condition.threshold.place_item_2": "Filter können verwendet werden", "create.schedule.condition.threshold.place_item_2": "Filter können verwendet werden",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Flüssigkeitsladestand", "create.schedule.condition.fluid_threshold": "Flüssigkeitsladestand",
"create.schedule.condition.item_threshold": "Item-Ladestand", "create.schedule.condition.item_threshold": "Item-Ladestand",
"create.schedule.condition.redstone_link": "Redstone-Link", "create.schedule.condition.redstone_link": "Redstone-Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 986", "_": "Missing Localizations: 988",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 6", "_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "exactamente", "create.schedule.condition.threshold.equal": "exactamente",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s de %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s de %3$s",
"create.schedule.condition.threshold.matching_content": "Contenido coincidente", "create.schedule.condition.threshold.matching_content": "Contenido coincidente",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Medición de objetos", "create.schedule.condition.threshold.item_measure": "Medición de objetos",
"create.schedule.condition.threshold.items": "Objetos", "create.schedule.condition.threshold.items": "Objetos",
"create.schedule.condition.threshold.stacks": "Pilas de objetos", "create.schedule.condition.threshold.stacks": "Pilas de objetos",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "Cargamento: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Cargamento: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Objeto de referencia", "create.schedule.condition.threshold.place_item": "Objeto de referencia",
"create.schedule.condition.threshold.place_item_2": "Los filtros se pueden usar", "create.schedule.condition.threshold.place_item_2": "Los filtros se pueden usar",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Condición de cargamento de fluidos", "create.schedule.condition.fluid_threshold": "Condición de cargamento de fluidos",
"create.schedule.condition.item_threshold": "Condición de cargamento de objetos", "create.schedule.condition.item_threshold": "Condición de cargamento de objetos",
"create.schedule.condition.redstone_link": "Enlace de redstone", "create.schedule.condition.redstone_link": "Enlace de redstone",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2137", "_": "Missing Localizations: 2139",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 0", "_": "Missing Localizations: 2",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "esattamente", "create.schedule.condition.threshold.equal": "esattamente",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s di %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s di %3$s",
"create.schedule.condition.threshold.matching_content": "Contenuto corrispondente", "create.schedule.condition.threshold.matching_content": "Contenuto corrispondente",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Misura", "create.schedule.condition.threshold.item_measure": "Misura",
"create.schedule.condition.threshold.items": "Oggetti", "create.schedule.condition.threshold.items": "Oggetti",
"create.schedule.condition.threshold.stacks": "Stack", "create.schedule.condition.threshold.stacks": "Stack",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "Carico: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Carico: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Oggetto di riferimento", "create.schedule.condition.threshold.place_item": "Oggetto di riferimento",
"create.schedule.condition.threshold.place_item_2": "È permesso usare Filtri", "create.schedule.condition.threshold.place_item_2": "È permesso usare Filtri",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Carico di fluidi", "create.schedule.condition.fluid_threshold": "Carico di fluidi",
"create.schedule.condition.item_threshold": "Carico di oggetti", "create.schedule.condition.item_threshold": "Carico di oggetti",
"create.schedule.condition.redstone_link": "Connessione redstone", "create.schedule.condition.redstone_link": "Connessione redstone",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2", "_": "Missing Localizations: 4",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "ぴったり", "create.schedule.condition.threshold.equal": "ぴったり",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s",
"create.schedule.condition.threshold.matching_content": "一致する貨物", "create.schedule.condition.threshold.matching_content": "一致する貨物",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "アイテム単位", "create.schedule.condition.threshold.item_measure": "アイテム単位",
"create.schedule.condition.threshold.items": "個", "create.schedule.condition.threshold.items": "個",
"create.schedule.condition.threshold.stacks": "スタック", "create.schedule.condition.threshold.stacks": "スタック",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s", "create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s",
"create.schedule.condition.threshold.place_item": "参照アイテム", "create.schedule.condition.threshold.place_item": "参照アイテム",
"create.schedule.condition.threshold.place_item_2": "フィルターも使えます", "create.schedule.condition.threshold.place_item_2": "フィルターも使えます",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "液体貨物の状態", "create.schedule.condition.fluid_threshold": "液体貨物の状態",
"create.schedule.condition.item_threshold": "アイテム貨物の状態", "create.schedule.condition.item_threshold": "アイテム貨物の状態",
"create.schedule.condition.redstone_link": "レッドストーンリンク", "create.schedule.condition.redstone_link": "レッドストーンリンク",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 6", "_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "다음과 동일하면", "create.schedule.condition.threshold.equal": "다음과 동일하면",
"create.schedule.condition.threshold.x_units_of_item": "%3$s %1$s %2$s", "create.schedule.condition.threshold.x_units_of_item": "%3$s %1$s %2$s",
"create.schedule.condition.threshold.matching_content": "내용물 일치", "create.schedule.condition.threshold.matching_content": "내용물 일치",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "아이템 단위", "create.schedule.condition.threshold.item_measure": "아이템 단위",
"create.schedule.condition.threshold.items": "개", "create.schedule.condition.threshold.items": "개",
"create.schedule.condition.threshold.stacks": "스택", "create.schedule.condition.threshold.stacks": "스택",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "저장소: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "저장소: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "기준 아이템", "create.schedule.condition.threshold.place_item": "기준 아이템",
"create.schedule.condition.threshold.place_item_2": "필터를 사용할 수 있음", "create.schedule.condition.threshold.place_item_2": "필터를 사용할 수 있음",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "액체 저장소 조건", "create.schedule.condition.fluid_threshold": "액체 저장소 조건",
"create.schedule.condition.item_threshold": "아이템 저장소 조건", "create.schedule.condition.item_threshold": "아이템 저장소 조건",
"create.schedule.condition.redstone_link": "레드스톤 링크", "create.schedule.condition.redstone_link": "레드스톤 링크",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2485", "_": "Missing Localizations: 2487",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 10", "_": "Missing Localizations: 12",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "dokładnie", "create.schedule.condition.threshold.equal": "dokładnie",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s: %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s: %3$s",
"create.schedule.condition.threshold.matching_content": "Pasująca zawartość", "create.schedule.condition.threshold.matching_content": "Pasująca zawartość",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Jednostka przedmiotów", "create.schedule.condition.threshold.item_measure": "Jednostka przedmiotów",
"create.schedule.condition.threshold.items": "Przemioty", "create.schedule.condition.threshold.items": "Przemioty",
"create.schedule.condition.threshold.stacks": "Stosy", "create.schedule.condition.threshold.stacks": "Stosy",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "Ładunek: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Ładunek: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Przedmiot odniesienia", "create.schedule.condition.threshold.place_item": "Przedmiot odniesienia",
"create.schedule.condition.threshold.place_item_2": "Filtry mogą zostać użyte", "create.schedule.condition.threshold.place_item_2": "Filtry mogą zostać użyte",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Warunek ładunku płynów", "create.schedule.condition.fluid_threshold": "Warunek ładunku płynów",
"create.schedule.condition.item_threshold": "Warunek ładunku przedmiotów", "create.schedule.condition.item_threshold": "Warunek ładunku przedmiotów",
"create.schedule.condition.redstone_link": "Emiter sygnału", "create.schedule.condition.redstone_link": "Emiter sygnału",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1329", "_": "Missing Localizations: 1331",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2194", "_": "Missing Localizations: 2196",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 653", "_": "Missing Localizations: 655",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 0", "_": "Missing Localizations: 2",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "точно", "create.schedule.condition.threshold.equal": "точно",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s (%3$s)", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s (%3$s)",
"create.schedule.condition.threshold.matching_content": "Определённое содержимое", "create.schedule.condition.threshold.matching_content": "Определённое содержимое",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Количество предметов", "create.schedule.condition.threshold.item_measure": "Количество предметов",
"create.schedule.condition.threshold.items": "штук", "create.schedule.condition.threshold.items": "штук",
"create.schedule.condition.threshold.stacks": "стаков", "create.schedule.condition.threshold.stacks": "стаков",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "Груз: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Груз: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Основной предмет", "create.schedule.condition.threshold.place_item": "Основной предмет",
"create.schedule.condition.threshold.place_item_2": "Можно использовать фильтры", "create.schedule.condition.threshold.place_item_2": "Можно использовать фильтры",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Состояние жидкого груза", "create.schedule.condition.fluid_threshold": "Состояние жидкого груза",
"create.schedule.condition.item_threshold": "Состояние груза", "create.schedule.condition.item_threshold": "Состояние груза",
"create.schedule.condition.redstone_link": "Беспроводной сигнал", "create.schedule.condition.redstone_link": "Беспроводной сигнал",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 984", "_": "Missing Localizations: 986",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2", "_": "Missing Localizations: 4",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "恰好", "create.schedule.condition.threshold.equal": "恰好",
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s%3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s%3$s",
"create.schedule.condition.threshold.matching_content": "匹配内容", "create.schedule.condition.threshold.matching_content": "匹配内容",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "物品度量", "create.schedule.condition.threshold.item_measure": "物品度量",
"create.schedule.condition.threshold.items": "个", "create.schedule.condition.threshold.items": "个",
"create.schedule.condition.threshold.stacks": "组", "create.schedule.condition.threshold.stacks": "组",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "货物:%1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "货物:%1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "参考物品", "create.schedule.condition.threshold.place_item": "参考物品",
"create.schedule.condition.threshold.place_item_2": "可以使用过滤器", "create.schedule.condition.threshold.place_item_2": "可以使用过滤器",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "流体货物条件", "create.schedule.condition.fluid_threshold": "流体货物条件",
"create.schedule.condition.item_threshold": "物品货物条件", "create.schedule.condition.item_threshold": "物品货物条件",
"create.schedule.condition.redstone_link": "无线红石", "create.schedule.condition.redstone_link": "无线红石",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 6", "_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "剛好", "create.schedule.condition.threshold.equal": "剛好",
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s",
"create.schedule.condition.threshold.matching_content": "比對內容", "create.schedule.condition.threshold.matching_content": "比對內容",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "物品單位", "create.schedule.condition.threshold.item_measure": "物品單位",
"create.schedule.condition.threshold.items": "個", "create.schedule.condition.threshold.items": "個",
"create.schedule.condition.threshold.stacks": "組", "create.schedule.condition.threshold.stacks": "組",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "參考物品", "create.schedule.condition.threshold.place_item": "參考物品",
"create.schedule.condition.threshold.place_item_2": "可以使用過濾器", "create.schedule.condition.threshold.place_item_2": "可以使用過濾器",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "流體貨物條件", "create.schedule.condition.fluid_threshold": "流體貨物條件",
"create.schedule.condition.item_threshold": "物品貨物條件", "create.schedule.condition.item_threshold": "物品貨物條件",
"create.schedule.condition.redstone_link": "無線紅石連接", "create.schedule.condition.redstone_link": "無線紅石連接",

View file

@ -218,14 +218,18 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity {
protected List<Recipe<?>> getMatchingRecipes() { protected List<Recipe<?>> getMatchingRecipes() {
List<Recipe<?>> matchingRecipes = super.getMatchingRecipes(); List<Recipe<?>> matchingRecipes = super.getMatchingRecipes();
if (!AllConfigs.SERVER.recipes.allowBrewingInMixer.get()) { if (!AllConfigs.SERVER.recipes.allowBrewingInMixer.get())
return matchingRecipes; return matchingRecipes;
}
Optional<BasinTileEntity> basin = getBasin(); Optional<BasinTileEntity> basin = getBasin();
if (!basin.isPresent()) if (!basin.isPresent())
return matchingRecipes; return matchingRecipes;
IItemHandler availableItems = basin.get()
BasinTileEntity basinTileEntity = basin.get();
if (basin.isEmpty())
return matchingRecipes;
IItemHandler availableItems = basinTileEntity
.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
.orElse(null); .orElse(null);
if (availableItems == null) if (availableItems == null)

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.contraptions.processing; package com.simibubi.create.content.contraptions.processing;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -64,7 +65,8 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity {
return true; return true;
if (level == null || level.isClientSide) if (level == null || level.isClientSide)
return true; return true;
if (!getBasin().filter(BasinTileEntity::canContinueProcessing) Optional<BasinTileEntity> basin = getBasin();
if (!basin.filter(BasinTileEntity::canContinueProcessing)
.isPresent()) .isPresent())
return true; return true;
@ -118,6 +120,10 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity {
} }
protected List<Recipe<?>> getMatchingRecipes() { protected List<Recipe<?>> getMatchingRecipes() {
if (getBasin().map(BasinTileEntity::isEmpty)
.orElse(true))
return new ArrayList<>();
List<Recipe<?>> list = RecipeFinder.get(getRecipeCacheKey(), level, this::matchStaticFilters); List<Recipe<?>> list = RecipeFinder.get(getRecipeCacheKey(), level, this::matchStaticFilters);
return list.stream() return list.stream()
.filter(this::matchBasinRecipe) .filter(this::matchBasinRecipe)

View file

@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.processing;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -78,7 +77,6 @@ public class BasinRecipe extends ProcessingRecipe<SmartInventory> {
List<FluidStack> recipeOutputFluids = new ArrayList<>(); List<FluidStack> recipeOutputFluids = new ArrayList<>();
List<Ingredient> ingredients = new LinkedList<>(recipe.getIngredients()); List<Ingredient> ingredients = new LinkedList<>(recipe.getIngredients());
ingredients.sort(Comparator.comparingInt(i -> i.getItems().length));
List<FluidIngredient> fluidIngredients = List<FluidIngredient> fluidIngredients =
isBasinRecipe ? ((BasinRecipe) recipe).getFluidIngredients() : Collections.emptyList(); isBasinRecipe ? ((BasinRecipe) recipe).getFluidIngredients() : Collections.emptyList();

View file

@ -88,6 +88,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor
Direction preferredSpoutput; Direction preferredSpoutput;
protected List<ItemStack> spoutputBuffer; protected List<ItemStack> spoutputBuffer;
protected List<FluidStack> spoutputFluidBuffer; protected List<FluidStack> spoutputFluidBuffer;
int recipeBackupCheck;
public static final int OUTPUT_ANIMATION_TIME = 10; public static final int OUTPUT_ANIMATION_TIME = 10;
List<IntAttached<ItemStack>> visualizedOutputItems; List<IntAttached<ItemStack>> visualizedOutputItems;
@ -115,6 +116,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor
preferredSpoutput = null; preferredSpoutput = null;
spoutputBuffer = new ArrayList<>(); spoutputBuffer = new ArrayList<>();
spoutputFluidBuffer = new ArrayList<>(); spoutputFluidBuffer = new ArrayList<>();
recipeBackupCheck = 20;
} }
@Override @Override
@ -227,19 +229,32 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor
@Override @Override
public void lazyTick() { public void lazyTick() {
super.lazyTick(); super.lazyTick();
updateSpoutput();
if (!level.isClientSide) if (!level.isClientSide) {
updateSpoutput();
if (recipeBackupCheck-- > 0)
return;
recipeBackupCheck = 20;
if (isEmpty())
return;
notifyChangeOfContents();
return; return;
}
BlockEntity tileEntity = level.getBlockEntity(worldPosition.above(2)); BlockEntity tileEntity = level.getBlockEntity(worldPosition.above(2));
if (!(tileEntity instanceof MechanicalMixerTileEntity)) { if (!(tileEntity instanceof MechanicalMixerTileEntity)) {
setAreFluidsMoving(false); setAreFluidsMoving(false);
return; return;
} }
MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) tileEntity; MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) tileEntity;
setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20); setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20);
} }
public boolean isEmpty() {
return inputInventory.isEmpty() && outputInventory.isEmpty() && inputTank.isEmpty() && outputTank.isEmpty();
}
public void onWrenched(Direction face) { public void onWrenched(Direction face) {
BlockState blockState = getBlockState(); BlockState blockState = getBlockState();
Direction currentFacing = blockState.getValue(BasinBlock.FACING); Direction currentFacing = blockState.getValue(BasinBlock.FACING);
@ -256,15 +271,8 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor
} }
private void updateSpoutput() { private void updateSpoutput() {
if (level.isClientSide)
return;
BlockState blockState = getBlockState(); BlockState blockState = getBlockState();
Direction currentFacing = blockState.getValue(BasinBlock.FACING); Direction currentFacing = blockState.getValue(BasinBlock.FACING);
if (currentFacing != Direction.DOWN)
notifyChangeOfContents();
Direction newFacing = Direction.DOWN; Direction newFacing = Direction.DOWN;
for (Direction test : Iterate.horizontalDirections) { for (Direction test : Iterate.horizontalDirections) {
boolean canOutputTo = BasinBlock.canOutputTo(level, worldPosition, test); boolean canOutputTo = BasinBlock.canOutputTo(level, worldPosition, test);

View file

@ -465,7 +465,7 @@ public class BeltTileEntity extends KineticTileEntity {
return inserted; return inserted;
if (!simulate) { if (!simulate) {
BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true);
tunnelTE.setStackToDistribute(inserted); tunnelTE.setStackToDistribute(inserted, side.getOpposite());
} }
return empty; return empty;
} }

View file

@ -54,7 +54,7 @@ public class BeltTunnelInteractionHandler {
if (!brassTunnel.canTakeItems()) if (!brassTunnel.canTakeItems())
return true; return true;
if (onServer) { if (onServer) {
brassTunnel.setStackToDistribute(current.stack); brassTunnel.setStackToDistribute(current.stack, movementFacing.getOpposite());
current.stack = ItemStack.EMPTY; current.stack = ItemStack.EMPTY;
beltInventory.belt.sendData(); beltInventory.belt.sendData();
beltInventory.belt.setChanged(); beltInventory.belt.setChanged();

View file

@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.block.belts.tunnel;
import java.util.List; import java.util.List;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
@ -44,7 +43,7 @@ public class BrassTunnelBlock extends BeltTunnelBlock {
for (ItemStack itemStack : stacksOfGroup) for (ItemStack itemStack : stacksOfGroup)
player.getInventory().placeItemBackInInventory(itemStack.copy()); player.getInventory().placeItemBackInInventory(itemStack.copy());
world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f,
1f + Create.RANDOM.nextFloat()); 1f + world.random.nextFloat());
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
}); });
} }
@ -61,16 +60,16 @@ public class BrassTunnelBlock extends BeltTunnelBlock {
} }
@Override @Override
public void onRemove(BlockState p_196243_1_, Level p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
boolean p_196243_5_) { if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) {
if (p_196243_1_.hasBlockEntity() TileEntityBehaviour.destroy(level, pos, FilteringBehaviour.TYPE);
&& (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasBlockEntity())) { withTileEntityDo(level, pos, te -> {
TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE); if (!(te instanceof BrassTunnelTileEntity btte))
withTileEntityDo(p_196243_2_, p_196243_3_, te -> { return;
if (te instanceof BrassTunnelTileEntity) Block.popResource(level, pos, btte.stackToDistribute);
Block.popResource(p_196243_2_, p_196243_3_, ((BrassTunnelTileEntity) te).stackToDistribute); btte.stackEnteredFrom = null;
}); });
p_196243_2_.removeBlockEntity(p_196243_3_); level.removeBlockEntity(pos);
} }
} }

View file

@ -34,7 +34,7 @@ public class BrassTunnelItemHandler implements IItemHandler {
if (!te.canTakeItems()) if (!te.canTakeItems())
return stack; return stack;
if (!simulate) if (!simulate)
te.setStackToDistribute(stack); te.setStackToDistribute(stack, null);
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }

View file

@ -17,6 +17,9 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
@ -61,6 +64,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
boolean connectedRight; boolean connectedRight;
ItemStack stackToDistribute; ItemStack stackToDistribute;
Direction stackEnteredFrom;
float distributionProgress; float distributionProgress;
int distributionDistanceLeft; int distributionDistanceLeft;
int distributionDistanceRight; int distributionDistanceRight;
@ -81,6 +86,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
distributionTargets = Couple.create(ArrayList::new); distributionTargets = Couple.create(ArrayList::new);
syncSet = new HashSet<>(); syncSet = new HashSet<>();
stackToDistribute = ItemStack.EMPTY; stackToDistribute = ItemStack.EMPTY;
stackEnteredFrom = null;
beltCapability = LazyOptional.empty(); beltCapability = LazyOptional.empty();
tunnelCapability = LazyOptional.of(() -> new BrassTunnelItemHandler(this)); tunnelCapability = LazyOptional.of(() -> new BrassTunnelItemHandler(this));
previousOutputIndex = 0; previousOutputIndex = 0;
@ -183,6 +189,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
for (Pair<BlockPos, Direction> pair : list) { for (Pair<BlockPos, Direction> pair : list) {
BlockPos tunnelPos = pair.getKey(); BlockPos tunnelPos = pair.getKey();
Direction output = pair.getValue(); Direction output = pair.getValue();
if (tunnelPos.equals(worldPosition) && output == stackEnteredFrom)
continue;
BlockEntity te = level.getBlockEntity(tunnelPos); BlockEntity te = level.getBlockEntity(tunnelPos);
if (!(te instanceof BrassTunnelTileEntity)) if (!(te instanceof BrassTunnelTileEntity))
continue; continue;
@ -306,13 +314,16 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
toDistribute.grow(failedTransferrals); toDistribute.grow(failedTransferrals);
stackToDistribute = ItemHandlerHelper.copyStackWithSize(stackToDistribute, toDistribute.getCount()); stackToDistribute = ItemHandlerHelper.copyStackWithSize(stackToDistribute, toDistribute.getCount());
if (stackToDistribute.isEmpty())
stackEnteredFrom = null;
previousOutputIndex++; previousOutputIndex++;
previousOutputIndex %= amountTargets; previousOutputIndex %= amountTargets;
notifyUpdate(); notifyUpdate();
} }
public void setStackToDistribute(ItemStack stack) { public void setStackToDistribute(ItemStack stack, @Nullable Direction enteredFrom) {
stackToDistribute = stack; stackToDistribute = stack;
stackEnteredFrom = enteredFrom;
distributionProgress = -1; distributionProgress = -1;
sendData(); sendData();
setChanged(); setChanged();
@ -329,7 +340,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
if (!own.isEmpty()) { if (!own.isEmpty()) {
list.add(own); list.add(own);
if (!simulate) if (!simulate)
setStackToDistribute(ItemStack.EMPTY); setStackToDistribute(ItemStack.EMPTY, null);
} }
for (boolean left : Iterate.trueAndFalse) { for (boolean left : Iterate.trueAndFalse) {
@ -345,7 +356,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
continue; continue;
list.add(other); list.add(other);
if (!simulate) if (!simulate)
adjacent.setStackToDistribute(ItemStack.EMPTY); adjacent.setStackToDistribute(ItemStack.EMPTY, null);
} }
} }
@ -514,22 +525,30 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
continue; continue;
if (direction == movementFacing.getOpposite()) if (direction == movementFacing.getOpposite())
continue; continue;
if (tunnelTE.sides.contains(direction)) { if (!tunnelTE.sides.contains(direction))
BlockPos offset = tunnelTE.worldPosition.below() continue;
.relative(direction);
DirectBeltInputBehaviour inputBehaviour = BlockPos offset = tunnelTE.worldPosition.below()
TileEntityBehaviour.get(level, offset, DirectBeltInputBehaviour.TYPE); .relative(direction);
if (inputBehaviour == null) {
if (direction == movementFacing) BlockState potentialFunnel = level.getBlockState(offset.above());
if (!BlockHelper.hasBlockSolidSide(level.getBlockState(offset), level, offset, if (potentialFunnel.getBlock() instanceof BeltFunnelBlock
direction.getOpposite())) && potentialFunnel.getValue(BeltFunnelBlock.SHAPE) == Shape.PULLING
validOutputs.add(Pair.of(tunnelTE, direction)); && FunnelBlock.getFunnelFacing(potentialFunnel) == direction)
continue; continue;
}
if (inputBehaviour.canInsertFromSide(direction)) DirectBeltInputBehaviour inputBehaviour =
validOutputs.add(Pair.of(tunnelTE, direction)); TileEntityBehaviour.get(level, offset, DirectBeltInputBehaviour.TYPE);
if (inputBehaviour == null) {
if (direction == movementFacing)
if (!BlockHelper.hasBlockSolidSide(level.getBlockState(offset), level, offset,
direction.getOpposite()))
validOutputs.add(Pair.of(tunnelTE, direction));
continue; continue;
} }
if (inputBehaviour.canInsertFromSide(direction))
validOutputs.add(Pair.of(tunnelTE, direction));
continue;
} }
} }
} }
@ -559,7 +578,11 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
compound.putBoolean("SyncedOutput", syncedOutputActive); compound.putBoolean("SyncedOutput", syncedOutputActive);
compound.putBoolean("ConnectedLeft", connectedLeft); compound.putBoolean("ConnectedLeft", connectedLeft);
compound.putBoolean("ConnectedRight", connectedRight); compound.putBoolean("ConnectedRight", connectedRight);
compound.put("StackToDistribute", stackToDistribute.serializeNBT()); compound.put("StackToDistribute", stackToDistribute.serializeNBT());
if (stackEnteredFrom != null)
NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom);
compound.putFloat("DistributionProgress", distributionProgress); compound.putFloat("DistributionProgress", distributionProgress);
compound.putInt("PreviousIndex", previousOutputIndex); compound.putInt("PreviousIndex", previousOutputIndex);
compound.putInt("DistanceLeft", distributionDistanceLeft); compound.putInt("DistanceLeft", distributionDistanceLeft);
@ -587,7 +610,12 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
syncedOutputActive = compound.getBoolean("SyncedOutput"); syncedOutputActive = compound.getBoolean("SyncedOutput");
connectedLeft = compound.getBoolean("ConnectedLeft"); connectedLeft = compound.getBoolean("ConnectedLeft");
connectedRight = compound.getBoolean("ConnectedRight"); connectedRight = compound.getBoolean("ConnectedRight");
stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute")); stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute"));
stackEnteredFrom =
compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class)
: null;
distributionProgress = compound.getFloat("DistributionProgress"); distributionProgress = compound.getFloat("DistributionProgress");
previousOutputIndex = compound.getInt("PreviousIndex"); previousOutputIndex = compound.getInt("PreviousIndex");
distributionDistanceLeft = compound.getInt("DistanceLeft"); distributionDistanceLeft = compound.getInt("DistanceLeft");

View file

@ -110,6 +110,8 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio
public List<Component> getSecondLineTooltip(int slot) { public List<Component> getSecondLineTooltip(int slot) {
return ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.place_item"), return ImmutableList.of(Lang.translateDirect("schedule.condition.threshold.place_item"),
Lang.translateDirect("schedule.condition.threshold.place_item_2") Lang.translateDirect("schedule.condition.threshold.place_item_2")
.withStyle(ChatFormatting.GRAY),
Lang.translateDirect("schedule.condition.threshold.place_item_3")
.withStyle(ChatFormatting.GRAY)); .withStyle(ChatFormatting.GRAY));
} }

View file

@ -44,9 +44,6 @@ public class FluidThresholdCondition extends CargoThresholdCondition {
Ops operator = getOperator(); Ops operator = getOperator();
int target = getThreshold(); int target = getThreshold();
if (compareStack.isEmpty())
return true;
int foundFluid = 0; int foundFluid = 0;
for (Carriage carriage : train.carriages) { for (Carriage carriage : train.carriages) {
IFluidHandler fluids = carriage.storage.getFluids(); IFluidHandler fluids = carriage.storage.getFluids();
@ -100,9 +97,10 @@ public class FluidThresholdCondition extends CargoThresholdCondition {
Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))),
Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(),
Lang.translateDirect("schedule.condition.threshold.buckets"), Lang.translateDirect("schedule.condition.threshold.buckets"),
compareStack.getItem() instanceof FilterItem compareStack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything")
? Lang.translateDirect("schedule.condition.threshold.matching_content") : compareStack.getItem() instanceof FilterItem
: loadFluid().getDisplayName()) ? Lang.translateDirect("schedule.condition.threshold.matching_content")
: loadFluid().getDisplayName())
.withStyle(ChatFormatting.DARK_AQUA)); .withStyle(ChatFormatting.DARK_AQUA));
} }

View file

@ -41,9 +41,6 @@ public class ItemThresholdCondition extends CargoThresholdCondition {
int target = getThreshold(); int target = getThreshold();
boolean stacks = inStacks(); boolean stacks = inStacks();
if (stack.isEmpty())
return true;
int foundItems = 0; int foundItems = 0;
for (Carriage carriage : train.carriages) { for (Carriage carriage : train.carriages) {
IItemHandlerModifiable items = carriage.storage.getItems(); IItemHandlerModifiable items = carriage.storage.getItems();
@ -97,8 +94,10 @@ public class ItemThresholdCondition extends CargoThresholdCondition {
Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))), Lang.translateDirect("schedule.condition.threshold." + Lang.asId(getOperator().name()))),
Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(), Lang.translateDirect("schedule.condition.threshold.x_units_of_item", getThreshold(),
Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")), Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")),
stack.getItem() instanceof FilterItem ? Lang.translateDirect("schedule.condition.threshold.matching_content") stack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything")
: stack.getHoverName()) : stack.getItem() instanceof FilterItem
? Lang.translateDirect("schedule.condition.threshold.matching_content")
: stack.getHoverName())
.withStyle(ChatFormatting.DARK_AQUA)); .withStyle(ChatFormatting.DARK_AQUA));
} }

View file

@ -652,6 +652,7 @@
"create.schedule.condition.threshold.equal": "exactly", "create.schedule.condition.threshold.equal": "exactly",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "Matching Content", "create.schedule.condition.threshold.matching_content": "Matching Content",
"create.schedule.condition.threshold.anything": "Anything",
"create.schedule.condition.threshold.item_measure": "Item Measure", "create.schedule.condition.threshold.item_measure": "Item Measure",
"create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.items": "Items",
"create.schedule.condition.threshold.stacks": "Stacks", "create.schedule.condition.threshold.stacks": "Stacks",
@ -659,6 +660,7 @@
"create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Reference Item", "create.schedule.condition.threshold.place_item": "Reference Item",
"create.schedule.condition.threshold.place_item_2": "Filters can be used", "create.schedule.condition.threshold.place_item_2": "Filters can be used",
"create.schedule.condition.threshold.place_item_3": "Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "Item Cargo Condition", "create.schedule.condition.item_threshold": "Item Cargo Condition",
"create.schedule.condition.redstone_link": "Redstone Link", "create.schedule.condition.redstone_link": "Redstone Link",