use of com.alessiodp.partiesapi.interfaces.Rank in project Parties by AlessioDP.
the class ConfigurationManager method handleRanks.
private void handleRanks(ConfigurationSection cfg, String path) {
Set<Rank> ranks = new HashSet<Rank>();
Rank def = null;
Rank lower = null;
Rank higher = null;
ConfigurationSection csRanks = cfg.getConfigurationSection(path);
if (csRanks != null) {
for (String key : csRanks.getKeys(false)) {
int rank = csRanks.getInt(key + ".rank", 1);
String name = csRanks.getString(key + ".name", key);
String chat = csRanks.getString(key + ".chat", name);
boolean dft = csRanks.getBoolean(key + ".default", false);
List<String> perm = csRanks.getStringList(key + ".permissions");
Rank newRank = new RankImpl(rank, key, name, chat, dft, perm);
ranks.add(newRank);
if (dft)
def = newRank;
if (lower == null || newRank.getLevel() < lower.getLevel())
lower = newRank;
if (higher == null || newRank.getLevel() > higher.getLevel())
higher = newRank;
}
if (lower != null) {
if (def == null) {
// Give error: default rank not found
def = lower;
plugin.log(Level.WARNING, ConsoleColor.RED.getCode() + "Cannot find default rank, set lower one.");
}
// Save rank list
ConfigParties.RANK_LIST = ranks;
ConfigParties.RANK_SET_DEFAULT = def.getLevel();
ConfigParties.RANK_SET_HIGHER = higher.getLevel();
} else {
// Give error: no ranks found
plugin.log(Level.WARNING, ConsoleColor.RED.getCode() + "Rank list empty, restoring default one.");
}
} else {
// Give error: no ranks node found
plugin.log(Level.WARNING, ConsoleColor.RED.getCode() + "Cannot find rank list, restoring default one.");
}
}
use of com.alessiodp.partiesapi.interfaces.Rank in project Parties by AlessioDP.
the class ConfigParties method loadDefaults.
public void loadDefaults() {
// General settings
GENERAL_MEMBERSLIMIT = -1;
GENERAL_NAME_ALLOWEDCHARS = "[a-zA-Z0-9]+";
GENERAL_NAME_MINLENGTH = 3;
GENERAL_NAME_MAXLENGTH = 10;
GENERAL_NAME_RENAMECD = 300;
GENERAL_INVITE_TIMEOUT = 20;
GENERAL_INVITE_REVOKE = true;
GENERAL_INVITE_PREVENTINVITEPERM = true;
GENERAL_INVITE_COOLDOWN_ENABLE = false;
GENERAL_INVITE_COOLDOWN_GLOBAL = 60;
GENERAL_INVITE_COOLDOWN_INDIVIDUAL = 0;
GENERAL_CHAT_ALLOWCOLORS = false;
GENERAL_CHAT_TOGGLECHATCMD = true;
GENERAL_CHAT_CHATCD = 0;
GENERAL_CHAT_FORMAT_PARTY = "&b[Party] %rank_chat% %player%&r&7: &b%message%";
GENERAL_CHAT_FORMAT_SPY = "&7[SPY] [Party:%party%] %player%: %message%";
GENERAL_CHAT_FORMAT_BROADCAST = "&b[Party] %message%";
// Ranks settings
RANK_LIST = new HashSet<Rank>();
List<String> perms = new ArrayList<String>();
perms.add("party.sendmessage");
perms.add("party.home");
perms.add("party.desc");
perms.add("party.motd");
perms.add("party.claim");
Rank rank = new RankImpl(5, "member", "Member", "&bMember", true, perms);
RANK_LIST.add(rank);
RANK_SET_DEFAULT = 5;
perms = new ArrayList<String>();
perms.add("-party.edit.home");
perms.add("-party.edit.desc");
perms.add("-party.edit.motd");
perms.add("-party.edit.color");
perms.add("-party.edit.prefix");
perms.add("-party.edit.suffix");
perms.add("-party.edit.password");
perms.add("-party.admin.rename");
perms.add("-party.admin.rank");
perms.add("-party.admin.teleport");
perms.add("-party.autocommand");
perms.add("*");
rank = new RankImpl(10, "moderator", "Moderator", "&cModerator", false, perms);
RANK_LIST.add(rank);
perms = new ArrayList<String>();
perms.add("*");
rank = new RankImpl(20, "leader", "Leader", "&4&lLeader", false, perms);
RANK_LIST.add(rank);
RANK_SET_HIGHER = 20;
// Additional settings
COLOR_ENABLE = false;
COLOR_COLORCMD = true;
COLOR_DYNAMIC = false;
COLOR_LIST = new HashSet<Color>();
COLOR_LIST.add(new ColorImpl("red", "red", "&c", -1, -1, -1));
COLOR_LIST.add(new ColorImpl("green", "green", "&a", -1, -1, -1));
COLOR_LIST.add(new ColorImpl("yourcustomcolor", "special", "&9&n", -1, -1, -1));
DESC_ENABLE = true;
DESC_MINLENGTH = 3;
DESC_MAXLENGTH = 16;
DESC_ALLOWEDCHARS = "[a-zA-Z0-9\\ \\.\\,\\-\\_]+";
FIXED_ENABLE = false;
FIXED_DEFAULT_ENABLE = false;
FIXED_DEFAULT_PARTY = "default";
FRIENDLYFIRE_ENABLE = true;
FRIENDLYFIRE_WARNONFIGHT = true;
FRIENDLYFIRE_LISTWORLDS = new ArrayList<String>();
FRIENDLYFIRE_CRACKSHOT_ENABLE = false;
HOME_ENABLE = false;
HOME_DELAY = 0;
HOME_HIT = true;
HOME_MOVING = true;
HOME_DISTANCE = 3;
PASSWORD_ENABLE = false;
PASSWORD_ALLOWECHARS = "[a-zA-Z0-9]+";
PASSWORD_HASH = "MD5";
PASSWORD_ENCODE = "UTF-8";
PASSWORD_MINLENGTH = 1;
PASSWORD_MAXLENGTH = 16;
KILLS_ENABLE = false;
KILLS_SAVEKILLS = true;
KILLS_MOB_NEUTRAL = false;
KILLS_MOB_HOSTILE = false;
KILLS_MOB_PLAYERS = true;
LIST_ENABLE = true;
LIST_ORDEREDBY = "players";
LIST_FILTERMIN = 1;
LIST_PERPAGE = 8;
LIST_LIMITPARTIES = -1;
LIST_HIDDENPARTIES = new ArrayList<String>();
MOTD_ENABLE = true;
MOTD_MINLENGTH = 3;
MOTD_MAXLENGTH = 100;
MOTD_DELAY = 20;
MOTD_ALLOWEDCHARS = "[a-zA-Z0-9\\ \\.\\,\\-\\_]+";
MOTD_NEWLINECODE = "\\\\n";
TELEPORT_ENABLE = false;
TELEPORT_COOLDOWN = 60;
}
use of com.alessiodp.partiesapi.interfaces.Rank in project Parties by AlessioDP.
the class CommandInfo method onCommand.
@Override
public void onCommand(CommandData commandData) {
PartyPlayerEntity pp = commandData.getPartyPlayer();
/*
* Command handling
*/
String partyName;
if (commandData.getArgs().length > 1) {
if (!commandData.havePermission(PartiesPermission.INFO_OTHERS)) {
pp.sendNoPermission(PartiesPermission.INFO_OTHERS);
return;
}
partyName = commandData.getArgs()[1];
} else if (!pp.getPartyName().isEmpty()) {
partyName = pp.getPartyName();
} else {
pp.sendMessage(Messages.PARTIES_COMMON_NOTINPARTY);
return;
}
PartyEntity party = plugin.getPartyManager().getParty(partyName);
if (party == null) {
pp.sendMessage(Messages.PARTIES_COMMON_PARTYNOTFOUND.replace("%party%", partyName));
return;
}
/*
* Command starts
*/
StringBuilder sb = new StringBuilder();
for (String str : Messages.MAINCMD_INFO_CONTENT) sb.append(str + "\n");
String text = sb.toString();
Matcher mat = Pattern.compile("%list_(.*?)%").matcher(text);
while (mat.find()) {
Rank rr = plugin.getRankManager().searchRankByHardName(mat.group().substring(6, mat.group().length() - 1));
if (rr != null) {
StringBuilder list = new StringBuilder();
int counter = 0;
for (UUID playerUUID : party.getMembers()) {
PartyPlayer pl = plugin.getPlayerManager().getPlayer(playerUUID);
// Check rank level
if (pl.getRank() == rr.getLevel()) {
if (list.length() > 0) {
list.append(Messages.MAINCMD_INFO_LIST_SEPARATOR);
}
OfflinePlayer op = Bukkit.getOfflinePlayer(pl.getPlayerUUID());
if (op != null)
list.append((op.isOnline() && !PartiesUtils.isVanished((Player) op) ? Messages.MAINCMD_INFO_LIST_ONLINEPREFIX : Messages.MAINCMD_INFO_LIST_OFFLINEPREFIX) + pl.getName());
else
list.append(Messages.MAINCMD_INFO_LIST_UNKNOWN);
counter++;
}
}
text = text.replace(mat.group(), list.toString().isEmpty() ? Messages.MAINCMD_INFO_LIST_EMPTY : list.toString());
text = text.replace("%number_" + mat.group().substring(6, mat.group().length() - 1) + "%", Integer.toString(counter));
}
}
int numOnlinePlayers = party.getNumberOnlinePlayers();
sb = new StringBuilder();
if (text.contains("%online%")) {
if (numOnlinePlayers == 0)
sb.append(Messages.MAINCMD_INFO_LIST_EMPTY);
else {
for (Player pl : party.getOnlinePlayers()) {
if (sb.length() > 0) {
sb.append(Messages.MAINCMD_INFO_LIST_SEPARATOR);
}
if (!PartiesUtils.isVanished(pl))
sb.append(Messages.MAINCMD_INFO_LIST_ONLINEPREFIX + pl.getName());
}
}
text = text.replace("%online%", sb.toString());
}
text = PartiesUtils.convertPartyPlaceholders(text, party, Messages.MAINCMD_INFO_LIST_EMPTY);
pp.sendMessage(text);
LoggerManager.log(LogLevel.MEDIUM, Constants.DEBUG_CMD_INFO.replace("{player}", pp.getName()).replace("{party}", party.getName()), true);
}
use of com.alessiodp.partiesapi.interfaces.Rank in project Parties by AlessioDP.
the class CommandRank method onCommand.
@Override
public void onCommand(CommandData commandData) {
PartyPlayerEntity pp = commandData.getPartyPlayer();
/*
* Command handling
*/
String playerName = commandData.getArgs()[1];
PartyPlayerEntity promoted;
// Conflict checker
List<PartyPlayer> listPlayers = plugin.getDatabaseManager().getPartyPlayersByName(playerName).join();
if (!listPlayers.isEmpty()) {
promoted = plugin.getPlayerManager().getPlayer(listPlayers.get(0).getPlayerUUID());
} else {
pp.sendMessage(Messages.MAINCMD_RANK_PLAYERNOTINPARTY_OTHER.replace("%player%", playerName));
return;
}
PartyEntity party = plugin.getPartyManager().getParty(pp.getPartyName());
if (commandData.havePermission(PartiesPermission.RANK_OTHERS)) {
party = plugin.getPartyManager().getParty(promoted.getPartyName());
if (party == null) {
pp.sendMessage(Messages.MAINCMD_RANK_PLAYERNOTINPARTY_OTHER, promoted);
return;
}
} else {
if (party == null || !party.getMembers().contains(promoted.getPlayerUUID())) {
pp.sendMessage(Messages.MAINCMD_RANK_PLAYERNOTINPARTY, promoted);
return;
}
}
if (!party.getMembers().contains(promoted.getPlayerUUID())) {
if (!commandData.havePermission(PartiesPermission.RANK_OTHERS) || promoted.getPartyName().isEmpty()) {
pp.sendMessage(Messages.MAINCMD_RANK_PLAYERNOTINPARTY, promoted);
return;
}
party = plugin.getPartyManager().getParty(promoted.getPartyName());
}
Rank rank = plugin.getRankManager().searchRankByName(commandData.getArgs()[2]);
if (rank == null) {
pp.sendMessage(Messages.MAINCMD_RANK_WRONGRANK.replace("%rank_typed%", // TODO: Bypass, remove in future updates
commandData.getArgs()[2]).replace("%rank_name%", commandData.getArgs()[2]).replace("%rank_chat%", commandData.getArgs()[2]));
return;
}
if (rank.getLevel() == promoted.getRank()) {
pp.sendMessage(Messages.MAINCMD_RANK_SAMERANK.replace("%rank_name%", rank.getName()).replace("%rank_chat%", rank.getChat()).replace("%player%", promoted.getName()));
return;
}
if (!commandData.havePermission(PartiesPermission.RANK_OTHERS)) {
if (pp.getRank() <= promoted.getRank()) {
pp.sendMessage(Messages.MAINCMD_RANK_LOWRANK.replace("%rank_name%", rank.getName()).replace("%rank_chat%", rank.getChat()).replace("%player%", promoted.getName()));
return;
}
if (promoted.getPlayerUUID().equals(pp.getPlayerUUID())) {
pp.sendMessage(Messages.MAINCMD_RANK_CHANGINGYOURSELF);
return;
}
if ((rank.getLevel() != ConfigParties.RANK_SET_HIGHER) && (rank.getLevel() >= pp.getRank())) {
pp.sendMessage(Messages.MAINCMD_RANK_TOHIGHERRANK.replace("%rank_name%", rank.getName()).replace("%rank_chat%", rank.getChat()));
return;
}
}
/*
* Command starts
*/
int oldRank = promoted.getRank();
if (rank.getLevel() == ConfigParties.RANK_SET_HIGHER) {
PartyPlayerEntity oldLeader = plugin.getPlayerManager().getPlayer(party.getLeader());
oldLeader.setRank(promoted.getRank());
oldLeader.updatePlayer();
party.setLeader(promoted.getPlayerUUID());
party.updateParty();
}
promoted.setRank(rank.getLevel());
promoted.updatePlayer();
party.callChange();
pp.sendMessage(Messages.MAINCMD_RANK_CHANGED, promoted);
party.sendBroadcast(promoted, Messages.MAINCMD_RANK_BROADCAST);
LoggerManager.log(LogLevel.MEDIUM, Constants.DEBUG_CMD_RANK.replace("{player}", promoted.getName()).replace("{value1}", Integer.toString(oldRank)).replace("{value2}", Integer.toString(rank.getLevel())).replace("{sender}", pp.getName()), true);
}
use of com.alessiodp.partiesapi.interfaces.Rank in project Parties by AlessioDP.
the class PartyPlayerEntity method getAllowedCommands.
public LinkedHashMap<String, String> getAllowedCommands() {
LinkedHashMap<String, String> newCommands = new LinkedHashMap<String, String>();
Rank r = plugin.getRankManager().searchRankByLevel(getRank());
Player p = getPlayer();
if (!getPartyName().isEmpty()) {
// In party
if (p.hasPermission(PartiesPermission.HELP.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_HELP, Messages.HELP_MAINCMD_HELP);
if (p.hasPermission(PartiesPermission.SENDMESSAGE.toString()) && r.havePermission(PartiesPermission.PRIVATE_SENDMESSAGE.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_P, Messages.HELP_MAINCMD_P);
// Common commands
if (p.hasPermission(PartiesPermission.LEAVE.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_LEAVE, Messages.HELP_MAINCMD_LEAVE);
if (p.hasPermission(PartiesPermission.INVITE.toString()) && r.havePermission(PartiesPermission.PRIVATE_INVITE.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_INVITE, Messages.HELP_MAINCMD_INVITE);
if (p.hasPermission(PartiesPermission.INFO.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_INFO, Messages.HELP_MAINCMD_INFO);
// Other commands
if (ConfigParties.LIST_ENABLE && p.hasPermission(PartiesPermission.LIST.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_LIST, Messages.HELP_ADDCMD_LIST);
if (ConfigParties.GENERAL_CHAT_TOGGLECHATCMD && p.hasPermission(PartiesPermission.CHAT.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_CHAT, Messages.HELP_MAINCMD_CHAT);
if (ConfigParties.HOME_ENABLE) {
if (p.hasPermission(PartiesPermission.HOME_OTHERS.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_HOME, Messages.HELP_ADDCMD_HOME_OTHERS);
else if (p.hasPermission(PartiesPermission.HOME.toString()) && r.havePermission(PartiesPermission.PRIVATE_HOME.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_HOME, Messages.HELP_ADDCMD_HOME);
if (p.hasPermission(PartiesPermission.SETHOME.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_HOME.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_SETHOME, Messages.HELP_ADDCMD_SETHOME);
}
if (ConfigMain.ADDONS_GRIEFPREVENTION_ENABLE && p.hasPermission(PartiesPermission.CLAIM.toString()) && r.havePermission(PartiesPermission.PRIVATE_CLAIM.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_CLAIM, Messages.HELP_ADDCMD_CLAIM);
// Admin commands
if (ConfigParties.DESC_ENABLE && p.hasPermission(PartiesPermission.DESC.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_DESC.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_DESC, Messages.HELP_ADDCMD_DESC);
if (ConfigParties.MOTD_ENABLE && p.hasPermission(PartiesPermission.MOTD.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_MOTD.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_MOTD, Messages.HELP_ADDCMD_MOTD);
if (ConfigParties.TELEPORT_ENABLE && p.hasPermission(PartiesPermission.TELEPORT.toString()) && r.havePermission(PartiesPermission.PRIVATE_ADMIN_TELEPORT.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_TELEPORT, Messages.HELP_ADDCMD_TELEPORT);
if (ConfigParties.COLOR_ENABLE && ConfigParties.COLOR_COLORCMD && p.hasPermission(PartiesPermission.COLOR.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_COLOR.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_COLOR, Messages.HELP_ADDCMD_COLOR);
if (ConfigParties.PASSWORD_ENABLE && p.hasPermission(PartiesPermission.PASSWORD.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_PASSWORD.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_PASSWORD, Messages.HELP_ADDCMD_PASSWORD);
if (p.hasPermission(PartiesPermission.RANK.toString()) && r.havePermission(PartiesPermission.PRIVATE_ADMIN_RANK.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_RANK, Messages.HELP_MAINCMD_RANK);
if (ConfigMain.ADDITIONAL_TAG_ENABLE && ConfigMain.ADDITIONAL_TAG_TYPE.isCustom() && ConfigMain.ADDITIONAL_TAG_CUSTOM_PREFIX && p.hasPermission(PartiesPermission.PREFIX.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_PREFIX.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_PREFIX, Messages.HELP_ADDCMD_PREFIX);
if (ConfigMain.ADDITIONAL_TAG_ENABLE && ConfigMain.ADDITIONAL_TAG_TYPE.isCustom() && ConfigMain.ADDITIONAL_TAG_CUSTOM_SUFFIX && p.hasPermission(PartiesPermission.SUFFIX.toString()) && r.havePermission(PartiesPermission.PRIVATE_EDIT_SUFFIX.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_SUFFIX, Messages.HELP_ADDCMD_SUFFIX);
if (p.hasPermission(PartiesPermission.RENAME_OTHERS.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_RENAME, Messages.HELP_MAINCMD_RENAME_OTHERS);
else if (p.hasPermission(PartiesPermission.RENAME.toString()) && r.havePermission(PartiesPermission.PRIVATE_ADMIN_RENAME.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_RENAME, Messages.HELP_MAINCMD_RENAME);
if (p.hasPermission(PartiesPermission.KICK.toString()) && r.havePermission(PartiesPermission.PRIVATE_KICK.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_KICK, Messages.HELP_MAINCMD_KICK);
} else {
// Out of party
if (p.hasPermission(PartiesPermission.CREATE.toString())) {
if (p.hasPermission(PartiesPermission.ADMIN_CREATE_FIXED.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_CREATE, Messages.HELP_MAINCMD_CREATE_FIXED);
else
newCommands.put(ConfigMain.COMMANDS_CMD_CREATE, Messages.HELP_MAINCMD_CREATE);
}
if (p.hasPermission(PartiesPermission.ACCEPT.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_ACCEPT, Messages.HELP_MAINCMD_ACCEPT);
if (p.hasPermission(PartiesPermission.DENY.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_DENY, Messages.HELP_MAINCMD_DENY);
if (ConfigParties.PASSWORD_ENABLE && p.hasPermission(PartiesPermission.JOIN.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_JOIN, Messages.HELP_ADDCMD_JOIN);
if (p.hasPermission(PartiesPermission.IGNORE.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_IGNORE, Messages.HELP_MAINCMD_IGNORE);
if (ConfigParties.HOME_ENABLE && p.hasPermission(PartiesPermission.HOME_OTHERS.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_HOME, Messages.HELP_ADDCMD_HOME_OTHERS);
if (p.hasPermission(PartiesPermission.KICK_OTHERS.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_KICK, Messages.HELP_MAINCMD_KICK);
if (p.hasPermission(PartiesPermission.RENAME_OTHERS.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_RENAME, Messages.HELP_MAINCMD_RENAME_OTHERS);
}
if (p.hasPermission(PartiesPermission.ADMIN_SPY.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_SPY, Messages.HELP_MAINCMD_SPY);
if (p.hasPermission(PartiesPermission.ADMIN_DELETE.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_DELETE, Messages.HELP_MAINCMD_DELETE);
if (p.hasPermission(PartiesPermission.ADMIN_RELOAD.toString()))
newCommands.put(ConfigMain.COMMANDS_CMD_RELOAD, Messages.HELP_MAINCMD_RELOAD);
if (p.hasPermission(PartiesPermission.ADMIN_MIGRATE.toString()) && !ConfigMain.STORAGE_MIGRATE_ONLYCONSOLE)
newCommands.put(ConfigMain.COMMANDS_CMD_MIGRATE, Messages.HELP_MAINCMD_MIGRATE);
return newCommands;
}
Aggregations