Petrolpark's Library - это библиотека общих возможностей и утилит для модов и сборок Minecraft. Она создана в первую очередь для аддонов к Create и других проектов автора, но её API могут использовать любые мододелы. Большинство систем заточены на гибкость: они позволяют делать с игрой то, что обычно недоступно.
Библиотека тесно связана с Create, но не требует его обязательной установки - функции, зависящие от Create, просто отключатся, если мода нет.
Вот список основных API-фич в порядке их значимости:
Загрязнители - это флаги, управляемые через датапаки. Их можно добавлять к стакам предметов, жидкостей и даже к блочным сущностям. Они сохраняются при обычных процессах вроде крафта или переплавки, а также при большинстве операций Create и собственных механиках библиотеки (старение, переработка). Например, если скрафтить что-то из отравленного ингредиента - результат тоже получит метку "poison".
Предметам можно задать "срок годности" - по истечении времени они превратятся в другой предмет или изменят компоненты (например, добавят или уберут загрязнители). Работает даже в произвольных инвентарях из других модов. Механика основана на похожей из Factorio и полностью настраивается через датапаки.
Тип рецепта, который запускает старение предмета в бочке (или другом контейнере). Если предмет убрать - процесс останавливается.
Система для проверки принадлежности игроков к определённой группе и хранения данных для этой группы. Поддерживаются одиночные игроки, ванильные команды Scoreboard и FTB Teams (скоро). Предметы и блоки, привязанные к команде, позволяют игроку выбрать свою команду - тогда все её члены будут видеть одни и те же данные для этого объекта.
Призваны убрать рандомный гринд. Пожелания - это предметы, которые можно получить как награду за квесты или купить в магазине. Они позволяют игроку выбрать конкретный предмет (через Advanced Ingredient). Когда игрок открывает таблицу лута, игра старается подкрутить выпадение так, чтобы исполнить его пожелания. Работает даже для сложных запросов вроде предметов с определёнными чарами.
Добавляет два новых атрибута: petrolpark:player.extra_inventory_slots и petrolpark:player.extra_hotbar_slots. Дополнительные слоты отображаются не только в инвентаре, но и в ванильных меню и большинстве интерфейсов других модов. Поскольку это атрибуты, их можно менять броней, зельями или чарами через датапаки и команды. Цель - сделать систему рюкзаков без необходимости открывать отдельный экран.
Позволяет изменять существующие таблицы лута без полной перезаписи - гибче, чем глобальные модификаторы NeoForge. Можно добавлять, удалять и править отдельные пулы и записи пулов. Несколько модов или датапаков могут одновременно менять одну таблицу.
Универсальная система "разкрафта". Автоматически сканирует рецепты и пытается создать обратные рецепты переработки с параметром процента возврата ингредиентов. Если у предмета много разных рецептов - переработка обычно ничего не даст без явного указания. Для ингредиентов без однозначного обратного предмета результат опускается. Можно задать обратные соответствия через датапак: например, зарегистрировать "Scrap Planks" как ингредиент тега minecraft:planks - тогда любой рецепт с этим тегом будет перерабатываться в соответствующее количество Scrap Planks.
Система дружит со сжатием предметов (см. ниже): если рецепт требует один слиток Moddium, то при 25% возврата переработка выдаст 2-3 самородка Moddium без дополнительных настроек. Мододелы могут добавлять модификаторы вывода - например, уменьшать возврат в зависимости от прочности или переносить загрязнители.
Позволяют ограничивать доступ к рецептам через предметы-ключи - книги рецептов. Их можно выдавать как награду за квесты или покупку в магазине. Крафт будет невозможен, пока рядом с блоком-крафтером не стоит Chiseled Bookshelf (или другой контейнер) с нужной книгой.
Реализовано для ванильных верстаков, крафтеров и печей, а также для большинства машин Create. Если установлен JEI - в тултипе книги красиво отображается открываемый рецепт.
Автоматически находит обратимые рецепты сжатия (например, 9 слитков в блок) - даже если мод добавляет "пятерное сжатие булыжника". Регистрация не требуется; всё сканируется автоматически. К этим сжатиям можно легко обращаться из других систем.
Как ванильные/NeoForge Ingredients, но с типами-дженериками. У них есть подписи для удобного отображения в JEI - сразу видно, что именно требуется. Интегрируются с системой Пожеланий. Библиотека предоставляет несколько реализаций - например, проверку наличия у объекта определённого загрязнителя.
Управляемая датапаками система случайных запросов от NPC: игрок приносит нужный предмет и получает награду (книги рецептов, слухи жителей XP). Клиенты выбирают запросы случайно на основе уровня магазина, применяют модификаторы (например, ×1.5 за наличие загрязнителя) и случайно выбирают награду. Всё настраивается через датапаки.
Магазины имеют уровни и привязаны к командам - игроки одной команды могут прокачивать магазин вместе.
Позволяют выполнять рецепты из другого мода в машинах вашего мода без прямой зависимости - достаточно прочитать JSON-файл рецепта того мода.
Несколько новых реализаций ванильных провайдеров чисел, условий и функций для таблиц лута - например, получение свойств сущностей или команд.
Интерфейсы для рецептов с дополнительными ограничениями:
Внутриигровые косметические награды за раннее скачивание модов автора или победы в конкурсах. Если значок разблокирован - он появляется в любом мире игрока. Можно поместить в слот Curios при наличии этого мода.
Позволяют точнее управлять расположением предметов в креативном меню и добавлять разделители.
Создание предметов и блоков из любого дерева (ванильного или модифицированного) с автоматической подстройкой текстур.
Несколько новых событий для хуков:
Размещение и рендеринг произвольно изогнутых сплайнов в мире. Используется в Petrol's Parts для гидравлических передач и пневматических трубок.
Текстуры таких блоков тайлятся с шагом больше одного блока - больше возможностей для узоров.
Позволяет блокам Create запоминать, кто их поставил - используется для рецептов "первый раз - удача".
Эти функции включаются только определёнными зависимыми модами (не только Petrolpark).
Подключается к Redstone Links из Create и позволяет программировать последовательности сигналов - по сути MIDI-редактор для частот Redstone Link. Используется в Destroy и Petrol's Parts.
Идея позаимствована с разрешения у Create: Diesel Generators. Ставится сверху на Basin для рецептов "Lidded Basin" (ферментация, пиролиз). Используется в Destroy. Такие рецепты поддерживают привязку к биомам.
Проталкивание блоков через механизм Create с красивой анимацией резки. В Destroy используется для нарезки картофельного пюре на фри или кварца на колонны. Рецепты управляются датапаками.

Библиотека общих функций и API для модов Petrolpark и не только. Предоставляет инструменты для работы с загрязнителями предметов, старением, командами, пожеланиями и многим другим. Интегрируется с Create.