Compare commits

...
17 Commits
Author SHA1 Message Date
RoinujNosde a9fe589794 Forgot to update table 2020-04-16 07:02:51 -03:00
RoinujNosde 2d0b524557 Removed forRemoval from @Deprecated 2020-04-15 21:43:19 -03:00
RoinujNosde ba66f16f54 Fixed last seen and menu command messages
Fixed last seen not updating Closes #566
Fixed weird space in Menu command Closes #483
Fixed Menu command messages getting cropped Closes #392
Fixed Mojang URL
Removed deprecated code
2020-04-15 21:32:57 -03:00
RoinujNosde 4d6a489b43 SQLite queries use threads if enabled
Fixes #568
2020-04-13 20:22:45 -03:00
xtomyserrax 92da40ca76 Small fixes on commands
Fixes a small issue when ally wasn't verified, it was sending a message but not returning the code.
Fixes NPE on Ban command.
ChatEvent is ignored if cancelled.
Menu command will show /clan fee only if member fee is enabled
Added disabled message to Fee command
2020-04-10 13:35:44 -03:00
Edson Passos f1d0741ac8 Corrected version number 2020-04-10 11:28:24 -03:00
RoinujNosde 03b2f73e74 Rank name is lowercase 2020-04-10 10:35:54 -03:00
Edson Passos 2a65295e8b Finalized ranks with permissions
Closes #544

Fixed config resetting. Closes #564
2020-04-10 01:37:07 -03:00
Edson Passos a7cb9ed171 Update pom.xml 2020-04-03 19:13:10 -03:00
RoinujNosde ac0a387198 Removed kdr-exempt from anyone.*
Closes #561
2020-04-02 07:35:59 -03:00
Edson Passos e3cd7d37a8 Merge pull request #559 from xtomyserrax/patch-1
Added check for null home on regroup
2020-03-31 07:58:22 -03:00
Edson Passos 63595258f4 Removed wrong message 2020-03-31 07:48:21 -03:00
xtomyserrax 0c866044df /clan home command fixes
- Fixes this error when there is no home set for the clan (I just copied and pasted the loc == null statement): https://pastebin.com/jiXneTvK

Also can you please fix this placeholder? I dont want to touch anything there as maybe it breaks some stuff or it meant to be something: https://imgur.com/a/KWPDTk7
It says: "Clan home-base set to: {0}" + Location. I guess the 0 meant to be the location? Maybe adding a replace would fix it, unless the idea was to make something else.

Thanks for the awesome plugin and sorry for making another merge for the same, I just noticed it! 

Also another idea, what if instead of saying Insufficient Permission when you write a command wrongly it sends a usage message? For example, if I type /clan home tp, I get a no permission message, if I write /clan home tp test, then I go to the home of test clan. 

Thanks!
2020-03-30 22:45:34 -03:00
Edson Passos 2217efa8a7 Merge pull request #558 from xtomyserrax/patch-1
Fix bypassing /clan home regroup
2020-03-30 21:22:49 -03:00
xtomyserrax df97e43c4d Fix bypassing /clan home regroup
Clan members can use /clan home regroup without being leaders and also without having the permission simpleclans.leader.home-regroup

Just added a return statement to both conditionals.
2020-03-30 21:05:03 -03:00
RoinujNosde 169b44e793 Added permission for using colors/formats on setrank
Closes #548
2020-03-26 20:19:45 -03:00
RoinujNosde f2303c5336 Allow server owners to edit the time to collect member fee and upkeep
Closes #543
2020-03-25 20:13:35 -03:00
57 changed files with 1317 additions and 602 deletions

No files matched your search

