Compare commits
No commits in common. "main" and "v0.2" have entirely different histories.
|
@ -37,80 +37,46 @@ class AIOConnection(object):
|
||||||
class IMCServer(ABC):
|
class IMCServer(ABC):
|
||||||
|
|
||||||
def __init__(self, host: str, port: int) -> None:
|
def __init__(self, host: str, port: int) -> None:
|
||||||
"""
|
|
||||||
:param host: Minecraft server ip or hostname
|
|
||||||
:param port: Minecraft server port
|
|
||||||
"""
|
|
||||||
self.host = host
|
self.host = host
|
||||||
self.port = port
|
self.port = port
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def players_count(self) -> int | None:
|
async def players_count(self) -> int:
|
||||||
"""
|
|
||||||
Returns current number of players on server
|
|
||||||
|
|
||||||
:return: Number of players on server
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def name(self) -> str | None:
|
async def name(self) -> str:
|
||||||
"""
|
|
||||||
Returns server core name
|
|
||||||
|
|
||||||
:return: Server name
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def maxplayers(self) -> int | None:
|
async def maxplayers(self) -> int:
|
||||||
"""
|
|
||||||
Returns max number of players available on server
|
|
||||||
|
|
||||||
:return: Max number of players
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def motd(self) -> str | None:
|
async def motd(self) -> str:
|
||||||
"""
|
|
||||||
Returns Message of the day
|
|
||||||
|
|
||||||
:return: Server motd
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def players_list(self) -> Iterable:
|
async def players_list(self) -> Iterable:
|
||||||
"""
|
|
||||||
Returns iterable object with online players nicknames
|
|
||||||
|
|
||||||
:return: Players nicknames iterable object
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def all_info(self) -> dict:
|
async def all_info(self) -> dict:
|
||||||
"""
|
|
||||||
Returns dict with all information about server
|
|
||||||
|
|
||||||
:return: All information about server
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class AIOMCServer(IMCServer):
|
class AIOMCServer(IMCServer):
|
||||||
|
|
||||||
_name: str | None
|
_name: str
|
||||||
_max: int | None
|
_max: int
|
||||||
_count: int | None
|
_count: int
|
||||||
_motd: str | None
|
_motd: str
|
||||||
_data: bytes
|
_data: bytes
|
||||||
_players: Iterable
|
_players: Iterable
|
||||||
|
|
||||||
|
@ -119,7 +85,7 @@ class AIOMCServer(IMCServer):
|
||||||
self._data = self._pack_data(
|
self._data = self._pack_data(
|
||||||
b"\x00\x00" + self._pack_data(self.host.encode('utf8')) + self.
|
b"\x00\x00" + self._pack_data(self.host.encode('utf8')) + self.
|
||||||
_pack_port(self.port) + b"\x01")
|
_pack_port(self.port) + b"\x01")
|
||||||
self.clean()
|
self._players = ()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def _unpack_varint(s):
|
async def _unpack_varint(s):
|
||||||
|
@ -148,13 +114,6 @@ class AIOMCServer(IMCServer):
|
||||||
d = bytes(d, "utf-8")
|
d = bytes(d, "utf-8")
|
||||||
return h + d
|
return h + d
|
||||||
|
|
||||||
def clean(self) -> None:
|
|
||||||
self._name = None
|
|
||||||
self._motd = None
|
|
||||||
self._max = None
|
|
||||||
self._count = None
|
|
||||||
self._players = ()
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _pack_port(i):
|
def _pack_port(i):
|
||||||
return struct_pack('>H', i)
|
return struct_pack('>H', i)
|
||||||
|
@ -173,11 +132,8 @@ class AIOMCServer(IMCServer):
|
||||||
|
|
||||||
async def update(self) -> None:
|
async def update(self) -> None:
|
||||||
data = await self._get_data()
|
data = await self._get_data()
|
||||||
self.clean()
|
|
||||||
self._name = data["version"]["name"]
|
self._name = data["version"]["name"]
|
||||||
self._motd = data["description"]
|
self._motd = data["description"]
|
||||||
if isinstance(self._motd, dict):
|
|
||||||
self._motd = self._motd["text"]
|
|
||||||
players = data["players"]
|
players = data["players"]
|
||||||
self._count = int(players["online"])
|
self._count = int(players["online"])
|
||||||
self._max = int(players["max"])
|
self._max = int(players["max"])
|
||||||
|
@ -186,22 +142,22 @@ class AIOMCServer(IMCServer):
|
||||||
players["sample"]))
|
players["sample"]))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
async def players_count(self) -> int | None | None:
|
async def players_count(self) -> int:
|
||||||
await self.update()
|
await self.update()
|
||||||
return self._count
|
return self._count
|
||||||
|
|
||||||
@property
|
@property
|
||||||
async def name(self) -> str | None | None:
|
async def name(self) -> str:
|
||||||
await self.update()
|
await self.update()
|
||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
async def maxplayers(self) -> int | None | None:
|
async def maxplayers(self) -> int:
|
||||||
await self.update()
|
await self.update()
|
||||||
return self._max
|
return self._max
|
||||||
|
|
||||||
@property
|
@property
|
||||||
async def motd(self) -> str | None | None:
|
async def motd(self) -> str:
|
||||||
await self.update()
|
await self.update()
|
||||||
return self._motd
|
return self._motd
|
||||||
|
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text()
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="mcaio",
|
name="mcaio",
|
||||||
version="0.2.1",
|
version="0.2",
|
||||||
url="https://git.orudo.ru/trueold89/mcaio",
|
url="https://git.orudo.ru/trueold89/mcaio",
|
||||||
author="trueold89",
|
author="trueold89",
|
||||||
author_email="trueold89@orudo.ru",
|
author_email="trueold89@orudo.ru",
|
||||||
|
|
Loading…
Reference in New Issue