mixin-guide

ksoichiro's avatarfrom ksoichiro

Guide for configuring Mixins in Architectury multi-loader projects

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 9, 2026

When & Why to Use This Skill

This Claude skill provides a specialized technical guide for configuring Mixins within Architectury multi-loader Minecraft modding projects. It streamlines the development workflow by detailing the structural differences required for Fabric and NeoForge loaders, specifically focusing on mapping conversions, refMap management, and build script optimization to ensure cross-platform compatibility.

Use Cases

  • Setting up loader-specific Mixin configurations to handle the distinct mapping requirements of Fabric (Intermediary) and NeoForge (Mojang).
  • Troubleshooting 'InvalidInjectionException' and refMap-related crashes in NeoForge development environments.
  • Configuring Gradle build scripts to correctly include or exclude Mixin resources for production-ready JAR files.
  • Implementing new Mixin classes across common and loader-specific modules while maintaining a clean project architecture.
namemixin-guide
descriptionGuide for configuring Mixins in Architectury multi-loader projects

Mixin Configuration Guide

Purpose: Guide for configuring Mixins in Architectury multi-loader projects.

How it works: This skill is automatically activated when you mention tasks related to:

  • Adding new Mixin classes
  • Configuring Mixin files for Fabric or NeoForge
  • Debugging Mixin-related errors (InvalidInjectionException, refMap issues)
  • Setting up build configuration for Mixins

Simply describe what you want to do, and Claude will reference the appropriate guidance from this skill.


Critical: Loader-Specific Mixin Configurations (2025-12-02)

Problem: Fabric and NeoForge require different Mixin configurations due to mapping differences.

Loader-Specific Mixin Files

  • Fabric: fabric/src/main/resources/chronodawn-fabric.mixins.json

    • Must include "refmap": "common-common-refmap.json"
    • Required for Mojang → Intermediary mapping conversion in production
    • Referenced in fabric.mod.json
  • NeoForge: neoforge/src/main/resources/chronodawn-neoforge.mixins.json

    • Must NOT include refMap property
    • Uses Mojang mappings directly in development environment
    • Referenced in META-INF/neoforge.mods.toml
  • Common: common/src/main/resources/chronodawn.mixins.json

    • No refMap property
    • Excluded from both JARs via build.gradle exclude rules
    • Kept for reference only

Adding New Mixins

When adding new Mixin classes:

  1. Create Mixin class in common/src/main/java/com/chronodawn/mixin/
  2. Update both loader-specific configs:
    • Add to chronodawn-fabric.mixins.json (with refMap)
    • Add to chronodawn-neoforge.mixins.json (without refMap)
  3. Do NOT modify chronodawn.mixins.json (excluded from builds)

Build Configuration

Fabric (fabric/build.gradle):

processResources {
    from(project(':common').sourceSets.main.resources) {
        exclude 'chronodawn.mixins.json'  // Exclude common config
    }
}
shadowJar {
    exclude 'chronodawn.mixins.json'  // Also exclude from shadow JAR
}

NeoForge (neoforge/build.gradle):

from(project(":common").sourceSets.main.resources) {
    exclude "chronodawn.mixins.json"  // Already configured
}

Why This Separation is Necessary

  • Fabric (Production): Runs with Intermediary mappings → needs refMap to translate method names
  • NeoForge (Development): Runs with Mojang mappings → refMap causes InvalidInjectionException
  • Root Cause: Architectury Loom generates refMap using Intermediary mappings, incompatible with NeoForge's Mojang mappings

Reference: Commit 77958c0 (fix: separate loader-specific Mixin configs)


Troubleshooting

InvalidInjectionException in NeoForge

Symptom: Mixin injection fails in NeoForge but works in Fabric.

Cause: NeoForge Mixin config includes refMap property.

Solution: Remove "refmap" from chronodawn-neoforge.mixins.json.

Mixin Not Applied

Symptom: Mixin class exists but doesn't apply at runtime.

Checklist:

  1. Verify Mixin class is in chronodawn-fabric.mixins.json (for Fabric)
  2. Verify Mixin class is in chronodawn-neoforge.mixins.json (for NeoForge)
  3. Check Mixin config is referenced in fabric.mod.json / neoforge.mods.toml
  4. Verify build excludes chronodawn.mixins.json from JARs

RefMap Missing in Production

Symptom: Fabric mod works in dev but crashes in production with refMap errors.

Cause: Missing "refmap": "common-common-refmap.json" in chronodawn-fabric.mixins.json.

Solution: Add refMap property to Fabric Mixin config.


Last Updated: 2025-12-08 Maintained by: Chrono Dawn Development Team