Fix Asynchronous entity world add

This commit is contained in:
Jakub Kolář 2016-04-02 17:35:48 +02:00
parent 498f2441ce
commit ec1d71680a
2 changed files with 47 additions and 29 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cz.boosik</groupId>
<artifactId>boosCooldowns</artifactId>
<version>3.10.0-GIT</version>
<version>3.10.1-GIT</version>
<name>boosCooldowns</name>
<packaging>jar</packaging>
<url>http://maven.apache.org</url>

View File

@ -1,14 +1,5 @@
package cz.boosik.boosCooldown;
import cz.boosik.boosCooldown.Managers.*;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import util.boosChat;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -17,6 +8,24 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import cz.boosik.boosCooldown.Managers.BoosAliasManager;
import cz.boosik.boosCooldown.Managers.BoosConfigManager;
import cz.boosik.boosCooldown.Managers.BoosCoolDownManager;
import cz.boosik.boosCooldown.Managers.BoosItemCostManager;
import cz.boosik.boosCooldown.Managers.BoosLimitManager;
import cz.boosik.boosCooldown.Managers.BoosPriceManager;
import cz.boosik.boosCooldown.Managers.BoosWarmUpManager;
import cz.boosik.boosCooldown.Managers.BoosXpCostManager;
import util.boosChat;
public class BoosCoolDownListener implements Listener {
private static BoosCoolDown plugin;
@ -24,7 +33,7 @@ public class BoosCoolDownListener implements Listener {
plugin = instance;
}
public static Map<String,Boolean> commandQueue = new ConcurrentHashMap();
public static Map<String, Boolean> commandQueue = new ConcurrentHashMap();
private void checkRestrictions(PlayerCommandPreprocessEvent event,
Player player, String regexCommad, String originalCommand,
@ -35,7 +44,7 @@ public class BoosCoolDownListener implements Listener {
if (!(perm == null)) {
if (!player.hasPermission(perm)) {
String msg = BoosConfigManager.getPermissionMessage(player, regexCommad);
if (!(msg == null)){
if (!(msg == null)) {
boosChat.sendMessageToPlayer(player, msg);
}
event.setCancelled(true);
@ -78,7 +87,7 @@ public class BoosCoolDownListener implements Listener {
}
} else {
boolean warmupInProgress = BoosWarmUpManager.isWarmUpProcess(player, regexCommad);
boolean cooldownInProgress = BoosCoolDownManager.isCoolingdown(player,regexCommad,cooldownTime);
boolean cooldownInProgress = BoosCoolDownManager.isCoolingdown(player, regexCommad, cooldownTime);
if (!BoosPriceManager.has(player, price)
&& !warmupInProgress && !cooldownInProgress) {
String msg = "";
@ -124,20 +133,20 @@ public class BoosCoolDownListener implements Listener {
if (!event.isCancelled()) {
List<String> linkGroup = BoosConfigManager.getSharedLimits(
regexCommad, player);
if (linkGroup.isEmpty()) {
BoosLimitManager.setUses(player, regexCommad);
} else {
BoosLimitManager.setUses(player, regexCommad);
for (String a : linkGroup) {
BoosLimitManager.setUses(player, a);
}
if (linkGroup.isEmpty()) {
BoosLimitManager.setUses(player, regexCommad);
} else {
BoosLimitManager.setUses(player, regexCommad);
for (String a : linkGroup) {
BoosLimitManager.setUses(player, a);
}
}
if (BoosConfigManager.getCommandLogging()) {
BoosCoolDown.commandLogger(player.getName(), originalCommand);
}
}
for (String key : commandQueue.keySet()){
if (key.startsWith(String.valueOf(player.getUniqueId()))){
for (String key : commandQueue.keySet()) {
if (key.startsWith(String.valueOf(player.getUniqueId()))) {
commandQueue.remove(key);
}
}
@ -229,12 +238,15 @@ public class BoosCoolDownListener implements Listener {
break;
}
}
if (!BoosConfigManager.getConfirmCommandEnabled(player) || (commandQueue.keySet().contains(uuid + "@" + originalCommand) && commandQueue.get(uuid + "@" + originalCommand))) {
if (!BoosConfigManager.getConfirmCommandEnabled(player) || (commandQueue
.keySet()
.contains(uuid + "@" + originalCommand) && commandQueue.get(uuid + "@" + originalCommand))) {
this.checkRestrictions(event, player, regexCommad, originalCommand,
warmupTime, cooldownTime, price, item, count, limit,
xpPrice);
} else {
if ((price > 0 || xpPrice > 0 || count > 0 || limit > 0) && !BoosWarmUpManager.isWarmUpProcess(player, regexCommad) && !BoosCoolDownManager.isCoolingdown(player,regexCommad,cooldownTime)) {
if ((price > 0 || xpPrice > 0 || count > 0 || limit > 0) && !BoosWarmUpManager.isWarmUpProcess(player,
regexCommad) && !BoosCoolDownManager.isCoolingdown(player, regexCommad, cooldownTime)) {
if (BoosConfigManager.getConfirmCommandEnabled(player)) {
commandQueue.put(uuid + "@" + originalCommand, false);
String questionMessage = BoosConfigManager.getQuestionMessage();
@ -246,7 +258,7 @@ public class BoosCoolDownListener implements Listener {
if (price > 0) {
String priceMessage = BoosConfigManager.getItsPriceMessage();
priceMessage = priceMessage.replace("&price&", BoosCoolDown.getEconomy().format(price))
.replace("&balance&", BoosCoolDown.getEconomy().format(BoosCoolDown.getEconomy().getBalance(player)));
.replace("&balance&", BoosCoolDown.getEconomy().format(BoosCoolDown.getEconomy().getBalance(player)));
boosChat.sendMessageToPlayer(player, " " + priceMessage);
}
}
@ -284,16 +296,21 @@ public class BoosCoolDownListener implements Listener {
}
@EventHandler(priority = EventPriority.NORMAL)
private void onPlayerChatEvent(AsyncPlayerChatEvent event){
Player player = event.getPlayer();
private void onPlayerChatEvent(AsyncPlayerChatEvent event) {
final Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
if (BoosConfigManager.getConfirmCommandEnabled(player)) {
for (String key : commandQueue.keySet()) {
String[] keyList = key.split("@");
final String[] keyList = key.split("@");
if (keyList[0].equals(String.valueOf(uuid))) {
if (event.getMessage().equalsIgnoreCase(BoosConfigManager.getConfirmCommandMessage())) {
commandQueue.put(key, true);
player.chat(keyList[1]);
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
player.chat(keyList[1]);
}
});
event.setCancelled(true);
} else {
commandQueue.remove(key);
@ -306,6 +323,7 @@ public class BoosCoolDownListener implements Listener {
}
}
}
private void start(PlayerCommandPreprocessEvent event, Player player,
String regexCommad, String originalCommand, int warmupTime,
int cooldownTime) {