]> jfr.im git - irc/rizon/acid.git/blob - acid/src/main/java/net/rizon/acid/messages/TMode.java
25dc5bebbb81abe198652d22e6a836aa7af945c1
[irc/rizon/acid.git] / acid / src / main / java / net / rizon / acid / messages / TMode.java
1 package net.rizon.acid.messages;
2
3 import net.rizon.acid.core.Acidictive;
4 import net.rizon.acid.core.Channel;
5 import net.rizon.acid.core.Message;
6 import net.rizon.acid.core.Server;
7 import net.rizon.acid.core.User;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
11 public class TMode extends Message
12 {
13 private static final Logger log = LoggerFactory.getLogger(TMode.class);
14
15 public TMode()
16 {
17 super("TMODE");
18 }
19
20 // :4SSAAAAWB TMODE 1233718499 #a -sOb blah!*@*
21
22 @Override
23 public void on(String source, String[] params)
24 {
25 String setter = Server.toName(source);
26 if (setter == source)
27 setter = User.toName(source);
28 if (setter == source)
29 {
30 log.warn("TMODE from nonexistent source " + source);
31 return;
32 }
33
34 Channel chan = Channel.findChannel(params[1]);
35 if (chan == null)
36 return;
37
38 int ts;
39 try
40 {
41 ts = Integer.parseInt(params[0]);
42 }
43 catch (NumberFormatException ex)
44 {
45 ex.printStackTrace();
46 return;
47 }
48
49 if (ts > chan.getTS())
50 return;
51
52 String modes = params[2];
53 for (int i = 3; i < params.length; i++)
54 modes += " " + params[i];
55
56 Acidictive.onChanMode(setter, chan, modes);
57
58 if (chan.size() == 0 && !chan.hasMode('z'))
59 chan.destroy();
60 }
61 }