Перейти к содержимому

KAllFix

Оптимизация и многопоточность от n1luik

NeoForgeForge
Загрузчики
NeoForgeForge
Скачиваний на Modrinth
16,8 тыс.
Подписчиков на Modrinth
28
версий
65
Обновлён
13 сентября 202613 сент.
Опубликован
в 2025
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру

Коротко о моде

Библиотека — нужна другим модам
Работает на NeoForge и Forge
Для Minecraft 1.20.1, 1.21–1.21.1 …
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 1.1.0.6 от 13 сентября 2026
Лицензия GPL-2.0-only — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

Версии игры1.19.2, 1.20.1, 1.21–1.21.1
Описание переведено автоматическиПоказать оригинал (EN)

Обзор

  • Этот проект исправляет и оптимизирует проблемы, вызванные другими модами, и работает на серверах.
  • Проект состоит из двух основных частей: k_all_fix и k_multi_threading, функции в основном управляются JVM-параметрами.
  • Обычный конфиг-файл не предоставляется; настройка выполняется в основном через параметры запуска.
  • Поддержка клиентской стороны появилась начиная с 1.0.4.0 (требуется JVM-параметр -DKMT_Client=true).
  • В среде с множеством модов и однопоточной базовой конфигурацией отсутствие проблем не гарантируется, но вы можете создать ISSUE на Github, и автор быстро его исправит.
  • При некоторых комбинациях модов клиентам всё равно может потребоваться установить этот мод, даже если видимого эффекта нет.

Возможности и сценарии использования

