]> jfr.im git - irc/rizon/acid.git/blob - acid/src/main/java/net/rizon/acid/core/Message.java
994ef076d9d1dd08681b298ced949d2987dc0599
[irc/rizon/acid.git] / acid / src / main / java / net / rizon / acid / core / Message.java
1 package net.rizon.acid.core;
2
3 import java.util.HashMap;
4 import net.rizon.acid.plugins.ClassLoader;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7
8 public abstract class Message
9 {
10 private static final Logger log = LoggerFactory.getLogger(Message.class);
11
12 public static final char BOLD = 2;
13
14 private static final String messageBase = "net.rizon.acid.messages";
15 private static final String[] messageClasses = {
16 "Encap", "EOB", "Error", "Join", "Kick", "Kill", "Mode", "Nick",
17 "Notice", "Part", "Pass", "Ping", "Privmsg", "Quit", "Server", "SID",
18 "SJoin", "SQuit", "Stats", "TMode", "UID", "Whois", "Operwall", "Invite",
19 };
20
21 static
22 {
23 reload();
24 }
25
26 protected Message(String name)
27 {
28 messages.put(name.toUpperCase(), this);
29 }
30
31 public void onUser(User source, String[] params) { }
32 public void onServer(Server source, String[] params) { }
33 public void on(String source, String[] params) { }
34
35 private static HashMap<String, Message> messages;
36
37 public static Message findMessage(String name)
38 {
39 return messages.get(name.toUpperCase());
40 }
41
42 public static void reload()
43 {
44 messages = new HashMap<String, Message>();
45
46 try
47 {
48 ClassLoader loader = new ClassLoader("net.rizon.acid.messages.");
49
50 for (String s : messageClasses)
51 loader.loadClass(messageBase + "." + s).newInstance();
52 }
53 catch (Exception ex)
54 {
55 log.error("Error initializing messages", ex);
56 System.exit(-1);
57 }
58 }
59 }