Source code for mcstatus.responses.legacy

from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING

from mcstatus.motd import Motd
from mcstatus.responses.base import BaseStatusPlayers, BaseStatusResponse, BaseStatusVersion

if TYPE_CHECKING:
    from typing_extensions import Self, override
else:
    override = lambda f: f  # noqa: E731

__all__ = [
    "LegacyStatusPlayers",
    "LegacyStatusResponse",
    "LegacyStatusVersion",
]


[docs] @dataclass(frozen=True) class LegacyStatusResponse(BaseStatusResponse): """The response object for :meth:`LegacyServerStatus.status() <mcstatus.server.LegacyServer.status>`.""" players: LegacyStatusPlayers version: LegacyStatusVersion """The version information, only populates for servers >=12w42b (1.4 onwards).""" @override @classmethod def build(cls, decoded_data: list[str], latency: float) -> Self: """Build BaseStatusResponse and check is it valid. :param decoded_data: Raw decoded response object. :param latency: Latency of the request. :return: :class:`LegacyStatusResponse` object. """ return cls( players=LegacyStatusPlayers( online=int(decoded_data[3]), max=int(decoded_data[4]), ), version=LegacyStatusVersion( name=decoded_data[1], protocol=int(decoded_data[0]), ), motd=Motd.parse(decoded_data[2]), latency=latency, )
[docs] @dataclass(frozen=True) class LegacyStatusPlayers(BaseStatusPlayers): """Class for storing information about players on the server."""
[docs] @dataclass(frozen=True) class LegacyStatusVersion(BaseStatusVersion): """A class for storing version information.""" name: str """The version name, like ``1.19.3``. See `Minecraft wiki <https://minecraft.wiki/w/Java_Edition_version_history>`__ for complete list. Will be ``<1.4`` for older releases, as those did not send version information. """ protocol: int """The protocol version, like ``761``. See `Minecraft wiki <https://minecraft.wiki/w/Protocol_version#Java_Edition_2>`__. ``-1`` means 1.3 and lower, before 1.4 servers did not send information about its version. """