Skip to content

Commit

Permalink
Fixes ChallengesManager and Completer.
Browse files Browse the repository at this point in the history
  • Loading branch information
BONNe committed Sep 18, 2021
1 parent c8177ad commit edc6d1a
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,47 +60,47 @@ public class ChallengesManager
/**
* This config object stores structures for challenge objects.
*/
private Database<Challenge> challengeDatabase;
private final Database<Challenge> challengeDatabase;

/**
* This config object stores structures for challenge level objects.
*/
private Database<ChallengeLevel> levelDatabase;
private final Database<ChallengeLevel> levelDatabase;

/**
* This database allows to access player challenge data.
*/
private Database<ChallengesPlayerData> playersDatabase;
private final Database<ChallengesPlayerData> playersDatabase;

/**
* This is local cache that links challenge unique id with challenge object.
*/
private Map<String, Challenge> challengeCacheData;
private final Map<String, Challenge> challengeCacheData;

/**
* This is local cache that links level unique id with level object.
*/
private Map<String, ChallengeLevel> levelCacheData;
private final Map<String, ChallengeLevel> levelCacheData;

/**
* This is local cache that links UUID with corresponding player challenge data.
*/
private Map<String, ChallengesPlayerData> playerCacheData;
private final Map<String, ChallengesPlayerData> playerCacheData;

/**
* This variable allows to access ChallengesAddon.
*/
private ChallengesAddon addon;
private final ChallengesAddon addon;

/**
* This variable allows to access ChallengesAddon settings.
*/
private Settings settings;
private final Settings settings;

/**
* Island world manager allows to detect which world refferes to which gamemode addon.
*/
private IslandWorldManager islandWorldManager;
private final IslandWorldManager islandWorldManager;


// ---------------------------------------------------------------------
Expand Down Expand Up @@ -249,7 +249,6 @@ public void reload()
* Load challenge silently. Used when loading.
*
* @param challenge Challenge that must be loaded.
* @return true if successful
*/
private void loadChallenge(@NonNull Challenge challenge)
{
Expand Down Expand Up @@ -291,7 +290,9 @@ public boolean loadChallenge(@Nullable Challenge challenge,
}

this.addon.logWarning("Data for challenge `" + challenge.getUniqueId() + "` is not valid. It could be NULL element in item-stack!");
return false;

// Load the challenge but set it as "undeployed"
challenge.setDeployed(false);
}

