package org.arkham.cs.handler;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.UUID;
import org.arkham.cs.CosmeticSuite;
import org.arkham.cs.db.SQLConnectionThread;
import org.arkham.cs.db.SQLQueryThread;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class ChatColorManager {
private static HashMap<UUID, ChatColor> colors = new HashMap<>();
public ChatColorManager(){
}
public void sync(final Player player){
if(colors.get(player.getUniqueId()) != null){
return;
}
new BukkitRunnable() {
@Override
public void run() {
String uuid = "'" + player.getUniqueId() + "'";
String resultSet = "SELECT `code` FROM `colors` WHERE `player`=" + uuid;
ResultSet res = SQLConnectionThread.getResultSet(resultSet);
try {
if(res.next()){
String colorCode = res.getString("code");
ChatColor color = ChatColor.getByChar(colorCode);
setColor(player, color);
res.close();
} else {
setColor(player, ChatColor.WHITE);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}.runTaskAsynchronously(CosmeticSuite.getInstance());
}
public void setColor(Player player, ChatColor color){
colors.put(player.getUniqueId(), color);
SQLQueryThread.addQuery("INSERT INTO `colors` VALUES('" + player.getUniqueId().toString() + "', '" + color.getChar() + "') ON DUPLICATE KEY UPDATE `code`='" + color.getChar() + "'");
}
public boolean hasColor(Player player){
return colors.get(player.getUniqueId()) != null;
}
public ChatColor getColor(Player player){
ChatColor color = colors.get(player.getUniqueId());
if(color == null){
sync(player);
}
return color == null ? ChatColor.GRAY : color;
}
}