package eu.univento.core.api.player; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.scoreboard.NameTagVisibility; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; import eu.univento.core.Core; import eu.univento.core.api.MySQL; /** * some permission management * @author joethei * @version 1.0 */ public class Perms{ private static HashMap ranks = new HashMap(); public static HashMap getRanks() { return ranks; } /** * gets the prefix of a player * @param r Ranks * @return String */ public static String getPrefix(Ranks r) { switch(r) { case Admin: return "§7[§4Admin§7]§4 "; case Developer: return "§7[§3Developer§7]§3 "; case Moderator: return "§7[§cModerator§7]§c "; case HeadBuilder: return "§7[§aHead-Builder§7]§a "; case Builder: return "§7[§2Builder§7]§2 "; case Supporter: return "§7[§bSupporter§7]§b "; case Youtuber: return "§5"; case Premium: return "§6"; case Spieler: return "§7"; default: return "§cFehler "; } } /** * gets the suffix of a player * @param r Ranks * @return String */ public static String getSuffix(Ranks r) { switch(r) { case Admin: return " §8» §f§l"; case Developer: return " §8» §f"; case Moderator: return " §8» §f"; case HeadBuilder: return " §8» §f"; case Builder: return " §8» §f"; case Supporter: return " §8» §f"; case Youtuber: return " §8» §f"; case Premium: return " §8» §f"; case Spieler: return " §8» §f"; default: return "§cFehler"; } } /** * gets color of a player * @param r Ranks * @return String */ public static String getColor(Ranks r) { switch(r) { case Admin: return "§4"; case Developer: return "§3"; case Moderator: return "§c"; case HeadBuilder: return "§a"; case Builder: return "§2"; case Supporter: return "§b"; case Youtuber: return "§5"; case Premium: return "§6"; case Spieler: return "§7"; default: return "§cFehler"; } } /** * returns scoreboard team for rank * @param r Ranks * @return Team */ public static Team getTeam(Ranks r) { switch(r) { case Admin: return Teams.Admin; case Developer: return Teams.Developer; case Moderator: return Teams.Moderator; case HeadBuilder: return Teams.HeadBuilder; case Builder: return Teams.Builder; case Supporter: return Teams.Supporter; case Youtuber: return Teams.Youtuber; case Premium: return Teams.Premium; case Spieler: return Teams.Spieler; default: return null; } } /** * @author joethei * @version 1.0 */ public static class Teams { private static Scoreboard board = Bukkit.getScoreboardManager().getMainScoreboard(); public static Team Admin = board.getTeam("a"); public static Team Developer = board.getTeam("b"); public static Team Moderator = board.getTeam("c"); public static Team HeadBuilder = board.getTeam("d"); public static Team Builder = board.getTeam("e"); public static Team Supporter = board.getTeam("f"); public static Team Youtuber = board.getTeam("g"); public static Team Premium = board.getTeam("h"); public static Team Spieler = board.getTeam("i"); } /** * setsup scoreboards */ public static void initScoreboard() { Scoreboard board = Bukkit.getScoreboardManager().getMainScoreboard(); Teams.Admin.unregister(); Teams.Developer.unregister(); Teams.Moderator.unregister(); Teams.HeadBuilder.unregister(); Teams.Builder.unregister(); Teams.Supporter.unregister(); Teams.Youtuber.unregister(); Teams.Premium.unregister(); Teams.Spieler.unregister(); Team Admin = board.registerNewTeam("a"); Team Developer = board.registerNewTeam("b"); Team Moderator = board.registerNewTeam("c"); Team HeadBuilder = board.registerNewTeam("d"); Team Builder = board.registerNewTeam("e"); Team Supporter = board.registerNewTeam("f"); Team Youtuber = board.registerNewTeam("g"); Team Premium = board.registerNewTeam("h"); Team Spieler = board.registerNewTeam("i"); Teams.Admin.setPrefix(getColor(Ranks.Admin)); Teams.Developer.setPrefix(getColor(Ranks.Developer)); Teams.Moderator.setPrefix(getColor(Ranks.Moderator)); Teams.HeadBuilder.setPrefix(getColor(Ranks.HeadBuilder)); Teams.Builder.setPrefix(getColor(Ranks.Builder)); Teams.Supporter.setPrefix(getColor(Ranks.Supporter)); Teams.Youtuber.setPrefix(getColor(Ranks.Youtuber)); Teams.Premium.setPrefix(getColor(Ranks.Premium)); Teams.Spieler.setPrefix(getColor(Ranks.Spieler)); } /** * gets Rank of player * @param p Player * @return Ranks */ public static Ranks getRank(CustomPlayer p) { return getRanks().get(p); } /** * gets Rank of player fresh from database * @param p Player * @return Ranks * @throws ClassNotFoundException Class couldn't be found * @throws SQLException SQL server not available or throwing error */ public static Ranks getRankFresh(CustomPlayer p) throws SQLException, ClassNotFoundException { MySQL sql = Core.returnSQL(); sql.openConnection(); ResultSet rs = sql.getConnection().createStatement().executeQuery("SELECT * FROM PlayerData WHERE player_uuid='" + p.getUniqueId() + "'"); rs.next(); if (rs.getString("player_uuid") != null) { String rank = rs.getString("Rank"); Ranks Rank = Ranks.valueOf(rank); sql.closeConnection(); return Rank; } sql.closeConnection(); return null; } /** * sets rank for player * @param p Player * @param r Ranks * @throws ClassNotFoundException Class couldn't be found * @throws SQLException SQL server not available or throwing error */ public static void setRank(CustomPlayer p, Ranks r) throws ClassNotFoundException, SQLException { MySQL sql = Core.returnSQL(); sql.openConnection(); sql.getConnection().createStatement().execute("UPDATE PlayerData SET Rank='" + r.toString() + "' WHERE player_uuid='" + p.getUniqueId() + "';"); sql.closeConnection(); } /** * if player is allowed to do * @param p Player * @param r Ranks * @return true / false * @throws ClassNotFoundException Class couldn't be found * @throws SQLException SQL server not available or throwing error */ public static boolean isAllowed(CustomPlayer p, Ranks r) throws ClassNotFoundException, SQLException{ Ranks rank; if(getRank(p) == null) { rank = getRankFresh(p); }else { rank = getRank(p); } return rank.value >= r.value; } public static enum Ranks{ Admin(9), Developer(8), Moderator(7), HeadBuilder(6), Builder(5), Supporter(4), Youtuber(3), Premium(2), Spieler(1); public final int value; private Ranks(int n) { this.value = n; } } }