Оптимизации

  • Оптимизирует производительность Upgraded Additional Trims.
  • Оптимизирует накладные расходы, связанные с проверкой даты первоапрельской шутки, в Atmospheric.
  • Оптимизирует производительность Upgraded Core.
  • Оптимизирует производительность ИИ курятника в [Let's Do] Farm & Charm.
  • Оптимизирует производительность Event Wrapper
  • Оптимизирует производительность Create:FluidLogistic

    • -DKAF-fluidlogistics.DisabledDynamicUp=true, чтобы отключить обновление старого id; если этого не сделать, может замедлиться производительность.
  • Оптимизирует игровые вычисления AE2
  • Оптимизирует производительность ItemStack.issameItemsameTags
  • Оптимизирует производительность PPMO2
  • Удаляет бесполезный код Apotheosis и Create:Connected

Исправления

  • Исправляет проблемы производительности, связанные с количеством сущностей, в L_Ender's Cataclysm при использовании на серверах с MineColonies.
  • Исправляет чрезмерную отправку недействительных пакетов в [Let's Do] Farm & Charm.
  • Исправляет проблемы совместимости между Biolith и некоторыми модами генерации мира от MCreator (например, Terramity).
  • Исправляет проблемы совместимости между Gregicality Rocketry и Canary, но проблемы с хитбоксами всё ещё могут возникать на границах космических станций.
  • Исправляет проблему, из-за которой Petrolpark's Library 1.4.2 не работает в некоторых Java-средах; это исправление можно отключить с помощью -DKAF-DisablePetrolpark=false.
  • Исправляет/оптимизирует проблемы производительности, связанные с магнитными полями, в Alex's Caves.
  • Исправляет проблемы производительности mixin в Create: Diesel Generators.
  • Исправляет падения сервера в старых версиях Destroy, вызванные сбоями подключения к базе данных.

Многопоточность

Введение
  • Поддержка многопоточности включает тики блоков, тики блок-сущностей, сущностей, измерений, приём пакетов игроками (ручное переключение, только клиент) и вход игроков (ручное переключение), а также исправляет некоторые проблемные однопоточные моды путём применения многопоточности.
  • Многопоточность включена по умолчанию на стороне сервера.
  • В многопоточных сценариях могут появляться ошибки перехвата пула потоков или превышения лимита, но обычно это не приводит к падению сервера.
  • Рекомендуется вручную задать -DKMT-threadMax=[количество потоков CPU]; иначе генерация мира может зависнуть. Если зависания всё ещё происходят после установки, увеличьте значение.
  • До 1.0.4.0 клиенты не могут использовать многопоточность; начиная с 1.0.4.0 клиенты могут включить её через -DKMT_Client=true.
  • После 1.0.3.3 ParaServerChunkProvider, TaskRun и часть кода генерации чанков сильнее зависят от C2-компиляции (JVM автоматически перейдёт в C2 после некоторого времени работы).
  • В Windows Server 2022 Datacenter 21H2 20348.3091 (среда автора) могут возникать редкие аномалии планирования потоков, вызывающие аномально высокую загрузку CPU; решение — перезапустить сервер.
Связанные параметры JVM
  • -DKMT-threadMax=[number]

    • Задаёт количество потоков в пуле потоков.
  • -DKMT-callMax=[number]

    • Задаёт максимальное число потоков по умолчанию, которое могут использовать многопоточные задачи.
  • -DKMT-ThreadpoolKeepAliveTime=[milliseconds]

    • Задаёт, как долго простаивающие потоки остаются в живых перед переработкой.
  • -DKMT_D=[any characters]

    • Отключает многопоточность.
  • -DKMT-OpenVanillaServerChunkCache=true

    • Принудительно включает ванильный путь исправления ServerChunkCache (добавлено в 1.0.5.3).

Обзор параметров JVM (все сохранены)

Базовые и общие

  • -DKAllFix_D=[any characters]

    • Отключает KAllFix.
  • -DKMT_Client=true

    • Включает функции, связанные с многопоточностью, на стороне клиента (1.0.4.0+).
  • -DKAF-DisablePetrolpark=false

Соединение и тайм-ауты

  • -DKAF-ClientboundKeepAlivePacket_Max=[milliseconds]

    • Меняет требование по времени для ClientboundKeepAlivePacket (по умолчанию 15 секунд; в ванили должно быть <30 секунд, иначе игрока кикает по тайм-ауту).
  • -DKAF-ServerTimeout=[seconds]

    • Задаёт тайм-аут соединения с сервером.
    • В некоторых случаях может не работать (нужны оба параметра, так как Forge'вский forge.readTimeout покрывает только тайм-аут чтения пакетов на сервере, но не сетевые потоки клиента/сервера с игроками).
  • -Dforge.readTimeout=[seconds]

    • Параметр тайм-аута чтения пакетов Forge (используется вместе с предыдущим параметром).

Mixin / NBT / авто-команды

  • -DKAF-RemoveMixin:[class name]

    • Отключает указанный mixin (также можно отключить mixin'ы k_multi_threading).
  • -DKAF-NbtIoMixin_NotGZip=true

    • Добавляет try-catch в NBT IO для случаев без gzip (небезопасно; требует commons-compress в окружении).
  • -DKMT-ChunkGeneratorMode2Start=[true,false]

    • Автоматически выполняет: /SetterWorldConfig world setM2 %%KMT-ChunkGeneratorMode2Start%%.

Контроль размножения

  • -DKAF-ChunkBreedingControlSize=[number]

    • Отключает размножение, когда количество сущностей в чанке превышает заданное значение; отключено, если параметр отсутствует / не является числовым массивом / пуст.
  • -DKAF-ChunkBreedingControlSizeEnable=[true,false]

    • Внутренний кэш-переключатель для результатов обнаружения; ручная настройка может быть перезаписана программой.

Дополнительные функции

  • -DKMT-SafeUnloadChunk=true

    • Включает выгрузку чанков в потоках генерации чанков (рекомендуется только для <1.0.4.2 при возникновении связанных фризов).
  • -DIndependencePlayer=true

    • Включает асинхронную обработку игроков (скорее всего, даёт мало оптимизации или не даёт её вовсе).
  • -DFixBiolithBugMode2=true

    • Пытается исправить большинство проблем совместимости с Biolith (может внести серьёзные баги).
  • -DKAF-gtceu.MedicalConditionTrackerMixin=true

    • Отключает радиацию в GTM.
  • -DKAF-RemoveClientboundKeepAlivePacket=true

    • Отключает ванильный ClientboundKeepAlivePacket (ping больше не рассчитывается).
  • -DKAF-RemoveFlyingTest=true

    • Убирает проверки на полёт.
  • -DKAF-moonrise_fast_palette=true

    • Отключает функцию fast_palette из Moonrise.
  • -DKAF-FixTFMGDestroy=true

    • Исправляет совместимость между Destroy и Create (Creative Pump не может нормально подключаться к трубам Create).
  • -DKAF-Fix_fabric-object-builder-api.jar=true

    • Исправляет совместимость между fabric-object-builder-api из Sinytra Connector и forge-47.3.27.
  • -DKAF-FixAllPacket=true

    • Исправляет сетевые пакеты (должно быть включено и на клиенте, и на сервере); связанные моды: Mekanism Explosives, Create, The Abyss II.
  • -DKAF-ChunkAwareBlockCollisionSweeperFast=true

    • Использует приближённый алгоритм для замены ChunkAwareBlockCollisionSweeper из Lithium

Многопоточный вход

  • -DKMT-LoginMultiThreading=true

    • Включает многопоточный вход.
  • -DKMT-LoginMultiThreading.ConnectionLock=true

    • Ожидает завершения асинхронного выполнения в конце тика (отключение может немного повысить производительность, но снижает стабильность входа и может привести к крашу).
  • -DKMT-LoginMultiThreading.TaskSizeMax=[число]

    • Ограничивает количество одновременных задач входа (по умолчанию 8).
  • Многопоточный вход может привести к тому, что сервер получит ServerboundMovePlayerPacket раньше времени, что вызовет одну ошибку в логе.

Оптимизация пакетов

  • -DKAF-packetOptimize=true

    • Оптимизирует некоторые ванильные пакеты (должно быть включено и на клиенте, и на сервере).
  • -DKAF-packetOptimize.AttributesReOutputTime=[миллисекунды]

    • Задаёт интервал принудительной повторной отправки данных, связанных с атрибутами (по умолчанию 2 минуты).
  • -DKAF-packetOptimize.CompatibilityMode.ClientboundBlockEntityDataPacket=true

    • Использует более консервативное сжатие для ClientboundBlockEntityDataPacket (влияет на производительность).
  • -DKAF-packetOptimize.CompatibilityMode.ClientboundSectionBlocksUpdatePacket=true

    • Использует более консервативное сжатие для ClientboundSectionBlocksUpdatePacket.

Прочее

  • -DKAF-UnsafeCinderscapesFix1=true

    • Корректирует лимиты для ресурсоёмкой функции enableAshFall в Cinderscapes.
  • -DKAF-fix.asynchronous.ClientboundCustomQueryPacket=true

    • Делает рукопожатие асинхронным, снижая вероятность невозможности подключиться при большом количестве установленных модов.
  • -DKAF-FixConfigAuto=true

    • Автоматически меняет некоторые параметры конфигов для совместимости.

Установка и заметки по запуску

  • Начиная с 1.0.3.18 мод можно запускать напрямую (функция установки всё ещё сохранена).
  • До 1.0.3.18 сначала запустите установщик мода или используйте:

    • java -jar k_multi_threading-xxx.jar -i [пустой или каталог установки]
  • Установка создаёт только k_multi_threading-base.jar и k_multi_threading-asm.jar.
  • Некоторые функции могут скачивать зависимости (Zstd-jni 1.5.7-2); если скачивание не удалось, поместите их вручную в game_directory/lib.

Заметки о совместимости

  • Использование -DKAF-FixConfigAuto=true позволяет автоматически отключить:

    • logOffthreadEntityAdd в Cupboard.
    • world.tick_scheduler и entity_by_type в Canary / Lithium (нужно вручную добавить mixin.world.tick_scheduler=false в config/canary.properties или config/lithium.properties; иначе эти моды переопределят многопоточное исправление для ClassInstanceMultiMap).
  • Случаи, когда -DKAF-FixConfigAuto=true использовать не следует:

    • Возможен конфликт с mixin.perf.cache_upgraded_structures в ModernFix (отключите через mixin.perf.cache_upgraded_structures=false в config/modernfix-mixins.properties).
    • При включённом многопоточном входе ParCool (на странице указан как Parkour) может потребовать одной смерти после входа игрока, прежде чем заработает нормально.
    • Ars Creo может изредка писать в лог Modifier is already applied on this attribute!, но не крашится.
    • Реакторы деления NuclearCraft: Neoteric могут изредка неправильно рассчитывать охлаждение после перезапуска сервера.

Команды

  • /debug_GetterClassFile [имя класса]

    • Экспортирует итоговые данные класса времени выполнения в каталог игры, формат имени файла — timestamp_save.class.
  • /SetterWorldConfig [world, ClearErrorSize, RemoveRemoveErrorSize]

    • Настройки этой команды не сохраняются.
    • ClearErrorSize: очищает записанное количество «ошибок, вызвавших риск краша сервера».
    • RemoveRemoveErrorSize: прекращает запись счётчиков риска краша и продолжает перехват.
    • В world [id реестра измерения] доступны опции:
    • setM2 [true,false]: переключает на другой режим реализации измерения; приоритет выше, чем у setMultiThreading, но может заморозить игру.
    • setMultiThreading [число] (по умолчанию 0): задаёт количество многопоточных параллельных задач для этого измерения; независимый от setM2 режим, также может заморозить игру.

Прочее

  • Поскольку Minecraft и многие моды изначально рассчитаны на однопоточную работу, гарантировать полное исправление всех проблем невозможно.

Использование исходного кода

  • moonrise_fast_palette использует исходный код из Moonrise.
  • Исправления совместимости для Gregicality Rocketry и Canary используют исходный код из Canary.

Частые вопросы

Как установить KAllFix?

Установите NeoForge под свою версию Minecraft, скачайте KAllFix под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть KAllFix?

У KAllFix есть сборки для Minecraft 1.19.2, 1.20.1, 1.21–1.21.1.

Нужен ли KAllFix на сервере?

Работает и в игре, и на сервере — ставьте, где нужен

Лицензия и источник
GNU General Public License v2.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее