From f16512a0ef6271f62a683f3cb1d475225ecb55c3 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:16:58 -0300 Subject: [PATCH 01/10] feat: add global rejoin cooldown option --- .../commands/general/GeneralCommands.java | 17 ++++-- .../simpleclans/managers/ClanManager.java | 58 ++++++++++++++++--- .../simpleclans/managers/SettingsManager.java | 1 + src/main/resources/config.yml | 7 ++- src/main/resources/messages.properties | 1 + src/main/resources/messages_en_US.properties | 1 + wiki/how-to-setup/configuration.md | 10 ++-- 7 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 src/main/resources/messages_en_US.properties diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java index 7f1593860..def0b9a53 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java @@ -85,11 +85,20 @@ public void locale(ClanPlayer cp, @Values("@locales") @Name("locale") @Single St public void create(Player player, @Optional @Name("tag") String tag, @Optional @Name("name") String name) { ClanPlayer cp = cm.getAnyClanPlayer(player.getUniqueId()); - if (cp != null && cp.getClan() != null) { - ChatBlock.sendMessage(player, RED + lang("you.must.first.resign", player, - cp.getClan().getName())); - return; + if (cp != null) { + if (cp.getClan() != null) { + ChatBlock.sendMessage(player, RED + lang("you.must.first.resign", player, + cp.getClan().getName())); + return; + } + + long wait = cm.getMinutesBeforeAction(cp); + if (wait > 0) { + ChatBlock.sendMessage(player, RED + lang("you.must.wait.0.before.creating.a.clan", player, wait)); + return; + } } + HashMap initialData = new HashMap<>(); initialData.put(TAG_KEY, tag); initialData.put(NAME_KEY, name); diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index cad5c20aa..b01e19f60 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.text.MessageFormat; +import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; @@ -910,17 +911,56 @@ public void sortClanPlayersByLastSeen(List cps) { public long getMinutesBeforeRejoin(@NotNull ClanPlayer cp, @NotNull Clan clan) { SettingsManager settings = plugin.getSettingsManager(); - if (settings.is(ENABLE_REJOIN_COOLDOWN)) { - Long resign = cp.getResignTime(clan.getTag()); - if (resign != null) { - long timePassed = Instant.ofEpochMilli(resign).until(Instant.now(), ChronoUnit.MINUTES); - int cooldown = settings.getInt(REJOIN_COOLDOWN); - if (timePassed < cooldown) { - return cooldown - timePassed; - } + if (!settings.is(ENABLE_REJOIN_COOLDOWN)) { + return 0L; + } + if (settings.is(GLOBAL_REJOIN_COOLDOWN)) { + return getMinutesBeforeAction(cp); + } + Long resign = cp.getResignTime(clan.getTag()); + if (resign != null) { + long timePassed = Instant.ofEpochMilli(resign).until(Instant.now(), ChronoUnit.MINUTES); + int cooldown = settings.getInt(REJOIN_COOLDOWN); + if (timePassed < cooldown) { + return cooldown - timePassed; } } - return 0; + return 0L; + } + + /** + * Returns the minutes remaining before a player can perform restricted actions + * based on the rejoin cooldown across all previous clans. + */ + public long getMinutesBeforeAction(@NotNull ClanPlayer cp) { + final SettingsManager settings = plugin.getSettingsManager(); + if (!settings.is(ENABLE_REJOIN_COOLDOWN) || !settings.is(GLOBAL_REJOIN_COOLDOWN)) { + return 0L; + } + + final long cooldown = settings.getInt(REJOIN_COOLDOWN); + if (cooldown <= 0) { + return 0L; + } + + final var resignTimes = cp.getResignTimes().values(); + if (resignTimes == null || resignTimes.isEmpty()) { + return 0L; + } + + final Instant now = Instant.now(); + + // Longest remaining time among all resignations + final long maxRemaining = resignTimes.stream() + .mapToLong(resignMs -> { + final Instant resignAt = Instant.ofEpochMilli(resignMs); + final long minutesPassed = Duration.between(resignAt, now).toMinutes(); + return cooldown - minutesPassed; + }) + .max() + .orElse(0L); + + return Math.max(0L, maxRemaining); } /** diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/SettingsManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/SettingsManager.java index e71176296..d60db56bb 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/SettingsManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/SettingsManager.java @@ -304,6 +304,7 @@ public enum ConfigField { ALLOW_RESET_KDR("settings.allow-reset-kdr", false), REJOIN_COOLDOWN("settings.rejoin-cooldown", 60), ENABLE_REJOIN_COOLDOWN("settings.rejoin-cooldown-enabled", false), + GLOBAL_REJOIN_COOLDOWN("settings.rejoin-cooldown-global", false), RANKING_TYPE("settings.ranking-type", "DENSE"), LIST_DEFAULT_ORDER_BY("settings.list-default-order-by", "kdr"), LORE_LENGTH("settings.lore-length", 36), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 12e8a1d7d..058978ec1 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -48,9 +48,10 @@ settings: new-clan-verification-required: true allow-regroup-command: true allow-reset-kdr: false - rejoin-cooldown: 60 - rejoin-cooldown-enabled: false - ranking-type: "DENSE" + rejoin-cooldown: 60 + rejoin-cooldown-enabled: false + rejoin-cooldown-global: false + ranking-type: "DENSE" list-default-order-by: kdr lore-length: 36 past-clans-limit: 10 diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 97b31dcc3..83e715194 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -577,6 +577,7 @@ your.clan.description.cannot.be.longer.than=Your clan description cannot be long 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 +you.must.wait.0.before.creating.a.clan=You must wait {0} minute(s) before creating a clan disabled.command=Disabled command rank.displayname.updated=The rank''s display name was updated! rank.setdefault=The clan''s default rank has now been set to {0} diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties new file mode 100644 index 000000000..7797176f0 --- /dev/null +++ b/src/main/resources/messages_en_US.properties @@ -0,0 +1 @@ +you.must.wait.0.before.creating.a.clan=You must wait {0} minute(s) before creating a clan diff --git a/wiki/how-to-setup/configuration.md b/wiki/how-to-setup/configuration.md index dffb648f7..d275befd7 100644 --- a/wiki/how-to-setup/configuration.md +++ b/wiki/how-to-setup/configuration.md @@ -34,10 +34,11 @@ description: null * `server-name` - * `new-clan-verification-required` - * `allow-regroup-command` - -* `allow-reset-kdr` - -* `rejoin-cooldown` - -* `rejoin-cooldown-enabled` - -* `min-to-verify` - The clan must have this amount of members to get verified \(moderators can bypass this\) +* `allow-reset-kdr` - +* `rejoin-cooldown` - +* `rejoin-cooldown-enabled` - +* `rejoin-cooldown-global` - +* `min-to-verify` - The clan must have this amount of members to get verified \(moderators can bypass this\) * `ranking-type` - Valid options: ORDINAL and DENSE * `DENSE`: if players have the same KDR, they will have the same rank position. Ex.: 12234 * `ORDINAL`: Every player will have a different rank position. Ex.: 12345 @@ -81,6 +82,7 @@ settings: allow-reset-kdr: false rejoin-cooldown: 60 rejoin-cooldown-enabled: false + rejoin-cooldown-global: false min-to-verify: 1 ranking-type: DENSE ``` From 236d385648cbf4abda6b1d08d5fd73be8d0a5723 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:19:41 -0300 Subject: [PATCH 02/10] buid: update PlaceholderAPI dependency to 2.11.6 Bumped the PlaceholderAPI dependency version from 2.11.3 to 2.11.6 in pom.xml to use the latest features and bug fixes. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d5a110ed5..109d766e7 100644 --- a/pom.xml +++ b/pom.xml @@ -208,7 +208,7 @@ me.clip placeholderapi - 2.11.3 + 2.11.6 provided From 0b067d2d0cce1b089773e6899bed213da40c8a93 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:40:22 -0300 Subject: [PATCH 03/10] Add final modifier to method parameters Updated all method parameters in ClanManager.java to use the 'final' modifier for improved code safety and clarity. This change helps prevent accidental reassignment of parameters within methods. --- .../simpleclans/managers/ClanManager.java | 254 +++++++++--------- 1 file changed, 127 insertions(+), 127 deletions(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index b01e19f60..d93ad1f31 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -65,16 +65,16 @@ public void cleanData() { /** * Adds a kill to the memory */ - public void addKill(Kill kill) { + public void addKill(final Kill kill) { if (kill == null) { return; } - List list = kills.computeIfAbsent(kill.getKiller(), k -> new ArrayList<>()); + final List list = kills.computeIfAbsent(kill.getKiller(), k -> new ArrayList<>()); - Iterator iterator = list.iterator(); + final Iterator iterator = list.iterator(); while (iterator.hasNext()) { - Kill oldKill = iterator.next(); + final Kill oldKill = iterator.next(); if (oldKill.getVictim().equals(kill.getKiller())) { iterator.remove(); continue; @@ -82,7 +82,7 @@ public void addKill(Kill kill) { // cleaning final int delay = plugin.getSettingsManager().getInt(KDR_DELAY_BETWEEN_KILLS); - long timePassed = oldKill.getTime().until(LocalDateTime.now(), ChronoUnit.MINUTES); + final long timePassed = oldKill.getTime().until(LocalDateTime.now(), ChronoUnit.MINUTES); if (timePassed >= delay) { iterator.remove(); } @@ -94,20 +94,20 @@ public void addKill(Kill kill) { /** * Checks if this kill respects the delay */ - public boolean isKillBeforeDelay(Kill kill) { + public boolean isKillBeforeDelay(final Kill kill) { if (kill == null) { return false; } - List list = kills.get(kill.getKiller()); + final List list = kills.get(kill.getKiller()); if (list == null) { return false; } - for (Kill oldKill : list) { + for (final Kill oldKill : list) { if (oldKill.getVictim().equals(kill.getVictim())) { final int delay = plugin.getSettingsManager().getInt(KDR_DELAY_BETWEEN_KILLS); - long timePassed = oldKill.getTime().until(kill.getTime(), ChronoUnit.MINUTES); + final long timePassed = oldKill.getTime().until(kill.getTime(), ChronoUnit.MINUTES); if (timePassed < delay) { return true; } @@ -120,14 +120,14 @@ public boolean isKillBeforeDelay(Kill kill) { /** * Import a clan into the in-memory store */ - public void importClan(Clan clan) { + public void importClan(final Clan clan) { this.clans.put(clan.getTag(), clan); } /** * Import a clan player into the in-memory store */ - public void importClanPlayer(ClanPlayer cp) { + public void importClanPlayer(final ClanPlayer cp) { if (cp.getUniqueId() != null) { this.clanPlayers.put(cp.getUniqueId(), cp); } @@ -136,13 +136,13 @@ public void importClanPlayer(ClanPlayer cp) { /** * Create a new clan */ - public void createClan(Player player, String colorTag, String name) { - ClanPlayer cp = getCreateClanPlayer(player.getUniqueId()); + public void createClan(final Player player, final String colorTag, final String name) { + final ClanPlayer cp = getCreateClanPlayer(player.getUniqueId()); - boolean verified = !plugin.getSettingsManager().is(REQUIRE_VERIFICATION) + final boolean verified = !plugin.getSettingsManager().is(REQUIRE_VERIFICATION) || plugin.getPermissionsManager().has(player, "simpleclans.mod.verify"); - Clan clan = new Clan(colorTag, name, verified); + final Clan clan = new Clan(colorTag, name, verified); clan.addPlayerToClan(cp); cp.setLeader(true); clan.getRanks().addAll(plugin.getSettingsManager().getStarterRanks()); @@ -159,7 +159,7 @@ public void createClan(Player player, String colorTag, String name) { /** * Reset a player's KDR */ - public void resetKdr(ClanPlayer cp) { + public void resetKdr(final ClanPlayer cp) { cp.setCivilianKills(0); cp.setNeutralKills(0); cp.setRivalKills(0); @@ -171,8 +171,8 @@ public void resetKdr(ClanPlayer cp) { /** * Delete a players data file */ - public void deleteClanPlayer(ClanPlayer cp) { - Clan clan = cp.getClan(); + public void deleteClanPlayer(final ClanPlayer cp) { + final Clan clan = cp.getClan(); if (clan != null) { clan.removePlayerFromClan(cp.getUniqueId()); } @@ -183,34 +183,34 @@ public void deleteClanPlayer(ClanPlayer cp) { /** * Delete a player data from memory */ - public void deleteClanPlayerFromMemory(UUID playerUniqueId) { + public void deleteClanPlayerFromMemory(final UUID playerUniqueId) { clanPlayers.remove(playerUniqueId); } /** * Remove a clan from memory */ - public void removeClan(String tag) { + public void removeClan(final String tag) { clans.remove(tag); } /** * Whether the tag belongs to a clan */ - public boolean isClan(String tag) { + public boolean isClan(final String tag) { return clans.containsKey(Helper.cleanTag(tag)); } /** * Returns the clan the tag belongs to */ - public Clan getClan(String tag) { + public Clan getClan(final String tag) { return clans.get(Helper.cleanTag(tag)); } @SuppressWarnings("deprecation") @Nullable - public Clan getClanByPlayerName(String playerName) { + public Clan getClanByPlayerName(final String playerName) { return getClanByPlayerUniqueId(Bukkit.getOfflinePlayer(playerName).getUniqueId()); } @@ -220,8 +220,8 @@ public Clan getClanByPlayerName(String playerName) { * @return null if not in a clan */ @Nullable - public Clan getClanByPlayerUniqueId(UUID playerUniqueId) { - ClanPlayer cp = getClanPlayer(playerUniqueId); + public Clan getClanByPlayerUniqueId(final UUID playerUniqueId) { + final ClanPlayer cp = getClanPlayer(playerUniqueId); if (cp != null) { return cp.getClan(); @@ -249,7 +249,7 @@ public List getAllClanPlayers() { * if he's not in a clan Used for BungeeCord Reload ClanPlayer and your Clan */ @Deprecated - public @Nullable ClanPlayer getClanPlayerJoinEvent(Player player) { + public @Nullable ClanPlayer getClanPlayerJoinEvent(final Player player) { SimpleClans.getInstance().getStorageManager().importFromDatabaseOnePlayer(player); return getClanPlayer(player.getUniqueId()); } @@ -258,7 +258,7 @@ public List getAllClanPlayers() { * Gets the ClanPlayer data object if a player is currently in a clan, null * if he's not in a clan */ - public @Nullable ClanPlayer getClanPlayer(@NotNull OfflinePlayer player) { + public @Nullable ClanPlayer getClanPlayer(@NotNull final OfflinePlayer player) { return getClanPlayer(player.getUniqueId()); } @@ -266,7 +266,7 @@ public List getAllClanPlayers() { * Gets the ClanPlayer data object if a player is currently in a clan, null * if he's not in a clan */ - public @Nullable ClanPlayer getClanPlayer(@NotNull Player player) { + public @Nullable ClanPlayer getClanPlayer(@NotNull final Player player) { return getClanPlayer((OfflinePlayer) player); } @@ -274,8 +274,8 @@ public List getAllClanPlayers() { * Gets the ClanPlayer data object if a player is currently in a clan, null * if he's not in a clan */ - public @Nullable ClanPlayer getClanPlayer(UUID playerUniqueId) { - ClanPlayer cp = clanPlayers.get(playerUniqueId); + public @Nullable ClanPlayer getClanPlayer(final UUID playerUniqueId) { + final ClanPlayer cp = clanPlayers.get(playerUniqueId); if (cp == null) { return null; @@ -290,7 +290,7 @@ public List getAllClanPlayers() { @SuppressWarnings("deprecation") @Nullable - public ClanPlayer getClanPlayer(String playerName) { + public ClanPlayer getClanPlayer(final String playerName) { return getClanPlayer(Bukkit.getOfflinePlayer(playerName).getUniqueId()); } @@ -299,14 +299,14 @@ public ClanPlayer getClanPlayer(String playerName) { * if he's not in a clan */ @Deprecated - public @Nullable ClanPlayer getClanPlayerName(String playerName) { - UUID uuid = UUIDMigration.getForcedPlayerUUID(playerName); + public @Nullable ClanPlayer getClanPlayerName(final String playerName) { + final UUID uuid = UUIDMigration.getForcedPlayerUUID(playerName); if (uuid == null) { return null; } - ClanPlayer cp = clanPlayers.get(uuid); + final ClanPlayer cp = clanPlayers.get(uuid); if (cp == null) { return null; @@ -327,14 +327,14 @@ public ClanPlayer getClanPlayer(String playerName) { */ @Nullable - public ClanPlayer getAnyClanPlayer(UUID uuid) { + public ClanPlayer getAnyClanPlayer(final UUID uuid) { return clanPlayers.get(uuid); } @SuppressWarnings("deprecation") @Nullable - public ClanPlayer getAnyClanPlayer(String playerName) { - for (ClanPlayer cp : getAllClanPlayers()) { + public ClanPlayer getAnyClanPlayer(final String playerName) { + for (final ClanPlayer cp : getAllClanPlayers()) { if (cp.getName().equalsIgnoreCase(playerName)) { return cp; } @@ -346,8 +346,8 @@ public ClanPlayer getAnyClanPlayer(String playerName) { * Gets the ClanPlayer object for the player, creates one if not found */ @Deprecated - public @Nullable ClanPlayer getCreateClanPlayerUUID(String playerName) { - UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName); + public @Nullable ClanPlayer getCreateClanPlayerUUID(final String playerName) { + final UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName); if (playerUniqueId != null) { return getCreateClanPlayer(playerUniqueId); } else { @@ -358,16 +358,16 @@ public ClanPlayer getAnyClanPlayer(String playerName) { /** * Gets the ClanPlayer object for the player, creates one if not found */ - public ClanPlayer getCreateClanPlayer(UUID uuid) { + public ClanPlayer getCreateClanPlayer(final UUID uuid) { Objects.requireNonNull(uuid, "UUID must not be null"); if (clanPlayers.containsKey(uuid)) { return clanPlayers.get(uuid); } - ClanPlayer cp = new ClanPlayer(uuid); + final ClanPlayer cp = new ClanPlayer(uuid); boolean save = true; - for (ClanPlayer other : getAllClanPlayers()) { + for (final ClanPlayer other : getAllClanPlayers()) { if (other.getName().equals(cp.getName())) { save = false; break; @@ -386,7 +386,7 @@ public ClanPlayer getCreateClanPlayer(UUID uuid) { @SuppressWarnings("deprecation") @NotNull - public ClanPlayer getCreateClanPlayer(String playerName) { + public ClanPlayer getCreateClanPlayer(final String playerName) { return getCreateClanPlayer(Bukkit.getOfflinePlayer(playerName).getUniqueId()); } @@ -395,7 +395,7 @@ public ClanPlayer getCreateClanPlayer(String playerName) { * * @param msg the message */ - public void serverAnnounce(String msg) { + public void serverAnnounce(final String msg) { if (plugin.getSettingsManager().is(DISABLE_MESSAGES)) { return; } @@ -407,7 +407,7 @@ public void serverAnnounce(String msg) { /** * Update the players display name with his clan's tag */ - public void updateDisplayName(@Nullable Player player) { + public void updateDisplayName(@Nullable final Player player) { // do not update displayname if in compat mode if (plugin.getSettingsManager().is(CHAT_COMPATIBILITY_MODE)) { @@ -419,21 +419,21 @@ public void updateDisplayName(@Nullable Player player) { } if (plugin.getSettingsManager().is(DISPLAY_CHAT_TAGS)) { - String prefix = plugin.getPermissionsManager().getPrefix(player); + final String prefix = plugin.getPermissionsManager().getPrefix(player); // String suffix = plugin.getPermissionsManager().getSuffix(player); - String lastColor = plugin.getSettingsManager().is(COLOR_CODE_FROM_PREFIX_FOR_NAME) + final String lastColor = plugin.getSettingsManager().is(COLOR_CODE_FROM_PREFIX_FOR_NAME) ? ChatUtils.getLastColorCode(prefix) : ChatColor.WHITE + ""; String fullName = player.getName(); - ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId()); + final ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId()); if (cp == null) { return; } if (cp.isTagEnabled()) { - Clan clan = cp.getClan(); + final Clan clan = cp.getClan(); if (clan != null) { fullName = clan.getTagLabel(cp.isLeader()) + lastColor + fullName + ChatColor.WHITE; @@ -449,14 +449,14 @@ public void updateDisplayName(@Nullable Player player) { /** * Process a player and his clan's last seen date */ - public void updateLastSeen(Player player) { - ClanPlayer cp = getAnyClanPlayer(player.getUniqueId()); + public void updateLastSeen(final Player player) { + final ClanPlayer cp = getAnyClanPlayer(player.getUniqueId()); if (cp != null) { cp.updateLastSeen(); plugin.getStorageManager().updateClanPlayer(cp); - Clan clan = cp.getClan(); + final Clan clan = cp.getClan(); if (clan != null) { clan.updateLastUsed(); @@ -466,7 +466,7 @@ public void updateLastSeen(Player player) { } @SuppressWarnings("deprecation") - public void ban(String playerName) { + public void ban(final String playerName) { ban(Bukkit.getOfflinePlayer(playerName).getUniqueId()); } @@ -475,8 +475,8 @@ public void ban(String playerName) { * * @param uuid the player's uuid */ - public void ban(UUID uuid) { - ClanPlayer cp = getClanPlayer(uuid); + public void ban(final UUID uuid) { + final ClanPlayer cp = getClanPlayer(uuid); Clan clan = null; if (cp != null) { clan = cp.getClan(); @@ -506,7 +506,7 @@ public void ban(UUID uuid) { public int getRivableClanCount() { int clanCount = 0; - for (Clan tm : clans.values()) { + for (final Clan tm : clans.values()) { if (!SimpleClans.getInstance().getSettingsManager().isUnrivable(tm.getTag())) { clanCount++; } @@ -518,13 +518,13 @@ public int getRivableClanCount() { /** * Returns a formatted string detailing the players armor */ - public String getArmorString(PlayerInventory inv) { + public String getArmorString(final PlayerInventory inv) { String out = ""; - ItemStack h = inv.getHelmet(); + final ItemStack h = inv.getHelmet(); Player player = null; - InventoryHolder holder = inv.getHolder(); + final InventoryHolder holder = inv.getHolder(); if (holder instanceof Player) { player = (Player) holder; } @@ -546,7 +546,7 @@ public String getArmorString(PlayerInventory inv) { out += RED + lang("armor.h", player); } } - ItemStack c = inv.getChestplate(); + final ItemStack c = inv.getChestplate(); if (c != null) { if (c.getType().equals(XMaterial.CHAINMAIL_CHESTPLATE.parseMaterial())) { @@ -565,7 +565,7 @@ public String getArmorString(PlayerInventory inv) { out += RED + lang("armor.c", player); } } - ItemStack l = inv.getLeggings(); + final ItemStack l = inv.getLeggings(); if (l != null) { if (l.getType().equals(XMaterial.CHAINMAIL_LEGGINGS.parseMaterial())) { @@ -584,7 +584,7 @@ public String getArmorString(PlayerInventory inv) { out += lang("armor.l", player); } } - ItemStack b = inv.getBoots(); + final ItemStack b = inv.getBoots(); if (b != null) { if (b.getType().equals(XMaterial.CHAINMAIL_BOOTS.parseMaterial())) { @@ -614,13 +614,13 @@ public String getArmorString(PlayerInventory inv) { /** * Returns a formatted string detailing the players weapons */ - public String getWeaponString(PlayerInventory inv) { - String headColor = plugin.getSettingsManager().getColored(PAGE_HEADINGS_COLOR); + public String getWeaponString(final PlayerInventory inv) { + final String headColor = plugin.getSettingsManager().getColored(PAGE_HEADINGS_COLOR); String out = ""; Player player = null; - InventoryHolder holder = inv.getHolder(); + final InventoryHolder holder = inv.getHolder(); if (holder instanceof Player) { player = (Player) holder; } @@ -628,42 +628,42 @@ public String getWeaponString(PlayerInventory inv) { int count = getItemCount(inv, XMaterial.DIAMOND_SWORD); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += AQUA + lang("weapon.S", player) + headColor + countString; } count = getItemCount(inv, XMaterial.GOLDEN_SWORD); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += ChatColor.YELLOW + lang("weapon.S", player) + headColor + countString; } count = getItemCount(inv, XMaterial.IRON_SWORD); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += ChatColor.WHITE + lang("weapon.S", player) + headColor + countString; } count = getItemCount(inv, XMaterial.STONE_SWORD); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += ChatColor.GRAY + lang("weapon.S", player) + headColor + countString; } count = getItemCount(inv, XMaterial.WOODEN_SWORD); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += ChatColor.GOLD + lang("weapon.S", player) + headColor + countString; } count = getItemCount(inv, XMaterial.BOW); if (count > 0) { - String countString = count > 1 ? count + "" : ""; + final String countString = count > 1 ? count + "" : ""; out += ChatColor.GOLD + lang("weapon.B", player) + headColor + countString; } @@ -682,8 +682,8 @@ public String getWeaponString(PlayerInventory inv) { return out; } - private int getItemCount(@NotNull PlayerInventory inv, @NotNull XMaterial material) { - Material parsed = material.parseMaterial(); + private int getItemCount(@NotNull final PlayerInventory inv, @NotNull final XMaterial material) { + final Material parsed = material.parseMaterial(); if (parsed == null) { return 0; } @@ -691,25 +691,25 @@ private int getItemCount(@NotNull PlayerInventory inv, @NotNull XMaterial materi return getItemCount(inv.all(parsed)); } - private int getItemCount(HashMap all) { + private int getItemCount(final HashMap all) { int count = 0; - for (ItemStack is : all.values()) { + for (final ItemStack is : all.values()) { count += is.getAmount(); } return count; } - private double getFoodPoints(PlayerInventory inv, XMaterial material, int points, double saturation) { - Material parsed = material.parseMaterial(); + private double getFoodPoints(final PlayerInventory inv, final XMaterial material, final int points, final double saturation) { + final Material parsed = material.parseMaterial(); if (parsed == null) { return 0; } return getFoodPoints(inv, parsed, points, saturation); } - private double getFoodPoints(PlayerInventory inv, Material material, int points, double saturation) { + private double getFoodPoints(final PlayerInventory inv, final Material material, final int points, final double saturation) { return getItemCount(inv.all(material)) * (points + saturation); } @@ -719,10 +719,10 @@ private double getFoodPoints(PlayerInventory inv, Material material, int points, * @param inv the PlayerInventory * @return the food points string */ - public String getFoodString(PlayerInventory inv) { + public String getFoodString(final PlayerInventory inv) { Player player = null; - InventoryHolder holder = inv.getHolder(); + final InventoryHolder holder = inv.getHolder(); if (holder instanceof Player) { player = (Player) holder; } @@ -773,8 +773,8 @@ public String getFoodString(PlayerInventory inv) { /** * Returns a colored bar based on the length */ - public String getBar(double length) { - StringBuilder out = new StringBuilder(); + public String getBar(final double length) { + final StringBuilder out = new StringBuilder(); if (length >= 16) { out.append(ChatColor.GREEN); @@ -794,7 +794,7 @@ public String getBar(double length) { /** * Sort clans by active */ - public void sortClansByActive(List clans, boolean asc) { + public void sortClansByActive(final List clans, final boolean asc) { clans.sort((c1, c2) -> { int o = 1; if (!asc) { @@ -808,7 +808,7 @@ public void sortClansByActive(List clans, boolean asc) { /** * Sort clans by founded date */ - public void sortClansByFounded(List clans, boolean asc) { + public void sortClansByFounded(final List clans, final boolean asc) { clans.sort((c1, c2) -> { int o = 1; if (!asc) { @@ -822,7 +822,7 @@ public void sortClansByFounded(List clans, boolean asc) { /** * Sort clans by kdr */ - public void sortClansByKDR(List clans, boolean asc) { + public void sortClansByKDR(final List clans, final boolean asc) { clans.sort((c1, c2) -> { int o = 1; if (!asc) { @@ -836,7 +836,7 @@ public void sortClansByKDR(List clans, boolean asc) { /** * Sort clans by size */ - public void sortClansBySize(List clans, boolean asc) { + public void sortClansBySize(final List clans, final boolean asc) { clans.sort((c1, c2) -> { int o = 1; if (!asc) { @@ -850,7 +850,7 @@ public void sortClansBySize(List clans, boolean asc) { /** * Sort clans by name */ - public void sortClansByName(List clans, boolean asc) { + public void sortClansByName(final List clans, final boolean asc) { clans.sort((c1, c2) -> { int o = 1; if (!asc) { @@ -864,10 +864,10 @@ public void sortClansByName(List clans, boolean asc) { /** * Sort clans by KDR */ - public void sortClansByKDR(List clans) { + public void sortClansByKDR(final List clans) { clans.sort((c1, c2) -> { - Float o1 = c1.getTotalKDR(); - Float o2 = c2.getTotalKDR(); + final Float o1 = c1.getTotalKDR(); + final Float o2 = c2.getTotalKDR(); return o2.compareTo(o1); }); @@ -876,10 +876,10 @@ public void sortClansByKDR(List clans) { /** * Sort clans by KDR */ - public void sortClansBySize(List clans) { + public void sortClansBySize(final List clans) { clans.sort((c1, c2) -> { - Integer o1 = c1.getMembers().size(); - Integer o2 = c2.getMembers().size(); + final Integer o1 = c1.getMembers().size(); + final Integer o2 = c2.getMembers().size(); return o2.compareTo(o1); }); @@ -888,10 +888,10 @@ public void sortClansBySize(List clans) { /** * Sort clan players by KDR */ - public void sortClanPlayersByKDR(List cps) { + public void sortClanPlayersByKDR(final List cps) { cps.sort((c1, c2) -> { - Float o1 = c1.getKDR(); - Float o2 = c2.getKDR(); + final Float o1 = c1.getKDR(); + final Float o2 = c2.getKDR(); return o2.compareTo(o1); }); @@ -900,27 +900,27 @@ public void sortClanPlayersByKDR(List cps) { /** * Sort clan players by last seen days */ - public void sortClanPlayersByLastSeen(List cps) { + public void sortClanPlayersByLastSeen(final List cps) { cps.sort((c1, c2) -> { - Double o1 = c1.getLastSeenDays(); - Double o2 = c2.getLastSeenDays(); + final Double o1 = c1.getLastSeenDays(); + final Double o2 = c2.getLastSeenDays(); return o1.compareTo(o2); }); } - public long getMinutesBeforeRejoin(@NotNull ClanPlayer cp, @NotNull Clan clan) { - SettingsManager settings = plugin.getSettingsManager(); + public long getMinutesBeforeRejoin(@NotNull final ClanPlayer cp, @NotNull final Clan clan) { + final SettingsManager settings = plugin.getSettingsManager(); if (!settings.is(ENABLE_REJOIN_COOLDOWN)) { return 0L; } if (settings.is(GLOBAL_REJOIN_COOLDOWN)) { return getMinutesBeforeAction(cp); } - Long resign = cp.getResignTime(clan.getTag()); + final Long resign = cp.getResignTime(clan.getTag()); if (resign != null) { - long timePassed = Instant.ofEpochMilli(resign).until(Instant.now(), ChronoUnit.MINUTES); - int cooldown = settings.getInt(REJOIN_COOLDOWN); + final long timePassed = Instant.ofEpochMilli(resign).until(Instant.now(), ChronoUnit.MINUTES); + final int cooldown = settings.getInt(REJOIN_COOLDOWN); if (timePassed < cooldown) { return cooldown - timePassed; } @@ -932,7 +932,7 @@ public long getMinutesBeforeRejoin(@NotNull ClanPlayer cp, @NotNull Clan clan) { * Returns the minutes remaining before a player can perform restricted actions * based on the rejoin cooldown across all previous clans. */ - public long getMinutesBeforeAction(@NotNull ClanPlayer cp) { + public long getMinutesBeforeAction(@NotNull final ClanPlayer cp) { final SettingsManager settings = plugin.getSettingsManager(); if (!settings.is(ENABLE_REJOIN_COOLDOWN) || !settings.is(GLOBAL_REJOIN_COOLDOWN)) { return 0L; @@ -966,12 +966,12 @@ public long getMinutesBeforeAction(@NotNull ClanPlayer cp) { /** * Purchase member fee set */ - public boolean purchaseMemberFeeSet(Player player) { + public boolean purchaseMemberFeeSet(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_MEMBER_FEE_SET)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_MEMBER_FEE_SET_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_MEMBER_FEE_SET_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -989,12 +989,12 @@ public boolean purchaseMemberFeeSet(Player player) { /** * Purchase clan creation */ - public boolean purchaseCreation(Player player) { + public boolean purchaseCreation(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_CLAN_CREATE)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_CREATION_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_CREATION_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1012,12 +1012,12 @@ public boolean purchaseCreation(Player player) { /** * Purchase invite */ - public boolean purchaseInvite(Player player) { + public boolean purchaseInvite(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_CLAN_INVITE)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_INVITE_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_INVITE_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1035,12 +1035,12 @@ public boolean purchaseInvite(Player player) { /** * Purchase Home Teleport */ - public boolean purchaseHomeTeleport(Player player) { + public boolean purchaseHomeTeleport(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_HOME_TELEPORT)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_HOME_TELEPORT_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_HOME_TELEPORT_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1058,12 +1058,12 @@ public boolean purchaseHomeTeleport(Player player) { /** * Purchase Home Teleport Set */ - public boolean purchaseHomeTeleportSet(Player player) { + public boolean purchaseHomeTeleportSet(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_HOME_TELEPORT_SET)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_HOME_TELEPORT_SET_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_HOME_TELEPORT_SET_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1081,12 +1081,12 @@ public boolean purchaseHomeTeleportSet(Player player) { /** * Purchase Reset Kdr */ - public boolean purchaseResetKdr(Player player) { + public boolean purchaseResetKdr(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_RESET_KDR)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_RESET_KDR_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_RESET_KDR_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1104,8 +1104,8 @@ public boolean purchaseResetKdr(Player player) { /** * Purchase Home Regroup */ - public boolean purchaseHomeRegroup(Player player) { - ClanPlayer cp = plugin.getClanManager().getClanPlayer(player); + public boolean purchaseHomeRegroup(final Player player) { + final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player); if (cp == null) { return false; } @@ -1115,7 +1115,7 @@ public boolean purchaseHomeRegroup(Player player) { } double price = plugin.getSettingsManager().getDouble(ECONOMY_REGROUP_PRICE); - Clan clan = Objects.requireNonNull(cp.getClan(), "Clan cannot be null"); + final Clan clan = Objects.requireNonNull(cp.getClan(), "Clan cannot be null"); if (!plugin.getSettingsManager().is(ECONOMY_UNIQUE_TAX_ON_REGROUP)) { price = price * VanishUtils.getNonVanished(player, clan).size(); } @@ -1129,7 +1129,7 @@ public boolean purchaseHomeRegroup(Player player) { return false; } } else { - double money = plugin.getPermissionsManager().playerGetMoney(player); + final double money = plugin.getPermissionsManager().playerGetMoney(player); switch (clan.withdraw(new BankOperator(player, money), ClanBalanceUpdateEvent.Cause.COMMAND, price)) { case SUCCESS: if (plugin.getPermissionsManager().grantPlayer(player, price)) { @@ -1148,12 +1148,12 @@ public boolean purchaseHomeRegroup(Player player) { /** * Purchase clan verification */ - public boolean purchaseVerification(Player player) { + public boolean purchaseVerification(final Player player) { if (!plugin.getSettingsManager().is(ECONOMY_PURCHASE_CLAN_VERIFY)) { return true; } - double price = plugin.getSettingsManager().getDouble(ECONOMY_VERIFICATION_PRICE); + final double price = plugin.getSettingsManager().getDouble(ECONOMY_VERIFICATION_PRICE); if (plugin.getPermissionsManager().hasEconomy()) { if (plugin.getPermissionsManager().playerHasMoney(player, price)) { @@ -1172,20 +1172,20 @@ public boolean purchaseVerification(Player player) { * Processes a global chat command */ @Deprecated - public boolean processGlobalChat(Player player, String msg) { - ClanPlayer cp = plugin.getClanManager().getClanPlayer(player.getUniqueId()); + public boolean processGlobalChat(final Player player, final String msg) { + final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player.getUniqueId()); if (cp == null) { return false; } - String[] split = msg.split(" "); + final String[] split = msg.split(" "); if (split.length == 0) { return false; } - String command = split[0]; + final String command = split[0]; if (command.equals(lang("on", player))) { cp.setGlobalChat(true); From d1815aef30c62126b26dfd1bce98d1e56d86f3c2 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:40:29 -0300 Subject: [PATCH 04/10] Replace String length checks with isEmpty in ClanManager Updated two instances of 'out.length() == 0' to use 'out.isEmpty()' for improved readability and consistency in ClanManager.java. --- .../phaed/simpleclans/managers/ClanManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index d93ad1f31..8a449e3bd 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -604,7 +604,7 @@ public String getArmorString(final PlayerInventory inv) { } } - if (out.length() == 0) { + if (out.isEmpty()) { out = lang("none", player); } @@ -675,7 +675,7 @@ public String getWeaponString(final PlayerInventory inv) { out += ChatColor.WHITE + lang("weapon.A", player) + headColor + count; } - if (out.length() == 0) { + if (out.isEmpty()) { out = lang("none", player); } From 3f1cd9781e3810574fe3086537de9103bcf2c539 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:42:48 -0300 Subject: [PATCH 05/10] Annotate getResignTimes with @NotNull and refactor usage Added @NotNull annotation to ClanPlayer#getResignTimes to clarify non-null contract. Refactored ClanManager to remove redundant null check and improve variable naming for resign times map. --- .../net/sacredlabyrinth/phaed/simpleclans/ClanPlayer.java | 1 + .../phaed/simpleclans/managers/ClanManager.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/ClanPlayer.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/ClanPlayer.java index f7c67614e..273d4c0e3 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/ClanPlayer.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/ClanPlayer.java @@ -600,6 +600,7 @@ public Set getPastClans() { * * @return the resign times */ + @NotNull public Map getResignTimes() { return resignTimes; } diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index 8a449e3bd..02c555a6a 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -943,15 +943,15 @@ public long getMinutesBeforeAction(@NotNull final ClanPlayer cp) { return 0L; } - final var resignTimes = cp.getResignTimes().values(); - if (resignTimes == null || resignTimes.isEmpty()) { + final Map resignTimesMap = cp.getResignTimes(); + if (resignTimesMap.isEmpty()) { return 0L; } final Instant now = Instant.now(); // Longest remaining time among all resignations - final long maxRemaining = resignTimes.stream() + final long maxRemaining = resignTimesMap.values().stream() .mapToLong(resignMs -> { final Instant resignAt = Instant.ofEpochMilli(resignMs); final long minutesPassed = Duration.between(resignAt, now).toMinutes(); From 3f2c69f9ffd197c4c0e1e75c500512b523c991c5 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 02:49:07 -0300 Subject: [PATCH 06/10] add "rejoin-cooldown-global" explanation Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- wiki/how-to-setup/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/how-to-setup/configuration.md b/wiki/how-to-setup/configuration.md index d275befd7..ef15e00d0 100644 --- a/wiki/how-to-setup/configuration.md +++ b/wiki/how-to-setup/configuration.md @@ -37,7 +37,7 @@ description: null * `allow-reset-kdr` - * `rejoin-cooldown` - * `rejoin-cooldown-enabled` - -* `rejoin-cooldown-global` - +* `rejoin-cooldown-global` - If enabled, the rejoin cooldown applies to all clans globally, not just the clan the player left. * `min-to-verify` - The clan must have this amount of members to get verified \(moderators can bypass this\) * `ranking-type` - Valid options: ORDINAL and DENSE * `DENSE`: if players have the same KDR, they will have the same rank position. Ex.: 12234 From 38735fdc020339f033106e9a20b8a7acb66ea156 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 03:00:43 -0300 Subject: [PATCH 07/10] Add GLOBAL_REJOIN_COOLDOWN config import Imported GLOBAL_REJOIN_COOLDOWN from SettingsManager.ConfigField in ClanManager. This prepares the manager for usage of the new configuration option. --- .../sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index b709fc161..09fe13627 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -36,6 +36,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -66,6 +67,7 @@ import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ECONOMY_UNIQUE_TAX_ON_REGROUP; import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ECONOMY_VERIFICATION_PRICE; import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ENABLE_REJOIN_COOLDOWN; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.GLOBAL_REJOIN_COOLDOWN; import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.KDR_DELAY_BETWEEN_KILLS; import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.PAGE_HEADINGS_COLOR; import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.REJOIN_COOLDOWN; From 63c5041188960335a5d6ba099163cad86fa7b0e2 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 03:03:35 -0300 Subject: [PATCH 08/10] Refactor VentureChatListener to extend SCListener VentureChatListener now extends SCListener and uses the plugin instance directly to access managers. This simplifies the constructor and removes redundant fields, improving code maintainability. --- .../listeners/VentureChatListener.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/listeners/VentureChatListener.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/listeners/VentureChatListener.java index 46bc099ea..4a779979e 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/listeners/VentureChatListener.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/listeners/VentureChatListener.java @@ -3,29 +3,23 @@ import mineverse.Aust1n46.chat.api.events.ChannelJoinEvent; import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer; import net.sacredlabyrinth.phaed.simpleclans.SimpleClans; -import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager; -import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; -public class VentureChatListener implements Listener { - private final ClanManager clanManager; - private final StorageManager storageManager; +public class VentureChatListener extends SCListener { - public VentureChatListener(@NotNull SimpleClans plugin) { - this.clanManager = plugin.getClanManager(); - this.storageManager = plugin.getStorageManager(); + public VentureChatListener(@NotNull final SimpleClans plugin) { + super(plugin); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onVentureChat(@NotNull ChannelJoinEvent event) { - ClanPlayer clanPlayer = clanManager.getClanPlayer(event.getPlayer()); + public void onVentureChat(@NotNull final ChannelJoinEvent event) { + final ClanPlayer clanPlayer = plugin.getClanManager().getClanPlayer(event.getPlayer()); if (clanPlayer == null) return; if (clanPlayer.getChannel() == ClanPlayer.Channel.NONE) return; clanPlayer.setChannel(ClanPlayer.Channel.NONE); - storageManager.updateClanPlayer(clanPlayer); + plugin.getStorageManager().updateClanPlayer(clanPlayer); } } From deb55a18ff3bc90095fefb6ade8d33499b64a526 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 03:10:02 -0300 Subject: [PATCH 09/10] Fix type of rejoin cooldown variable Changed the type of the 'cooldown' variable from long to int to match the return type of settings.getInt(REJOIN_COOLDOWN). --- .../sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java index 09fe13627..4b2e5e16a 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/managers/ClanManager.java @@ -972,7 +972,7 @@ public long getMinutesBeforeAction(@NotNull final ClanPlayer cp) { return 0L; } - final long cooldown = settings.getInt(REJOIN_COOLDOWN); + final int cooldown = settings.getInt(REJOIN_COOLDOWN); if (cooldown <= 0) { return 0L; } From 2f6cb8a7880a401017387927a04f2b12e3b64777 Mon Sep 17 00:00:00 2001 From: ThiagoROX Date: Fri, 22 Aug 2025 03:47:29 -0300 Subject: [PATCH 10/10] Add final modifiers to method parameters and variables Added 'final' keyword to method parameters and local variables in ClanCommands.java and GeneralCommands.java for improved code safety and clarity. Also replaced wildcard and grouped imports with explicit imports in GeneralCommands.java to enhance readability and maintainability. --- .../commands/clan/ClanCommands.java | 89 +++++----- .../commands/general/GeneralCommands.java | 154 +++++++++++------- 2 files changed, 140 insertions(+), 103 deletions(-) diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/clan/ClanCommands.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/clan/ClanCommands.java index 7d51e1727..71de986d6 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/clan/ClanCommands.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/clan/ClanCommands.java @@ -71,10 +71,10 @@ public class ClanCommands extends BaseCommand { @Conditions("verified|rank:name=WAR_START") @Description("{@@command.description.war.start}") @CommandCompletion("@rivals") - public void startWar(Player player, ClanPlayer requester, Clan requestClan, @Conditions("can_war_target") @Name("clan") ClanInput targetClanInput) { - Clan targetClan = targetClanInput.getClan(); + public void startWar(final Player player, final ClanPlayer requester, final Clan requestClan, @Conditions("can_war_target") @Name("clan") final ClanInput targetClanInput) { + final Clan targetClan = targetClanInput.getClan(); - List onlineLeaders = Helper.stripOffLinePlayers(requestClan.getLeaders()); + final List onlineLeaders = Helper.stripOffLinePlayers(requestClan.getLeaders()); if (settings.is(WAR_START_REQUEST_ENABLED)) { if (!onlineLeaders.isEmpty()) { @@ -94,8 +94,8 @@ public void startWar(Player player, ClanPlayer requester, Clan requestClan, @Con @Conditions("verified|rank:name=WAR_END") @Description("{@@command.description.war.end}") @CommandCompletion("@warring_clans") - public void endWar(ClanPlayer cp, Clan issuerClan, @Name("clan") ClanInput other) { - Clan war = other.getClan(); + public void endWar(final ClanPlayer cp, final Clan issuerClan, @Name("clan") final ClanInput other) { + final Clan war = other.getClan(); if (issuerClan.isWarring(war.getTag())) { requestManager.addWarEndRequest(cp, war, issuerClan); ChatBlock.sendMessage(cp, AQUA + lang("leaders.asked.to.end.rivalry", cp, war.getName())); @@ -108,16 +108,16 @@ public void endWar(ClanPlayer cp, Clan issuerClan, @Name("clan") ClanInput other @CommandPermission("simpleclans.leader.modtag") @Conditions("verified|rank:name=MODTAG") @Description("{@@command.description.modtag}") - public void modtag(Player player, Clan clan, @Single @Name("tag") String tag) { - TagChangeEvent event = new TagChangeEvent(player, clan, tag); + public void modtag(final Player player, final Clan clan, @Single @Name("tag") String tag) { + final TagChangeEvent event = new TagChangeEvent(player, clan, tag); plugin.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { return; } tag = event.getNewTag(); - String cleanTag = Helper.cleanTag(tag); + final String cleanTag = Helper.cleanTag(tag); - Optional validationError = plugin.getTagValidator().validate(player, tag); + final Optional validationError = plugin.getTagValidator().validate(player, tag); if (validationError.isPresent()) { ChatBlock.sendMessage(player, validationError.get()); return; @@ -138,9 +138,8 @@ public void modtag(Player player, Clan clan, @Single @Name("tag") String tag) { @CommandPermission("simpleclans.leader.setbanner") @Conditions("verified|rank:name=SETBANNER") @Description("{@@command.description.setbanner}") - public void setbanner(Player player, Clan clan) { - @SuppressWarnings("deprecation") - ItemStack hand = player.getItemInHand(); + public void setbanner(final Player player, final Clan clan) { + @SuppressWarnings("deprecation") final ItemStack hand = player.getItemInHand(); if (!hand.getType().toString().contains("BANNER")) { ChatBlock.sendMessageKey(player, "you.must.hold.a.banner"); return; @@ -156,13 +155,13 @@ public void setbanner(Player player, Clan clan) { @CommandCompletion("@non_members:ignore_vanished") @Conditions("rank:name=INVITE") @Description("{@@command.description.invite}") - public void invite(Player sender, ClanPlayer cp, Clan clan, - @Conditions("not_banned|not_in_clan|online:ignore_vanished") @Name("player") ClanPlayerInput invited) { + public void invite(final Player sender, final ClanPlayer cp, final Clan clan, + @Conditions("not_banned|not_in_clan|online:ignore_vanished") @Name("player") final ClanPlayerInput invited) { if (!invited.getClanPlayer().isInviteEnabled()) { ChatBlock.sendMessage(sender, RED + lang("invitedplayer.invite.off", sender)); return; } - Player invitedPlayer = invited.getClanPlayer().toPlayer(); + final Player invitedPlayer = invited.getClanPlayer().toPlayer(); if (invitedPlayer == null) return; if (!permissions.has(invitedPlayer, "simpleclans.member.can-join")) { ChatBlock.sendMessage(sender, RED + @@ -173,8 +172,8 @@ public void invite(Player sender, ClanPlayer cp, Clan clan, ChatBlock.sendMessage(sender, RED + lang("you.cannot.invite.yourself", sender)); return; } - long minutesBeforeRejoin = cm.getMinutesBeforeRejoin(invited.getClanPlayer(), clan); - if (minutesBeforeRejoin != 0) { + final long minutesBeforeRejoin = cm.getMinutesBeforeRejoin(invited.getClanPlayer(), clan); + if (minutesBeforeRejoin > 0L) { ChatBlock.sendMessage(sender, RED + lang("the.player.must.wait.0.before.joining.your.clan.again", sender, minutesBeforeRejoin)); return; @@ -197,7 +196,7 @@ public void invite(Player sender, ClanPlayer cp, Clan clan, @Conditions("member_fee_enabled|verified") @CommandPermission("simpleclans.member.fee-check") @Description("{@@command.description.fee.check}") - public void checkFee(Player player, Clan clan) { + public void checkFee(final Player player, final Clan clan) { ChatBlock.sendMessage(player, AQUA + lang("the.fee.is.0.and.its.current.value.is.1", player, clan.isMemberFeeEnabled() ? lang("fee.enabled", player) : lang("fee.disabled", player), @@ -209,9 +208,9 @@ public void checkFee(Player player, Clan clan) { @CommandPermission("simpleclans.leader.fee") @Conditions("rank:name=FEE_SET|change_fee") @Description("{@@command.description.fee.set}") - public void setFee(Player player, Clan clan, @Name("fee") double fee) { + public void setFee(final Player player, final Clan clan, @Name("fee") double fee) { fee = Math.abs(fee); - double maxFee = settings.getDouble(ECONOMY_MAX_MEMBER_FEE); + final double maxFee = settings.getDouble(ECONOMY_MAX_MEMBER_FEE); if (fee > maxFee) { ChatBlock.sendMessage(player, RED + lang("max.fee.allowed.is.0", player, CurrencyFormat.format(maxFee))); @@ -229,7 +228,7 @@ public void setFee(Player player, Clan clan, @Name("fee") double fee) { @CommandPermission("simpleclans.leader.ff") @Conditions("rank:name=FRIENDLYFIRE") @Description("{@@command.description.clanff.allow}") - public void allowClanFf(Player player, Clan clan) { + public void allowClanFf(final Player player, final Clan clan) { clan.addBb(player.getName(), lang("clan.wide.friendly.fire.is.allowed")); clan.setFriendlyFire(true); storage.updateClan(clan); @@ -238,7 +237,7 @@ public void allowClanFf(Player player, Clan clan) { @Subcommand("%clanff %block") @CommandPermission("simpleclans.leader.ff") @Description("{@@command.description.clanff.block}") - public void blockClanFf(Player player, Clan clan) { + public void blockClanFf(final Player player, final Clan clan) { clan.addBb(player.getName(), lang("clan.wide.friendly.fire.blocked")); clan.setFriendlyFire(false); storage.updateClan(clan); @@ -248,7 +247,7 @@ public void blockClanFf(Player player, Clan clan) { @CommandPermission("simpleclans.leader.description") @Conditions("verified|rank:name=DESCRIPTION") @Description("{@@command.description.description}") - public void setDescription(Player player, Clan clan, @Name("description") String description) { + public void setDescription(final Player player, final Clan clan, @Name("description") final String description) { if (description.length() < settings.getInt(CLAN_MIN_DESCRIPTION_LENGTH)) { ChatBlock.sendMessage(player, RED + lang("your.clan.description.must.be.longer.than", player, settings.getInt(CLAN_MIN_DESCRIPTION_LENGTH))); @@ -269,8 +268,8 @@ public void setDescription(Player player, Clan clan, @Name("description") String @Conditions("verified|rivable|minimum_to_rival|rank:name=RIVAL_ADD") @CommandCompletion("@clans:hide_own") @Description("{@@command.description.rival.add}") - public void addRival(Player player, Clan issuerClan, @Conditions("verified|different") @Name("clan") ClanInput rival) { - Clan rivalInput = rival.getClan(); + public void addRival(final Player player, final Clan issuerClan, @Conditions("verified|different") @Name("clan") final ClanInput rival) { + final Clan rivalInput = rival.getClan(); if (settings.isUnrivable(rivalInput.getTag())) { ChatBlock.sendMessage(player, RED + lang("the.clan.cannot.be.rivaled", player)); return; @@ -295,11 +294,11 @@ public void addRival(Player player, Clan issuerClan, @Conditions("verified|diffe @Conditions("verified|rank:name=RIVAL_REMOVE") @CommandCompletion("@rivals") @Description("{@@command.description.rival.remove}") - public void removeRival(Player player, - ClanPlayer cp, - Clan issuerClan, - @Conditions("different") @Name("clan") ClanInput rival) { - Clan rivalInput = rival.getClan(); + public void removeRival(final Player player, + final ClanPlayer cp, + final Clan issuerClan, + @Conditions("different") @Name("clan") final ClanInput rival) { + final Clan rivalInput = rival.getClan(); if (issuerClan.isRival(rivalInput.getTag())) { requestManager.addRivalryBreakRequest(cp, rivalInput, issuerClan); ChatBlock.sendMessage(player, AQUA + lang("leaders.asked.to.end.rivalry", player, @@ -314,16 +313,16 @@ public void removeRival(Player player, @Conditions("verified|rank:name=ALLY_ADD|minimum_to_ally") @CommandCompletion("@clans:hide_own") @Description("{@@command.description.ally.add}") - public void addAlly(Player player, - ClanPlayer cp, - Clan issuerClan, - @Conditions("verified|different") @Name("clan") ClanInput other) { - Clan input = other.getClan(); + public void addAlly(final Player player, + final ClanPlayer cp, + final Clan issuerClan, + @Conditions("verified|different") @Name("clan") final ClanInput other) { + final Clan input = other.getClan(); if (issuerClan.isAlly(input.getTag())) { ChatBlock.sendMessage(player, RED + lang("your.clans.are.already.allies", player)); return; } - int maxAlliances = settings.getInt(CLAN_MAX_ALLIANCES); + final int maxAlliances = settings.getInt(CLAN_MAX_ALLIANCES); if (maxAlliances != -1) { if (issuerClan.getAllies().size() >= maxAlliances) { ChatBlock.sendMessage(player, lang("your.clan.reached.max.alliances", player)); @@ -335,7 +334,7 @@ public void addAlly(Player player, } } - List onlineLeaders = Helper.stripOffLinePlayers(issuerClan.getLeaders()); + final List onlineLeaders = Helper.stripOffLinePlayers(issuerClan.getLeaders()); if (onlineLeaders.isEmpty()) { ChatBlock.sendMessage(player, RED + lang("at.least.one.leader.accept.the.alliance", player)); @@ -352,8 +351,8 @@ public void addAlly(Player player, @CommandPermission("simpleclans.leader.ally") @Description("{@@command.description.ally.remove}") @CommandCompletion("@allied_clans") - public void removeAlly(Player player, Clan issuerClan, @Conditions("different|allied_clan") @Name("clan") ClanInput ally) { - Clan allyInput = ally.getClan(); + public void removeAlly(final Player player, final Clan issuerClan, @Conditions("different|allied_clan") @Name("clan") final ClanInput ally) { + final Clan allyInput = ally.getClan(); issuerClan.removeAlly(allyInput); allyInput.addBb(player.getName(), lang("has.broken.the.alliance", issuerClan.getName(), allyInput.getName()), false); @@ -366,14 +365,14 @@ public void removeAlly(Player player, Clan issuerClan, @Conditions("different|al @CommandCompletion("@clan_members:hide_own") @Conditions("rank:name=KICK") @Description("{@@command.description.kick}") - public void kick(@Conditions("clan_member") Player sender, - @Conditions("same_clan") @Name("member") ClanPlayerInput other) { - ClanPlayer clanPlayer = other.getClanPlayer(); + public void kick(@Conditions("clan_member") final Player sender, + @Conditions("same_clan") @Name("member") final ClanPlayerInput other) { + final ClanPlayer clanPlayer = other.getClanPlayer(); if (sender.getUniqueId().equals(clanPlayer.getUniqueId())) { ChatBlock.sendMessage(sender, RED + lang("you.cannot.kick.yourself", sender)); return; } - Clan clan = cm.getClanByPlayerUniqueId(sender.getUniqueId()); + final Clan clan = cm.getClanByPlayerUniqueId(sender.getUniqueId()); if (Objects.requireNonNull(clan).isLeader(clanPlayer.getUniqueId())) { ChatBlock.sendMessage(sender, RED + lang("you.cannot.kick.another.leader", sender)); return; @@ -390,7 +389,7 @@ public void kick(@Conditions("clan_member") Player sender, @CommandPermission("simpleclans.member.resign") @Description("{@@command.description.resign}") @HelpSearchTags("leave") - public void resignConfirm(Player player, ClanPlayer cp, Clan clan) { + public void resignConfirm(final Player player, final ClanPlayer cp, final Clan clan) { if (!new PrePlayerLeaveClanEvent(player, player).callEvent()) { ChatBlock.sendMessage(player, RED + lang("error.event.cancelled", player)); } else if (clan.isPermanent() || !clan.isLeader(player) || clan.getLeaders().size() > 1) { @@ -410,7 +409,7 @@ public void resignConfirm(Player player, ClanPlayer cp, Clan clan) { @CommandPermission("simpleclans.member.resign") @Description("{@@command.description.resign}") @HelpSearchTags("leave") - public void resign(@Conditions("clan_member") Player player) { + public void resign(@Conditions("clan_member") final Player player) { if (!new PrePlayerLeaveClanEvent(player, player).callEvent()) { ChatBlock.sendMessage(player, RED + lang("error.event.cancelled", player)); return; diff --git a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java index 0e0aa3c23..4afcd5355 100644 --- a/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java +++ b/src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/general/GeneralCommands.java @@ -4,11 +4,36 @@ import co.aikar.commands.CommandHelp; import co.aikar.commands.CommandParameter; import co.aikar.commands.HelpEntry; -import co.aikar.commands.annotation.*; -import net.sacredlabyrinth.phaed.simpleclans.*; +import co.aikar.commands.annotation.CatchUnknown; +import co.aikar.commands.annotation.CommandAlias; +import co.aikar.commands.annotation.CommandCompletion; +import co.aikar.commands.annotation.CommandPermission; +import co.aikar.commands.annotation.Conditions; +import co.aikar.commands.annotation.Default; +import co.aikar.commands.annotation.Dependency; +import co.aikar.commands.annotation.Description; +import co.aikar.commands.annotation.HelpSearchTags; +import co.aikar.commands.annotation.Name; +import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.Single; +import co.aikar.commands.annotation.Subcommand; +import co.aikar.commands.annotation.Values; +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.SimpleClans; import net.sacredlabyrinth.phaed.simpleclans.commands.ClanInput; import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput; -import net.sacredlabyrinth.phaed.simpleclans.commands.data.*; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.Alliances; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.ClanList; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.ClanProfile; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.ClanRoster; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.Kills; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.Leaderboard; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.Lookup; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.MostKilled; +import net.sacredlabyrinth.phaed.simpleclans.commands.data.Rivalries; import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanTagPrompt; import net.sacredlabyrinth.phaed.simpleclans.conversation.RequestCanceller; import net.sacredlabyrinth.phaed.simpleclans.conversation.ResetKdrPrompt; @@ -32,8 +57,21 @@ import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang; import static net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanNamePrompt.NAME_KEY; import static net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanTagPrompt.TAG_KEY; -import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.*; -import static org.bukkit.ChatColor.*; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ALLOW_RESET_KDR; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.COMMANDS_MORE; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ENABLE_GUI; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.LANGUAGE_SELECTOR; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.PAGE_CLAN_NAME_COLOR; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.PAGE_HEADINGS_COLOR; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.PAGE_SIZE; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.SERVER_NAME; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.TAG_BRACKET_COLOR; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.TAG_BRACKET_LEFT; +import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.TAG_BRACKET_RIGHT; +import static org.bukkit.ChatColor.AQUA; +import static org.bukkit.ChatColor.GRAY; +import static org.bukkit.ChatColor.GREEN; +import static org.bukkit.ChatColor.RED; @CommandAlias("%clan") @Conditions("%basic_conditions") @@ -53,7 +91,7 @@ public class GeneralCommands extends BaseCommand { @Default @Description("{@@command.description.clan}") @HelpSearchTags("menu gui interface ui") - public void main(CommandSender sender) { + public void main(final CommandSender sender) { if (sender instanceof Player && settings.is(ENABLE_GUI)) { InventoryDrawer.open(new MainFrame((Player) sender)); } else { @@ -66,7 +104,7 @@ public void main(CommandSender sender) { @CommandPermission("simpleclans.anyone.locale") @Description("{@@command.description.locale}") @CommandCompletion("@locales") - public void locale(ClanPlayer cp, @Values("@locales") @Name("locale") @Single String locale) { + public void locale(final ClanPlayer cp, @Values("@locales") @Name("locale") @Single final String locale) { if (!settings.is(LANGUAGE_SELECTOR)) { ChatBlock.sendMessageKey(cp, "locale.is.prohibited"); return; @@ -82,8 +120,8 @@ public void locale(ClanPlayer cp, @Values("@locales") @Name("locale") @Single St @CommandPermission("simpleclans.leader.create") @CommandCompletion("%compl:tag %compl:name") @Description("{@@command.description.create}") - public void create(Player player, @Optional @Name("tag") String tag, @Optional @Name("name") String name) { - ClanPlayer cp = cm.getAnyClanPlayer(player.getUniqueId()); + public void create(final Player player, @Optional @Name("tag") final String tag, @Optional @Name("name") final String name) { + final ClanPlayer cp = cm.getAnyClanPlayer(player.getUniqueId()); if (cp != null) { if (cp.getClan() != null) { @@ -92,17 +130,17 @@ public void create(Player player, @Optional @Name("tag") String tag, @Optional @ return; } - long wait = cm.getMinutesBeforeAction(cp); - if (wait > 0) { - ChatBlock.sendMessage(player, RED + lang("you.must.wait.0.before.creating.a.clan", player, wait)); + final long minutesBeforeAction = cm.getMinutesBeforeAction(cp); + if (minutesBeforeAction > 0L) { + ChatBlock.sendMessage(player, RED + lang("you.must.wait.0.before.creating.a.clan", player, minutesBeforeAction)); return; } } - HashMap initialData = new HashMap<>(); + final HashMap initialData = new HashMap<>(); initialData.put(TAG_KEY, tag); initialData.put(NAME_KEY, name); - SCConversation conversation = new SCConversation(plugin, player, new CreateClanTagPrompt(), initialData); + final SCConversation conversation = new SCConversation(plugin, player, new CreateClanTagPrompt(), initialData); conversation.addConversationCanceller(new RequestCanceller(player, RED + lang("clan.create.request.cancelled", player))); conversation.begin(); } @@ -110,8 +148,8 @@ public void create(Player player, @Optional @Name("tag") String tag, @Optional @ @Subcommand("%leaderboard") @CommandPermission("simpleclans.anyone.leaderboard") @Description("{@@command.description.leaderboard}") - public void leaderboard(CommandSender sender) { - Leaderboard l = new Leaderboard(plugin, sender); + public void leaderboard(final CommandSender sender) { + final Leaderboard l = new Leaderboard(plugin, sender); l.send(); } @@ -119,16 +157,16 @@ public void leaderboard(CommandSender sender) { @CommandCompletion("@players") @CommandPermission("simpleclans.anyone.lookup") @Description("{@@command.description.lookup.other}") - public void lookup(CommandSender sender, @Name("player") ClanPlayerInput player) { - Lookup l = new Lookup(plugin, sender, player.getClanPlayer().getUniqueId()); + public void lookup(final CommandSender sender, @Name("player") final ClanPlayerInput player) { + final Lookup l = new Lookup(plugin, sender, player.getClanPlayer().getUniqueId()); l.send(); } @Subcommand("%lookup") @CommandPermission("simpleclans.member.lookup") @Description("{@@command.description.lookup}") - public void lookup(Player sender) { - Lookup l = new Lookup(plugin, sender, sender.getUniqueId()); + public void lookup(final Player sender) { + final Lookup l = new Lookup(plugin, sender, sender.getUniqueId()); l.send(); } @@ -137,12 +175,12 @@ public void lookup(Player sender) { @Conditions("verified|rank:name=KILLS") @CommandCompletion("@players") @Description("{@@command.description.kills}") - public void kills(Player sender, @Optional @Name("player") ClanPlayerInput player) { + public void kills(final Player sender, @Optional @Name("player") final ClanPlayerInput player) { String name = sender.getName(); if (player != null) { name = player.getClanPlayer().getName(); } - Kills k = new Kills(plugin, sender, name); + final Kills k = new Kills(plugin, sender, name); k.send(); } @@ -150,8 +188,8 @@ public void kills(Player sender, @Optional @Name("player") ClanPlayerInput playe @CommandPermission("simpleclans.anyone.profile") @CommandCompletion("@clans:hide_own") @Description("{@@command.description.profile.other}") - public void profile(CommandSender sender, @Conditions("verified") @Name("clan") ClanInput clan) { - ClanProfile p = new ClanProfile(plugin, sender, clan.getClan()); + public void profile(final CommandSender sender, @Conditions("verified") @Name("clan") final ClanInput clan) { + final ClanProfile p = new ClanProfile(plugin, sender, clan.getClan()); p.send(); } @@ -159,15 +197,15 @@ public void profile(CommandSender sender, @Conditions("verified") @Name("clan") @CommandCompletion("@clans:hide_own") @CommandPermission("simpleclans.anyone.roster") @Description("{@@command.description.roster.other}") - public void roster(CommandSender sender, @Conditions("verified") @Name("clan") ClanInput clan) { - ClanRoster r = new ClanRoster(plugin, sender, clan.getClan()); + public void roster(final CommandSender sender, @Conditions("verified") @Name("clan") final ClanInput clan) { + final ClanRoster r = new ClanRoster(plugin, sender, clan.getClan()); r.send(); } @Subcommand("%ff %allow") @CommandPermission("simpleclans.member.ff") @Description("{@@command.description.ff.allow}") - public void allowPersonalFf(Player player, ClanPlayer cp) { + public void allowPersonalFf(final Player player, final ClanPlayer cp) { cp.setFriendlyFire(true); storage.updateClanPlayer(cp); ChatBlock.sendMessage(player, AQUA + lang("personal.friendly.fire.is.set.to.allowed", player)); @@ -176,7 +214,7 @@ public void allowPersonalFf(Player player, ClanPlayer cp) { @Subcommand("%ff %auto") @CommandPermission("simpleclans.member.ff") @Description("{@@command.description.ff.auto}") - public void autoPersonalFf(Player player, ClanPlayer cp) { + public void autoPersonalFf(final Player player, final ClanPlayer cp) { cp.setFriendlyFire(false); storage.updateClanPlayer(cp); ChatBlock.sendMessage(player, AQUA + lang("friendy.fire.is.now.managed.by.your.clan", player)); @@ -185,12 +223,12 @@ public void autoPersonalFf(Player player, ClanPlayer cp) { @Subcommand("%resetkdr %confirm") @CommandPermission("simpleclans.vip.resetkdr") @Description("{@@command.description.resetkdr}") - public void resetKdrConfirm(Player player, ClanPlayer cp) { + public void resetKdrConfirm(final Player player, final ClanPlayer cp) { if (!settings.is(ALLOW_RESET_KDR)) { ChatBlock.sendMessage(player, RED + lang("disabled.command", player)); return; } - PlayerResetKdrEvent event = new PlayerResetKdrEvent(cp); + final PlayerResetKdrEvent event = new PlayerResetKdrEvent(cp); Bukkit.getServer().getPluginManager().callEvent(event); if (!event.isCancelled() && cm.purchaseResetKdr(player)) { cm.resetKdr(cp); @@ -201,7 +239,7 @@ public void resetKdrConfirm(Player player, ClanPlayer cp) { @Subcommand("%resetkdr") @CommandPermission("simpleclans.vip.resetkdr") @Description("{@@command.description.resetkdr}") - public void resetKdr(Player player, ClanPlayer cp) { + public void resetKdr(final Player player, final ClanPlayer cp) { if (!settings.is(ALLOW_RESET_KDR)) { ChatBlock.sendMessage(player, RED + lang("disabled.command", player)); } else { @@ -212,8 +250,8 @@ public void resetKdr(Player player, ClanPlayer cp) { @CommandAlias("%accept") @Description("{@@command.description.accept}") @Conditions("can_vote") - public void accept(Player player, ClanPlayer cp) { - Clan clan = cp.getClan(); + public void accept(final Player player, final ClanPlayer cp) { + final Clan clan = cp.getClan(); if (clan != null) { clan.leaderAnnounce(GREEN + lang("voted.to.accept", player.getName())); } @@ -223,8 +261,8 @@ public void accept(Player player, ClanPlayer cp) { @CommandAlias("%deny") @Description("{@@command.description.deny}") @Conditions("can_vote") - public void deny(Player player, ClanPlayer cp) { - Clan clan = cp.getClan(); + public void deny(final Player player, final ClanPlayer cp) { + final Clan clan = cp.getClan(); if (clan != null) { clan.leaderAnnounce(RED + lang("has.voted.to.deny", player.getName())); } @@ -233,8 +271,8 @@ public void deny(Player player, ClanPlayer cp) { @CommandAlias("%more") @Description("{@@command.description.more}") - public void more(Player player) { - ChatBlock chatBlock = storage.getChatBlock(player); + public void more(final Player player) { + final ChatBlock chatBlock = storage.getChatBlock(player); if (chatBlock == null || chatBlock.size() <= 0) { ChatBlock.sendMessage(player, RED + lang("nothing.more.to.see", player)); @@ -254,10 +292,10 @@ public void more(Player player) { @CatchUnknown @Subcommand("%help") @Description("{@@command.description.help}") - public void help(CommandSender sender, CommandHelp help) { - boolean inClan = sender instanceof Player player && cm.getClanByPlayerUniqueId(player.getUniqueId()) != null; - for (HelpEntry helpEntry : help.getHelpEntries()) { - for (@SuppressWarnings("rawtypes") CommandParameter parameter : helpEntry.getParameters()) { + public void help(final CommandSender sender, final CommandHelp help) { + final boolean inClan = sender instanceof final Player player && cm.getClanByPlayerUniqueId(player.getUniqueId()) != null; + for (final HelpEntry helpEntry : help.getHelpEntries()) { + for (@SuppressWarnings("rawtypes") final CommandParameter parameter : helpEntry.getParameters()) { if (parameter.getType().equals(Clan.class) && !inClan) { helpEntry.setSearchScore(0); } @@ -270,16 +308,16 @@ public void help(CommandSender sender, CommandHelp help) { @CommandPermission("simpleclans.mod.mostkilled") @Conditions("verified|rank:name=MOSTKILLED") @Description("{@@command.description.mostkilled}") - public void mostKilled(Player player) { - MostKilled mk = new MostKilled(plugin, player); + public void mostKilled(final Player player) { + final MostKilled mk = new MostKilled(plugin, player); mk.send(); } @Subcommand("%list %balance") @CommandPermission("simpleclans.anyone.list.balance") @Description("{@@command.description.list.balance}") - public void listBalance(CommandSender sender) { - List clans = cm.getClans(); + public void listBalance(final CommandSender sender) { + final List clans = cm.getClans(); if (clans.isEmpty()) { sender.sendMessage(RED + lang("no.clans.have.been.created", sender)); return; @@ -287,14 +325,14 @@ public void listBalance(CommandSender sender) { clans.sort(Comparator.comparingDouble(Clan::getBalance).reversed()); sender.sendMessage(lang("clan.list.balance.header", sender, settings.getColored(SERVER_NAME), clans.size())); - String lineFormat = lang("clan.list.balance.line", sender); + final String lineFormat = lang("clan.list.balance.line", sender); - String leftBracket = settings.getColored(TAG_BRACKET_COLOR) + settings.getColored(TAG_BRACKET_LEFT); - String rightBracket = settings.getColored(TAG_BRACKET_COLOR) + settings.getColored(TAG_BRACKET_RIGHT); + final String leftBracket = settings.getColored(TAG_BRACKET_COLOR) + settings.getColored(TAG_BRACKET_LEFT); + final String rightBracket = settings.getColored(TAG_BRACKET_COLOR) + settings.getColored(TAG_BRACKET_RIGHT); for (int i = 0; i < 10 && i < clans.size(); i++) { - Clan clan = clans.get(i); - String name = " " + (clan.isVerified() ? settings.getColored(PAGE_CLAN_NAME_COLOR) : GRAY) + clan.getName(); - String line = MessageFormat.format(lineFormat, i + 1, leftBracket, clan.getColorTag(), + final Clan clan = clans.get(i); + final String name = " " + (clan.isVerified() ? settings.getColored(PAGE_CLAN_NAME_COLOR) : GRAY) + clan.getName(); + final String line = MessageFormat.format(lineFormat, i + 1, leftBracket, clan.getColorTag(), rightBracket, name, clan.getBalanceFormatted()); sender.sendMessage(line); } @@ -304,25 +342,25 @@ public void listBalance(CommandSender sender) { @CommandPermission("simpleclans.anyone.list") @Description("{@@command.description.list}") @CommandCompletion("@clan_list_type @order") - public void list(CommandSender sender, @Optional @Values("@clan_list_type") String type, - @Optional @Single @Values("@order") String order) { - ClanList list = new ClanList(plugin, sender, type, order); + public void list(final CommandSender sender, @Optional @Values("@clan_list_type") final String type, + @Optional @Single @Values("@order") final String order) { + final ClanList list = new ClanList(plugin, sender, type, order); list.send(); } @Subcommand("%rivalries") @CommandPermission("simpleclans.anyone.rivalries") @Description("{@@command.description.rivalries}") - public void rivalries(CommandSender sender) { - Rivalries rivalries = new Rivalries(plugin, sender); + public void rivalries(final CommandSender sender) { + final Rivalries rivalries = new Rivalries(plugin, sender); rivalries.send(); } @Subcommand("%alliances") @CommandPermission("simpleclans.anyone.alliances") @Description("{@@command.description.alliances}") - public void alliances(CommandSender sender) { - Alliances a = new Alliances(plugin, sender); + public void alliances(final CommandSender sender) { + final Alliances a = new Alliances(plugin, sender); a.send(); }