
Petrolpark's Library
Библиотека общих функций и API для модов Petrolpark и не только. Предоставляет инструменты для работы с загрязнителями предметов, старением, командами, пожеланиями и многим другим. Интегрируется с Create.
Petrolpark's Library - это библиотека общих возможностей и утилит для модов и сборок Minecraft. Она создана в первую очередь для аддонов к Create и других проектов автора, но её API могут использовать любые мододелы. Большинство систем заточены на гибкость: они позволяют делать с игрой то, что обычно недоступно.
Библиотека тесно связана с Create, но не требует его обязательной установки - функции, зависящие от Create, просто отключатся, если мода нет.
Вот список основных API-фич в порядке их значимости:
Загрязнители (Contaminants)
Загрязнители - это флаги, управляемые через датапаки. Их можно добавлять к стакам предметов, жидкостей и даже к блочным сущностям. Они сохраняются при обычных процессах вроде крафта или переплавки, а также при большинстве операций Create и собственных механиках библиотеки (старение, переработка). Например, если скрафтить что-то из отравленного ингредиента - результат тоже получит метку "poison".
Старение предметов (Decaying Items)
Предметам можно задать "срок годности" - по истечении времени они превратятся в другой предмет или изменят компоненты (например, добавят или уберут загрязнители). Работает даже в произвольных инвентарях из других модов. Механика основана на похожей из Factorio и полностью настраивается через датапаки.
Рецепты старения (Ageing Recipes)
Тип рецепта, который запускает старение предмета в бочке (или другом контейнере). Если предмет убрать - процесс останавливается.
Команды (Teams)
Система для проверки принадлежности игроков к определённой группе и хранения данных для этой группы. Поддерживаются одиночные игроки, ванильные команды Scoreboard и FTB Teams (скоро). Предметы и блоки, привязанные к команде, позволяют игроку выбрать свою команду - тогда все её члены будут видеть одни и те же данные для этого объекта.
Пожелания (Wishes) - в разработке
Призваны убрать рандомный гринд. Пожелания - это предметы, которые можно получить как награду за квесты или купить в магазине. Они позволяют игроку выбрать конкретный предмет (через Advanced Ingredient). Когда игрок открывает таблицу лута, игра старается подкрутить выпадение так, чтобы исполнить его пожелания. Работает даже для сложных запросов вроде предметов с определёнными чарами.
Расширенный инвентарь (Extended Inventory) - экспериментально
Добавляет два новых атрибута: petrolpark:player.extra_inventory_slots и petrolpark:player.extra_hotbar_slots. Дополнительные слоты отображаются не только в инвентаре, но и в ванильных меню и большинстве интерфейсов других модов. Поскольку это атрибуты, их можно менять броней, зельями или чарами через датапаки и команды. Цель - сделать систему рюкзаков без необходимости открывать отдельный экран.
Модификация таблиц лута (Loot Table Modifications)
Позволяет изменять существующие таблицы лута без полной перезаписи - гибче, чем глобальные модификаторы NeoForge. Можно добавлять, удалять и править отдельные пулы и записи пулов. Несколько модов или датапаков могут одновременно менять одну таблицу.
Переработка (Recycling) - в разработке
Универсальная система "разкрафта". Автоматически сканирует рецепты и пытается создать обратные рецепты переработки с параметром процента возврата ингредиентов. Если у предмета много разных рецептов - переработка обычно ничего не даст без явного указания. Для ингредиентов без однозначного обратного предмета результат опускается. Можно задать обратные соответствия через датапак: например, зарегистрировать "Scrap Planks" как ингредиент тега minecraft:planks - тогда любой рецепт с этим тегом будет перерабатываться в соответствующее количество Scrap Planks.
Система дружит со сжатием предметов (см. ниже): если рецепт требует один слиток Moddium, то при 25% возврата переработка выдаст 2-3 самородка Moddium без дополнительных настроек. Мододелы могут добавлять модификаторы вывода - например, уменьшать возврат в зависимости от прочности или переносить загрязнители.
Книги рецептов (Recipe Books)
Позволяют ограничивать доступ к рецептам через предметы-ключи - книги рецептов. Их можно выдавать как награду за квесты или покупку в магазине. Крафт будет невозможен, пока рядом с блоком-крафтером не стоит Chiseled Bookshelf (или другой контейнер) с нужной книгой.
Реализовано для ванильных верстаков, крафтеров и печей, а также для большинства машин Create. Если установлен JEI - в тултипе книги красиво отображается открываемый рецепт.
Сжатие предметов (Item Compression) - в разработке
Автоматически находит обратимые рецепты сжатия (например, 9 слитков в блок) - даже если мод добавляет "пятерное сжатие булыжника". Регистрация не требуется; всё сканируется автоматически. К этим сжатиям можно легко обращаться из других систем.
Продвинутые ингредиенты (Advanced Ingredients)
Как ванильные/NeoForge Ingredients, но с типами-дженериками. У них есть подписи для удобного отображения в JEI - сразу видно, что именно требуется. Интегрируются с системой Пожеланий. Библиотека предоставляет несколько реализаций - например, проверку наличия у объекта определённого загрязнителя.
Магазины (Shops) - в разработке
Управляемая датапаками система случайных запросов от NPC: игрок приносит нужный предмет и получает награду (книги рецептов, слухи жителей XP). Клиенты выбирают запросы случайно на основе уровня магазина, применяют модификаторы (например, ×1.5 за наличие загрязнителя) и случайно выбирают награду. Всё настраивается через датапаки.
Магазины имеют уровни и привязаны к командам - игроки одной команды могут прокачивать магазин вместе.
Десериализаторы рецептов совместимости (Compat Recipe Deserializers)
Позволяют выполнять рецепты из другого мода в машинах вашего мода без прямой зависимости - достаточно прочитать JSON-файл рецепта того мода.
Провайдеры чисел, условия и функции для лута (Loot Number Providers, Conditions and Functions)
Несколько новых реализаций ванильных провайдеров чисел, условий и функций для таблиц лута - например, получение свойств сущностей или команд.
Продвинутые рецепты (Advanced Recipes)
Интерфейсы для рецептов с дополнительными ограничениями:
- Рецепты по книгам - описано выше.
- Рецепты по биомам - можно проводить только в определённых биомах; информация отображается в JEI.
- Рецепты "первый раз - удача" - гарантируют лучший результат при первом выполнении рецепта (особенно для случайных результатов Create), уменьшая гринд.
Значки (Badges)
Внутриигровые косметические награды за раннее скачивание модов автора или победы в конкурсах. Если значок разблокирован - он появляется в любом мире игрока. Можно поместить в слот Curios при наличии этого мода.
Настраиваемые креативные вкладки (Customizable Creative Mode Tabs)
Позволяют точнее управлять расположением предметов в креативном меню и добавлять разделители.
Совместимость по дереву (Wood Compat)
Создание предметов и блоков из любого дерева (ванильного или модифицированного) с автоматической подстройкой текстур.
События (Events)
Несколько новых событий для хуков:
- Смешанные цвета блоков - изменение цвета до смешивания с соседними блоками для плавных переходов.
- Обработка осадков - когда на блок попадает дождь или снег.
- Особые цены жителей - модификация бонуса/штрафа к торговле.
Мелкие клиентские фичи (Small Client Features)
- Модели экструдированных блоков - создание модели по маске с выдавливанием.
- Источник спрайтов Mean Shift Cluster - усреднение цветов текстуры для стилизации.
- Источник спрайтов Small Banner - создание одно-блочных версий баннеров из двухблочных.
- Прозрачные цвета предметов - возможность задавать прозрачность для окрашиваемых предметов вроде кожаной брони.
API-фичи Create (доступны при наличии Create)
Трубчатые блоки со сплайнами (Splined Tubular Blocks)
Размещение и рендеринг произвольно изогнутых сплайнов в мире. Используется в Petrol's Parts для гидравлических передач и пневматических трубок.
Дополнительные инструкции Ponder
- Встряска камеры
- Создание лески
- Подсветка тега Ponder
- Взмах руки сущности
- Обводка любого бокса
Тайловые блоки вне сетки (Off-Grid Tiling Blocks)
Текстуры таких блоков тайлятся с шагом больше одного блока - больше возможностей для узоров.
Поведение "запомнить разместившего"
Позволяет блокам Create запоминать, кто их поставил - используется для рецептов "первый раз - удача".
Общие фичи (добавляют контент)
Эти функции включаются только определёнными зависимыми модами (не только Petrolpark).
Программатор редстоуна (Redstone Programmer)
Подключается к Redstone Links из Create и позволяет программировать последовательности сигналов - по сути MIDI-редактор для частот Redstone Link. Используется в Destroy и Petrol's Parts.
Крышка бассейна (Basin Lid)
Идея позаимствована с разрешения у Create: Diesel Generators. Ставится сверху на Basin для рецептов "Lidded Basin" (ферментация, пиролиз). Используется в Destroy. Такие рецепты поддерживают привязку к биомам.
Фильера экструзии (Extrusion Die)
Проталкивание блоков через механизм Create с красивой анимацией резки. В Destroy используется для нарезки картофельного пюре на фри или кварца на колонны. Рецепты управляются датапаками.
