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());
}
}
}