Add annotation to ignore mixins

This commit is contained in:
Fury_Phoenix 2023-12-23 15:54:55 -08:00
parent 0836ac6eef
commit 65ecdd6231
No known key found for this signature in database
GPG Key ID: 0595F98084987DB8
5 changed files with 29 additions and 6 deletions

View File

@ -22,11 +22,13 @@ import javax.tools.Diagnostic;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import org.embeddedt.modernfix.annotation.ClientOnlyMixin; import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
import org.embeddedt.modernfix.annotation.IgnoreMixin;
import org.fury_phoenix.mixinAp.util.TypedAccessorMap; import org.fury_phoenix.mixinAp.util.TypedAccessorMap;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import static com.google.auto.common.AnnotationMirrors.getAnnotationValue; import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
import static java.util.AbstractMap.SimpleImmutableEntry; import static java.util.AbstractMap.SimpleImmutableEntry;
import static java.util.function.Predicate.not;
public class ClientMixinValidator { public class ClientMixinValidator {
@ -80,7 +82,8 @@ public class ClientMixinValidator {
} }
public boolean targetsClient(TypeElement annotatedMixinClass) { public boolean targetsClient(TypeElement annotatedMixinClass) {
return targetsClient(getTargets(annotatedMixinClass)); return targetsClient(getTargets(annotatedMixinClass)) &&
!isIgnored(annotatedMixinClass);
} }
private boolean targetsClient(Collection<?> classTargets) { private boolean targetsClient(Collection<?> classTargets) {
@ -122,6 +125,15 @@ public class ClientMixinValidator {
return false; 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) { private boolean warn(Object o) {
messager.printMessage(Diagnostic.Kind.WARNING, messager.printMessage(Diagnostic.Kind.WARNING,
toSourceString(o.toString()) + " can't be loaded, so it is skipped!"); toSourceString(o.toString()) + " can't be loaded, so it is skipped!");

View File

@ -3,4 +3,4 @@ plugins {
id 'java-library' id 'java-library'
} }
version = '1.0.0' version = '1.1.0'

View File

@ -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 {
}

View File

@ -1,12 +1,12 @@
package org.embeddedt.modernfix.forge.mixin.perf.async_locator; package org.embeddedt.modernfix.forge.mixin.perf.async_locator;
import net.minecraft.world.entity.projectile.EyeOfEnder; 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.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(EyeOfEnder.class) @Mixin(EyeOfEnder.class)
@ClientOnlyMixin @IgnoreMixin
public interface EyeOfEnderAccess { public interface EyeOfEnderAccess {
@Accessor @Accessor
void setLife(int life); void setLife(int life);

View File

@ -1,7 +1,7 @@
package org.embeddedt.modernfix.forge.mixin.perf.async_locator; package org.embeddedt.modernfix.forge.mixin.perf.async_locator;
import net.minecraft.world.entity.projectile.EyeOfEnder; 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.embeddedt.modernfix.forge.structure.logic.EyeOfEnderData;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; 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; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(EyeOfEnder.class) @Mixin(EyeOfEnder.class)
@ClientOnlyMixin @IgnoreMixin
public class EyeOfEnderMixin implements EyeOfEnderData { public class EyeOfEnderMixin implements EyeOfEnderData {
private boolean locateTaskOngoing = false; private boolean locateTaskOngoing = false;