From 86bd28e134eba6eb66db90194ef6eb0ce080e9ca Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Thu, 21 Mar 2024 04:44:16 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/bukkit/command/core/CoreCommand.java | 1 - .../command/core/sub/ReloadCommand.java | 49 --------------- .../plugin/core/bukkit/page/PageConfig.java | 21 ++----- .../plugin/core/bukkit/page/PageManager.java | 61 ------------------- .../bukkit/page/handler/FixedPageHandler.java | 9 +-- .../core/bukkit/page/handler/PageHandler.java | 51 ++++++++-------- .../bukkit/page/handler/PageableHandler.java | 21 ++----- 7 files changed, 39 insertions(+), 174 deletions(-) delete mode 100644 core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/ReloadCommand.java delete mode 100644 core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/CoreCommand.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/CoreCommand.java index aef2f09..34d7d16 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/CoreCommand.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/CoreCommand.java @@ -14,7 +14,6 @@ public class CoreCommand extends ParentCommand { addChildCommand(GCCommand.INSTANCE); addChildCommand(YamlCommand.INSTANCE); addChildCommand(InfoModeCommand.INSTANCE); - addChildCommand(ReloadCommand.INSTANCE); addChildCommand(MemoryCommand.INSTANCE); addChildCommand(SystemCommand.INSTANCE); } diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/ReloadCommand.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/ReloadCommand.java deleted file mode 100644 index 234c012..0000000 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/ReloadCommand.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.hamster3.mc.plugin.core.bukkit.command.core.sub; - -import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; -import cn.hamster3.mc.plugin.core.bukkit.page.PageManager; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.Collections; -import java.util.List; - -public class ReloadCommand extends ChildCommand { - public static final ReloadCommand INSTANCE = new ReloadCommand(); - - private ReloadCommand() { - } - - @Override - public @NotNull String getName() { - return "reload"; - } - - @Override - public @NotNull String getUsage() { - return "reload"; - } - - @Override - public boolean hasPermission(@NotNull CommandSender sender) { - return true; - } - - @Override - public @NotNull String getDescription() { - return "重载页面配置文件"; - } - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - PageManager.PAGE_CONFIG.clear(); - sender.sendMessage("§a已重载页面配置文件"); - return true; - } - - @Override - public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { - return Collections.emptyList(); - } -} diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java index 928f599..25a1521 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java @@ -7,7 +7,6 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,8 +17,6 @@ import java.util.Map; @SuppressWarnings("unused") public class PageConfig implements InventoryHolder { - @NotNull - private final Plugin plugin; @NotNull private final ConfigurationSection rawConfig; @@ -38,8 +35,7 @@ public class PageConfig implements InventoryHolder { @NotNull private final Inventory inventory; - public PageConfig(@NotNull Plugin plugin, @NotNull ConfigurationSection rawConfig) { - this.plugin = plugin; + public PageConfig(@NotNull ConfigurationSection rawConfig) { this.rawConfig = rawConfig; title = rawConfig.getString("title", "").replace("&", "§"); @@ -163,11 +159,6 @@ public class PageConfig implements InventoryHolder { throw new IllegalArgumentException("未找到名称为 " + groupName + " 的按钮编组"); } - @NotNull - public Plugin getPlugin() { - return plugin; - } - @NotNull public ConfigurationSection getRawConfig() { return rawConfig; @@ -197,10 +188,10 @@ public class PageConfig implements InventoryHolder { @Override public String toString() { return "PageConfig{" + - ", title='" + title + '\'' + - ", graphic=" + graphic + - ", buttonMap=" + buttons + - ", buttonGroups=" + buttonGroups + - '}'; + ", title='" + title + '\'' + + ", graphic=" + graphic + + ", buttonMap=" + buttons + + ", buttonGroups=" + buttonGroups + + '}'; } } diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java deleted file mode 100644 index f05045f..0000000 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageManager.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.hamster3.mc.plugin.core.bukkit.page; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; -import java.util.HashMap; - -public class PageManager { - public static final HashMap PAGE_CONFIG = new HashMap<>(); - - @NotNull - public static PageConfig getPageConfig(@NotNull Class clazz) { - PageConfig pageConfig = PAGE_CONFIG.get(clazz.getName()); - if (pageConfig != null) { - return pageConfig; - } - if (!clazz.isAnnotationPresent(PluginPage.class)) { - throw new IllegalArgumentException(clazz.getName() + " 未被 @PluginPage 注解修饰"); - } - PluginPage annotation = clazz.getAnnotation(PluginPage.class); - String pluginName = annotation.value(); - Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName); - if (plugin == null) { - throw new IllegalArgumentException("未找到插件 " + pluginName + " "); - } - pageConfig = getPageConfig(plugin, clazz.getSimpleName()); - PAGE_CONFIG.put(clazz.getName(), pageConfig); - return pageConfig; - } - - @NotNull - public static PageConfig getPageConfig(@NotNull Plugin plugin, @NotNull String pageName) { - String pluginName = plugin.getName(); - File pageFolder = new File(plugin.getDataFolder(), "pages"); - if (pageFolder.mkdirs()) { - plugin.getLogger().info("创建页面配置文件夹"); - } - String filename = pageName + ".yml"; - File pageConfigFile = new File(pageFolder, filename); - if (pageConfigFile.exists()) { - YamlConfiguration config = YamlConfiguration.loadConfiguration(pageConfigFile); - return new PageConfig(plugin, config); - } - try (InputStream stream = plugin.getResource("pages/" + filename)) { - if (stream != null) { - Files.copy(stream, pageConfigFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - } - } catch (IOException e) { - throw new IllegalArgumentException("为插件 " + pluginName + " 加载页面配置文件 " + filename + " 时出错", e); - } - YamlConfiguration config = YamlConfiguration.loadConfiguration(pageConfigFile); - return new PageConfig(plugin, config); - } -} diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/FixedPageHandler.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/FixedPageHandler.java index f109d44..da174ba 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/FixedPageHandler.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/FixedPageHandler.java @@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.bukkit.page.ButtonGroup; import cn.hamster3.mc.plugin.core.bukkit.page.PageConfig; import org.bukkit.Bukkit; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -12,15 +13,11 @@ import java.util.List; * 固定页面的 GUI */ @SuppressWarnings("unused") -public class FixedPageHandler extends PageHandler { - public FixedPageHandler(@NotNull HumanEntity player) { +public abstract class FixedPageHandler extends PageHandler { + public FixedPageHandler(@NotNull Player player) { super(player); } - public FixedPageHandler(@NotNull PageConfig config, @NotNull HumanEntity player) { - super(config, player); - } - @Override public void initPage() { if (inventory == null) { diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageHandler.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageHandler.java index 0344839..d45e3ce 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageHandler.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageHandler.java @@ -2,15 +2,17 @@ package cn.hamster3.mc.plugin.core.bukkit.page.handler; import cn.hamster3.mc.plugin.core.bukkit.page.ButtonGroup; import cn.hamster3.mc.plugin.core.bukkit.page.PageConfig; -import cn.hamster3.mc.plugin.core.bukkit.page.PageManager; +import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils; +import lombok.Getter; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Bukkit; import org.bukkit.Sound; -import org.bukkit.entity.HumanEntity; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.inventory.*; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; +import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -20,21 +22,29 @@ import java.util.Map; * GUI 处理类 */ @SuppressWarnings("unused") +@Getter public abstract class PageHandler implements InventoryHolder { + @NotNull private final PageConfig pageConfig; - private final HumanEntity player; + @NotNull + private final Player player; protected Inventory inventory; - public PageHandler(@NotNull HumanEntity player) { - pageConfig = PageManager.getPageConfig(getClass()); + public PageHandler(@NotNull Player player) { + pageConfig = loadPageConfig(); this.player = player; } - public PageHandler(@NotNull PageConfig pageConfig, @NotNull HumanEntity player) { - this.pageConfig = pageConfig; - this.player = player; + @NotNull + public PageConfig loadPageConfig() { + String simpleName = getClass().getSimpleName(); + YamlConfiguration config = CoreBukkitUtils.getPluginConfig(getPlugin(), "pages/" + simpleName + ".yml"); + return new PageConfig(config); } + @NotNull + public abstract Plugin getPlugin(); + public abstract void initPage(); public void onOpen(@NotNull InventoryOpenEvent event) { @@ -55,9 +65,6 @@ public abstract class PageHandler implements InventoryHolder { } public void onPlayButtonSound(@NotNull ClickType clickType, @NotNull InventoryAction action, int index) { - if (!(player instanceof Player)) { - return; - } PageConfig config = getPageConfig(); String buttonName = getButtonGroup().getButtonName(index); Sound sound = config.getButtonSound(buttonName); @@ -73,7 +80,7 @@ public abstract class PageHandler implements InventoryHolder { if (sound == null) { return; } - ((Player) player).playSound(player.getLocation(), sound, 1, 1); + player.playSound(player.getLocation(), sound, 1, 1); } public void onDrag(@NotNull InventoryDragEvent event) { @@ -94,21 +101,11 @@ public abstract class PageHandler implements InventoryHolder { if (init) { initPage(); } - Bukkit.getScheduler().runTask(pageConfig.getPlugin(), () -> player.openInventory(getInventory())); + Bukkit.getScheduler().runTask(getPlugin(), () -> player.openInventory(getInventory())); } public void close() { - Bukkit.getScheduler().runTask(pageConfig.getPlugin(), player::closeInventory); - } - - @NotNull - public PageConfig getPageConfig() { - return pageConfig; - } - - @NotNull - public HumanEntity getPlayer() { - return player; + Bukkit.getScheduler().runTask(getPlugin(), player::closeInventory); } @NotNull @@ -118,9 +115,9 @@ public abstract class PageHandler implements InventoryHolder { @NotNull public String getTitle() { - String title = pageConfig.getTitle(); - if (player instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { - title = PlaceholderAPI.setPlaceholders((Player) player, title); + String title = getPageConfig().getTitle(); + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + title = PlaceholderAPI.setPlaceholders(player, title); } for (Map.Entry entry : getPageVariables().entrySet()) { title = title.replace(entry.getKey(), entry.getValue()); diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java index 7adaa0d..c58edb7 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java @@ -46,24 +46,18 @@ public abstract class PageableHandler extends FixedPageHandler { @Getter private int page; - public PageableHandler(@NotNull HumanEntity player) { + public PageableHandler(@NotNull Player player) { super(player); this.page = 0; elementSlot = new HashMap<>(); } - public PageableHandler(@NotNull HumanEntity player, int page) { + public PageableHandler(@NotNull Player player, int page) { super(player); this.page = page; elementSlot = new HashMap<>(); } - public PageableHandler(@NotNull PageConfig config, @NotNull HumanEntity player, int page) { - super(config, player); - this.page = page; - elementSlot = new HashMap<>(); - } - @NotNull public abstract List getPageElements(); @@ -95,10 +89,7 @@ public abstract class PageableHandler extends FixedPageHandler { @Override public void onPlayButtonSound(@NotNull ClickType clickType, @NotNull InventoryAction action, int index) { - HumanEntity player = getPlayer(); - if (!(player instanceof Player)) { - return; - } + Player player = getPlayer(); PageConfig config = getPageConfig(); String buttonName = getButtonGroup().getButtonName(index); Sound sound = config.getButtonSound(buttonName); @@ -120,7 +111,7 @@ public abstract class PageableHandler extends FixedPageHandler { if (sound == null) { return; } - ((Player) player).playSound(player.getLocation(), sound, 1, 1); + player.playSound(player.getLocation(), sound, 1, 1); } @Override @@ -177,14 +168,14 @@ public abstract class PageableHandler extends FixedPageHandler { for (Map.Entry entry : variables.entrySet()) { displayName = displayName.replace(entry.getKey(), entry.getValue()); } - if (player instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { displayName = PlaceholderAPI.setPlaceholders((OfflinePlayer) player, displayName); } meta.setDisplayName(displayName); } List lore = meta.getLore(); if (lore != null) { - if (player instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { lore.replaceAll(s -> { for (Map.Entry entry : variables.entrySet()) { s = s.replace(entry.getKey(), entry.getValue());