McpMixinPlugin

class McpMixinPlugin : IMixinConfigPlugin

Picks AT MOST ONE of the three ChatComponent capture mixins per runtime, so their entry points cannot overlap and no line is captured twice. The eras differ by which methods exist, which is a property of the shipped class file — so it is read from there, never guessed: a variant is applied only where its shape was confirmed in those bytes, and none at all where they cannot be read.

Runs during config preparation, before any target has loaded: plain Java and slf4j only — no Kotlin, no mod class, and never Class.forName on a target, which would define it before it is transformed.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
private open var era: Int
Decided once, on one thread: every route here runs inside MixinProcessor.applyMixins, which is synchronized, and the three variants are built by one serial loop in MixinConfig.prepareMixins.
Link copied to clipboard
private val FUNNEL: Int = 2
Link copied to clipboard
private val LEGACY: Int = 1
Link copied to clipboard
private val LOG: Logger
Link copied to clipboard
private val MODERN: Int = 3
Link copied to clipboard
private val NONE: Int = 4
No shape was confirmed, so nothing is applied.
Link copied to clipboard
private val THREE_OBJ: Pattern
(Object, Object, Object)void — the player-chat entry's shape on every version that has one.
Link copied to clipboard
private val UNKNOWN: Int = 0

Functions

Link copied to clipboard
open fun acceptTargets(myTargets: Set<String>, otherTargets: Set<String>)
Link copied to clipboard
private open fun detect(target: String): Int
Which chat-entry shape [target] has, read from the CLASS FILE — not through the bytecode provider.
Link copied to clipboard
open fun getMixins(): List<String>
Link copied to clipboard
Link copied to clipboard
open fun onLoad(mixinPackage: String)
Link copied to clipboard
open fun postApply(target: String, t: ClassNode, mixin: String, info: IMixinInfo)
Link copied to clipboard
open fun preApply(target: String, t: ClassNode, mixin: String, info: IMixinInfo)
Link copied to clipboard
open fun shouldApplyMixin(target: String, mixin: String): Boolean