Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.adrew.appoint;
- import net.luckperms.api.LuckPerms;
- import net.luckperms.api.model.user.User;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.command.ConsoleCommandSender;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.entity.Player;
- import java.util.HashMap;
- import java.util.List;
- public class Appoint implements CommandExecutor {
- private final LuckPerms luckPerms;
- private final String prefix;
- private final String noPermissionMsg;
- public Appoint(LuckPerms luckPerms) {
- this.luckPerms = luckPerms;
- this.prefix = CityRpAppoint.aPlugin().getConfig().getString("Prefix");
- this.noPermissionMsg = CityRpAppoint.aPlugin().getConfig().getString("No Permission");
- }
- List<String> appointPlayers = CityRpAppoint.aPlugin().getConfig().getStringList("Appoint Players");
- public HashMap<Player, String> map = new HashMap<>();
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- // COMMAND ARGUMENTS | args[0] = sub command | args[1] = player target | args[2] = target rank
- // PRE CHECKS
- if (!(sender instanceof Player)) {
- sender.sendMessage("You must be a player to execute this command.");
- return true;
- }
- Player player = (Player) sender;
- User user = luckPerms.getPlayerAdapter(Player.class).getUser(player);
- if (!sender.hasPermission("cityrp.appoint")) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
- return true;
- }
- if (args.length < 1) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint help &7to see correct command usage."));
- return true;
- }
- // HELP COMMAND -- COMPLETE
- // /appoint help
- if (args[0].equalsIgnoreCase("help")) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', " &a&lAPPOINT HELP"));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
- sender.sendMessage(" ");
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint help &8- &7View this list of commands."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint list &8- &7View a list of all the ranks you are allowed to appoint."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint request &b<player> <rank> &8- &7Request to appoint a player to a rank."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint accept &8- &7Accept a request to appoint you."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint deny &8- &7Deny a request to appoint you."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint fire &b<player> &8- &7Fire a player from their current rank."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/appoint demote &b<player> &8- &7Demote a player to the rank below them in the hierarchy."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e/quit &8- &7Quit your current job and return to Citizen."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l===================================="));
- return true;
- }
- // APPOINT COMMAND -- COMPLETE
- // /appoint request <targetPlayer> <targetRank>
- if (args[0].equalsIgnoreCase("request")) {
- if (args.length >= 3) {
- for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
- ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
- String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
- List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
- Player target = (Player) Bukkit.getPlayer(args[1]);
- String targetRank = args[2];
- if (!sender.hasPermission(permission)) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can appoint!"));
- return true;
- }
- if (!(target == null)) {
- if (!(targetRank == null)) {
- if (list.contains(targetRank)) {
- if (!(appointPlayers.contains(target.getName()))) {
- appointPlayers.add(target.getName());
- map.put(target.getPlayer(), targetRank);
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You requested to appoint &e" + target.getName() + "&7 to &e" + targetRank + "&7."));
- target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + sender.getName() + "&7 wants to appoint you to &e" + targetRank + "&7!"));
- target.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Do &e/appoint accept " + targetRank + " &7to accept or &e/appoint deny &7to deny."));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &e" + target.getName() + " &7already has a pending appoint request."));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + args[2] + " &7is not a rank you can appoint!"));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You must enter a target rank!"));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &e" + args[1] + " &7is not a real player or is not online."));
- return true;
- }
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint request <player> <rank>&7."));
- return true;
- }
- // LIST COMMAND -- COMPLETE
- // /appoint list
- if (args[0].equalsIgnoreCase("list")) {
- for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
- ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
- String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
- if (sender.hasPermission(permission)) {
- sender.sendMessage(" ");
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &eList of groups you may appoint as" + "&6 " + key + "&e:"));
- sender.sendMessage(" ");
- List<String> rankList = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
- for (int i = 0; i < rankList.size(); i++) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e- &7" + rankList.get(i)));
- }
- sender.sendMessage(" ");
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7----------------------------------------"));
- return true;
- }
- }
- }
- // FIRE COMMAND -- COMPLETE
- // /appoint fire <targetPlayer>
- if (args[0].equalsIgnoreCase("fire")) {
- if (args.length >= 2) {
- Player target = (Player) Bukkit.getPlayer(args[1]);
- if (target != null) {
- if (!(target instanceof Player)) {
- return true;
- }
- User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser(target);
- String targetRank = targetUser.getPrimaryGroup().toString();
- for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
- String firedGroup = CityRpAppoint.aPlugin().getConfig().getString("Default Group");
- ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
- String consoleCommand1 = "lp user " + target.getName() + " parent switchprimarygroup " + firedGroup;
- String consoleCommand2 = "lp user " + target.getName() + " parent remove " + targetRank;
- ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
- String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
- List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
- if (!sender.hasPermission(permission)) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can fire!"));
- return true;
- }
- if (!sender.hasPermission("cityrp.appoint.fire")) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
- return true;
- }
- if (!(list.contains(targetRank))) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &7You can not fire this player."));
- return true;
- }
- Bukkit.dispatchCommand(console, consoleCommand1);
- Bukkit.dispatchCommand(console, consoleCommand2);
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have fired &e" + target.getName() + "&7!"));
- target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have been fired by &e" + sender.getName() + "&7!"));
- return true;
- }
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &e" + target.getName() + " &7is not a real player or is not online!"));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint fire &b<player>&7."));
- return true;
- }
- // ACCEPT COMMAND -- COMPLETE
- // /appoint accept <rank>
- if (args[0].equalsIgnoreCase("accept")) {
- if (args.length >= 2) {
- if (map.containsValue(args[1])) {
- if (map.containsKey(((Player) sender).getPlayer())) {
- if (!(appointPlayers.contains(sender.getName()))) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
- return true;
- }
- appointPlayers.remove(sender.getName());
- map.remove(((Player) sender).getPlayer(), args[1]);
- User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser((Player) sender);
- String origRank = targetUser.getPrimaryGroup().toString();
- ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
- String consoleCommand1 = "lp user " + sender.getName() + " parent remove " + origRank;
- String consoleCommand2 = "lp user " + sender.getName() + " parent switchprimarygroup " + args[1];
- Bukkit.dispatchCommand(console, consoleCommand2);
- Bukkit.dispatchCommand(console, consoleCommand1);
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7 You have accepted your appointment to &e " + args[1] + "&7!"));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You have no appoint request for" + "&e " + args[1]));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint accept <rank>&7."));
- return true;
- }
- // DENY COMMAND -- COMPLETE
- // /appoint deny
- if (args[0].equalsIgnoreCase("deny")) {
- if (!(appointPlayers.contains(sender.getName()))) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Error! &7You do not have any pending appoint requests."));
- return true;
- }
- appointPlayers.remove(sender.getName());
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7 You denied your pending appoint request."));
- return true;
- }
- // DEMOTE COMMAND -- COMPLETE
- // /appoint demote <targetPlayer>
- if (args[0].equalsIgnoreCase("demote")) {
- if (args.length >= 2) {
- Player target = (Player) Bukkit.getPlayer(args[1]);
- if (target != null) {
- if (!(target instanceof Player)) {
- return true;
- }
- User targetUser = luckPerms.getPlayerAdapter(Player.class).getUser(target);
- String targetRank = targetUser.getPrimaryGroup().toString();
- for (String key : CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups").getKeys(false)) {
- String firedGroup = CityRpAppoint.aPlugin().getConfig().getString("Default Group");
- ConfigurationSection configSection = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key);
- String permission = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".permission");
- String lpTrack = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getString(".track");
- List<String> list = CityRpAppoint.aPlugin().getConfig().getConfigurationSection("Groups." + key).getStringList(".groupNames");
- ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
- String consoleCommand1 = "lp user " + target.getName() + " demote " + lpTrack;
- if (!sender.hasPermission(permission)) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7There are no ranks you can demote!"));
- return true;
- }
- if (!sender.hasPermission("cityrp.appoint.demote")) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " " + noPermissionMsg));
- return true;
- }
- if (!(list.contains(targetRank))) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &7You can not demote this player."));
- return true;
- }
- Bukkit.dispatchCommand(console, consoleCommand1);
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have demoted &e" + target.getName() + "&7!"));
- target.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &7You have been demoted by &e" + sender.getName() + "&7!"));
- return true;
- }
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + " &cError! &e" + target.getName() + " &7is not a real player or is not online!"));
- return true;
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint demote &b<player>&7."));
- return true;
- }
- // INCORRECT USAGE
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&c Incorrect Usage! &7Use &e/appoint help &7to see correct command usage."));
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment