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
|
|
|
}
|
|
|
|
}
|