package me.gtacraft.plugins.safezone.util;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import me.gtacraft.plugins.safezone.Safezone;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by Connor on 6/27/14. Designed for the GTA-Safezone project.
*/
public class SafezoneUtil {
public static boolean isInSafeZone(Location location) {
if (!(Safezone.getInstance().getWorld().equals(location.getWorld())))
return false;
for (ProtectedRegion pr : Safezone.getInstance().getSafeZoneRegions()) {
if (pr.contains(location.getBlockX(), location.getBlockY(), location.getBlockZ()))
return true;
}
return false;
}
public static volatile ConcurrentHashMap<String, Integer> countdown = new ConcurrentHashMap<String, Integer>();
public static void tick() {
Runnable recall = new Runnable() {
public void run() {
for (String key : countdown.keySet()) {
int value = countdown.remove(key);
if (--value == 0) {
Player find = Bukkit.getPlayer(key);
if (find != null && !(SafezoneUtil.isInSafeZone(find.getLocation())))
find.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e&l(!) &eYou will now deal and receive damage!"));
continue;
}
countdown.put(key, value);
}
}
};
Bukkit.getScheduler().scheduleAsyncRepeatingTask(Safezone.getInstance(), recall, 20l, 20l);
}
public static int getSubscribedTime(String key) {
try {
if (key == null)
return -1;
return countdown.containsKey(key) && countdown.get(key) != null ? ((Integer)countdown.get(key)).intValue() : -1;
} catch (NullPointerException err) {
return -1;
}
}
public static void subscribe(String key, int time) {
countdown.put(key, time);
}
public static void unsubscribe(String key) {
countdown.remove(key);
}
}