diff --git a/src/dev/w1zzrd/asm/GraftSource.java b/src/dev/w1zzrd/asm/GraftSource.java index ab7ce12..018b25d 100644 --- a/src/dev/w1zzrd/asm/GraftSource.java +++ b/src/dev/w1zzrd/asm/GraftSource.java @@ -128,8 +128,12 @@ public final class GraftSource { return fieldAnnotations.get(node); } - public Set<MethodNode> getInjectMethods() { - return methodAnnotations.keySet(); + public List<MethodNode> getInjectMethods() { + return methodAnnotations + .keySet() + .stream() + .sorted(Comparator.comparingInt(a -> getInjectAnnotation(a).getEntry("priority"))) + .collect(Collectors.toList()); } public Set<FieldNode> getInjectFields() { diff --git a/src/dev/w1zzrd/asm/Inject.java b/src/dev/w1zzrd/asm/Inject.java index c18925a..4f02f39 100644 --- a/src/dev/w1zzrd/asm/Inject.java +++ b/src/dev/w1zzrd/asm/Inject.java @@ -30,4 +30,6 @@ public @interface Inject { * @return True if the injection method should receive the return value */ boolean acceptOriginalReturn() default false; + + int priority() default Integer.MIN_VALUE; }