Compatibility
Minecraft: Java Edition
1.20.1
1.19.2
Platforms
Supported environments
Creators
Details
Licensed GPL-2.0-only
Published 9 months ago
Updated last week
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_fixandk_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.0onward (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
- Optimizes performance for Upgraded Additional Trims.
- Optimizes the April Fools date-check related overhead in Atmospheric.
- Optimizes performance for Upgraded Core.
- Optimizes chicken-coop AI performance in [Let's Do] Farm & Charm.
Fixes
- Fixes performance issues related to entity counts in L_Ender's Cataclysm when used on servers with MineColonies.
- Fixes excessive invalid packet sending in [Let's Do] Farm & Charm.
- Fixes compatibility issues between Biolith and some MCreator worldgen mods (e.g., Terramity).
- Fixes compatibility issues between Gregicality Rocketry and Canary, but collision-box issues may still occur at space-station borders.
- Fixes the issue where Petrolpark's Library 1.4.2 is unusable in some Java environments; this fix can be disabled with
-DKAF-DisablePetrolpark=false. - Fixes/optimizes magnetic-field-related performance issues in Alex's Caves.
- Fixes mixin performance issues in Create: Diesel Generators.
- Fixes server crashes in older Destroy versions caused by database connection failures.
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; from1.0.4.0onward, 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
ServerChunkCachefix path (added in 1.0.5.3).
- Forces the vanilla
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- Disables the Petrolpark's Library 1.4.2 related fix.
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).
- Changes the timing requirement for
-DKAF-ServerTimeout=[seconds]- Sets server connection timeout.
- May be ineffective in some cases (both parameters are needed because Forge's
forge.readTimeoutonly 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_threadingmixins can also be disabled).
- Disables a specified mixin (
-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%%.
- Automatically runs:
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.2when related freezes occur).
- Enables chunk unload in chunk-generation threads (recommended only for
-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(pingcan no longer be calculated).
- Disables vanilla
-DKAF-RemoveFlyingTest=true- Removes flight checks.
-DKAF-moonrise_fast_palette=true- Disable the
fast_palettefeature from Moonrise.
- Disable the
-DKAF-FixTFMGDestroy=true-DKAF-Fix_fabric-object-builder-api.jar=true- Fixes compatibility between Sinytra Connector's
fabric-object-builder-apiandforge-47.3.27.
- Fixes compatibility between Sinytra Connector's
-DKAF-FixAllPacket=true- Fixes network packets (must be enabled on both client and server); related mods: Mekanism Explosives, Create, The Abyss II.
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
ServerboundMovePlayerPacketearly, 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).
- Uses more conservative compression for
-DKAF-packetOptimize.CompatibilityMode.ClientboundSectionBlocksUpdatePacket=true- Uses more conservative compression for
ClientboundSectionBlocksUpdatePacket.
- Uses more conservative compression for
Others
-DKAF-UnsafeCinderscapesFix1=true- Adjusts limits for the high-overhead
enableAshFallfunction in Cinderscapes.
- Adjusts limits for the high-overhead
-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.jarandk_multi_threading-asm.jar. - Some features may download dependencies (
Zstd-jni 1.5.7-2); if download fails, place them manually ingame_directory/lib.
Compatibility Notes
- Using
-DKAF-FixConfigAuto=truecan automatically disable: - Cases where
-DKAF-FixConfigAuto=trueshould not be used:- Possible conflict with
mixin.perf.cache_upgraded_structuresin ModernFix (disable viamixin.perf.cache_upgraded_structures=falseinconfig/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.
- Possible conflict with
Commands
-
/debug_GetterClassFile [class name]- Exports final runtime class data to the game directory, with filename format
timestamp_save.class.
- Exports final runtime class data to the game directory, with filename format
-
/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 thansetMultiThreading, but may freeze the game.setMultiThreading [number](default0): sets multithread parallel task count for this dimension; independent mode fromsetM2, 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
moonrise_fast_paletteuses source code from Moonrise.- Compatibility fixes for Gregicality Rocketry and Canary use source code from Canary.


