Ответы на эти вопросы есть по ссылкам, которые уже кидал выше. Нужно было лишь чуть копнуть вглубь:
https://minecraft.wiki/w/Minecraft_Wiki:Projects/wiki.vg_merge/Protocol_Encryption
Либо саморучно, либо заставить ядро отправить. Но для этого придётся лезть в НМС/рефлексию. В апи Paper этого по-моему, нет. Только на банже и велосити присутствует.
Теоретически отправить пакет было бы проще, т.к. можно использовать какой-нибудь ProtocolLib. Но проблема в другом.
Даже если ты отправишь пакет, то ядро сервера знать об этом не будет. А значит будет нарушен процесс подключения к серверу. Будет рассинхро между тем, что ожидаешь ты и тем, что ожидает ядро. Скорее всего, тип протокола изменится на play раньше времени. Это всё тоже нужно учитывать.
Забегая вперёд - на твой вопрос "а что конкретно нужно сделать?" не существует ответа, которые бы тебе понравился. Ответ звучит так: "изучай ядро и пытайся понять, как с ним взаимодействовать".
Навык разбираться - это то, что делает программиста программистом.
Кто-то из форумчан вряд ли станет тратить существенное время, чтобы лезть в ядро вместо тебя, чтобы предложить конкретное решение.
Ты можешь попытаться его нагуглить, если кто-то уже делал подобное. Но учти, что на разных версиях игры и на разных ядрах всё может быть совершенно по-разному. Даже между Spigot и Paper может быть существенная разница в этом вопросе, хотя обычно плагины от Paper совместимы со Spigot на 99%. Но тебе придётся залеть в саму реализацию ядра, а тут ошибки уже не прощаются