package tc.oc.commons.bungee.sessions; import javax.annotation.Nullable; import javax.inject.Inject; import com.sk89q.minecraft.util.commands.Command; import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ComponentBuilder; import tc.oc.commons.core.commands.Commands; public class MojangSessionServiceCommands implements Commands { private final MojangSessionServiceMonitor monitor; @Inject MojangSessionServiceCommands(MojangSessionServiceMonitor monitor) { this.monitor = monitor; } @Command( aliases = {"session"}, desc = "Session status control", usage = "[on|off|clear]", max = 1 ) @CommandPermissions("bungeecord.command.session") public void session(final CommandContext args, CommandSender sender) throws CommandException { if (args.argsLength() == 1) { String arg = args.getString(0); SessionState newState = parseSessionStateCommand(arg); if (newState == null) throw new CommandException("Unknown session state command: " + arg); sender.sendMessage(new ComponentBuilder("Old Force Status: " + monitor.getForceState()).color(ChatColor.LIGHT_PURPLE).create()); monitor.setForceState(newState); } sender.sendMessage(new ComponentBuilder("Current Force Status: " + monitor.getForceState()).color(ChatColor.GOLD).create()); sender.sendMessage(new ComponentBuilder("Current Session Status: " + monitor.getDiscoveredState()).color(ChatColor.GOLD).create()); } private static @Nullable SessionState parseSessionStateCommand(String command) { switch (command) { case "on": return SessionState.ONLINE; case "off": return SessionState.OFFLINE; case "clear": case "none": return SessionState.ABSENT; default: return null; } } }