Sable Assembly Fix
Исправляет дублирование предметов при сборке/разборке Sable, предотвращая выпадение содержимого из блоков-сущностей, которые нельзя очистить. Работает с любыми модами — Keg, шкафы, корзины, Item Drains, Sophisticated Storage и т. д. Настройка не требуется.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 1,7 тыс.
- Подписчиков на Modrinth
- 4
- версия
- 1
- Обновлён
- 19 июля 202619 июл.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Обзор
Sable Assembly Fix исправляет баг дублирования предметов, возникающий при сборке/разборке Sable для блок-энтити, которые не реализуют интерфейс Clearable.
Проблема
Метод Sable SubLevelAssemblyHelper.moveBlocks() вызывает Clearable.tryClear() для каждой блок-энтити в процессе сборки. Проблема в следующем:
- Для блок-энтити, реализующих Clearable (например, сундуки, воронки) — всё работает нормально, содержимое корректно очищается
- Для блок-энтити, которые НЕ реализуют Clearable (например, TableCloth, Mechanical Arm, Ejector и т. д.) — tryClear() ничего не делает, ничего не происходит
- Блок уничтожается, и его предметы выпадают в мир, но NBT-данные, содержащие инвентарь предметов, всё ещё остаются
- Когда блок воссоздаётся в подуровне, NBT-предметы считываются обратно
- Результат: одни и те же предметы существуют и на земле, и внутри блока — дублирование предметов
Вызвать этот баг до смешного легко:
просто переключите корабль между режимом физики и режимом блоков (или наоборот) — каждый переход запускает сборку/разборку, что дублирует содержимое любой блок-энтити на корабле, не реализующей Clearable. Никаких дорогих ресурсов или сложной подготовки не требуется.
Как это работает
Один миксин @Redirect перехватывает вызов Clearable.tryClear() внутри SubLevelAssemblyHelper.moveBlocks() :
- Если блок-энтити реализует Clearable → проходит как обычно, без вмешательства
- Если блок-энтити не реализует Clearable → вызывается level.removeBlockEntity(pos) для полного удаления блок-энтити, что предотвращает выпадение любого содержимого
Затронутые блок-энтити (Create + аддоны)
| Блок-энтити | Предметов за дублирование |
|---|---|
| TableCloth | до 4 |
| Mechanical Arm | весь удерживаемый стак (например, 64 предмета за раз) |
Плюс любая модовая BE с инвентарём, не реализующая Clearable.
Примечание: Mechanical Arm особенно опасен — он дублирует весь удерживаемый стак за одну операцию. Если рука держит полный стак из 64 предметов, вы получаете 64 продублированных предмета за каждый цикл сборки/разборки. Любая модовая блок-энтити с инвентарём, не реализующая Clearable, также затронута.
Конфигурация
Включена система белого списка. Файл конфигурации config/sableassemblyfix/whitelist.json автоматически создаётся при первом запуске.
Добавьте ID блок-энтити в белый список, чтобы пропустить исправление (например, если мод сам обрабатывает Clearable). Для перезагрузки требуется перезапуск игры.
Зависимости
- NeoForge >=21.1.228
- Sable >=2.0
- Create: Aeronautics >=1.0.2
Лицензия
MIT
Частые вопросы
Как установить Sable Assembly Fix?
Установите NeoForge под свою версию Minecraft, скачайте Sable Assembly Fix под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Sable Assembly Fix?
У Sable Assembly Fix есть сборки для Minecraft 1.21.1.
Нужен ли Sable Assembly Fix на сервере?
Ставится только на сервер; игрокам ставить не нужно