diff --git a/lib/Vault.jar b/lib/Vault.jar deleted file mode 100644 index f9aa324..0000000 Binary files a/lib/Vault.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index bc52162..87cb2ee 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.maxgamer QuickShop - 1.8.6 + 1.8.7 快捷商店重置版本... ${project.name} @@ -60,17 +60,14 @@ DEBUG &a全新版本 &c虚拟悬浮物(橙子提供 对 就是那个汉化COI的逗比)&e7老板修复逗比BUG... + &b1.8.7 - &e异步处理getOfflinePlayer 只能保证不卡服 连不上MOJANG-API还是一样...; + - &c修复部分情况下可以跳过AuthMe和Residence的事件拦截...; &b1.8.6 - &c修复getOfflinePlayer导致的服务器卡顿(连不上MOJANG...); &b1.8.4 - &7清理多余的监听事件,修复部分版本不兼容问题 支持1.9...; - &b1.8.3 - &7修复漏斗传输NPE错误...; UTF-8 - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - yumc-repo http://repo.yumc.pw/content/groups/public/ @@ -92,10 +89,9 @@ net.milkbowl.vault - VaultAPI + Vault + jar 1.5.6 - system - ${project.basedir}/lib/Vault.jar com.sk89q diff --git a/src/main/java/org/maxgamer/QuickShop/Listeners/PlayerListener.java b/src/main/java/org/maxgamer/QuickShop/Listeners/PlayerListener.java index 0a9b7c5..687cdb1 100644 --- a/src/main/java/org/maxgamer/QuickShop/Listeners/PlayerListener.java +++ b/src/main/java/org/maxgamer/QuickShop/Listeners/PlayerListener.java @@ -39,7 +39,7 @@ public class PlayerListener implements Listener { * Handles players left clicking a chest. Left click a NORMAL chest with * item : Send creation menu Left click a SHOP chest : Send purchase menu */ - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onClick(final PlayerInteractEvent e) { final Block b = e.getClickedBlock(); final Player p = e.getPlayer(); @@ -154,7 +154,7 @@ public class PlayerListener implements Listener { plugin.getShopManager().getActions().remove(e.getPlayer().getName()); } - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onSuperItemClick(final PlayerInteractEvent e) { final Player p = e.getPlayer(); if (p.getGameMode() != GameMode.SURVIVAL || e.getMaterial() != plugin.getConfigManager().getSuperItem()) { diff --git a/src/main/java/org/maxgamer/QuickShop/Util/MsgUtil.java b/src/main/java/org/maxgamer/QuickShop/Util/MsgUtil.java index fbce108..6ac31a3 100644 --- a/src/main/java/org/maxgamer/QuickShop/Util/MsgUtil.java +++ b/src/main/java/org/maxgamer/QuickShop/Util/MsgUtil.java @@ -114,20 +114,25 @@ public class MsgUtil { * them in the database. */ public static void send(final String player, final String message) { - @SuppressWarnings("deprecation") - final OfflinePlayer p = Bukkit.getOfflinePlayer(player); - if (p == null || !p.isOnline()) { - LinkedList msgs = player_messages.get(player); - if (msgs == null) { - msgs = new LinkedList(); - player_messages.put(player, msgs); + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + @SuppressWarnings("deprecation") + final OfflinePlayer p = Bukkit.getOfflinePlayer(player); + if (p == null || !p.isOnline()) { + LinkedList msgs = player_messages.get(player); + if (msgs == null) { + msgs = new LinkedList(); + player_messages.put(player, msgs); + } + msgs.add(message); + final String q = "INSERT INTO messages (owner, message, time) VALUES (?, ?, ?)"; + plugin.getDB().execute(q, player.toString(), message, System.currentTimeMillis()); + } else { + p.getPlayer().sendMessage(message); + } } - msgs.add(message); - final String q = "INSERT INTO messages (owner, message, time) VALUES (?, ?, ?)"; - plugin.getDB().execute(q, player.toString(), message, System.currentTimeMillis()); - } else { - p.getPlayer().sendMessage(message); - } + }); } public static void sendItemMessage(final Player p, final ItemStack is, final String msg) { @@ -181,8 +186,9 @@ public class MsgUtil { p.sendMessage(""); p.sendMessage(ChatColor.DARK_PURPLE + "+---------------------------------------------------+"); p.sendMessage(ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.shop-information")); - p.sendMessage(ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.owner", - Bukkit.getOfflinePlayer(shop.getOwner()).getName() == null ? (shop.isUnlimited() ? "系统商店" : "未知") : Bukkit.getOfflinePlayer(shop.getOwner()).getName())); + p.sendMessage(ChatColor.DARK_PURPLE + + "| " + + MsgUtil.p("menu.owner", Bukkit.getOfflinePlayer(shop.getOwner()).getName() == null ? (shop.isUnlimited() ? "系统商店" : "未知") : Bukkit.getOfflinePlayer(shop.getOwner()).getName())); final String msg = ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.item", shop.getDataName()); sendItemMessage(p, shop.getItem(), msg); if (Util.isTool(item.getType())) { diff --git a/src/main/java/org/maxgamer/QuickShop/Watcher/LogWatcher.java b/src/main/java/org/maxgamer/QuickShop/Watcher/LogWatcher.java index f1529c5..3f4f49a 100644 --- a/src/main/java/org/maxgamer/QuickShop/Watcher/LogWatcher.java +++ b/src/main/java/org/maxgamer/QuickShop/Watcher/LogWatcher.java @@ -12,36 +12,26 @@ import org.maxgamer.QuickShop.QuickShop; public class LogWatcher implements Runnable { private PrintStream ps; - private ArrayList logs = new ArrayList(5); + private final ArrayList logs = new ArrayList(5); public BukkitTask task; - public LogWatcher(QuickShop plugin, File log) { + public LogWatcher(final QuickShop plugin, final File log) { try { if (!log.exists()) { log.createNewFile(); } - FileOutputStream fos = new FileOutputStream(log, true); - this.ps = new PrintStream(fos); - } catch (FileNotFoundException e) { + final FileOutputStream fos = new FileOutputStream(log, true); + this.ps = new PrintStream(fos, true, "UTF-8"); + } catch (final FileNotFoundException e) { e.printStackTrace(); plugin.getLogger().severe("日志文件未找到!"); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); plugin.getLogger().severe("无法创建日志文件!"); } } - @Override - public void run() { - synchronized (logs) { - for (String s : logs) { - ps.println(s); - } - logs.clear(); - } - } - - public void add(String s) { + public void add(final String s) { synchronized (logs) { logs.add(s); } @@ -50,4 +40,14 @@ public class LogWatcher implements Runnable { public void close() { this.ps.close(); } + + @Override + public void run() { + synchronized (logs) { + for (final String s : logs) { + ps.println(s); + } + logs.clear(); + } + } } \ No newline at end of file