239 lines
6.8 KiB
Java
239 lines
6.8 KiB
Java
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<CustomPlayer, Ranks> ranks = new HashMap<CustomPlayer, Ranks>();
|
|
public static HashMap<CustomPlayer, Ranks> 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;
|
|
}
|
|
}
|
|
} |