You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB

10 years ago
package ru.simsonic.rscPermissions.Bukkit;
11 years ago
import org.bukkit.entity.Player;
10 years ago
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.Bukkit.Listeners.MovingPlayersCatcher;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
public class RegionUpdateObserver extends RestartableThread
{
11 years ago
private static final long granularityMin = 20;
private static final long granularityMax = 10000;
private final BukkitPluginMain rscp;
11 years ago
private final MovingPlayersCatcher movedPlayers = new MovingPlayersCatcher();
10 years ago
public RegionUpdateObserver(BukkitPluginMain rscp)
11 years ago
{
this.rscp = rscp;
}
public void registerListeners()
{
rscp.getServer().getPluginManager().registerEvents(movedPlayers, rscp);
}
@Override
public void run()
{
try
{
Thread.currentThread().setName("rscp:" + this.getClass().getSimpleName());
11 years ago
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
11 years ago
long granularity = rscp.settings.getRegionFinderGranularity();
if(granularity < granularityMin)
granularity = granularityMin;
if(granularity > granularityMax)
granularity = granularityMax;
for(; !Thread.interrupted(); Thread.sleep(granularity))
for(Player player : movedPlayers.getMovedPlayersAsync())
if(rscp.regionListProvider.isRegionListChanged(player))
rscp.permissionManager.recalculatePlayer(player);
11 years ago
} catch(InterruptedException ex) {
}
}
}