diff --git a/src/main/java/dev/plex/command/impl/UnfreezeCMD.java b/src/main/java/dev/plex/command/impl/UnfreezeCMD.java new file mode 100644 index 0000000..a659e0f --- /dev/null +++ b/src/main/java/dev/plex/command/impl/UnfreezeCMD.java @@ -0,0 +1,46 @@ +package dev.plex.command.impl; + +import com.google.common.collect.ImmutableList; +import dev.plex.cache.PlayerCache; +import dev.plex.command.PlexCommand; +import dev.plex.command.annotation.CommandParameters; +import dev.plex.command.annotation.CommandPermissions; +import dev.plex.command.exception.CommandArgumentException; +import dev.plex.command.exception.CommandFailException; +import dev.plex.player.PunishedPlayer; +import dev.plex.rank.enums.Rank; +import dev.plex.util.PlexUtils; +import java.util.List; +import net.kyori.adventure.text.Component; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +@CommandPermissions(level = Rank.ADMIN, permission = "plex.unfreeze") +@CommandParameters(name = "unfreeze", description = "Unfreeze a player", usage = "/ ") +public class UnfreezeCMD extends PlexCommand +{ + @Override + protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args) + { + if (args.length != 1) + { + throw new CommandArgumentException(); + } + Player player = getNonNullPlayer(args[0]); + PunishedPlayer punishedPlayer = PlayerCache.getPunishedPlayer(player.getUniqueId()); + if (!punishedPlayer.isFrozen()) + { + throw new CommandFailException(PlexUtils.tl("playerNotFrozen")); + } + punishedPlayer.setFrozen(false); + return tl("unfrozePlayer", sender.getName(), player.getName()); + } + + @Override + public @NotNull List tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException + { + return args.length == 1 && isAdmin(sender) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + } +}