Чтобы получить список игроков на сервере Minecraft с помощью Python, вы можете использовать различные методы в зависимости от настроек сервера. Вот несколько примеров:
-
Запросить сервер с помощью Minecraft Query (протокол запросов UDP):
import socket def get_players(server_ip, server_port): # Create a UDP socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Craft the query packet packet = b"\xFE\xFD\x09\xFF\xFF\xFF\x01" # Send the query packet sock.sendto(packet, (server_ip, server_port)) # Receive and decode the response data, addr = sock.recvfrom(1024) response = data.decode("UTF-16BE").split("\x00\x00\x00")[0] # Extract the player names from the response players = response.split("\x00")[11:] # Close the socket sock.close() return players # Example usage server_ip = "your_server_ip" server_port = 25565 players = get_players(server_ip, server_port) print(players)
-
Использовать библиотеку запросов сервера Minecraft (требуется установка):
from minecraft_query import MinecraftQuery def get_players(server_ip, server_port): # Create a MinecraftQuery object query = MinecraftQuery(server_ip, server_port) # Get the player list players = query.get_players() return players # Example usage server_ip = "your_server_ip" server_port = 25565 players = get_players(server_ip, server_port) print(players)
-
Использовать интерфейс RCON (удаленная консоль) сервера Minecraft (требуется включение RCON и учетные данные):
from mcrcon import MCRcon def get_players(server_ip, server_port, rcon_password): # Create an MCRcon object rcon = MCRcon(server_ip, rcon_password, server_port=server_port) # Connect to the server rcon.connect() # Send the "list" command to get player list response = rcon.command("list") # Extract the player names from the response players = response.split(":")[-1].strip().split(", ") # Disconnect from the server rcon.disconnect() return players # Example usage server_ip = "your_server_ip" server_port = 25575 rcon_password = "your_rcon_password" players = get_players(server_ip, server_port, rcon_password) print(players)