史诗级大饼,请叫我黑饼王。
This commit is contained in:
@@ -22,9 +22,11 @@ import me.skymc.taboolib.economy.EcoUtils;
|
||||
import me.skymc.taboolib.entity.EntityUtils;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.fileutils.TLogs;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.inventory.speciaitem.SpecialItem;
|
||||
import me.skymc.taboolib.itagapi.TagDataHandler;
|
||||
import me.skymc.taboolib.javascript.ScriptHandler;
|
||||
import me.skymc.taboolib.javashell.JavaShell;
|
||||
import me.skymc.taboolib.listener.*;
|
||||
import me.skymc.taboolib.message.ChatCatcher;
|
||||
@@ -36,6 +38,7 @@ import me.skymc.taboolib.permission.PermissionUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import me.skymc.taboolib.sign.SignUtils;
|
||||
import me.skymc.taboolib.skript.SkriptHandler;
|
||||
import me.skymc.taboolib.socket.TabooLibClient;
|
||||
import me.skymc.taboolib.string.StringUtils;
|
||||
import me.skymc.taboolib.string.language2.Language2;
|
||||
import me.skymc.taboolib.support.SupportPlaceholder;
|
||||
@@ -61,11 +64,12 @@ import java.net.InetAddress;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
*/
|
||||
public class Main extends JavaPlugin implements Listener {
|
||||
public class Main extends JavaPlugin {
|
||||
|
||||
public Main() {
|
||||
inst = this;
|
||||
@@ -80,7 +84,6 @@ public class Main extends JavaPlugin implements Listener {
|
||||
private static File playerDataFolder;
|
||||
private static File serverDataFolder;
|
||||
private static StorageType storageType = StorageType.LOCAL;
|
||||
private static MySQLConnection connection = null;
|
||||
private static Language2 exampleLanguage2;
|
||||
private static boolean disable = false;
|
||||
private static boolean started = false;
|
||||
@@ -109,32 +112,23 @@ public class Main extends JavaPlugin implements Listener {
|
||||
@Override
|
||||
public void onLoad() {
|
||||
disable = false;
|
||||
// 载入配置
|
||||
// 载入配置文件
|
||||
saveDefaultConfig();
|
||||
// 载入牛逼玩意儿
|
||||
// 载入牛逼东西
|
||||
TLib.init();
|
||||
TLib.injectPluginManager();
|
||||
// 网络检测
|
||||
testInternet();
|
||||
// 创建文件夹
|
||||
setupDataFolder();
|
||||
// 创建数据库
|
||||
setupDatabase();
|
||||
// 载入离线库文件
|
||||
setupLibraries();
|
||||
// 载入牛逼玩意儿
|
||||
// 载入插件设置
|
||||
TabooLibSettings.setup();
|
||||
// 载入大饼
|
||||
TLib.initPost();
|
||||
// 注册连接池
|
||||
// 载入连接池
|
||||
HikariHandler.init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// 注册命令
|
||||
registerCommands();
|
||||
// 注册监听
|
||||
registerListener();
|
||||
|
||||
// 注册插件配置
|
||||
TabooLibSettings.register();
|
||||
// 载入经济
|
||||
EcoUtils.setupEconomy();
|
||||
// 载入权限
|
||||
@@ -146,32 +140,27 @@ public class Main extends JavaPlugin implements Listener {
|
||||
// 载入周期管理器
|
||||
TimeCycleManager.load();
|
||||
// 启动脚本
|
||||
JavaShell.javaShellSetup();
|
||||
ScriptHandler.inst();
|
||||
// 注册脚本
|
||||
SkriptHandler.register();
|
||||
// 注册头衔
|
||||
TagDataHandler.init(this);
|
||||
// 载入语言文件
|
||||
exampleLanguage2 = new Language2("Language2", this);
|
||||
|
||||
// 启动数据库储存方法
|
||||
if (getStorageType() == StorageType.SQL) {
|
||||
GlobalDataManager.SQLMethod.startSQLMethod();
|
||||
}
|
||||
|
||||
// 载入完成
|
||||
TLocale.Logger.info("NOTIFY.SUCCESS-LOADED", getDescription().getAuthors().toString(), getDescription().getVersion(), String.valueOf(TabooLib.getVersion()));
|
||||
|
||||
// 文件保存
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, DataUtils::saveAllCaches, 20, 20 * 120);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
|
||||
|
||||
// 文件监控
|
||||
TLib.getTLib().getConfigWatcher().addSimpleListener(new File(getDataFolder(), "config.yml"), () -> {
|
||||
reloadConfig();
|
||||
TLocale.Logger.info("CONFIG.RELOAD-SUCCESS", inst.getName(), "config.yml");
|
||||
});
|
||||
|
||||
// 插件联动
|
||||
new BukkitRunnable() {
|
||||
|
||||
@@ -181,14 +170,12 @@ public class Main extends JavaPlugin implements Listener {
|
||||
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||
new SupportPlaceholder(getInst(), "taboolib").hook();
|
||||
}
|
||||
|
||||
// 载入 TLM 接口
|
||||
TLM.getInst();
|
||||
// 载入 SpecialItem 接口
|
||||
SpecialItem.getInst().loadItems();
|
||||
// 载入 TranslateUUID 工具
|
||||
TranslateUUID.init();
|
||||
|
||||
// 面子工程
|
||||
InputStream inputStream = FileUtils.getResource("motd.txt");
|
||||
try {
|
||||
@@ -198,14 +185,12 @@ public class Main extends JavaPlugin implements Listener {
|
||||
}
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
// 本地通讯网络
|
||||
TabooLibClient.init();
|
||||
}
|
||||
}.runTask(this);
|
||||
|
||||
// 更新检测
|
||||
new UpdateTask();
|
||||
// 启动监控
|
||||
new Metrics(this);
|
||||
|
||||
// 启动
|
||||
started = true;
|
||||
}
|
||||
@@ -213,13 +198,11 @@ public class Main extends JavaPlugin implements Listener {
|
||||
@Override
|
||||
public void onDisable() {
|
||||
disable = true;
|
||||
|
||||
// 如果插件尚未启动完成
|
||||
if (!started) {
|
||||
TLocale.Logger.error("NOTIFY.FAIL-DISABLE");
|
||||
return;
|
||||
}
|
||||
|
||||
// 保存数据
|
||||
Bukkit.getOnlinePlayers().forEach(x -> DataUtils.saveOnline(x.getName()));
|
||||
// 结束线程
|
||||
@@ -238,12 +221,12 @@ public class Main extends JavaPlugin implements Listener {
|
||||
TranslateUUID.cancel();
|
||||
// 注销连接池
|
||||
HikariHandler.closeDataSourceForce();
|
||||
|
||||
// 注销监听器
|
||||
TListenerHandler.cancelListeners();
|
||||
// 结束数据库储存方法
|
||||
if (getStorageType() == StorageType.SQL) {
|
||||
GlobalDataManager.SQLMethod.cancelSQLMethod();
|
||||
}
|
||||
|
||||
// 清理数据
|
||||
if (getStorageType() == StorageType.LOCAL && getConfig().getBoolean("DELETE-DATA")) {
|
||||
getPlayerDataFolder().delete();
|
||||
@@ -252,124 +235,14 @@ public class Main extends JavaPlugin implements Listener {
|
||||
if (getStorageType() == StorageType.SQL && getConfig().getBoolean("DELETE-VARIABLE")) {
|
||||
GlobalDataManager.clearInvalidVariables();
|
||||
}
|
||||
|
||||
// 提示信息
|
||||
TLocale.Logger.info("NOTIFY.SUCCESS-DISABLE");
|
||||
|
||||
// 结束连接
|
||||
if (connection != null && connection.isConnection()) {
|
||||
connection.closeConnection();
|
||||
}
|
||||
|
||||
// 卸载牛逼玩意儿
|
||||
TLib.unload();
|
||||
|
||||
// 关闭服务器
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
|
||||
private void testInternet() {
|
||||
try {
|
||||
InetAddress inetAddress = InetAddress.getByName(getConfig().getString("TEST-URL", "aliyun.com"));
|
||||
isInternetOnline = inetAddress.isReachable(10000);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
if (!isInternetOnline() && !isOfflineVersion() && !isLibrariesExists()) {
|
||||
TLocale.Logger.error("TLIB.LOAD-FAIL-OFFLINE", getDescription().getVersion());
|
||||
// 死锁
|
||||
try {
|
||||
Thread.sleep(Long.MAX_VALUE);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setupDataFolder() {
|
||||
playerDataFolder = new File(getConfig().getString("DATAURL.PLAYER-DATA"));
|
||||
if (!playerDataFolder.exists()) {
|
||||
playerDataFolder.mkdirs();
|
||||
}
|
||||
serverDataFolder = new File(getConfig().getString("DATAURL.SERVER-DATA"));
|
||||
if (!serverDataFolder.exists()) {
|
||||
serverDataFolder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
private void setupLibraries() {
|
||||
if (!isOfflineVersion()) {
|
||||
return;
|
||||
}
|
||||
for (Dependency dependency : TDependencyInjector.getDependencies(TLib.getTLib())) {
|
||||
if (dependency.type() == Dependency.Type.LIBRARY && dependency.maven().matches(".*:.*:.*")) {
|
||||
String fileName = String.join("-", dependency.maven().split(":")) + ".jar";
|
||||
File targetFile = FileUtils.file(TLib.getTLib().getLibsFolder(), fileName);
|
||||
InputStream inputStream = FileUtils.getResource("libs/" + fileName);
|
||||
if (!targetFile.exists() && inputStream != null) {
|
||||
FileUtils.inputStreamToFile(inputStream, FileUtils.file(TLib.getTLib().getLibsFolder(), fileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setupDatabase() {
|
||||
DataUtils.addPluginData("TabooLibrary", null);
|
||||
if (getConfig().getBoolean("MYSQL.ENABLE")) {
|
||||
connection = new MySQLConnection(getConfig().getString("MYSQL.HOST"), getConfig().getString("MYSQL.USER"), getConfig().getString("MYSQL.POST"), getConfig().getString("MYSQL.PASSWORD"), getConfig().getString("MYSQL.DATABASE"), 30, this);
|
||||
if (connection.isConnection()) {
|
||||
connection.createTable(getTablePrefix() + "_playerdata", "username", "configuration");
|
||||
connection.createTable(getTablePrefix() + "_plugindata", "name", "variable", "upgrade");
|
||||
connection.createTable(getTablePrefix() + "_serveruuid", "uuid", "hash");
|
||||
if (!connection.isExists(getTablePrefix() + "_serveruuid", "uuid", TabooLib.getServerUID())) {
|
||||
connection.intoValue(getTablePrefix() + "_serveruuid", TabooLib.getServerUID(), StringUtils.hashKeyForDisk(getDataFolder().getPath()));
|
||||
} else {
|
||||
String hash = connection.getValue(getTablePrefix() + "_serveruuid", "uuid", TabooLib.getServerUID(), "hash").toString();
|
||||
if (!hash.equals(StringUtils.hashKeyForDisk(getDataFolder().getPath()))) {
|
||||
TLocale.Logger.error("NOTIFY.ERROR-SERVER-KEY");
|
||||
TabooLib.resetServerUID();
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
TLocale.Logger.error("NOTIFY.ERROR-CONNECTION-FAIL");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
storageType = StorageType.SQL;
|
||||
}
|
||||
}
|
||||
|
||||
private void registerCommands() {
|
||||
getCommand("language2").setExecutor(new Language2Command());
|
||||
getCommand("taboolibrarymodule").setExecutor(new TLMCommands());
|
||||
TBaseCommand.registerCommand("taboolib", new TabooLibMainCommand());
|
||||
TBaseCommand.registerCommand("tabooliblocale", new TabooLibLocaleCommand());
|
||||
TBaseCommand.registerCommand("taboolibplugin", new TabooLibPluginCommand());
|
||||
TBaseCommand.registerCommand("taboolibexecute", new TabooLibExecuteCommand());
|
||||
TBaseCommand.registerCommand("translateuuid", new TranslateUUIDCommand());
|
||||
}
|
||||
|
||||
private void registerListener() {
|
||||
getServer().getPluginManager().registerEvents(this, this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerPlayerCommand(), this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerPlayerJump(), this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerPlayerJoinAndQuit(), this);
|
||||
getServer().getPluginManager().registerEvents(new ChatCatcher(), this);
|
||||
getServer().getPluginManager().registerEvents(new DataUtils(), this);
|
||||
getServer().getPluginManager().registerEvents(new AnvilContainerAPI(), this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerPluginDisable(), this);
|
||||
getServer().getPluginManager().registerEvents(new PlayerDataManager(), this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerItemListCommand(), this);
|
||||
getServer().getPluginManager().registerEvents(new ListenerSoundsCommand(), this);
|
||||
|
||||
if (TabooLib.getVerint() > 10700) {
|
||||
getServer().getPluginManager().registerEvents(new EntityUtils(), this);
|
||||
getServer().getPluginManager().registerEvents(new SignUtils(), this);
|
||||
}
|
||||
|
||||
if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
|
||||
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
|
||||
}
|
||||
}
|
||||
|
||||
// *********************************
|
||||
//
|
||||
// Getter and Setter
|
||||
@@ -409,7 +282,7 @@ public class Main extends JavaPlugin implements Listener {
|
||||
}
|
||||
|
||||
public static MySQLConnection getConnection() {
|
||||
return connection;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Language2 getExampleLanguage2() {
|
||||
@@ -439,4 +312,26 @@ public class Main extends JavaPlugin implements Listener {
|
||||
public static boolean isLibrariesExists() {
|
||||
return TLib.getTLib().getLibsFolder().listFiles().length > 0;
|
||||
}
|
||||
|
||||
// *********************************
|
||||
//
|
||||
// Private Setter
|
||||
//
|
||||
// *********************************
|
||||
|
||||
static void setIsInternetOnline(boolean isInternetOnline) {
|
||||
Main.isInternetOnline = isInternetOnline;
|
||||
}
|
||||
|
||||
static void setPlayerDataFolder(File playerDataFolder) {
|
||||
Main.playerDataFolder = playerDataFolder;
|
||||
}
|
||||
|
||||
static void setServerDataFolder(File serverDataFolder) {
|
||||
Main.serverDataFolder = serverDataFolder;
|
||||
}
|
||||
|
||||
static void setStorageType(StorageType storageType) {
|
||||
Main.storageType = storageType;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user