Как кикнуть игрока с сервера

Введение

Данная инструкция описывает все способы отключения игрока от Minecraft-сервера, развернутого на выделенном сервере с Ubuntu под управлением панели proxify.cloud (Proxmox VE). Рассматриваются методы через игровую консоль, RCON, системную консоль Proxmox, файловую систему и автоматизацию. Все команды и пути проверены на стандартной установке Paper/Spigot/Purpur в директории /opt/minecraft/server.


1. Кик через игровую консоль (в игре)

Самый быстрый способ, если у вас есть права оператора (OP) или разрешение minecraft.command.kick.

  1. Зайдите на сервер под учётной записью с OP-правами.
  2. Откройте чат (клавиша T или /).
  3. Введите команду:
    /kick <ник_игрока> [причина]
    
    Пример:
    /kick SteveGrief Нарушение правил: грифф
    
  4. Нажмите Enter. Игрок получит экран отключения с текстом причины.

Важно: Ник должен совпадать точно, включая регистр. Используйте Tab для автодополнения.


2. Кик через консоль панели proxify.cloud (Proxmox Web GUI)

Если вы не в игре, используйте встроенную консоль виртуальной машины/контейнера в панели proxify.cloud.

  1. Авторизуйтесь в панели proxify.cloud (обычно https://<IP_хоста>:8006).
  2. В дереве слева выберите вашу VM или LXC-контейнер с сервером Minecraft.
  3. Перейдите на вкладку Console (Консоль).
  4. Если консоль не отображает вывод — нажмите в окно консоли и нажмите Enter несколько раз.
  5. Введите команду без слеша:
    kick <ник_игрока> [причина]
    
    Пример:
    kick xX_PvP_Xx Использование читов
    
  6. Нажмите Enter. Сервер ответит: Kicked xX_PvP_Xx.

Нюанс: В консоли Proxmox не работает Tab-дополнение ников. Вводите вручную или скопируйте из списка онлайн (команда list).


3. Кик через SSH (системная консоль Ubuntu)

Подключение напрямую к ОС даёт полный контроль и доступ к логам.

3.1 Подключение по SSH

ssh root@<IP_вашего_сервера_proxify>
# или, если пользователь minecraft:
ssh minecraft@<IP_вашего_сервера_proxify>

3.2 Подключение к screen/tmux сессии сервера

На хостинге proxify.cloud сервер обычно запускается в screen или systemd.

Вариант А: Screen (классика)

# Посмотреть список сессий
screen -ls
# Пример вывода: 12345.minecraft (Detached)
# Подключиться:
screen -r minecraft
# Или по PID:
screen -r 12345

Вариант Б: Systemd (современный стандарт на Ubuntu 22.04/24.04)

# Статус сервиса
systemctl status minecraft-server
# Подключение к консоли через journalctl (только чтение) или stdin, если настроен
# Обычно stdin не проброшен. Используйте RCON (пункт 4) или screen.

3.3 Отправка команды в screen без входа в сессию

Если нужно кикнуть быстро, не заходя в интерактивную консоль:

screen -S minecraft -X stuff "kick BadPlayer Причина кика\n"
  • -S minecraft — имя сессии (проверьте screen -ls).
  • -X stuff — передать строку в stdin процесса внутри screen.
  • \n — обязательный перевод строки (Enter).

4. Кик через RCON (удалённая админ-панель, скрипты, Discord-боты)

RCON — стандартный протокол удалённого управления. Включён по умолчанию в server.properties на большинстве образов proxify.cloud.

4.1 Проверка настроек RCON

Файл конфигурации: /opt/minecraft/server/server.properties

cat /opt/minecraft/server/server.properties | grep -E "rcon|enable-rcon"

Ожидаемые значения:

enable-rcon=true
rcon.port=25575
rcon.password=SuperSecretPassword123

Безопасность: На выделенном сервере proxify.cloud порт 25575 должен быть закрыт в файрволе (UFW/iptables/Proxmox Firewall) для внешнего мира. Доступ только с localhost или через VPN/SSH-туннель.

4.2 Использование mcrcon (рекомендуемый клиент)

Установка на Ubuntu:

apt update && apt install -y git build-essential
cd /tmp
git clone https://github.com/Tiiffi/mcrcon.git
cd mcrcon
make
cp mcrcon /usr/local/bin/

Кик игрока:

mcrcon -H 127.0.0.1 -P 25575 -p SuperSecretPassword123 "kick Hacker123 Читы запрещены"

Успешный ответ: [Server] Kicked Hacker123.

4.3 Кик через Python-скрипт (автоматизация)

Пример kick_player.py:

#!/usr/bin/env python3
import sys
from mcrcon import MCRcon

def kick_player(host, port, password, player, reason="Kicked by admin"):
    try:
        with MCRcon(host, password, port) as mcr:
            resp = mcr.command(f"kick {player} {reason}")
            print(f"Ответ сервера: {resp}")
    except Exception as e:
        print(f"Ошибка RCON: {e}")
        sys.exit(1)

if __name__ == "__main__":
    # Настройки для proxify.cloud (локальный хост)
    HOST = "127.0.0.1"
    PORT = 25575
    PASS = "SuperSecretPassword123"  # Замените на свой из server.properties
    
    if len(sys.argv) < 2:
        print("Usage: python3 kick_player.py <ник> [причина]")
        sys.exit(1)
    
    player = sys.argv[1]
    reason = " ".join(sys.argv[2:]) if len(sys.argv) > 2 else "Нарушение правил"
    kick_player(HOST, PORT, PASS, player, reason)

Запуск:

chmod +x kick_player.py
python3 kick_player.py GriefMaster "Грифф спавна"

5. Кик через плагины (EssentialsX, LuckPerms, AdvancedBan)

На продакшн-серверах proxify.cloud почти всегда стоят плагины модерации.

5.1 EssentialsX

Команда в чате или консоли:

/kick <ник> [причина]
/kickall [причина]  # Кикнуть всех кроме OP

Права: essentials.kick, essentials.kickall.

5.2 AdvancedBan / LiteBans

Позволяют кикать с записью в БД (MySQL/SQLite) и синхронизацией между серверами.

/kick <ник> <причина>
/ban <ник> <причина>  # Пермабан
/tempban <ник> 1d <причина>  # Временный бан

Логи хранятся в /opt/minecraft/server/plugins/AdvancedBan/ или БД.

5.3 LuckPerms (проверка прав перед киком)

Убедиться, что цель не имеет иммунитета:

/lp user <ник> permission info essentials.kick.exempt

Если возвращает true — игрок защищён от кика Essentials. Кикните через нативную команду /kick (пункт 1) или консоль.


6. Жёсткое отключение через ОС (kill процесса Java) — Экстренный метод

Если сервер завис, RCON не отвечает, консоль не реагирует — помогает только системный сигнал.

6.1 Поиск PID Java-процесса

pgrep -f "paper.jar\|spigot.jar\|server.jar"
# Или через systemd:
systemctl status minecraft-server | grep Main PID

Пример вывода: 12345.

6.2 Мягкая остановка (SIGTERM) — сохраняет мир

kill -15 12345
# Ждём 10-30 секунд
sleep 15
# Проверка
pgrep -f "paper.jar"

6.3 Жёсткая остановка (SIGKILL) — потеря данных за последние тики

kill -9 12345

После SIGKILL обязательно проверьте мир:

# Запуск сервера в режиме проверки (read-only) или просто старт
# Paper/Spigot автоматически починят chunk'и при следующем запуске.

6.4 Перезапуск через systemd (стандарт на proxify.cloud Ubuntu)

systemctl restart minecraft-server
# Статус
systemctl status minecraft-server -l
# Логи загрузки
journalctl -u minecraft-server -f

7. Кик через файловую систему (баны без входа в игру)

Если нужно забанить/кикнуть оффлайн-игрока или автоматизировать через скрипты бэкапа.

7.1 Native banned-players.json

Путь: /opt/minecraft/server/banned-players.json

Структура:

[
  {
    "uuid": "123e4567-e89b-12d3-a456-426614174000",
    "name": "BadPlayer",
    "created": "2024-01-15 14:30:00 +0300",
    "source": "Console",
    "expires": "forever",
    "reason": "Читы"
  }
]

Действие: Добавьте запись в массив -> сохраните -> выполните в консоли pardon <ник> для разбана или перезагрузите сервер. Игрок будет кикнут при следующем входе (или сразу, если он онлайн — команда kick всё равно нужна).

7.2 banned-ips.json

Аналогичный путь: /opt/minecraft/server/banned-ips.json. Блокирует по IP.

7.3 Плагинные БД (SQLite/MySQL)

Для AdvancedBan, LiteBans, BanManager правка JSON бесполезна. Используйте SQL:

-- Пример для SQLite (AdvancedBan)
INSERT INTO bans (uuid, name, reason, banner, created, expires, server) 
VALUES ('uuid-игрока', 'BadPlayer', 'Автобан: античит', 'Console', strftime('%s','now'), 0, 'survival');

Файл БД обычно: /opt/minecraft/server/plugins/AdvancedBan/bans.db.


8. Автоматизация: Кик по тригг