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

View file

@ -1484,6 +1484,7 @@
"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.matching_content": "Matching Content",
"create.schedule.condition.threshold.anything": "Anything",
"create.schedule.condition.threshold.item_measure": "Item Measure",
"create.schedule.condition.threshold.items": "Items",
"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.place_item": "Reference Item",
"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.item_threshold": "Item Cargo Condition",
"create.schedule.condition.redstone_link": "Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 840",
"_": "Missing Localizations: 842",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "genau",
"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.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Maßeinheit",
"create.schedule.condition.threshold.items": "Items",
"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.place_item": "Referenz-Item",
"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.item_threshold": "Item-Ladestand",
"create.schedule.condition.redstone_link": "Redstone-Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 986",
"_": "Missing Localizations: 988",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 6",
"_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "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.place_item": "Objeto de referencia",
"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.item_threshold": "Condición de cargamento de objetos",
"create.schedule.condition.redstone_link": "Enlace de redstone",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2137",
"_": "Missing Localizations: 2139",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 0",
"_": "Missing Localizations: 2",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.matching_content": "Contenuto corrispondente",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "Misura",
"create.schedule.condition.threshold.items": "Oggetti",
"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.place_item": "Oggetto di riferimento",
"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.item_threshold": "Carico di oggetti",
"create.schedule.condition.redstone_link": "Connessione redstone",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2",
"_": "Missing Localizations: 4",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "ぴったり",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s",
"create.schedule.condition.threshold.matching_content": "一致する貨物",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "アイテム単位",
"create.schedule.condition.threshold.items": "個",
"create.schedule.condition.threshold.stacks": "スタック",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s",
"create.schedule.condition.threshold.place_item": "参照アイテム",
"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.item_threshold": "アイテム貨物の状態",
"create.schedule.condition.redstone_link": "レッドストーンリンク",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 6",
"_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "다음과 동일하면",
"create.schedule.condition.threshold.x_units_of_item": "%3$s %1$s %2$s",
"create.schedule.condition.threshold.matching_content": "내용물 일치",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "아이템 단위",
"create.schedule.condition.threshold.items": "개",
"create.schedule.condition.threshold.stacks": "스택",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "저장소: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "기준 아이템",
"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.item_threshold": "아이템 저장소 조건",
"create.schedule.condition.redstone_link": "레드스톤 링크",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2485",
"_": "Missing Localizations: 2487",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 10",
"_": "Missing Localizations: 12",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "Przemioty",
"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.place_item": "Przedmiot odniesienia",
"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.item_threshold": "Warunek ładunku przedmiotów",
"create.schedule.condition.redstone_link": "Emiter sygnału",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1329",
"_": "Missing Localizations: 1331",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2194",
"_": "Missing Localizations: 2196",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 653",
"_": "Missing Localizations: 655",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

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

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 984",
"_": "Missing Localizations: 986",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"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.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.items": "UNLOCALIZED: Items",
"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.place_item": "UNLOCALIZED: Reference Item",
"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.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2",
"_": "Missing Localizations: 4",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "恰好",
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s%3$s",
"create.schedule.condition.threshold.matching_content": "匹配内容",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "物品度量",
"create.schedule.condition.threshold.items": "个",
"create.schedule.condition.threshold.stacks": "组",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "货物:%1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "参考物品",
"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.item_threshold": "物品货物条件",
"create.schedule.condition.redstone_link": "无线红石",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 6",
"_": "Missing Localizations: 8",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1485,6 +1485,7 @@
"create.schedule.condition.threshold.equal": "剛好",
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s",
"create.schedule.condition.threshold.matching_content": "比對內容",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "物品單位",
"create.schedule.condition.threshold.items": "個",
"create.schedule.condition.threshold.stacks": "組",
@ -1492,6 +1493,7 @@
"create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "參考物品",
"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.item_threshold": "物品貨物條件",
"create.schedule.condition.redstone_link": "無線紅石連接",

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.block.belts.tunnel;
import java.util.List;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
@ -44,7 +43,7 @@ public class BrassTunnelBlock extends BeltTunnelBlock {
for (ItemStack itemStack : stacksOfGroup)
player.getInventory().placeItemBackInInventory(itemStack.copy());
world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f,
1f + Create.RANDOM.nextFloat());
1f + world.random.nextFloat());
return InteractionResult.SUCCESS;
});
}
@ -61,16 +60,16 @@ public class BrassTunnelBlock extends BeltTunnelBlock {
}
@Override
public void onRemove(BlockState p_196243_1_, Level p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_,
boolean p_196243_5_) {
if (p_196243_1_.hasBlockEntity()
&& (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasBlockEntity())) {
TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE);
withTileEntityDo(p_196243_2_, p_196243_3_, te -> {
if (te instanceof BrassTunnelTileEntity)
Block.popResource(p_196243_2_, p_196243_3_, ((BrassTunnelTileEntity) te).stackToDistribute);
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) {
TileEntityBehaviour.destroy(level, pos, FilteringBehaviour.TYPE);
withTileEntityDo(level, pos, te -> {
if (!(te instanceof BrassTunnelTileEntity btte))
return;
Block.popResource(level, pos, btte.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())
return stack;
if (!simulate)
te.setStackToDistribute(stack);
te.setStackToDistribute(stack, null);
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.relays.belt.BeltHelper;
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.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
@ -61,6 +64,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
boolean connectedRight;
ItemStack stackToDistribute;
Direction stackEnteredFrom;
float distributionProgress;
int distributionDistanceLeft;
int distributionDistanceRight;
@ -81,6 +86,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
distributionTargets = Couple.create(ArrayList::new);
syncSet = new HashSet<>();
stackToDistribute = ItemStack.EMPTY;
stackEnteredFrom = null;
beltCapability = LazyOptional.empty();
tunnelCapability = LazyOptional.of(() -> new BrassTunnelItemHandler(this));
previousOutputIndex = 0;
@ -183,6 +189,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
for (Pair<BlockPos, Direction> pair : list) {
BlockPos tunnelPos = pair.getKey();
Direction output = pair.getValue();
if (tunnelPos.equals(worldPosition) && output == stackEnteredFrom)
continue;
BlockEntity te = level.getBlockEntity(tunnelPos);
if (!(te instanceof BrassTunnelTileEntity))
continue;
@ -306,13 +314,16 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
toDistribute.grow(failedTransferrals);
stackToDistribute = ItemHandlerHelper.copyStackWithSize(stackToDistribute, toDistribute.getCount());
if (stackToDistribute.isEmpty())
stackEnteredFrom = null;
previousOutputIndex++;
previousOutputIndex %= amountTargets;
notifyUpdate();
}
public void setStackToDistribute(ItemStack stack) {
public void setStackToDistribute(ItemStack stack, @Nullable Direction enteredFrom) {
stackToDistribute = stack;
stackEnteredFrom = enteredFrom;
distributionProgress = -1;
sendData();
setChanged();
@ -329,7 +340,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
if (!own.isEmpty()) {
list.add(own);
if (!simulate)
setStackToDistribute(ItemStack.EMPTY);
setStackToDistribute(ItemStack.EMPTY, null);
}
for (boolean left : Iterate.trueAndFalse) {
@ -345,7 +356,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
continue;
list.add(other);
if (!simulate)
adjacent.setStackToDistribute(ItemStack.EMPTY);
adjacent.setStackToDistribute(ItemStack.EMPTY, null);
}
}
@ -514,22 +525,30 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
continue;
if (direction == movementFacing.getOpposite())
continue;
if (tunnelTE.sides.contains(direction)) {
BlockPos offset = tunnelTE.worldPosition.below()
.relative(direction);
DirectBeltInputBehaviour inputBehaviour =
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;
}
if (inputBehaviour.canInsertFromSide(direction))
validOutputs.add(Pair.of(tunnelTE, direction));
if (!tunnelTE.sides.contains(direction))
continue;
BlockPos offset = tunnelTE.worldPosition.below()
.relative(direction);
BlockState potentialFunnel = level.getBlockState(offset.above());
if (potentialFunnel.getBlock() instanceof BeltFunnelBlock
&& potentialFunnel.getValue(BeltFunnelBlock.SHAPE) == Shape.PULLING
&& FunnelBlock.getFunnelFacing(potentialFunnel) == direction)
continue;
DirectBeltInputBehaviour inputBehaviour =
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;
}
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("ConnectedLeft", connectedLeft);
compound.putBoolean("ConnectedRight", connectedRight);
compound.put("StackToDistribute", stackToDistribute.serializeNBT());
if (stackEnteredFrom != null)
NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom);
compound.putFloat("DistributionProgress", distributionProgress);
compound.putInt("PreviousIndex", previousOutputIndex);
compound.putInt("DistanceLeft", distributionDistanceLeft);
@ -587,7 +610,12 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave
syncedOutputActive = compound.getBoolean("SyncedOutput");
connectedLeft = compound.getBoolean("ConnectedLeft");
connectedRight = compound.getBoolean("ConnectedRight");
stackToDistribute = ItemStack.of(compound.getCompound("StackToDistribute"));
stackEnteredFrom =
compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class)
: null;
distributionProgress = compound.getFloat("DistributionProgress");
previousOutputIndex = compound.getInt("PreviousIndex");
distributionDistanceLeft = compound.getInt("DistanceLeft");

View file

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

View file

@ -44,9 +44,6 @@ public class FluidThresholdCondition extends CargoThresholdCondition {
Ops operator = getOperator();
int target = getThreshold();
if (compareStack.isEmpty())
return true;
int foundFluid = 0;
for (Carriage carriage : train.carriages) {
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.x_units_of_item", getThreshold(),
Lang.translateDirect("schedule.condition.threshold.buckets"),
compareStack.getItem() instanceof FilterItem
? Lang.translateDirect("schedule.condition.threshold.matching_content")
: loadFluid().getDisplayName())
compareStack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything")
: compareStack.getItem() instanceof FilterItem
? Lang.translateDirect("schedule.condition.threshold.matching_content")
: loadFluid().getDisplayName())
.withStyle(ChatFormatting.DARK_AQUA));
}

View file

@ -41,9 +41,6 @@ public class ItemThresholdCondition extends CargoThresholdCondition {
int target = getThreshold();
boolean stacks = inStacks();
if (stack.isEmpty())
return true;
int foundItems = 0;
for (Carriage carriage : train.carriages) {
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.x_units_of_item", getThreshold(),
Lang.translateDirect("schedule.condition.threshold." + (inStacks() ? "stacks" : "items")),
stack.getItem() instanceof FilterItem ? Lang.translateDirect("schedule.condition.threshold.matching_content")
: stack.getHoverName())
stack.isEmpty() ? Lang.translateDirect("schedule.condition.threshold.anything")
: stack.getItem() instanceof FilterItem
? Lang.translateDirect("schedule.condition.threshold.matching_content")
: stack.getHoverName())
.withStyle(ChatFormatting.DARK_AQUA));
}

View file

@ -652,6 +652,7 @@
"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.matching_content": "Matching Content",
"create.schedule.condition.threshold.anything": "Anything",
"create.schedule.condition.threshold.item_measure": "Item Measure",
"create.schedule.condition.threshold.items": "Items",
"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.place_item": "Reference Item",
"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.item_threshold": "Item Cargo Condition",
"create.schedule.condition.redstone_link": "Redstone Link",