/MixinBooter

Allows any mixins that work on mods to work effortlessly. With a single class and an annotation. On 1.12.2.

Primary LanguageJavaGNU Lesser General Public License v2.1LGPL-2.1

MixinBooter

Allows any mixins that work on mods to work effortlessly on 1.8 - 1.12.2

For Developers:

  • Add CleanroomMC's repository and depend on MixinBooter's maven entry:
repositories {
    maven {
        url 'https://maven.cleanroommc.com'
    }
}

dependencies {

    // Common:
    annotationProcessor 'org.ow2.asm:asm-debug-all:5.2'
    annotationProcessor 'com.google.guava:guava:32.1.2-jre'
    annotationProcessor 'com.google.code.gson:gson:2.8.9'

    // ForgeGradle:
    implementation ('zone.rong:mixinbooter:9.3') {
        transitive = false
    }
    annotationProcessor ('zone.rong:mixinbooter:9.3') {
        transitive = false
    }
    
    // RetroFuturaGradle:
    String mixinBooter = modUtils.enableMixins('zone.rong:mixinbooter:9.3')
    // modUtils.enableMixins('zone.rong:mixinbooter:9.3', 'mod_id.mixins.refmap.json') << add refmap name as 2nd arg (optional)
    api (mixinBooter) {
        transitive = false
    }
    annotationProcessor (mixinBooter) {
        transitive = false
    }
}

Pseudo-Changelog:

  • As of 4.2, MixinBooter's API has changed and all mods that uses mixins are encouraged to depend on MixinBooter, even those that mixin into vanilla/forge/library classes. To avoid mixin version mismatches with mods crashing trying to implement modded mixins (looking at you VanillaFix). Thanks to @embeddedt recommending and helping me introduce this change!

  • As of 5.0, MixinExtras by @LlamaLad7 is shaded. Available for developers to use.

  • As of 8.0, MixinBooter will now work from 1.8 - 1.12.2. One single build works with all these versions! (TODO: LiteLoader support?)

  • As of 8.4, MixinBooter actively attempts to be compatible with SpongeForge

  • As of 9.2, MixinBooter reinstates the older MixinLoader annotation for 1.8.x usages.

Tidbits:

  • Consult IEarlyMixinLoader for mixins that affects vanilla, forge, or any classes that is passed to the classloader extremely early (e.g. Guava).
  • Consult ILateMixinLoader for mixins that affects mods.
  • @MixinLoader annotation's , as of 4.2, deprecated. The functionality is akin to ILateMixinLoader. Both can be used at the same time, especially for 1.8.x versions where it is needed.