All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Mixin Helper

Mixin Helper

by TysonTheEmber • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Mixin Helper

Take control of mixin conflicts in your modpack. Mixin Helper lets you blacklist, prioritize, and surgically modify mixins from any loaded mod, all from a single JSON config file. No code, no recompiling, no removing mods.

Documentation

Full documentation, guides, and examples at https://tysontheember.dev/mixin-helper/intro/


⚠️ USE AT YOUR OWN RISK ⚠️

This is an advanced tool. If you don't know what mixins are or how they work, this mod is not for you.

While there are guardrails Mixin Helper directly interferes with how other mods patch the game. Incorrect use will break things. This includes but is not limited to:

  • Game crashes with difficult-to-diagnose stacktraces
  • Broken mod features that may not be immediately obvious
  • World corruption, back up your worlds before making changes
  • Incompatible save files if disabled mixins affect world data

Do NOT report bugs to mod authors if you have modified their mixins with this tool. Any issues caused by Mixin Helper are your responsibility.


Features

  • Mixin Blacklisting: Disable individual mixins, entire mixin configs, or block all mixins targeting a specific class
  • Priority Control: Override mixin execution order to resolve load-order conflicts between mods
  • Method Removal: Neutralize or remove specific injected methods without disabling the entire mixin
  • Audit Report: Generate a detailed JSON report of every loaded mixin config, including annotations, to diagnose conflicts fast

How It Works

  1. Install Mixin Helper, drop the jar in your mods folder
  2. Launch the game, a default config is generated at config/mixinhelper.json
  3. Check the audit report at config/mixinhelper-report.json to see every mixin loaded in your game
  4. Edit the config to blacklist, reprioritize, or strip methods as needed
  5. Restart and you're done

Quick Example

Two mods crash because they both modify the same class? Blacklist the offending mixin:

{
  "enabled": true,
  "blacklist": {
    "mixins": ["com.conflictingmod.mixin.MixinLevelRenderer"],
    "mixinConfigs": [],
    "targetClasses": []
  }
}

Need finer control? Neutralize a single injected method instead of the whole mixin:

{
  "methodRemovals": {
    "rules": [
      {
        "targetClass": "net.minecraft.world.level.Level",
        "method": "brokenMethod",
        "action": "nop"
      }
    ]
  }
}

Use Cases

  • Modpack developers resolving mod conflicts without waiting for mod authors to fix them
  • Server admins disabling specific mod behaviors that cause instability
  • Debugging which mixins are causing crashes or unexpected behavior
  • Fine-tuning mod interactions by controlling execution order

Notes

  • Config changes require a full game restart, mixins load very early in startup
  • Mixin Helper itself has no mixins, it uses the Mixin plugin system to intercept other mods
  • Zero runtime performance impact, all work is done during startup

How to Install Mixin Helper (Mod)

Mixin Helper by TysonTheEmber is verified for Fabric, Forge, Neoforge across Minecraft versions 1.20.1, 1.21.1 (latest release: 1.1.2+neoforge-1211, file size: 41 KB). Follow the steps below to install it safely from ModCraft.tv:

  1. Click the Download button above and select your Minecraft version (1.20.1, 1.21.1) and platform (Fabric, Forge, Neoforge).
  2. Make sure you have the compatible loader or environment installed for Fabric, Forge, Neoforge.
  3. Move the downloaded Mixin Helper file into your Minecraft .minecraft/mods folder and launch the game.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.21.1
Neoforge
20d ago 1
1.20.1
Forge
20d ago 1
1.21.1
Fabric
20d ago 1
1.20.1
Fabric
20d ago 1
1.21.1
Neoforge
5mo ago 1
1.20.1
Forge
5mo ago 1
1.21.1
Fabric
5mo ago 1
1.20.1
Fabric
5mo ago 1
1.20.1
Forge
8mo ago 1
1.21.1
Fabric
8mo ago 1
1.20.1
Fabric
8mo ago 1
1.21.1
Neoforge
8mo ago 1
1.20.1
Forge
8mo ago 1
1.21.1
Neoforge
8mo ago 1
1.20.1
Fabric
8mo ago 1
1.21.1
Fabric
8mo ago 1
## v1.1.2

### Fixed
  • mixinPriorities now works. The map was read from the config but never applied, so per-mixin overrides had no effect and the mixin kept its own priority.
  • mixinConfigPriorities now changes the priority of every mixin in that config. It used to change only the config's own ordering value, which Mixin had already copied into each mixin before Mixin Helper ran.
  • An individual mixinPriorities entry wins over a mixinConfigPriorities entry for the same config.
  • Mixin applies lower priorities first. To make a mixin win a @Redirect conflict, give it a lower number than the other mixin, not a higher one.

