Guest User

Untitled

a guest
Mar 2nd, 2022
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.87 KB | None | 0 0
  1. package com.adrew.appoint;
  2.  
  3. import net.luckperms.api.LuckPerms;
  4.  
  5. import net.luckperms.api.model.user.User;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.command.Command;
  9. import org.bukkit.command.CommandExecutor;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.command.ConsoleCommandSender;
  12. import org.bukkit.configuration.ConfigurationSection;
  13. import org.bukkit.entity.Player;
  14.  
  15. import java.util.HashMap;
  16. import java.util.List;
  17.  
  18. public class Appoint implements CommandExecutor {
  19.  
  20.     private final LuckPerms luckPerms;
  21.     private final String prefix;
  22.     private final String noPermissionMsg;
  23.  
  24.     public Appoint(LuckPerms luckPerms) {
  25.         this.luckPerms = luckPerms;
  26.         this.prefix = CityRpAppoint.aPlugin().getConfig().getString("Prefix");
  27.         this.noPermissionMsg = CityRpAppoint.aPlugin().getConfig().getString("No Permission");
  28.     }
  29.  
  30.     List<String> appointPlayers = CityRpAppoint.aPlugin().getConfig().getStringList("Appoint Players");
  31.     public HashMap<Player, String> map = new HashMap<>();
  32.  
  33.  
  34.     @Override
  35.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  36.  
  37. // COMMAND ARGUMENTS | args[0] = sub command | args[1] = player target | args[2] = target rank
  38. // PRE CHECKS
  39.         if (!(sender instanceof Player)) {
  40.             sender.sendMessage("You must be a player to execute this command.");
  41.             return true;
  42.         }
  43.         Player player = (Player) sender;
  44.         User user = luckPerms.getPlayerAdapter(Player.class).getUser(player);
  45.  
  46.  
  47.         if (!sender.hasPermission("cityrp.appoint")) {
  48.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
  49.             return true;
  50.         }
  51.  
  52.         if (args.length < 1) {
  53.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint help &7to see correct command usage."));
  54.             return true;
  55.         }
  56.  
  57. // HELP COMMAND -- COMPLETE
  58. // /appoint help
  59.         if (args[0].equalsIgnoreCase("help")) {
  60.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
  61.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "                     &a&lAPPOINT HELP"));
  62.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
  63.             sender.sendMessage(" ");
  64.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint help &8- &7View this list of commands."));
  65.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint list &8- &7View a list of all the ranks you are allowed to appoint."));
  66.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint request &b<player> <rank> &8- &7Request to appoint a player to a rank."));
  67.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint accept &8- &7Accept a request to appoint you."));
  68.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint deny &8- &7Deny a request to appoint you."));
  69.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint fire &b<player> &8- &7Fire a player from their current rank."));
  70.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint demote &b<player> &8- &7Demote a player to the rank below them in the hierarchy."));
  71.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/quit &8- &7Quit your current job and return to Citizen."));
  72.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
  73.             return true;
  74.         }
  75.  
  76.  
  77. // APPOINT COMMAND -- COMPLETE
  78. // /appoint request <targetPlayer> <targetRank>
  79.         if (args[0].equalsIgnoreCase("request")) {
  80.             if (args.length >= 3) {
  81.                 for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
  82.                     ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
  83.                     String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
  84.                     List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
  85.  
  86.                     Player target = (Player) Bukkit.getPlayer(args[1]);
  87.                     String targetRank = args[2];
  88.  
  89.  
  90.                     if (!sender.hasPermission(permission)) {
  91.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can appoint!"));
  92.                         return true;
  93.                     }
  94.                     if (!(target == null)) {
  95.                         if (!(targetRank == null)) {
  96.                             if (list.contains(targetRank)) {
  97.                                 if (!(appointPlayers.contains(target.getName()))) {
  98.                                     appointPlayers.add(target.getName());
  99.                                     map.put(target.getPlayer(), targetRank);
  100.  
  101.  
  102.                                     sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You requested to appoint &e" + target.getName() + "&7 to &e" + targetRank + "&7."));
  103.                                     target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + sender.getName() + "&7 wants to appoint you to &e" + targetRank + "&7!"));
  104.                                     target.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Do &e/appoint accept " + targetRank + " &7to accept or &e/appoint deny &7to deny."));
  105.  
  106.                                     return true;
  107.                                 }
  108.                                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &e" + target.getName() + " &7already has a pending appoint request."));
  109.                                 return true;
  110.  
  111.                             }
  112.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + args[2] + " &7is not a rank you can appoint!"));
  113.                             return true;
  114.                         }
  115.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You must enter a target rank!"));
  116.                         return true;
  117.                     }
  118.                     sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + args[1] + " &7is not a real player or is not online."));
  119.                     return true;
  120.  
  121.                 }
  122.             }
  123.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint request <player> <rank>&7."));
  124.             return true;
  125.         }
  126.  
  127.  
  128. // LIST COMMAND -- COMPLETE
  129. // /appoint list
  130.         if (args[0].equalsIgnoreCase("list")) {
  131.             for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
  132.                 ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
  133.                 String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
  134.  
  135.                 if (sender.hasPermission(permission)) {
  136.  
  137.                     sender.sendMessage(" ");
  138.                     sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &eList of groups you may appoint as" + "&6 " + key + "&e:"));
  139.                     sender.sendMessage(" ");
  140.  
  141.                     List<String> rankList = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
  142.  
  143.                     for (int i = 0; i < rankList.size(); i++) {
  144.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e- &7" + rankList.get(i)));
  145.  
  146.                     }
  147.                     sender.sendMessage(" ");
  148.                     sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7----------------------------------------"));
  149.                     return true;
  150.                 }
  151.             }
  152.  
  153.         }
  154.  
  155.  
  156. // FIRE COMMAND -- COMPLETE
  157. // /appoint fire <targetPlayer>
  158.         if (args[0].equalsIgnoreCase("fire")) {
  159.             if (args.length >= 2) {
  160.                 Player target = (Player) Bukkit.getPlayer(args[1]);
  161.  
  162.                 if (target != null) {
  163.                     if (!(target instanceof Player)) {
  164.                         return true;
  165.                     }
  166.                     User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser(target);
  167.                     String targetRank = targetUser.getPrimaryGroup().toString();
  168.  
  169.                     for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
  170.                         String firedGroup = CityRpAppoint.aPlugin().getConfig().getString("Default Group");
  171.                         ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
  172.                         String consoleCommand1 = "lp user " + target.getName() + " parent switchprimarygroup " + firedGroup;
  173.                         String consoleCommand2 = "lp user " + target.getName() + " parent remove " + targetRank;
  174.  
  175.                         ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
  176.                         String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
  177.                         List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
  178.  
  179.                         if (!sender.hasPermission(permission)) {
  180.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can fire!"));
  181.                             return true;
  182.                         }
  183.                         if (!sender.hasPermission("cityrp.appoint.fire")) {
  184.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
  185.                             return true;
  186.                         }
  187.                         if (!(list.contains(targetRank))) {
  188.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &7You can not fire this player."));
  189.                             return true;
  190.                         }
  191.                         Bukkit.dispatchCommand(console, consoleCommand1);
  192.                         Bukkit.dispatchCommand(console, consoleCommand2);
  193.  
  194.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have fired &e" + target.getName() + "&7!"));
  195.                         target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have been fired by &e" + sender.getName() + "&7!"));
  196.                         return true;
  197.  
  198.                     }
  199.                 }
  200.                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &e" + target.getName() + " &7is not a real player or is not online!"));
  201.                 return true;
  202.             }
  203.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint fire &b<player>&7."));
  204.             return true;
  205.  
  206.         }
  207.  
  208.  
  209. // ACCEPT COMMAND -- COMPLETE
  210. // /appoint accept <rank>
  211.         if (args[0].equalsIgnoreCase("accept")) {
  212.             if (args.length >= 2) {
  213.                 if (map.containsValue(args[1])) {
  214.                     if (map.containsKey(((Player) sender).getPlayer())) {
  215.                         if (!(appointPlayers.contains(sender.getName()))) {
  216.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
  217.                             return true;
  218.                         }
  219.                         appointPlayers.remove(sender.getName());
  220.                         map.remove(((Player) sender).getPlayer(), args[1]);
  221.  
  222.                         User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser((Player) sender);
  223.                         String origRank = targetUser.getPrimaryGroup().toString();
  224.  
  225.                         ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
  226.                         String consoleCommand1 = "lp user " + sender.getName() + " parent remove " + origRank;
  227.                         String consoleCommand2 = "lp user " + sender.getName() + " parent switchprimarygroup " + args[1];
  228.                         Bukkit.dispatchCommand(console, consoleCommand2);
  229.                         Bukkit.dispatchCommand(console, consoleCommand1);
  230.  
  231.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7 You have accepted your appointment to &e " + args[1] + "&7!"));
  232.                         return true;
  233.  
  234.                     }
  235.                     sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
  236.                     return true;
  237.  
  238.                 }
  239.                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You have no appoint request for" + "&e " + args[1]));
  240.                 return true;
  241.  
  242.             }
  243.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint accept <rank>&7."));
  244.             return true;
  245.  
  246.         }
  247.  
  248.  
  249. // DENY COMMAND -- COMPLETE
  250. // /appoint deny
  251.         if (args[0].equalsIgnoreCase("deny")) {
  252.             if (!(appointPlayers.contains(sender.getName()))) {
  253.                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
  254.                 return true;
  255.             }
  256.             appointPlayers.remove(sender.getName());
  257.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7 You denied your pending appoint request."));
  258.             return true;
  259.         }
  260.  
  261.  
  262. // DEMOTE COMMAND -- COMPLETE
  263. // /appoint demote <targetPlayer>
  264.         if (args[0].equalsIgnoreCase("demote")) {
  265.             if (args.length >= 2) {
  266.                 Player target = (Player) Bukkit.getPlayer(args[1]);
  267.  
  268.                 if (target != null) {
  269.                     if (!(target instanceof Player)) {
  270.                         return true;
  271.                     }
  272.  
  273.                     User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser(target);
  274.                     String targetRank = targetUser.getPrimaryGroup().toString();
  275.  
  276.                     for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
  277.                         String firedGroup = CityRpAppoint.aPlugin().getConfig().getString("Default Group");
  278.  
  279.                         ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
  280.                         String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
  281.                         String lpTrack = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".track");
  282.                         List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
  283.  
  284.                         ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
  285.                         String consoleCommand1 = "lp user " + target.getName() + " demote " + lpTrack;
  286.  
  287.                         if (!sender.hasPermission(permission)) {
  288.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can demote!"));
  289.                             return true;
  290.                         }
  291.                         if (!sender.hasPermission("cityrp.appoint.demote")) {
  292.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
  293.                             return true;
  294.                         }
  295.                         if (!(list.contains(targetRank))) {
  296.                             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &7You can not demote this player."));
  297.                             return true;
  298.                         }
  299.                         Bukkit.dispatchCommand(console, consoleCommand1);
  300.  
  301.                         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have demoted &e" + target.getName() + "&7!"));
  302.                         target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have been demoted by &e" + sender.getName() + "&7!"));
  303.                         return true;
  304.  
  305.                     }
  306.                 }
  307.                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &e" + target.getName() + " &7is not a real player or is not online!"));
  308.                 return true;
  309.             }
  310.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint demote &b<player>&7."));
  311.             return true;
  312.         }
  313.  
  314. // INCORRECT USAGE
  315.         sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint help &7to see correct command usage."));
  316.         return true;
  317.     }
  318.  
  319.  
  320. }
  321.  
Advertisement
Add Comment
Please, Sign In to add comment