From a045ea1a8e1198d40ff42558664a24968af07f08 Mon Sep 17 00:00:00 2001 From: Florian CUNY Date: Thu, 11 Apr 2019 11:00:02 +0200 Subject: [PATCH] Added Island#getMemberSet(int, boolean) to specify if we want only the specific rank or the above ranks included --- .../bentobox/database/objects/Island.java | 26 ++++++++++++++++--- .../bentobox/lists/GameModePlaceholder.java | 3 +-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/database/objects/Island.java b/src/main/java/world/bentobox/bentobox/database/objects/Island.java index e93304494..1766c34a1 100644 --- a/src/main/java/world/bentobox/bentobox/database/objects/Island.java +++ b/src/main/java/world/bentobox/bentobox/database/objects/Island.java @@ -246,7 +246,7 @@ public class Island implements DataObject { /** * Returns the members of this island. - * It contains all players that have any rank on this island, including {@link RanksManager#BANNED}, + * It contains all players that have any rank on this island, including {@link RanksManager#BANNED_RANK BANNED}, * {@link RanksManager#TRUSTED_RANK TRUSTED}, {@link RanksManager#MEMBER_RANK MEMBER}, {@link RanksManager#SUB_OWNER_RANK SUB_OWNER}, * {@link RanksManager#OWNER_RANK OWNER}, etc. * @@ -265,22 +265,40 @@ public class Island implements DataObject { * @see #getMembers() */ public ImmutableSet getMemberSet(){ - return (getMemberSet(RanksManager.MEMBER_RANK)); + return getMemberSet(RanksManager.MEMBER_RANK); } /** * Returns an immutable set containing the UUIDs of players with rank above that requested rank inclusive - * @param minimumRank - minimum rank (inclusive) of members + * @param minimumRank minimum rank (inclusive) of members * @return immutable set of UUIDs * @see #getMembers() * @since 1.5.0 */ - public @NonNull ImmutableSet getMemberSet(@NonNull int minimumRank) { + public @NonNull ImmutableSet getMemberSet(int minimumRank) { Builder result = new ImmutableSet.Builder<>(); members.entrySet().stream().filter(e -> e.getValue() >= minimumRank).map(Map.Entry::getKey).forEach(result::add); return result.build(); } + /** + * Returns an immutable set containing the UUIDs of players with rank equal or above that requested rank (inclusive). + * @param rank rank to request + * @param includeAboveRanks whether including players with rank above the requested rank or not + * @return immutable set of UUIDs + * @see #getMemberSet(int) + * @see #getMembers() + * @since 1.5.0 + */ + public @NonNull ImmutableSet getMemberSet(int rank, boolean includeAboveRanks) { + if (includeAboveRanks) { + return getMemberSet(rank); + } + Builder result = new ImmutableSet.Builder<>(); + members.entrySet().stream().filter(e -> e.getValue() == rank).map(Map.Entry::getKey).forEach(result::add); + return result.build(); + } + /** * @return the minProtectedX */ diff --git a/src/main/java/world/bentobox/bentobox/lists/GameModePlaceholder.java b/src/main/java/world/bentobox/bentobox/lists/GameModePlaceholder.java index 945b98478..612fc3b47 100644 --- a/src/main/java/world/bentobox/bentobox/lists/GameModePlaceholder.java +++ b/src/main/java/world/bentobox/bentobox/lists/GameModePlaceholder.java @@ -1,7 +1,6 @@ package world.bentobox.bentobox.lists; import world.bentobox.bentobox.api.placeholders.GameModePlaceholderReplacer; -import world.bentobox.bentobox.managers.RanksManager; import world.bentobox.bentobox.util.Util; import java.text.DateFormat; @@ -49,7 +48,7 @@ public enum GameModePlaceholder { * Displays the amount of players that are at least MEMBER on this island. * @since 1.5.0 */ - ISLAND_MEMBERS_COUNT("island_members_count", (addon, user, island) -> island == null ? "" : String.valueOf(island.getMemberSet(RanksManager.MEMBER_RANK).size())), + ISLAND_MEMBERS_COUNT("island_members_count", (addon, user, island) -> island == null ? "" : String.valueOf(island.getMemberSet().size())), /** * Displays the amount of players that are currently visiting the island. * @since 1.5.0