Thanks to @sgdc3 who found my mistake with checking if challenges exists when opening GUI.
This commit is contained in:
BONNe 2020-11-29 00:25:02 +02:00
parent b4e62f1e89
commit 93f07b95ed
2 changed files with 15 additions and 8 deletions

View File

@ -2088,26 +2088,26 @@ public class ChallengesManager
/**
* This method returns if in given world has any stored challenge or level.
* @param world World that needs to be checked
* @return <code>true</code> if world has any challenge or level, otherwise <code>false</code>
* @return {@code true} if world has any challenge or level, otherwise {@code false}
*/
public boolean hasAnyChallengeData(@NonNull World world)
{
return this.islandWorldManager.getAddon(world).filter(gameMode ->
this.hasAnyChallengeData(gameMode.getDescription().getName())).isPresent();
this.hasAnyChallengeData(gameMode.getDescription().getName())).isPresent();
}
/**
* This method returns if in given gameMode has any stored challenge or level.
* @param gameMode GameMode addon name that needs to be checked
* @return <code>true</code> if gameMode has any challenge or level, otherwise <code>false</code>
* @return {@code true} if gameMode has any challenge or level, otherwise {@code false}
*/
public boolean hasAnyChallengeData(@NonNull String gameMode)
{
return this.challengeDatabase.loadObjects().stream().anyMatch(
challenge -> challenge.matchGameMode(gameMode)) ||
this.levelDatabase.loadObjects().stream().anyMatch(
level -> level.matchGameMode(gameMode));
return this.challengeCacheData.values().stream().anyMatch(challenge -> challenge.matchGameMode(gameMode)) ||
this.levelCacheData.values().stream().anyMatch(level -> level.matchGameMode(gameMode)) ||
this.challengeDatabase.loadObjects().stream().anyMatch(challenge -> challenge.matchGameMode(gameMode)) ||
this.levelDatabase.loadObjects().stream().anyMatch(level -> level.matchGameMode(gameMode));
}

View File

@ -62,6 +62,8 @@ public class ChallengesGUI extends CommonGUI
break;
}
}
this.containsChallenges = this.challengesManager.hasAnyChallengeData(this.world);
}
// ---------------------------------------------------------------------
@ -76,7 +78,7 @@ public class ChallengesGUI extends CommonGUI
public void build()
{
// Do not open gui if there is no challenges.
if (!this.challengesManager.hasAnyChallengeData(this.world))
if (!this.containsChallenges)
{
this.addon.logError("There are no challenges set up!");
this.user.sendMessage("challenges.errors.no-challenges");
@ -518,4 +520,9 @@ public class ChallengesGUI extends CommonGUI
* Challenge Manager object.
*/
private ChallengesManager challengesManager;
/**
* This boolean indicates if in the world there exist challenges for displaying in GUI.
*/
private final boolean containsChallenges;
}