Create: Additional Logistics
Добавляет в Create несколько новых блоков для логистики и немного меняет поведение некоторых механик.
- Загрузчики
- NeoForgeForge
- Скачиваний на Modrinth
- 344 тыс.
- Подписчиков на Modrinth
- 82
- версий
- 16
- Обновлён
- 14 января 202614 янв.
- Опубликован
- в 2025
Коротко о моде
Нужен и в игре, и на сервере
Дополнение для Create 6 для Minecraft 1.20.1 и 1.21.1.
Этот мод призван улучшить или расширить несколько областей, связанных с логистикой в моде Create.
Дополнения
Лимиты обещаний (улучшение фабричного датчика)
Все мы через это проходили. Вы настраиваете новый фабричный датчик и запрашиваете 100 стаков чего угодно, а потом обнаруживаете, что ваше производство не справляется, и Create пытается отправить 1 000 посылок с ингредиентами, и теперь всё ужасно.
Лимиты обещаний здесь, чтобы помочь. При настройке фабричного датчика вы теперь можете задать лимит на то, сколько обещаний он может держать открытыми одновременно. Это позволяет, например, ограничить его ожиданием не более одного стака чего-либо за раз.
Логистическая сеть вашей фабрики скажет вам спасибо.
Дополнительный запас (улучшение датчика пополнения)
Пополнятели — штука классная, но мне в них не нравится то, что они пополняют до конкретного значения, и стоит пропасть хотя бы одному булыжнику, как они запрашивают ровно столько, сколько нужно, чтобы снова достичь этого значения. Это может быть немного глупо и расточительно. Поэтому — дополнительный запас! Скажем, например, у вас есть пополнятель, настроенный держать один стак булыжника под рукой. С этим вы можете сказать пополнятелю запрашивать 8 дополнительных стаков предметов, когда доступное количество падает ниже запрошенного уровня (1 стак). Затем, скажем, количество булыжника на складе падает до 32. Половина стака. Вместо запроса 32 булыжника, чтобы вернуться к одному стаку, он запросит 544 булыжника. Это недостающие 32 и ещё 8 стаков. Что-то вроде порогового переключателя, но для пополнения. И с несколько более громоздким интерфейсом из-за того, как работает пополнятель.
Регулярные выражения (улучшение адресов посылок)
Глобы — это хорошо, но иногда им просто чего-то не хватает, верно? Что ж, вперёд, используйте регулярные выражения, если осмелитесь. Нет, серьёзно. Теперь можно. Просто начните шаблон адреса с regex: (без учёта регистра), и остальная его часть будет обработана как регулярное выражение.
Кассовый аппарат (новый блок, похож на биржевое табло)
Новый блок, который служит альтернативой биржевому табло. Кассовые аппараты предназначены специально для использования в магазинах. У них есть интерфейсы для извлечения предметов вместо клика правой кнопкой, как у биржевого табло. Кроме того, они отслеживают все продажи, совершённые через них, в журнале продаж. Плюс они выглядят аккуратно!
Как небольшой бонус, вы можете вынуть журнал продаж из кассового аппарата и кликнуть им по кладовщику, чтобы быстро выбрать все проданные вами предметы. Удобно для пополнения запасов магазина, если вы делаете это вручную. (Это работает так же, как список предметов на планшете для схематической пушки.)
Ускоритель упаковщика (новый блок, упаковщики летают)
Вспомогательный блок в дополнение к упаковщикам: этот блок использует единицы стресса, чтобы ускорить упаковщик перед собой. Я использую Sophisticated Storage для массового хранения предметов, и по мере роста системы один упаковщик стал узким местом для отправки предметов. Это моё решение, позволяющее отправлять посылки гораздо быстрее, но за определённую цену.
Ускорителям упаковщика требуется не менее 30 RPM для работы.
Редактор посылок (новый блок, переименование посылок)
Новый блок для работы с посылками. Редактор посылок похож на переупаковщик, но вместо объединения посылок из одного заказа он позволяет редактировать адреса посылок с помощью правил. Правила вводятся либо размещением таблички рядом с редактором посылок, либо прикреплением планшета к его стороне. Планшеты рекомендуются.
При написании правил для редактора посылок первая строка — это шаблон для сопоставления, а вторая строка — текст для замены совпадения. Например, скажем, у вас есть посылки, направляемые на склад с префиксом Ware1-, и полное имя посылки может быть Ware1-Floor2-Storage. Что, если вы хотите отрезать Ware1-, когда посылка попадёт на ваш склад? Это легко: просто пропустите посылки через редактор посылок с этим шаблоном и пустой строкой замены:
Ware1-
Редактор пакетов будет искать `Ware1-` в начале каждого имени пакета
и, если найдёт, заменять его на пустоту. Можно также записать это так:
Ware1-{*} $1
Так что же здесь происходит? Редактор пакетов воспринимает всё, что находится между `{` и `}`, как группу захвата. Иными словами, этот текст сохраняется, и на него можно ссылаться в тексте замены, добавив `$` и номер нужной группы. Разумеется, можно использовать и регулярные выражения, если нужно сделать что-то посложнее, чем позволяют шаблоны.
И наконец, есть два особых поведения, которыми можно управлять при работе с буфером обмена:
1. Если поставить галочку рядом со строкой шаблона, шаблон будет интерпретироваться без учёта регистра.
2. Если поставить галочку рядом со строкой замены, Редактор пакетов остановится после этого правила (при условии, что правило сработало). Это можно использовать, например, чтобы создать правило-ловушку, которое отправляет пакеты в некий «Бюро находок», если они не подошли ни под одно другое правило.
### Train Network Monitor Peripheral (новый блок, только для CC: Tweaked)
Знаете, что круто? Поезда. Знаете, что круче? Большая крутая стена с данными о ваших поездах. Прибытия, отправления, статус поездов. А ещё поезда довольно важны для логистики. Train Network Monitor — это один блок, который позволяет смотреть данные в реальном времени по любой станции и любому поезду в заданной железнодорожной сети. Он выдаёт всё то же, что и обычный периферийный блок Train Station, плюс дополнительные события прибытия и отправления поездов. Также можно увидеть, сколько пакетов находится в системе, и статус каждого почтового ящика, привязанного к различным железнодорожным станциям.
Если вам особенно хочется приключений, можно включить дополнительные функции для просмотра подробностей об инвентарях поездов и для доступа на чтение-запись к удалённым поездам и станциям. Хотите обновлять расписания на лету с помощью компьютера? Да ради бога. Однако по умолчанию это отключено, потому что мне это кажется слишком несбалансированным.
### Short and Tall Seats (новый блок, в общем-то... сиденья?)
Э-э, сиденья — это не логистика? Что вы имеете в виду? На них можно, эм... сидеть, и—ладно, хорошо. Они немного выходят за рамки «Additional Logistics», но у нас есть веская причина добавить сиденья! Эстетика, конечно.
В зависимости от того, какого моба вы выберете для своего Stock Keeper, стандартное сиденье не всегда оказывается на подходящей высоте для той постройки, которую вы делаете. Поэтому мы добавили Short Seats и Tall Seats. Short Seats высотой 2/16 блока, а Tall Seats — 14/16 блока. (Обычные сиденья, конечно же, высотой 8/16, то есть 1/2 блока.)
### Lazy Shafts (новый блок, в общем-то валы)
Я знаю, о чём вы думаете. Это тоже не логистика. И в Create валы есть уже много лет. Соберись, Khloe. Но это важно, обещаю. Lazy Shafts — моя попытка создать валы, дружелюбные к лагам. По сути, у обычных валов есть block entity для каждого отдельного блока, так? Эти стараются этого избегать, когда возможно. Если у вас больше двух Lazy Shafts подряд, вы уже выигрываете по block entity. Если вы используете много валов, и я имею в виду действительно много, то замена их на эти может помочь производительности вашего сервера.
### Flexible Lazy Shafts (новый блок, в общем-то редукторы + Lazy Shafts + ???)
Есть ещё Flexible Lazy Shafts. Они похожи на Lazy Shafts, но могут соединяться в любом направлении. И не только: у них настраиваемые стороны. Просто используйте гаечный ключ на стороне, чтобы открыть вал. Используйте гаечный ключ ещё раз, чтобы развернуть направление.
Только будьте осторожны при соединении. Из-за того, как они связаны в коде, иногда Create ломает неудобный Flexible Lazy Shaft, если возникает проблема с несовместимыми поворотами.
Кстати, я упоминал, что Lazy Shafts, Flexible Lazy Shafts и Lazy Cogs можно поместить в корпус? Они поддерживают Andesite Casing, Brass Casing, Copper Casing, Industrial Iron Block и Weathered Iron Block. (Да, я хочу добавить Train Casing, но на самом деле это немного странно делать по некоторым техническим причинам, по крайней мере, если я хочу, чтобы соединённые текстуры работали правильно. Это появится Eventually™.)
## Улучшения
### Оптимизация сопоставления адресов
Сопоставление адресов посылок в Create немного медленное и неоптимизированное. Это может быть нормально, но также может вызывать проблемы при использовании Create с другими модами. Мы здесь, чтобы решить проблему парой простых изменений:
1. Кэшировать скомпилированные сопоставители. Каждый адрес посылки компилируется в регулярное выражение при выполнении сопоставления посылок. Это включает сначала разбор glob в regex, а затем компиляцию regex в Java Pattern. Всё, что нам нужно сделать, — это кэшировать это.
2. Технически есть два кэша из-за того, как работают внутренности системы адресов посылок, так что я считаю это двумя вещами. Но на самом деле просто кэширования было достаточно, чтобы всё работало лучше в сценарии конца света, который недавно пережил мой SMP-сервер благодаря Sophisticated Storage, обрабатывающему посылки с фильтрами посылок.
### Регулярные выражения (безопасность)
Я вообще-то знаю, что уже был другой мод, позволяющий использовать regex с адресами посылок, но когда мы попробовали это на нашем SMP, сервер был крашнут игроком почти сразу. Регулярные выражения на самом деле могут быть довольно опасными, так что я включил несколько базовых вещей, которые, надеюсь, хотя бы не дадут кому-то *случайно* убить сервер с их помощью. А именно:
1. **Ограничение звёздной высоты.** Вы знали, что регулярное выражение `(a+)+` опасно? Это из-за так называемого катастрофического бэктрекинга, и библиотека регулярных выражений Java уязвима к нему. К тому же их не так уж невозможно написать случайно. Мы проверяем звёздную высоту всех регулярных выражений и не даём им выполняться, если они проблемные.
2. **Ограничение повторений.** Это не так плохо, но если вы попытаетесь сопоставить, скажем, 1000 чего-то подряд, производительность может начать проседать. Для адресов посылок это вообще никогда не должно возникать, так что мы поставили защиту.
3. **Никаких обратных ссылок.** Обратная ссылка в регулярных выражениях позволяет сказать «сопоставь это с тем, что уже было сопоставлено», что может быть полезно, но также, вероятно, не имеет отношения к адресам посылок и может быть медленным. По умолчанию они запрещены.
Мы также проверяем каждое регулярное выражение в момент его разбора через метод `Glob.toRegexPattern` в Create, хотя обычно он не компилирует выражение, а просто конвертирует его из glob в regex. Это важно, потому что подразумевается, что все регулярные выражения, возвращаемые этим методом, должны компилироваться без ошибок.
### Более длинные имена Frogport
Регулярные выражения обычно немного... больше, чем glob, что может быть проблемой для лягушек. Поэтому мы увеличили максимальную длину имени frogport и postbox до 100. ...хорошо, что можно копировать и вставлять.
### Пусть ваши Stock Keepers остаются на местах
Позвольте мне обрисовать сцену. Вы в медовом магазине. Stock Keeper — это пчела. Вы получаете список покупок и готовы к оплате, поэтому кликаете по stock keeper и — о нет! Вы кликнули по сиденью вместо него! Вы только что сели, а пчела улетела в небеса с обретённой свободой. У вас нет поводка. Как вы должны вернуть пчелу на сиденье? Летающие мобы — худшие.
Это простое изменение. Если вы кликнете по сиденью, занятому stock keeper, ничего не произойдёт. Если вам нужно согнать stock keeper, вы можете сломать сиденье или stock ticker. Но по крайней мере вы не сделаете это случайно.Частые вопросы
Как установить Create: Additional Logistics?
Установите NeoForge под свою версию Minecraft, скачайте Create: Additional Logistics под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Create: Additional Logistics?
У Create: Additional Logistics есть сборки для Minecraft 1.20.1, 1.21.1.
Нужен ли Create: Additional Logistics на сервере?
Нужен и в игре, и на сервере