| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				@@ -1,7 +1,6 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				package me.skymc.taboolib;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import com.ilummc.tlib.TLib;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import com.ilummc.tlib.annotations.Dependency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import lombok.Getter;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import lombok.Setter;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import me.skymc.taboolib.anvil.AnvilContainerAPI;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -52,13 +51,28 @@ import java.util.Random;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				@SuppressWarnings("deprecation")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				public class Main extends JavaPlugin implements Listener {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					@Getter
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					private static Plugin inst;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					@Getter
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					private static String prefix = "§8[§3§lTabooLib§8] §7";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					@Getter
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					@Setter
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					private static Economy Economy;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public Main() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        super();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        inst = this;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        disable = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private static File playerDataFolder;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @Getter
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -79,243 +93,233 @@ public class Main extends JavaPlugin implements Listener {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private static boolean started;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    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
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					public void onEnable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 注册指令
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						getCommand("taboolib").setExecutor(new MainCommands());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						getCommand("language2").setExecutor(new Language2Command());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						getCommand("taboolibrarymodule").setExecutor(new TLMCommands());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public void saveDefaultConfig() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        reloadConfig();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 注册监听
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						registerListener();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 载入经济
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						EcoUtils.setupEconomy();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 载入权限
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						PermissionUtils.loadRegisteredServiceProvider();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 物品名称
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						ItemUtils.LoadLib();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 低层工具
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						DabItemUtils.getInstance();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 载入周期管理器
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						TimeCycleManager.load();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 启动脚本
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						JavaShell.javaShellSetup();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 载入语言文件
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						exampleLangauge2 = new Language2("Language2", this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 注册脚本
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						SkriptHandler.getInst();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @Override
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public void reloadConfig() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        File file = new File(getDataFolder(), "config.yml");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!file.exists()) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            saveResource("config.yml", true);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        config = ConfigUtils.load(this, file);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 启动数据库储存方法
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (getStorageType() == StorageType.SQL) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							GlobalDataManager.SQLMethod.startSQLMethod();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @Override
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public void onLoad() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 载入目录
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        setupDataFolder();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 注册配置
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DataUtils.addPluginData("TabooLibrary", null);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 载入完成
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						MsgUtils.send("§7插件载入完成!");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						MsgUtils.send("§7插件版本: §f" + getDescription().getVersion());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						MsgUtils.send("§7插件作者: §f" + getDescription().getAuthors());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						MsgUtils.send("§7游戏版本: §f" + TabooLib.getVerint());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 启用数据库
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @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, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 插件联动
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						new BukkitRunnable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 插件联动
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            @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);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 更新检测
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        new UpdateTask();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 启动监控
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        new Metrics(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 启动
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						started = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 启动
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        started = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					@Override
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					public void onDisable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						disable = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @Override
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public void onDisable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        disable = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 如果插件尚未启动完成
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (!started) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							MsgUtils.send("&c插件尚未启动完成, 已跳过卸载代码");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							MsgUtils.send("&c插件作者: &4坏黑");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 如果插件尚未启动完成
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 保存数据
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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.SQL) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            GlobalDataManager.SQLMethod.cancelSQLMethod();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 清理数据
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (getStorageType() == StorageType.LOCAL && getConfig().getBoolean("DELETE-DATA")) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							getPlayerDataFolder().delete();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 清理数据
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (getStorageType() == StorageType.SQL && getConfig().getBoolean("DELETE-VARIABLE")) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							GlobalDataManager.clearInvalidVariables();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 清理数据
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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坏黑");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 提示信息
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        MsgUtils.send("&c插件已卸载, 感谢您使用&4禁忌书库");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        MsgUtils.send("&c插件作者: &4坏黑");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 清理头衔
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						TagUtils.delete();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 清理头衔
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        TagUtils.delete();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 结束连接
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (connection != null && connection.isConnection()) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							connection.closeConnection();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 结束连接
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (connection != null && connection.isConnection()) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            connection.closeConnection();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						TLib.unload();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        TLib.unload();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						// 关闭服务器
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						Bukkit.shutdown();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 关闭服务器
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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 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);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    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);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        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);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // 如果 YUM 插件存在
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public enum StorageType {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        LOCAL, SQL
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					
					| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				 
 |