+ fix tlocale

+ fix tinject
+ fix tschedule
+ update ref
This commit is contained in:
坏黑
2019-11-04 15:56:04 +08:00
parent 1e55b6be29
commit 7154cdfe65
14 changed files with 216 additions and 113 deletions

View File

@@ -52,7 +52,7 @@ public class TInjectHelper {
}
}
// Nothing
else if (instance.isEmpty()) {
if (instance.isEmpty()) {
TLogger.getGlobalLogger().error(field.getName() + " is not a static field. (" + pluginClass.getName() + ")");
}
return instance;
@@ -60,22 +60,22 @@ public class TInjectHelper {
public static List<Object> getInstance(Method method, Class<?> pluginClass, Plugin plugin) {
List<Object> instance = Lists.newArrayList();
// Object
if (CompatKotlin.getInstance(pluginClass) != null) {
instance.add(CompatKotlin.getInstance(pluginClass));
}
// Companion Object
else if (CompatKotlin.isCompanion(pluginClass)) {
instance.add(CompatKotlin.getCompanion(pluginClass));
}
// Static
else if (Modifier.isStatic(method.getModifiers())) {
if (Modifier.isStatic(method.getModifiers())) {
instance.add(null);
}
// No Static
else if (!Modifier.isStatic(method.getModifiers())) {
// Object
if (CompatKotlin.getInstance(pluginClass) != null) {
instance.add(CompatKotlin.getInstance(pluginClass));
}
// Companion Object
else if (CompatKotlin.isCompanion(pluginClass)) {
instance.add(CompatKotlin.getCompanion(pluginClass));
}
// Main
if (pluginClass.equals(plugin.getClass())) {
else if (pluginClass.equals(plugin.getClass())) {
instance.add(plugin);
}
// TInject
@@ -84,7 +84,7 @@ public class TInjectHelper {
}
}
// Nothing
else if (instance.isEmpty()) {
if (instance.isEmpty()) {
TLogger.getGlobalLogger().error(method.getName() + " is not a static method. (" + pluginClass.getName() + ")");
}
return instance;

View File

@@ -16,7 +16,6 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;
/**
@@ -59,17 +58,19 @@ public class TInjectLoader implements TabooLibLoader.Loader {
field.set(instance, config);
if (!args.reload().isEmpty()) {
try {
Method declaredMethod = pluginClass.getDeclaredMethod(args.reload());
declaredMethod.setAccessible(true);
config.listener(() -> {
try {
declaredMethod.invoke(instance);
} catch (Throwable t) {
t.printStackTrace();
Ref.getDeclaredMethods(pluginClass).forEach(method -> {
if (method.getName().equals(args.reload())) {
method.setAccessible(true);
config.listener(() -> {
try {
method.invoke(instance);
} catch (Throwable t) {
t.printStackTrace();
}
});
TabooLibLoader.runTask(config::runListener);
}
});
TabooLibLoader.runTask(config::runListener);
} catch (NoSuchMethodException ignore) {
} catch (Throwable t) {
t.printStackTrace();
}

View File

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import io.izzel.taboolib.TabooLib;
import io.izzel.taboolib.TabooLibLoader;
import io.izzel.taboolib.util.Ref;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
@@ -63,7 +64,12 @@ public class TScheduleLoader implements TabooLibLoader.Loader {
try {
method.invoke(instance);
} catch (Throwable t) {
t.printStackTrace();
try {
method.invoke(Ref.UNSAFE.allocateInstance(pluginClass));
} catch (Throwable t2) {
t.printStackTrace();
t2.printStackTrace();
}
}
}
})));

View File

@@ -15,6 +15,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -32,80 +33,88 @@ public class TLocale {
return Arrays.stream(obj).map(String::valueOf).toArray(String[]::new);
}
static void sendTo(String path, CommandSender sender, String[] args, Class<?> callerClass) {
TLocaleLoader.sendTo(Ref.getCallerPlugin(callerClass), path, sender, args);
static void sendTo0(Collection<? extends CommandSender> sender, String path, String... args) {
sender.forEach(i -> TLocaleLoader.sendTo(Ref.getCallerPlugin(), path, i, args));
}
static String asString(String path, Class<?> callerClass, String... args) {
return TLocaleLoader.asString(Ref.getCallerPlugin(callerClass), path, args);
static String asString0(String path, String... args) {
try {
return TLocaleLoader.asString(Ref.getCallerPlugin(), path, args);
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return "§4Error: " + path;
}
}
static List<String> asStringList(String path, Class<?> callerClass, String... args) {
return TLocaleLoader.asStringList(Ref.getCallerPlugin(callerClass), path, args);
static List<String> asStringList0(String path, String... args) {
try {
return TLocaleLoader.asStringList(Ref.getCallerPlugin(), path, args);
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return Collections.singletonList("§4Error: " + path);
}
}
public static void sendTo(CommandSender sender, String path, Object... args) {
Ref.getCallerClass(3).ifPresent(clazz -> sendTo(path, sender, toArray(args), clazz));
sendTo0(Collections.singletonList(sender), path, toArray(args));
}
public static void sendTo(CommandSender sender, String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> sendTo(path, sender, args, clazz));
sendTo0(Collections.singletonList(sender), path, args);
}
public static void sendTo(CommandSender sender, String path) {
sendTo0(Collections.singletonList(sender), path);
}
public static void sendToConsole(String path, Object... args) {
Ref.getCallerClass(3).ifPresent(clazz -> sendTo(path, Bukkit.getConsoleSender(), toArray(args), clazz));
sendTo0(Collections.singletonList(Bukkit.getConsoleSender()), path, toArray(args));
}
public static void sendToConsole(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> sendTo(path, Bukkit.getConsoleSender(), args, clazz));
sendTo0(Collections.singletonList(Bukkit.getConsoleSender()), path, args);
}
public static void sendToConsole(String path) {
sendTo0(Collections.singletonList(Bukkit.getConsoleSender()), path);
}
public static void broadcast(String path, Object... args) {
Ref.getCallerClass(3).ifPresent(clazz -> Bukkit.getOnlinePlayers().forEach(player -> sendTo(path, player, toArray(args), clazz)));
sendTo0(Bukkit.getOnlinePlayers(), path, toArray(args));
}
public static void broadcast(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> Bukkit.getOnlinePlayers().forEach(player -> sendTo(path, player, args, clazz)));
sendTo0(Bukkit.getOnlinePlayers(), path, args);
}
public static void broadcast(String path) {
sendTo0(Bukkit.getOnlinePlayers(), path);
}
public static String asString(String path, Object... args) {
try {
return asString(path, Ref.getCallerClass(3).orElse(TabooLib.class), toArray(args));
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return "§4<" + path + "§4>";
}
return asString0(path, toArray(args));
}
public static String asString(String path, String... args) {
try {
return asString(path, Ref.getCallerClass(3).orElse(TabooLib.class), args);
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return "§4<" + path + "§4>";
}
return asString0(path, args);
}
public static String asString(String path) {
return asString0(path);
}
public static List<String> asStringList(String path, Object... args) {
try {
return asStringList(path, Ref.getCallerClass(3).orElse(TabooLib.class), toArray(args));
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return Collections.singletonList("§4<" + path + "§4>");
}
return asStringList0(path, toArray(args));
}
public static List<String> asStringList(String path, String... args) {
try {
return asStringList(path, Ref.getCallerClass(3).orElse(TabooLib.class), args);
} catch (Exception e) {
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("FETCH-LOCALE-ERROR"), path));
TabooLib.getLogger().error(Strings.replaceWithOrder(TabooLib.getInst().getInternal().getString("LOCALE-ERROR-REASON"), e.getMessage()));
return Collections.singletonList("§4<" + path + "§4>");
}
return asStringList0(path, args);
}
public static List<String> asStringList(String path) {
return asStringList0(path);
}
public static void reload() {
@@ -176,31 +185,31 @@ public class TLocale {
public static final class Logger extends TLocale {
public static void info(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).info(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).info(locale));
}
public static void warn(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).warn(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).warn(locale));
}
public static void error(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).error(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).error(locale));
}
public static void fatal(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).fatal(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).fatal(locale));
}
public static void fine(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).fine(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).fine(locale));
}
public static void finest(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).finest(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).finest(locale));
}
public static void verbose(String path, String... args) {
Ref.getCallerClass(3).ifPresent(clazz -> asStringList(path, clazz, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin(clazz)).verbose(locale)));
asStringList(path, args).forEach(locale -> TLoggerManager.getLogger(Ref.getCallerPlugin()).verbose(locale));
}
}
}

View File

@@ -51,7 +51,7 @@ class TLocaleInstance {
public void sendTo(String path, CommandSender sender, String... args) {
try {
map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(path))).forEach(tSender -> {
map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(plugin, path))).forEach(tSender -> {
if (Bukkit.isPrimaryThread() || Objects.equals(System.getProperty("tlib.forceAsync"), "true")) {
tSender.sendTo(sender, args);
} else {
@@ -65,11 +65,11 @@ class TLocaleInstance {
}
public String asString(String path, String... args) {
return map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(path))).get(0).asString(args);
return map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(plugin, path))).get(0).asString(args);
}
public List<String> asStringList(String path, String... args) {
return map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(path))).get(0).asStringList(args);
return map.getOrDefault(path, ImmutableList.of(TLocaleSerialize.getEmpty(plugin, path))).get(0).asStringList(args);
}
private static boolean isListString(List list) {

View File

@@ -1,7 +1,10 @@
package io.izzel.taboolib.module.locale;
import io.izzel.taboolib.TabooLib;
import io.izzel.taboolib.TabooLibAPI;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.plugin.Plugin;
import java.util.Collections;
import java.util.List;
@@ -47,7 +50,7 @@ public abstract class TLocaleSerialize implements TLocaleSender, ConfigurationSe
};
}
static TLocaleSerialize getEmpty(String path) {
static TLocaleSerialize getEmpty(Plugin plugin, String path) {
return new TLocaleSerialize() {
@Override
@@ -57,17 +60,29 @@ public abstract class TLocaleSerialize implements TLocaleSender, ConfigurationSe
@Override
public void sendTo(CommandSender sender, String... args) {
sender.sendMessage("§8<" + path + "§8>");
if (TabooLibAPI.isDependTabooLib(plugin)) {
TLocaleLoader.sendTo(TabooLib.getPlugin(), path, sender, args);
} else {
sender.sendMessage("§8Notfound: " + path);
}
}
@Override
public String asString(String... args) {
return "§8<" + path + "§8>";
if (TabooLibAPI.isDependTabooLib(plugin)) {
return TLocaleLoader.asString(TabooLib.getPlugin(), path, args);
} else {
return "§8Notfound: " + path;
}
}
@Override
public List<String> asStringList(String... args) {
return Collections.singletonList("§4<" + path + "§4>");
if (TabooLibAPI.isDependTabooLib(plugin)) {
return TLocaleLoader.asStringList(TabooLib.getPlugin(), path, args);
} else {
return Collections.singletonList("§8Notfound: " + path);
}
}
};
}

View File

@@ -33,11 +33,11 @@ public class TLogger {
}
public static TLogger getUnformatted(Plugin plugin) {
return new TLogger("§8[§3§l{0}§8][§r{1}§8] §f{2}", plugin, TLogger.FINE);
return new TLogger("§8[§3§l{0}§8][§r{1}§8] §f{2}", plugin, TLogger.VERBOSE);
}
public static TLogger getUnformatted(String name) {
return new TLogger("§8[§3§l{0}§8][§r{1}§8] §f{2}", name, TLogger.FINE);
return new TLogger("§8[§3§l{0}§8][§r{1}§8] §f{2}", name, TLogger.VERBOSE);
}
public String getPattern() {

View File

@@ -2,23 +2,14 @@ package io.izzel.taboolib.module.locale.logger;
import org.bukkit.plugin.Plugin;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class TLoggerManager {
private static final Map<Plugin, TLogger> map = new HashMap<>();
public static void setDefaultLogger(Plugin plugin, TLogger logger) {
map.put(plugin, logger);
}
private static final Map<String, TLogger> map = new ConcurrentHashMap<>();
public static TLogger getLogger(Plugin plugin) {
TLogger logger = map.get(plugin);
if (logger == null) {
logger = TLogger.getUnformatted(plugin);
map.put(plugin, logger);
}
return logger;
return map.computeIfAbsent(plugin.getName(), n -> TLogger.getUnformatted(plugin));
}
}