2018-12-30 14:31:26 +01:00
|
|
|
package world.bentobox.challenges.commands;
|
|
|
|
|
|
|
|
import java.util.List;
|
2019-05-19 12:29:02 +02:00
|
|
|
import java.util.Optional;
|
2018-12-30 14:31:26 +01:00
|
|
|
|
2019-05-19 12:29:02 +02:00
|
|
|
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
2018-12-30 14:31:26 +01:00
|
|
|
import world.bentobox.challenges.ChallengesAddon;
|
|
|
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
|
|
|
import world.bentobox.bentobox.api.user.User;
|
2019-01-23 16:30:30 +01:00
|
|
|
import world.bentobox.challenges.panel.user.ChallengesGUI;
|
|
|
|
|
2018-12-30 14:31:26 +01:00
|
|
|
|
2019-02-18 00:29:42 +01:00
|
|
|
public class ChallengesCommand extends CompositeCommand
|
|
|
|
{
|
2018-12-30 14:31:26 +01:00
|
|
|
public static final String CHALLENGE_COMMAND = "challenges";
|
|
|
|
|
2019-02-18 00:29:42 +01:00
|
|
|
|
|
|
|
public ChallengesCommand(ChallengesAddon addon, CompositeCommand cmd)
|
|
|
|
{
|
2018-12-30 14:31:26 +01:00
|
|
|
super(addon, cmd, CHALLENGE_COMMAND);
|
|
|
|
}
|
|
|
|
|
2019-02-18 00:29:42 +01:00
|
|
|
|
2019-05-19 12:29:02 +02:00
|
|
|
/**
|
|
|
|
* {@inheritDoc}
|
|
|
|
*/
|
2018-12-30 14:31:26 +01:00
|
|
|
@Override
|
2019-05-19 12:29:02 +02:00
|
|
|
public boolean canExecute(User user, String label, List<String> args)
|
2019-02-18 00:29:42 +01:00
|
|
|
{
|
2019-05-19 12:29:02 +02:00
|
|
|
Optional<GameModeAddon> optionalAddon = this.getAddon().getPlugin().getIWM().getAddon(this.getWorld());
|
|
|
|
|
|
|
|
if (!optionalAddon.isPresent())
|
|
|
|
{
|
|
|
|
// Not a GameMode world.
|
|
|
|
user.sendMessage("general.errors.wrong-world");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!((ChallengesAddon) this.getAddon()).getChallengesManager().hasAnyChallengeData(this.getWorld()))
|
2019-02-18 00:29:42 +01:00
|
|
|
{
|
2019-05-19 12:29:02 +02:00
|
|
|
// Do not open gui if there is no challenges.
|
|
|
|
|
|
|
|
this.getAddon().getLogger().severe("There are no challenges set up in " + this.getWorld() + "!");
|
|
|
|
|
|
|
|
// Show admin better explanation.
|
2019-08-01 08:21:52 +02:00
|
|
|
if (user.isOp() || user.hasPermission(this.getPermissionPrefix() + "admin.challenges"))
|
2019-02-18 00:29:42 +01:00
|
|
|
{
|
2019-05-19 12:29:02 +02:00
|
|
|
String topLabel = optionalAddon.get().getAdminCommand().orElseGet(this::getParent).getTopLabel();
|
2019-06-23 11:42:01 +02:00
|
|
|
user.sendMessage("challenges.errors.no-challenges-admin", "[command]", topLabel + " challenges");
|
2019-02-18 00:29:42 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-05-19 12:29:02 +02:00
|
|
|
user.sendMessage("challenges.errors.no-challenges");
|
2019-02-18 00:29:42 +01:00
|
|
|
}
|
2019-05-19 12:29:02 +02:00
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.getPlugin().getIslands().getIsland(this.getWorld(), user.getUniqueId()) == null)
|
|
|
|
{
|
|
|
|
// Do not open gui if there is no island for this player.
|
|
|
|
user.sendMessage("general.errors.no-island");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean execute(User user, String label, List<String> args)
|
|
|
|
{
|
|
|
|
// Open up the challenges GUI
|
|
|
|
if (user.isPlayer())
|
|
|
|
{
|
|
|
|
new ChallengesGUI((ChallengesAddon) this.getAddon(),
|
2019-08-01 08:21:52 +02:00
|
|
|
this.getWorld(),
|
|
|
|
user,
|
|
|
|
this.getTopLabel(),
|
|
|
|
this.getPermissionPrefix()).build();
|
2019-05-19 12:29:02 +02:00
|
|
|
return true;
|
2018-12-30 14:31:26 +01:00
|
|
|
}
|
|
|
|
// Show help
|
|
|
|
showHelp(this, user);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2019-02-18 00:29:42 +01:00
|
|
|
|
2018-12-30 14:31:26 +01:00
|
|
|
@Override
|
2019-02-18 00:29:42 +01:00
|
|
|
public void setup()
|
|
|
|
{
|
2018-12-30 14:31:26 +01:00
|
|
|
this.setPermission(CHALLENGE_COMMAND);
|
2019-05-01 23:31:36 +02:00
|
|
|
this.setParametersHelp("challenges.commands.user.main.parameters");
|
|
|
|
this.setDescription("challenges.commands.user.main.description");
|
|
|
|
|
|
|
|
new CompleteChallengeCommand(this.getAddon(), this);
|
2019-05-19 12:29:02 +02:00
|
|
|
this.setOnlyPlayer(true);
|
2018-12-30 14:31:26 +01:00
|
|
|
}
|
|
|
|
}
|