From 65ecdd623138653aad892701ad89dff328a3004f Mon Sep 17 00:00:00 2001 From: Fury_Phoenix <64714532+Phoenix-Starlight@users.noreply.github.com> Date: Sat, 23 Dec 2023 15:54:55 -0800 Subject: [PATCH] Add annotation to ignore mixins --- .../mixinAp/annotation/ClientMixinValidator.java | 14 +++++++++++++- annotations/build.gradle | 2 +- .../modernfix/annotation/IgnoreMixin.java | 11 +++++++++++ .../mixin/perf/async_locator/EyeOfEnderAccess.java | 4 ++-- .../mixin/perf/async_locator/EyeOfEnderMixin.java | 4 ++-- 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 annotations/src/main/java/org/embeddedt/modernfix/annotation/IgnoreMixin.java diff --git a/annotation-processor/src/main/java/org/fury_phoenix/mixinAp/annotation/ClientMixinValidator.java b/annotation-processor/src/main/java/org/fury_phoenix/mixinAp/annotation/ClientMixinValidator.java index 70ddb752..274f69c2 100644 --- a/annotation-processor/src/main/java/org/fury_phoenix/mixinAp/annotation/ClientMixinValidator.java +++ b/annotation-processor/src/main/java/org/fury_phoenix/mixinAp/annotation/ClientMixinValidator.java @@ -22,11 +22,13 @@ import javax.tools.Diagnostic; import net.fabricmc.api.Environment; import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.embeddedt.modernfix.annotation.IgnoreMixin; import org.fury_phoenix.mixinAp.util.TypedAccessorMap; import org.spongepowered.asm.mixin.Mixin; import static com.google.auto.common.AnnotationMirrors.getAnnotationValue; import static java.util.AbstractMap.SimpleImmutableEntry; +import static java.util.function.Predicate.not; public class ClientMixinValidator { @@ -80,7 +82,8 @@ public class ClientMixinValidator { } public boolean targetsClient(TypeElement annotatedMixinClass) { - return targetsClient(getTargets(annotatedMixinClass)); + return targetsClient(getTargets(annotatedMixinClass)) && + !isIgnored(annotatedMixinClass); } private boolean targetsClient(Collection classTargets) { @@ -122,6 +125,15 @@ public class ClientMixinValidator { return false; } + private boolean isIgnored(TypeElement te) { + if(te.getAnnotation(IgnoreMixin.class) != null) { + messager.printMessage(Diagnostic.Kind.WARNING, + toSourceString(te.toString()) + " is ignored!"); + return true; + } + return false; + } + private boolean warn(Object o) { messager.printMessage(Diagnostic.Kind.WARNING, toSourceString(o.toString()) + " can't be loaded, so it is skipped!"); diff --git a/annotations/build.gradle b/annotations/build.gradle index 55eb0c78..5271e5b3 100644 --- a/annotations/build.gradle +++ b/annotations/build.gradle @@ -3,4 +3,4 @@ plugins { id 'java-library' } -version = '1.0.0' +version = '1.1.0' diff --git a/annotations/src/main/java/org/embeddedt/modernfix/annotation/IgnoreMixin.java b/annotations/src/main/java/org/embeddedt/modernfix/annotation/IgnoreMixin.java new file mode 100644 index 00000000..00ae1fb7 --- /dev/null +++ b/annotations/src/main/java/org/embeddedt/modernfix/annotation/IgnoreMixin.java @@ -0,0 +1,11 @@ +package org.embeddedt.modernfix.annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface IgnoreMixin { +} + diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderAccess.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderAccess.java index f9750aed..5f24fa1c 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderAccess.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderAccess.java @@ -1,12 +1,12 @@ package org.embeddedt.modernfix.forge.mixin.perf.async_locator; import net.minecraft.world.entity.projectile.EyeOfEnder; -import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.embeddedt.modernfix.annotation.IgnoreMixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(EyeOfEnder.class) -@ClientOnlyMixin +@IgnoreMixin public interface EyeOfEnderAccess { @Accessor void setLife(int life); diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderMixin.java index 8c29370a..7b1463f8 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/async_locator/EyeOfEnderMixin.java @@ -1,7 +1,7 @@ package org.embeddedt.modernfix.forge.mixin.perf.async_locator; import net.minecraft.world.entity.projectile.EyeOfEnder; -import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.embeddedt.modernfix.annotation.IgnoreMixin; import org.embeddedt.modernfix.forge.structure.logic.EyeOfEnderData; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(EyeOfEnder.class) -@ClientOnlyMixin +@IgnoreMixin public class EyeOfEnderMixin implements EyeOfEnderData { private boolean locateTaskOngoing = false;