package net.mc_pandacraft.java.util;

import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;

public class ScoreBoardUtil {
	
	/**
	 * Met à jour la Sidebar d'un Scoreboard donné
	 * @param scBrd Le Scoreboard à mettre à jour (ne doit pas être null)
	 * @param title Le titre de la Sidebar
	 * @param lines Les lignes qui doivent être affichés. Si un éléments du tableau est null, il sera compté comme une chaine vide. Toutes les lignes seront rognés aux 16 premiers caractères
	 */
	public static void updateScoreboardSidebar(Scoreboard scBrd, String title, String[] lines) {
		if (scBrd == null) throw new IllegalArgumentException("scBrd doit être non null");
		Objective obj = scBrd.getObjective("sidebar_autogen");
		if (obj != null)
			obj.unregister();
		
		if (lines == null || lines.length == 0)
			return;
		
		obj = scBrd.registerNewObjective("sidebar_autogen", "dummy");
		obj.setDisplayName(title == null ? "" : title);
		obj.setDisplaySlot(DisplaySlot.SIDEBAR);
		
		int boardPos = lines.length;
		for (String line : lines) {
			if (line == null) line = "";
			
			Score score = obj.getScore(
					Bukkit.getServer().getOfflinePlayer(
							line.substring(
									0,
									(line.length()>16) ? 16 : line.length()
							)
					)
			);
			
			score.setScore(boardPos);
			boardPos--;
		}
	}

	/**
	 * Met à jour la Sidebar d'un Scoreboard donné
	 * @param scBrd Le Scoreboard à mettre à jour
	 * @param title Le titre de la Sidebar
	 * @param lines Les lignes qui doivent être affichés. Si un éléments du tableau est null, il sera compté comme une chaine vide. Toutes les lignes seront rognés aux 16 premiers caractères
	 */
	public static void updateScoreboardSidebar(Scoreboard scBrd, String title, List<String> lines) {
		updateScoreboardSidebar(scBrd, title, lines.toArray(new String[lines.size()]));
	}
	
}
