From ec00a8fd3223722c318912034dec87e24b6ec9ff Mon Sep 17 00:00:00 2001 From: Alexandra-Myers <78748498+Alexandra-Myers@users.noreply.github.com> Date: Sun, 26 Jan 2025 15:00:51 -0500 Subject: [PATCH 1/4] Update MixinPlugin.java --- .../common/mixinhelper/MixinPlugin.java | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java index 28a5c27..dcba016 100644 --- a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java +++ b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java @@ -59,22 +59,16 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { throw new RuntimeException(e); } - if(minecraftVersions.size() == 2) { - String mcVer1 = minecraftVersions.get(0); - String mcVer2 = minecraftVersions.get(1); - - Iterator iterator = versions.iterator(); - // NOTE: "@MinecraftVersion(minecraft = {">=1.21", "<=1.21.5"})" would be correct syntax for this (example). - if(mcVer1.contains(">") && mcVer2.contains("<")) { - return iterator.next().test(gameVersion) && iterator.next().test(gameVersion); - } - } + return testVersions(versions, gameVersion, false); + } + public boolean testVersions(Set versions, Version gameVersion, boolean forceAll) { for(VersionPredicate minecraftVersion : versions) { - if (minecraftVersion.test(gameVersion)) return true; + boolean matches = minecraftVersion.test(gameVersion); + if (matches != forceAll) return matches; } - return false; + return forceAll; } @Override @@ -96,4 +90,4 @@ public void preApply(String targetClassName, ClassNode targetClass, String mixin public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { } -} \ No newline at end of file +} From 2ca15bd39aba8ea14bc27c50b1db2f29987cd8ee Mon Sep 17 00:00:00 2001 From: Alexandra-Myers <78748498+Alexandra-Myers@users.noreply.github.com> Date: Sun, 26 Jan 2025 15:04:20 -0500 Subject: [PATCH 2/4] Update MinecraftVersion.java --- .../codelib/common/mixinhelper/annotation/MinecraftVersion.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/notcoded/codelib/common/mixinhelper/annotation/MinecraftVersion.java b/src/main/java/net/notcoded/codelib/common/mixinhelper/annotation/MinecraftVersion.java index 6237d8a..b75c12d 100644 --- a/src/main/java/net/notcoded/codelib/common/mixinhelper/annotation/MinecraftVersion.java +++ b/src/main/java/net/notcoded/codelib/common/mixinhelper/annotation/MinecraftVersion.java @@ -11,4 +11,5 @@ @Retention(RetentionPolicy.RUNTIME) public @interface MinecraftVersion { String[] minecraft() default ""; + boolean enforceAll() default true; } From 5730e33aa058502ef950b0fcec1f616098d9cd82 Mon Sep 17 00:00:00 2001 From: Alexandra-Myers <78748498+Alexandra-Myers@users.noreply.github.com> Date: Sun, 26 Jan 2025 20:13:05 +0000 Subject: [PATCH 3/4] Fix this abomination --- .../common/mixinhelper/MixinPlugin.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java index dcba016..4c74198 100644 --- a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java +++ b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java @@ -36,19 +36,15 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { } List minecraftVersions = new ArrayList<>(); + boolean enforceAllPredicates = true; - for(Annotation annotation : clazz.getAnnotations()) { // this is cursed but it somehow works - if(annotation.annotationType().descriptorString().equals(MinecraftVersion.class.descriptorString())) { - try { - minecraftVersions = Arrays.asList((String[]) annotation.annotationType().getMethod("minecraft").invoke(annotation)); - break; - } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { - throw new RuntimeException("Failed to get the value of MinecraftVersion annotation!"); - } - } + if (clazz.isAnnotationPresent(MinecraftVersion.class)) { + MinecraftVersion minecraftVersion = clazz.getAnnotation(MinecraftVersion.class); + minecraftVersions = Arrays.asList(minecraftVersion.minecraft()); + enforceAllPredicates = minecraftVersion.enforceAll(); } - if(minecraftVersions.isEmpty()) return true; + if (minecraftVersions.isEmpty()) return true; Version gameVersion = FabricLoader.getInstance().getModContainer("minecraft").get().getMetadata().getVersion(); // 1.21 Set versions; @@ -59,7 +55,7 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { throw new RuntimeException(e); } - return testVersions(versions, gameVersion, false); + return testVersions(versions, gameVersion, enforceAllPredicates); } public boolean testVersions(Set versions, Version gameVersion, boolean forceAll) { From 00e0de16209586cb8d391df888eb1f50e794d08d Mon Sep 17 00:00:00 2001 From: Alexandra-Myers <78748498+Alexandra-Myers@users.noreply.github.com> Date: Sun, 26 Jan 2025 20:36:33 +0000 Subject: [PATCH 4/4] mayhaps? --- .../net/notcoded/codelib/common/mixinhelper/MixinPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java index 4c74198..14354ef 100644 --- a/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java +++ b/src/main/java/net/notcoded/codelib/common/mixinhelper/MixinPlugin.java @@ -38,8 +38,8 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { List minecraftVersions = new ArrayList<>(); boolean enforceAllPredicates = true; - if (clazz.isAnnotationPresent(MinecraftVersion.class)) { - MinecraftVersion minecraftVersion = clazz.getAnnotation(MinecraftVersion.class); + MinecraftVersion minecraftVersion = clazz.getAnnotation(MinecraftVersion.class); + if (minecraftVersion != null) { minecraftVersions = Arrays.asList(minecraftVersion.minecraft()); enforceAllPredicates = minecraftVersion.enforceAll(); }