feat: 自动添加接入 ball 的子服接入点配置
This commit is contained in:
@@ -1,7 +1,11 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bungee;
|
package cn.hamster3.mc.plugin.core.bungee;
|
||||||
|
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
||||||
import cn.hamster3.mc.plugin.core.bungee.api.BallBungeeCordAPI;
|
import cn.hamster3.mc.plugin.core.bungee.api.BallBungeeCordAPI;
|
||||||
import cn.hamster3.mc.plugin.core.bungee.listener.BallBungeeCordListener;
|
import cn.hamster3.mc.plugin.core.bungee.listener.BallBungeeCordListener;
|
||||||
|
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
|
|
||||||
@@ -34,6 +38,13 @@ public class HamsterBallPlugin extends Plugin {
|
|||||||
Logger logger = getLogger();
|
Logger logger = getLogger();
|
||||||
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeCordListener.INSTANCE);
|
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeCordListener.INSTANCE);
|
||||||
logger.info("已注册 BallBungeeCordListener.");
|
logger.info("已注册 BallBungeeCordListener.");
|
||||||
|
for (BallServerInfo serverInfo : BallAPI.getInstance().getAllServerInfo().values()) {
|
||||||
|
if (serverInfo.getType() != BallServerType.GAME) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ProxyServer.getInstance().getServers().put(serverInfo.getId(), BallBungeeCordUtils.getServerInfo(serverInfo));
|
||||||
|
HamsterBallPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置.");
|
||||||
|
}
|
||||||
logger.info("HamsterBall 已启动.");
|
logger.info("HamsterBall 已启动.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,10 +3,14 @@ package cn.hamster3.mc.plugin.core.bungee.listener;
|
|||||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||||
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo;
|
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo;
|
||||||
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo;
|
||||||
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
||||||
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
|
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
|
||||||
import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
||||||
import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
|
import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
|
||||||
|
import cn.hamster3.mc.plugin.core.bungee.HamsterBallPlugin;
|
||||||
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
||||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||||
import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects;
|
import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects;
|
||||||
@@ -15,6 +19,7 @@ import net.kyori.adventure.audience.Audience;
|
|||||||
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.event.*;
|
import net.md_5.bungee.api.event.*;
|
||||||
import net.md_5.bungee.api.plugin.Listener;
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
@@ -22,6 +27,7 @@ import net.md_5.bungee.event.EventHandler;
|
|||||||
import net.md_5.bungee.event.EventPriority;
|
import net.md_5.bungee.event.EventPriority;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class BallBungeeCordListener extends BallListener implements Listener {
|
public final class BallBungeeCordListener extends BallListener implements Listener {
|
||||||
@@ -30,11 +36,6 @@ public final class BallBungeeCordListener extends BallListener implements Listen
|
|||||||
private BallBungeeCordListener() {
|
private BallBungeeCordListener() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onReconnectFailed() {
|
|
||||||
ProxyServer.getInstance().stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReceived(@NotNull BallMessageInfo info) {
|
public void onMessageReceived(@NotNull BallMessageInfo info) {
|
||||||
switch (info.getAction()) {
|
switch (info.getAction()) {
|
||||||
@@ -85,8 +86,8 @@ public final class BallBungeeCordListener extends BallListener implements Listen
|
|||||||
}
|
}
|
||||||
case SendMessageToPlayerEvent.ACTION: {
|
case SendMessageToPlayerEvent.ACTION: {
|
||||||
SendMessageToPlayerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), SendMessageToPlayerEvent.class);
|
SendMessageToPlayerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), SendMessageToPlayerEvent.class);
|
||||||
for (UUID uuid : event.getReceiver()) {
|
for (UUID receiver : event.getReceivers()) {
|
||||||
Audience audience = CoreAPI.getInstance().getAudienceProvider().player(uuid);
|
Audience audience = CoreAPI.getInstance().getAudienceProvider().player(receiver);
|
||||||
event.getMessage().show(audience);
|
event.getMessage().show(audience);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -94,6 +95,29 @@ public final class BallBungeeCordListener extends BallListener implements Listen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReconnectFailed() {
|
||||||
|
ProxyServer.getInstance().stop("HamsterBall 重连失败.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServerOnline(@NotNull ServerOnlineEvent event) {
|
||||||
|
BallServerInfo serverInfo = event.getServerInfo();
|
||||||
|
if (serverInfo.getType() != BallServerType.GAME) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProxyServer.getInstance().getServers().put(serverInfo.getId(), BallBungeeCordUtils.getServerInfo(serverInfo));
|
||||||
|
HamsterBallPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
||||||
|
Map<String, ServerInfo> map = ProxyServer.getInstance().getServers();
|
||||||
|
if (map.remove(event.getServerID()) != null) {
|
||||||
|
HamsterBallPlugin.getInstance().getLogger().info("已移除子服 " + event.getServerID() + " 的接入点配置.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void onPreLogin(PreLoginEvent event) {
|
public void onPreLogin(PreLoginEvent event) {
|
||||||
BallAPI.getInstance().sendBallMessage(
|
BallAPI.getInstance().sendBallMessage(
|
||||||
|
@@ -2,9 +2,14 @@ package cn.hamster3.mc.plugin.core.bungee.util;
|
|||||||
|
|
||||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||||
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||||
|
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo;
|
||||||
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.connection.Server;
|
import net.md_5.bungee.api.connection.Server;
|
||||||
|
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
public final class BallBungeeCordUtils {
|
public final class BallBungeeCordUtils {
|
||||||
private BallBungeeCordUtils() {
|
private BallBungeeCordUtils() {
|
||||||
}
|
}
|
||||||
@@ -19,4 +24,13 @@ public final class BallBungeeCordUtils {
|
|||||||
online
|
online
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ServerInfo getServerInfo(BallServerInfo serverInfo) {
|
||||||
|
return ProxyServer.getInstance().constructServerInfo(
|
||||||
|
serverInfo.getId(),
|
||||||
|
new InetSocketAddress(serverInfo.getHost(), serverInfo.getPort()),
|
||||||
|
serverInfo.getName(),
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user