package org.starmod.net.codec; import io.netty.buffer.ByteBuf; import org.starmod.net.Codec; import org.starmod.net.Header; import org.starmod.net.command.Login; import org.starmod.net.util.Parameters; import java.io.IOException; public class LoginCodec implements Codec<Login> { @Override public Login decode(ByteBuf buf, Header header) throws IOException { Object[] params = Parameters.decode(buf); String playerName = (String) params[0]; float version = params.length > 1 ? ((float) params[1]) : 0.0F; String address = params.length > 2 ? ((String) params[2]) : ""; String loginCode = params.length > 3 ? ((String) params[3]) : ""; byte userAgent = params.length > 4 ? ((Byte) params[4]) : 0; return new Login(header, playerName, version, address, loginCode, userAgent); } @Override public ByteBuf encode(ByteBuf buf, Login cmd) throws IOException { Object[] params = new Object[4]; params[0] = cmd.getReturnCode(); params[1] = cmd.getId(); params[2] = System.currentTimeMillis(); params[3] = cmd.getVersion(); buf = Parameters.encode(buf, params); return buf; } }