/**
* Updates and clears PvP flag of {@link L2PcInstance} after specified time.
* @author Tryskell, Hasha
*/
public final class PvpFlagTaskManager implements Runnable
{
private final Map<L2PcInstance, Long> _players = new ConcurrentHashMap<>();
public static final PvpFlagTaskManager getInstance()
{
return SingletonHolder._instance;
}
protected PvpFlagTaskManager()
{
// Run task each second.
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 1000, 1000);
}
/**
* Adds {@link L2PcInstance} to the PvpFlagTask.
* @param player : L2PcInstance to be added and checked.
* @param time : Time in ms, after which the PvP flag is removed.
*/
public final void add(L2PcInstance player, long time)
{
_players.put(player, System.currentTimeMillis() + time);
}
/**
* Removes {@link L2PcInstance} from the PvpFlagTask.
* @param player : {@link L2PcInstance} to be removed.
*/
public final void remove(L2PcInstance player)
{
_players.remove(player);
}
@Override
public final void run()
{
// List is empty, skip.
if (_players.isEmpty())
return;
// Get current time.
final long currentTime = System.currentTimeMillis();
// Loop all players.
for (Iterator<Map.Entry<L2PcInstance, Long>> iterator = _players.entrySet().iterator(); iterator.hasNext();)
{
// Get entry of current iteration.
Map.Entry<L2PcInstance, Long> entry = iterator.next();
// Get time left and check.
final long timeLeft = entry.getValue();
if (_players.isInsideZone(ZoneId.BOSS))
entry.setValue(System.currentTimeMillis() + Config.PVP_NORMAL_TIME);
// Time is running out, clear PvP flag and remove from list.
if (currentTime > timeLeft)
{
entry.getKey().updatePvPFlag(0);
iterator.remove();
}
// Time almost runned out, update to blinking PvP flag.
else if (currentTime > (timeLeft - 5000))
entry.getKey().updatePvPFlag(2);
// Time didn't run out, keep PvP flag.
else
entry.getKey().updatePvPFlag(1);
}
}
private static class SingletonHolder
{
protected static final PvpFlagTaskManager _instance = new PvpFlagTaskManager();
}
}
Modificar mensaje
Question
Miracles
Script if someone need it, make all GrandBoss Chaotic Zone http://www.lineager.su/always-pvp-status-in-boss-zone/ .
Someone know why got this error? Thanks guys.
Error
PvpFlagTaskManager.java
/** * Updates and clears PvP flag of {@link L2PcInstance} after specified time. * @author Tryskell, Hasha */ public final class PvpFlagTaskManager implements Runnable { private final Map<L2PcInstance, Long> _players = new ConcurrentHashMap<>(); public static final PvpFlagTaskManager getInstance() { return SingletonHolder._instance; } protected PvpFlagTaskManager() { // Run task each second. ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 1000, 1000); } /** * Adds {@link L2PcInstance} to the PvpFlagTask. * @param player : L2PcInstance to be added and checked. * @param time : Time in ms, after which the PvP flag is removed. */ public final void add(L2PcInstance player, long time) { _players.put(player, System.currentTimeMillis() + time); } /** * Removes {@link L2PcInstance} from the PvpFlagTask. * @param player : {@link L2PcInstance} to be removed. */ public final void remove(L2PcInstance player) { _players.remove(player); } @Override public final void run() { // List is empty, skip. if (_players.isEmpty()) return; // Get current time. final long currentTime = System.currentTimeMillis(); // Loop all players. for (Iterator<Map.Entry<L2PcInstance, Long>> iterator = _players.entrySet().iterator(); iterator.hasNext();) { // Get entry of current iteration. Map.Entry<L2PcInstance, Long> entry = iterator.next(); // Get time left and check. final long timeLeft = entry.getValue(); if (_players.isInsideZone(ZoneId.BOSS)) entry.setValue(System.currentTimeMillis() + Config.PVP_NORMAL_TIME); // Time is running out, clear PvP flag and remove from list. if (currentTime > timeLeft) { entry.getKey().updatePvPFlag(0); iterator.remove(); } // Time almost runned out, update to blinking PvP flag. else if (currentTime > (timeLeft - 5000)) entry.getKey().updatePvPFlag(2); // Time didn't run out, keep PvP flag. else entry.getKey().updatePvPFlag(1); } } private static class SingletonHolder { protected static final PvpFlagTaskManager _instance = new PvpFlagTaskManager(); } } Modificar mensaje3 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now