хоба! netty-боги вливаются в тред!
чтож у тебя есть 2 варианта: один костыльный другой хук))00
1) Майн использует нетти(шок). Майн использует TCP(шок х2). Netty использует pipeline(шок х3). Netty pipeline состоит из хэндлеров обрабатывающих сообщение шаг за шагом. Так например в майнсруфте 1.7.10 пайплайн без учета легаси дичи и прочей не важной херни на выходе состоит из энкодера, препендера и шифровщика (препендер это дичь которая 3 пакета сжимает в один). Так вот, я когда поднимал нетти на муйне 1.6.4 дабы не ломать существующую систему шифрования придумал до ужаса противный, но рабочий костыль: я перехватываю пакет с публичным ключом в энкодере (штукенция которая превращает объект типа Packet в массив байт) и достаю из него ключ который затем использую в том же энкодере для шифрования пакетов. Мое предложение: добавить в pipeline нового подключения твой офигительный хэндлер которым ты можешь отлавливать пакеты логина и что то по этому поводу предпринимать. Например отсылать другой пакет который будет ловить твой же хэндлер, но на стороне клиента.
Небольшая тонкость заключается в том что исходящие пакеты идут по пайплайну в обратном порядке. Так например если пайплайн будет 1 2 3, то исходящие пройдет по хэндлерам в порядке 3 2 1.
Так вот, что бы добавить свой хэндлер тебе нужно добыть channel у которого вызвать метод getPipeline(). В случае с NetHandlerLoginServer он лежит в объекте NetworkManager который лежит в поле field_147333_a. Соответственно чтобы добавить свой хэндлер юзаешь ф-ию Pipeline#addLast. Рекомендую использовать ChannelOutboundHandlerAdapter.
Чтобы твой код сработал для каждого нового подключения предлагаю добавить еще один хэндлер в главный канал который собственно принимает все новые подключения. Создается он в NetworkSystem.
Удачи!
2) Вставить хук перед вызовом конструктора пакета логина