Mixin is a trait/mixin framework for Java using ASM and hooking into the runtime classloading process via a set of pluggable built-in or user-provided services. Built-in services currently support Mojang's LegacyLauncher system, though this is deprecated in favour of ModLauncher by cpw, which has greater extensibility and has support for Java 8 and later.
The main documentation for Mixin can be found in the Wiki.
Additional documentation for individual features and annotations can be found in
the extensive Javadoc. For
additional help use the channel #mixin
on the Sponge Discord Server.
Mixin binaries are available via Jenkins and are published to the following maven repositories:
For handling obfuscation tasks, Mixin provides an Annotation Processor
which works at compile time to generate obfuscation mappings for your toolchain
to apply. If using Gradle 5 or later, annotation processors are no longer
automatically loaded from compile
configurations and must be specified
explicitly via annotationProcessor
configurations. For this purpose, Mixin
provides "fat jar" artefacts containing all required dependencies via the
:processor
classifier. For example if your build uses the dependency
org.spongepowered:mixin:1.2.3
then your annotationProcessor configuration
should specify dependency org.spongepowered:mixin:1.2.3:processor
.
If you are using Mixin in a Minecraft Forge project then the MixinGradle plugin can be used to simplify the configuration of the Mixin Annotation Processor. It provides a simple syntax for configuring the Mixin AP for your project, see the MixinGradle README for how to configure MixinGradle.
When developing using Mixin, you can use the Mixin Annotation Processor within Eclipse to provide context-sensitive errors and warnings to help you more easily troubleshoot your mixins. To do so:
gradle build
command to generate the mixin jarJava Compiler
-> Annotation Processing
-> Factory Path
Enable project specific settings
checkboxAdd External JARs
button and select the generated mixin jar with
the suffix -processor (hint: it should be in Mixin/build/libs
)Java Compiler
-> Annotation Processing
Enable project specific settings
checkboxEnable annotation processing
checkboxNew...
button next to the Processor options
box
Key
to reobfSrgFileValue
to the fully-qualified path to the mcp-srg.srg
file (the
location of the mapping file varies by platform, if you are unsure where to
find it please follow the discord link below). OK
to apply the changesEnhanced functionality for working with Mixin in IntelliJ IDEA is available via the Minecraft Development for IntelliJ IDEA plugin developed by DemonWav.
Specifying the minVersion
property in your configurations
is extrememly important. The following version history can be used to determine
when features were introduced (and sometimes when major bugs are squashed) in
order to help you determine which minVersion
you should specify.
Version | Date | Features / Changes |
---|---|---|
0.8.3 | February 2021 |
|
September 2020 |
|
|
0.8 | January 2020 |
|
0.7.11 | July 2018 |
|
0.7.10 | June 2018 |
|
0.7.9 | April 2018 |
|
0.7.8 | April 2018 |
|
0.7.7 | March 2018 |
|
0.7.6 | November 2017 |
|
0.7.5 | October 2017 |
|
0.7.4 | September 2017 |
|
0.7.3 | August 2017 |
|
0.7.2 | August 2017 |
|
0.7.1 | August 2017 |
|
0.7 | July 2017 |
|
0.6.15 | July 2017 |
|
0.6.14 | July 2017 |
|
0.6.13 | July 2017 |
|
0.6.12 | June 2017 |
|
0.6.11 | June 2017 |
|
0.6.10 | May 2017 |
|
0.6.8 | February 2017 |
|
0.6.7 | January 2017 |
|
0.6.6 | January 2017 |
|
0.6.5 | January 2017 |
|
0.6.4 | January 2017 |
|
0.6.3 | December 2016 |
|
0.6.2 | December 2016 |
|
0.6.1 | November 2016 |
|
0.6 | October 2016 |
|
0.5.17 | October 2016 |
|
0.5.16 | October 2016 |
|
0.5.14 | September 2016 |
|
0.5.13 | September 2016 |
|
0.5.10 | June 2016 |
|
0.5.9 | June 2016 |
|
0.5.8 | June 2016 |
|
0.5.7 | June 2016 |
|
0.5.6 | May 2016 |
|
0.5.5 | April 2016 |
|
0.5.4 | April 2016 |
|
0.5.3 | February 2016 |
|
0.5.2 | February 2016 |
|
0.5.1 | February 2016 |
|
0.4.19 | February 2016 |
|
0.4.18 | February 2016 |
|
0.4.17 | January 2016 |
|
0.4.15 | January 2016 |
|
0.4.14 | January 2016 |
|
0.4.13 | January 2016 |
|
0.4.11 | January 2016 |
|
0.4.10 | December 2015 |
|
0.4.8 | December 2015 |
|
0.4.6 | September 2015 |
|
0.4.4 | July 2015 |
|
0.4.3 | May 2015 |
|
0.4 | May 2015 |
|
0.3.2 | April 2015 |
|
0.3.1 | April 2015 |
|
0.3 | March 2015 |
|
0.2 | March 2015 |
|
0.1 | January 2015 |
|