package be.isach.ultracosmetics.manager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import be.isach.ultracosmetics.player.UltraPlayer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import be.isach.ultracosmetics.UltraCosmetics;
public class SqlLoader {
List<String> loadList = Collections.synchronizedList(new ArrayList<String>());
private UltraCosmetics ultraCosmetics;
public SqlLoader(UltraCosmetics ultraCosmetics) {
this.ultraCosmetics = ultraCosmetics;
// Single "thread pool"
new BukkitRunnable() {
@Override
public void run() {
if (loadList.size() <= 0) {
return;
}
Iterator<String> iter = loadList.iterator();
while (iter.hasNext()) {
UltraPlayer current = null;
try {
Player p = Bukkit.getPlayer(UUID.fromString(iter.next()));
if (p == null || !p.isOnline()) {
iter.remove();
continue;
}
current = ultraCosmetics.getPlayerManager().getUltraPlayer(p);
//pre load two value then cache into server's
current.hasGadgetsEnabled();
current.canSeeSelfMorph();
current.isLoaded = true;
iter.remove();
} catch (Exception e) {
iter.remove();
// exception or not, just remove it.
continue;
}
}
}
}.runTaskTimerAsynchronously(ultraCosmetics, 0, 10);
}
public void addPreloadPlayer(UUID uuid) {
Player p = Bukkit.getPlayer(uuid);
if (p != null && p.isOnline()) {
loadList.add(uuid.toString());
}
}
}