Package org.spongepowered.asm.mixin
Annotation Interface Unique
This annotation, when applied to a member method or field in a mixin,
indicates that the member should never overwrite a matching member in
the target class. This indicates that the member differs from the normal
"overlay-like" behaviour of mixins in general, and should only ever be
added to the target. For public fields, the annotation has no
effect.
Typical usage of this annotation would be to decorate a utility method in
a mixin, or mark an interface-implementing method which must not overwrite a
target if it exists (consider appropriate use of Intrinsic in these
situations).
Because of the mixed usage, this annotation has different implications for methods with differing visibility:
- public methods
- public methods marked with this annotation are discarded if a
matching target exists. Unless
silent()is set to true, a warning-level message is generated. - private and protected methods
- non-public methods are renamed if a matching target method is found, this allows utility methods to be safely assigned meaningful names in code, but renamed if a conflict occurs when a mixin is applied.
Notes
- To mark all methods in a mixin as unique, apply the annotation to the mixin itself
- Uniqueness can be defined on a per-interface basis by using an
Implementsannotation with unique set to true
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionbooleanIf this annotation is applied to a public method in a mixin and a conflicting method is found in a target class, then a warning-level message is generated in the log.
-
Element Details
-
silent
boolean silentIf this annotation is applied to a public method in a mixin and a conflicting method is found in a target class, then a warning-level message is generated in the log. To suppress this message, set this value to true.- Returns:
- true to suppress warning message when a public method is discarded
- Default:
false
-