feat: 使用 guava 的 EventBus
This commit is contained in:
@@ -6,7 +6,7 @@ dependencies {
|
||||
api(project(":ball-common")) { isTransitive = false }
|
||||
compileOnly("net.md-5:bungeecord-api:+")
|
||||
|
||||
compileOnly("cn.hamster3.mc.plugin:core-bungeecord:+")
|
||||
compileOnly("cn.hamster3.mc.plugin:core-bungee:+")
|
||||
|
||||
implementation("io.lettuce:lettuce-core:+")
|
||||
}
|
||||
|
@@ -5,7 +5,8 @@ import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
||||
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.BallBungeeListener;
|
||||
import cn.hamster3.mc.plugin.core.bungee.listener.BallBungeeListenerV2;
|
||||
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
@@ -46,9 +47,10 @@ public class HamsterBallPlugin extends Plugin {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeCordListener.INSTANCE);
|
||||
BallAPI.getInstance().getEventBus().register(BallBungeeCordListener.INSTANCE);
|
||||
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeListener.INSTANCE);
|
||||
logger.info("已注册 BallBungeeCordListener");
|
||||
BallAPI.getInstance().getEventBus().register(BallBungeeListenerV2.INSTANCE);
|
||||
logger.info("已注册 BallBungeeListenerV2");
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.ServerOnline.name(),
|
||||
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
|
||||
|
@@ -0,0 +1,88 @@
|
||||
package cn.hamster3.mc.plugin.core.bungee.listener;
|
||||
|
||||
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.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
||||
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.*;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import net.md_5.bungee.event.EventPriority;
|
||||
|
||||
public final class BallBungeeListener implements Listener {
|
||||
public static final BallBungeeListener INSTANCE = new BallBungeeListener();
|
||||
|
||||
private BallBungeeListener() {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPreLogin(PreLoginEvent event) {
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPreLogin.name(),
|
||||
new BallPlayerPreLoginEvent(event.getConnection().getName())
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onLogin(LoginEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
PendingConnection connection = event.getConnection();
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerLogin.name(),
|
||||
new BallPlayerLoginEvent(new BallPlayerInfo(
|
||||
connection.getUniqueId(), connection.getName(), "connecting",
|
||||
BallAPI.getInstance().getLocalServerId(), true
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPostLogin(PostLoginEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPostLogin.name(),
|
||||
new BallPlayerPostLoginEvent(playerInfo)
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onServerConnect(ServerConnectEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getTarget().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPreConnectServer.name(),
|
||||
new BallPlayerPreConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName())
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onServerConnected(ServerConnectedEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getServer().getInfo().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPostConnectServer.name(),
|
||||
new BallPlayerPostConnectServerEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPlayerDisconnect(PlayerDisconnectEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, false);
|
||||
BallAPI.getInstance().sendBallMessage(BallAPI.BALL_CHANNEL, BallActions.BallPlayerLogout.name(),
|
||||
new BallPlayerLogoutEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
}
|
@@ -1,13 +1,9 @@
|
||||
package cn.hamster3.mc.plugin.core.bungee.listener;
|
||||
|
||||
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.BallServerType;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.BallActions;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.operate.*;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
||||
import cn.hamster3.mc.plugin.core.bungee.HamsterBallPlugin;
|
||||
import cn.hamster3.mc.plugin.core.bungee.util.BallBungeeCordUtils;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.audience.Audience;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
||||
@@ -15,87 +11,14 @@ import com.google.common.eventbus.Subscribe;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.*;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import net.md_5.bungee.event.EventPriority;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public final class BallBungeeCordListener implements Listener {
|
||||
public static final BallBungeeCordListener INSTANCE = new BallBungeeCordListener();
|
||||
public class BallBungeeListenerV2 {
|
||||
public static final BallBungeeListenerV2 INSTANCE = new BallBungeeListenerV2();
|
||||
|
||||
private BallBungeeCordListener() {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPreLogin(PreLoginEvent event) {
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPreLogin.name(),
|
||||
new BallPlayerPreLoginEvent(event.getConnection().getName())
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onLogin(LoginEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
PendingConnection connection = event.getConnection();
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerLogin.name(),
|
||||
new BallPlayerLoginEvent(new BallPlayerInfo(
|
||||
connection.getUniqueId(), connection.getName(), "connecting",
|
||||
BallAPI.getInstance().getLocalServerId(), true
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPostLogin(PostLoginEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPostLogin.name(),
|
||||
new BallPlayerPostLoginEvent(playerInfo)
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onServerConnect(ServerConnectEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getTarget().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL, BallActions.BallPlayerPreConnectServer.name(),
|
||||
new BallPlayerPreConnectServerEvent(playerInfo, playerInfo.getGameServer(), event.getTarget().getName())
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onServerConnected(ServerConnectedEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, true);
|
||||
playerInfo.setGameServer(event.getServer().getInfo().getName());
|
||||
BallAPI.getInstance().sendBallMessage(
|
||||
BallAPI.BALL_CHANNEL,
|
||||
BallActions.BallPlayerPostConnectServer.name(),
|
||||
new BallPlayerPostConnectServerEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onPlayerDisconnect(PlayerDisconnectEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
BallPlayerInfo playerInfo = BallBungeeCordUtils.getPlayerInfo(player, false);
|
||||
BallAPI.getInstance().sendBallMessage(BallAPI.BALL_CHANNEL, BallActions.BallPlayerLogout.name(),
|
||||
new BallPlayerLogoutEvent(playerInfo)
|
||||
);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
private BallBungeeListenerV2() {
|
||||
}
|
||||
|
||||
@Subscribe
|
Reference in New Issue
Block a user