## v1.1.2

### Fixed
  • mixinPriorities now works. The map was read from the config but never applied, so per-mixin overrides had no effect and the mixin kept its own priority.
  • mixinConfigPriorities now changes the priority of every mixin in that config. It used to change only the config's own ordering value, which Mixin had already copied into each mixin before Mixin Helper ran.
  • An individual mixinPriorities entry wins over a mixinConfigPriorities entry for the same config.
  • Mixin applies lower priorities first. To make a mixin win a @Redirect conflict, give it a lower number than the other mixin, not a higher one.

## v1.1.2

### Fixed
  • mixinPriorities now works. The map was read from the config but never applied, so per-mixin overrides had no effect and the mixin kept its own priority.
  • mixinConfigPriorities now changes the priority of every mixin in that config. It used to change only the config's own ordering value, which Mixin had already copied into each mixin before Mixin Helper ran.
  • An individual mixinPriorities entry wins over a mixinConfigPriorities entry for the same config.
  • Mixin applies lower priorities first. To make a mixin win a @Redirect conflict, give it a lower number than the other mixin, not a higher one.

## v1.1.2

### Fixed
  • mixinPriorities now works. The map was read from the config but never applied, so per-mixin overrides had no effect and the mixin kept its own priority.
  • mixinConfigPriorities now changes the priority of every mixin in that config. It used to change only the config's own ordering value, which Mixin had already copied into each mixin before Mixin Helper ran.
  • An individual mixinPriorities entry wins over a mixinConfigPriorities entry for the same config.
  • Mixin applies lower priorities first. To make a mixin win a @Redirect conflict, give it a lower number than the other mixin, not a higher one.

## v1.1.1

### Fixed
  • Mixin names in the audit log are no longer recorded with a doubled dot before the class name (for example org.example.mixin..FooMixin). Mixin appends a trailing dot to the configured package internally; the audit log and the string-list blacklist matching now join the full name with a single separator, so annotation scanning and blacklist lookups resolve correctly.

## v1.1.0

### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default

## v1.1.1

### Fixed
  • Mixin names in the audit log are no longer recorded with a doubled dot before the class name (for example org.example.mixin..FooMixin). Mixin appends a trailing dot to the configured package internally; the audit log and the string-list blacklist matching now join the full name with a single separator, so annotation scanning and blacklist lookups resolve correctly.

## v1.1.0

### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default

## v1.1.1

### Fixed
  • Mixin names in the audit log are no longer recorded with a doubled dot before the class name (for example org.example.mixin..FooMixin). Mixin appends a trailing dot to the configured package internally; the audit log and the string-list blacklist matching now join the full name with a single separator, so annotation scanning and blacklist lookups resolve correctly.

## v1.1.0

### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default

## v1.1.1

### Fixed
  • Mixin names in the audit log are no longer recorded with a doubled dot before the class name (for example org.example.mixin..FooMixin). Mixin appends a trailing dot to the configured package internally; the audit log and the string-list blacklist matching now join the full name with a single separator, so annotation scanning and blacklist lookups resolve correctly.

## v1.1.0

### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default

### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default
### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default
### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default
### Added
  • Guardrails system** to prevent accidental modifications to critical classes that could corrupt worlds or crash the JVM
  • Protects chunk generation classes (ChunkGenerator, NoiseBasedChunkGenerator, WorldGenRegion, LevelChunk, ChunkStatus)
  • Protects palette container classes (PalettedContainer, LinearPalette, HashMapPalette, Palette)
  • Protects mixin system internals (org.spongepowered.asm.*)
  • Protects JVM/classloader internals (java.lang.ClassLoader, sun.misc.Unsafe, jdk.internal.*)
  • Protects threading classes (BlockableEventLoop, TickTask)
  • Protects world persistence classes (LevelStorageSource, net.minecraft.nbt.*, LevelData)
  • New guardrails config section with:
  • enabled — master toggle (default: true)
  • bypassProtectedClasses — override protection at your own risk (default: false)
  • additionalProtectedPatterns — add your own protected class prefixes
  • excludeFromProtection — selectively unprotect specific classes (requires bypass)
  • Early config validation logs warnings at startup when protected classes are referenced
  • Guardrails block target-class blacklisting and method removal/nop on protected classes by default
initial version
initial version
initial version
Mixin Helper Icon
Download Mixin Helper
Select game version
Select platform