Fixed some issues, added a way to manage players groups with in game commands
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
package me.monster.ranks.command.permSubcommands;
|
||||
|
||||
import me.monster.colors.ColorUtils;
|
||||
import me.monster.commands.SubCommand;
|
||||
import me.monster.ranks.database.DbManager;
|
||||
import me.monster.ranks.database.models.Groups;
|
||||
import me.monster.ranks.utils.PlayerUpdater;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
public class UserSub extends SubCommand {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "user";
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getAliases() {
|
||||
return List.of("user", "player");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Manage Player Groups";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "&c/perm user <user>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(CommandSender sender, String[] args) {
|
||||
if (sender.hasPermission("ranks.manage.user")) {
|
||||
if (args.length == 1) {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes(getSyntax()));
|
||||
} else if (args.length == 2) {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes("&c/perm user " + args[1] + " <add/remove/set/update> [group]"));
|
||||
} else {
|
||||
try {
|
||||
manageSystem(List.of(args), sender);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes("&cYou do not have permission to use this command."));
|
||||
}
|
||||
}
|
||||
|
||||
public void manageSystem(List<String> args, CommandSender sender) throws SQLException {
|
||||
Player target = Bukkit.getPlayer(args.get(1));
|
||||
assert target != null;
|
||||
target.sendMessage(String.valueOf(args));
|
||||
String uuid = target.getUniqueId().toString();
|
||||
if (args.size() >= 3) {
|
||||
if (args.get(2).equalsIgnoreCase("add")) {
|
||||
if (getGroupNames().contains(args.get(3))) {
|
||||
DbManager.addPlayerGroup(new me.monster.ranks.database.models.User(uuid, args.get(3), 0, null));
|
||||
new PlayerUpdater(target);
|
||||
} else if (!getGroupNames().contains(args.get(3))) {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes("&cGroup does not exist."));
|
||||
}
|
||||
} else if (args.get(2).equalsIgnoreCase("remove")) {
|
||||
if (getGroupNames().contains(args.get(3))) {
|
||||
DbManager.deletePlayerGroups(new me.monster.ranks.database.models.User(uuid, args.get(3), 0, null));
|
||||
new PlayerUpdater(target);
|
||||
} else {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes("&cGroup does not exist."));
|
||||
}
|
||||
} else if (args.get(2).equalsIgnoreCase("set")) {
|
||||
if (getGroupNames().contains(args.get(3))) {
|
||||
DbManager.updatePlayerGroups(new me.monster.ranks.database.models.User(uuid, args.get(3), 0, null));
|
||||
new PlayerUpdater(target);
|
||||
} else {
|
||||
sender.sendMessage(ColorUtils.translateColorCodes("&cGroup does not exist."));
|
||||
}
|
||||
} else if (args.get(2).equalsIgnoreCase("update")) {
|
||||
new PlayerUpdater(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<String> getGroupNames() {
|
||||
try {
|
||||
return DbManager.getAllGroups().stream().map(Groups::getGroupName).toList();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSubcommandArguments(Player player, String[] strings){
|
||||
if (player.hasPermission("ranks.manage.user")){
|
||||
if (strings.length == 2) {
|
||||
return List.of(Bukkit.getServer().getOnlinePlayers().stream().map(Player::getName).toArray(String[]::new));
|
||||
} else if (strings.length == 3) {
|
||||
return List.of("add", "remove", "set", "update");
|
||||
} else if (strings.length == 4) {
|
||||
try {
|
||||
return List.of(DbManager.getAllGroups().stream().map(Groups::getGroupName).toArray(String[]::new));
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user