Command to lock/unlock a spawnpoint.

This commit is contained in:
Ka0rX 2023-07-19 21:17:05 +01:00
parent bd293f76b6
commit 092ff0dd71
2 changed files with 83 additions and 1 deletions

View File

@ -58,7 +58,8 @@ public class CommandVerbose {
SKILL_TREE_POINTS,
RESET,
RESOURCE,
WAYPOINT;
WAYPOINT,
SPAWN_POINT;
}
private enum VerboseValue {

View File

@ -0,0 +1,81 @@
package net.Indyuce.mmocore.command.rpg.admin;
import io.lumine.mythic.lib.command.api.CommandTreeNode;
import io.lumine.mythic.lib.command.api.Parameter;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.skill.binding.SkillSlot;
import net.Indyuce.mmocore.command.api.CommandVerbose;
import net.Indyuce.mmocore.skill.ClassSkill;
import net.Indyuce.mmocore.spawnpoint.SpawnPoint;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SpawnPointCommandTreeNode extends CommandTreeNode {
public SpawnPointCommandTreeNode(CommandTreeNode parent) {
super(parent, "slot");
addChild(new LockSpawnPointCommand(this, "lock", true));
addChild(new LockSpawnPointCommand(this, "unlock", false));
}
public class LockSpawnPointCommand extends CommandTreeNode {
private final boolean lock;
public LockSpawnPointCommand(CommandTreeNode parent, String id, boolean lock) {
super(parent, id);
this.lock = lock;
addParameter(Parameter.PLAYER);
addParameter(new Parameter("spawnpoint",
(explorer, list) -> MMOCore.plugin.spawnPointManager.getAll().stream().map(spawnPoint -> spawnPoint.getId()).forEach(list::add)));
}
@Override
public CommandResult execute(CommandSender sender, String[] args) {
if (args.length < 5)
return CommandResult.THROW_USAGE;
Player player = Bukkit.getPlayer(args[3]);
if (player == null) {
sender.sendMessage(ChatColor.RED + "Could not find the player called " + args[3] + ".");
return CommandResult.FAILURE;
}
PlayerData playerData = PlayerData.get(player);
if (!MMOCore.plugin.spawnPointManager.isSpawnPoint(args[4])) {
sender.sendMessage(ChatColor.RED + "Could not find the spawnpoint called " + args[4] + ".");
return CommandResult.FAILURE;
}
SpawnPoint spawnPoint = MMOCore.plugin.spawnPointManager.getSpawnPoint(args[4]);
if (lock) {
if (!playerData.hasUnlocked(spawnPoint)) {
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.RED + "The spawn point " +
spawnPoint.getId() + " is already locked for " + player.getName());
return CommandResult.SUCCESS;
}
playerData.lock(spawnPoint);
} else {
if (playerData.hasUnlocked(spawnPoint)) {
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.RED + "The spawn point " +
spawnPoint.getId() + " is already unlocked for " + player.getName());
return CommandResult.SUCCESS;
}
playerData.unlock(spawnPoint);
}
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SPAWN_POINT, ChatColor.GOLD + "The spawn point " +
spawnPoint.getId() + " is now " + (lock ? "locked" : "unlocked for " + player.getName()));
return CommandResult.SUCCESS;
}
}
@Override
public CommandResult execute(CommandSender sender, String[] args) {
return CommandResult.THROW_USAGE;
}
}