no cooldown on transaction fail, checs for worlds to prevent location

errors
This commit is contained in:
Boos 2012-01-16 12:42:12 +01:00
parent 893a0f7bc2
commit fc274ea1ad
5 changed files with 54 additions and 30 deletions

View File

@ -14,6 +14,7 @@ public class boosConfigManager {
protected static Configuration conf;
protected File confFile;
static List<String> players = new LinkedList<String>();
@SuppressWarnings("static-access")
public boosConfigManager(boosCoolDown boosCoolDown) {

View File

@ -78,14 +78,14 @@ public class boosCoolDown extends JavaPlugin {
&& command.equalsIgnoreCase("boosCooldowns")) {
boosConfigManager.reload();
boosChat.sendMessageToCommandSender(sender,
"&6[" + pdfFile.getName() + "]" + " config reloaded");
"&6[" + pdfFile.getName() + "]" + " config reloaded !DOES NOT WORK NOW!");
return true;
}
} else {
if (sender.isOp() && command.equalsIgnoreCase("boosCooldowns")) {
boosConfigManager.reload();
boosChat.sendMessageToCommandSender(sender,
"&6[" + pdfFile.getName() + "]" + " config reloaded");
"&6[" + pdfFile.getName() + "]" + " config reloaded !DOES NOT WORK NOW!");
return true;
}
}

View File

