Чтение и запись пакетов
В пространстве имен McProtoNet.Net расположены основные классы, которые обеспечивают работу с пакетами. Они читают и записывают пакеты согласно протоколу Minecraft.
MinecraftPacketReader
Класс MinecraftPacketReader предназначен для чтения пакетов из любого потока, в том числе, сетевого.
Для этого есть метод ReadNextPacketAsync, который возвращает InputPacket.
MinecraftPacketSender
Этот класс занимается отправкой пакетов. Добиться этого можно с помощью метода SendPacketAsync, который в качестве аргумента принимает ReadOnlyMemory<byte>.
ReadOnlyMemory<byte> - это отправленный пакет, у которого первые байты это идентификатор, остальное - данные.
Также имеются методы расширения для OutputPacket. Это удобно, если Вы отправляете пакет прямиком из MinecraftPrimitiveWriter.
Сжатие
Оба, вышеупомянутых класса, позволяют включить сжатие. Это достигается с помощью метода SwitchCompression, который принимает в качестве аргумента число — порог сжатия.
Для повышения производительности при сжатии и декомпрессии пакетов используется библиотека libdeflate.