Skip to content

Commit

Permalink
Update Main addon class.
Browse files Browse the repository at this point in the history
Move vault and level detection after everything is loaded.
Update command names.
  • Loading branch information
BONNe committed Sep 19, 2021
1 parent 4826b5f commit 5da823c
Showing 1 changed file with 51 additions and 120 deletions.
171 changes: 51 additions & 120 deletions src/main/java/world/bentobox/challenges/ChallengesAddon.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package world.bentobox.challenges;


import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.bukkit.Bukkit;
import org.bukkit.Material;
Expand All @@ -17,10 +15,10 @@
import world.bentobox.bentobox.database.DatabaseSetup.DatabaseType;
import world.bentobox.bentobox.hooks.VaultHook;
import world.bentobox.bentobox.managers.RanksManager;
import world.bentobox.challenges.commands.ChallengesCommand;
import world.bentobox.challenges.commands.ChallengesUserCommand;
import world.bentobox.challenges.commands.admin.Challenges;
import world.bentobox.challenges.commands.ChallengesPlayerCommand;
import world.bentobox.challenges.commands.ChallengesGlobalPlayerCommand;
import world.bentobox.challenges.commands.admin.ChallengesAdminCommand;
import world.bentobox.challenges.commands.admin.ChallengesGlobalAdminCommand;
import world.bentobox.challenges.config.Settings;
import world.bentobox.challenges.database.object.ChallengeLevel;
import world.bentobox.challenges.handlers.ChallengeDataRequestHandler;
Expand Down Expand Up @@ -159,27 +157,18 @@ public void onEnable() {
if (!this.settings.getDisabledGameModes().contains(
gameModeAddon.getDescription().getName()))
{
if (gameModeAddon.getPlayerCommand().isPresent())
{
new ChallengesCommand(this, gameModeAddon.getPlayerCommand().get());
this.hooked = true;
gameModeAddon.getPlayerCommand().ifPresent(command ->
new ChallengesPlayerCommand(this, command));
gameModeAddon.getAdminCommand().ifPresent(command ->
new ChallengesAdminCommand(this, command));

hookedGameModes.add(gameModeAddon);
}

if (gameModeAddon.getAdminCommand().isPresent())
{
new Challenges(this, gameModeAddon.getAdminCommand().get());
this.hooked = true;
}
this.hooked = true;
hookedGameModes.add(gameModeAddon);

CHALLENGES_WORLD_PROTECTION.addGameModeAddon(gameModeAddon);
CHALLENGES_ISLAND_PROTECTION.addGameModeAddon(gameModeAddon);

this.registerPlaceholders(gameModeAddon);

// TODO: this is old placeholders. Remove when backward compatibility ends.
this.registerPlaceholdersOld(gameModeAddon);
}
});

Expand All @@ -189,41 +178,14 @@ public void onEnable() {

if (this.settings.isUseCommonGUI())
{
new ChallengesUserCommand(this,
this.settings.getUserCommand(),
new ChallengesGlobalPlayerCommand(this,
this.settings.getGlobalUserCommand(),
hookedGameModes);
new ChallengesAdminCommand(this,
this.settings.getAdminCommand(),
new ChallengesGlobalAdminCommand(this,
this.settings.getGlobalAdminCommand(),
hookedGameModes);
}

// Try to find Level addon and if it does not exist, display a warning

Optional<Addon> level = this.getAddonByName("Level");

if (!level.isPresent())
{
this.logWarning("Level add-on not found so level challenges will not work!");
this.levelAddon = null;
}
else
{
this.levelProvided = true;
this.levelAddon = (Level) level.get();
}

Optional<VaultHook> vault = this.getPlugin().getVault();

if (!vault.isPresent() || !vault.get().hook())
{
this.vaultHook = null;
this.logWarning("Vault plugin not found. Economy will not work!");
}
else
{
this.vaultHook = vault.get();
}

// Register the reset listener
this.registerListener(new ResetListener(this));
// Register the autosave listener.
Expand Down Expand Up @@ -258,6 +220,44 @@ public void onEnable() {
}


/**
* Process Level addon and Vault Hook when everything is loaded.
*/
@Override
public void allLoaded()
{
super.allLoaded();

// Try to find Level addon and if it does not exist, display a warning
this.getAddonByName("Level").ifPresentOrElse(addon -> {
this.levelAddon = (Level) addon;
this.levelProvided = true;
this.log("Challenges Addon hooked into Level addon.");
}, () -> {
this.levelAddon = null;
this.logWarning("Level add-on not found so level challenges will not work!");
});


// Try to find Vault Plugin and if it does not exist, display a warning
this.getPlugin().getVault().ifPresentOrElse(hook -> {
this.vaultHook = hook;

if (this.vaultHook.hook())
{
this.log("Challenges Addon hooked into Economy.");
}
else
{
this.logWarning("Challenges Addon could not hook into valid Economy.");
}
}, () -> {
this.vaultHook = null;
this.logWarning("Vault plugin not found. Economy will not work!");
});
}


/**
* {@inheritDoc}
*/
Expand Down Expand Up @@ -415,75 +415,6 @@ private void registerPlaceholders(GameModeAddon gameModeAddon)
}


/**
* This method registers placeholders into GameMode addon.
* @param gameModeAddon GameMode addon where placeholders must be hooked in.
* @since 0.8.1
* @deprecated remove after 0.9.0
*/
@Deprecated
private void registerPlaceholdersOld(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)));

// Latest challenge level name placeholder
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
gameMode + "_challenge_latest_level_name",
user -> {
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
return level != null ? level.getFriendlyName() : "";
});

// Latest challenge level id placeholder
this.getPlugin().getPlaceholdersManager().registerPlaceholder(this,
gameMode + "_challenge_latest_level_id",
user -> {
ChallengeLevel level = this.challengesManager.getLatestUnlockedLevel(user, world);
return level != null ? level.getUniqueId() : "";
});
}


// ---------------------------------------------------------------------
// Section: Getters
// ---------------------------------------------------------------------
Expand Down

0 comments on commit 5da823c

Please sign in to comment.