From 4cae1ed26762f4876e3d3f036c1e7aaa868e2d2e Mon Sep 17 00:00:00 2001 From: BONNe Date: Wed, 13 Nov 2019 16:16:59 +0200 Subject: [PATCH] Fix LevelListRequestHandler. This handler did not return list of strings but list of challenge levels, that is incorrect. Not it should work correctly. --- .../challenges/ChallengesManager.java | 37 ++++++++++++++----- .../handlers/LevelListRequestHandler.java | 3 +- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/world/bentobox/challenges/ChallengesManager.java b/src/main/java/world/bentobox/challenges/ChallengesManager.java index 9577bed..876af45 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesManager.java +++ b/src/main/java/world/bentobox/challenges/ChallengesManager.java @@ -1528,12 +1528,12 @@ public class ChallengesManager public List getAllChallengesNames(@NonNull World world) { return this.islandWorldManager.getAddon(world).map(gameMode -> - this.challengeCacheData.values().stream(). - filter(challenge -> challenge.matchGameMode(gameMode.getDescription().getName())). - sorted(this.challengeComparator). - map(Challenge::getUniqueId). - collect(Collectors.toList())). - orElse(Collections.emptyList()); + this.challengeCacheData.values().stream(). + filter(challenge -> challenge.matchGameMode(gameMode.getDescription().getName())). + sorted(this.challengeComparator). + map(Challenge::getUniqueId). + collect(Collectors.toList())). + orElse(Collections.emptyList()); } @@ -1705,8 +1705,8 @@ public class ChallengesManager public List getLevels(@NonNull World world) { return this.islandWorldManager.getAddon(world).map(gameMode -> - this.getLevels(gameMode.getDescription().getName())). - orElse(Collections.emptyList()); + this.getLevels(gameMode.getDescription().getName())). + orElse(Collections.emptyList()); } @@ -1719,9 +1719,26 @@ public class ChallengesManager { // TODO: Probably need to check also database. return this.levelCacheData.values().stream(). + sorted(ChallengeLevel::compareTo). + filter(level -> level.matchGameMode(gameMode)). + collect(Collectors.toList()); + } + + + /** + * This method returns list of challenge levels in given gameMode. + * @param world for which levels must be searched. + * @return List with challengeLevel uniqueIds in given world. + */ + public List getLevelNames(@NonNull World world) + { + return this.islandWorldManager.getAddon(world).map(gameMode -> + this.levelCacheData.values().stream(). sorted(ChallengeLevel::compareTo). - filter(level -> level.matchGameMode(gameMode)). - collect(Collectors.toList()); + filter(level -> level.matchGameMode(gameMode.getDescription().getName())). + map(ChallengeLevel::getUniqueId). + collect(Collectors.toList())). + orElse(Collections.emptyList()); } diff --git a/src/main/java/world/bentobox/challenges/handlers/LevelListRequestHandler.java b/src/main/java/world/bentobox/challenges/handlers/LevelListRequestHandler.java index 7917046..f449297 100644 --- a/src/main/java/world/bentobox/challenges/handlers/LevelListRequestHandler.java +++ b/src/main/java/world/bentobox/challenges/handlers/LevelListRequestHandler.java @@ -52,7 +52,8 @@ public class LevelListRequestHandler extends AddonRequestHandler return Collections.emptyList(); } - return this.addon.getChallengesManager().getLevels(Bukkit.getWorld((String) metaData.get("world-name"))); + return this.addon.getChallengesManager().getLevelNames( + Bukkit.getWorld((String) metaData.get("world-name"))); }