This commit is contained in:
sky
2020-01-20 16:20:30 +08:00
parent 098970b05d
commit 8f2b0f419e
5 changed files with 71 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
package io.izzel.taboolib.module.lite;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import io.izzel.taboolib.TabooLibAPI;
import io.izzel.taboolib.module.locale.logger.TLogger;
import io.izzel.taboolib.util.Ref;
@@ -10,6 +11,7 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
/**
* @Author 坏黑
@@ -18,6 +20,7 @@ import java.util.Map;
public class SimpleReflection {
private static Map<String, Map<String, Field>> fieldCached = Maps.newHashMap();
private static Set<String> fieldLogger = Sets.newHashSet();
public static boolean isExists(Class<?> nmsClass) {
return fieldCached.containsKey(nmsClass.getName());
@@ -66,11 +69,15 @@ public class SimpleReflection {
public static void setFieldValue(Class<?> nmsClass, Object instance, String fieldName, Object value) {
Map<String, Field> fields = fieldCached.get(nmsClass.getName());
if (fields == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
Field field = fields.get(fieldName);
if (value == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
try {
field.set(instance, value);
@@ -82,11 +89,15 @@ public class SimpleReflection {
public static Object getFieldValue(Class<?> nmsClass, Object instance, String fieldName) {
Map<String, Field> fields = fieldCached.get(nmsClass.getName());
if (fields == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
Field field = fields.get(fieldName);
if (field == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
try {
return field.get(instance);
@@ -99,11 +110,15 @@ public class SimpleReflection {
public static <T> T getFieldValue(Class<?> nmsClass, Object instance, String fieldName, T def) {
Map<String, Field> fields = fieldCached.get(nmsClass.getName());
if (fields == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
Field field = fields.get(fieldName);
if (field == null) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName());
if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) {
TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName);
}
}
try {
return (T) field.get(instance);