Core/src/de/joethei/core/api/Perms.java

161 lines
4.2 KiB
Java

package de.joethei.core.api;
import de.joethei.core.Core;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
/**
* some permission management
* @author joethei
* @version 1.0
*/
public class Perms{
private static HashMap<CustomPlayer, Ranks> ranks = new HashMap<CustomPlayer, Ranks>();
public static HashMap<CustomPlayer, Ranks> getRanks() {
return ranks;
}
/**
* gets the prefix of a player
* @param p player
* @return String
*/
public static String getPrefix(CustomPlayer p) {
switch(p.getRank()) {
case Admin: return "§7[§4Admin§7]§4 ";
case Developer: return "§7[§3Developer§7] §3 ";
case HeadBuild: return "§7[§aHead-Builder§7]§a ";
case Builder: return "§7[§2Builder§7]§2 ";
case Moderator: return "§7[§cModerator§7]§c ";
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 p Player
* @return String
*/
public static String getSuffix(CustomPlayer p) {
switch(p.getRank()) {
case Admin: return " §8» §f§l";
case Developer: return " §8» §f§l";
case HeadBuild: return " §8» §f§l";
case Builder: return " §8» §f§l";
case Moderator: return " §8» §f§l";
case Supporter: return " §8» §f§l";
case Youtuber: return " §8» §f§l";
case Premium: return " §8» §f§l";
case Spieler: return " §8» §f§l";
default: return "§cFehler";
}
}
/**
* gets color of a player
* @param p Player
* @return String
*/
public static String getColor(CustomPlayer p) {
switch(p.getRank()) {
case Admin: return "§4";
case Developer: return "§3";
case HeadBuild: return "§a";
case Builder: return "§2";
case Moderator: return "§c";
case Supporter: return "§b";
case Youtuber: return "§5";
case Premium: return "§6";
case Spieler: return "§7";
default: return "§cFehler";
}
}
/**
* 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),
HeadBuild(7),
Builder(6),
Moderator(5),
Supporter(4),
Youtuber(3),
Premium(2),
Spieler(1);
public final int value;
private Ranks(int n) {
this.value = n;
}
}
}