Switched to Java and working on Neutrino's build again. Because there are way more headers I can use 
Snippetz?
Code:
package sierra.messages.handshake;
import sierra.Logging;
import sierra.SierraEnvironment;
import sierra.composers.Outgoing;
import sierra.habbohotel.rooms.RoomEngine;
import sierra.messagehandler.MessageEvent;
import sierra.network.clients.Session;
import sierra.network.clients.SetSessionInfo;
import sierra.packetparse.ClientMessage;
import sierra.packetparse.ServerMessage;
public class CheckLogin implements MessageEvent {
@Override
public void Parse(Session Session, ClientMessage Request)
{
try
{
ServerMessage Message = new ServerMessage();
//Verify by IP
if (SierraEnvironment.getStorage().RowExists("SELECT ip FROM members WHERE ip = '" + Session.GetIP() + "' LIMIT 1"))
{
//Login
Message.Initialize(Outgoing.InitSystem);
Session.Send(Message);
SetSessionInfo mSessionInfo = new SetSessionInfo();
mSessionInfo.setDetails(Session, Session.GetHabbo(), SierraEnvironment.getStorage().ReadRow("SELECT * FROM members WHERE ip = '" + Session.GetIP() + "'"));
RoomEngine.GetOwnRooms(SierraEnvironment.getStorage(), Session.GetHabbo().Id, Session.GetHabbo().Username);
Message.Initialize(Outgoing.Alert);
Message.AppendString("Welcome to Sierra, " + Session.GetHabbo().Username + "!\r\nCodename: DIRT1\r\n");
Message.AppendString("");
Session.Send(Message);
}
}
catch (Exception e)
{
Logging.writeLine(e);
}
}
}
Code:
package sierra.network.clients;
import org.jboss.netty.channel.Channel;
import sierra.SierraEnvironment;
import sierra.Logging;
import sierra.composers.Outgoing;
import sierra.game.users.Habbo;
import sierra.packetparse.ClientMessage;
import sierra.packetparse.ServerMessage;
public class Session
{
private Channel mChannel;
private Habbo mHabbo;
public Session(Channel Channel)
{
this.mChannel = Channel;
this.mHabbo = new Habbo();
}
public void AlertBanned(String Alert)
{
ServerMessage Message = new ServerMessage();
Message.Initialize(Outgoing.YouAreBanned);
Message.AppendString(Alert);
this.Send(Message);
}
public void AlertUser(String Msg)
{
ServerMessage Message = new ServerMessage();
Message.Initialize(Outgoing.Alert);
Message.AppendString(Msg);
this.Send(Message);
}
public void AlertUserWithLink(String Msg, String Link)
{
ServerMessage Message = new ServerMessage();
Message.Initialize(Outgoing.Alert);
Message.AppendString(Msg);
Message.AppendString(Link);
this.Send(Message);
}
public void parseMessage(ClientMessage msg)
{
Logging.writeLine("[ " + msg.getType() + " ] "+ msg.getBodyString());
{
if (SierraEnvironment.getConnection().getMessages().contains(msg.getType())) {
SierraEnvironment.getConnection().getMessages().tryGet(msg.getType()).Parse(this, msg);
}
}
}
public Channel GetChannel()
{
return this.mChannel;
}
public Habbo GetHabbo()
{
return this.mHabbo;
}
public String GetIP()
{
return mChannel.getRemoteAddress().toString().replace("/", "").split(":")[0];
}
public void Send(ServerMessage msg)
{
mChannel.write(msg);
}
}
Code:
package sierra.messages.navigator;
import sierra.composers.Outgoing;
import sierra.habbohotel.rooms.Room;
import sierra.habbohotel.rooms.RoomEngine;
import sierra.messagehandler.MessageEvent;
import sierra.network.clients.Session;
import sierra.packetparse.ClientMessage;
import sierra.packetparse.ServerMessage;
public class InitRoom implements MessageEvent
{
@Override
public void Parse(Session Session, ClientMessage Request)
{
Room Room = RoomEngine.GetById(Request.popInt());
ServerMessage Message = new ServerMessage();
Session.GetHabbo().Room = Room;
if (Room.equals(null))
{
Session.AlertUser("Unknown Room.");
Session.GetChannel().close();
}
else
{
Message.Initialize(Outgoing.InitRoomProcess);
Session.Send(Message);
Message.Initialize(Outgoing.ModelAndId);
Message.AppendString(Room.Model);
Message.AppendInt32(Room.Id);
Session.Send(Message);
//TODO: Load wallpaper and floorpaper, and landscape from database
Message.Initialize(Outgoing.Landscape);
Message.AppendString("landscape");
Message.AppendString("0.0");
Session.Send(Message);
//TODO: Check rights
Message.Initialize(Outgoing.LoadRightsOnRoom);
Message.AppendInt32(4);
Session.Send(Message);
Message.Initialize(Outgoing.RoomEvents);
Message.AppendString("-1");
Session.Send(Message);
}
}
}
Code:
package sierra.packetparse;
import java.nio.ByteBuffer;
import java.nio.ShortBuffer;
import java.nio.charset.Charset;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import sierra.utils.BitConverter;
public class ClientMessage {
private Short id;
private ChannelBuffer body;
public ClientMessage(Short id, ChannelBuffer body) {
this.id = id;
if (body == null) {
this.body = ChannelBuffers.EMPTY_BUFFER;
} else {
this.body = body;
}
this.body.markReaderIndex();
}
public ChannelBuffer readBytes(int len) {
if (len > this.body.readableBytes()) {
len = this.body.readableBytes();
}
ChannelBuffer buf = this.body.readBytes(len);
this.body.discardReadBytes();
return buf;
}
public ChannelBuffer readRawBytes(int len) {
if (len > this.body.readableBytes()) {
len = this.body.readableBytes();
}
ChannelBuffer res = this.body.readBytes(len);
this.body.resetReaderIndex();
return res;
}
public ChannelBuffer readFixedValue() {
//Turn to byte buffer for header
ByteBuffer bb = ByteBuffer.wrap(this.readBytes(2).array());
//Create a short buffer from byte buffer
ShortBuffer sb = bb.asShortBuffer();
return this.readBytes(sb.get());
}
public Integer popInt() {
try {
return BitConverter.toInt32(this.readBytes(4).array(), 0);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public int popFixedInt() {
int i = 0;
String s = this.popFixedString();
i = Integer.parseInt(s);
return i;
}
public String popFixedString() {
return new String(this.readFixedValue().toString(
Charset.defaultCharset()));
}
public Short getType() {
return this.id;
}
public String getBodyString() {
String str = new String(this.body.toString(Charset.defaultCharset()));
String consoleText = str;
for (int i = 0; i < 13; i++) {
consoleText = consoleText.replace(Character.toString((char)i), "{" + i + "}");
}
return consoleText;
}
public int getCurrentLength() {
return this.body.readableBytes();
}
}
Code:
package sierra.packetparse;
import java.io.IOException;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBufferOutputStream;
import org.jboss.netty.buffer.ChannelBuffers;
public class ServerMessage
{
private ChannelBuffer body;
private ChannelBufferOutputStream bodystream;
public ServerMessage()
{
}
public void Initialize(int id)
{
this.body = ChannelBuffers.dynamicBuffer();
this.bodystream = new ChannelBufferOutputStream(body);
try {
this.bodystream.writeInt(0);
this.bodystream.writeShort(id);
} catch (Exception e) {
e.printStackTrace();
}
}
public void AppendString(String obj)
{
try {
bodystream.writeUTF(obj);
} catch (IOException e) {
}
}
public void AppendInt32(Integer obj)
{
try {
bodystream.writeInt(obj);
} catch (IOException e) {
}
}
public void AppendBoolean(Boolean obj)
{
try {
bodystream.writeBoolean(obj);
} catch (IOException e) {
}
}
public ChannelBuffer get() {
body.setInt(0, body.writerIndex() - 4);
return this.body;
}
}