-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
This page documents every optimization patch Lomka applies, and how to toggle them
at runtime via config/lomka-mixins.properties.
The config file is created empty on first launch. Every line you add forces a single patch on or off:
# fully qualified mixin name=true|false
net.minecraft.core.MixinCursor3D=falseRules:
- Missing keys always mean enabled. You only need entries for patches you want to turn OFF. New mixins added by an update work automatically without editing the file.
- Only
true/1enable. Anything else (including typos likeflase) disables the patch; non-boolean garbage is reported in the log. - Keys that do not exist in your installed build are ignored and reported as unknown.
- Disabled patches are summarized at startup:
[Lomka/MixinConfig] Disabled 2 mixin(s): MixinCursor3D, MixinFont - Deleting the file restores the all-enabled default on next launch.
Warning: disabling patches reduces performance and may change behavior. The
accessor.* entries are internal access bridges used by other Lomka mixins keep
them enabled.
Supported game versions: 1.20.1 · 1.21-1.21.1 · 1.21.4 · 1.21.6-1.21.8 · 1.21.9-1.21.10 · 1.21.11 · 26.1-26.1.2 · 26.2
In the tables below, Versions shows which builds contain the patch: all means
every supported version, 1.21.6+ means that version and newer, and ranges like
1.21.6-1.21.11 are inclusive over the supported list above. A key outside your game
version simply does not exist in your jar the config loader ignores it with an
unknown key log line. Nothing breaks.
| Key | Description | Versions |
|---|---|---|
com.mojang.blaze3d.audio.MixinChannel |
Passes sound positions as primitives instead of allocating float[3]
|
all |
com.mojang.blaze3d.audio.MixinListener |
Reuses a cached orientation array for listener updates | 1.21+ |
net.minecraft.client.sounds.MixinSoundEngine |
Skips redundant OpenAL updates; throttles sound floods | all |
net.minecraft.client.sounds.MixinJOrbisAudioStream |
Reuses ogg decode output containers during streamed audio | 1.21+ |
net.minecraft.client.sounds.MixinChunkedSampleByteBuf |
Single growing buffer for streamed sounds | 1.21+ |
| Key | Description | Versions |
|---|---|---|
com.mojang.blaze3d.buffers.MixinGpuBuffer |
Caches the full-buffer slice instead of allocating per call | 1.21.6-26.1 |
com.mojang.blaze3d.buffers.MixinStd140Builder |
Bitwise std140 alignment and absolute writes when building uniform blocks | 1.21.6+ |
com.mojang.blaze3d.buffers.MixinStd140SizeCalculator |
Bitwise std140 alignment for uniform size math | 1.21.6+ |
com.mojang.blaze3d.opengl.MixinGlProgram |
Flat uniform-location table for faster per-draw uniform lookup | 1.21.6+ |
com.mojang.blaze3d.opengl.MixinGlStateManager |
Skips redundant viewport/scissor/polygonMode driver calls | 1.21.6+ |
com.mojang.blaze3d.pipeline.MixinRenderTarget |
Hardware blit-to-screen present instead of the blit-shader quad; zero allocations, no mid-frame program switch | <1.21.4 |
com.mojang.blaze3d.platform.MixinWindow |
Invalidates the GL state cache on window/framebuffer resize | 1.21.6+ |
com.mojang.blaze3d.platform.MixinLighting |
Caches light UBO slices; skips unchanged GPU uploads | 1.21.6+ |
com.mojang.blaze3d.systems.MixinAutoStorageIndexBuffer |
Grows the shared index buffer x4 with a warm start; fewer mid-frame stalls | all |
com.mojang.blaze3d.vertex.MixinPoseStack |
Pooled matrix-stack push/pop and sparse rotate updates | all |
com.mojang.blaze3d.vertex.MixinPose |
Scratch matrix reuse in mulPose for display entities | 1.21.6-1.21.11 |
com.mojang.blaze3d.vertex.MixinBufferBuilder |
Fast ARGB-to-ABGR conversion while feeding vertices | 1.21+ |
com.mojang.blaze3d.vertex.MixinVertexConsumer |
Affine fast path for applying pose matrices to vertices | 1.21+ |
com.mojang.blaze3d.vertex.MixinVertexFormat |
Reuses precomputed mask/offset arrays on the hot path | 1.21-26.1 |
com.mojang.blaze3d.vertex.MixinMultiple |
Direct indexed loops for multi-consumer fan-out instead of per-vertex lambdas | 1.20.1-26.1 |
com.mojang.blaze3d.vertex.MixinVertexBuffer |
Caches the GL primitive mode per buffer | 1.20.1-1.21.4 |
com.mojang.blaze3d.vertex.MixinVertexFormatElement |
Precomputed hashCode for format map lookups | 1.20.1 |
com.mojang.blaze3d.vulkan.MixinDirect |
Persistent mapping for host-visible Vulkan buffers | 26.2 |
| Key | Description | Versions |
|---|---|---|
net.minecraft.client.gui.font.MixinFontSet |
Clears cached glyph advances on font rebuild so widths never go stale | 1.21.11+ |
net.minecraft.client.gui.font.MixinSource |
Int2Float advance cache for glyph sources | 1.21.11+ |
net.minecraft.client.gui.MixinFont |
Routes text width lookups through cached glyph advances | 1.21.11+ |
net.minecraft.client.gui.MixinGlyphSource |
Adds a cached per-codepoint advance lookup to glyph sources | 1.21.11+ |
| Key | Description | Versions |
|---|---|---|
net.minecraft.client.resources.model.MixinBuilder |
Fewer allocations and map lookups during block-model baking | 1.21.11+ |
net.minecraft.client.resources.model.MixinMaterial |
Caches the material hash instead of allocating an Object[] per sprite lookup | 1.20.1-1.21.11 |
net.minecraft.client.model.MixinModel |
Indexed loop instead of Iterator in resetPose; no per-entity allocation | 1.21.9+ |
| Key | Description | Versions |
|---|---|---|
net.minecraft.client.multiplayer.MixinClientLevel |
Caches entity-type names used by the tick profiler | 1.20.1-1.21.11 |
net.minecraft.client.renderer.culling.MixinFrustum |
Branchless floor/ceil in frustum setup | all |
net.minecraft.client.renderer.MixinDynamicUniformStorage |
Caches ring-buffer getter and reuses uniform slice records | 1.21.6+ |
net.minecraft.client.renderer.MixinGameRenderer |
Reuses the camera render-state quaternion instead of per-frame allocation | 1.21.9-1.21.11 |
net.minecraft.client.renderer.MixinItemInHandRenderer |
Reuses one render state per hand slot instead of allocating every frame | 1.21.11+ |
net.minecraft.client.renderer.MixinLightmap |
Zero-allocation direct UBO writing for lightmap updates | 26.1+ |
net.minecraft.client.renderer.MixinLightmapRenderStateExtractor |
Cached vectors avoid per-frame allocations in lightmap state extraction | 26.1+ |
net.minecraft.client.renderer.MixinLightTexture |
Zero-allocation lightmap texture updates | all, but not in 1.21.4 |
net.minecraft.client.renderer.texture.MixinTextureAtlas |
Frees sprite pixel data right after atlas upload | 1.21.6+ |
net.minecraft.client.MixinMinecraft |
Removes Thread.yield() from the frame loop |
1.20.1-1.21.11 |
net.minecraft.client.MixinCamera |
Vector-based camera math without temporary allocations | 1.20.1-1.21.11 |
| Key | Description | Versions |
|---|---|---|
net.minecraft.core.MixinCursor3D |
Incremental voxel stepping instead of div/mod in AABB scans | all |
net.minecraft.core.MixinDirect |
Linear scan for tiny holder sets instead of building a Set | all |
net.minecraft.core.MixinSectionPos |
Cheaper packed section-pos math and allocation-free stream traversal | all |
net.minecraft.stats.MixinStatType |
Lambda-free stat registration and lookups | all |
net.minecraft.world.level.block.state.MixinBlockStateBase |
Returns cached collision shapes, bypassing virtual dispatch | all |
net.minecraft.world.level.block.state.MixinBlockStateBaseCache |
Long-keyed state cache without int-shift overflow | all |
net.minecraft.world.level.chunk.MixinDataLayer |
Flattens the light-data delegation chain to one call | all |
net.minecraft.world.phys.shapes.MixinBitSetDiscreteVoxelShape |
Reusable index lists in shape merge loops | all |
net.minecraft.world.level.lighting.MixinLeveledPriorityQueue |
Packs light queue entries into SpatialLongSet | all |
net.minecraft.world.level.lighting.MixinLayerLightSectionStorage |
Single reusable consumer instead of per-block lambda allocation | all |
net.minecraft.world.level.chunk.status.MixinChunkStatus |
Caches per-status progression lists | 1.21+ |
net.minecraft.world.level.MixinLevel |
Internal bridge exposing Level#getProfiler to the ClientLevel mixin on pre-1.21.4, keep enabled |
1.20.1-1.21 |
| Key | Description | Versions |
|---|---|---|
net.minecraft.network.MixinFriendlyByteBuf |
Indexed collection/map writes without iterators or lambdas | all |
net.minecraft.network.MixinCompressionEncoder |
Reuses the input buffer between packet compressions | all |
net.minecraft.network.MixinCompressionDecoder |
Direct-buffer inflate path for compressed packets | 1.21+ |
| Key | Description | Versions |
|---|---|---|
net.minecraft.server.packs.resources.MixinFallbackResourceManager |
Drops useless .mcmeta work during resource listing |
all |
net.minecraft.server.packs.resources.MixinMultiPackResourceManager |
Skips redundant TreeMap copies with one namespace manager | all |
net.minecraft.server.packs.MixinVanillaPackResources |
Fast namespace/path resolution and cached pack.mcmeta | all |
| Key | Description | Versions |
|---|---|---|
net.minecraft.util.thread.MixinBlockableEventLoop |
No captured-lambda allocation on async task submission | all |
net.minecraft.util.MixinLightCoordsUtil |
Early-out for zero-emission light coordinates | 26.1+ |
net.minecraft.util.MixinByIdMap |
Leaner sparse/continuous id maps | all |
net.minecraft.util.MixinMth |
numberOfLeadingZeros-based ceillog2 and similar math shortcuts | all |
net.minecraft.util.MixinARGB |
LUT lookup instead of float division in color helpers | all |
net.minecraft.util.MixinArrayListDeque |
Power-of-two deque indexing without modulo | 1.21+ |
| Key | Description | Versions |
|---|---|---|
accessor.InvokerBlockBehaviour |
Internal access bridge used by MixinBlockStateBase | all |