MCPcopy Index your code
hub / github.com/LlamaLad7/MixinExtras

github.com/LlamaLad7/MixinExtras @0.5.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.5.4 ↗ · + Follow
1,194 symbols 3,297 edges 237 files 36 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

MixinExtras

A small companion library to Mixin, designed to help you write your Mixins in a more expressive and compatible way.

More information about each feature offered can be found at the Wiki.

Setup

MixinExtras is available on Maven Central.

The setup steps vary based on your platform:

Fabric / Quilt

FabricLoader 0.15.0+ includes MixinExtras already. If you want to maintain compatibility with older versions, or want to use a different version than is provided, see below:

dependencies {
    include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.5.3")))
}

NeoForge with ModDevGradle

NeoForge 20.2.84+ includes MixinExtras already. If you want to maintain compatibility with older versions, or want to use a different version than is provided, see below:

dependencies {
    implementation(jarJar("io.github.llamalad7:mixinextras-neoforge:0.5.3"))
}

NeoForge with NeoGradle

NeoForge 20.2.84+ includes MixinExtras already. If you want to maintain compatibility with older versions, or want to use a different version than is provided, see below:

dependencies {
    implementation(jarJar("io.github.llamalad7:mixinextras-neoforge:0.5.3")) {
        jarJar.ranged(it, "[0.5.3,)")
    }
}

Make sure to use the -all jar when bundling MixinExtras yourself.

Forge 1.18.2+ with ForgeGradle

dependencies {
    compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.5.3"))
    implementation(jarJar("io.github.llamalad7:mixinextras-forge:0.5.3")) {
        jarJar.ranged(it, "[0.5.3,)")
    }
}

Forge 1.18.2+ with Architectury Loom

dependencies {
    compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.5.3"))
    implementation(include("io.github.llamalad7:mixinextras-forge:0.5.3"))
}

Any other platform

This is only a rough guide. You will need to look into the specifics of setting up ShadowJar for your platform.

plugins {
    id "com.github.johnrengelman.shadow" version "8.1.0"
}

configurations {
    implementation.extendsFrom shadow
}

dependencies {
    shadow(annotationProcessor("io.github.llamalad7:mixinextras-common:0.5.3"))
}

shadowJar {
    configurations = [project.configurations.shadow]
    relocate("com.llamalad7.mixinextras", "your.package.goes.here.mixinextras")
    mergeServiceFiles() // Very important!
}

To initialize MixinExtras, simply call

MixinExtrasBootstrap.init();

somewhere suitably early. In almost all cases I would recommend making an IMixinConfigPlugin and initializing MixinExtras in its onLoad method.

You're good to go!

Enjoy using the library, and don't hesitate to open an issue if you have any feedback, questions or suggestions.

Acknowledgements

I use YourKit's Java profiler when working on MixinExtras. Many thanks to them for providing a free license for the project.

Extension points exported contracts — how you extend this code

FlowPostProcessor (Interface)
(no doc) [18 implementers]
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/postprocessing/FlowPostProcessor.java
MixinTransformer (Interface)
(no doc) [11 implementers]
src/main/java/com/llamalad7/mixinextras/transformer/MixinTransformer.java
MemberIdentifier (Interface)
(no doc) [12 implementers]
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/ast/identifiers/MemberIdentifier.java
LocalFloatRef (Interface)
@see LocalRef [1 implementers]
src/main/java/com/llamalad7/mixinextras/sugar/ref/LocalFloatRef.java
TypeIdentifier (Interface)
(no doc) [13 implementers]
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/ast/identifiers/TypeIdentifier.java
LocalCharRef (Interface)
@see LocalRef [1 implementers]
src/main/java/com/llamalad7/mixinextras/sugar/ref/LocalCharRef.java
SimpleMemberDefinition (Interface)
(no doc) [13 implementers]
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/pool/SimpleMemberDefinition.java
LocalByteRef (Interface)
@see LocalRef [1 implementers]
src/main/java/com/llamalad7/mixinextras/sugar/ref/LocalByteRef.java

Core symbols most depended-on inside this repo

add
called by 205
src/main/java/com/llamalad7/mixinextras/sugar/impl/SingleIterationList.java
getType
called by 79
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/FlowValue.java
getInsn
called by 73
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/FlowValue.java
get
called by 62
src/main/java/com/llamalad7/mixinextras/sugar/ref/LocalRef.java
getValue
called by 50
src/main/java/com/llamalad7/mixinextras/ap/expressions/DefinitionInfo.java
decorate
called by 41
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/ast/expressions/Expression.java
getSource
called by 37
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/ExpressionParserFacade.java
equals
called by 34
src/main/java/com/llamalad7/mixinextras/sugar/impl/ShareInfo.java

Shape

Method 943
Class 196
Interface 33
Enum 11
Function 11

Languages

Java99%
Kotlin1%

Modules by API surface

src/main/java/com/llamalad7/mixinextras/injector/wrapoperation/WrapOperationInjector.java58 symbols
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/expansion/StringConcatFactoryExpander.java28 symbols
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/FlowValue.java25 symbols
expressions/src/main/java/com/llamalad7/mixinextras/expression/impl/flow/expansion/InsnExpander.java23 symbols
src/main/java/com/llamalad7/mixinextras/wrapper/InjectorWrapperImpl.java22 symbols
src/main/java/com/llamalad7/mixinextras/sugar/impl/SugarInjector.java20 symbols
src/main/java/com/llamalad7/mixinextras/sugar/impl/SingleIterationList.java20 symbols
src/main/java/com/llamalad7/mixinextras/service/MixinExtrasServiceImpl.java20 symbols
src/main/java/com/llamalad7/mixinextras/injector/wrapmethod/WrapMethodStage.java20 symbols
src/main/java/com/llamalad7/mixinextras/wrapper/WrapperInjectionInfo.java19 symbols
src/main/java/com/llamalad7/mixinextras/utils/InjectorUtils.java18 symbols
src/main/java/com/llamalad7/mixinextras/ap/expressions/DefinitionInfo.java18 symbols

For agents

$ claude mcp add MixinExtras \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact