001 /**
002 * Jetrix TetriNET Server
003 * Copyright (C) 2001-2004 Emmanuel Bourg
004 *
005 * This program is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU General Public License
007 * as published by the Free Software Foundation; either version 2
008 * of the License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU General Public License for more details.
014 *
015 * You should have received a copy of the GNU General Public License
016 * along with this program; if not, write to the Free Software
017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
018 */
019
020 package net.jetrix.commands;
021
022 import net.jetrix.*;
023 import net.jetrix.config.*;
024 import net.jetrix.messages.channel.CommandMessage;
025 import net.jetrix.messages.channel.PlineMessage;
026
027 /**
028 * List all players connected to the server.
029 *
030 * @author Emmanuel Bourg
031 * @version $Revision: 857 $, $Date: 2010-05-04 19:55:19 +0200 (mar., 04 mai 2010) $
032 */
033 public class WhoCommand extends AbstractCommand
034 {
035 public String[] getAliases()
036 {
037 return (new String[] { "who", "w", "cwho" });
038 }
039
040 public void execute(CommandMessage m)
041 {
042 Client client = (Client) m.getSource();
043 ChannelManager channelManager = ChannelManager.getInstance();
044
045 PlineMessage response = new PlineMessage();
046 response.setKey("command.who.header");
047 client.send(response);
048
049 for(Channel channel : channelManager.channels())
050 {
051 // skipping empty channels
052 if (channel.getPlayerCount() > 0)
053 {
054 ChannelConfig conf = channel.getConfig();
055
056 boolean isInChannel = false;
057 String channelColor = "<purple>";
058 StringBuilder message = new StringBuilder();
059 message.append("[" + conf.getName() + "] <darkBlue>");
060
061 for (int i = 1; i <= 6; i++)
062 {
063 Client clientInChannel = channel.getClient(i);
064 if (clientInChannel != null)
065 {
066 User user = clientInChannel.getUser();
067
068 message.append(" ");
069
070 if (user.isRegistered())
071 {
072 message.append("<purple>�</purple>");
073 }
074
075 boolean fast = clientInChannel.getProtocol().getName().equals("tetrifast");
076
077 if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("<b>");
078 if (fast) message.append("<i>");
079 message.append(user.getName());
080 if (fast) message.append("</i>");
081 if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("</b>");
082 }
083
084 if (client == clientInChannel)
085 {
086 isInChannel = true;
087 }
088 }
089
090 if (isInChannel) channelColor = "<red>";
091
092 Message response2 = new PlineMessage(channelColor + message.toString());
093 client.send(response2);
094 }
095 }
096 }
097 }