+35 -2
View File
@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.8.2</version>
<version>2.9.2</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
@@ -54,6 +54,29 @@
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<!-- Shade plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<relocations>
<relocation>
<pattern>org.bstats.bukkit</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.metrics</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- Dependencies -->
@@ -75,13 +98,23 @@
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
<version>1.7</version>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- Repositories -->
<repositories>
<repository>
<id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>vault-repo</id>
<url>https://nexus.hc.to/content/repositories/pub_releases</url>
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
</repository>
<repository>
<id>paper-repo</id>
@@ -19,11 +19,23 @@ public class ChatBlock {
private final ArrayList<String> columnAlignments = new ArrayList<>();
private final LinkedList<String[]> rows = new LinkedList<>();
private String color = "";
private boolean cropRight = true;
private boolean padRight = true;
/**
*
*/
public static final Logger LOG = Logger.getLogger("Minecraft");
public void setCropRight(boolean cropRight) {
this.cropRight = cropRight;
}
public void setPadRight(boolean padRight) {
this.padRight = padRight;
}
/**
* @param columnAlignment
*/
@@ -182,15 +194,27 @@ public class ChatBlock {
}
} else if (align.equalsIgnoreCase("l")) {
if (msgLength(section) > colsize) {
col = cropRightToFit(section, colsize);
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
} else if (msgLength(section) < colsize) {
col = paddRightToFit(section, colsize);
if (padRight) {
col = paddRightToFit(section, colsize);
} else {
col = section;
}
}
} else if (align.equalsIgnoreCase("c")) {
if (msgLength(section) > colsize) {
col = cropRightToFit(section, colsize);
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
} else if (msgLength(section) < colsize) {
col = centerInLineOf(section, colsize);
col = centerInLineOf(section, colsize);
}
}
@@ -253,9 +277,10 @@ public class ChatBlock {
}
// crop and print out
String msg = cropRightToFit((prefix_used ? empty_prefix : prefix + " ") + finalString, LINE_LENGTH);
String msg = (prefix_used ? empty_prefix : prefix + " ") + finalString;
if (cropRight) {
msg = cropRightToFit(msg, LINE_LENGTH);
}
if (color.length() > 0) {
msg = color + msg;
}
@@ -7,10 +7,12 @@ import org.bukkit.configuration.file.FileConfiguration;
*
* @author RoinujNosde
*/
@SuppressWarnings("deprecation")
public class ChatFormatMigration {
SimpleClans plugin = SimpleClans.getInstance();
public void migrateClanChat() {
SettingsManager sm = plugin.getSettingsManager();
FileConfiguration c = sm.getConfig();
@@ -2,7 +2,6 @@ package net.sacredlabyrinth.phaed.simpleclans;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import net.sacredlabyrinth.phaed.simpleclans.events.*;
import org.bukkit.Bukkit;
@@ -51,6 +50,7 @@ public class Clan implements Serializable, Comparable<Clan> {
private boolean allowWithdraw = false;
private boolean allowDeposit = true;
private boolean feeEnabled;
private List<Rank> ranks = new ArrayList<>();
/**
*
@@ -300,26 +300,6 @@ public class Clan implements Serializable, Comparable<Clan> {
return this.members.contains(player.getUniqueId().toString());
}
/**
* Check if the player is a member of this clan
*
* @param playerName
* @return confirmation
*/
@Deprecated
public boolean isMember(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName);
if (PlayerUniqueId != null) {
return this.members.contains(PlayerUniqueId.toString());
} else {
return false;
}
} else {
return this.members.contains(playerName.toLowerCase());
}
}
/**
* Check if the player is a member of this clan
*
@@ -469,23 +449,6 @@ public class Clan implements Serializable, Comparable<Clan> {
}
}
/**
* (used internally)
*
* @param playerName
*/
@Deprecated
public void removeMember(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName);
if (PlayerUniqueId != null) {
this.members.remove(PlayerUniqueId.toString());
}
} else {
this.members.remove(playerName.toLowerCase());
}
}
/**
* (used internally)
*
@@ -731,24 +694,6 @@ public class Clan implements Serializable, Comparable<Clan> {
return isLeader(player.getUniqueId());
}
/**
* Check if a player is a leader of a clan
*
* @param playerName
* @return the leaders
*/
@Deprecated
public boolean isLeader(String playerName) {
if (isMember(playerName)) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName.toLowerCase());
if (cp != null && cp.isLeader()) {
return true;
}
}
return false;
}
/**
* Check if a player is a leader of a clan
@@ -1106,39 +1051,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerJoinedClanEvent(this, cp));
}
/**
* Remove a player from a clan
*
* @param playerName
*/
@Deprecated
public void removePlayerFromClan(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
// remove clan group-permission
SimpleClans.getInstance().getPermissionsManager().removeClanPermissions(cp);
// remove permissions
SimpleClans.getInstance().getPermissionsManager().removeClanPlayerPermissions(cp);
cp.setClan(null);
cp.addPastClan(getColorTag() + (cp.isLeader() ? ChatColor.DARK_RED + "*" : ""));
cp.setLeader(false);
cp.setTrusted(false);
cp.setJoinDate(0);
removeMember(playerName);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
Player matched = cp.toPlayer();
if (matched != null) {
SimpleClans.getInstance().getClanManager().updateDisplayName(matched);
}
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerKickedClanEvent(this, cp));
}
/**
* Remove a player from a clan
*
@@ -1158,6 +1070,7 @@ public class Clan implements Serializable, Comparable<Clan> {
cp.setLeader(false);
cp.setTrusted(false);
cp.setJoinDate(0);
cp.setRank(null);
removeMember(playerUniqueId);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
@@ -1171,27 +1084,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerKickedClanEvent(this, cp));
}
/**
* Promote a member to a leader of a clan
*
* @param playerName
*/
@Deprecated
public void promote(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
cp.setLeader(true);
cp.setTrusted(true);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
// add clan permission
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerPromoteEvent(this, cp));
}
/**
* Promote a member to a leader of a clan
*
@@ -1211,25 +1103,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerPromoteEvent(this, cp));
}
/**
* Demote a leader back to a member of a clan
*
* @param playerName
*/
@Deprecated
public void demote(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
cp.setLeader(false);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
// add clan permission
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerDemoteEvent(this, cp));
}
/**
* Demote a leader back to a member of a clan
*
@@ -1894,4 +1767,79 @@ public class Clan implements Serializable, Comparable<Clan> {
public void setAllowDeposit(boolean allowDeposit) {
this.allowDeposit = allowDeposit;
}
/**
* Checks if the clan has the specified rank
*
* @param name the rank
* @return
*/
public boolean hasRank(String name) {
return getRank(name) != null;
}
/**
* Creates a rank
*
* @param name
*/
public void createRank(String name) {
ranks.add(new Rank(name));
}
/**
* Returns the clan's ranks
*
* @return the ranks
*/
public List<Rank> getRanks() {
return ranks;
}
/**
* Sets the clan's ranks
*
* @param ranks
*/
public void setRanks(List<Rank> ranks) {
if (ranks == null) {
ranks = new ArrayList<>();
}
this.ranks = ranks;
}
/**
* Deletes a rank with the specified name
*
* @param name
*/
public void deleteRank(String name) {
Rank r = getRank(name);
if (r != null) {
ranks.remove(r);
getMembers().forEach(cp -> {
if (cp.getRankId().equals(r.getName())) {
cp.setRank("");
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
}
});
}
}
/**
* Gets a rank with the specified name or null if not found
*
* @param name the rank name
* @return a rank or null
*/
public Rank getRank(String name) {
if (name != null) {
for (Rank r : ranks) {
if (r.getName().equals(name)) {
return r;
}
}
}
return null;
}
}
@@ -543,6 +543,9 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*/
public String getLastSeenString()
{
if (toPlayer() != null) {
return SimpleClans.getInstance().getLang("online");
}
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(this.lastSeen));
}
@@ -977,13 +980,46 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
return useChatShortcut;
}
public String getRankDisplayName() {
if (clan != null) {
Rank r = clan.getRank(rank);
if (r != null) {
return r.getDisplayName();
}
}
return "";
}
/**
* Gets the rank id
*
* @return
*/
public String getRankId() {
return rank;
}
/**
* Gets the rank displayname
*
* @return
*/
@Deprecated
public String getRank()
{
return rank;
return getRankDisplayName();
}
/**
* Sets the rank id
*
* @param rank the rank id
*/
public void setRank(String rank)
{
if (rank == null) {
rank = "";
}
this.rank = rank;
}
@@ -67,10 +67,6 @@ public class Dates {
return differenceInSeconds(new Date(date1.getTime()), new Date(date2.getTime()));
}
private static double differenceInMilliseconds(Timestamp date1, Timestamp date2) {
return differenceInMilliseconds(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
@@ -5,6 +5,7 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@@ -18,6 +19,7 @@ import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Map.Entry;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
/**
@@ -37,6 +39,71 @@ public class Helper {
}
}
/**
* Converts a JSON String to a list of Ranks
*
* @param json
* @return a list of ranks or null if the JSON String is null/empty
*/
public static List<Rank> ranksFromJson(String json) {
if (json != null && !json.isEmpty()) {
try {
JSONObject jo = (JSONObject) new JSONParser().parse(json);
Object ranks = jo.get("ranks");
if (ranks != null) {
JSONArray array = (JSONArray) ranks;
List<Rank> rankList = new ArrayList<>();
for (Object o : array) {
JSONObject r = (JSONObject) o;
String name = (String) r.get("name");
String displayName = (String) r.get("displayName");
Set<String> permissions = new HashSet<>();
for (Object p : (JSONArray) r.get("permissions")) {
permissions.add((String) p);
}
Rank rank = new Rank(name, displayName, permissions);
rankList.add(rank);
}
return rankList;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
/**
* Converts a list of Ranks to a JSON String
*
* @param ranks
* @return a JSON String
*/
@SuppressWarnings("unchecked")
public static String ranksToJson(List<Rank> ranks) {
if (ranks == null)
ranks = new ArrayList<Rank>();
JSONArray array = new JSONArray();
for (Rank rank : ranks) {
JSONObject o = new JSONObject();
o.put("name", rank.getName());
o.put("displayName", rank.getDisplayName());
JSONArray permArray = new JSONArray();
for (String p : rank.getPermissions()) {
permArray.add(p);
}
o.put("permissions", permArray);
array.add(o);
}
JSONObject object = new JSONObject();
object.put("ranks", array);
return object.toJSONString();
}
/**
* Converts a resign times map to a JSON String
*
@@ -73,8 +140,10 @@ public class Helper {
* @return the delay in seconds
*/
public static long getDelayTo(int hour, int minute) {
if (hour < 0 || hour > 23) hour = 1;
if (minute < 0 || minute > 59) minute = 0;
LocalDateTime now = LocalDateTime.now();
LocalDateTime d = LocalDateTime.of(now.toLocalDate(), LocalTime.of(1, 0));
LocalDateTime d = LocalDateTime.of(now.toLocalDate(), LocalTime.of(hour, minute));
long delay;
if (now.isAfter(d)) {
delay = now.until(d.plusDays(1), ChronoUnit.SECONDS);
@@ -317,6 +386,20 @@ public class Helper {
public static String[] toArray(List<String> list) {
return list.toArray(new String[list.size()]);
}
/**
* Converts the Permission values array to a String array
*
* @return
*/
public static String[] fromPermissionArray() {
RankPermission[] permissions = RankPermission.values();
String[] sa = new String[permissions.length];
for (int i = 0; i < permissions.length; i++) {
sa[i] = permissions[i].toString();
}
return sa;
}
/**
* Removes first item from a string array
@@ -631,7 +714,7 @@ public class Helper {
}
return result;
}
public static boolean isVanished(Player player) {
if (player != null && player.hasMetadata("vanished") && !player.getMetadata("vanished").isEmpty()) {
return player.getMetadata("vanished").get(0).asBoolean();
@@ -639,7 +722,8 @@ public class Helper {
return false;
}
public static Collection<Player> getOnlinePlayers() {
@SuppressWarnings("unchecked")
public static Collection<Player> getOnlinePlayers() {
try {
Method method = Bukkit.class.getDeclaredMethod("getOnlinePlayers");
Object players = method.invoke(null);
@@ -673,7 +757,7 @@ public class Helper {
String leaderColor = sm.getAllyChatLeaderColor();
String memberColor = sm.getAllyChatMemberColor();
String rank = cp.getRank().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRank());
String rank = cp.getRankId().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRankDisplayName());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getAllyChatRank()).replace("%rank%", rank) : "";
String message = replacePlaceholders(sm.getAllyChatFormat(), cp, leaderColor, memberColor, rankFormat, msg);
@@ -708,7 +792,7 @@ public class Helper {
String leaderColor = sm.getClanChatLeaderColor();
String memberColor = sm.getClanChatMemberColor();
String rank = cp.getRank().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRank());
String rank = cp.getRankId().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRankDisplayName());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getClanChatRank()).replace("%rank%", rank) : "";
String message = replacePlaceholders(sm.getClanChatFormat(), cp, leaderColor, memberColor, rankFormat, msg);
@@ -0,0 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans;
public enum PermissionLevel {
LEADER, TRUSTED
}
@@ -1,6 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -0,0 +1,105 @@
package net.sacredlabyrinth.phaed.simpleclans;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author RoinujNosde
*/
public class Rank implements Comparable<Rank> {
private String name;
private String displayName;
private Set<String> permissions;
public Rank(String name) {
setName(name);
permissions = new HashSet<String>();
setDisplayName(displayName);
}
public Rank(String name, String displayName, Set<String> permissions) {
setName(name);
setDisplayName(displayName);
setPermissions(permissions);
}
public void setName(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("name cannot be null or empty");
}
this.name = name;
}
public void setDisplayName(String displayName) {
if (displayName == null || displayName.isEmpty()) {
displayName = name;
}
this.displayName = displayName;
}
public void setPermissions(Set<String> permissions) {
if (permissions == null) {
permissions = new HashSet<String>();
}
this.permissions = permissions;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rank other = (Rank) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/**
* Returns the rank's permissions
*
* @return
*/
public Set<String> getPermissions() {
return permissions;
}
/**
* Returns the rank's display name
*
* @return
*/
public String getDisplayName() {
return displayName;
}
/**
* Returns the rank's name
*
* @return
*/
public String getName() {
return name;
}
@Override
public int compareTo(Rank other) {
return Integer.compare(permissions.size(), other.permissions.size());
}
}
@@ -0,0 +1,57 @@
package net.sacredlabyrinth.phaed.simpleclans;
/**
*
* @author RoinujNosde
*
*/
public enum RankPermission {
ALLY_ADD("simpleclans.leader.ally"), ALLY_CHAT("simpleclans.member.ally"), ALLY_REMOVE("simpleclans.leader.ally"),
BANK_BALANCE("simpleclans.member.bank"), BANK_DEPOSIT("simpleclans.member.bank"),
BANK_WITHDRAW("simpleclans.member.bank"), BB_ADD("simpleclans.member.bb-add"),
BB_CLEAR("simpleclans.leader.bb-clear"), COORDS("simpleclans.member.coords"),
FEE_ENABLE("simpleclans.leader.fee"), FEE_SET("simpleclans.leader.fee"),
HOME_REGROUP("simpleclans.leader.home-regroup"), HOME_SET("simpleclans.leader.home-set"),
HOME_TP("simpleclans.member.home"), INVITE("simpleclans.leader.invite"), KICK("simpleclans.leader.kick"),
MODTAG("simpleclans.leader.modtag"), RANK_DISPLAYNAME("simpleclans.leader.rank.setdisplayname"),
RANK_LIST("simpleclans.leader.rank.list"), RIVAL_ADD("simpleclans.leader.rival"),
RIVAL_REMOVE("simpleclans.leader.rival"), WAR_END("simpleclans.leader.war"), WAR_START("simpleclans.leader.war"),
STATS("simpleclans.member.stats"), VITALS("simpleclans.member.vitals"), KILLS("simpleclans.member.kills"),
DESCRIPTION("simpleclans.leader.description"), MOSTKILLED("simpleclans.mod.mostkilled");
private String bukkitPermission;
private RankPermission(String bukkitPermission) {
this.bukkitPermission = bukkitPermission;
}
/**
* Returns the Bukkit equivalent to this rank permission
*
* @return
*/
public String getBukkitPermission() {
return bukkitPermission;
}
@Override
public String toString() {
return super.toString().replace("_", ".").toLowerCase();
}
/**
* Checks if this is a valid rank permission.
*
* @param permission
* @return
*/
public static boolean isValid(String permission) {
for (RankPermission p : values()) {
if (p.toString().equalsIgnoreCase(permission)) {
return true;
}
}
return false;
}
}
@@ -6,6 +6,7 @@ import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bstats.bukkit.Metrics;
import org.bukkit.plugin.java.JavaPlugin;
import net.sacredlabyrinth.phaed.simpleclans.executors.AcceptCommandExecutor;
@@ -117,11 +118,27 @@ public class SimpleClans extends JavaPlugin {
getCommand(getSettingsManager().getCommandGlobal()).setExecutor(new GlobalCommandExecutor());
getCommand(getSettingsManager().getCommandClan()).setTabCompleter(new PlayerNameTabCompleter());
logger.info("[SimpleClans] Online Mode: " + hasUUID); //TODO: Is this necessary?
logger.info("[SimpleClans] Modo Multithreading: " + SimpleClans.getInstance().getSettingsManager().getUseThreads());
logger.info("[SimpleClans] Modo BungeeCord: " + SimpleClans.getInstance().getSettingsManager().getUseBungeeCord());
startTasks();
startMetrics();
}
private void startMetrics() {
Metrics metrics = new Metrics(this, 7131);
SettingsManager sm = getSettingsManager();
ClanManager cm = getClanManager();
metrics.addCustomChart(new Metrics.SingleLineChart("clans", () -> cm.getClans().size()));
metrics.addCustomChart(new Metrics.SingleLineChart("clan_players", () -> cm.getAllClanPlayers().size()));
metrics.addCustomChart(new Metrics.SimplePie("database", () -> sm.isUseMysql() ? "MySQL" : "SQLite"));
metrics.addCustomChart(new Metrics.SimplePie("upkeep", () -> sm.isClanUpkeep() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("member_fee", () -> sm.isMemberFee() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("rejoin_cooldown", () -> sm.isRejoinCooldown() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("clan_verification", () -> sm.isRequireVerification() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("money_per_kill", () -> sm.isMoneyPerKill() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("threads", () -> sm.getUseThreads() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("bungeecord", () -> sm.getUseBungeeCord() ? "enabled" : "disabled"));
}
private void startTasks() {
@@ -40,12 +40,7 @@ public class AllyCommand {
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.ally"), plugin.getSettingsManager().getCommandClan()));
@@ -67,9 +62,14 @@ public class AllyCommand {
if (!ally.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("cannot.ally.with.an.unverified.clan"));
return;
}
if (action.equals(plugin.getLang("add"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.already.allies"));
return;
@@ -85,6 +85,10 @@ public class AllyCommand {
plugin.getRequestManager().addAllyRequest(cp, ally, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.have.been.asked.for.an.alliance"), Helper.capitalize(ally.getName())));
} else if (action.equals(plugin.getLang("remove"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_REMOVE, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.not.allies"));
return;
@@ -38,22 +38,21 @@ public class BanCommand {
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (plugin.getSettingsManager().isBanned(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.already.banned"));
return;
}
Player pl = SimpleClans.getInstance().getServer().getPlayer(uuid);
plugin.getClanManager().ban(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.added.to.banned.list"));
Player pl = SimpleClans.getInstance().getServer().getPlayer(uuid);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + plugin.getLang("you.banned"));
}
plugin.getClanManager().ban(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.added.to.banned.list"));
}
}
@@ -3,6 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -47,34 +49,39 @@ public class BankCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
}
if (arg.length == 1) {
if (arg[0].equalsIgnoreCase("status")) {
player.sendMessage(ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.balance"), clanbalance));
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_BALANCE, PermissionLevel.TRUSTED, true)) {
return;
}
player.sendMessage(ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.balance"), clanbalance));
}
} else if (arg.length == 2) {
if (arg[1].matches("[0-9]+")) {
money = Double.parseDouble(arg[1]);
}
if (arg[0].equalsIgnoreCase("deposit")) {
if (!cp.getClan().isLeader(player) && !clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("deposit.not.allowed"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_DEPOSIT, PermissionLevel.LEADER, true)) {
return;
}
if (arg[1].equalsIgnoreCase("all")) {
clan.deposit(plmoney, player);
} else {
clan.deposit(money, player);
}
} else if (arg[0].equalsIgnoreCase("withdraw")) {
if (!cp.getClan().isLeader(player) && !clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("withdraw.not.allowed"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_WITHDRAW, PermissionLevel.LEADER, true)) {
return;
}
if (arg[1].equalsIgnoreCase("all")) {
clan.withdraw(clanbalance, player);
} else {
@@ -45,12 +45,7 @@ public class BbCommand {
}
if (arg.length == 1 && arg[0].equalsIgnoreCase("clear")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.bb-clear")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!cp.isTrusted() || !cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_CLEAR, PermissionLevel.LEADER, true)) {
return;
}
cp.getClan().clearBb();
@@ -58,13 +53,7 @@ public class BbCommand {
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.bb-add")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, true)) {
return;
}
@@ -47,10 +47,10 @@ public class CoordsCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.coords"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.coords"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -9,6 +9,8 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
@@ -41,9 +43,8 @@ public class DescriptionCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, true)) {
return;
}
if (args.length < 1) {
@@ -4,6 +4,8 @@ import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -23,9 +25,10 @@ public class FeeCommand {
public void execute(Player player, String[] args) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getSettingsManager().isMemberFee()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("disabled.command"));
return;
}
if (args.length >= 1) {
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
Clan clan = cp.getClan();
@@ -48,8 +51,7 @@ public class FeeCommand {
return;
}
if (args.length == 2 && args[0].equalsIgnoreCase("set")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.fee")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.FEE_SET, PermissionLevel.LEADER, true)) {
return;
}
if (!cp.isLeader()) {
@@ -4,7 +4,6 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
@@ -82,14 +82,9 @@ public class HomeCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.vitals"));
return;
}
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.home")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, true)) {
return;
}
@@ -107,12 +102,7 @@ public class HomeCommand {
}
if (arg[0].equalsIgnoreCase("set")) {
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, true)) {
return;
}
if (plugin.getSettingsManager().isHomebaseSetOnce() && clan.getHomeLocation() != null && !plugin.getPermissionsManager().has(player, "simpleclans.mod.home")) {
@@ -133,12 +123,7 @@ public class HomeCommand {
}
if (arg[0].equalsIgnoreCase("clear")) {
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, true)) {
return;
}
if (plugin.getSettingsManager().isHomebaseSetOnce() && clan.getHomeLocation() != null && !plugin.getPermissionsManager().has(player, "simpleclans.mod.home")) {
@@ -156,20 +141,18 @@ public class HomeCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_REGROUP, PermissionLevel.LEADER, true)) {
return;
}
Location loc;
if (arg.length >= 2 && arg[1].equalsIgnoreCase("me")) {
loc = player.getLocation();
} else {
loc = cp.getClan().getHomeLocation();
}
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-regroup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
HomeRegroupEvent homeRegroupEvent = new HomeRegroupEvent(clan, cp, clan.getOnlineMembers(), loc);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(homeRegroupEvent);
@@ -200,10 +183,7 @@ public class HomeCommand {
plugin.getTeleportManager().addPlayer(player, new Location(loc.getWorld(), x + .5, loc.getBlockY(), z + .5), clan.getName());
}
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("hombase.set") + ChatColor.YELLOW + Helper.toLocationString(loc));
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
}
@@ -11,6 +11,8 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
@@ -43,15 +45,15 @@ public class InviteCommand {
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.invite.player"), plugin.getSettingsManager().getCommandClan()));
return;
}
Player invited = Helper.getPlayer(arg[0]);
if (invited == null) {
@@ -4,6 +4,8 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -43,10 +45,10 @@ public class KickCommand {
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.kick.player"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -45,9 +45,8 @@ public class KillsCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, true)) {
return;
}
String polledPlayerName = player.getName();
@@ -72,7 +72,7 @@ public class LookupCommand {
}
String status = targetClan == null ? ChatColor.WHITE + plugin.getLang("free.agent") : (targetCp.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() + plugin.getLang("leader") : (targetCp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("trusted") : plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("untrusted")));
String rank = ChatColor.WHITE + "" + Helper.parseColors(targetCp.getRank());
String rank = ChatColor.WHITE + "" + Helper.parseColors(targetCp.getRankDisplayName());
String joinDate = ChatColor.WHITE + "" + targetCp.getJoinDateString();
String lastSeen = ChatColor.WHITE + "" + targetCp.getLastSeenString();
String inactive = ChatColor.WHITE + "" + targetCp.getInactiveDays() + subColor + "/" + ChatColor.WHITE + plugin.getSettingsManager().getPurgePlayers() + " days";
@@ -33,13 +33,14 @@ public class MenuCommand {
Clan clan = cp == null ? null : cp.getClan();
boolean isLeader = cp != null && cp.isLeader();
boolean isTrusted = cp != null && cp.isTrusted();
boolean isVerified = clan != null && clan.isVerified();
boolean isNonVerified = clan != null && !clan.isVerified();
String clanCommand = plugin.getSettingsManager().getCommandClan();
ChatBlock chatBlock = new ChatBlock();
chatBlock.setCropRight(false);
chatBlock.setPadRight(false);
if (clan == null && plugin.getPermissionsManager().has(player, "simpleclans.leader.create")) {
if (plugin.getSettingsManager().isePurchaseCreation()) {
@@ -81,46 +82,49 @@ public class MenuCommand {
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.roster")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.roster.tag.1.view.a.clan.s.member.list"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.vitals")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.vitals.1.view.your.clan.member.s.vitals"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.coords")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.coords.1.view.your.clan.member.s.coordinates"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.stats")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.stats.1.view.your.clan.member.s.stats"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.kills"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.killsplayer"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.fee.check"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.fee")) {
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, RankPermission.FEE_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.fee.set"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.ally")) {
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.ALLY_ADD, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.ALLY_REMOVE, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.ally.add.remove.tag.1.add.remove.an.ally.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rival")) {
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.RIVAL_ADD, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.RIVAL_REMOVE, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rival.add.remove.tag.1.add.remove.a.rival.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.home")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-set-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-clear-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-regroup")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_REGROUP, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-regroup-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.war")) {
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.WAR_END, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.WAR_START, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.war"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.resetkdr")) {
@@ -129,27 +133,27 @@ public class MenuCommand {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.bb.1.display.bulletin.board"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-add")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.bb.msg.1.add.a.message.to.the.bulletin.board"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.modtag")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.modtag.tag.1.modify.the.clan.s.tag"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.description")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.description.description.1.modify.the.clan.s.description"), clanCommand, ChatColor.WHITE));
}
String toggles = "";
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
toggles += "bb/";
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
toggles += "tag/";
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.fee")) {
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, RankPermission.FEE_ENABLE, PermissionLevel.LEADER, false)) {
toggles += "fee/";
}
@@ -157,21 +161,48 @@ public class MenuCommand {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.toggle.command"), clanCommand, ChatColor.WHITE, Helper.stripTrailing(toggles, "/")));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.invite")) {
if (plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.invite.player.1.invite.a.player"), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.kick")) {
if (plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.kick.player.1.kick.a.player.from.the.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.setrank")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.setrank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.untrust.player.1.set.trust.level1"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.untrust.player.1.set.trust.level2"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.create.rank.1.create.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.assign.rank.player.1.assign.rank.to.player"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.unassign.player.1.unassign.player.from.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.delete")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.delete.rank.1.delete.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_LIST, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.list.1.list.ranks"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_DISPLAYNAME, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.setdisplayname.rank.displayname.1.set.rank.displayname"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.available")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.1.list.available.permissions"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.list")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.1.list.rank.permissions"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.add")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank"), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.promote")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.promote.member.1.promote.a.member.to.leader"), clanCommand, ChatColor.WHITE));
}
@@ -201,7 +232,7 @@ public class MenuCommand {
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.place")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.place"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.mod.mostkilled")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MOSTKILLED, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.mostkilled"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.disband")) {
@@ -4,6 +4,8 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -44,10 +46,10 @@ public class ModtagCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.modtag.tag"), plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("example.clan.modtag.4kfo.4l"));
@@ -46,9 +46,8 @@ public class MostKilledCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.MOSTKILLED, PermissionLevel.TRUSTED, true)) {
return;
}
plugin.getStorageManager().getMostKilled(new DataCallback<Map<String, Integer>>() {
@@ -0,0 +1,308 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.Rank;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
*
* @author RoinujNosde
*/
public class RankCommand {
private SimpleClans plugin;
private Player player;
private ClanPlayer clanPlayer;
private Clan clan;
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] args) {
this.player = player;
plugin = SimpleClans.getInstance();
ClanManager clanManager = plugin.getClanManager();
clanPlayer = clanManager.getClanPlayer(player);
if (clanPlayer == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
clan = clanPlayer.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clanPlayer.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (args.length > 0) {
String subCommand = args[0].toLowerCase();
args = Helper.removeFirst(args);
switch (subCommand) {
case "assign":
assignRank(args);
return;
case "unassign":
unassign(args);
return;
case "create":
createRank(args);
return;
case "list":
listRanks();
return;
case "delete":
deleteRank(args);
return;
case "permissions":
permissions(args);
return;
case "setdisplayname":
setDisplayName(args);
return;
}
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank"),
plugin.getSettingsManager().getCommandClan()));
return;
}
private void assignRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.assign"),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
String rank = args[1].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.0.does.not.exist"));
return;
}
ClanPlayer cpTarget = plugin.getClanManager().getClanPlayer(uuid);
cpTarget.setRank(rank);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.rank.changed"));
}
private void unassign(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.unassign"),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer cpTarget = plugin.getClanManager().getClanPlayer(uuid);
cpTarget.setRank(null);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.unassigned.from.rank"));
}
private void createRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.create"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rank = args[0].toLowerCase();
if (clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.already.exists"));
return;
}
clan.createRank(rank);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("rank.created"));
}
private void listRanks() {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
List<Rank> ranks = clan.getRanks();
if (ranks.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.ranks"));
return;
}
ranks.sort(Comparator.reverseOrder());
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("clans.ranks"));
int count = 1;
for (Rank rank : ranks) {
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("ranks.list.item"), count, Helper.parseColors(rank.getDisplayName()) + ChatColor.AQUA, rank.getName()));
count++;
}
}
private void deleteRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.delete")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.delete"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.0.does.not.exist"));
return;
}
clan.deleteRank(rank);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("rank.0.deleted"), rank));
}
private void setDisplayName(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.setdisplayname")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length < 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.setdisplayname"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rankName = args[0].toLowerCase();
if (!clan.hasRank(rankName)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("rank.0.does.not.exist"), rankName));
return;
}
Rank rank = clan.getRank(rankName);
String dn = Helper.toMessage(Helper.removeFirst(args));
if (dn.contains("&") && !plugin.getPermissionsManager().has(player, "simpleclans.leader.coloredrank")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.set.colored.ranks"));
return;
}
rank.setDisplayName(dn);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("rank.displayname.updated"));
}
private void permissions(String[] args) {
String validPermissionsToMessage = Helper.toMessage(Helper.fromPermissionArray(), ",");
if (args.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.available")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("available.rank.permissions"));
ChatBlock.sendMessage(player, ChatColor.AQUA + validPermissionsToMessage);
return;
}
if (args.length > 0) {
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("rank.0.does.not.exist"), rank));
return;
}
Set<String> permissions = clan.getRank(rank).getPermissions();
if (args.length == 1) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (permissions.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.no.permissions"));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("rank.0.permissions"), rank));
ChatBlock.sendMessage(player, ChatColor.AQUA + Helper.toMessage(permissions.toArray(new String[0]), ","));
return;
}
if (args.length == 3) {
String subCommand = args[1].toLowerCase();
String permission = args[2].toLowerCase();
boolean changed = false;
switch (subCommand) {
case "add":
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.add")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!RankPermission.isValid(permission)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("invalid.permission"), permission, validPermissionsToMessage));
return;
}
permissions.add(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("permission.0.added.to.rank.1"), permission, rank));
changed = true;
break;
case "remove":
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
permissions.remove(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("permission.0.removed.from.rank.1"), permission, rank));
changed = true;
break;
}
if (changed) {
plugin.getStorageManager().updateClan(clan, true);
return;
}
}
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.permissions"),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -44,10 +44,6 @@ public class RivalCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clan.cannot.create.rivals"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.rival"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -81,6 +77,9 @@ public class RivalCommand {
}
if (action.equals(plugin.getLang("add"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.RIVAL_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.reachedRivalLimit()) {
if (!clan.isRival(rival.getTag())) {
clan.addRival(rival);
@@ -96,6 +95,9 @@ public class RivalCommand {
}
if (action.equals(plugin.getLang("remove"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.RIVAL_REMOVE, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isRival(rival.getTag())) {
plugin.getRequestManager().addRivalryBreakRequest(cp, rival, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), Helper.capitalize(rival.getName())));
@@ -80,7 +80,7 @@ public class RosterCommand {
String name = plugin.getSettingsManager().getPageLeaderColor() + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + plugin.getLang("online") : ChatColor.WHITE + cp.getLastSeenDaysString();
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRank()) + ChatColor.RESET, lastSeen);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
@@ -90,7 +90,7 @@ public class RosterCommand {
String name = (cp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor()) + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + plugin.getLang("online") : ChatColor.WHITE + cp.getLastSeenDaysString();
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRank()) + ChatColor.RESET, lastSeen);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
@@ -1,13 +1,11 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
public class SetRankCommand {
public SetRankCommand() {
@@ -22,46 +20,12 @@ public class SetRankCommand {
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.setrank")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length < 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.setrank"), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
String rank = Helper.toMessage(Helper.removeFirst(arg));
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer cpm = plugin.getClanManager().getClanPlayer(uuid);
cpm.setRank(rank);
plugin.getStorageManager().updateClanPlayer(cpm);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.rank.changed"));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.create"),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.assign"),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.setdisplayname"),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -46,9 +46,8 @@ public class StatsCommand {
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
@@ -3,6 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -115,23 +117,19 @@ public class ToggleCommand {
}
}
if (cmd.equalsIgnoreCase("fee") && plugin.getPermissionsManager().has(player, "simpleclans.leader.fee")) {
if (cmd.equalsIgnoreCase("fee") && plugin.getPermissionsManager().has(player, RankPermission.FEE_ENABLE, PermissionLevel.LEADER, true)) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (clan.isLeader(player)) {
if (clan.isMemberFeeEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeoff"));
clan.setMemberFeeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeon"));
clan.setMemberFeeEnabled(true);
}
plugin.getStorageManager().updateClanAsync(clan);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
if (clan.isMemberFeeEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeoff"));
clan.setMemberFeeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeon"));
clan.setMemberFeeEnabled(true);
}
plugin.getStorageManager().updateClanAsync(clan);
}
}
}
@@ -7,7 +7,6 @@ import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* @author phaed
@@ -43,10 +42,11 @@ public class VitalsCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.vitals"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.vitals"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -41,10 +41,6 @@ public class WarCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.war"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -63,6 +59,9 @@ public class WarCommand {
}
if (action.equals(plugin.getLang("start"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.WAR_START, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isWarring(war.getTag())) {
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(clan.getLeaders());
@@ -79,6 +78,9 @@ public class WarCommand {
}
if (action.equals(plugin.getLang("end"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.WAR_END, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isWarring(war.getTag())) {
plugin.getRequestManager().addWarEndRequest(cp, war, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), Helper.capitalize(war.getName())));
@@ -10,7 +10,6 @@ import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt;
import static org.bukkit.conversations.Prompt.END_OF_CONVERSATION;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.Player;
@@ -1,9 +1,9 @@
package net.sacredlabyrinth.phaed.simpleclans.executors;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -25,8 +25,7 @@ public class AllyCommandExecutor implements CommandExecutor {
return false;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.ally")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_CHAT, PermissionLevel.TRUSTED, true)) {
return true;
}
@@ -56,6 +56,7 @@ public final class ClanCommandExecutor implements CommandExecutor {
private final ResetKDRCommand resetKDRCommand;
private final PurgeCommand purgeCommand;
private final DescriptionCommand descriptionCommand;
private final RankCommand rankCommand;
/**
*
@@ -105,6 +106,7 @@ public final class ClanCommandExecutor implements CommandExecutor {
feeCommand = new FeeCommand();
purgeCommand = new PurgeCommand();
descriptionCommand = new DescriptionCommand();
rankCommand = new RankCommand();
}
@Override
@@ -126,6 +128,7 @@ public final class ClanCommandExecutor implements CommandExecutor {
menuCommand.execute(player);
} else {
String subcommand = args[0];
// TODO if
String[] subargs = Helper.removeFirst(args);
if (subcommand.equalsIgnoreCase(plugin.getLang("create.command"))) {
@@ -212,6 +215,8 @@ public final class ClanCommandExecutor implements CommandExecutor {
purgeCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("description.command")) || subcommand.equalsIgnoreCase("description")) {
descriptionCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("rank.command")) || subcommand.equalsIgnoreCase("rank")) {
rankCommand.execute(player, subargs);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("does.not.match"));
}
@@ -156,10 +156,9 @@ public class SCPlayerListener implements Listener {
String message = event.getMessage();
ClanPlayer cp = plugin.getClanManager().getClanPlayer(event.getPlayer());
if (cp != null) {
if (cp != null && !event.isCancelled()) {
if (cp.getChannel().equals(ClanPlayer.Channel.CLAN)) {
event.setCancelled(true);
//TODO: Document this permission
if (!plugin.getPermissionsManager().has(cp.toPlayer(), "simpleclans.member.chat")) {
ChatBlock.sendMessage(cp.toPlayer(), ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
@@ -181,8 +180,8 @@ public class SCPlayerListener implements Listener {
boolean isClanChat = event.getMessage().contains("" + ChatColor.RED + ChatColor.WHITE + ChatColor.RED + ChatColor.BLACK);
boolean isAllyChat = event.getMessage().contains("" + ChatColor.AQUA + ChatColor.WHITE + ChatColor.AQUA + ChatColor.BLACK);
for (Iterator iter = event.getRecipients().iterator(); iter.hasNext();) {
Player player = (Player) iter.next();
for (Iterator<Player> iter = event.getRecipients().iterator(); iter.hasNext();) {
Player player = iter.next();
ClanPlayer rcp = plugin.getClanManager().getClanPlayer(player);
@@ -221,23 +221,6 @@ public final class ClanManager {
return clans.get(Helper.cleanTag(tag));
}
/**
* Get a player's clan
*
* @param playerName
* @return null if not in a clan
*/
@Deprecated
public Clan getClanByPlayerName(String playerName) {
ClanPlayer cp = getClanPlayer(playerName);
if (cp != null) {
return cp.getClan();
}
return null;
}
/**
* Get a player's clan
*
@@ -304,33 +287,6 @@ public final class ClanManager {
return getClanPlayer((OfflinePlayer) player);
}
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getClanPlayer(String playerName) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = getClanPlayerName(playerName);
} else {
cp = clanPlayers.get(playerName.toLowerCase());
}
if (cp == null) {
return null;
}
if (cp.getClan() == null) {
return null;
}
return cp;
}
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
@@ -379,24 +335,6 @@ public final class ClanManager {
return cp;
}
/**
* Gets the ClanPlayer data object for the player, will retrieve disabled
* clan players as well, these are players who used to be in a clan but are
* not currently in one, their data file persists and can be accessed. their
* clan will be null though.
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getAnyClanPlayer(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
return getClanPlayerName(playerName);
} else {
return clanPlayers.get(playerName.toLowerCase());
}
}
/**
* Gets the ClanPlayer data object for the player, will retrieve disabled
* clan players as well, these are players who used to be in a clan but are
@@ -410,26 +348,6 @@ public final class ClanManager {
return clanPlayers.get(playerUniqueId.toString());
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getCreateClanPlayer(String playerName) {
if (clanPlayers.containsKey(playerName.toLowerCase())) {
return clanPlayers.get(playerName.toLowerCase());
}
ClanPlayer cp = new ClanPlayer(playerName);
plugin.getStorageManager().insertClanPlayer(cp);
importClanPlayer(cp);
return cp;
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
@@ -497,11 +415,11 @@ public final class ClanManager {
if (plugin.getSettingsManager().isChatTags()) {
String prefix = plugin.getPermissionsManager().getPrefix(player);
String suffix = plugin.getPermissionsManager().getSuffix(player);
//String suffix = plugin.getPermissionsManager().getSuffix(player);
String lastColor = plugin.getSettingsManager().isUseColorCodeFromPrefix() ? Helper.getLastColorCode(prefix) : ChatColor.WHITE + "";
String fullName = player.getName();
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getName());
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
if (cp == null) {
return;
@@ -527,7 +445,7 @@ public final class ClanManager {
* @param player
*/
public void updateLastSeen(Player player) {
ClanPlayer cp = getAnyClanPlayer(player.getName());
ClanPlayer cp = getAnyClanPlayer(player.getUniqueId());
if (cp != null) {
cp.updateLastSeen();
@@ -541,8 +459,7 @@ public final class ClanManager {
}
}
}
/**
* Bans a player from clan commands
*
@@ -550,7 +467,10 @@ public final class ClanManager {
*/
public void ban(UUID uuid) {
ClanPlayer cp = getClanPlayer(uuid);
Clan clan = cp.getClan();
Clan clan = null;
if (cp != null) {
clan = cp.getClan();
}
if (clan != null) {
if (clan.getSize() == 1) {
@@ -569,32 +489,6 @@ public final class ClanManager {
plugin.getSettingsManager().addBanned(uuid);
}
/**
* @param playerName
*/
@Deprecated
public void ban(String playerName) {
ClanPlayer cp = getClanPlayer(playerName);
Clan clan = cp.getClan();
if (clan != null) {
if (clan.getSize() == 1) {
clan.disband();
} else {
cp.setClan(null);
cp.addPastClan(clan.getColorTag() + (cp.isLeader() ? ChatColor.DARK_RED + "*" : ""));
cp.setLeader(false);
cp.setJoinDate(0);
clan.removeMember(playerName);
plugin.getStorageManager().updateClanPlayer(cp);
plugin.getStorageManager().updateClan(clan);
}
}
plugin.getSettingsManager().addBanned(playerName);
}
/**
* Get a count of rivable clans
@@ -3,17 +3,23 @@ package net.sacredlabyrinth.phaed.simpleclans.managers;
import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
/**
@@ -51,7 +57,7 @@ public final class PermissionsManager {
}
/**
* Whether exonomy plugin exists and is enabled
* Whether economy plugin exists and is enabled
*
* @return
*/
@@ -71,7 +77,7 @@ public final class PermissionsManager {
}
/**
* Saves the permissions for earch clan from the config
* Saves the permissions for each clan from the config
*/
public void savePermissions() {
for (Clan clan : plugin.getClanManager().getClans()) {
@@ -79,11 +85,12 @@ public final class PermissionsManager {
SimpleClans.getInstance().getSettingsManager().getConfig().set("permissions." + clan.getTag(), getPermissions(clan));
}
}
SimpleClans.getInstance().getSettingsManager().load();
SimpleClans.getInstance().getSettingsManager().save();
}
/**
* Adds all pemrissions for a clan
* Adds all permissions for a clan
*
* @param clan
*/
@@ -281,6 +288,60 @@ public final class PermissionsManager {
return player.hasPermission(perm);
}
}
/**
* Checks if the player has the rank permission or the permission level, and the equivalent Bukkit permission
*
* @param player the player
* @param permission the rank permission
* @param notify notify the player if they don't have permission
* @return
*/
public boolean has(Player player, RankPermission permission, PermissionLevel level, boolean notify) {
if (player == null || permission == null) {
return false;
}
ClanPlayer clanPlayer = plugin.getClanManager().getClanPlayer(player);
if (clanPlayer == null) {
return false;
}
boolean hasBukkitPermission = has(player, permission.getBukkitPermission());
if (!hasBukkitPermission) {
return false;
}
boolean hasLevel = false;
if (level != null) {
switch (level) {
case LEADER:
hasLevel = clanPlayer.isLeader();
break;
case TRUSTED:
hasLevel = clanPlayer.isTrusted();
break;
}
}
boolean hasRankPermission = false;
String rankName = clanPlayer.getRankId();
Clan clan = clanPlayer.getClan();
if (clan.hasRank(rankName)) {
hasRankPermission = clan.getRank(rankName).getPermissions().contains(permission.toString());
} else {
if (rankName != null && !rankName.isEmpty()) {
clanPlayer.setRank(null);
}
}
if (notify && !hasLevel && !hasRankPermission) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("you.must.be.0.or.have.the.permission.1.to.use.this"),
level == PermissionLevel.LEADER ? plugin.getLang("leader") : plugin.getLang("trusted"), permission.toString()));
}
return hasLevel || hasRankPermission;
}
/**
* Gives the player permissions linked to a clan
@@ -46,7 +46,7 @@ public final class RequestManager {
public void addDemoteRequest(ClanPlayer requester, String demotedName, Clan clan) {
String msg = MessageFormat.format(plugin.getLang("asking.for.the.demotion"), Helper.capitalize(requester.getName()), demotedName);
ClanPlayer demotedTp = plugin.getClanManager().getClanPlayer(demotedName.toLowerCase());
ClanPlayer demotedTp = plugin.getClanManager().getClanPlayer(UUIDMigration.getForcedPlayerUUID(demotedName));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
acceptors.remove(demotedTp);
@@ -334,7 +334,7 @@ public final class RequestManager {
String demoted = req.getTarget();
UUID demotedUniqueId = UUIDMigration.getForcedPlayerUUID(demoted);
if (SimpleClans.getInstance().hasUUID() && demotedUniqueId != null) {
if (demotedUniqueId == null) {
return;
}
@@ -350,7 +350,7 @@ public final class RequestManager {
String promoted = req.getTarget();
UUID promotedUniqueId = UUIDMigration.getForcedPlayerUUID(promoted);
if (SimpleClans.getInstance().hasUUID() && promotedUniqueId == null) {
if (promotedUniqueId == null) {
return;
}
if (denies.isEmpty()) {
@@ -403,9 +403,10 @@ public final class RequestManager {
* Starts the task that asks for the votes of all requests
*/
public void askerTask() {
plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() {
@Override
public void run() {
new BukkitRunnable() {
@Override
public void run() {
for (Iterator<Map.Entry<String, Request>> iter = requests.entrySet().iterator(); iter.hasNext(); ) {
Request req = iter.next().getValue();
@@ -418,10 +419,9 @@ public final class RequestManager {
}
ask(req);
req.incrementAskCount();
}
}
}, 0, plugin.getSettingsManager().getRequestFreqencySecs() * 20L);
req.incrementAskCount();
}
}}.runTaskTimerAsynchronously(plugin, 0, plugin.getSettingsManager().getRequestFreqencySecs() * 20L);
}
/**
@@ -1,22 +1,20 @@
package net.sacredlabyrinth.phaed.simpleclans.managers;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.configuration.file.FileConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.bukkit.configuration.file.FileConfiguration;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
* @author phaed
*/
public final class SettingsManager {
private boolean onlineMode;
private boolean disableMessages;
private String clanChatRankColor;
private boolean tagBasedClanChat;
@@ -146,6 +144,12 @@ public final class SettingsManager {
private String clanChatBracketColor;
private String clanChatPlayerBracketLeft;
private String clanChatPlayerBracketRight;
private int tasksCollectUpkeepHour;
private int tasksCollectUpkeepMinute;
private int tasksCollectUpkeepWarningHour;
private int tasksCollectUpkeepWarningMinute;
private int tasksCollectFeeHour;
private int tasksCollectFeeMinute;
private boolean clanFFOnByDefault;
private double kwRival;
private double kwNeutral;
@@ -209,7 +213,6 @@ public final class SettingsManager {
getConfig().options().copyDefaults(true);
}
onlineMode = getConfig().getBoolean("settings.online-mode");
disableMessages = getConfig().getBoolean("settings.disable-messages");
teleportOnSpawn = getConfig().getBoolean("settings.teleport-home-on-spawn");
dropOnHome = getConfig().getBoolean("settings.drop-items-on-clan-home");
@@ -344,6 +347,12 @@ public final class SettingsManager {
clanChatTagBracketRight = getConfig().getString("clanchat.tag-bracket.right");
clanChatPlayerBracketLeft = getConfig().getString("clanchat.player-bracket.left");
clanChatPlayerBracketRight = getConfig().getString("clanchat.player-bracket.right");
tasksCollectFeeHour = getConfig().getInt("tasks.collect-fee.hour");
tasksCollectFeeMinute = getConfig().getInt("tasks.collect-fee.minute");
tasksCollectUpkeepHour = getConfig().getInt("tasks.collect-upkeep.hour");
tasksCollectUpkeepMinute = getConfig().getInt("tasks.collect-upkeep.minute");
tasksCollectUpkeepWarningHour = getConfig().getInt("tasks.collect-upkeep-warning.hour");
tasksCollectUpkeepWarningMinute = getConfig().getInt("tasks.collect-upkeep-warning.minute");
kwRival = getConfig().getDouble("kill-weights.rival");
kwNeutral = getConfig().getDouble("kill-weights.neutral");
kwCivilian = getConfig().getDouble("kill-weights.civilian");
@@ -389,7 +398,55 @@ public final class SettingsManager {
}
}
/**
public int getTasksCollectUpkeepHour() {
return tasksCollectUpkeepHour;
}
public void setTasksCollectUpkeepHour(int tasksCollectUpkeepHour) {
this.tasksCollectUpkeepHour = tasksCollectUpkeepHour;
}
public int getTasksCollectUpkeepMinute() {
return tasksCollectUpkeepMinute;
}
public void setTasksCollectUpkeepMinute(int tasksCollectUpkeepMinute) {
this.tasksCollectUpkeepMinute = tasksCollectUpkeepMinute;
}
public int getTasksCollectUpkeepWarningHour() {
return tasksCollectUpkeepWarningHour;
}
public void setTasksCollectUpkeepWarningHour(int tasksCollectUpkeepWarningHour) {
this.tasksCollectUpkeepWarningHour = tasksCollectUpkeepWarningHour;
}
public int getTasksCollectUpkeepWarningMinute() {
return tasksCollectUpkeepWarningMinute;
}
public void setTasksCollectUpkeepWarningMinute(int tasksCollectUpkeepWarningMinute) {
this.tasksCollectUpkeepWarningMinute = tasksCollectUpkeepWarningMinute;
}
public int getTasksCollectFeeHour() {
return tasksCollectFeeHour;
}
public void setTasksCollectFeeHour(int tasksCollectFeeHour) {
this.tasksCollectFeeHour = tasksCollectFeeHour;
}
public int getTasksCollectFeeMinute() {
return tasksCollectFeeMinute;
}
public void setTasksCollectFeeMinute(int tasksCollectFeeMinute) {
this.tasksCollectFeeMinute = tasksCollectFeeMinute;
}
/**
* Returns the delay between kills
*
* @return
@@ -610,60 +667,6 @@ public final class SettingsManager {
return false;
}
/**
* Check whether a player is banned
*
* @param playerName the player's name
* @return whether player is banned
*/
@Deprecated
public boolean isBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
for (String pl : getBannedPlayers()) {
if (pl.equalsIgnoreCase(playerName)) {
return true;
}
}
return false;
}
/**
* Add a player to the banned list
*
* @param playerName the player's name
*/
@Deprecated
public void addBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
if (!bannedPlayers.contains(playerName)) {
bannedPlayers.add(playerName);
}
save();
}
/**
* Remove a player from the banned list
*
* @param playerName the player's name
*/
@Deprecated
public void removeBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
if (bannedPlayers.contains(playerName)) {
bannedPlayers.remove(playerName);
}
save();
}
/**
* Check whether a player is banned
@@ -1554,8 +1557,9 @@ public final class SettingsManager {
return tamableMobsSharing;
}
@Deprecated
public boolean isOnlineMode() {
return onlineMode;
return true;
}
public boolean isDisableMessages() {
@@ -96,6 +96,7 @@ public final class StorageManager {
+ " `balance` double(64,2),"
+ " `fee_enabled` tinyint(1) default '0',"
+ " `fee_value` double(64,2),"
+ " `ranks` text NOT NULL,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE KEY `uq_simpleclans_1` (`tag`));";
core.execute(query);
@@ -168,6 +169,7 @@ public final class StorageManager {
+ " `balance` double(64,2) default 0.0,"
+ " `fee_enabled` tinyint(1) default '0',"
+ " `fee_value` double(64,2),"
+ " `ranks` text NOT NULL,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE (`tag`));";
core.execute(query);
@@ -348,6 +350,7 @@ public final class StorageManager {
String packed_bb = res.getString("packed_bb");
String cape_url = res.getString("cape_url");
String flags = res.getString("flags");
String ranks = res.getString("ranks");
long founded = res.getLong("founded");
long last_used = res.getLong("last_used");
double balance = res.getDouble("balance");
@@ -379,6 +382,7 @@ public final class StorageManager {
clan.setBalance(balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
out.add(clan);
} catch (Exception ex) {
@@ -424,6 +428,7 @@ public final class StorageManager {
String packed_bb = res.getString("packed_bb");
String cape_url = res.getString("cape_url");
String flags = res.getString("flags");
String ranks = res.getString("ranks");
long founded = res.getLong("founded");
long last_used = res.getLong("last_used");
double balance = res.getDouble("balance");
@@ -455,6 +460,7 @@ public final class StorageManager {
clan.setBalance(balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
out = clan;
} catch (Exception ex) {
@@ -662,8 +668,25 @@ public final class StorageManager {
* @param clan
*/
public void insertClan(Clan clan) {
String query = "INSERT INTO `sc_clans` (`description`, `fee_enabled`, `fee_value`, `verified`, `tag`, `color_tag`, `name`, `friendly_fire`, `founded`, `last_used`, `packed_allies`, `packed_rivals`, `packed_bb`, `cape_url`, `flags`, `balance`) ";
String values = "VALUES ( '" + Helper.escapeQuotes(clan.getDescription()) + "'," + (clan.isMemberFeeEnabled() ? 1 : 0) +","+ Helper.escapeQuotes(String.valueOf(clan.getMemberFee())) + "," + (clan.isVerified() ? 1 : 0) + ",'" + Helper.escapeQuotes(clan.getTag()) + "','" + Helper.escapeQuotes(clan.getColorTag()) + "','" + Helper.escapeQuotes(clan.getName()) + "'," + (clan.isFriendlyFire() ? 1 : 0) + ",'" + clan.getFounded() + "','" + clan.getLastUsed() + "','" + Helper.escapeQuotes(clan.getPackedAllies()) + "','" + Helper.escapeQuotes(clan.getPackedRivals()) + "','" + Helper.escapeQuotes(clan.getPackedBb()) + "','" + Helper.escapeQuotes(clan.getCapeUrl()) + "','" + Helper.escapeQuotes(clan.getFlags()) + "','" + Helper.escapeQuotes(String.valueOf(clan.getBalance())) + "');";
String query = "INSERT INTO `sc_clans` (`ranks`, `description`, `fee_enabled`, `fee_value`, `verified`, `tag`, `color_tag`, `name`, `friendly_fire`, `founded`, `last_used`, `packed_allies`, `packed_rivals`, `packed_bb`, `cape_url`, `flags`, `balance`) ";
String values = "VALUES ( '"
+ Helper.escapeQuotes(Helper.ranksToJson(clan.getRanks())) + "','"
+ Helper.escapeQuotes(clan.getDescription())+ "',"
+ (clan.isMemberFeeEnabled() ? 1 : 0) +","
+ Helper.escapeQuotes(String.valueOf(clan.getMemberFee())) + ","
+ (clan.isVerified() ? 1 : 0) + ",'"
+ Helper.escapeQuotes(clan.getTag()) + "','"
+ Helper.escapeQuotes(clan.getColorTag()) + "','"
+ Helper.escapeQuotes(clan.getName()) + "',"
+ (clan.isFriendlyFire() ? 1 : 0) + ",'"
+ clan.getFounded() + "','"
+ clan.getLastUsed() + "','"
+ Helper.escapeQuotes(clan.getPackedAllies()) + "','"
+ Helper.escapeQuotes(clan.getPackedRivals()) + "','"
+ Helper.escapeQuotes(clan.getPackedBb()) + "','"
+ Helper.escapeQuotes(clan.getCapeUrl()) + "','"
+ Helper.escapeQuotes(clan.getFlags()) + "','"
+ Helper.escapeQuotes(String.valueOf(clan.getBalance())) + "');";
core.insert(query + values);
}
@@ -725,7 +748,7 @@ public final class StorageManager {
if (updateLastUsed) {
clan.updateLastUsed();
}
String query = "UPDATE `sc_clans` SET description = '" + Helper.escapeQuotes(clan.getDescription())+ "', fee_enabled = "+ (clan.isMemberFeeEnabled() ? 1 : 0) +", fee_value = '" + clan.getMemberFee() + "', verified = " + (clan.isVerified() ? 1 : 0) + ", tag = '" + Helper.escapeQuotes(clan.getTag()) + "', color_tag = '" + Helper.escapeQuotes(clan.getColorTag()) + "', name = '" + Helper.escapeQuotes(clan.getName()) + "', friendly_fire = " + (clan.isFriendlyFire() ? 1 : 0) + ", founded = '" + clan.getFounded() + "', last_used = '" + clan.getLastUsed() + "', packed_allies = '" + Helper.escapeQuotes(clan.getPackedAllies()) + "', packed_rivals = '" + Helper.escapeQuotes(clan.getPackedRivals()) + "', packed_bb = '" + Helper.escapeQuotes(clan.getPackedBb()) + "', cape_url = '" + Helper.escapeQuotes(clan.getCapeUrl()) + "', cape_url = '" + Helper.escapeQuotes(String.valueOf(clan.getCapeUrl())) + "', balance = '" + clan.getBalance() + "', flags = '" + Helper.escapeQuotes(clan.getFlags()) + "' WHERE tag = '" + Helper.escapeQuotes(clan.getTag()) + "';";
String query = "UPDATE `sc_clans` SET ranks = '"+ Helper.escapeQuotes(Helper.ranksToJson(clan.getRanks())) +"', description = '" + Helper.escapeQuotes(clan.getDescription())+ "', fee_enabled = "+ (clan.isMemberFeeEnabled() ? 1 : 0) +", fee_value = '" + clan.getMemberFee() + "', verified = " + (clan.isVerified() ? 1 : 0) + ", tag = '" + Helper.escapeQuotes(clan.getTag()) + "', color_tag = '" + Helper.escapeQuotes(clan.getColorTag()) + "', name = '" + Helper.escapeQuotes(clan.getName()) + "', friendly_fire = " + (clan.isFriendlyFire() ? 1 : 0) + ", founded = '" + clan.getFounded() + "', last_used = '" + clan.getLastUsed() + "', packed_allies = '" + Helper.escapeQuotes(clan.getPackedAllies()) + "', packed_rivals = '" + Helper.escapeQuotes(clan.getPackedRivals()) + "', packed_bb = '" + Helper.escapeQuotes(clan.getPackedBb()) + "', cape_url = '" + Helper.escapeQuotes(clan.getCapeUrl()) + "', cape_url = '" + Helper.escapeQuotes(String.valueOf(clan.getCapeUrl())) + "', balance = '" + clan.getBalance() + "', flags = '" + Helper.escapeQuotes(clan.getFlags()) + "' WHERE tag = '" + Helper.escapeQuotes(clan.getTag()) + "';";
core.update(query);
}
@@ -983,6 +1006,14 @@ public final class StorageManager {
query = "ALTER TABLE sc_players ADD COLUMN `resign_times` text;";
core.execute(query);
}
/**
* From 2.8.2 to 2.9
*/
if (!core.existsColumn("sc_clans", "ranks")) {
query = "ALTER TABLE sc_clans ADD COLUMN `ranks` text;";
core.execute(query);
}
/**
* Bukkit 1.7.5+ UUID Migration
@@ -1021,7 +1052,7 @@ public final class StorageManager {
*
* @param
*/
private void updatePlayersToUUID() {
private void updatePlayersToUUID() {
SimpleClans.log("[SimpleClans] Starting Migration to UUID Players !");
SimpleClans.log("[SimpleClans] ==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
SimpleClans.log("[SimpleClans] ==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
@@ -8,6 +8,7 @@ import java.sql.SQLException;
import java.util.logging.Logger;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.threads.ThreadUpdateSQL;
/**
* @author cc_madelg
@@ -114,14 +115,19 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void insert(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL INSERT Query: " + ex);
log.severe("Query: " + query);
}
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
Thread thread = new Thread(new ThreadUpdateSQL(getConnection(), query, "INSERT"));
thread.start();
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL INSERT Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
/**
@@ -131,13 +137,18 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void update(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL UPDATE Query: " + ex);
log.severe("Query: " + query);
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
Thread thread = new Thread(new ThreadUpdateSQL(getConnection(), query, "UPDATE"));
thread.start();
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL UPDATE Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
@@ -148,13 +159,18 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void delete(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL DELETE Query: " + ex);
log.severe("Query: " + query);
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
Thread thread = new Thread(new ThreadUpdateSQL(getConnection(), query, "DELETE"));
thread.start();
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL DELETE Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
@@ -11,18 +11,28 @@ import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
/**
*
* @author roinujnosde
*/
public class CollectFeeTask extends BukkitRunnable {
private final SimpleClans plugin;
public CollectFeeTask() {
plugin = SimpleClans.getInstance();
}
/**
* Starts the repetitive task
*/
public void start() {
long delay = Helper.getDelayTo(1, 0);
SettingsManager sm = plugin.getSettingsManager();
int hour = sm.getTasksCollectFeeHour();
int minute = sm.getTasksCollectFeeMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(SimpleClans.getInstance(), delay * 20, 86400 * 20);
}
@@ -32,8 +42,6 @@ public class CollectFeeTask extends BukkitRunnable {
*/
@Override
public void run() {
final SimpleClans plugin = SimpleClans.getInstance();
for (Clan clan : plugin.getClanManager().getClans()) {
final double memberFee = clan.getMemberFee();
@@ -12,12 +12,21 @@ import org.bukkit.scheduler.BukkitRunnable;
* @author roinujnosde
*/
public class CollectUpkeepTask extends BukkitRunnable {
private final SimpleClans plugin;
private final SettingsManager settingsManager;
public CollectUpkeepTask() {
plugin = SimpleClans.getInstance();
settingsManager = plugin.getSettingsManager();
}
/**
* Starts the repetitive task
*/
public void start() {
long delay = Helper.getDelayTo(1, 30);
int hour = settingsManager.getTasksCollectUpkeepHour();
int minute = settingsManager.getTasksCollectUpkeepMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(SimpleClans.getInstance(), delay * 20, 86400 * 20);
}
@@ -27,9 +36,10 @@ public class CollectUpkeepTask extends BukkitRunnable {
*/
@Override
public void run() {
final SimpleClans plugin = SimpleClans.getInstance();
final SettingsManager settingsManager = plugin.getSettingsManager();
plugin.getClanManager().getClans().forEach((clan) -> {
if (plugin == null) {
throw new IllegalStateException("Use the start() method!");
}
plugin.getClanManager().getClans().forEach((clan) -> {
if (settingsManager.isChargeUpkeepOnlyIfMemberFeeEnabled() && !clan.isMemberFeeEnabled()) {
return;
}
@@ -11,15 +11,24 @@ import org.bukkit.scheduler.BukkitRunnable;
* @author roinujnosde
*/
public class UpkeepWarningTask extends BukkitRunnable {
private final SimpleClans plugin;
private final SettingsManager sm;
public UpkeepWarningTask() {
plugin = SimpleClans.getInstance();
sm = plugin.getSettingsManager();
}
/**
* Starts the repetitive task
*
*/
public void start() {
long delay = Helper.getDelayTo(12, 0);
this.runTaskTimerAsynchronously(SimpleClans.getInstance(), delay * 20, 86400 * 20);
int hour = sm.getTasksCollectUpkeepWarningHour();
int minute = sm.getTasksCollectUpkeepWarningMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(plugin, delay * 20, 86400 * 20);
}
/**
@@ -27,8 +36,9 @@ public class UpkeepWarningTask extends BukkitRunnable {
*/
@Override
public void run() {
final SimpleClans plugin = SimpleClans.getInstance();
final SettingsManager sm = plugin.getSettingsManager();
if (plugin == null) {
throw new IllegalStateException("Use the start() method!");
}
plugin.getClanManager().getClans().forEach((clan) -> {
if (sm.isChargeUpkeepOnlyIfMemberFeeEnabled() && !clan.isMemberFeeEnabled()) {
return;
@@ -25,7 +25,7 @@ import java.util.concurrent.Callable;
public class UUIDFetcher implements Callable<Map<String, UUID>> {
private static final double PROFILES_PER_REQUEST = 100;
private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
private static final String PROFILE_URL = "https://api.mojang.com/users/profiles/minecraft";
private final JSONParser jsonParser = new JSONParser();
private final List<String> names;
private final boolean rateLimiting;
@@ -16,8 +16,6 @@ public class UUIDMigration {
private UUIDMigration() {}
public static boolean canReturnUUID() {
if(!SimpleClans.getInstance().getSettingsManager().isOnlineMode())
return false;
try {
Bukkit.class.getDeclaredMethod("getPlayer", UUID.class);
return true;
@@ -28,25 +26,22 @@ public class UUIDMigration {
public static UUID getForcedPlayerUUID(String playerDisplayName) {
Player onlinePlayer = SimpleClans.getInstance().getServer().getPlayerExact(playerDisplayName);
OfflinePlayer offlinePlayer = SimpleClans.getInstance().getServer().getOfflinePlayer(playerDisplayName);
@SuppressWarnings("deprecation")
OfflinePlayer offlinePlayer = SimpleClans.getInstance().getServer().getOfflinePlayer(playerDisplayName);
if (onlinePlayer != null) {
return onlinePlayer.getUniqueId();
return onlinePlayer.getUniqueId();
} else {
for (ClanPlayer cp : SimpleClans.getInstance().getClanManager().getAllClanPlayers()) {
if (cp.getName().equalsIgnoreCase(playerDisplayName)) {
return cp.getUniqueId();
}
}
try {
return UUIDFetcher.getUUIDOf(playerDisplayName);
} catch (Exception ex) {
if (offlinePlayer != null) {
return offlinePlayer.getUniqueId();
} else {
return null;
}
}
for (ClanPlayer cp : SimpleClans.getInstance().getClanManager().getAllClanPlayers()) {
if (cp.getName().equalsIgnoreCase(playerDisplayName)) {
return cp.getUniqueId();
}
}
if (offlinePlayer != null) {
return offlinePlayer.getUniqueId();
} else {
return null;
}
}
}
+11 -2
View File
@@ -13,7 +13,6 @@ tag:
leader-color: '4'
char: ' .'
settings:
online-mode: true
disable-messages: false
tameable-mobs-sharing: false
teleport-blocks: false
@@ -117,6 +116,16 @@ clan:
ff-on-by-default: false
min-length: 2
min-size-to-set-ally: 3
tasks:
collect-upkeep:
hour: 1
minute: 30
collect-upkeep-warning:
hour: 12
minute: 0
collect-fee:
hour: 1
minute: 0
page:
untrusted-color: '8'
clan-name-color: b
@@ -166,5 +175,5 @@ permissions:
YourClanNameHere:
- test.permission
performance:
use-threads: false
use-threads: true
use-bungeecord: false
+1
View File
@@ -262,6 +262,7 @@ your.clan.tag.must.be.longer.than.characters: "A klán tagjának hosszabbnak kel
your.tag.cannot.contain.the.following.colors: "A címke nem tartalmazhatja a következő színeket: {0}"
your.clan.name.cannot.be.longer.than.characters: "A klán neve legfeljebb {0} karakter lehet"
your.tag.cannot.contain.color.codes: "A címke nem tartalmazhat színkódokat"
you.cannot.set.colored.ranks: "You cannot set colored ranks"
your.clan.name.must.be.longer.than.characters: "A klán neveinek {0} karakter hosszúnak kell lenniük"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "A klán tagja csak betűket, számokat és színkódokat tartalmazhat"
your.clan.name.cannot.contain.color.codes: "A klán neve nem tartalmazhat színkódokat"
+1
View File
@@ -261,6 +261,7 @@ your.clan.tag.cannot.be.longer.than.characters: "A tag do seu clã não pode ser
your.clan.tag.must.be.longer.than.characters: "A tag do seu clã deve ser maior que {0} caracteres"
your.tag.cannot.contain.the.following.colors: "Sua tag não pode conter as seguintes cores: {0}"
your.tag.cannot.contain.color.codes: "Sua tag não pode conter códigos de cor"
you.cannot.set.colored.ranks: "Você não pode definir ranks coloridos"
your.clan.name.cannot.be.longer.than.characters: "O nome do seu clã não pode ser maior que {0} caracteres"
your.clan.name.must.be.longer.than.characters: "O nome do seu clã deve ser maior que {0} caracteres"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "A tag do seu clã pode conter apenas letras, números e códigos de cor"
+1
View File
@@ -261,6 +261,7 @@ your.clan.tag.cannot.be.longer.than.characters: "你的帮派的标签不能超
your.clan.tag.must.be.longer.than.characters: "你的帮派的标签必须超过 {0} 字符"
your.tag.cannot.contain.the.following.colors: "帮派的标签不能含有以下颜色: {0}"
your.tag.cannot.contain.color.codes: "Your tag cannot contain color codes"
you.cannot.set.colored.ranks: "You cannot set colored ranks"
your.clan.name.cannot.be.longer.than.characters: "你的帮派的名称不能超过 {0} 字符"
your.clan.name.must.be.longer.than.characters: "你的帮派的名称必须超过 {0} 字符"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "帮派的标签只能含有字母、数字和颜色代码"
+41 -3
View File
@@ -49,7 +49,7 @@ usage.ban.unban: "Usage: /{0} ban/unban [player]"
usage.rival: "Usage: /{0} rival add/remove [tag]"
usage.war: "Usage: /{0} war start/end [tag]"
usage.cape.url: "Usage: /{0} cape [url]"
usage.setrank: "Usage: /{0} setrank [player] [rank], rank can be multiple worlds and contain &f color codes"
usage.setrank: "Usage: /{0} setrank [player] [rank], rank can be multiple words and contain &f color codes"
usage.clanff: "Usage: /{0} clanff allow/block"
usage.0.coords: "Usage: /{0} coords"
usage.create.tag: "Usage: /{0} create [tag] [name]"
@@ -88,7 +88,7 @@ usage.0.leaderboard: "Usage: /{0} leaderboard"
0.purge.player.1.purge.a.player: "/{0} purge [player]{1} - Purge a player"
0.verify.tag.1.verify.an.unverified.clan: "/{0} verify [tag]{1} - Verify an unverified clan"
0.verify.1.purchase.verification.of.your.clan: "/{0} verify{1} - Purchase verification of your clan"
0.list.1.lists.all.clans: "/{0} list [name/size/kdr/founded/active] [asc/desc]{1} - Lists all clans"
0.list.1.lists.all.clans: "/{0} list [order by] [asc/desc]{1} - Lists all clans - (order by: name/size/kdr/founded/active)"
0.profile.1.view.your.clan.s.profile: "/{0} profile{1} - View your clan''s profile"
0.profile.tag.1.view.a.clan.s.profile: "/{0} profile [tag]{1} - View a clan''s profile"
0.lookup.1.lookup.your.info: "/{0} lookup{1} - Lookup your info"
@@ -261,6 +261,7 @@ your.clan.tag.cannot.be.longer.than.characters: "Your clan''s tag cannot be long
your.clan.tag.must.be.longer.than.characters: "Your clan''s tag must be longer than {0} characters"
your.tag.cannot.contain.the.following.colors: "Your tag cannot contain the following colors: {0}"
your.tag.cannot.contain.color.codes: "Your tag cannot contain color codes"
you.cannot.set.colored.ranks: "You cannot set colored ranks"
your.clan.name.cannot.be.longer.than.characters: "Your clan''s name cannot be longer than {0} characters"
your.clan.name.must.be.longer.than.characters: "Your clan''s name must be longer than {0} characters"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "Your clan''s tag can only contain letters, numbers, and color codes"
@@ -462,4 +463,41 @@ your.clan.description.must.be.longer.than: "Your clan description must be longer
your.clan.description.cannot.be.longer.than: "Your clan description cannot be longer than {0} characters"
description.changed: "You have successfully changed your clan's description"
no.description: "No description"
the.player.must.wait.0.before.joining.your.clan.again: "This player must wait {0} minute(s) before joining your clan again"
the.player.must.wait.0.before.joining.your.clan.again: "This player must wait {0} minute(s) before joining your clan again"
disabled.command: "Disabled command"
rank.displayname.updated: "The rank's display name was updated!"
rank.0.permissions: "Rank {0}''s permissions:"
available.rank.permissions: "Available permissions for ranks:"
rank.already.exists: "Rank already exists"
rank.0.does.not.exist: "Rank {0} doesn''t exist"
rank.created: "Rank created"
invalid.permission: "{0} is not a valid permission! Use one of these: {1}"
permission.0.added.to.rank.1: "Permission {0} added to rank {1}"
permission.0.removed.from.rank.1: "Permission {0} removed from rank {1}"
rank.0.deleted: "Rank {0} deleted"
usage.0.rank.create: "Usage: /{0} rank create [name]"
usage.0.rank.setdisplayname: "Usage: /{0} rank setdisplayname [rank] [displayname], displayname can be multiple worls and contain color codes"
usage.0.rank.delete: "Usage: /{0} rank delete [rank]"
usage.0.rank.permissions: "Usage: /{0} rank permissions [rank] [add/remove] [permission]"
usage.0.rank.assign: "Usage: /{0} rank assign [player] [rank]"
usage.0.rank.unassign: "Usage: /{0} rank unassign [player]"
usage.0.rank: "Usage: /{0} rank [create/assign/unassign/delete/list/setdisplayname/permissions]"
clans.ranks: "Clan's ranks:"
ranks.list.item: "{0}# {1} ({2})"
no.ranks: "No ranks were created"
rank.no.permissions: "This rank doesn't have any permission"
player.unassigned.from.rank: "Player unassigned from rank"
rank.command: "rank"
0.rank.create.rank.1.create.rank: "/{0} rank create [rank]{1} - Create a rank"
0.rank.assign.rank.player.1.assign.rank.to.player: "/{0} rank assign [rank] [player]{1} - Assign rank to a member"
0.rank.unassign.player.1.unassign.player.from.rank: "/{0} rank unassign [player]{1} - Unassign a member from a rank"
0.rank.delete.rank.1.delete.rank: "/{0} rank delete [rank]{1} - Delete a rank"
0.rank.list.1.list.ranks: "/{0} rank list{1} - List the ranks"
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname: "/{0} rank setdisplayname [rank] [displayname]{1} - Set a rank displayname"
0.rank.permissions.1.list.available.permissions: "/{0} rank permissions{1} - List the available permissions"
0.rank.permissions.rank.1.list.rank.permissions: "/{0} rank permissions [rank]{1} - List the permissions of the rank"
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank: "/{0} rank permissions [rank] add [permission]{1} - Add a permission to the rank"
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank: "/{0} rank permissions [rank] remove [permission]{1} - Remove a permission from the rank"
you.must.be.0.or.have.the.permission.1.to.use.this: "You must be {0} or your leader must give your rank the permission {1} to use this"
deposit.not.allowed: "Deposit is not allowed"
withdraw.not.allowed: "Withdraw is not allowed"
+38
View File
@@ -52,6 +52,7 @@ permissions:
description: Can view rivalries by clan
simpleclans.anyone.kdr-exempt:
description: The player's KDR is not affected on killing/dying
default: false
simpleclans.member.profile:
description: Can view his own clan's profile
simpleclans.member.roster:
@@ -104,6 +105,8 @@ permissions:
description: Can modify his clan's description
simpleclans.leader.cape:
description: Can set his clan's cape url
simpleclans.leader.bb-clear:
description: Can clear his clan's bb
simpleclans.member.cape-toggle:
description: Can toggle his cape on/off
simpleclans.member.kills:
@@ -140,8 +143,31 @@ permissions:
description: Can start wars
simpleclans.leader.setrank:
description: Can set ranks
simpleclans.leader.coloredrank:
description: Can set colored ranks
default: true
simpleclans.leader.coloredtag:
description: Can use color codes in tags
simpleclans.leader.rank.list:
description: Can list the ranks
simpleclans.leader.rank.create:
description: Can create a new rank
simpleclans.leader.rank.assign:
description: Can assign a rank to a user
simpleclans.leader.rank.unassign:
description: Can unassign a player from a rank
simpleclans.leader.rank.delete:
description: Can delete a rank
simpleclans.leader.rank.permissions.available:
description: Can list the available permissions
simpleclans.leader.rank.permissions.list:
description: Can list the permissions of a rank
simpleclans.leader.rank.permissions.add:
description: Can add permissions to a rank
simpleclans.leader.rank.permissions.remove:
description: Can remove permissions from a rank
simpleclans.leader.rank.setdisplayname:
description: Can set the rank displayname
simpleclans.member.bank:
description: Can use banks
simpleclans.admin.*:
@@ -225,3 +251,15 @@ permissions:
simpleclans.leader.home-regroup: true
simpleclans.leader.setrank: true
simpleclans.leader.coloredtag: true
simpleclans.leader.coloredrank: true
simpleclans.leader.bb-clear: true
simpleclans.leader.rank.setdisplayname: true
simpleclans.leader.rank.list: true
simpleclans.leader.rank.create: true
simpleclans.leader.rank.assign: true
simpleclans.leader.rank.unassign: true
simpleclans.leader.rank.delete: true
simpleclans.leader.rank.permissions.available: true
simpleclans.leader.rank.permissions.add: true
simpleclans.leader.rank.permissions.remove: true
simpleclans.leader.rank.permissions.list: true