mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-17 12:15:10 +01:00
Clean up reflection, add resource pack image and reload listener
This commit is contained in:
36
src/main/java/com/tterrag/blur/util/ReflectionHelper.java
Normal file
36
src/main/java/com/tterrag/blur/util/ReflectionHelper.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package com.tterrag.blur.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ReflectionHelper {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getValue(Class<?> cls, Object instance, String...names) {
|
||||
try {
|
||||
return (T) getField(cls, names).get(instance);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static Field getField(Class<?> cls, String... names) {
|
||||
for (String name : names) {
|
||||
Field f = getFieldInternal(cls, name);
|
||||
if (f != null) {
|
||||
return f;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("Could not find any of fields " + Arrays.toString(names) + " on class " + cls);
|
||||
}
|
||||
|
||||
private static Field getFieldInternal(Class<?> cls, String name) {
|
||||
try {
|
||||
Field f = cls.getDeclaredField(name);
|
||||
f.setAccessible(true);
|
||||
return f;
|
||||
} catch (NoSuchFieldException | SecurityException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user