From e85b687e362ff11b972f2a3391e4411e94595709 Mon Sep 17 00:00:00 2001 From: BONNe Date: Fri, 19 Jun 2020 11:36:26 +0300 Subject: [PATCH] Fixes #244 Implement 2 new placeholders. --- .../bentobox/challenges/ChallengesAddon.java | 18 ++++++++++++++++++ .../bentobox/challenges/ChallengesManager.java | 15 +++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/main/java/world/bentobox/challenges/ChallengesAddon.java b/src/main/java/world/bentobox/challenges/ChallengesAddon.java index 69daafa..8436dc5 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesAddon.java +++ b/src/main/java/world/bentobox/challenges/ChallengesAddon.java @@ -388,6 +388,24 @@ public class ChallengesAddon extends Addon { ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world); return level != null ? level.getUniqueId() : ""; }); + + // Completed challenge count in latest level + this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon, + addonName + "_latest_level_completed_count", + user -> { + ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world); + return String.valueOf(level != null ? + this.challengesManager.getLevelCompletedChallengeCount(user, world, level) : 0); + }); + + // Uncompleted challenge count in latest level + this.getPlugin().getPlaceholdersManager().registerPlaceholder(gameModeAddon, + addonName + "_latest_level_uncompleted_count", + user -> { + ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world); + return String.valueOf(level != null ? + level.getChallenges().size() - this.challengesManager.getLevelCompletedChallengeCount(user, world, level) : 0); + }); } diff --git a/src/main/java/world/bentobox/challenges/ChallengesManager.java b/src/main/java/world/bentobox/challenges/ChallengesManager.java index 571bed7..522b61c 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesManager.java +++ b/src/main/java/world/bentobox/challenges/ChallengesManager.java @@ -1786,6 +1786,21 @@ public class ChallengesManager } + /** + * This method returns completed challenge count in given level. + * @param user User which should be checked + * @param world World where challenges are operating + * @param level Level which challenges must be checked. + * @return Number of completed challenges in given level. + */ + public long getLevelCompletedChallengeCount(User user, World world, ChallengeLevel level) + { + return this.getLevelChallenges(level).stream(). + filter(challenge -> this.getChallengeTimes(user, world, challenge) > 0). + count(); + } + + // --------------------------------------------------------------------- // Section: Level related methods // ---------------------------------------------------------------------