icbm/src/main/java/icbm/gangshao/terminal/command/CommandAccess.java

99 lines
3.6 KiB
Java
Raw Normal View History

2022-11-09 22:15:45 +01:00
package icbm.gangshao.terminal.command;
2022-11-09 22:16:55 +01:00
import java.util.ArrayList;
import java.util.List;
2022-11-09 22:15:45 +01:00
import icbm.gangshao.ISpecialAccess;
import icbm.gangshao.access.AccessLevel;
2022-11-10 21:41:55 +01:00
import icbm.gangshao.platform.TTurretPlatform;
2022-11-09 22:15:45 +01:00
import icbm.gangshao.terminal.ITerminal;
import icbm.gangshao.terminal.TerminalCommand;
import net.minecraft.entity.player.EntityPlayer;
public class CommandAccess extends TerminalCommand {
@Override
public String getCommandPrefix() {
return "access";
}
@Override
2022-11-09 22:16:55 +01:00
public boolean processCommand(
final EntityPlayer player, final ITerminal terminal, final String[] args
) {
if (args[0].equalsIgnoreCase("access") && args.length > 1 && args[1] != null
2022-11-10 21:41:55 +01:00
&& terminal instanceof TTurretPlatform) {
final TTurretPlatform platform = (TTurretPlatform) terminal;
2022-11-09 22:16:55 +01:00
final AccessLevel userAccess
= terminal.getUserAccess(player.getDisplayName());
2022-11-09 22:15:45 +01:00
if (args[1].equalsIgnoreCase("?")) {
terminal.addToConsole(
2022-11-09 22:16:55 +01:00
"Access Level: "
+ platform.getUserAccess(player.getDisplayName()).displayName
);
2022-11-09 22:15:45 +01:00
return true;
}
2022-11-09 22:16:55 +01:00
if (args[1].equalsIgnoreCase("set") && args.length > 3
&& userAccess.ordinal() >= AccessLevel.ADMIN.ordinal()) {
2022-11-09 22:15:45 +01:00
final String username = args[2];
final AccessLevel currentAccess = terminal.getUserAccess(username);
2022-11-09 22:16:55 +01:00
final AccessLevel playerAccess
= terminal.getUserAccess(player.getDisplayName());
if (playerAccess.ordinal() < AccessLevel.ADMIN.ordinal()
|| playerAccess.ordinal() < currentAccess.ordinal()
|| (player.getDisplayName().equalsIgnoreCase(username)
&& playerAccess != AccessLevel.OWNER)) {
2022-11-09 22:15:45 +01:00
terminal.addToConsole("Access denied!");
return true;
}
2022-11-09 22:16:55 +01:00
2022-11-09 22:15:45 +01:00
if (currentAccess != AccessLevel.NONE) {
final AccessLevel newAccess = AccessLevel.get(args[3]);
2022-11-09 22:16:55 +01:00
if ((currentAccess != AccessLevel.OWNER
|| platform.getUsersWithAcess(AccessLevel.OWNER).size() > 1)
&& newAccess != AccessLevel.NONE
&& terminal.addUserAccess(username, newAccess, true)) {
terminal.addToConsole(
username + " set to " + newAccess.displayName
);
2022-11-09 22:15:45 +01:00
platform.getWorldObj().markBlockForUpdate(
2022-11-09 22:16:55 +01:00
platform.xCoord, platform.yCoord, platform.zCoord
);
2022-11-09 22:15:45 +01:00
return true;
}
}
}
}
2022-11-09 22:16:55 +01:00
2022-11-09 22:15:45 +01:00
return false;
}
@Override
2022-11-09 22:16:55 +01:00
public boolean canPlayerUse(final EntityPlayer var1, final ISpecialAccess mm) {
return mm.getUserAccess(var1.getDisplayName()).ordinal()
>= AccessLevel.USER.ordinal()
|| var1.capabilities.isCreativeMode;
2022-11-09 22:15:45 +01:00
}
@Override
2022-11-09 22:16:55 +01:00
public boolean showOnHelp(final EntityPlayer player, final ISpecialAccess mm) {
2022-11-09 22:15:45 +01:00
return this.canPlayerUse(player, mm);
}
@Override
2022-11-09 22:16:55 +01:00
public List<String> getCmdUses(final EntityPlayer player, final ISpecialAccess mm) {
2022-11-09 22:15:45 +01:00
final List<String> cmds = new ArrayList<>();
cmds.add("access set username level");
cmds.add("access ?");
return cmds;
}
@Override
public boolean canMachineUse(final ISpecialAccess mm) {
2022-11-10 21:41:55 +01:00
return mm instanceof TTurretPlatform;
2022-11-09 22:15:45 +01:00
}
}