Better admin management

This commit is contained in:
Anuken
2020-02-11 13:06:52 -05:00
parent d99f9740e8
commit ad7c72015c
3 changed files with 23 additions and 21 deletions

View File

@ -660,37 +660,38 @@ public class ServerControl implements ApplicationListener{
}
});
handler.register("admin", "<username...>", "Make an online user admin", arg -> {
handler.register("admin", "<add/remove> <username/ID...>", "Make an online user admin", arg -> {
if(!state.is(State.playing)){
err("Open the server first.");
return;
}
Player target = playerGroup.find(p -> p.name.equals(arg[0]));
if(target != null){
netServer.admins.adminPlayer(target.uuid, target.usid);
target.isAdmin = true;
info("Admin-ed player: {0}", arg[0]);
}else{
info("Nobody with that name could be found.");
}
});
handler.register("unadmin", "<username...>", "Removes admin status from an online player", arg -> {
if(!state.is(State.playing)){
err("Open the server first.");
if(!(arg[0].equals("add") || arg[0].equals("remove"))){
err("Second parameter must be either 'add' or 'remove'.");
return;
}
Player target = playerGroup.find(p -> p.name.equals(arg[0]));
boolean add = arg[0].equals("add");
PlayerInfo target;
Player playert = playerGroup.find(p -> p.name.equals(arg[1]));
if(playert != null){
target = playert.getInfo();
}else{
target = netServer.admins.getInfoOptional(arg[1]);
playert = playerGroup.find(p -> p.getInfo() == target);
}
if(target != null){
netServer.admins.unAdminPlayer(target.uuid);
target.isAdmin = false;
info("Un-admin-ed player: {0}", arg[0]);
if(add){
netServer.admins.adminPlayer(target.id, target.adminUsid);
}else{
netServer.admins.unAdminPlayer(target.id);
}
if(playert != null) playert.isAdmin = add;
info("Changed admin status of player: &ly{0}", target.lastName);
}else{
info("Nobody with that name could be found.");
err("Nobody with that name or ID could be found. If adding an admin by name, make sure they're online; otherwise, use their UUID.");
}
});