Класс MinecraftClient
Класс MinecraftClient
— это минималистичная обертка над TCP-соединением, предназначенная для передачи пакетов Minecraft-протокола. Он не выполняет обработку пакетов, а лишь отправляет и принимает их, предоставляя низкоуровневый доступ к сетевому взаимодействию.
Этот класс одноразовый: после отключения, ошибки или остановки соединения его нельзя повторно использовать — необходимо создать новый экземпляр.
Исходный код: MinecraftClient.cs
Основные методы
ConnectAsync(CancellationToken)
Устанавливает соединение с сервером Minecraft на основе переданных параметров.
SendPacket(IClientPacket, CancellationToken)
Отправляет указанный пакет серверу. Этот метод не является потокобезопасным.
IAsyncEnumerable ReceivePackets(CancellationToken)
Возвращает асинхронный поток пакетов, получаемых от сервера. Важно - пакеты не хранятся в какой очереди, а лишь читаются из сети, когда вызывается MoveNextAsync у IAsyncEnumerator.
Dispose()
Закрывает соединение и освобождает ресурсы.
SwitchEncryption(Span key)
Включает шифрование соединения с использованием переданного ключа.
SwitchCompression(int threshold)
Включает сжатие пакетов, если их размер превышает указанный порог.
Основные настройки
- Host
Хост (IP-адрес или доменное имя) сервера Minecraft для подключения.
- Port
Порт, используемый для подключения к серверу Minecraft. По умолчанию используется стандартный порт Minecraft — 25565.
- Username
Имя пользователя, которое будет использоваться для аутентификации на сервере.
- Version
Версия протокола Minecraft, с которой должен работать клиент. Этот параметр используется для обеспечения совместимости с различными версиями сервера.
- Proxy?
Прокси-сервер, через который будет осуществляться подключение. Если не указан, подключение происходит напрямую.
- ConnectTimeout
Таймаут подключения к серверу. Устанавливает максимальное время ожидания установления соединения.
- ReadTimeout
Таймаут чтения данных из сети, измеряется в миллисекундах. Этот параметр определяет, сколько времени клиент будет ожидать данные от сервера.
- WriteTimeout
Таймаут записи данных в сеть, измеряется в миллисекундах. Этот параметр определяет, сколько времени клиент будет ожидать успешную отправку данных на сервер.