跳到正文

KAllFix

Optimization and multithreading written by n1luik

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

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

  • 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](https://modrinth.com/mod/lets-do-farm-charm).
  • Optimize performance for Event Wrapper
  • Optimize performance for Create:FluidLogistic
  • -DKAF-fluidlogistics.DisabledDynamicUp=true to disable updating old id, if not do so, may cause to preformance slow down.
  • Optimize AE2 game computation
  • Optimize performance for ItemStack.issameItemsameTags
  • Optimize performance of PPMO2
  • Delete useless code of Apotheosis and Create:Connected

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](https://modrinth.com/mod/lets-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; 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
  • 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).
  • -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
  • Fixes network packets (must be enabled on both client and server); related mods: Mekanism Explosives, Create, The Abyss II.
  • -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

常见问题

KAllFix 支持哪些 Minecraft 版本?

KAllFix 支持 Minecraft Java 版 1.19.2–1.21.1,共 4 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

KAllFix 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。

评论

登录后评论和评分

No-Name 的其他作品

查看全部 →