NullValkyrie

Minecraft 1.19 multipurpose plugin for spigot servers with a lot of features where most modern servers have.
git clone https://codeberg.org/night0721/NullValkyrie
Log | Files | Refs | README | LICENSE

RankCommand.java (2772B)


      1 package me.night.nullvalkyrie.commands;
      2 
      3 import me.night.nullvalkyrie.database.RankDataManager;
      4 import me.night.nullvalkyrie.util.Rank;
      5 import org.bukkit.Bukkit;
      6 import org.bukkit.ChatColor;
      7 import org.bukkit.OfflinePlayer;
      8 import org.bukkit.command.CommandSender;
      9 import org.bukkit.entity.Player;
     10 import org.bukkit.util.StringUtil;
     11 
     12 import java.util.ArrayList;
     13 import java.util.List;
     14 
     15 public class RankCommand extends Command {
     16 
     17     public RankCommand() {
     18         super("rank", new String[]{}, "Set rank of players", "nv.rank.add");
     19     }
     20 
     21 
     22     @Override
     23     public void onCommand(CommandSender sender, String[] args) {
     24         if (sender instanceof Player player) {
     25             if (!player.isOp()) {
     26                 player.sendMessage(ChatColor.RED + "You must be server operator to use this command");
     27                 return;
     28             }
     29             if (args.length == 2) {
     30                 if (Bukkit.getOfflinePlayer(args[0]).hasPlayedBefore()) {
     31                     OfflinePlayer target = Bukkit.getOfflinePlayer(args[0]);
     32                     for (Rank rank : Rank.values()) {
     33                         if (rank.name().equalsIgnoreCase(args[1])) {
     34                             RankDataManager.setRank(target.getUniqueId(), rank);
     35                             player.sendMessage(ChatColor.GREEN + "You changed " + target.getName() + "'s rank to " + rank.getDisplay());
     36                             if (target.isOnline())
     37                                 target.getPlayer().sendMessage(ChatColor.GREEN + player.getName() + " set your rank to " + rank.getDisplay());
     38                             return;
     39                         }
     40                     }
     41                     player.sendMessage(ChatColor.RED + "Invalid Rank, please specify a valid rank, ROOKIE, SPECIAL, ADMIN, OWNER");
     42                 } else player.sendMessage("This player has never played in this server before!");
     43             } else player.sendMessage(ChatColor.RED + "Invalid parameter, use /rank <Player> <Rank>");
     44         }
     45     }
     46 
     47     @Override
     48     public List<String> onTabComplete(CommandSender sender, String[] args) {
     49         if (args.length == 1) {
     50             List<String> names = new ArrayList<>();
     51             for (Player player : Bukkit.getOnlinePlayers()) {
     52                 names.add(player.getName());
     53             }
     54             return StringUtil.copyPartialMatches(args[0], names, new ArrayList<>());
     55         } else if (args.length == 2) {
     56             List<String> roles = new ArrayList<>();
     57             for (Rank rank : Rank.values()) {
     58                 roles.add(rank.name());
     59             }
     60             return StringUtil.copyPartialMatches(args[1], roles, new ArrayList<>());
     61         }
     62         return new ArrayList<>();
     63     }
     64 }