Skip to content

Commit

Permalink
Added placeholder %Level_[gamemode]_rank_value
Browse files Browse the repository at this point in the history
Fixes #228
  • Loading branch information
tastybento committed Jul 24, 2021
1 parent 4661bcd commit 76a2688
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion src/main/java/world/bentobox/level/Level.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import world.bentobox.level.listeners.IslandActivitiesListeners;
import world.bentobox.level.listeners.JoinLeaveListener;
import world.bentobox.level.objects.LevelsData;
import world.bentobox.level.objects.TopTenData;
import world.bentobox.level.requests.LevelRequestHandler;
import world.bentobox.level.requests.TopTenRequestHandler;

Expand Down Expand Up @@ -206,6 +207,9 @@ private void registerPlaceholders(GameModeAddon gm) {
gm.getDescription().getName().toLowerCase() + "_top_value_" + i, u -> getRankLevel(gm.getOverWorld(), rank));
}

// Personal rank
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
gm.getDescription().getName().toLowerCase() + "_rank_value", u -> getRankValue(gm.getOverWorld(), u));
}

String getRankName(World world, int rank) {
Expand All @@ -228,8 +232,23 @@ String getRankLevel(World world, int rank) {
.orElse(null));
}

/**
* Return the rank of the player in a world
* @param world world
* @param user player
* @return rank where 1 is the top rank.
*/
String getRankValue(World world, User user) {
if (user == null) {
return "";
}
// Get the island level for this user
long level = getManager().getIslandLevel(world, user.getUniqueId());
return String.valueOf(getManager().getTopTenLists().getOrDefault(world, new TopTenData(world)).getTopTen().values().stream().filter(l -> l > level).count() + 1);
}

String getVisitedIslandLevel(GameModeAddon gm, User user) {
if (!gm.inWorld(user.getLocation())) return "";
if (user == null || !gm.inWorld(user.getLocation())) return "";
return getIslands().getIslandAt(user.getLocation())
.map(island -> getManager().getIslandLevelString(gm.getOverWorld(), island.getOwner()))
.orElse("0");
Expand Down

0 comments on commit 76a2688

Please sign in to comment.