if (this.challengeCacheData.containsKey(challenge.getUniqueId()))
Expand Down Expand Up @@ -382,13 +383,11 @@ public boolean loadLevel(@Nullable ChallengeLevel level,
{
if (user != null)
{
user.sendMessage("challenges.errors.load-error",
VALUE, level.getFriendlyName());
user.sendMessage("challenges.errors.load-error", VALUE, level.getFriendlyName());
}
else
{
this.addon.logError(
"Challenge Level '" + level.getUniqueId() + "' is not valid and skipped");
this.addon.logError("Challenge Level '" + level.getUniqueId() + "' is not valid and skipped");
}

return false;
Expand Down Expand Up @@ -739,7 +738,6 @@ private boolean migrateLevels(World world)
/**
* This method collects all data from challenges database and migrates them.
*/
@SuppressWarnings("deprecation")
private boolean migrateChallenges(World world)
{
String addonName = Utils.getGameMode(world);
Expand Down Expand Up @@ -772,49 +770,6 @@ private boolean migrateChallenges(World world)
this.challengeDatabase.saveObjectAsync(challenge);
this.challengeCacheData.put(challenge.getUniqueId(), challenge);
}

// Migrate Requirements.
if (challenge.getRequirements() == null)
{
switch (challenge.getChallengeType())
{
case INVENTORY:
InventoryRequirements inventoryRequirements = new InventoryRequirements();
inventoryRequirements.setRequiredItems(challenge.getRequiredItems());
inventoryRequirements.setTakeItems(challenge.isTakeItems());

inventoryRequirements.setRequiredPermissions(challenge.getRequiredPermissions());
challenge.setRequirements(inventoryRequirements);
break;
case ISLAND:
IslandRequirements islandRequirements = new IslandRequirements();
islandRequirements.setRemoveBlocks(challenge.isRemoveBlocks());
islandRequirements.setRemoveEntities(challenge.isRemoveEntities());
islandRequirements.setRequiredBlocks(challenge.getRequiredBlocks());
islandRequirements.setRequiredEntities(challenge.getRequiredEntities());
islandRequirements.setSearchRadius(challenge.getSearchRadius());

islandRequirements.setRequiredPermissions(challenge.getRequiredPermissions());
challenge.setRequirements(islandRequirements);
break;
case OTHER:
OtherRequirements otherRequirements = new OtherRequirements();
otherRequirements.setRequiredExperience(challenge.getRequiredExperience());
otherRequirements.setRequiredIslandLevel(challenge.getRequiredIslandLevel());
otherRequirements.setRequiredMoney(challenge.getRequiredMoney());
otherRequirements.setTakeExperience(challenge.isTakeExperience());
otherRequirements.setTakeMoney(challenge.isTakeMoney());

otherRequirements.setRequiredPermissions(challenge.getRequiredPermissions());
challenge.setRequirements(otherRequirements);
break;
}

// This save should not involve any upgrades in other parts.

this.challengeDatabase.saveObjectAsync(challenge);
this.challengeCacheData.put(challenge.getUniqueId(), challenge);
}
}

return updated;
Expand Down Expand Up @@ -1834,12 +1789,13 @@ public boolean containsChallenge(String name)
* @return Challenge that is currently created.
*/
@Nullable
public Challenge createChallenge(String uniqueID, Challenge.ChallengeType type, Requirements requirements)
public Challenge createChallenge(String uniqueID, String name, Challenge.ChallengeType type, Requirements requirements)
{
if (!this.containsChallenge(uniqueID))
{
Challenge challenge = new Challenge();
challenge.setUniqueId(uniqueID);
challenge.setFriendlyName(name);
challenge.setRequirements(requirements);
challenge.setChallengeType(type);

Expand Down Expand Up @@ -2129,15 +2085,18 @@ public void removeChallengeFromLevel(Challenge challenge, ChallengeLevel level)
/**
* This method creates and returns new challenges level with given uniqueID.
* @param uniqueID - new ID for challenge level.
* @param name Name - name of the level.
* @param world World where level is created.
* @return ChallengeLevel that is currently created.
*/
@Nullable
public ChallengeLevel createLevel(String uniqueID, World world)
public ChallengeLevel createLevel(String uniqueID, String name, World world)
{
if (!this.containsLevel(uniqueID))
{
ChallengeLevel level = new ChallengeLevel();
level.setUniqueId(uniqueID);
level.setFriendlyName(name);
level.setWorld(world.getName());

this.saveLevel(level);
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/world/bentobox/challenges/tasks/TryToComplete.java
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ private void fullFillRequirements(ChallengeResult result)
{
switch (this.challenge.getChallengeType())
{
case ISLAND -> {
case ISLAND_TYPE -> {
IslandRequirements requirements = this.challenge.getRequirements();

if (result.meetsRequirements &&
Expand All @@ -469,7 +469,7 @@ private void fullFillRequirements(ChallengeResult result)
this.removeBlocks(result.blocks, result.getFactor());
}
}
case INVENTORY -> {
case INVENTORY_TYPE -> {
// If remove items, then remove them
if (this.getInventoryRequirements().isTakeItems())
{
Expand All @@ -492,7 +492,7 @@ private void fullFillRequirements(ChallengeResult result)
}
}
}
case OTHER -> {
case OTHER_TYPE -> {
OtherRequirements requirements = this.challenge.getRequirements();

if (this.addon.isEconomyProvided() && requirements.isTakeMoney())
Expand All @@ -508,7 +508,7 @@ private void fullFillRequirements(ChallengeResult result)
this.user.getPlayer().getTotalExperience() - requirements.getRequiredExperience());
}
}
case STATISTIC -> {
case STATISTIC_TYPE -> {
StatisticRequirements requirements = this.challenge.getRequirements();

if (requirements.isReduceStatistic())
Expand Down Expand Up @@ -720,19 +720,19 @@ else if (!this.checkPermissions())
this.user.sendMessage("general.errors.no-permission");
result = EMPTY_RESULT;
}
else if (type.equals(ChallengeType.INVENTORY))
else if (type.equals(ChallengeType.INVENTORY_TYPE))
{
result = this.checkInventory(this.getAvailableCompletionTimes(maxTimes));
}
else if (type.equals(ChallengeType.ISLAND))
else if (type.equals(ChallengeType.ISLAND_TYPE))
{
result = this.checkSurrounding(this.getAvailableCompletionTimes(maxTimes));
}
else if (type.equals(ChallengeType.OTHER))
else if (type.equals(ChallengeType.OTHER_TYPE))
{
result = this.checkOthers(this.getAvailableCompletionTimes(maxTimes));
}
else if (type.equals(ChallengeType.STATISTIC))
else if (type.equals(ChallengeType.STATISTIC_TYPE))
{
result = this.checkStatistic(this.getAvailableCompletionTimes(maxTimes));
}
Expand Down

0 comments on commit edc6d1a

Please sign in to comment.