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

KAllFix

Optimization and multithreading written by n1luik

Загрузки
9K
Подписчики
22
Обновлён
30 мая 2026 г.
Лицензия
GPL-2.0-only

Опубликован 8 мая 2025 г.

Overview

  • This project is used to fix and optimize issues caused by other mods, and it works on servers.
  • The project contains two main parts: k_all_fix and k_multi_threading, with features mainly controlled by JVM parameters.
  • No regular config file is provided; configuration is mainly done through startup parameters.
  • Client-side usage is supported from 1.0.4.0 onward (requires JVM parameter -DKMT_Client=true).
  • Under a multi-mod and single-threaded baseline environment, cause no issues is not guaranteed, but you could create an ISSUE on Github and the author will fix it quickly.
  • With some mod combinations, clients may still need to install this mod even if it has no visible effect.

Features and Use Cases

Optimizations

Fixes

Multithreading

Introduction

  • Multithreading supports includes block ticks, block entity ticks, entities, dimensions, player packet receiving (manual toggle, client-only), and player login (manual toggle), and also fixes some problematic single-threaded mods by applying multithreading.
  • Multithreading is enabled by default on the server side.
  • In multithreaded scenarios, thread-pool interception or limit-exceeded errors may appear, but they usually do not crash the server.
  • It is recommended to manually set -DKMT-threadMax=[CPU thread count]; otherwise world generation may be frozen. If freezes still occurs after setting it, increase the value higher.
  • Before 1.0.4.0, clients cannot use multithreading; from 1.0.4.0 onward, clients can enable it via -DKMT_Client=true.
  • After 1.0.3.3, ParaServerChunkProvider, TaskRun, and some chunk generation code depend more heavily on C2 compilation (the JVM will enter C2 automatically after running for a while).
  • In Windows Server 2022 Datacenter 21H2 20348.3091 (author's environment), rare thread scheduling anomalies may occur and causes abnormally high CPU usage; the solution is to restart the server.

Related JVM Parameters

  • -DKMT-threadMax=[number]
    • Sets thread-pool thread count.
  • -DKMT-callMax=[number]
    • Sets the default maximum number of threads that multithreaded tasks may use.
  • -DKMT-ThreadpoolKeepAliveTime=[milliseconds]
    • Sets how long idle threads are kept before recycling.
  • -DKMT_D=[any characters]
    • Disables multithreading.
  • -DKMT-OpenVanillaServerChunkCache=true
    • Forces the vanilla ServerChunkCache fix path (added in 1.0.5.3).

JVM Parameter Overview (all retained)

Basic and General

  • -DKAllFix_D=[any characters]
    • Disables KAllFix.
  • -DKMT_Client=true
    • Enables multithreading-related features on the client side (1.0.4.0+).
  • -DKAF-DisablePetrolpark=false

Connection and Timeout

  • -DKAF-ClientboundKeepAlivePacket_Max=[milliseconds]
    • Changes the timing requirement for ClientboundKeepAlivePacket (default 15 seconds; vanilla must be <30 seconds or the player is kicked for timeout).
  • -DKAF-ServerTimeout=[seconds]
    • Sets server connection timeout.
    • May be ineffective in some cases (both parameters are needed because Forge's forge.readTimeout only covers server packet-read timeout, not client/server network threads with players).
  • -Dforge.readTimeout=[seconds]
    • Forge packet-read timeout parameter (used together with the previous parameter).

Mixin / NBT / Auto Command

  • -DKAF-RemoveMixin:[class name]
    • Disables a specified mixin (k_multi_threading mixins can also be disabled).
  • -DKAF-NbtIoMixin_NotGZip=true
    • Adds try-catch to NBT IO for non-gzip scenarios (unsafe; requires commons-compress in the environment).
  • -DKMT-ChunkGeneratorMode2Start=[true,false]
    • Automatically runs: /SetterWorldConfig world setM2 %%KMT-ChunkGeneratorMode2Start%%.

Breeding Control

  • -DKAF-ChunkBreedingControlSize=[number]
    • Disables breeding when chunk entity count exceeds the given value; disabled if the parameter is missing / not a numeric array / empty.
  • -DKAF-ChunkBreedingControlSizeEnable=[true,false]
    • Internal cache switch for detection results; manual setting may be overridden by the program.

Optional Features

  • -DKMT-SafeUnloadChunk=true
    • Enables chunk unload in chunk-generation threads (recommended only for <1.0.4.2 when related freezes occur).
  • -DIndependencePlayer=true
    • Enables asynchronous player handling (likely provides little to no optimization).
  • -DFixBiolithBugMode2=true
    • Attempts to fix most Biolith compatibility issues (may introduce major bugs).
  • -DKAF-gtceu.MedicalConditionTrackerMixin=true
    • Disables radiation in GTM.
  • -DKAF-RemoveClientboundKeepAlivePacket=true
    • Disables vanilla ClientboundKeepAlivePacket (ping can no longer be calculated).
  • -DKAF-RemoveFlyingTest=true
    • Removes flight checks.
  • -DKAF-moonrise_fast_palette=true
    • Disable the fast_palette feature from Moonrise.
  • -DKAF-FixTFMGDestroy=true
    • Fixes compatibility between Destroy and Create (Creative Pump cannot properly connect to Create's pipes).
  • -DKAF-Fix_fabric-object-builder-api.jar=true
    • Fixes compatibility between Sinytra Connector's fabric-object-builder-api and forge-47.3.27.
  • -DKAF-FixAllPacket=true
  • -DKAF-ChunkAwareBlockCollisionSweeperFast=true
    • Use approximation algorithm to replace ChunkAwareBlockCollisionSweeper of Lithium

Login Multithreading

  • -DKMT-LoginMultiThreading=true
    • Enables multithreaded login.
  • -DKMT-LoginMultiThreading.ConnectionLock=true
    • Waits for async execution completion at tick end (disabling may improve performance somewhat, but lowers login stability and may crash).
  • -DKMT-LoginMultiThreading.TaskSizeMax=[number]
    • Limits the number of concurrent login tasks (default 8).
  • Login multithreading may cause the server to receive ServerboundMovePlayerPacket early, leading to one error log.

Packet Optimization

  • -DKAF-packetOptimize=true
    • Optimizes some vanilla packets (must be enabled on both client and server).
  • -DKAF-packetOptimize.AttributesReOutputTime=[milliseconds]
    • Sets forced resend interval for attribute-related data (default 2 minutes).
  • -DKAF-packetOptimize.CompatibilityMode.ClientboundBlockEntityDataPacket=true
    • Uses more conservative compression for ClientboundBlockEntityDataPacket (impacts performance).
  • -DKAF-packetOptimize.CompatibilityMode.ClientboundSectionBlocksUpdatePacket=true
    • Uses more conservative compression for ClientboundSectionBlocksUpdatePacket.

Others

  • -DKAF-UnsafeCinderscapesFix1=true
    • Adjusts limits for the high-overhead enableAshFall function in Cinderscapes.
  • -DKAF-fix.asynchronous.ClientboundCustomQueryPacket=true
    • Makes handshake asynchronous, reducing the chance of being unable to join when too many mods are installed.
  • -DKAF-FixConfigAuto=true
    • Automatically changes some config options for compatibility.

Installation and Runtime Notes

  • From 1.0.3.18, it can run directly (installation feature is still kept).
  • Before 1.0.3.18, run the mod's installer first, or use:
    • java -jar k_multi_threading-xxx.jar -i [empty or install directory]
  • Installation only generates k_multi_threading-base.jar and k_multi_threading-asm.jar.
  • Some features may download dependencies (Zstd-jni 1.5.7-2); if download fails, place them manually in game_directory/lib.

Compatibility Notes

  • Using -DKAF-FixConfigAuto=true can automatically disable:
    • logOffthreadEntityAdd in Cupboard.
    • world.tick_scheduler and entity_by_type in Canary / Lithium (you must manually add mixin.world.tick_scheduler=false in config/canary.properties or config/lithium.properties; otherwise these mod will override the multithread fix for ClassInstanceMultiMap).
  • Cases where -DKAF-FixConfigAuto=true should not be used:
    • Possible conflict with mixin.perf.cache_upgraded_structures in ModernFix (disable via mixin.perf.cache_upgraded_structures=false in config/modernfix-mixins.properties).
    • With login multithreading enabled, ParCool (listed as Parkour on page) may require one death after player joining before working normally.
    • Ars Creo may rarely log Modifier is already applied on this attribute!, but will not crash.
    • NuclearCraft: Neoteric fission reactors may rarely calculate cooling incorrectly after server restart.

Commands

  • /debug_GetterClassFile [class name]

    • Exports final runtime class data to the game directory, with filename format timestamp_save.class.
  • /SetterWorldConfig [world, ClearErrorSize, RemoveRemoveErrorSize]

    • Settings from this command are not persistent.
    • ClearErrorSize: clears the recorded count of “errors that caused server crash risk”.
    • RemoveRemoveErrorSize: stops recording crash-risk counts and keeps intercepting.
    • Under world [dimension registry id], available options:
      • setM2 [true,false]: switches to another dimension implementation mode; higher priority than setMultiThreading, but may freeze the game.
      • setMultiThreading [number] (default 0): sets multithread parallel task count for this dimension; independent mode from setM2, and may also freeze the game.

Others

  • Because Minecraft and many mods are fundamentally designed around single-threaded behavior, complete fixes for all issues cannot be guaranteed.

Source Code Usage

Ченджлог

1.0.5.14Бета1.19.2, 1.20.1 · 30 мая 2026 г.

修复多线程和observable的兼容问题

Fix compatibility issues between multithreading and observables

1.0.5.13Бета1.19.2, 1.20.1 · 29 мая 2026 г.

原文

  • 增加使用使用近似算法给锂的ChunkAwareBlockCollisionSweeper的选项
  • 优化pmmo2的性能问题
  • 增加形状缓存
  • 生物ai预内存申请
  • EnchantmentHelper缓存
  • 删除create_connected的无效代码
  • 删除apotheosis的无效代码

Translation

  • Add the option to use an approximation algorithm for the ChunkAwareBlockCollisionSweeper of lithium
  • Optimize the performance issues of pmmo2
  • Add shape caching
  • Biological AI pre-memory application
  • EnchantmentHelper cache
  • Remove the invalid code in create_connected
  • Remove the invalid code in apotheosis
1.0.5.12Бета1.19.2, 1.20.1 · 30 апреля 2026 г.

翻译

  • 修复多线程在特定情况下的流体递归问题
  • 修复多线程和immersivepetroleum的兼容问题
  • 修复多线程和create6.0.8的兼容问题
  • 修复多线程和immersiveengineering的兼容问题

Translation

  • Fixed the fluid recursion issue in multithreading under specific conditions
  • Fixed compatibility issues between multithreading and immersivepetroleum
  • Fixed compatibility issues between multithreading and create 6.0.8
  • Fixed compatibility issues between multithreading and immersiveengineering
1.0.5.11Бета1.19.2, 1.20.1 · 17 апреля 2026 г.

原文

  • 修复小概率出现的ae和多线程的兼容问题
  • 增加修复ae2 KeyCounter用错map类型导致遍历计算量是数据的平方
  • 修复ItemStack.isSameItemSameTags的性能问题

Translation

  • Fixed the compatibility issue between AE and multithreading that occurred with low probability
  • Fixed an issue where the use of the wrong map type in ae2 KeyCounter resulted in the traversal computation being the square of the data
  • Fixed the performance issue of ItemStack.isSameItemSameTags
1.0.5.10Бета1.19.2, 1.20.1 · 1 апреля 2026 г.

无敌了不小心用旧fluidlogistics代码写的1.0.5.9

1.0.5.9Бета1.19.2, 1.20.1 · 1 апреля 2026 г.

Translation

  • Fix and optimize the performance issues of fluidlogistics

原文

  • 修复优化fluidlogistics的性能问题的问题
1.0.5.8Бета1.19.2, 1.20.1 · 1 апреля 2026 г.

原文

  • 修复多线程跟observable的兼容问题
  • 修复多线程跟最新版botania的兼容问题
  • 增加优化fluidlogistics的性能问题
  • 增加优化eventwrapper的性能问题

Translation

  • Fixed compatibility issues between multithreading and observable
  • Fixed compatibility issue between multithreading and the latest version of Botania
  • Address and optimize performance issues in fluidlogistics
  • Address the performance issue of optimizing the eventwrapper
1.0.5.7Бета1.19.2, 1.20.1 · 20 марта 2026 г.

原文

  • 优化[奇异饰品]artifacts Snowshoes物品的性能问题
  • 修复[超越维度] beyonddimensions跟多线程的兼容问题

Translation

  • Optimize the performance issues of the [unique artifact] Snowshoes item
  • Fixed the compatibility issue between [Beyonddimensions] and multithreading

Комментарии

Загружаем…