using McProtoNet;
using McProtoNet.Protocol;
using HandshakeSb = McProtoNet.Protocol.Packets.Handshaking.Serverbound;
using LoginSb = McProtoNet.Protocol.Packets.Login.Serverbound;
const int Pv = 772; // 1.21.8
await using var client = new MinecraftClient(
new MinecraftClientOptions { Host = "127.0.0.1", Port = 25565 });
await client.ConnectAsync();
await client.SendAsync(
new HandshakeSb.SetProtocolPacket(Pv, "127.0.0.1", 25565, 2), Pv);
await client.SendAsync(
new LoginSb.LoginStartPacket("McProtoBot", V764_Last: new(Guid.NewGuid())),
Pv);
var bot = new Bot(client, Pv); // the class from First bot
await foreach (var packet in client.ReadPacketsAsync())
await bot.HandleAsync(in packet, Pv);
health 20, food 20
health 20, food 19
health 18, food 19
Полный разбор по шагам — в «Первом боте».
Протокол, а не игра
Подключиться к серверу, отправлять и принимать типизированные пакеты, включать сжатие и шифрование. Основа для ботов, своих клиентов и инструментов.
Быстрый транспорт
Сжатие через libdeflate, аппаратный AES для шифра, разбор без лишних копий поверх Span<byte>. Совместимо с NativeAOT.
Offline-серверы
Handshake и login на серверы в offline-режиме. Порядок входа остаётся в коде приложения, поэтому нестандартный сервер не превращается в тупик.
Сетевые помощники
Поиск SRV-записей и обнаружение LAN-серверов.
Одна сборка — много версий
1.16 — 26.2
Протоколы 735–776. Версию вы называете при подключении, пересобирать под неё ничего не нужно.
NuGet-пакеты
Ставится один McProtoNet — остальные приезжают вместе с ним. Что внутри каждого - в «Установке»
Куда дальше
- Первый бот - установка, версия протокола, четыре фазы, работающий бот.
- Что библиотека не делает - стоит прочитать до того, как планировать бота.
- Словарь - кадр, фаза, ordinal и другие слова из API.