Create: Re-Packager Fix
Исправляет эксплойт дублирования в Re-Packager из Create.
- Загрузчики
- NeoForgeForge
- Скачиваний на Modrinth
- 637
- Подписчиков на Modrinth
- 2
- версии
- 4
- Обновлён
- 13 сентября 202613 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Create: Re-Packager Fix
Серверный фикс-мод для Create, исправляющий эксплойт дублирования в Re-Packager. Когда фрагментированный пакет содержит недостаточно предметов для выполнения крафтов своего заказа, Re-Packager всё равно создаёт запись пакета с количеством 0 — которую логика вывода упаковщика затем выбрасывает как настоящий физический пакет, содержащий полную копию материалов рецепта, что позволяет злоумышленникам бесконечно дублировать материалы рецептов. Этот мод патчит PackageRepackageHelper.repackBasedOnRecipes через Mixin, устраняя дублирование в корне без влияния на обычное поведение упаковки.
Уязвимость
Затронутые версии: Create 6.0.8 (1.20.1), 6.0.10 (1.21.1) и порты Create Fly (1.21.11 / 26.2).
- Схемы крафта, настроенные на Factory Gauge, не проверяются на наличие предметов в инвентаре — материалы рецепта не обязаны совпадать с запрошенными предметами (Create проверяет это соответствие только в пути Redstone Requester; в пути Factory Gauge эта проверка полностью отсутствует).
- Когда предметов недостаточно,
repackBasedOnRecipesвсё равно создаёт запись пакета сpackagesToCreate == 0. - (Корень проблемы) Логика вывода упаковщика
PackagerBlockEntity.tick()копирует пакет до проверки его количества (heldBox = entry.stack.copy()идёт передcount--), поэтому пакет с количеством 0 выбрасывается как настоящий — пустой инвентарь создаёт из воздуха пакет с полным набором материалов рецепта, что бесконечно эксплуатируется через повторяющиеся запросы пополнения Factory Gauge. Связанные issue в апстриме (все ещё открыты): #8082, #8046, #8155. Коммит апстрима 3e662789 исправил лишь вариант с превышением количества материалов рецепта (copyWithCount(1)); основной дефект остаётся неисправленным.
Исправление
Mixin-патч на PackageRepackageHelper.repackBasedOnRecipes с двухфазной проверкой:
- Сначала проверка — убедиться, что все материалы рецепта доступны (точное совпадение по NBT); если чего-то не хватает, прервать весь цикл, ничего не расходуя.
- Потом списание — только после подтверждения наличия всего необходимого равномерно вычесть предметы из инвентаря; без частичного расхода, так что игроки никогда не теряют вложенные материалы.
- Защита от нулевого количества — когда
packagesToCreate == 0(инвентарь не поддерживает даже один крафт), пакет не создаётся. Всё обычное поведение (достаточный запас, заказы с несколькими рецептами и т. д.) остаётся полностью идентичным ванильному.
Возможности
- Только серверная сторона — клиенты могут подключаться без установки мода
- Не влияет на обычную упаковку / переупаковку
- Материалы возвращаются (через обычную переупаковку), а не пропадают при частичной нехватке
- Совместим с другими фикс-модами
Проверка
Скормите Re-Packager аномальный пакет (пустой инвентарь + заказ на крафт, требующий 64 крафта):
- Без этого мода: выводится 1 пакет с полным набором материалов рецепта (дублирование)
- С этим модом: выводится 0 пакетов (исправлено) Команды для тестовых пакетов описаны в
TEST_PACKAGES.mdв репозитории.
Частые вопросы
Как установить Create: Re-Packager Fix?
Установите NeoForge под свою версию Minecraft, скачайте Create: Re-Packager Fix под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Create: Re-Packager Fix?
У Create: Re-Packager Fix есть сборки для Minecraft 1.20.1, 1.21.1.
Нужен ли Create: Re-Packager Fix на сервере?
Ставится только на сервер; игрокам ставить не нужно