From 860d446d28776ec842fa53e8e08538d4e093d6e9 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 12 Oct 2011 03:14:07 +0200 Subject: EssentialsUpdate WIP --- .../f00f/net/irc/martyr/commands/KickCommand.java | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 EssentialsUpdate/src/f00f/net/irc/martyr/commands/KickCommand.java (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/commands/KickCommand.java') diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/commands/KickCommand.java b/EssentialsUpdate/src/f00f/net/irc/martyr/commands/KickCommand.java new file mode 100644 index 000000000..96b2731e1 --- /dev/null +++ b/EssentialsUpdate/src/f00f/net/irc/martyr/commands/KickCommand.java @@ -0,0 +1,110 @@ +package f00f.net.irc.martyr.commands; + +import f00f.net.irc.martyr.InCommand; +import f00f.net.irc.martyr.clientstate.Channel; +import f00f.net.irc.martyr.clientstate.ClientState; +import f00f.net.irc.martyr.util.FullNick; +import java.util.logging.Logger; + + +/** + * Defines KICK command. + */ +public class KickCommand extends AbstractCommand +{ + + static Logger log = Logger.getLogger(KickCommand.class.getName()); + + private String channel; + private FullNick userKicker; + private FullNick userKicked; + private String comment; + + /** For use as a factory */ + public KickCommand() + { + this( null, null, null, null ); + } + + public KickCommand( FullNick userKicker, String channel, + String userKicked, String comment ) + { + this.userKicker = userKicker; + this.channel = channel; + this.userKicked = new FullNick( userKicked ); + this.comment = comment; + } + + public KickCommand( String channel, String userToKick, String comment ) + { + this( null, channel, userToKick, comment ); + } + + public InCommand parse( String prefix, String identifier, String params ) + { + return new KickCommand( + new FullNick( prefix ), + getParameter( params, 0 ), + getParameter( params, 1 ), + getParameter( params, 2 ) + ); + } + + public String getIrcIdentifier() + { + return "KICK"; + } + + public String renderParams() + { + return channel + " " + userKicked + " :" + comment; + } + + public String getChannel() + { + return channel; + } + + public FullNick getKicker() + { + return userKicker; + } + + public FullNick getKicked() + { + return userKicked; + } + + public String getComment() + { + return comment; + } + + public boolean kickedUs( ClientState state ) + { + return userKicked.equals( state.getNick() ); + } + + public boolean updateClientState( ClientState state ) + { + if( kickedUs( state ) ) + { + // We've been kicked. + //log.debug("KICK: We've been kicked " + channel); + state.removeChannel( channel ); + return true; + } + else + { + // Someone else was kicked. + //log.debug("KICK: " + userKicked.getNick() + " kicked " + channel); + // 1) Grab group + Channel channelObj = state.getChannel( channel ); + channelObj.removeMember( userKicked, this ); + return true; + } + } + +} + + -- cgit v1.2.3