diff --git a/build.gradle b/build.gradle index 3b8fe57..3aa76cf 100644 --- a/build.gradle +++ b/build.gradle @@ -44,9 +44,6 @@ shadowJar { // 免得 MANIFEST.MF 里面刷一堆 lib 难看 taskActions.removeIf { it.actionClassName.contains 'configureShadowTask' } - // 免得 MANIFEST.MF 里面刷一堆 lib 难看 - taskActions.removeIf { it.actionClassName.contains 'configureShadowTask' } - dependencies { it.include it.dependency('org.apache.commons:.*') it.include it.dependency('org.ow2.asm:.*') diff --git a/src/main/scala/io/izzel/taboolib/module/lite/SimpleReflection.java b/src/main/scala/io/izzel/taboolib/module/lite/SimpleReflection.java index 6845ede..4c9a714 100644 --- a/src/main/scala/io/izzel/taboolib/module/lite/SimpleReflection.java +++ b/src/main/scala/io/izzel/taboolib/module/lite/SimpleReflection.java @@ -1,7 +1,6 @@ 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; @@ -11,7 +10,6 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Arrays; import java.util.Map; -import java.util.Set; /** * @Author 坏黑 @@ -20,7 +18,6 @@ import java.util.Set; public class SimpleReflection { private static Map> fieldCached = Maps.newHashMap(); - private static Set fieldLogger = Sets.newHashSet(); public static boolean isExists(Class nmsClass) { return fieldCached.containsKey(nmsClass.getName()); @@ -69,15 +66,11 @@ public class SimpleReflection { public static void setFieldValue(Class nmsClass, Object instance, String fieldName, Object value) { Map fields = fieldCached.get(nmsClass.getName()); if (fields == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName()); } Field field = fields.get(fieldName); if (value == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + return; } try { field.set(instance, value); @@ -89,15 +82,11 @@ public class SimpleReflection { public static Object getFieldValue(Class nmsClass, Object instance, String fieldName) { Map fields = fieldCached.get(nmsClass.getName()); if (fields == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName()); } Field field = fields.get(fieldName); if (field == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + return null; } try { return field.get(instance); @@ -110,15 +99,11 @@ public class SimpleReflection { public static T getFieldValue(Class nmsClass, Object instance, String fieldName, T def) { Map fields = fieldCached.get(nmsClass.getName()); if (fields == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName()); } Field field = fields.get(fieldName); if (field == null) { - if (fieldLogger.add(nmsClass.getName() + "$" + fieldName)) { - TLogger.getGlobalLogger().error("Field Not Found: " + nmsClass.getName() + "$" + fieldName); - } + return null; } try { return (T) field.get(instance); @@ -128,7 +113,7 @@ public class SimpleReflection { return def; } - public static Class getListType(Field field) { + public static Class getListType(Field field) { Type genericType = field.getGenericType(); try { if (ParameterizedType.class.isAssignableFrom(genericType.getClass())) { @@ -142,7 +127,7 @@ public class SimpleReflection { return null; } - public static Class[] getMapType(Field field) { + public static Class[] getMapType(Field field) { Class[] mapType = new Class[2]; try { Type genericType = field.getGenericType(); @@ -154,6 +139,6 @@ public class SimpleReflection { } catch (Throwable t) { t.printStackTrace(); } - return mapType[1] == null ? null : mapType ; + return mapType[1] == null ? null : mapType; } } diff --git a/src/main/scala/io/izzel/taboolib/module/locale/type/TLocaleJson.java b/src/main/scala/io/izzel/taboolib/module/locale/type/TLocaleJson.java index 6eb160b..fb36c51 100644 --- a/src/main/scala/io/izzel/taboolib/module/locale/type/TLocaleJson.java +++ b/src/main/scala/io/izzel/taboolib/module/locale/type/TLocaleJson.java @@ -4,9 +4,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import io.izzel.taboolib.TabooLib; +import io.izzel.taboolib.module.compat.PlaceholderHook; import io.izzel.taboolib.module.locale.TLocale; import io.izzel.taboolib.module.locale.TLocaleSerialize; -import io.izzel.taboolib.module.compat.PlaceholderHook; import io.izzel.taboolib.module.tellraw.TellrawJson; import io.izzel.taboolib.util.Strings; import io.izzel.taboolib.util.Variables; @@ -77,6 +77,8 @@ public class TLocaleJson extends TLocaleSerialize { Arrays.stream(component).forEach(baseComponent -> baseComponent.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, String.valueOf(value)))); } else if (key.equalsIgnoreCase("command") || "commands".equalsIgnoreCase(key)) { Arrays.stream(component).forEach(baseComponent -> baseComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.valueOf(value)))); + } else if (key.equalsIgnoreCase("url")) { + Arrays.stream(component).forEach(baseComponent -> baseComponent.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, String.valueOf(value)))); } else if (key.equalsIgnoreCase("hover")) { Arrays.stream(component).forEach(baseComponent -> baseComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(TLocale.Translate.setColored(String.valueOf(value))).create()))); } diff --git a/src/main/scala/io/izzel/taboolib/util/lite/Catchers.java b/src/main/scala/io/izzel/taboolib/util/lite/Catchers.java index b6af0c4..74094a8 100644 --- a/src/main/scala/io/izzel/taboolib/util/lite/Catchers.java +++ b/src/main/scala/io/izzel/taboolib/util/lite/Catchers.java @@ -39,13 +39,13 @@ public class Catchers implements Listener { e.setCancelled(true); // 1.14 supported. Bukkit.getScheduler().runTask(TabooLib.getPlugin(), () -> { + Catcher catcher = playerdata.get(e.getPlayer().getName()).getFirst(); // 退出 - if (e.getMessage().equalsIgnoreCase("quit()")) { + if (e.getMessage().split(" ")[0].matches(catcher.quit())) { playerdata.get(e.getPlayer().getName()).removeFirst().cancel(); } // 默认 else { - Catcher catcher = playerdata.get(e.getPlayer().getName()).getFirst(); // 如果终止引导 if (!catcher.after(e.getMessage())) { playerdata.get(e.getPlayer().getName()).removeFirst(); @@ -59,6 +59,10 @@ public class Catchers implements Listener { public interface Catcher { + default String quit() { + return "(?i)quit|cancel|exit"; + } + default Catcher before() { return this; } @@ -67,5 +71,6 @@ public class Catchers implements Listener { default void cancel() { } + } }