McProtoNet Help

PacketIdentifier

PacketIdentifier представляет собой мета-информацию о пакете. Это класс, и может возникнуть впечатление, что он каждый раз создается заново при вызове метода GetPacketId. Однако это не так.

Каждый класс, описывающий пакет, просто возвращает существующий статический экземпляр из классов, таких как ClientConfigurationPacket, ClientLoginPacket, ServerPlayPacket и другие. Эти классы напоминают перечисления, где каждый вариант — это статическое поле readonly. Чтобы было понятнее, вот пример того, как это реализуется:

public static class ServerPlayPacket { public static readonly PacketIdentifier Abilities = new(0, nameof(Abilities), PacketState.Play, PacketDirection.Clientbound); public static readonly PacketIdentifier AcknowledgePlayerDigging = new(1, nameof(AcknowledgePlayerDigging), PacketState.Play, PacketDirection.Clientbound); public static readonly PacketIdentifier ActionBar = new(2, nameof(ActionBar), PacketState.Play, PacketDirection.Clientbound); // ... }
public class AbilitiesPacket : IServerPacket { public PacketIdentifier GetPacketId() { return ServerPlayPacket.Abilities; } // Deserialize... }
Last modified: 17 February 2025