Мод для Майнкрафт, который исправляет конфликты и просадки производительности в крупных сборках с другими модами. Подходит для сервера и клиента, добавляет оптимизацию многопоточной обработки мира, сущностей, измерений и сетевых пакетов.
Возможности
- Ускоряет работу Upgraded Additional Trims, Upgraded Core, AE2, PPMO2, Event Wrapper, Create: FluidLogistic, Farm & Charm и отдельных операций с предметами.
- Исправляет проблемы производительности или совместимости у L_Ender's Cataclysm вместе с MineColonies, Biolith с некоторыми модами генерации мира, Gregicality Rocketry с Canary, Petrolpark's Library, Alex's Caves, Create: Diesel Generators и Destroy.
- Распараллеливает тики блоков, блоков-сущностей и мобов, обработку измерений, вход игроков и приём пакетов игрока. Многопоточность на сервере включена по умолчанию.
- Может ограничивать размножение животных в чанке при слишком большом числе сущностей.
- Исправляет отдельные сетевые проблемы Create, Mekanism Explosives и The Abyss II, если включить исправление и на клиенте, и на сервере.
Как пользоваться
Основные возможности настраиваются JVM-параметрами при запуске игры или сервера. Для многопоточности задайте число потоков по числу потоков процессора:
-DKMT-threadMax=[число]
Если генерация мира зависает, увеличьте это значение. Клиентскую многопоточность включает параметр:
-DKMT_Client=true
Команда /debug_GetterClassFile [имя класса] сохраняет итоговый класс времени выполнения в папку игры. Команда /SetterWorldConfig временно меняет параметры мира:
/SetterWorldConfig world [id измерения] setM2 [true,false]— переключает режим обработки измерения; может вызвать зависание./SetterWorldConfig world [id измерения] setMultiThreading [число]— задаёт число параллельных задач для измерения; также может вызвать зависание./SetterWorldConfig ClearErrorSize— очищает счётчик опасных ошибок./SetterWorldConfig RemoveRemoveErrorSize— прекращает запись счётчика опасных ошибок, сохраняя их перехват.
Настройки
-DKAllFix_D=[значение]— отключает мод.-DKMT_D=[значение]— отключает многопоточность.-DKMT-callMax=[число]— ограничивает число потоков для многопоточных задач.-DKMT-ThreadpoolKeepAliveTime=[миллисекунды]— время хранения незанятых потоков.-DKMT-LoginMultiThreading=true— многопоточный вход игроков.-DKMT-LoginMultiThreading.ConnectionLock=true— ожидает завершения задач входа в конце тика; повышает стабильность входа.-DKMT-LoginMultiThreading.TaskSizeMax=[число]— предел одновременных задач входа.-DKAF-ChunkBreedingControlSize=[число]— запрещает размножение при превышении числа сущностей в чанке.-DKAF-packetOptimize=true— оптимизирует часть ванильных пакетов; требуется на клиенте и сервере.-DKAF-packetOptimize.AttributesReOutputTime=[миллисекунды]— интервал принудительной повторной отправки атрибутов.-DKAF-ClientboundKeepAlivePacket_Max=[миллисекунды],-DKAF-ServerTimeout=[секунды]и-Dforge.readTimeout=[секунды]— параметры проверки соединения и тайм-аута.-DKAF-FixConfigAuto=true— автоматически меняет ряд настроек совместимости.-DKAF-RemoveMixin:[имя класса]— отключает выбранный mixin.
Дополнительные параметры позволяют включить асинхронную обработку игрока (-DIndependencePlayer=true), отключить проверку полёта (-DKAF-RemoveFlyingTest=true), отключить расчёт пинга (-DKAF-RemoveClientboundKeepAlivePacket=true) или применить специальные исправления для Biolith, Moonrise, Cinderscapes, Sinytra Connector, Destroy и Create.
Требования и совместимость
Мод рассчитан на сборки с большим количеством модификаций, однако многопоточность может быть несовместима с отдельными механиками: Майнкрафт и многие моды изначально используют один поток. При -DKAF-FixConfigAuto=true для Canary или Lithium требуется вручную добавить mixin.world.tick_scheduler=false в config/canary.properties либо config/lithium.properties, иначе их настройки могут отменить исправление.
Параметр -DKAF-FixConfigAuto=true может конфликтовать с настройкой mixin.perf.cache_upgraded_structures из ModernFix; её следует отключить в config/modernfix-mixins.properties. Для небезопасной обработки NBT с -DKAF-NbtIoMixin_NotGZip=true нужна библиотека commons-compress. Некоторые функции загружают зависимость Zstd-jni; при сбое загрузки поместите её в game_directory/lib.
