-
Notifications
You must be signed in to change notification settings - Fork 0
Plugin API Reference ru
padej edited this page Mar 30, 2026
·
2 revisions
Здесь описан публичный API vex-proxy-sdk v3.
| Событие | Когда вызывается | Поля | Отменяемо? | Пример |
|---|---|---|---|---|
OnHandshake |
При получении handshake. |
protocol, server_address, intent
|
Да (deny) | event.deny("Blocked"); |
OnPreLogin |
До завершения авторизации. |
username, address
|
Да (deny) | event.deny("Not whitelisted"); |
OnLoginSuccess |
После успешного логина. | player |
Нет | event.player.send_message("hi"); |
OnDisconnect |
При отключении игрока. |
player, reason
|
Нет | api.logger.info(...); |
OnBackendConnect |
Перед подключением к бэкенду. |
player, backend
|
Да (cancel/redirect) | event.set_backend("hub"); |
OnBackendReady |
Когда бэкенд готов. |
player, backend
|
Нет | api.logger.info(...); |
OnBackendDisconnect |
Разрыв соединения с бэкендом. |
player, backend, reason
|
Нет | api.logger.warn(...); |
OnBackendKick |
Кик от бэкенда. |
player, backend, message
|
Да (suppress/redirect) | event.redirect("lobby"); |
OnBackendSwitch |
Переключение бэкенда. |
player, from, to
|
Нет | api.logger.info(...); |
OnStatusPing |
Статус‑пинг/MOTD. |
address, response
|
Да (override) | event.response.motd = "..."; |
OnReload |
При перезагрузке прокси. | source |
Нет | api.logger.info("reload"); |
OnPluginMessage |
Перехват plugin‑message. |
player, channel, data
|
Да (drop) | event.cancel(); |
OnAttackModeChange |
Изменение attack mode. |
enabled, rps
|
Нет | api.logger.warn(...); |
OnBackendHealthChange |
Изменение состояния бэкенда. |
backend, healthy
|
Нет | api.logger.info(...); |
OnPermissionCheck |
Проверка прав команды. |
player, permission, allowed
|
Да (override) | event.allow(); |
OnTcpConnect |
Принятие TCP соединения. |
address, trace_id
|
Да (drop) | event.deny("busy"); |
api.events.on::<OnPreLogin, _, _>(move |event| async move {
if event.username == "NotAllowed" {
event.deny("You are not allowed.");
}
});| Сигнатура | Описание | Пример |
|---|---|---|
username(&self) -> &str |
Ник игрока. | player.username() |
uuid(&self) -> Uuid |
UUID игрока. | player.uuid() |
address(&self) -> SocketAddr |
Адрес игрока. | player.address() |
send_message(&self, msg: &str) |
Отправить чат. | player.send_message("Hi"); |
send_title(&self, title: &str, subtitle: &str, fade_in: u32, stay: u32, fade_out: u32) |
Title + тайминги. | player.send_title("Hi","",10,60,10); |
send_actionbar(&self, msg: &str) |
Actionbar. | player.send_actionbar("Ready"); |
kick(&self, msg: &str) |
Кикнуть игрока. | player.kick("Bye"); |
transfer(&self, backend: &str) |
Перевести на другой бэкенд. | player.transfer("hub"); |
set_tab_list(&self, header: &str, footer: &str) |
Заголовок/футер таба. | player.set_tab_list("H","F"); |
metadata(&self) -> PlayerMetadata |
Метаданные игрока. | player.metadata().set("key", 1); |
| Сигнатура | Описание | Пример |
|---|---|---|
broadcast(&self, msg: &str) |
Broadcast всем игрокам (локально). | api.proxy.broadcast("hi"); |
get_player(&self, name: &str) -> Option<ProxiedPlayer> |
Найти игрока по имени. | api.proxy.get_player("Alice"); |
online_count(&self) -> u32 |
Онлайн (локальный). | api.proxy.online_count() |
get_all_players(&self) -> Vec<PlayerInfo> |
Онлайн по всему кластеру. | api.proxy.get_all_players() |
send_plugin_message(&self, channel: &str, data: Bytes) |
Отправить plugin‑message. | api.proxy.send_plugin_message("BungeeCord", data); |
reload(&self) |
Перезагрузка прокси. | api.proxy.reload() |
shutdown(&self) |
Остановка прокси. | api.proxy.shutdown() |
| Метод | Описание | Пример |
|---|---|---|
run_next_tick(f) |
Выполнить на следующем тике. | `api.scheduler.run_next_tick( |
run_later(delay_ms, f) |
Выполнить через задержку. | `api.scheduler.run_later(5000, |
run_timer(interval_ms, f) |
Повторяющийся таймер. | `api.scheduler.run_timer(60000, |
| Метод | Описание | Пример |
|---|---|---|
save_default(path, contents) |
Создать файл, если нет. | api.config.save_default("config.yml", DEFAULT); |
load_yaml<T>(path) |
Загрузить YAML в структуру. | let cfg: Cfg = api.config.load_yaml("config.yml")?; |
data_dir() |
Папка данных плагина. | api.config.data_dir() |
| Метод | Описание | Пример |
|---|---|---|
counter(name, help) |
Создать counter. | api.metrics.counter("x_total", "help")?; |
gauge(name, help) |
Создать gauge. | api.metrics.gauge("x", "help")?; |
histogram(name, help, buckets) |
Создать histogram. | api.metrics.histogram("x", "help", vec![...])?; |
| Метод | Описание |
|---|---|
send_message |
Чат‑сообщение игроку. |
send_title |
Title + subtitle. |
send_actionbar |
Actionbar. |
set_tab_list |
Заголовок/футер таба. |