Получение идентификатора
Протокол Minecraft часто обновляется, и с ним меняются идентификаторы пакетов. Один и тот же пакет может иметь разные идентификаторы на разных версиях протокола.
Для решения этой проблемы используются автоматически генерируемые словари, где:
Ключ — это комбинация версии протокола и
Order(уникальный номер пакета для конкретной версии).Значение — это идентификатор пакета (число), который соответствует этому пакету на конкретной версии протокола.
Работа с идентификаторами пакетов
В классе PacketIdHelper реализованы методы, позволяющие получить идентификатор пакета на основе его параметров и версии протокола:
Метод
TryGetPacketIdentifier: Этот метод пытается найти идентификатор пакета по егоpacketId, версии протокола, состоянию и направлению (к серверу или клиенту).Метод
GetPacketIdentifier: Этот метод используетTryGetPacketIdentifier, но в случае, если пакет не найден, выбрасывает исключениеKeyNotFoundException. Этот метод полезен, когда необходимо обязательно получить идентификатор пакета.Метод
TryGetPacketId: МетодTryGetPacketIdработает в обратном направлении: он получает идентификатор пакета и пытается найти егоpacketIdдля конкретной версии протокола.Метод
GetPacketId: Этот метод используетTryGetPacketIdдля полученияpacketId. Если идентификатор не найден, выбрасывается исключениеKeyNotFoundException.