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