diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/quest/FinishCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/FinishCommandTreeNode.java new file mode 100644 index 00000000..f44ed586 --- /dev/null +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/FinishCommandTreeNode.java @@ -0,0 +1,45 @@ +package net.Indyuce.mmocore.command.rpg.quest; + +import io.lumine.mythic.lib.commands.mmolib.api.CommandTreeNode; +import io.lumine.mythic.lib.commands.mmolib.api.Parameter; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.api.quest.PlayerQuests; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class FinishCommandTreeNode extends CommandTreeNode { + public FinishCommandTreeNode(CommandTreeNode parent) { + super(parent, "finish"); + + addParameter(Parameter.PLAYER); + } + + @Override + public CommandResult execute(CommandSender sender, String[] args) { + if (args.length < 3) + return CommandResult.THROW_USAGE; + + Player player = Bukkit.getPlayer(args[2]); + if (player == null) { + sender.sendMessage(ChatColor.RED + "Could not find player called " + args[2] + "."); + return CommandResult.FAILURE; + } + + PlayerQuests quests = PlayerData.get(player).getQuestData(); + if (!quests.hasCurrent()) { + if (sender instanceof Player) + sender.sendMessage(ChatColor.RED + player.getName() + " has no ongoing quest."); + return CommandResult.SUCCESS; + } + + // Complete all objectives + while (quests.hasCurrent()) + quests.getCurrent().completeObjective(); + + if (sender instanceof Player) + sender.sendMessage(ChatColor.YELLOW + player.getName() + " no longer has any ongoing quest."); + return CommandResult.SUCCESS; + } +} diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/quest/QuestCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/QuestCommandTreeNode.java index af309db8..4a09c09c 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/quest/QuestCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/QuestCommandTreeNode.java @@ -11,6 +11,7 @@ public class QuestCommandTreeNode extends CommandTreeNode { addChild(new StartCommandTreeNode(this)); addChild(new CancelCommandTreeNode(this)); + addChild(new FinishCommandTreeNode(this)); } @Override