161 lines
4.2 KiB
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 HeadBuilder: 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 HeadBuilder: 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";
|
|
case Spieler: return " §8» §f";
|
|
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 HeadBuilder: 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),
|
|
HeadBuilder(7),
|
|
Builder(6),
|
|
Moderator(5),
|
|
Supporter(4),
|
|
Youtuber(3),
|
|
Premium(2),
|
|
Spieler(1);
|
|
|
|
public final int value;
|
|
|
|
private Ranks(int n) {
|
|
this.value = n;
|
|
}
|
|
}
|
|
} |