Hey there!
About;
I created this project to make it easier to connect to a retro without using the flash client. The aim is to make sure that it's really easy to use and implement. It does even run on android.
Dependencies;
- Maven for project- and dependency management.
- Netty for the networking.
- Trove for the high performance collections.
Project (Aiming for);
- High performance.
- Stable.
- Multi threading.
- Event handler with a lot of events.
Video;
Warning; This project is still in its early stages, code is not optimized fully yet.
In the following video I show how easy it is to connect to a retro and register an event listener, at the end I'll show an example of it being intergrated into an android application.
00:00 - 05:33; Console application implementation.
05:39 - 08:36; Android example, talking to cleverbot.
Events at the moment;
- HabboConnectedEvent() - Local player succesfully connected to the server.
- MessengerBuddyChatEvent() - A friend sent you a message.
- MessengerBuddyJoinEvent() - A friend came online.
- MessengerBuddyQuitEvent() - A friend left.
- MessengerBuddyRequestEvent() - Someone wants to add you as a friend.
- MessengerServerMessageEvent() - Received message from server (Like a mute, being worked on at the moment).
- ServerMessageEvent() - Room alert / Server alert / MOTD.
Snippets;
Example of a listener with the events existing at the moment.
PHP Code:public class EListener implements Listener {
[MENTION=1333442518]even[/MENTION]tHandler
public void messageEvent(ServerMessageEvent e){
System.out.println("Server Message Received: " + e.getMessage());
}
[MENTION=1333442518]even[/MENTION]tHandler
public void habboConnectedEvent(HabboConnectedEvent e){
System.out.println("[Messenger] You have " + e.getMessenger().getOnlineMessengerBuddies().size() + " friends online.");
}
[MENTION=1333442518]even[/MENTION]tHandler
public void messengerBuddyJoinEvent(MessengerBuddyJoinEvent e){
// Print out data
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: joined.");
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: " + e.getMessengerBuddy().getId());
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: " + e.getMessengerBuddy().getMotto());
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: " + e.getMessengerBuddy().getFigure());
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: " + e.getMessengerBuddy().getLastOnline());
// Send message to welcome my friend
e.getMessengerBuddy().sendMessage("Welcome online, " + e.getMessengerBuddy().getName() + "!");
}
[MENTION=1333442518]even[/MENTION]tHandler
public void messengerBuddyQuitEvent(MessengerBuddyQuitEvent e){
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: left.");
}
[MENTION=1333442518]even[/MENTION]tHandler
public void messengerBuddyRequestEvent(MessengerBuddyRequestEvent e){
System.out.println("[Messenger]: I am accepting " + e.getMessengerRequest().getSenderUsername() + " as a friend.");
e.getMessengerRequest().accept().sendMessage("Welcome to my friendslist, " + e.getMessengerRequest().getSenderUsername() + "!");
}
[MENTION=1333442518]even[/MENTION]tHandler
public void messengerBuddyChatEvent(MessengerBuddyChatEvent e){
System.out.println("[Messenger][" + e.getMessengerBuddy().getName() + "]: " + e.getMessage());
// Let's echo his message.
e.getMessengerBuddy().sendMessage(e.getMessage());
}
}
The registerListener() method.
PHP Code:public void registerListener(Listener listener) throws DuplicateEventException {
for (Method m : listener.getClass().getMethods()) {
if(m.isAnnotationPresent(EventHandler.class)){
for (Class c : m.getParameterTypes()) {
if(Event.class.isAssignableFrom(c)){
String eventId = c.getSimpleName();
if(!this.eventListeners.containsKey(eventId) && !this.eventMethods.containsKey(eventId)) {
this.eventListeners.put(eventId, listener);
this.eventMethods.put(eventId, m.getName());
}
else
throw new DuplicateEventException();
}
}
}
}
Logger.devDebug("Registered " + this.eventListeners.size() + " event handlers.");
}
Team;
- Just me!
If you have any questions or ideas let me know. It would also be cool if you can drop some ideas about what to make with this library. The library is limited at the moment however it will eventually be able to join rooms, walk, buy furni, place furni and all that stuff.
Thanks for reading!
tl-dr; nah, just read it.








