Add protective code in ChallengesManager to avoid getting challenges for non-existing world. #622

This commit is contained in:
BONNe 2019-04-02 09:14:23 +03:00
parent e33db6ef29
commit d5e75491e6

View File

@ -1036,13 +1036,19 @@ public class ChallengesManager
* @param world - the world to check * @param world - the world to check
* @return List of challenge names * @return List of challenge names
*/ */
public List<String> getAllChallengesNames(World world) public List<String> getAllChallengesNames(@NonNull World world)
{ {
String worldName = Util.getWorld(world).getName(); World gameWorld = Util.getWorld(world);
if (gameWorld == null)
{
return Collections.emptyList();
}
// TODO: Probably need to check also database. // TODO: Probably need to check also database.
return this.challengeCacheData.values().stream(). return this.challengeCacheData.values().stream().
sorted(Comparator.comparing(Challenge::getOrder)). sorted(Comparator.comparing(Challenge::getOrder)).
filter(challenge -> challenge.getUniqueId().startsWith(worldName)). filter(challenge -> challenge.getUniqueId().startsWith(gameWorld.getName())).
map(Challenge::getUniqueId). map(Challenge::getUniqueId).
collect(Collectors.toList()); collect(Collectors.toList());
} }
@ -1054,12 +1060,18 @@ public class ChallengesManager
* @param world - the world to check * @param world - the world to check
* @return List of challenges * @return List of challenges
*/ */
public List<Challenge> getAllChallenges(World world) public List<Challenge> getAllChallenges(@NonNull World world)
{ {
String worldName = Util.getWorld(world).getName(); World gameWorld = Util.getWorld(world);
if (gameWorld == null)
{
return Collections.emptyList();
}
// TODO: Probably need to check also database. // TODO: Probably need to check also database.
return this.challengeCacheData.values().stream(). return this.challengeCacheData.values().stream().
filter(challenge -> challenge.getUniqueId().startsWith(worldName)). filter(challenge -> challenge.getUniqueId().startsWith(gameWorld.getName())).
sorted(Comparator.comparing(Challenge::getOrder)). sorted(Comparator.comparing(Challenge::getOrder)).
collect(Collectors.toList()); collect(Collectors.toList());
} }
@ -1198,9 +1210,16 @@ public class ChallengesManager
* @param world for which levels must be searched. * @param world for which levels must be searched.
* @return List with challenges in given world. * @return List with challenges in given world.
*/ */
public List<ChallengeLevel> getLevels(World world) public List<ChallengeLevel> getLevels(@NonNull World world)
{ {
return this.getLevels(Util.getWorld(world).getName()); world = Util.getWorld(world);
if (world == null)
{
return Collections.emptyList();
}
return this.getLevels(world.getName());
} }