private final void decodeGrab(InputStream stream) {
   if (stream.getRemaining() != 8) {
     System.out.println(" " + stream.getRemaining());
     session.getChannel().close();
     return;
   }
   session.setEncoder(0);
   if (stream.readInt() != Settings.CLIENT_BUILD
       || stream.readInt() != Settings.CUSTOM_CLIENT_BUILD) {
     session.setDecoder(-1);
     session.getGrabPackets().sendOutdatedClientPacket();
     return;
   }
   session.setDecoder(1);
   session.getGrabPackets().sendStartUpPacket();
 }
 private final void decodeLogin(InputStream stream) {
   if (stream.getRemaining() != 0) {
     session.getChannel().close();
     return;
   }
   session.setDecoder(2);
   session.setEncoder(1);
   session.getLoginPackets().sendStartUpPacket();
 }
 @Override
 public final void decode(InputStream stream) {
   session.setDecoder(-1);
   int packetId = stream.readUnsignedByte();
   switch (packetId) {
     case 14:
       decodeLogin(stream);
       break;
     case 15:
       decodeGrab(stream);
       break;
     default:
       if (Settings.DEBUG) Logger.log(this, "PacketId " + packetId);
       session.getChannel().close();
       break;
   }
 }