From 9ae4c0701ea103284fcc479537e73c8604b40552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=8F=E9=BB=91?= Date: Fri, 2 Nov 2018 18:47:47 +0800 Subject: [PATCH] TabooLib v4.6-R3 + Remove depend: Vault + Optimize Main --- src/main/java/me/skymc/taboolib/Main.java | 47 +----------- .../me/skymc/taboolib/TabooLibLoader.java | 5 ++ .../skymc/taboolib/inventory/ItemUtils.java | 2 + .../taboolib/itagapi/TagDataHandler.java | 8 +- .../taboolib/javascript/ScriptHandler.java | 4 +- .../taboolib/support/SupportPlaceholder.java | 69 ------------------ .../resources/Addons/TabooLibDeprecated.jar | Bin 354031 -> 356833 bytes 7 files changed, 17 insertions(+), 118 deletions(-) delete mode 100644 src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java diff --git a/src/main/java/me/skymc/taboolib/Main.java b/src/main/java/me/skymc/taboolib/Main.java index 3debae8..a6c2e48 100644 --- a/src/main/java/me/skymc/taboolib/Main.java +++ b/src/main/java/me/skymc/taboolib/Main.java @@ -4,32 +4,21 @@ import com.ilummc.tlib.TLib; import com.ilummc.tlib.resources.TLocale; import com.ilummc.tlib.util.IO; import com.ilummc.tlib.util.Strings; -import me.skymc.taboolib.common.function.TFunctionLoader; import me.skymc.taboolib.database.GlobalDataManager; import me.skymc.taboolib.database.PlayerDataManager; -import me.skymc.taboolib.economy.EcoUtils; import me.skymc.taboolib.fileutils.ConfigUtils; import me.skymc.taboolib.fileutils.FileUtils; -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.listener.TListenerHandler; import me.skymc.taboolib.mysql.hikari.HikariHandler; import me.skymc.taboolib.mysql.protect.MySQLConnection; -import me.skymc.taboolib.nms.item.DabItemUtils; import me.skymc.taboolib.other.NumberUtils; -import me.skymc.taboolib.permission.PermissionUtils; import me.skymc.taboolib.playerdata.DataUtils; -import me.skymc.taboolib.skript.SkriptHandler; import me.skymc.taboolib.socket.TabooLibClient; import me.skymc.taboolib.socket.TabooLibServer; import me.skymc.taboolib.string.language2.Language2; -import me.skymc.taboolib.support.SupportPlaceholder; -import me.skymc.taboolib.timecycle.TimeCycleManager; import me.skymc.taboolib.translateuuid.TranslateUUID; import me.skymc.taboolib.update.UpdateTask; -import me.skymc.tlm.TLM; import me.skymc.tlm.module.TabooLibraryModule; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; @@ -110,24 +99,6 @@ public class Main extends JavaPlugin { public void onEnable() { // 注册插件配置 TabooLibLoader.register(); - // 载入经济 - EcoUtils.setupEconomy(); - // 载入权限 - PermissionUtils.loadRegisteredServiceProvider(); - // 物品名称 - ItemUtils.init(); - // 低层工具 - DabItemUtils.getInstance(); - // 载入周期管理器 - TimeCycleManager.load(); - // 启动脚本 - ScriptHandler.inst(); - // 注册脚本 - SkriptHandler.register(); - // 注册头衔 - TagDataHandler.init(this); - // 载入语言文件 - exampleLanguage2 = new Language2("Language2", this); // 启动数据库储存方法 if (getStorageType() == StorageType.SQL) { GlobalDataManager.SQLMethod.startSQLMethod(); @@ -147,16 +118,6 @@ public class Main extends JavaPlugin { @Override public void run() { - // 载入 PlaceholderAPI 扩展 - 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 { @@ -178,6 +139,8 @@ public class Main extends JavaPlugin { new UpdateTask(); // 启动 started = true; + // 载入语言文件 + exampleLanguage2 = new Language2("Language2", this); } @Override @@ -198,12 +161,6 @@ public class Main extends JavaPlugin { DataUtils.saveAllCaches(); // 保存玩家数据 PlayerDataManager.saveAllPlayers(false, true); - // 注销 SpecialItem 接口 - SpecialItem.getInst().unloadItems(); - // 注销 TLM 接口 - TabooLibraryModule.getInst().unloadModules(); - // 注销 TranslateUUID 接口 - TranslateUUID.cancel(); // 注销连接池 HikariHandler.closeDataSourceForce(); // 注销监听器 diff --git a/src/main/java/me/skymc/taboolib/TabooLibLoader.java b/src/main/java/me/skymc/taboolib/TabooLibLoader.java index 681c2c4..ceaf053 100644 --- a/src/main/java/me/skymc/taboolib/TabooLibLoader.java +++ b/src/main/java/me/skymc/taboolib/TabooLibLoader.java @@ -60,6 +60,11 @@ public class TabooLibLoader implements Listener { static void unregister() { unloadClasses(); + try { + tabooLibDeprecated.unregister(); + } catch (Exception e) { + e.printStackTrace(); + } } public static TabooLibDeprecated getTabooLibDeprecated() { diff --git a/src/main/java/me/skymc/taboolib/inventory/ItemUtils.java b/src/main/java/me/skymc/taboolib/inventory/ItemUtils.java index 5274c5a..7006b29 100644 --- a/src/main/java/me/skymc/taboolib/inventory/ItemUtils.java +++ b/src/main/java/me/skymc/taboolib/inventory/ItemUtils.java @@ -5,6 +5,7 @@ import me.clip.placeholderapi.PlaceholderAPI; import me.skymc.taboolib.Main; import me.skymc.taboolib.TabooLib; import me.skymc.taboolib.common.configuration.TConfiguration; +import me.skymc.taboolib.common.function.TFunction; import me.skymc.taboolib.fileutils.ConfigUtils; import me.skymc.taboolib.itemnbtapi.NBTItem; import me.skymc.taboolib.itemnbtapi.NBTList; @@ -37,6 +38,7 @@ import java.util.stream.IntStream; /** * @author sky */ +@TFunction(enable = "init") public class ItemUtils { private static File finalItemsFolder; diff --git a/src/main/java/me/skymc/taboolib/itagapi/TagDataHandler.java b/src/main/java/me/skymc/taboolib/itagapi/TagDataHandler.java index aea9ec2..69329ac 100644 --- a/src/main/java/me/skymc/taboolib/itagapi/TagDataHandler.java +++ b/src/main/java/me/skymc/taboolib/itagapi/TagDataHandler.java @@ -3,6 +3,7 @@ package me.skymc.taboolib.itagapi; import com.google.common.base.Preconditions; import me.skymc.taboolib.Main; import me.skymc.taboolib.TabooLib; +import me.skymc.taboolib.common.function.TFunction; import me.skymc.taboolib.packet.PacketUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -24,16 +25,17 @@ import java.util.UUID; * @Author sky * @Since 2018-05-23 0:37 */ +@TFunction(enable = "init") public class TagDataHandler implements Listener { private static TagDataHandler handler; private HashMap playersData = new HashMap<>(); - public static void init(Plugin plugin) { + public static void init() { Preconditions.checkArgument(handler == null, "TagDataHandler is already instanced!"); handler = new TagDataHandler(); // 注册监听 - Bukkit.getPluginManager().registerEvents(handler, plugin); + Bukkit.getPluginManager().registerEvents(handler, TabooLib.instance()); // 启动相关功能 new BukkitRunnable() { @@ -43,7 +45,7 @@ public class TagDataHandler implements Listener { TagPacket.inst(); } } - }.runTask(plugin); + }.runTask(TabooLib.instance()); } public TagPlayerData unregisterPlayerData(Player player) { diff --git a/src/main/java/me/skymc/taboolib/javascript/ScriptHandler.java b/src/main/java/me/skymc/taboolib/javascript/ScriptHandler.java index eb18af2..abf9342 100644 --- a/src/main/java/me/skymc/taboolib/javascript/ScriptHandler.java +++ b/src/main/java/me/skymc/taboolib/javascript/ScriptHandler.java @@ -2,6 +2,7 @@ package me.skymc.taboolib.javascript; import com.ilummc.tlib.logger.TLogger; import jdk.nashorn.api.scripting.NashornScriptEngineFactory; +import me.skymc.taboolib.common.function.TFunction; import org.bukkit.configuration.file.FileConfiguration; import javax.script.Compilable; @@ -14,12 +15,13 @@ import java.util.Objects; * @Author sky * @Since 2018-06-02 22:48 */ +@TFunction(enable = "init") public class ScriptHandler { private static ScriptEngine scriptEngine; private static ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); - public static void inst() { + public static void init() { try { NashornScriptEngineFactory factory = (NashornScriptEngineFactory) scriptEngineManager.getEngineFactories().stream().filter(factories -> "Oracle Nashorn".equalsIgnoreCase(factories.getEngineName())).findFirst().orElse(null); scriptEngine = Objects.requireNonNull(factory).getScriptEngine("-doe", "--global-per-engine"); diff --git a/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java b/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java deleted file mode 100644 index 6b25309..0000000 --- a/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java +++ /dev/null @@ -1,69 +0,0 @@ -package me.skymc.taboolib.support; - -import me.clip.placeholderapi.external.EZPlaceholderHook; -import me.skymc.taboolib.database.GlobalDataManager; -import me.skymc.tlm.TLM; -import me.skymc.tlm.module.TabooLibraryModule; -import me.skymc.tlm.module.sub.ModuleKits; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; - -/** - * @author sky - */ -public class SupportPlaceholder extends EZPlaceholderHook { - - public SupportPlaceholder(Plugin plugin, String identifier) { - super(plugin, identifier); - } - - @Override - public String onPlaceholderRequest(Player player, String args) { - if (args.startsWith("variable_")) { - String[] value = args.split("_"); - StringBuilder sb = new StringBuilder(); - for (int i = 1; i < value.length; i++) { - sb.append(value[i]).append("_"); - } - return GlobalDataManager.getVariableAsynchronous(sb.substring(0, sb.length() - 1), ""); - } - if (args.startsWith("tlm_kit_")) { - // 是否启用 - if (TabooLibraryModule.getInst().valueOf("Kits") == null) { - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.0").asString(); - } - - // 获取模块 - ModuleKits moduleKits = (ModuleKits) TabooLibraryModule.getInst().valueOf("Kits"); - String kit = args.split("_")[2]; - - // 礼包不存在 - if (!moduleKits.contains(kit)) { - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.1").asString(); - } - - // 是否领取 - if (moduleKits.isPlayerRewared(player, kit)) { - // 是否只能领取一次 - if (moduleKits.isDisposable(kit)) { - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.2").asString(); - } - // 是否冷却中 - if (moduleKits.isPlayerCooldown(player, kit)) { - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.4").asString(); - } - } - - // 是否有权限领取 - String permission = moduleKits.getPermission(kit); - if (permission != null && !player.hasPermission(permission)) { - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.5").asString(); - } - - // 可领取 - return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.3").asString(); - } - return null; - } - -} diff --git a/src/main/resources/Addons/TabooLibDeprecated.jar b/src/main/resources/Addons/TabooLibDeprecated.jar index 3565ece79aaa9d541f322e22490585f5f1052b43..60b7edf99eb9e377b5447d4ef352dba081412e96 100644 GIT binary patch delta 16516 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 H>Kpfe@J0KF delta 14157 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 ujl<6)8A76j0)&?a9;*2DE|k!AIdfW