mirror of
https://github.com/BentoBoxWorld/Challenges.git
synced 2024-11-28 13:36:06 +01:00
Add 7 new placeholders for Challenges Addon.
- `[gamemode]_challenge_total_completion_count` returns number of sum of challenge completions for user. - `[gamemode]_challenge_completed_count` returns number of completed challenges (at least once) for user. - `[gamemode]_challenge_uncompleted_count` returns number of uncompleted challenges for user. - `[gamemode]_challenge_completed_level_count` returns number of completed levels for user. - `[gamemode]_challenge_uncompleted_level_count` returns number of uncompleted levels for user. - `[gamemode]_challenge_unlocked_level_count` returns number of unlocked levels for user. - `[gamemode]_challenge_locked_level_count` returns number of locked levels for user. Fixes #224
This commit is contained in:
parent
6368585a57
commit
2958ca8b6c
@ -7,6 +7,7 @@ import java.util.Optional;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.addons.Addon;
|
import world.bentobox.bentobox.api.addons.Addon;
|
||||||
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
||||||
@ -156,11 +157,8 @@ public class ChallengesAddon extends Addon {
|
|||||||
List<GameModeAddon> hookedGameModes = new ArrayList<>();
|
List<GameModeAddon> hookedGameModes = new ArrayList<>();
|
||||||
|
|
||||||
this.getPlugin().getAddonsManager().getGameModeAddons().forEach(gameModeAddon -> {
|
this.getPlugin().getAddonsManager().getGameModeAddons().forEach(gameModeAddon -> {
|
||||||
if (!this.settings
|
if (!this.settings.getDisabledGameModes().contains(
|
||||||
.getDisabledGameModes()
|
gameModeAddon.getDescription().getName()))
|
||||||
.contains(gameModeAddon
|
|
||||||
.getDescription()
|
|
||||||
.getName()))
|
|
||||||
{
|
{
|
||||||
if (gameModeAddon.getPlayerCommand().isPresent())
|
if (gameModeAddon.getPlayerCommand().isPresent())
|
||||||
{
|
{
|
||||||
@ -178,6 +176,8 @@ public class ChallengesAddon extends Addon {
|
|||||||
|
|
||||||
CHALLENGES_WORLD_PROTECTION.addGameModeAddon(gameModeAddon);
|
CHALLENGES_WORLD_PROTECTION.addGameModeAddon(gameModeAddon);
|
||||||
CHALLENGES_ISLAND_PROTECTION.addGameModeAddon(gameModeAddon);
|
CHALLENGES_ISLAND_PROTECTION.addGameModeAddon(gameModeAddon);
|
||||||
|
|
||||||
|
this.registerPlaceholders(gameModeAddon);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -314,6 +314,56 @@ public class ChallengesAddon extends Addon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method registers placeholders into GameMode addon.
|
||||||
|
* @param gameModeAddon GameMode addon where placeholders must be hooked in.
|
||||||
|
*/
|
||||||
|
private void registerPlaceholders(GameModeAddon gameModeAddon)
|
||||||
|
{
|
||||||
|
final String gameMode = gameModeAddon.getDescription().getName().toLowerCase();
|
||||||
|
final World world = gameModeAddon.getOverWorld();
|
||||||
|
|
||||||
|
// Number of completions for all challenges placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_total_completion_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getTotalChallengeCompletionCount(user, world)));
|
||||||
|
|
||||||
|
// Completed challenge count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_completed_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getCompletedChallengeCount(user, world)));
|
||||||
|
|
||||||
|
// Uncompleted challenge count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_uncompleted_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getChallengeCount(world) -
|
||||||
|
this.challengesManager.getCompletedChallengeCount(user, world)));
|
||||||
|
|
||||||
|
// Completed challenge level count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_completed_level_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getCompletedLevelCount(user, world)));
|
||||||
|
|
||||||
|
// Uncompleted challenge level count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_uncompleted_level_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
|
||||||
|
this.challengesManager.getCompletedLevelCount(user, world)));
|
||||||
|
|
||||||
|
// Unlocked challenge level count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_unlocked_level_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
|
||||||
|
this.challengesManager.getUnlockedLevelCount(user, world)));
|
||||||
|
|
||||||
|
// Locked challenge level count placeholder
|
||||||
|
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gameMode + "_challenge_locked_level_count",
|
||||||
|
user -> String.valueOf(this.challengesManager.getLevelCount(world) -
|
||||||
|
this.challengesManager.getUnlockedLevelCount(user, world)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// Section: Getters
|
// Section: Getters
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
@ -1507,7 +1507,7 @@ public class ChallengesManager
|
|||||||
public List<LevelStatus> getAllChallengeLevelStatus(User user, World world)
|
public List<LevelStatus> getAllChallengeLevelStatus(User user, World world)
|
||||||
{
|
{
|
||||||
return this.islandWorldManager.getAddon(world).map(gameMode ->
|
return this.islandWorldManager.getAddon(world).map(gameMode ->
|
||||||
this.getAllChallengeLevelStatus(
|
this.getAllChallengeLevelStatus(
|
||||||
this.getDataUniqueID(user, Util.getWorld(world)),
|
this.getDataUniqueID(user, Util.getWorld(world)),
|
||||||
gameMode.getDescription().getName())).
|
gameMode.getDescription().getName())).
|
||||||
orElse(Collections.emptyList());
|
orElse(Collections.emptyList());
|
||||||
@ -1546,11 +1546,11 @@ public class ChallengesManager
|
|||||||
public List<Challenge> getAllChallenges(@NonNull World world)
|
public List<Challenge> getAllChallenges(@NonNull World world)
|
||||||
{
|
{
|
||||||
return this.islandWorldManager.getAddon(world).map(gameMode ->
|
return this.islandWorldManager.getAddon(world).map(gameMode ->
|
||||||
this.challengeCacheData.values().stream().
|
this.challengeCacheData.values().stream().
|
||||||
filter(challenge -> challenge.matchGameMode(gameMode.getDescription().getName())).
|
filter(challenge -> challenge.matchGameMode(gameMode.getDescription().getName())).
|
||||||
sorted(this.challengeComparator).
|
sorted(this.challengeComparator).
|
||||||
collect(Collectors.toList())).
|
collect(Collectors.toList())).
|
||||||
orElse(Collections.emptyList());
|
orElse(Collections.emptyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1692,6 +1692,45 @@ public class ChallengesManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns number of challenges in given world.
|
||||||
|
* @param world World where challenge count must be returned.
|
||||||
|
* @return Number of challenges in given world.
|
||||||
|
*/
|
||||||
|
public int getChallengeCount(World world)
|
||||||
|
{
|
||||||
|
return this.getAllChallenges(world).size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns number of completed challenges in given world.
|
||||||
|
* @param user User which completed challenge count must be returned.
|
||||||
|
* @param world World where challenge count must be returned.
|
||||||
|
* @return Number of completed challenges by given user in given world.
|
||||||
|
*/
|
||||||
|
public long getCompletedChallengeCount(User user, World world)
|
||||||
|
{
|
||||||
|
return this.getAllChallenges(world).stream().
|
||||||
|
filter(challenge -> this.getChallengeTimes(user, world, challenge) > 0).
|
||||||
|
count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns total number of all completion times for all challenges in given world.
|
||||||
|
* @param user User which total completion count must be returned.
|
||||||
|
* @param world World where challenge count must be returned.
|
||||||
|
* @return Sum of completion count for all challenges by given user in given world.
|
||||||
|
*/
|
||||||
|
public long getTotalChallengeCompletionCount(User user, World world)
|
||||||
|
{
|
||||||
|
return this.getAllChallenges(world).stream().
|
||||||
|
mapToLong(challenge -> this.getChallengeTimes(user, world, challenge)).
|
||||||
|
sum();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// Section: Level related methods
|
// Section: Level related methods
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
@ -1962,4 +2001,43 @@ public class ChallengesManager
|
|||||||
this.levelDatabase.loadObjects().stream().anyMatch(
|
this.levelDatabase.loadObjects().stream().anyMatch(
|
||||||
level -> level.matchGameMode(gameMode));
|
level -> level.matchGameMode(gameMode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns number of levels in given world.
|
||||||
|
* @param world World where level count must be returned.
|
||||||
|
* @return Number of levels in given world.
|
||||||
|
*/
|
||||||
|
public int getLevelCount(World world)
|
||||||
|
{
|
||||||
|
return this.getLevels(world).size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns number of completed levels in given world.
|
||||||
|
* @param user User which completed level count must be returned.
|
||||||
|
* @param world World where level count must be returned.
|
||||||
|
* @return Number of completed levels by given user in given world.
|
||||||
|
*/
|
||||||
|
public long getCompletedLevelCount(User user, World world)
|
||||||
|
{
|
||||||
|
return this.getAllChallengeLevelStatus(user, world).stream().
|
||||||
|
filter(LevelStatus::isComplete).
|
||||||
|
count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns number of unlocked levels in given world.
|
||||||
|
* @param user User which unlocked level count must be returned.
|
||||||
|
* @param world World where level count must be returned.
|
||||||
|
* @return Number of unlocked levels by given user in given world.
|
||||||
|
*/
|
||||||
|
public long getUnlockedLevelCount(User user, World world)
|
||||||
|
{
|
||||||
|
return this.getAllChallengeLevelStatus(user, world).stream().
|
||||||
|
filter(LevelStatus::isUnlocked).
|
||||||
|
count();
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user