更改依赖加载为 onLoad 前加载
//TODO 在插件启动之前加载依赖
This commit is contained in:
parent
4e7fc42167
commit
b941cac63f
6
.idea/encodings.xml
Normal file
6
.idea/encodings.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="PROJECT" charset="UTF-8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -45,22 +45,27 @@ public class TLib {
|
|||||||
return tLib;
|
return tLib;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void init() {
|
public static void injectPluginManager() {
|
||||||
new File(Main.getInst().getDataFolder(), "/libs").mkdirs();
|
|
||||||
tLib = new TLib();
|
|
||||||
DependencyInjector.inject(Main.getInst(), tLib);
|
|
||||||
// 注入 PluginLoader 用于加载依赖
|
// 注入 PluginLoader 用于加载依赖
|
||||||
try {
|
try {
|
||||||
Field field = Bukkit.getServer().getClass().getDeclaredField("pluginManager");
|
Field field = Bukkit.getServer().getClass().getDeclaredField("pluginManager");
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
field.set(Bukkit.getServer(), new TLibPluginManager());
|
field.set(Bukkit.getServer(), new TLibPluginManager());
|
||||||
tLib.getLogger().info("注入成功");
|
|
||||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
tLib.getLogger().fatal("注入失败");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
new File(Main.getInst().getDataFolder(), "/libs").mkdirs();
|
||||||
|
tLib = new TLib();
|
||||||
|
DependencyInjector.inject(Main.getInst(), tLib);
|
||||||
|
if (Bukkit.getPluginManager() instanceof TLibPluginManager)
|
||||||
|
tLib.getLogger().info("注入成功");
|
||||||
|
else
|
||||||
|
tLib.getLogger().fatal("注入失败");
|
||||||
|
}
|
||||||
|
|
||||||
public static void unload() {
|
public static void unload() {
|
||||||
tLib.getConfigWatcher().unregisterAll();
|
tLib.getConfigWatcher().unregisterAll();
|
||||||
DependencyInjector.eject(Main.getInst(), tLib);
|
DependencyInjector.eject(Main.getInst(), tLib);
|
||||||
|
@ -43,7 +43,7 @@ public class DependencyInjector {
|
|||||||
public static void eject(Plugin plugin, Object o) {
|
public static void eject(Plugin plugin, Object o) {
|
||||||
try {
|
try {
|
||||||
ejectConfig(plugin, o);
|
ejectConfig(plugin, o);
|
||||||
} catch (NoClassDefFoundError ignored) {
|
} catch (Throwable ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,9 @@ public class TLibPluginManager implements PluginManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException {
|
public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException {
|
||||||
return instance.loadPlugin(file);
|
Plugin plugin = instance.loadPlugin(file);
|
||||||
|
DependencyInjector.injectOnEnable(plugin);
|
||||||
|
return plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -92,7 +94,6 @@ public class TLibPluginManager implements PluginManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enablePlugin(Plugin plugin) {
|
public void enablePlugin(Plugin plugin) {
|
||||||
DependencyInjector.injectOnEnable(plugin);
|
|
||||||
instance.enablePlugin(plugin);
|
instance.enablePlugin(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package me.skymc.taboolib;
|
package me.skymc.taboolib;
|
||||||
|
|
||||||
import com.ilummc.tlib.TLib;
|
import com.ilummc.tlib.TLib;
|
||||||
import com.ilummc.tlib.annotations.Dependency;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import me.skymc.taboolib.anvil.AnvilContainerAPI;
|
import me.skymc.taboolib.anvil.AnvilContainerAPI;
|
||||||
@ -51,14 +50,29 @@ import java.util.Random;
|
|||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public class Main extends JavaPlugin implements Listener {
|
public class Main extends JavaPlugin implements Listener {
|
||||||
|
|
||||||
@Getter
|
public Main() {
|
||||||
private static Plugin inst;
|
super();
|
||||||
@Getter
|
|
||||||
private static String prefix = "§8[§3§lTabooLib§8] §7";
|
inst = this;
|
||||||
@Getter
|
disable = false;
|
||||||
@Setter
|
|
||||||
private static Economy Economy;
|
TLib.injectPluginManager();
|
||||||
|
|
||||||
|
// 载入配置
|
||||||
|
saveDefaultConfig();
|
||||||
|
|
||||||
|
// 加载依赖
|
||||||
|
TLib.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private static Plugin inst;
|
||||||
|
@Getter
|
||||||
|
private static String prefix = "§8[§3§lTabooLib§8] §7";
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private static Economy Economy;
|
||||||
@Getter
|
@Getter
|
||||||
private static File playerDataFolder;
|
private static File playerDataFolder;
|
||||||
@Getter
|
@Getter
|
||||||
@ -77,245 +91,235 @@ public class Main extends JavaPlugin implements Listener {
|
|||||||
private static Language2 exampleLangauge2;
|
private static Language2 exampleLangauge2;
|
||||||
@Getter
|
@Getter
|
||||||
private static boolean started;
|
private static boolean started;
|
||||||
|
|
||||||
public static Random getRandom() {
|
public static Random getRandom() {
|
||||||
return NumberUtils.getRand();
|
return NumberUtils.getRand();
|
||||||
}
|
|
||||||
|
|
||||||
public static String getTablePrefix() {
|
|
||||||
return inst.getConfig().getString("MYSQL.PREFIX");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveDefaultConfig() {
|
|
||||||
reloadConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reloadConfig() {
|
|
||||||
File file = new File(getDataFolder(), "config.yml");
|
|
||||||
if (!file.exists()) {
|
|
||||||
saveResource("config.yml", true);
|
|
||||||
}
|
|
||||||
config = ConfigUtils.load(this, file);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onLoad() {
|
|
||||||
inst = this; disable = false;
|
|
||||||
// 载入配置
|
|
||||||
saveDefaultConfig();
|
|
||||||
|
|
||||||
// 加载依赖
|
|
||||||
TLib.init();
|
|
||||||
|
|
||||||
// 载入目录
|
|
||||||
setupDataFolder();
|
|
||||||
// 注册配置
|
|
||||||
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()))) {
|
|
||||||
MsgUtils.warn("检测到本服序列号与其他服务器相同, 已重新生成!");
|
|
||||||
// 重新生成序列号
|
|
||||||
TabooLib.resetServerUID();
|
|
||||||
// 关服
|
|
||||||
Bukkit.shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// 提示
|
|
||||||
MsgUtils.warn("数据库连接失败, 请检查配置是否正确!");
|
|
||||||
// 关服
|
|
||||||
Bukkit.shutdown();
|
|
||||||
}
|
|
||||||
// 储存方式
|
|
||||||
storageType = StorageType.SQL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// 储存方式
|
|
||||||
storageType = StorageType.LOCAL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getTablePrefix() {
|
||||||
|
return inst.getConfig().getString("MYSQL.PREFIX");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void saveDefaultConfig() {
|
||||||
// 注册指令
|
reloadConfig();
|
||||||
getCommand("taboolib").setExecutor(new MainCommands());
|
}
|
||||||
getCommand("language2").setExecutor(new Language2Command());
|
|
||||||
getCommand("taboolibrarymodule").setExecutor(new TLMCommands());
|
@Override
|
||||||
|
public void reloadConfig() {
|
||||||
// 注册监听
|
File file = new File(getDataFolder(), "config.yml");
|
||||||
registerListener();
|
if (!file.exists()) {
|
||||||
// 载入经济
|
saveResource("config.yml", true);
|
||||||
EcoUtils.setupEconomy();
|
}
|
||||||
// 载入权限
|
config = ConfigUtils.load(this, file);
|
||||||
PermissionUtils.loadRegisteredServiceProvider();
|
}
|
||||||
// 物品名称
|
|
||||||
ItemUtils.LoadLib();
|
@Override
|
||||||
// 低层工具
|
public void onLoad() {
|
||||||
DabItemUtils.getInstance();
|
// 载入目录
|
||||||
// 载入周期管理器
|
setupDataFolder();
|
||||||
TimeCycleManager.load();
|
// 注册配置
|
||||||
// 启动脚本
|
DataUtils.addPluginData("TabooLibrary", null);
|
||||||
JavaShell.javaShellSetup();
|
|
||||||
// 载入语言文件
|
// 启用数据库
|
||||||
exampleLangauge2 = new Language2("Language2", this);
|
if (getConfig().getBoolean("MYSQL.ENABLE")) {
|
||||||
// 注册脚本
|
// 连接数据库
|
||||||
SkriptHandler.getInst();
|
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()) {
|
||||||
if (getStorageType() == StorageType.SQL) {
|
// 创建表
|
||||||
GlobalDataManager.SQLMethod.startSQLMethod();
|
connection.createTable(getTablePrefix() + "_playerdata", "username", "configuration");
|
||||||
}
|
connection.createTable(getTablePrefix() + "_plugindata", "name", "variable", "upgrade");
|
||||||
|
connection.createTable(getTablePrefix() + "_serveruuid", "uuid", "hash");
|
||||||
// 载入完成
|
|
||||||
MsgUtils.send("§7插件载入完成!");
|
// 如果没有数据
|
||||||
MsgUtils.send("§7插件版本: §f" + getDescription().getVersion());
|
if (!connection.isExists(getTablePrefix() + "_serveruuid", "uuid", TabooLib.getServerUID())) {
|
||||||
MsgUtils.send("§7插件作者: §f" + getDescription().getAuthors());
|
connection.intoValue(getTablePrefix() + "_serveruuid", TabooLib.getServerUID(), StringUtils.hashKeyForDisk(getDataFolder().getPath()));
|
||||||
MsgUtils.send("§7游戏版本: §f" + TabooLib.getVerint());
|
} else {
|
||||||
|
String hash = connection.getValue(getTablePrefix() + "_serveruuid", "uuid", TabooLib.getServerUID(), "hash").toString();
|
||||||
// 文件保存
|
// 如果这个值和我的值不同
|
||||||
|
if (!hash.equals(StringUtils.hashKeyForDisk(getDataFolder().getPath()))) {
|
||||||
|
MsgUtils.warn("检测到本服序列号与其他服务器相同, 已重新生成!");
|
||||||
|
// 重新生成序列号
|
||||||
|
TabooLib.resetServerUID();
|
||||||
|
// 关服
|
||||||
|
Bukkit.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 提示
|
||||||
|
MsgUtils.warn("数据库连接失败, 请检查配置是否正确!");
|
||||||
|
// 关服
|
||||||
|
Bukkit.shutdown();
|
||||||
|
}
|
||||||
|
// 储存方式
|
||||||
|
storageType = StorageType.SQL;
|
||||||
|
} else {
|
||||||
|
// 储存方式
|
||||||
|
storageType = StorageType.LOCAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
// 注册指令
|
||||||
|
getCommand("taboolib").setExecutor(new MainCommands());
|
||||||
|
getCommand("language2").setExecutor(new Language2Command());
|
||||||
|
getCommand("taboolibrarymodule").setExecutor(new TLMCommands());
|
||||||
|
|
||||||
|
// 注册监听
|
||||||
|
registerListener();
|
||||||
|
// 载入经济
|
||||||
|
EcoUtils.setupEconomy();
|
||||||
|
// 载入权限
|
||||||
|
PermissionUtils.loadRegisteredServiceProvider();
|
||||||
|
// 物品名称
|
||||||
|
ItemUtils.LoadLib();
|
||||||
|
// 低层工具
|
||||||
|
DabItemUtils.getInstance();
|
||||||
|
// 载入周期管理器
|
||||||
|
TimeCycleManager.load();
|
||||||
|
// 启动脚本
|
||||||
|
JavaShell.javaShellSetup();
|
||||||
|
// 载入语言文件
|
||||||
|
exampleLangauge2 = new Language2("Language2", this);
|
||||||
|
// 注册脚本
|
||||||
|
SkriptHandler.getInst();
|
||||||
|
|
||||||
|
// 启动数据库储存方法
|
||||||
|
if (getStorageType() == StorageType.SQL) {
|
||||||
|
GlobalDataManager.SQLMethod.startSQLMethod();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 载入完成
|
||||||
|
MsgUtils.send("§7插件载入完成!");
|
||||||
|
MsgUtils.send("§7插件版本: §f" + getDescription().getVersion());
|
||||||
|
MsgUtils.send("§7插件作者: §f" + getDescription().getAuthors());
|
||||||
|
MsgUtils.send("§7游戏版本: §f" + TabooLib.getVerint());
|
||||||
|
|
||||||
|
// 文件保存
|
||||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, DataUtils::saveAllCaches, 20, 20 * 120);
|
Bukkit.getScheduler().runTaskTimerAsynchronously(this, DataUtils::saveAllCaches, 20, 20 * 120);
|
||||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
|
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
|
||||||
|
|
||||||
// 插件联动
|
|
||||||
new BukkitRunnable() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
|
||||||
new SupportPlaceholder(getInst(), "taboolib").hook();
|
|
||||||
}
|
|
||||||
// 载入 SpecialItem 接口
|
|
||||||
SpecialItem.getInst().loadItems();
|
|
||||||
// 载入 TLM 接口
|
|
||||||
TLM.getInst();
|
|
||||||
}
|
|
||||||
}.runTask(this);
|
|
||||||
|
|
||||||
// 更新检测
|
|
||||||
new UpdateTask();
|
|
||||||
// 启动监控
|
|
||||||
new Metrics(this);
|
|
||||||
|
|
||||||
// 启动
|
|
||||||
started = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
disable = true;
|
|
||||||
|
|
||||||
// 如果插件尚未启动完成
|
|
||||||
if (!started) {
|
|
||||||
MsgUtils.send("&c插件尚未启动完成, 已跳过卸载代码");
|
|
||||||
MsgUtils.send("&c插件作者: &4坏黑");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存数据
|
|
||||||
Bukkit.getOnlinePlayers().forEach(x -> DataUtils.saveOnline(x.getName()));
|
|
||||||
// 结束线程
|
|
||||||
Bukkit.getScheduler().cancelTasks(this);
|
|
||||||
// 保存插件数据
|
|
||||||
DataUtils.saveAllCaches();
|
|
||||||
// 保存玩家数据
|
|
||||||
PlayerDataManager.saveAllPlayers(false, true);
|
|
||||||
// 结束脚本
|
|
||||||
JavaShell.javaShellCancel();
|
|
||||||
// 注销 SpecialItem 接口
|
|
||||||
SpecialItem.getInst().unloadItems();
|
|
||||||
// 注销 TLM 接口
|
|
||||||
TabooLibraryModule.getInst().unloadModules();
|
|
||||||
|
|
||||||
// 结束数据库储存方法
|
|
||||||
if (getStorageType() == StorageType.SQL) {
|
|
||||||
GlobalDataManager.SQLMethod.cancelSQLMethod();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 清理数据
|
|
||||||
if (getStorageType() == StorageType.LOCAL && getConfig().getBoolean("DELETE-DATA")) {
|
|
||||||
getPlayerDataFolder().delete();
|
|
||||||
}
|
|
||||||
// 清理数据
|
|
||||||
if (getStorageType() == StorageType.SQL && getConfig().getBoolean("DELETE-VARIABLE")) {
|
|
||||||
GlobalDataManager.clearInvalidVariables();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提示信息
|
|
||||||
MsgUtils.send("&c插件已卸载, 感谢您使用&4禁忌书库");
|
|
||||||
MsgUtils.send("&c插件作者: &4坏黑");
|
|
||||||
|
|
||||||
// 清理头衔
|
|
||||||
TagUtils.delete();
|
|
||||||
|
|
||||||
// 结束连接
|
|
||||||
if (connection != null && connection.isConnection()) {
|
|
||||||
connection.closeConnection();
|
|
||||||
}
|
|
||||||
|
|
||||||
TLib.unload();
|
// 插件联动
|
||||||
|
new BukkitRunnable() {
|
||||||
// 关闭服务器
|
|
||||||
Bukkit.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
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 registerListener() {
|
|
||||||
getServer().getPluginManager().registerEvents(this, this);
|
|
||||||
getServer().getPluginManager().registerEvents(new ListenerPlayerCommand(), this);
|
|
||||||
getServer().getPluginManager().registerEvents(new ListenerPlayerJump(), this);
|
|
||||||
getServer().getPluginManager().registerEvents(new ListenerPlayerQuit(), 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 ItemLibraryPatch(), this);
|
|
||||||
getServer().getPluginManager().registerEvents(new SoundsLibraryPatch(), this);
|
|
||||||
|
|
||||||
|
@Override
|
||||||
if (TabooLib.getVerint() > 10700) {
|
public void run() {
|
||||||
getServer().getPluginManager().registerEvents(new EntityUtils(), this);
|
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
getServer().getPluginManager().registerEvents(new SignUtils(), this);
|
new SupportPlaceholder(getInst(), "taboolib").hook();
|
||||||
}
|
}
|
||||||
|
// 载入 SpecialItem 接口
|
||||||
// 如果 YUM 插件存在
|
SpecialItem.getInst().loadItems();
|
||||||
if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
|
// 载入 TLM 接口
|
||||||
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
|
TLM.getInst();
|
||||||
}
|
}
|
||||||
}
|
}.runTask(this);
|
||||||
|
|
||||||
|
// 更新检测
|
||||||
|
new UpdateTask();
|
||||||
|
// 启动监控
|
||||||
|
new Metrics(this);
|
||||||
|
|
||||||
|
// 启动
|
||||||
|
started = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
disable = true;
|
||||||
|
|
||||||
|
// 如果插件尚未启动完成
|
||||||
|
if (!started) {
|
||||||
|
MsgUtils.send("&c插件尚未启动完成, 已跳过卸载代码");
|
||||||
|
MsgUtils.send("&c插件作者: &4坏黑");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存数据
|
||||||
|
Bukkit.getOnlinePlayers().forEach(x -> DataUtils.saveOnline(x.getName()));
|
||||||
|
// 结束线程
|
||||||
|
Bukkit.getScheduler().cancelTasks(this);
|
||||||
|
// 保存插件数据
|
||||||
|
DataUtils.saveAllCaches();
|
||||||
|
// 保存玩家数据
|
||||||
|
PlayerDataManager.saveAllPlayers(false, true);
|
||||||
|
// 结束脚本
|
||||||
|
JavaShell.javaShellCancel();
|
||||||
|
// 注销 SpecialItem 接口
|
||||||
|
SpecialItem.getInst().unloadItems();
|
||||||
|
// 注销 TLM 接口
|
||||||
|
TabooLibraryModule.getInst().unloadModules();
|
||||||
|
|
||||||
|
// 结束数据库储存方法
|
||||||
|
if (getStorageType() == StorageType.SQL) {
|
||||||
|
GlobalDataManager.SQLMethod.cancelSQLMethod();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理数据
|
||||||
|
if (getStorageType() == StorageType.LOCAL && getConfig().getBoolean("DELETE-DATA")) {
|
||||||
|
getPlayerDataFolder().delete();
|
||||||
|
}
|
||||||
|
// 清理数据
|
||||||
|
if (getStorageType() == StorageType.SQL && getConfig().getBoolean("DELETE-VARIABLE")) {
|
||||||
|
GlobalDataManager.clearInvalidVariables();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提示信息
|
||||||
|
MsgUtils.send("&c插件已卸载, 感谢您使用&4禁忌书库");
|
||||||
|
MsgUtils.send("&c插件作者: &4坏黑");
|
||||||
|
|
||||||
|
// 清理头衔
|
||||||
|
TagUtils.delete();
|
||||||
|
|
||||||
|
// 结束连接
|
||||||
|
if (connection != null && connection.isConnection()) {
|
||||||
|
connection.closeConnection();
|
||||||
|
}
|
||||||
|
|
||||||
|
TLib.unload();
|
||||||
|
|
||||||
|
// 关闭服务器
|
||||||
|
Bukkit.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
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 registerListener() {
|
||||||
|
getServer().getPluginManager().registerEvents(this, this);
|
||||||
|
getServer().getPluginManager().registerEvents(new ListenerPlayerCommand(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new ListenerPlayerJump(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new ListenerPlayerQuit(), 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 ItemLibraryPatch(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new SoundsLibraryPatch(), this);
|
||||||
|
|
||||||
|
|
||||||
|
if (TabooLib.getVerint() > 10700) {
|
||||||
|
getServer().getPluginManager().registerEvents(new EntityUtils(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new SignUtils(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果 YUM 插件存在
|
||||||
|
if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
|
||||||
|
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public enum StorageType {
|
public enum StorageType {
|
||||||
LOCAL, SQL
|
LOCAL, SQL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user