From ced1448a4b4eb88e13ed051064ead9b62068121d Mon Sep 17 00:00:00 2001 From: GeekFrog Date: Mon, 25 Jun 2018 04:37:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E5=A0=86BU?= =?UTF-8?q?G=EF=BC=8C=E4=B8=8D=E8=AE=B0=E5=BE=97=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BB=80=E4=B9=88=E4=BA=86...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/gg/frog/mc/base/PluginMain.java | 46 +++++++++++------- .../frog/mc/base/listener/BaseListener.java | 27 +++++++++++ .../gg/frog/mc/nametags/command/TagCmd.java | 8 ++-- .../frog/mc/nametags/gui/PlayerTagShow.java | 21 ++++---- .../mc/nametags/listener/TagsListener.java | 19 ++++---- .../frog/mc/nametags/model/PlayerTagBean.java | 2 +- .../mc/permissionstime/command/GiveCmd.java | 2 +- .../mc/permissionstime/command/PtCommand.java | 4 +- .../permissionstime/command/RemoveAllCmd.java | 2 +- .../mc/permissionstime/command/RemoveCmd.java | 2 +- .../mc/permissionstime/command/SetCmd.java | 2 +- .../permissionstime/config/PackagesCfg.java | 13 +++++ .../gui/PlayerPermissionShow.java | 2 +- .../permissionstime/listener/PtListener.java | 25 ++++------ .../model/cfg/PermissionPackageBean.java | 48 ++++++++++--------- 16 files changed, 138 insertions(+), 87 deletions(-) create mode 100644 src/main/gg/frog/mc/base/listener/BaseListener.java diff --git a/pom.xml b/pom.xml index edc754c..12706bc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 gg.frog.mc permissionstime - 0.4.2-SNAPSHOT + 0.4.2-SNAPSHOT-b1001 jar PermissionsTime 支持跨服的权限限时插件 diff --git a/src/main/gg/frog/mc/base/PluginMain.java b/src/main/gg/frog/mc/base/PluginMain.java index 46b6806..999b1b7 100644 --- a/src/main/gg/frog/mc/base/PluginMain.java +++ b/src/main/gg/frog/mc/base/PluginMain.java @@ -14,6 +14,7 @@ import org.bukkit.plugin.java.JavaPlugin; import gg.frog.mc.base.config.ConfigManager; import gg.frog.mc.base.config.PluginCfg; +import gg.frog.mc.base.listener.BaseListener; import gg.frog.mc.base.utils.FileUtil; import gg.frog.mc.base.utils.StrUtil; import gg.frog.mc.base.utils.UpdateCheck; @@ -38,7 +39,8 @@ public class PluginMain extends JavaPlugin { private Permission permission = null; public static boolean enabledHdPlugin; public static boolean enabledPlaceholder; - private Map playerMap = new ConcurrentHashMap<>(); + private Map PLAYER_UUID_MAP = new ConcurrentHashMap<>(); + private Map OFFLINE_PLAYER_MAP = new ConcurrentHashMap<>(); public PluginMain() { PLUGIN_NAME = getDescription().getName(); @@ -85,6 +87,7 @@ public class PluginMain extends JavaPlugin { * 这里可以注册多个 */ private void registerListeners() { + pm.getServer().getPluginManager().registerEvents(new BaseListener(pm), pm); pm.getServer().getPluginManager().registerEvents(new PtListener(pm), pm); pm.getServer().getPluginManager().registerEvents(new TagsListener(pm), pm); } @@ -115,8 +118,8 @@ public class PluginMain extends JavaPlugin { return permission; } - public Map getPlayerMap() { - return playerMap; + public Map getOFFLINE_PLAYER_MAP() { + return OFFLINE_PLAYER_MAP; } private boolean checkPluginDepends() { @@ -186,25 +189,16 @@ public class PluginMain extends JavaPlugin { return sm.updateDatabase(); } - public String getPlayerUUIDByName(String name) { - OfflinePlayer p = getOfflinePlayer(name); - if (p == null) { - return null; - } else { - return p.getUniqueId().toString(); - } - } - public OfflinePlayer getOfflinePlayer(String name) { if (name != null) { - OfflinePlayer p1 = playerMap.get(name); - if (p1 != null) - return p1; + OfflinePlayer p = OFFLINE_PLAYER_MAP.get(name); + if (p != null) + return p; for (OfflinePlayer p2 : getServer().getOfflinePlayers()) { if (p2 == null) continue; if (p2.getName().equalsIgnoreCase(name)) { - playerMap.put(name, p2); + OFFLINE_PLAYER_MAP.put(name, p2); return p2; } } @@ -212,6 +206,26 @@ public class PluginMain extends JavaPlugin { return null; } + public String getPlayerUUIDByName(String name) { + if (name != null) { + String uuid = PLAYER_UUID_MAP.get(name); + if (uuid != null) { + return uuid; + } else { + for (OfflinePlayer p : getServer().getOfflinePlayers()) { + if (p == null) + continue; + if (p.getName().equalsIgnoreCase(name)) { + uuid = p.getUniqueId().toString(); + PLAYER_UUID_MAP.put(name, uuid); + return uuid; + } + } + } + } + return null; + } + public void writeFailLog(String content, Object... args) { FileUtil.writeOnFile(getDataFolder() + "/failure.log", "[" + StrUtil.nowTimeString() + "] " + MessageFormat.format(content, args)); } diff --git a/src/main/gg/frog/mc/base/listener/BaseListener.java b/src/main/gg/frog/mc/base/listener/BaseListener.java new file mode 100644 index 0000000..ce7eadc --- /dev/null +++ b/src/main/gg/frog/mc/base/listener/BaseListener.java @@ -0,0 +1,27 @@ +package gg.frog.mc.base.listener; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerKickEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import gg.frog.mc.base.PluginMain; + +public class BaseListener implements Listener { + + private PluginMain pm; + + public BaseListener(PluginMain pm) { + this.pm = pm; + } + + @EventHandler + public void onQuit(PlayerQuitEvent event) { + pm.getOFFLINE_PLAYER_MAP().remove(event.getPlayer().getName()); + } + + @EventHandler + public void onKick(PlayerKickEvent event) { + pm.getOFFLINE_PLAYER_MAP().remove(event.getPlayer().getName()); + } +} diff --git a/src/main/gg/frog/mc/nametags/command/TagCmd.java b/src/main/gg/frog/mc/nametags/command/TagCmd.java index c1c1372..edda9c6 100644 --- a/src/main/gg/frog/mc/nametags/command/TagCmd.java +++ b/src/main/gg/frog/mc/nametags/command/TagCmd.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import gg.frog.mc.base.PluginMain; @@ -22,6 +22,7 @@ public class TagCmd implements Runnable { private String[] args; private CommandSender sender; private boolean isPlayer; + private TagType type = null; public TagCmd(PluginMain pm, CommandSender sender, boolean isPlayer, String[] args) { this.pm = pm; @@ -37,7 +38,7 @@ public class TagCmd implements Runnable { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PROCESSING)); List itemList = new ArrayList(); List disItemList = new ArrayList(); - TagType type = null; + Map> p_i_map; if ("c".equals(args[1])) { type = TagNameCfg.TagType.NAMECOLOR_TYPE; @@ -60,8 +61,7 @@ public class TagCmd implements Runnable { disItemList.addAll(p_i_map.get(p)); } } - OfflinePlayer player = pm.getOfflinePlayer(sender.getName()); - PlayerTagShow.show(player, type, itemList, disItemList); + PlayerTagShow.show(pm, (Player) sender, type, itemList, disItemList); } else { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PARAMETER_MISMATCH)); sender.sendMessage(StrUtil.messageFormat(LangCfg.CMD_TAG, pm.PLUGIN_NAME_LOWER_CASE)); diff --git a/src/main/gg/frog/mc/nametags/gui/PlayerTagShow.java b/src/main/gg/frog/mc/nametags/gui/PlayerTagShow.java index fc35ae4..319c2c2 100644 --- a/src/main/gg/frog/mc/nametags/gui/PlayerTagShow.java +++ b/src/main/gg/frog/mc/nametags/gui/PlayerTagShow.java @@ -3,11 +3,12 @@ package gg.frog.mc.nametags.gui; import java.util.List; import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import gg.frog.mc.base.PluginMain; import gg.frog.mc.base.config.LangCfg; import gg.frog.mc.base.config.PluginCfg; import gg.frog.mc.base.utils.StrUtil; @@ -18,14 +19,14 @@ import gg.frog.mc.nametags.model.PlayerTagBean; public class PlayerTagShow { - public static void show(OfflinePlayer player, TagType tagType, List itemList, List disItemList) { + public static void show(PluginMain pm, Player p, TagType tagType, List itemList, List disItemList) { Inventory inventory = null; int size = 0; if (itemList.size() > 0) { inventory = Bukkit.createInventory(null, ((itemList.size() + disItemList.size()) % 9 == 0 ? (itemList.size() + disItemList.size()) : ((itemList.size() + disItemList.size()) / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§2§r")); - String uuid = player.getUniqueId().toString(); + String uuid = pm.getPlayerUUIDByName(p.getName()); PlayerTagBean playerTag = null; - if (TagNameCfg.PLAYER_TAG.containsKey(uuid)) { + if (uuid != null && TagNameCfg.PLAYER_TAG.containsKey(uuid)) { playerTag = TagNameCfg.PLAYER_TAG.get(uuid); if (playerTag != null) { for (ItemStack item : itemList) { @@ -36,7 +37,7 @@ public class PlayerTagShow { String tag = lores.get(lores.size() - 1); tag = tag.length() > 2 ? tag.substring(2) : ""; if (tagType == TagType.NAMECOLOR_TYPE) { - meta.setDisplayName(meta.getDisplayName() + player.getName()); + meta.setDisplayName(meta.getDisplayName() + p.getName()); playerTag.setNamecolor(tag); } else if (tagType == TagType.PREFIX_TYPE) { playerTag.setPrefix(tag); @@ -45,7 +46,7 @@ public class PlayerTagShow { } for (int i = 0; i < lores.size(); i++) { if (lores.get(i).contains("%displayname%")) { - lores.set(i, lores.get(i).replaceAll("%displayname%", playerTag.getDisplayNameStr(player.getPlayer())));// 效果 + lores.set(i, lores.get(i).replaceAll("%displayname%", playerTag.getDisplayNameStr(p)));// 效果 } } meta.setLore(lores); @@ -61,7 +62,7 @@ public class PlayerTagShow { String tag = lores.get(lores.size() - 1); tag = tag.length() > 2 ? tag.substring(2) : ""; if (tagType == TagType.NAMECOLOR_TYPE) { - meta.setDisplayName("§6§l§m" + meta.getDisplayName().substring(4) + player.getName()); + meta.setDisplayName("§6§l§m" + meta.getDisplayName().substring(4) + p.getName()); playerTag.setNamecolor(tag); } else if (tagType == TagType.PREFIX_TYPE) { meta.setDisplayName("§6§l§m" + meta.getDisplayName().substring(4)); @@ -72,7 +73,7 @@ public class PlayerTagShow { } for (int i = 0; i < lores.size(); i++) { if (lores.get(i).contains("%displayname%")) { - lores.set(i, lores.get(i).replaceAll("%displayname%", playerTag.getDisplayNameStr(player.getPlayer())));// 效果 + lores.set(i, lores.get(i).replaceAll("%displayname%", playerTag.getDisplayNameStr(p)));// 效果 } } meta.setLore(lores); @@ -85,9 +86,9 @@ public class PlayerTagShow { } } if (inventory != null && size > 0) { - player.getPlayer().openInventory(inventory); + p.openInventory(inventory); } else { - player.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_NO_TAG_DATA)); + p.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_NO_TAG_DATA)); } } } diff --git a/src/main/gg/frog/mc/nametags/listener/TagsListener.java b/src/main/gg/frog/mc/nametags/listener/TagsListener.java index 2fada16..9fca086 100644 --- a/src/main/gg/frog/mc/nametags/listener/TagsListener.java +++ b/src/main/gg/frog/mc/nametags/listener/TagsListener.java @@ -2,7 +2,7 @@ package gg.frog.mc.nametags.listener; import java.util.List; -import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -70,10 +70,9 @@ public class TagsListener implements Listener { List lores = event.getCurrentItem().getItemMeta().getLore(); if (lores.size() > 1) { String permissions = lores.get(lores.size() - 2); - permissions = permissions.length() > 4 ? permissions.substring(4) : ""; - OfflinePlayer player = this.pm.getOfflinePlayer(event.getWhoClicked().getName()); - String uuid = player.getUniqueId().toString(); - if (permissions.length() == 0 || player.getPlayer().hasPermission(permissions)) { + permissions = permissions.startsWith("§8§k") ? permissions.substring(4) : "noPermissions"; + String uuid = pm.getPlayerUUIDByName(event.getWhoClicked().getName()); + if (permissions.length() == 0 || event.getWhoClicked().hasPermission(permissions)) { if (TagNameCfg.PLAYER_TAG.containsKey(uuid)) { String itemName = event.getCurrentItem().getItemMeta().getDisplayName(); PlayerTagBean playerTag = TagNameCfg.PLAYER_TAG.get(uuid); @@ -84,16 +83,18 @@ public class TagsListener implements Listener { } else if (itemName.startsWith(StrUtil.messageFormat(LangCfg.TAG_SUFFIX_ITEM_NAME + "§3§r "))) { playerTag.setSuffix(lores.get(lores.size() - 1).substring(2)); } else { + event.getWhoClicked().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_NO_PERMISSION)); event.setCancelled(true); return; } - playerTag.setPlayerDisplayName(player.getPlayer(), true); + playerTag.setPlayerDisplayName((Player) event.getWhoClicked(), true); playerTag.saveConfig(); - player.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_TAG_SET_SUCCESS)); + event.getWhoClicked().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_TAG_SET_SUCCESS)); + event.setCancelled(true); + return; } - } else { - player.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_NO_PERMISSION)); } + event.getWhoClicked().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_NO_PERMISSION)); } } event.setCancelled(true); diff --git a/src/main/gg/frog/mc/nametags/model/PlayerTagBean.java b/src/main/gg/frog/mc/nametags/model/PlayerTagBean.java index e3744a4..0648976 100644 --- a/src/main/gg/frog/mc/nametags/model/PlayerTagBean.java +++ b/src/main/gg/frog/mc/nametags/model/PlayerTagBean.java @@ -217,7 +217,7 @@ public class PlayerTagBean extends PluginConfig implements IConfigBean, Cloneabl } public String getDisplayNameStr(Player player) { - return StrUtil.messageFormat(prefix + "§r" + namecolor + player.getName() + "§r" + suffix); + return StrUtil.messageFormat(player, prefix + "§r" + namecolor + player.getName() + "§r" + suffix); } @Override diff --git a/src/main/gg/frog/mc/permissionstime/command/GiveCmd.java b/src/main/gg/frog/mc/permissionstime/command/GiveCmd.java index 1812e49..2cfc5f7 100644 --- a/src/main/gg/frog/mc/permissionstime/command/GiveCmd.java +++ b/src/main/gg/frog/mc/permissionstime/command/GiveCmd.java @@ -66,7 +66,7 @@ public class GiveCmd implements Runnable { OfflinePlayer player = pm.getOfflinePlayer(playerName); if (player != null) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PROCESSING)); - String uuid = player.getUniqueId().toString(); + String uuid = pm.getPlayerUUIDByName(playerName); if (PluginCfg.IS_DEBUG) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid + "\n" + pack.toString() + "\n" + time + unitName + ".")); } diff --git a/src/main/gg/frog/mc/permissionstime/command/PtCommand.java b/src/main/gg/frog/mc/permissionstime/command/PtCommand.java index 1c73e49..d11c905 100644 --- a/src/main/gg/frog/mc/permissionstime/command/PtCommand.java +++ b/src/main/gg/frog/mc/permissionstime/command/PtCommand.java @@ -54,7 +54,7 @@ public class PtCommand implements CommandExecutor, TabCompleter { if (player.hasPermission("permissionstime.reload")) { for (Player p : pm.getServer().getOnlinePlayers()) { InventoryView inventory = p.getOpenInventory(); - if (inventory != null && (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§r").equals(inventory.getTitle()) || StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r").equals(inventory.getTitle()))) { + if (inventory != null && (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§1§r").equals(inventory.getTitle()) || StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§2§r").equals(inventory.getTitle()))) { inventory.close(); } } @@ -70,7 +70,7 @@ public class PtCommand implements CommandExecutor, TabCompleter { } else { for (Player p : pm.getServer().getOnlinePlayers()) { InventoryView inventory = p.getOpenInventory(); - if (inventory != null && (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§r").equals(inventory.getTitle()) || StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r").equals(inventory.getTitle()))) { + if (inventory != null && (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§1§r").equals(inventory.getTitle()) || StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§2§r").equals(inventory.getTitle()))) { inventory.close(); } } diff --git a/src/main/gg/frog/mc/permissionstime/command/RemoveAllCmd.java b/src/main/gg/frog/mc/permissionstime/command/RemoveAllCmd.java index c4bc250..3887ce0 100644 --- a/src/main/gg/frog/mc/permissionstime/command/RemoveAllCmd.java +++ b/src/main/gg/frog/mc/permissionstime/command/RemoveAllCmd.java @@ -39,7 +39,7 @@ public class RemoveAllCmd implements Runnable { OfflinePlayer player = pm.getOfflinePlayer(playerName); if (player != null) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PROCESSING)); - String uuid = player.getUniqueId().toString(); + String uuid = pm.getPlayerUUIDByName(playerName); if (PluginCfg.IS_DEBUG) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid)); } diff --git a/src/main/gg/frog/mc/permissionstime/command/RemoveCmd.java b/src/main/gg/frog/mc/permissionstime/command/RemoveCmd.java index 3cd4456..cd777b4 100644 --- a/src/main/gg/frog/mc/permissionstime/command/RemoveCmd.java +++ b/src/main/gg/frog/mc/permissionstime/command/RemoveCmd.java @@ -43,7 +43,7 @@ public class RemoveCmd implements Runnable { OfflinePlayer player = pm.getOfflinePlayer(playerName); if (player != null) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PROCESSING)); - String uuid = player.getUniqueId().toString(); + String uuid = pm.getPlayerUUIDByName(playerName); if (PluginCfg.IS_DEBUG) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid + "\n" + pack.toString())); } diff --git a/src/main/gg/frog/mc/permissionstime/command/SetCmd.java b/src/main/gg/frog/mc/permissionstime/command/SetCmd.java index 1103065..3037354 100644 --- a/src/main/gg/frog/mc/permissionstime/command/SetCmd.java +++ b/src/main/gg/frog/mc/permissionstime/command/SetCmd.java @@ -66,7 +66,7 @@ public class SetCmd implements Runnable { OfflinePlayer player = pm.getOfflinePlayer(playerName); if (player != null) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_PROCESSING)); - String uuid = player.getUniqueId().toString(); + String uuid = pm.getPlayerUUIDByName(playerName); if (PluginCfg.IS_DEBUG) { sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid + "\n" + pack.toString() + "\n" + time + unitName + " .")); } diff --git a/src/main/gg/frog/mc/permissionstime/config/PackagesCfg.java b/src/main/gg/frog/mc/permissionstime/config/PackagesCfg.java index 82a1c5f..bb8da46 100644 --- a/src/main/gg/frog/mc/permissionstime/config/PackagesCfg.java +++ b/src/main/gg/frog/mc/permissionstime/config/PackagesCfg.java @@ -13,15 +13,18 @@ import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import gg.frog.mc.base.PluginMain; +import gg.frog.mc.base.config.LangCfg; import gg.frog.mc.base.config.PluginCfg; import gg.frog.mc.base.utils.StrUtil; import gg.frog.mc.base.utils.config.PluginConfig; import gg.frog.mc.base.utils.nms.ItemUtil; import gg.frog.mc.permissionstime.model.cfg.PermissionPackageBean; +import gg.frog.mc.permissionstime.model.db.PlayerDataBean; public class PackagesCfg extends PluginConfig { @@ -67,6 +70,16 @@ public class PackagesCfg extends PluginConfig { allPermissions.addAll(e.getValue().getPermissions()); allGroups.addAll(e.getValue().getGroups()); } + for (Player player : pm.getServer().getOnlinePlayers()) { + try { + String uuid = pm.getPlayerUUIDByName(player.getName()); + List pdbList = pm.getSqlManager().getTime(uuid); + PermissionPackageBean.reloadPlayerPermissions(player, pdbList, pm, false); + } catch (Exception e) { + e.printStackTrace(); + sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_FAIL_SET_PERMISSION)); + } + } } private ItemStack getPackageItem(String name, PermissionPackageBean ppb) { diff --git a/src/main/gg/frog/mc/permissionstime/gui/PlayerPermissionShow.java b/src/main/gg/frog/mc/permissionstime/gui/PlayerPermissionShow.java index 8e91355..8c638fa 100644 --- a/src/main/gg/frog/mc/permissionstime/gui/PlayerPermissionShow.java +++ b/src/main/gg/frog/mc/permissionstime/gui/PlayerPermissionShow.java @@ -21,7 +21,7 @@ public class PlayerPermissionShow { Inventory inventory = null; int size = 0; if (pdbList.size() > 0) { - inventory = Bukkit.createInventory(null, (pdbList.size() % 9 == 0 ? pdbList.size() : (pdbList.size() / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§1§r")); + inventory = Bukkit.createInventory(null, (pdbList.size() % 9 == 0 ? pdbList.size() : (pdbList.size() / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§1§r")); for (PlayerDataBean pdb : pdbList) { PermissionPackageBean ppb = PackagesCfg.PACKAGES.get(pdb.getPackageName()); if (ppb != null && pdb.getGlobal() == ppb.getGlobal()) { diff --git a/src/main/gg/frog/mc/permissionstime/listener/PtListener.java b/src/main/gg/frog/mc/permissionstime/listener/PtListener.java index d69665a..a210d8c 100644 --- a/src/main/gg/frog/mc/permissionstime/listener/PtListener.java +++ b/src/main/gg/frog/mc/permissionstime/listener/PtListener.java @@ -25,21 +25,16 @@ public class PtListener implements Listener { this.pm = pm; } - @EventHandler(priority = EventPriority.LOWEST) + @EventHandler(priority = EventPriority.MONITOR) public void onJoin(PlayerLoginEvent event) { - new Thread(new Runnable() { - @Override - public void run() { - try { - String uuid = pm.getPlayerUUIDByName(event.getPlayer().getName()); - List pdbList = pm.getSqlManager().getTime(uuid); - PermissionPackageBean.reloadPlayerPermissions(event.getPlayer(), pdbList, pm, false); - } catch (Exception e) { - e.printStackTrace(); - event.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_FAIL_SET_PERMISSION)); - } - } - }).start(); + try { + String uuid = pm.getPlayerUUIDByName(event.getPlayer().getName()); + List pdbList = pm.getSqlManager().getTime(uuid); + PermissionPackageBean.reloadPlayerPermissions(event.getPlayer(), pdbList, pm, false); + } catch (Exception e) { + e.printStackTrace(); + event.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_FAIL_SET_PERMISSION)); + } } @EventHandler @@ -54,7 +49,6 @@ public class PtListener implements Listener { } } }).start(); - pm.getPlayerMap().remove(event.getPlayer().getName()); } @EventHandler @@ -69,7 +63,6 @@ public class PtListener implements Listener { } } }).start(); - pm.getPlayerMap().remove(event.getPlayer().getName()); } @EventHandler diff --git a/src/main/gg/frog/mc/permissionstime/model/cfg/PermissionPackageBean.java b/src/main/gg/frog/mc/permissionstime/model/cfg/PermissionPackageBean.java index 2fa5283..72052ed 100644 --- a/src/main/gg/frog/mc/permissionstime/model/cfg/PermissionPackageBean.java +++ b/src/main/gg/frog/mc/permissionstime/model/cfg/PermissionPackageBean.java @@ -220,11 +220,11 @@ public class PermissionPackageBean implements IConfigBean { } } - public static void reloadPlayerPermissions(OfflinePlayer player, List pdbList, PluginMain plugin) { - reloadPlayerPermissions(player, pdbList, plugin, true); + public static void reloadPlayerPermissions(OfflinePlayer player, List pdbList, PluginMain pm) { + reloadPlayerPermissions(player, pdbList, pm, true); } - public static void reloadPlayerPermissions(OfflinePlayer player, List pdbList, PluginMain plugin, boolean async) { + public static void reloadPlayerPermissions(OfflinePlayer player, List pdbList, PluginMain pm, boolean async) { long delay = -1; long now = new Date().getTime(); PermissionPackageBean addPpb = new PermissionPackageBean(); @@ -250,12 +250,12 @@ public class PermissionPackageBean implements IConfigBean { } } if (async) { - plugin.getServer().getScheduler().runTask(plugin, new Runnable() { + pm.getServer().getScheduler().runTask(pm, new Runnable() { @Override public void run() { try { - subPpb.clearPlayer(player, plugin.getServer(), plugin.getPermission()); - addPpb.givePlayer(player, plugin.getServer(), plugin.getPermission()); + subPpb.clearPlayer(player, pm.getServer(), pm.getPermission()); + addPpb.givePlayer(player, pm.getServer(), pm.getPermission()); } catch (Exception e) { e.printStackTrace(); player.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_FAIL_SET_PERMISSION)); @@ -263,19 +263,19 @@ public class PermissionPackageBean implements IConfigBean { } }); } else { - subPpb.clearPlayer(player, plugin.getServer(), plugin.getPermission()); - addPpb.givePlayer(player, plugin.getServer(), plugin.getPermission()); + subPpb.clearPlayer(player, pm.getServer(), pm.getPermission()); + addPpb.givePlayer(player, pm.getServer(), pm.getPermission()); } - checkExpire(player, plugin); - String uuid = player.getUniqueId().toString(); + checkExpire(player, pm); + String uuid = pm.getPlayerUUIDByName(player.getName()); BukkitTask task = taskMap.get(uuid); if (pdbList.size() > 0) { delay = (delay / 1000 + 1) * 20;// 1秒=20ticks - task = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { + task = pm.getServer().getScheduler().runTaskLaterAsynchronously(pm, new Runnable() { @Override public void run() { - List tpdbList = plugin.getSqlManager().getTime(uuid); - reloadPlayerPermissions(player, tpdbList, plugin); + List tpdbList = pm.getSqlManager().getTime(uuid); + reloadPlayerPermissions(player, tpdbList, pm); } }, delay); taskMap.put(uuid, task); @@ -289,30 +289,32 @@ public class PermissionPackageBean implements IConfigBean { * @param plugin * @throws Exception */ - public static void delPlayerAllPermissions(OfflinePlayer player, PluginMain plugin) throws Exception { + public static void delPlayerAllPermissions(OfflinePlayer player, PluginMain pm) throws Exception { PermissionPackageBean subPpb = new PermissionPackageBean(); subPpb.getPermissions().addAll(PackagesCfg.allPermissions); subPpb.getGroups().addAll(PackagesCfg.allGroups); - plugin.getServer().getScheduler().runTask(plugin, new Runnable() { + pm.getServer().getScheduler().runTask(pm, new Runnable() { @Override public void run() { - subPpb.clearPlayer(player, plugin.getServer(), plugin.getPermission()); + subPpb.clearPlayer(player, pm.getServer(), pm.getPermission()); } }); - BukkitTask task = taskMap.get(player.getUniqueId().toString()); + String uuid = pm.getPlayerUUIDByName(player.getName()); + BukkitTask task = taskMap.get(uuid); if (task != null) { - plugin.getServer().getScheduler().cancelTask(task.getTaskId()); + pm.getServer().getScheduler().cancelTask(task.getTaskId()); } } - public static void checkExpire(OfflinePlayer player, PluginMain plugin) { - List playerDataList = plugin.getSqlManager().getAllTime(player.getUniqueId().toString()); + public static void checkExpire(OfflinePlayer player, PluginMain pm) { + String uuid = pm.getPlayerUUIDByName(player.getName()); + List playerDataList = pm.getSqlManager().getAllTime(uuid); long now = new Date().getTime(); for (PlayerDataBean playerData : playerDataList) { if (playerData.getExpire() < now) { PermissionPackageBean packageBean = PackagesCfg.PACKAGES.get(playerData.getPackageName()); if ((packageBean == null && !playerData.getGlobal()) || (packageBean != null && playerData.getGlobal() == packageBean.getGlobal())) { - plugin.getServer().getScheduler().runTask(plugin, new Runnable() { + pm.getServer().getScheduler().runTask(pm, new Runnable() { @Override public void run() { player.getPlayer().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.MSG_IS_EXPIRATION_DATE, packageBean != null ? packageBean.getDisplayName() : LangCfg.MSG_UNKNOWN_PACKAGE, playerData.getPackageName())); @@ -320,7 +322,7 @@ public class PermissionPackageBean implements IConfigBean { for (String commands : packageBean.getExpireCommands()) { try { commands = StrUtil.messageFormat(player.getPlayer(), commands); - plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), commands); + pm.getServer().dispatchCommand(pm.getServer().getConsoleSender(), commands); } catch (Exception e) { e.printStackTrace(); } @@ -328,7 +330,7 @@ public class PermissionPackageBean implements IConfigBean { } } }); - plugin.getSqlManager().delById(playerData.getId()); + pm.getSqlManager().delById(playerData.getId()); } } }