From e1e153572defa6f8cea0d473b2f4197184df1cd0 Mon Sep 17 00:00:00 2001 From: ChanceSD <5256215+ChanceSD@users.noreply.github.com> Date: Sat, 28 Dec 2024 03:04:21 +0000 Subject: [PATCH] Fix for MC 1.21.3 --- build.gradle | 2 +- duels-plugin/build.gradle | 10 +++---- .../java/me/realized/duels/util/EnumUtil.java | 30 +++++++++++++++++-- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 5514b93f..875e7df0 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { allprojects { group 'me.realized' - version '3.5.3' + version '3.5.4' } subprojects { diff --git a/duels-plugin/build.gradle b/duels-plugin/build.gradle index a292f1e9..045167c1 100644 --- a/duels-plugin/build.gradle +++ b/duels-plugin/build.gradle @@ -15,11 +15,11 @@ processResources { dependencies { compileOnly 'org.jetbrains:annotations-java5:22.0.0' - compileOnly 'org.projectlombok:lombok:1.18.22' - annotationProcessor 'org.projectlombok:lombok:1.18.22' + compileOnly 'org.projectlombok:lombok:1.18.36' + annotationProcessor 'org.projectlombok:lombok:1.18.36' implementation 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT' implementation 'com.mojang:authlib:1.5.21' - implementation 'me.clip:placeholderapi:2.11.1' + implementation 'me.clip:placeholderapi:2.11.6' implementation 'com.SirBlobman.combatlogx:CombatLogX-API:10.0.0.0-SNAPSHOT' implementation ('net.essentialsx:EssentialsX:2.19.2') { transitive = false @@ -42,7 +42,7 @@ dependencies { implementation project(':duels-worldguard') implementation project(':duels-worldguard-v6') implementation project(':duels-worldguard-v7') - implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.1' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2' } shadowJar { @@ -60,7 +60,7 @@ shadowJar { } final String group = project.group.toString() + "." + parent.name.toLowerCase() + ".shaded." - relocate 'com.fasterxml.jackson.core', group + 'jackson-core' + relocate 'com.fasterxml.jackson', group + 'jackson' } // To build Duels plugin jar, run './gradlew clean build'. diff --git a/duels-plugin/src/main/java/me/realized/duels/util/EnumUtil.java b/duels-plugin/src/main/java/me/realized/duels/util/EnumUtil.java index 5b6f338c..51c9b042 100644 --- a/duels-plugin/src/main/java/me/realized/duels/util/EnumUtil.java +++ b/duels-plugin/src/main/java/me/realized/duels/util/EnumUtil.java @@ -1,12 +1,38 @@ package me.realized.duels.util; +import java.lang.reflect.Field; import java.util.Arrays; public final class EnumUtil { private EnumUtil() {} - public static > E getByName(final String name, Class clazz) { - return clazz.cast(Arrays.stream(clazz.getEnumConstants()).filter(type -> type.name().equalsIgnoreCase(name)).findFirst().orElse(null)); + public static E getByName(final String name, final Class clazz) { + if (clazz == null) { + throw new IllegalArgumentException("Class cannot be null"); + } + + // Handle enums + if (clazz.isEnum()) { + return Arrays.stream(clazz.getEnumConstants()) + .filter(type -> type.toString().equalsIgnoreCase(name)) + .findFirst() + .orElse(null); + } + + // Handle static classes with public static fields + try { + final Field[] fields = clazz.getDeclaredFields(); + for (final Field field : fields) { + if (field.getType() == clazz && field.getName().equalsIgnoreCase(name)) { + return (E) field.get(null); // Get the static field value + } + } + } catch (final IllegalAccessException e) { + throw new RuntimeException("Failed to access static field in " + clazz.getName(), e); + } + + // No match found + return null; } }