Перейти к основному содержимому
Иконка пакета McProtoNet на nuget.org

McProtoNet

The Minecraft protocol in C#

dotnet add package McProtoNet --prerelease

Нужен .NET 8 или новее. Стабильного 2.0 пока нет, поэтому --prerelease.

Надпись на фоне собрали 117 ботов по команде из чата. Пример FormationBots

Program.cs
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 — остальные приезжают вместе с ним. Что внутри каждого - в «Установке»

Куда дальше