@ -232,6 +232,11 @@ public class boosCoolDownManager {
}
confusers.removeProperty("users." + player.getName() + ".cooldown");
}
static void cancelCooldown(Player player, String pre){
confusers.removeProperty("users." + player.getName() + ".cooldown." + pre);
confusers.save();
}
static boolean checkCoolDownOK(Player player, String pre, String message) {
pre = pre.toLowerCase();

View File

@ -17,6 +17,7 @@ import util.boosChat;
public class boosCoolDownPlayerListener extends PlayerListener {
private final boosCoolDown plugin;
private static ConcurrentHashMap<String, Location> playerloc = new ConcurrentHashMap<String, Location>();
private static ConcurrentHashMap<String, String> playerworld = new ConcurrentHashMap<String, String>();
public boosCoolDownPlayerListener(boosCoolDown instance) {
plugin = instance;
@ -46,6 +47,7 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (on) {
playerloc.put(player.getName() + "@", player.getLocation());
playerworld.put(player.getName() + "@", player.getWorld().getName());
int i = message.indexOf(' ');
if (i < 0) {
i = message.length();
@ -110,8 +112,9 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (boosCoolDown.isUsingPermissions()) {
if (warmUpSeconds > 0
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.nowarmup") && !boosCoolDown.getPermissions().has(player,
"booscooldowns.nowarmup."+pre)) {
"booscooldowns.nowarmup")
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.nowarmup." + pre)) {
if (!boosCoolDownManager.checkWarmUpOK(player, pre, message)) {
if (boosCoolDownManager.checkCoolDownOK(player, pre,
message)) {
@ -170,13 +173,15 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (boosCoolDown.isUsingEconomy()) {
if (boosConfigManager.getPrice(player, pre) > 0) {
if (!boosCoolDown.getPermissions().has(player,
"booscooldowns.noprice") && !boosCoolDown.getPermissions().has(player,
"booscooldowns.noprice."+pre)) {
"booscooldowns.noprice")
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.noprice." + pre)) {
if (boosCoolDown.getEconomy().getBalance(player.getName()) >= boosConfigManager
.getPrice(player, pre)) {
boosPriceManager.payForCommand(player, pre, message);
} else {
boosPriceManager.payForCommand(player, pre, message);
boosCoolDownManager.cancelCooldown(player, pre);
event.setCancelled(true);
return true;
}
@ -194,13 +199,9 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (boosCoolDown.isUsingPermissions()) {
if (player != null
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.nocancel.move") ) {
"booscooldowns.nocancel.move")) {
if (boosWarmUpManager.hasWarmUps(player) && hasMoved(player)) {
for (String key : playerloc.keySet()){
if (key.startsWith(player.getName() + "@")){
playerloc.remove(key);
}
}
clearLocWorld(player);
boosChat.sendMessageToPlayer(player,
boosConfigManager.getWarmUpCancelledByMoveMessage());
boosWarmUpManager.cancelWarmUps(player);
@ -210,11 +211,7 @@ public class boosCoolDownPlayerListener extends PlayerListener {
} else {
if (player != null) {
if (boosWarmUpManager.hasWarmUps(player) && hasMoved(player)) {
for (String key : playerloc.keySet()){
if (key.startsWith(player.getName() + "@")){
playerloc.remove(key);
}
}
clearLocWorld(player);
boosChat.sendMessageToPlayer(player,
boosConfigManager.getWarmUpCancelledByMoveMessage());
boosWarmUpManager.cancelWarmUps(player);
@ -223,17 +220,35 @@ public class boosCoolDownPlayerListener extends PlayerListener {
}
}
}
public static boolean hasMoved(Player player) {
Location curloc = player.getLocation();
Location cmdloc = playerloc.get(player.getName() + "@");
if(cmdloc.distanceSquared(curloc) > 2 ) {
return true;
}
return false;
}
String curworld = player.getWorld().getName();
String cmdworld = playerworld.get(player.getName() + "@");
Location curloc = player.getLocation();
Location cmdloc = playerloc.get(player.getName() + "@");
if (curworld != cmdworld) {
return true;
} else if (cmdloc.distanceSquared(curloc) > 2) {
return true;
}
return false;
}
public void onPlayerToggleSneak(PlayerToggleSneakEvent event){
public static void clearLocWorld(Player player){
for (String key : playerloc.keySet()) {
if (key.startsWith(player.getName() + "@")) {
playerloc.remove(key);
}
}
for (String key : playerworld.keySet()){
if (key.startsWith(player.getName() + "@")){
playerworld.remove(key);
}
}
}
public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
if (event.isCancelled()) {
return;
}
@ -241,7 +256,7 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (boosCoolDown.isUsingPermissions()) {
if (player != null
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.nocancel.sneak") ) {
"booscooldowns.nocancel.sneak")) {
if (boosWarmUpManager.hasWarmUps(player)) {
boosChat.sendMessageToPlayer(player,
boosConfigManager.getCancelWarmupOnSneakMessage());
@ -260,8 +275,8 @@ public class boosCoolDownPlayerListener extends PlayerListener {
}
}
}
public void onPlayerToggleSprint(PlayerToggleSprintEvent event){
public void onPlayerToggleSprint(PlayerToggleSprintEvent event) {
if (event.isCancelled()) {
return;
}
@ -269,7 +284,7 @@ public class boosCoolDownPlayerListener extends PlayerListener {
if (boosCoolDown.isUsingPermissions()) {
if (player != null
&& !boosCoolDown.getPermissions().has(player,
"booscooldowns.nocancel.sprint") ) {
"booscooldowns.nocancel.sprint")) {
if (boosWarmUpManager.hasWarmUps(player)) {
boosChat.sendMessageToPlayer(player,
boosConfigManager.getCancelWarmupOnSprintMessage());

View File

@ -28,15 +28,18 @@ public class boosWarmUpTimer extends TimerTask {
boosCoolDownManager.setWarmUpOK(player, pre, message);
boosWarmUpManager.removeWarmUpProcess(this.player.getName() + "@"
+ pre);
boosCoolDownPlayerListener.clearLocWorld(player);
player.chat(pre + message);
} else if (player.isOnline() && player.isDead() && boosWarmUpManager.hasWarmUps(player)){
boosCoolDownManager.removeWarmUp(player, pre, message);
boosWarmUpManager.removeWarmUpProcess(this.player.getName() + "@"
+ pre);
boosCoolDownPlayerListener.clearLocWorld(player);
} else if (!player.isOnline() && boosWarmUpManager.hasWarmUps(player)){
boosCoolDownManager.removeWarmUp(player, pre, message);
boosWarmUpManager.removeWarmUpProcess(this.player.getName() + "@"
+ pre);
boosCoolDownPlayerListener.clearLocWorld(player);
}
}
}