Skip to main content

Audit Log

The audit log generates a comprehensive JSON report of every mixin config loaded in your game. It's your primary tool for discovering mixin class names, understanding what mods are modifying, and diagnosing conflicts.

Enabling the Audit Log

The audit log is enabled by default. Verify it's on in config/mixinhelper.json:

"audit": {
"enabled": true,
"outputFile": "config/mixinhelper-report.json",
"includeAnnotations": true
}

After launching the game, the report is written to the path specified in outputFile.


Reading the Report

The report is a JSON object with top-level metadata and a mixinConfigs array. Each entry in the array represents one mixin config:

{
"generatedAt": "2026-03-22T12:00:00Z",
"totalMixinConfigs": 42,
"totalMixins": 318,
"blacklistedCount": 2,
"mixinConfigs": [
{
"name": "examplemod.mixins.json",
"packageName": "com.example.examplemod.mixin",
"priority": 1000,
"pluginClass": "com.example.examplemod.MixinPlugin",
"mixins": [
{
"className": "com.example.examplemod.mixin.MixinLevel",
"annotations": ["@Inject", "@Redirect"],
"side": "common",
"blacklisted": false
},
{
"className": "com.example.examplemod.mixin.client.MixinLevelRenderer",
"annotations": ["@Inject", "@ModifyVariable"],
"side": "client",
"blacklisted": false
}
]
}
],
"blacklistedMixins": [
{
"className": "com.example.examplemod.mixin.MixinDisabled",
"reason": "Blacklisted by individual mixin rule"
}
]
}

Top-Level Fields

FieldDescription
generatedAtTimestamp when the report was generated
totalMixinConfigsTotal number of mixin configs loaded
totalMixinsTotal number of individual mixins across all configs
blacklistedCountNumber of mixins blocked by Mixin Helper
mixinConfigsArray of mixin config entries (see below)
blacklistedMixinsMixins that were blocked, with reasons

Config Entry Fields

FieldDescription
nameThe mixin config filename (use this for config blacklisting)
packageNameBase package for the mixin classes
priorityThe effective priority of this config
pluginClassThe mixin plugin class, if any
mixinsAll mixins in this config, with their side and annotations

Mixin Entry Fields

FieldDescription
classNameFully qualified mixin class name
annotationsMixin framework annotations used (if includeAnnotations is enabled)
sideWhich side this mixin applies to: common, client, or server
blacklistedWhether this mixin was blocked by Mixin Helper

Using the Report for Blacklisting

Finding a Mixin to Blacklist

  1. Open the report and search for the mod name or target class
  2. Find the className of the mixin you want to block
  3. Add it to blacklist.mixins in your config

Example workflow:

You know Create is conflicting with another mod on Level. Search the report for create:

{
"name": "create.mixins.json",
"packageName": "com.simibubi.create.mixin",
"mixins": [
{
"className": "com.simibubi.create.mixin.MixinLevel",
"annotations": ["@Inject"],
"side": "common",
"blacklisted": false
}
]
}

Now add it to your blacklist:

"blacklist": {
"mixins": ["com.simibubi.create.mixin.MixinLevel"]
}

Finding a Config to Blacklist

Use the name field directly:

"blacklist": {
"mixinConfigs": ["create.mixins.json"]
}

Annotation Information

When includeAnnotations is true, the report shows which Mixin framework annotations each mixin class uses. This helps you understand what a mixin does before deciding whether to blacklist it.

Annotation Quick Reference

AnnotationWhat It DoesConflict Risk
@InjectInjects code at a specific pointLow — multiple can coexist
@RedirectReplaces a single method callHigh — only one per target
@OverwriteReplaces an entire methodHigh — only one per target
@ModifyArgChanges an argument to a method callMedium
@ModifyVariableChanges a local variableMedium
@ModifyConstantChanges a constant valueMedium
@AccessorAdds a getter/setter for private fieldsLow
@InvokerExposes a private methodLow
@WrapOperationWraps a method callMedium
tip

Mixins using @Redirect or @Overwrite are the most likely to conflict with other mods. Prioritize investigating these when diagnosing issues.


Customizing the Report

Output Location

Change where the report is written:

"audit": {
"outputFile": "logs/mixin-audit.json"
}

Disable Annotation Scanning

If you don't need annotation data and want slightly faster startup:

"audit": {
"includeAnnotations": false
}

Disable the Audit Entirely

"audit": {
"enabled": false
}

Next Steps