diff --git a/pom.xml b/pom.xml index 24110f4..33dd5d1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cc.carm.plugin UserPrefix - 1.0.0-SNAPSHOT + 1.2.0-SNAPSHOT 8 diff --git a/src/main/java/cc/carm/plugin/userprefix/Main.java b/src/main/java/cc/carm/plugin/userprefix/Main.java index 7ab0fa5..cbbada3 100644 --- a/src/main/java/cc/carm/plugin/userprefix/Main.java +++ b/src/main/java/cc/carm/plugin/userprefix/Main.java @@ -6,11 +6,12 @@ import cc.carm.plugin.userprefix.configuration.PrefixConfig; import cc.carm.plugin.userprefix.hooker.UserPrefixExpansion; import cc.carm.plugin.userprefix.listener.UserListener; import cc.carm.plugin.userprefix.listener.processor.UserNodeUpdateProcessor; -import cc.carm.plugin.userprefix.manager.ServiceManager; -import net.luckperms.api.event.user.UserDataRecalculateEvent; import cc.carm.plugin.userprefix.manager.ConfigManager; import cc.carm.plugin.userprefix.manager.PrefixManager; +import cc.carm.plugin.userprefix.manager.ServiceManager; +import cc.carm.plugin.userprefix.manager.UserManager; import cc.carm.plugin.userprefix.util.ColorParser; +import net.luckperms.api.event.user.UserDataRecalculateEvent; import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; @@ -47,6 +48,11 @@ public class Main extends JavaPlugin { log("加载完成 ,共耗时 " + (System.currentTimeMillis() - startTime) + " ms 。"); + + if (Bukkit.getOnlinePlayers().size() > 0) { + Bukkit.getOnlinePlayers().forEach(UserManager::initPlayer); // 适配热重载 + } + } @Override diff --git a/src/main/java/cc/carm/plugin/userprefix/listener/UserListener.java b/src/main/java/cc/carm/plugin/userprefix/listener/UserListener.java index 356b214..7e9f181 100644 --- a/src/main/java/cc/carm/plugin/userprefix/listener/UserListener.java +++ b/src/main/java/cc/carm/plugin/userprefix/listener/UserListener.java @@ -1,9 +1,6 @@ package cc.carm.plugin.userprefix.listener; -import cc.carm.plugin.userprefix.configuration.PrefixConfig; import cc.carm.plugin.userprefix.manager.UserManager; -import cc.carm.plugin.userprefix.ui.PrefixSelectGUI; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -14,25 +11,13 @@ public class UserListener implements Listener { @EventHandler public void onJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); - - UserManager.checkPrefix(player, false); - - - if (PrefixConfig.Functions.NAME_PREFIX.get()) { - UserManager.createNameTag(event.getPlayer()); - UserManager.updatePrefixView(event.getPlayer(), true); - } - - + UserManager.initPlayer(event.getPlayer()); } @EventHandler public void onLeave(PlayerQuitEvent event) { - PrefixSelectGUI.removeOpening(event.getPlayer()); - UserManager.unloadNameTag(event.getPlayer().getUniqueId()); - UserManager.checkingPlayers.remove(event.getPlayer().getUniqueId()); + UserManager.unloadPlayer(event.getPlayer()); } diff --git a/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java b/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java index 62e27c0..a266f9f 100644 --- a/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java +++ b/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java @@ -1,29 +1,16 @@ package cc.carm.plugin.userprefix.listener.processor; -import net.luckperms.api.event.user.UserDataRecalculateEvent; -import net.luckperms.api.model.user.User; import cc.carm.plugin.userprefix.manager.UserManager; +import net.luckperms.api.event.user.UserDataRecalculateEvent; import org.bukkit.Bukkit; import org.bukkit.entity.Player; public class UserNodeUpdateProcessor { -// public static void process(NodeRemoveEvent event) { -// if (event.getTarget() instanceof User) { -// if (!(event.getNode() instanceof PermissionNode)) return; -// User user = (User) event.getTarget(); -// Player player = Bukkit.getPlayer(user.getUniqueId()); -// if (player == null) return; -// UserManager.checkPrefix(player, true); -// } -// } - public static void process(UserDataRecalculateEvent event) { - User user = event.getUser(); - Player player = Bukkit.getPlayer(user.getUniqueId()); + Player player = Bukkit.getPlayer(event.getUser().getUniqueId()); if (player == null) return; UserManager.checkPrefix(player, true); - } } diff --git a/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java b/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java index f61198d..95c8460 100644 --- a/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java +++ b/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java @@ -33,7 +33,9 @@ public class PrefixManager { Main.log("配置文件中暂无任何前缀配置,请检查。"); return; } + HashMap dataPrefixes = new HashMap<>(); + for (String prefixIdentifier : prefixesSection.getKeys(false)) { ConfigurationSection configuredPrefixSection = prefixesSection.getConfigurationSection(prefixIdentifier); if (configuredPrefixSection == null) continue; @@ -55,10 +57,12 @@ public class PrefixManager { dataPrefixes.put(prefixIdentifier, new ConfiguredPrefix(prefixIdentifier, name, content, weight, permission, itemHasPermission, itemNoPermission, itemUsing)); } - prefixes = dataPrefixes; + PrefixManager.prefixes.clear(); + PrefixManager.prefixes = dataPrefixes; } public static void loadDefaultPrefix() { + PrefixManager.defaultPrefix = null; ConfigurationSection defaultPrefixSection = ConfigManager.getConfig().getConfigurationSection("defaultPrefix"); if (defaultPrefixSection != null) { String name = defaultPrefixSection.getString("name", "默认前缀"); @@ -80,9 +84,9 @@ public class PrefixManager { .addFlag(ItemFlag.HIDE_ENCHANTS) .toItemStack() ); - defaultPrefix = new ConfiguredPrefix("default", name, content, 0, null, itemNotUsing, null, itemUsing); + PrefixManager.defaultPrefix = new ConfiguredPrefix("default", name, content, 0, null, itemNotUsing, null, itemUsing); } else { - defaultPrefix = new ConfiguredPrefix("default", "默认前缀", "&r", 0, null, + PrefixManager.defaultPrefix = new ConfiguredPrefix("default", "默认前缀", "&r", 0, null, new ItemStackFactory(Material.NAME_TAG) .setDisplayName("&f默认前缀") .addLore(" ") diff --git a/src/main/java/cc/carm/plugin/userprefix/manager/UserManager.java b/src/main/java/cc/carm/plugin/userprefix/manager/UserManager.java index bd64b45..a0296d6 100644 --- a/src/main/java/cc/carm/plugin/userprefix/manager/UserManager.java +++ b/src/main/java/cc/carm/plugin/userprefix/manager/UserManager.java @@ -4,6 +4,7 @@ import cc.carm.plugin.userprefix.Main; import cc.carm.plugin.userprefix.configuration.PrefixConfig; import cc.carm.plugin.userprefix.model.ConfiguredPrefix; import cc.carm.plugin.userprefix.nametag.UserNameTag; +import cc.carm.plugin.userprefix.ui.PrefixSelectGUI; import cc.carm.plugin.userprefix.util.MessageUtil; import net.luckperms.api.model.user.User; import net.luckperms.api.node.NodeType; @@ -30,6 +31,20 @@ public class UserManager { return nameTag; } + public static void initPlayer(Player player) { + UserManager.checkPrefix(player, false); + if (PrefixConfig.Functions.NAME_PREFIX.get()) { + UserManager.createNameTag(player); + UserManager.updatePrefixView(player, true); + } + } + + public static void unloadPlayer(Player player) { + PrefixSelectGUI.removeOpening(player); + UserManager.unloadNameTag(player.getUniqueId()); + UserManager.checkingPlayers.remove(player.getUniqueId()); + } + /** * 更新前缀显示效果 * @@ -61,7 +76,7 @@ public class UserManager { if (onlinePlayerPrefix != null) { tag.setPrefix(onlinePlayer, onlinePlayerPrefix.getContent()); tag.setOrder(onlinePlayer, onlinePlayerPrefix.getWeight()); - Main.debug("为玩家 " + player.getName() + " 设置了 " + player.getName() + "的前缀为 #" + onlinePlayerPrefix.getWeight() + " " + onlinePlayerPrefix.getName()); + Main.debug("为玩家 " + player.getName() + " 设置了 " + onlinePlayer.getName() + "的前缀为 #" + onlinePlayerPrefix.getWeight() + " " + onlinePlayerPrefix.getName()); } } } diff --git a/src/main/java/cc/carm/plugin/userprefix/model/ConfiguredPrefix.java b/src/main/java/cc/carm/plugin/userprefix/model/ConfiguredPrefix.java index 8e78fe1..586a06f 100644 --- a/src/main/java/cc/carm/plugin/userprefix/model/ConfiguredPrefix.java +++ b/src/main/java/cc/carm/plugin/userprefix/model/ConfiguredPrefix.java @@ -37,58 +37,30 @@ public class ConfiguredPrefix { return name; } - public void setName(String name) { - this.name = name; - } - public String getContent() { return ColorParser.parseColor(content); } - public void setContent(String content) { - this.content = content; - } - public int getWeight() { return weight; } - public void setWeight(int weight) { - this.weight = weight; - } - public String getPermission() { return permission; } - public void setPermission(String permission) { - this.permission = permission; - } - public ItemStack getItemHasPermission() { return itemHasPermission; } - public void setItemHasPermission(ItemStack itemHasPermission) { - this.itemHasPermission = itemHasPermission; - } - public ItemStack getItemNoPermission() { return itemNoPermission; } - public void setItemNoPermission(ItemStack itemNoPermission) { - this.itemNoPermission = itemNoPermission; - } - public ItemStack getItemWhenUsing() { return itemWhenUsing; } - public void setItemWhenUsing(ItemStack itemWhenUsing) { - this.itemWhenUsing = itemWhenUsing; - } - public boolean isVisibleNoPermission() { return this.itemNoPermission != null; } diff --git a/src/main/java/cc/carm/plugin/userprefix/util/ItemStackFactory.java b/src/main/java/cc/carm/plugin/userprefix/util/ItemStackFactory.java index 1a3b6e7..3e47b80 100644 --- a/src/main/java/cc/carm/plugin/userprefix/util/ItemStackFactory.java +++ b/src/main/java/cc/carm/plugin/userprefix/util/ItemStackFactory.java @@ -128,14 +128,4 @@ public class ItemStackFactory { this.item.setItemMeta(im); return this; } - - public ItemStackFactory setSkullOwner(String name) { - if (this.item.getType() == Material.PLAYER_HEAD || this.item.getType() == Material.PLAYER_WALL_HEAD) { - SkullMeta im = (SkullMeta) this.item.getItemMeta(); - im.setOwner(name); - this.item.setItemMeta(im); - } - - return this; - } }