Skip to content

Commit 25d03c9

Browse files
committed
Уведомление пользователей о перезагрузке
1 parent deb44c9 commit 25d03c9

4 files changed

Lines changed: 86 additions & 20 deletions

File tree

README.md

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,101 @@
11
# 🧭 AuthCompass
22

3-
**AuthCompass** — это плагин для Minecraft (Paper 1.21.10), который работает совместно с **AuthMe** и **VelocityConnect**.
3+
**AuthCompass** — это плагин для Minecraft (Paper 1.20+), который работает совместно с **AuthMe** и **VelocityConnect**.
44
После успешной авторизации через AuthMe плагин выдаёт игроку **компас**, который при нажатии подключает его к серверу **survival**.
55

6-
---
7-
86
## ⚙️ Зависимости
97

108
Для корректной работы необходимы следующие плагины:
119
- [AuthMe Reloaded](https://www.spigotmc.org/resources/authme-reloaded.6269/)
1210
- И настроенный [VelocityConnect](https://github.com/flyawaymaking/VelocityConnect) на вашем Velocity-сервере
1311

14-
---
15-
1612
## 🚀 Возможности
1713

1814
- ✅ Автоматическая выдача компаса после авторизации
1915
- 🔒 Проверка авторизации через API AuthMe
2016
- ⏱️ Защита от спама нажатием (2 секунды кулдаун)
2117
- 🧰 Защита от выбрасывания и перемещения компаса
2218
- 🌍 Подключение к серверу `survival` через Velocity
23-
24-
---
19+
- 📢 Уведомление игроков о доступности сервера Survival после перезагрузки
20+
- 🔁 Автоматическое подключение игроков с правом `rejoin.reloaded`
2521

2622
## 📦 Установка
2723

2824
1. Скачайте **последний релиз** из раздела [Releases](../../releases).
29-
2. Поместите `.jar` файл в папку `plugins` вашего Paper-сервера.
30-
3. Убедитесь, что на Paper-сервере установлен **AuthMe**.
25+
2. Поместите `.jar` файл в папку `plugins` вашего **Auth-сервера (Paper)**.
26+
3. Убедитесь, что на сервере установлен **AuthMe Reloaded**.
3127
4. Убедитесь, что на Velocity-сервере установлен **VelocityConnect**.
3228
5. Перезапустите сервер.
3329

34-
---
35-
3630
## 🪄 Использование
3731

3832
1. Игрок заходит на сервер и проходит авторизацию через AuthMe.
3933
2. После входа ему автоматически выдаётся компас.
4034
3. При нажатии на компас игрок будет перенаправлен на сервер `survival`.
4135

36+
После перезагрузки сервера **survival**:
37+
38+
- Все игроки на Auth-сервере получают уведомление, что сервер снова доступен.
39+
- Игроки с правом `rejoin.reloaded` автоматически подключаются к серверу `survival`.
40+
4241
> 💡 Компас нельзя выбросить или переместить — он защищён до момента переключения сервера.
4342
44-
---
43+
## 🔔 Отправка уведомления после перезагрузки Survival
4544

46-
## ⚠️ Замечания
45+
Чтобы Auth-сервер узнал, что сервер `survival` снова доступен, можно отправить **PluginMessage** после полной загрузки сервера.
46+
47+
Пример простого плагина для **survival сервера**:
48+
49+
```java
50+
package com.example.survivalnotify;
51+
52+
import com.google.common.io.ByteArrayDataOutput;
53+
import com.google.common.io.ByteStreams;
54+
import org.bukkit.Bukkit;
55+
import org.bukkit.entity.Player;
56+
import org.bukkit.event.Listener;
57+
import org.bukkit.event.server.ServerLoadEvent;
58+
import org.bukkit.plugin.java.JavaPlugin;
4759

48-
- Плагин работает только при корректно настроенном **Velocity** с плагином **VelocityConnect**.
49-
- Название целевого сервера (`survival`) можно изменить в коде (в методе `sendToServer`).
60+
public class SurvivalNotifyPlugin extends JavaPlugin implements Listener {
61+
62+
@Override
63+
public void onEnable() {
64+
Bukkit.getPluginManager().registerEvents(this, this);
65+
getServer().getMessenger().registerOutgoingPluginChannel(this, "authcompass:reload");
66+
}
67+
68+
@org.bukkit.event.EventHandler
69+
public void onServerLoad(ServerLoadEvent event) {
70+
Bukkit.getScheduler().runTaskLater(this, () -> {
71+
Player player = Bukkit.getOnlinePlayers().stream().findFirst().orElse(null);
72+
if (player == null) return;
73+
74+
ByteArrayDataOutput out = ByteStreams.newDataOutput();
75+
out.writeUTF("Reloaded");
76+
77+
player.sendPluginMessage(this, "authcompass:reload", out.toByteArray());
78+
}, 40L);
79+
}
80+
}
81+
````
82+
83+
Этот код:
84+
85+
1. Ждёт полной загрузки сервера (`ServerLoadEvent`)
86+
2. Через 2 секунды отправляет **PluginMessage**
87+
3. AuthCompass на auth сервере:
88+
89+
* уведомляет игроков
90+
* автоматически переподключает игроков с правом `rejoin.reloaded`
91+
92+
## ⚠️ Замечания
5093

51-
---
94+
* Плагин работает только при корректно настроенном **Velocity** с плагином **VelocityConnect**.
95+
* Название целевого сервера (`survival`) можно изменить в коде (в методе `sendToServer`).
96+
* Автоподключение выполняется только для игроков с правом `rejoin.reloaded`.
5297

5398
## 📝 Лицензия
5499

55-
Этот проект распространяется под лицензией **MIT**.
100+
Этот проект распространяется под лицензией **MIT**.
56101
Свободно используйте и модифицируйте плагин при сохранении указания автора.

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
}
44

55
group = 'com.flyaway.authcompass'
6-
version = '1.1.0'
6+
version = '1.2.0'
77

88
java {
99
toolchain {

src/main/java/com/flyaway/authcompass/AuthCompassPlugin.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ public class AuthCompassPlugin extends JavaPlugin implements Listener {
3232
@Override
3333
public void onEnable() {
3434
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "velocity:player");
35+
this.getServer().getMessenger().registerIncomingPluginChannel(this, "authcompass:reload", (channel, player, bytes) -> {
36+
Bukkit.getScheduler().runTask(this, this::onSurvivalReloaded);
37+
});
3538
getServer().getPluginManager().registerEvents(this, this);
3639
getLogger().info("AuthCompass включен!");
3740
}
@@ -180,4 +183,23 @@ private void sendToServer(Player player, String serverName) {
180183
});
181184
}
182185
}
186+
187+
private void onSurvivalReloaded() {
188+
notifyServerOnline();
189+
autoReconnectPlayers();
190+
}
191+
192+
private void notifyServerOnline() {
193+
for (Player player : Bukkit.getOnlinePlayers()) {
194+
player.sendMessage(ChatColor.GREEN + "Сервер Survival снова доступен!");
195+
}
196+
}
197+
198+
private void autoReconnectPlayers() {
199+
for (Player player : Bukkit.getOnlinePlayers()) {
200+
if (player.hasPermission("rejoin.reloaded")) {
201+
sendToServer(player, "survival");
202+
}
203+
}
204+
}
183205
}

src/main/resources/plugin.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
name: AuthCompass
2-
version: 1.1.0
2+
version: 1.2.0
33
main: com.flyaway.authcompass.AuthCompassPlugin
44
api-version: 1.21
55
description: Плагин для перехода на сервер выживания через VelocityConnect
66
author: FlyAwayMaking
77
website: https://github.com/flyawaymaking
88
depend: [AuthMe]
9-
commands: {}

0 commit comments

Comments
 (0)