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
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;
|
||
11 years ago
|
import ru.simsonic.rscUtilityLibrary.BukkitListeners.MovingPlayersCatcher;
|
||
10 years ago
|
import ru.simsonic.rscUtilityLibrary.RestartableThread;
|
||
11 years ago
|
|
||
10 years ago
|
public class RegionUpdateObserver extends RestartableThread
|
||
11 years ago
|
{
|
||
11 years ago
|
private static final long granularityMin = 20;
|
||
|
private static final long granularityMax = 10000;
|
||
11 years ago
|
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
|
||
|
{
|
||
10 years ago
|
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))
|
||
10 years ago
|
rscp.permissionManager.resolvePlayer(player);
|
||
11 years ago
|
} catch(InterruptedException ex) {
|
||
|
}
|
||
|
}
|
||
11 years ago
|
}
|