From a82f1c734f1a2a5c30edbbc8d69a1c3ca2469764 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Wed, 8 Nov 2023 19:21:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=96=B0=E7=89=88?= =?UTF-8?q?=E4=BB=93=E9=BC=A0=E7=90=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- hamster-auto-server-info/build.gradle | 4 +- .../auto/server/info/ServerInfoPlugin.java | 6 +-- .../info/listener/ServerInfoListener.java | 26 +++++------ hamster-ball-bridge/build.gradle | 5 ++- .../service/bukkit/BallBridgePlugin.java | 36 ++-------------- .../service/bukkit/api/ServiceMessageAPI.java | 33 +++++--------- .../bukkit/listener/BridgeListener.java | 43 +++++++++++++++++++ .../service/bungee/BallBridgePlugin.java | 33 +------------- .../service/bungee/api/ServiceMessageAPI.java | 29 ++++--------- .../bungee/listener/BridgeListener.java | 43 +++++++++++++++++++ .../common/entity/ServiceMessageInfo.java | 3 +- hamster-lobby/build.gradle | 3 +- .../mc/plugin/lobby/bukkit/LobbyPlugin.java | 2 +- .../bukkit/listener/ServiceListener.java | 13 +++--- .../mc/plugin/lobby/bungee/LobbyPlugin.java | 3 +- .../bungee/listener/ServiceListener.java | 29 +++++++------ hamster-tpa/build.gradle | 6 +-- .../mc/plugin/tpa/HamsterTPAPlugin.java | 10 +++-- .../mc/plugin/tpa/command/TPACommand.java | 4 +- .../mc/plugin/tpa/listener/MainListener.java | 24 ++++++----- 21 files changed, 187 insertions(+), 170 deletions(-) create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/listener/BridgeListener.java create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/listener/BridgeListener.java diff --git a/gradle.properties b/gradle.properties index dc1bede..eb6736a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,5 +3,5 @@ org.gradle.jvmargs=-Xmx2G spigot_api_version=1.19.4-R0.1-SNAPSHOT bungeecord_api_version=1.19-R0.1-SNAPSHOT hamster_core_version=1.1.0-SNAPSHOT -hamster_ball_version=1.1.0-SNAPSHOT +hamster_ball_version=1.2.0-SNAPSHOT placeholder_api_version=2.11.2 \ No newline at end of file diff --git a/hamster-auto-server-info/build.gradle b/hamster-auto-server-info/build.gradle index 7933e04..c56a8a2 100644 --- a/hamster-auto-server-info/build.gradle +++ b/hamster-auto-server-info/build.gradle @@ -1,6 +1,6 @@ -version = '1.0.0' +version = '1.1.0' setArchivesBaseName("HamsterAuto-ServerInfo") dependencies { - compileOnly "cn.hamster3.mc.plugin:ball-common:${hamster_ball_version}" + compileOnly "cn.hamster3.mc.plugin:ball-bungeecord:${hamster_ball_version}" } diff --git a/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/ServerInfoPlugin.java b/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/ServerInfoPlugin.java index 8c44d41..e179e0a 100644 --- a/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/ServerInfoPlugin.java +++ b/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/ServerInfoPlugin.java @@ -5,18 +5,16 @@ import cn.hamster3.mc.plugin.auto.server.info.util.ServerInfoUtils; 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.ball.common.listener.BallListener; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Plugin; -public class ServerInfoPlugin extends Plugin implements BallListener { +public class ServerInfoPlugin extends Plugin { private static ServerInfoPlugin instance; public static ServerInfoPlugin getInstance() { return instance; } - @Override public void onLoad() { instance = this; @@ -33,6 +31,6 @@ public class ServerInfoPlugin extends Plugin implements BallListener { ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo)); getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置."); } - BallAPI.getInstance().addListener(ServerInfoListener.INSTANCE); + ProxyServer.getInstance().getPluginManager().registerListener(this, ServerInfoListener.INSTANCE); } } diff --git a/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/listener/ServerInfoListener.java b/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/listener/ServerInfoListener.java index 98df8ef..ed064fc 100644 --- a/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/listener/ServerInfoListener.java +++ b/hamster-auto-server-info/src/main/java/cn/hamster3/mc/plugin/auto/server/info/listener/ServerInfoListener.java @@ -2,38 +2,40 @@ package cn.hamster3.mc.plugin.auto.server.info.listener; import cn.hamster3.mc.plugin.auto.server.info.ServerInfoPlugin; import cn.hamster3.mc.plugin.auto.server.info.util.ServerInfoUtils; +import cn.hamster3.mc.plugin.ball.bungee.event.server.ServerOfflineEvent; +import cn.hamster3.mc.plugin.ball.bungee.event.server.ServerOnlineEvent; 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.event.server.ServerOfflineEvent; -import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent; -import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; -import org.jetbrains.annotations.NotNull; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; import java.util.Map; -public class ServerInfoListener implements BallListener { +public class ServerInfoListener implements Listener { public static final ServerInfoListener INSTANCE = new ServerInfoListener(); private ServerInfoListener() { } - @Override - public void onServerOnline(@NotNull ServerOnlineEvent event) { + @EventHandler + public void onServerOnline(ServerOnlineEvent event) { BallServerInfo serverInfo = event.getServerInfo(); if (serverInfo.getType() != BallServerType.GAME) { return; } ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo)); - ServerInfoPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置."); + ServerInfoPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置"); } - @Override - public void onServerOffline(@NotNull ServerOfflineEvent event) { + @EventHandler + public void onServerOffline(ServerOfflineEvent event) { + BallServerInfo info = event.getServerInfo(); + String id = info.getId(); Map map = ProxyServer.getInstance().getServers(); - if (map.remove(event.getServerID()) != null) { - ServerInfoPlugin.getInstance().getLogger().info("已移除子服 " + event.getServerID() + " 的接入点配置."); + if (map.remove(id) != null) { + ServerInfoPlugin.getInstance().getLogger().info("已移除子服 " + id + " 的接入点配置"); } } } diff --git a/hamster-ball-bridge/build.gradle b/hamster-ball-bridge/build.gradle index 3d0b298..0f92c21 100644 --- a/hamster-ball-bridge/build.gradle +++ b/hamster-ball-bridge/build.gradle @@ -1,9 +1,10 @@ -version = '1.2.0' +version = '1.3.0' setArchivesBaseName("HamsterBall-Bridge") dependencies { - compileOnly "cn.hamster3.mc.plugin:ball-common:${hamster_ball_version}" compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_core_version}" + compileOnly "cn.hamster3.mc.plugin:ball-bukkit:${hamster_ball_version}" + compileOnly "cn.hamster3.mc.plugin:ball-bungeecord:${hamster_ball_version}" compileOnly "me.clip:placeholderapi:${placeholder_api_version}" } diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java index ca9ec88..478306b 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java @@ -1,20 +1,12 @@ package cn.hamster3.service.bukkit; -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.listener.BallListener; -import cn.hamster3.service.bukkit.api.ServiceInfoAPI; import cn.hamster3.service.bukkit.command.ServiceCommand; -import cn.hamster3.service.bukkit.event.MessageReceivedEvent; -import cn.hamster3.service.bukkit.event.MessageSentEvent; -import cn.hamster3.service.bukkit.event.ServiceConnectEvent; import cn.hamster3.service.bukkit.hook.ServicePlaceholderHook; +import cn.hamster3.service.bukkit.listener.BridgeListener; import cn.hamster3.service.bukkit.listener.ServiceMainListener; -import cn.hamster3.service.common.entity.ServiceMessageInfo; import cn.hamster3.service.common.util.ServiceLogUtils; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; -import org.jetbrains.annotations.NotNull; public class BallBridgePlugin extends JavaPlugin { private static BallBridgePlugin instance; @@ -31,30 +23,8 @@ public class BallBridgePlugin extends JavaPlugin { @Override public void onEnable() { - BallAPI.getInstance().addListener(new BallListener() { - @Override - public void onMessageSend(@NotNull BallMessageInfo event) { - Bukkit.getPluginManager().callEvent(new MessageSentEvent(new ServiceMessageInfo( - ServiceInfoAPI.getSenderInfo(event.getSenderID()), - event.getReceiverID(), - event.getChannel(), - event.getAction(), - event.getContent() - ))); - } - - @Override - public void onMessageReceived(@NotNull BallMessageInfo event) { - Bukkit.getPluginManager().callEvent(new MessageReceivedEvent(new ServiceMessageInfo( - ServiceInfoAPI.getSenderInfo(event.getSenderID()), - event.getReceiverID(), - event.getChannel(), - event.getAction(), - event.getContent() - ))); - } - }); - ServiceCommand.INSTANCE.hook(); + ServiceCommand.INSTANCE.register(); + Bukkit.getPluginManager().registerEvents(BridgeListener.INSTANCE, this); Bukkit.getPluginManager().registerEvents(ServiceMainListener.INSTANCE, this); Bukkit.getScheduler().runTask(this, () -> { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/api/ServiceMessageAPI.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/api/ServiceMessageAPI.java index 738404a..986746f 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/api/ServiceMessageAPI.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/api/ServiceMessageAPI.java @@ -1,7 +1,7 @@ package cn.hamster3.service.bukkit.api; 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.BallMessage; import cn.hamster3.service.bukkit.BallBridgePlugin; import cn.hamster3.service.bukkit.data.BukkitLocation; import cn.hamster3.service.common.data.ServiceLocation; @@ -27,7 +27,7 @@ public abstract class ServiceMessageAPI { * @param tag 标签 */ public static void subscribeTag(String tag) { - sendServiceMessage("HamsterService", "subscribeTag", tag); + BallAPI.getInstance().subscribe(tag); } /** @@ -36,7 +36,7 @@ public abstract class ServiceMessageAPI { * @param tag 标签 */ public static void unsubscribeTag(String tag) { - sendServiceMessage("HamsterService", "unsubscribeTag", tag); + BallAPI.getInstance().unsubscribe(tag); } /** @@ -81,16 +81,7 @@ public abstract class ServiceMessageAPI { * @param content 附加参数 */ public static void sendServiceMessage(String tag, String action, JsonElement content) { - BallAPI.getInstance().sendBallMessage( - new BallMessageInfo( - tag, - BallAPI.getInstance().getLocalServerId(), - null, - null, - action, - content - ), false - ); + BallAPI.getInstance().sendBallMessage(tag, new BallMessage(action, content), false); } /** @@ -100,16 +91,14 @@ public abstract class ServiceMessageAPI { * @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回) */ public static void sendServiceMessage(ServiceMessageInfo info, boolean block) { - BallAPI.getInstance().sendBallMessage( - new BallMessageInfo( - info.getSenderInfo().getName(), - BallAPI.getInstance().getLocalServerId(), - null, - null, - info.getAction(), - info.getContent() - ), block + BallMessage message = new BallMessage( + info.getSenderInfo().getName(), + info.getToServer(), + null, + info.getAction(), + info.getContent() ); + BallAPI.getInstance().sendBallMessage(info.getTag(), message, block); } /** diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/listener/BridgeListener.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/listener/BridgeListener.java new file mode 100644 index 0000000..99d72ba --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/listener/BridgeListener.java @@ -0,0 +1,43 @@ +package cn.hamster3.service.bukkit.listener; + +import cn.hamster3.mc.plugin.ball.bukkit.event.MessageReceiveEvent; +import cn.hamster3.mc.plugin.ball.bukkit.event.MessageSendEvent; +import cn.hamster3.mc.plugin.ball.common.data.BallMessage; +import cn.hamster3.service.bukkit.api.ServiceInfoAPI; +import cn.hamster3.service.bukkit.event.MessageReceivedEvent; +import cn.hamster3.service.bukkit.event.MessageSentEvent; +import cn.hamster3.service.common.entity.ServiceMessageInfo; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class BridgeListener implements Listener { + public static final BridgeListener INSTANCE = new BridgeListener(); + + private BridgeListener() { + } + + @EventHandler + public void onMessageSend(MessageSendEvent event) { + BallMessage ballMessage = event.getMessage(); + Bukkit.getPluginManager().callEvent(new MessageSentEvent(new ServiceMessageInfo( + ServiceInfoAPI.getSenderInfo(ballMessage.getSenderID()), + ballMessage.getReceiverID(), + event.getChannel(), + ballMessage.getAction(), + ballMessage.getContent() + ))); + } + + @EventHandler + public void onMessageReceive(MessageReceiveEvent event) { + BallMessage ballMessage = event.getMessage(); + Bukkit.getPluginManager().callEvent(new MessageReceivedEvent(new ServiceMessageInfo( + ServiceInfoAPI.getSenderInfo(ballMessage.getSenderID()), + ballMessage.getReceiverID(), + event.getChannel(), + ballMessage.getAction(), + ballMessage.getContent() + ))); + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java index f4287ca..09dd6f1 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java @@ -1,18 +1,11 @@ package cn.hamster3.service.bungee; -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.listener.BallListener; -import cn.hamster3.service.bungee.api.ServiceInfoAPI; import cn.hamster3.service.bungee.command.ServiceCommand; -import cn.hamster3.service.bungee.event.MessageReceivedEvent; -import cn.hamster3.service.bungee.event.MessageSentEvent; +import cn.hamster3.service.bungee.listener.BridgeListener; import cn.hamster3.service.bungee.listener.ServiceMainListener; -import cn.hamster3.service.common.entity.ServiceMessageInfo; import cn.hamster3.service.common.util.ServiceLogUtils; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Plugin; -import org.jetbrains.annotations.NotNull; public class BallBridgePlugin extends Plugin { public static void main(String[] args) { @@ -25,29 +18,7 @@ public class BallBridgePlugin extends Plugin { @Override public void onEnable() { - BallAPI.getInstance().addListener(new BallListener() { - @Override - public void onMessageSend(@NotNull BallMessageInfo event) { - ProxyServer.getInstance().getPluginManager().callEvent(new MessageSentEvent(new ServiceMessageInfo( - ServiceInfoAPI.getSenderInfo(event.getSenderID()), - event.getReceiverID(), - event.getChannel(), - event.getAction(), - event.getContent() - ))); - } - - @Override - public void onMessageReceived(@NotNull BallMessageInfo event) { - ProxyServer.getInstance().getPluginManager().callEvent(new MessageReceivedEvent(new ServiceMessageInfo( - ServiceInfoAPI.getSenderInfo(event.getSenderID()), - event.getReceiverID(), - event.getChannel(), - event.getAction(), - event.getContent() - ))); - } - }); + ProxyServer.getInstance().getPluginManager().registerListener(this, BridgeListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerListener(this, ServiceMainListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerCommand(this, ServiceCommand.INSTANCE); } diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/api/ServiceMessageAPI.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/api/ServiceMessageAPI.java index e2dfa4d..19e3253 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/api/ServiceMessageAPI.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/api/ServiceMessageAPI.java @@ -1,7 +1,7 @@ package cn.hamster3.service.bungee.api; 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.BallMessage; import cn.hamster3.service.common.data.ServiceLocation; import cn.hamster3.service.common.data.ServicePlayerInfo; import cn.hamster3.service.common.entity.ServiceMessageInfo; @@ -77,16 +77,7 @@ public abstract class ServiceMessageAPI { * @param content 附加参数 */ public static void sendServiceMessage(String tag, String action, JsonElement content) { - BallAPI.getInstance().sendBallMessage( - new BallMessageInfo( - tag, - BallAPI.getInstance().getLocalServerId(), - null, - null, - action, - content - ), false - ); + BallAPI.getInstance().sendBallMessage(tag, new BallMessage(action, content), false); } /** @@ -96,16 +87,14 @@ public abstract class ServiceMessageAPI { * @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回) */ public static void sendServiceMessage(ServiceMessageInfo info, boolean block) { - BallAPI.getInstance().sendBallMessage( - new BallMessageInfo( - info.getSenderInfo().getName(), - BallAPI.getInstance().getLocalServerId(), - null, - null, - info.getAction(), - info.getContent() - ), block + BallMessage message = new BallMessage( + info.getSenderInfo().getName(), + info.getToServer(), + null, + info.getAction(), + info.getContent() ); + BallAPI.getInstance().sendBallMessage(info.getTag(), message, block); } /** diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/listener/BridgeListener.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/listener/BridgeListener.java new file mode 100644 index 0000000..3555d0f --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/listener/BridgeListener.java @@ -0,0 +1,43 @@ +package cn.hamster3.service.bungee.listener; + +import cn.hamster3.mc.plugin.ball.bungee.event.MessageReceiveEvent; +import cn.hamster3.mc.plugin.ball.bungee.event.MessageSendEvent; +import cn.hamster3.mc.plugin.ball.common.data.BallMessage; +import cn.hamster3.service.bungee.api.ServiceInfoAPI; +import cn.hamster3.service.bungee.event.MessageReceivedEvent; +import cn.hamster3.service.bungee.event.MessageSentEvent; +import cn.hamster3.service.common.entity.ServiceMessageInfo; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; + +public class BridgeListener implements Listener { + public static final BridgeListener INSTANCE = new BridgeListener(); + + private BridgeListener() { + } + + @EventHandler + public void onMessageSend(MessageSendEvent event) { + BallMessage ballMessage = event.getMessage(); + ProxyServer.getInstance().getPluginManager().callEvent(new MessageSentEvent(new ServiceMessageInfo( + ServiceInfoAPI.getSenderInfo(ballMessage.getSenderID()), + ballMessage.getReceiverID(), + event.getChannel(), + ballMessage.getAction(), + ballMessage.getContent() + ))); + } + + @EventHandler + public void onMessageReceive(MessageReceiveEvent event) { + BallMessage ballMessage = event.getMessage(); + ProxyServer.getInstance().getPluginManager().callEvent(new MessageReceivedEvent(new ServiceMessageInfo( + ServiceInfoAPI.getSenderInfo(ballMessage.getSenderID()), + ballMessage.getReceiverID(), + event.getChannel(), + ballMessage.getAction(), + ballMessage.getContent() + ))); + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/common/entity/ServiceMessageInfo.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/common/entity/ServiceMessageInfo.java index f24b006..3b2e011 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/common/entity/ServiceMessageInfo.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/common/entity/ServiceMessageInfo.java @@ -1,5 +1,6 @@ package cn.hamster3.service.common.entity; +import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -197,6 +198,6 @@ public class ServiceMessageInfo { @Override public String toString() { - return CoreUtils.GSON.toJson(this); + return CoreAPI.getInstance().getGson().toJson(this); } } diff --git a/hamster-lobby/build.gradle b/hamster-lobby/build.gradle index 39bd7f9..a5ac950 100644 --- a/hamster-lobby/build.gradle +++ b/hamster-lobby/build.gradle @@ -1,4 +1,4 @@ -version '1.0.0-SNAPSHOT' +version '1.1.0' setArchivesBaseName("HamsterLobby") dependencies { @@ -7,4 +7,5 @@ dependencies { compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_core_version}" compileOnly "cn.hamster3.mc.plugin:ball-bukkit:${hamster_ball_version}" + compileOnly "cn.hamster3.mc.plugin:ball-bungeecord:${hamster_ball_version}" } diff --git a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/LobbyPlugin.java b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/LobbyPlugin.java index 8c3bff5..154fa28 100644 --- a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/LobbyPlugin.java +++ b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/LobbyPlugin.java @@ -17,12 +17,12 @@ public class LobbyPlugin extends JavaPlugin { @Override public void onLoad() { instance = this; - BallAPI.getInstance().addListener(ServiceListener.INSTANCE); } @Override public void onEnable() { Bukkit.getPluginManager().registerEvents(MainListener.INSTANCE, this); + Bukkit.getPluginManager().registerEvents(ServiceListener.INSTANCE, this); Bukkit.getPluginManager().registerEvents(ProtectListener.INSTANCE, this); BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby"); } diff --git a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/listener/ServiceListener.java b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/listener/ServiceListener.java index 46c2d68..546539c 100644 --- a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/listener/ServiceListener.java +++ b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bukkit/listener/ServiceListener.java @@ -1,21 +1,21 @@ package cn.hamster3.mc.plugin.lobby.bukkit.listener; +import cn.hamster3.mc.plugin.ball.bukkit.event.server.ServerOnlineEvent; 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.ball.common.event.server.ServerOnlineEvent; -import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.mc.plugin.lobby.bukkit.LobbyPlugin; -import org.jetbrains.annotations.NotNull; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; -public class ServiceListener implements BallListener { +public class ServiceListener implements Listener { public static final ServiceListener INSTANCE = new ServiceListener(); private ServiceListener() { } - @Override - public void onServerOnline(@NotNull ServerOnlineEvent event) { + @EventHandler(ignoreCancelled = true) + public void onServerOnline(ServerOnlineEvent event) { BallServerInfo info = event.getServerInfo(); if (info.getType() != BallServerType.PROXY) { return; @@ -23,4 +23,5 @@ public class ServiceListener implements BallListener { BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby"); LobbyPlugin.getInstance().getLogger().info("代理端 " + info.getName() + " 已上线,发送大厅服注册消息。"); } + } diff --git a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/LobbyPlugin.java b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/LobbyPlugin.java index 083d5d3..54b06f5 100644 --- a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/LobbyPlugin.java +++ b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/LobbyPlugin.java @@ -24,8 +24,9 @@ public class LobbyPlugin extends Plugin { @Override public void onEnable() { - BallAPI.getInstance().addListener(ServiceListener.INSTANCE); + BallAPI.getInstance().subscribe("HamsterLobby"); ProxyServer.getInstance().setReconnectHandler(LobbyReconnectHandler.INSTANCE); + ProxyServer.getInstance().getPluginManager().registerListener(this, ServiceListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerListener(this, MainListener.INSTANCE); } } diff --git a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/listener/ServiceListener.java b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/listener/ServiceListener.java index bb43401..1cc0312 100644 --- a/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/listener/ServiceListener.java +++ b/hamster-lobby/src/main/java/cn/hamster3/mc/plugin/lobby/bungee/listener/ServiceListener.java @@ -1,25 +1,28 @@ package cn.hamster3.mc.plugin.lobby.bungee.listener; -import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; -import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent; -import cn.hamster3.mc.plugin.ball.common.listener.BallListener; +import cn.hamster3.mc.plugin.ball.bungee.event.MessageReceiveEvent; +import cn.hamster3.mc.plugin.ball.bungee.event.server.ServerOfflineEvent; +import cn.hamster3.mc.plugin.ball.common.data.BallMessage; import cn.hamster3.mc.plugin.lobby.bungee.LobbyPlugin; -import org.jetbrains.annotations.NotNull; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; -public class ServiceListener implements BallListener { +public class ServiceListener implements Listener { public static final ServiceListener INSTANCE = new ServiceListener(); private ServiceListener() { } - @Override - public void onMessageReceived(@NotNull BallMessageInfo event) { + + @EventHandler + public void onMessageReceive(MessageReceiveEvent event) { if (!"HamsterLobby".equals(event.getChannel())) { return; } - switch (event.getAction()) { + BallMessage ballMessage = event.getMessage(); + switch (ballMessage.getAction()) { case "registerLobby": { - String senderID = event.getSenderID(); + String senderID = ballMessage.getSenderID(); LobbyPlugin.LOBBY_SERVERS.add(senderID); LobbyPlugin.getInstance().getLogger().info("已添加大厅服务器: " + senderID); break; @@ -30,11 +33,11 @@ public class ServiceListener implements BallListener { } } - @Override - public void onServerOffline(@NotNull ServerOfflineEvent event) { - String serverID = event.getServerID(); + @EventHandler + public void onServerOffline(ServerOfflineEvent event) { + String serverID = event.getServerInfo().getId(); if (LobbyPlugin.LOBBY_SERVERS.remove(serverID)) { LobbyPlugin.getInstance().getLogger().info("已移除大厅服务器: " + serverID); } } -} +} \ No newline at end of file diff --git a/hamster-tpa/build.gradle b/hamster-tpa/build.gradle index acc40af..3690877 100644 --- a/hamster-tpa/build.gradle +++ b/hamster-tpa/build.gradle @@ -1,7 +1,7 @@ -version = '1.0.0' +version = '1.1.0' setArchivesBaseName("HamsterTPA") dependencies { - compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_ball_version}" - compileOnly "cn.hamster3.mc.plugin:ball-common:${hamster_ball_version}" + compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_core_version}" + compileOnly "cn.hamster3.mc.plugin:ball-bukkit:${hamster_ball_version}" } diff --git a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/HamsterTPAPlugin.java b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/HamsterTPAPlugin.java index 9d128ea..02afc0e 100644 --- a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/HamsterTPAPlugin.java +++ b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/HamsterTPAPlugin.java @@ -7,6 +7,7 @@ import cn.hamster3.mc.plugin.tpa.command.TPDenyCommand; import cn.hamster3.mc.plugin.tpa.config.ConfigManager; import cn.hamster3.mc.plugin.tpa.core.DataManager; import cn.hamster3.mc.plugin.tpa.listener.MainListener; +import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; public class HamsterTPAPlugin extends JavaPlugin { @@ -26,9 +27,10 @@ public class HamsterTPAPlugin extends JavaPlugin { @Override public void onEnable() { - BallAPI.getInstance().addListener(MainListener.INSTANCE); - TPACommand.INSTANCE.hook(); - TPAcceptCommand.INSTANCE.hook(); - TPDenyCommand.INSTANCE.hook(); + TPACommand.INSTANCE.register(); + TPAcceptCommand.INSTANCE.register(); + TPDenyCommand.INSTANCE.register(); + Bukkit.getPluginManager().registerEvents(MainListener.INSTANCE, this); + BallAPI.getInstance().subscribe(BALL_CHANNEL); } } diff --git a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/command/TPACommand.java b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/command/TPACommand.java index 348f0bd..e49207b 100644 --- a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/command/TPACommand.java +++ b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/command/TPACommand.java @@ -4,7 +4,7 @@ import cn.hamster3.mc.plugin.ball.common.api.BallAPI; import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo; import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; -import cn.hamster3.mc.plugin.core.common.util.CoreUtils; +import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.TextReplacementConfig; import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin; import cn.hamster3.mc.plugin.tpa.config.ConfigManager; @@ -78,7 +78,7 @@ public final class TPACommand extends ParentCommand { .replacement(player.getName()) .build()), false); - CoreUtils.SCHEDULED_EXECUTOR.schedule( + CoreAPI.getInstance().getScheduledService().schedule( new TimeoutThread(uuid, playerInfo.getUuid()), ConfigManager.getTimeout(), TimeUnit.MILLISECONDS diff --git a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/listener/MainListener.java b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/listener/MainListener.java index 0e30341..1d5079b 100644 --- a/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/listener/MainListener.java +++ b/hamster-tpa/src/main/java/cn/hamster3/mc/plugin/tpa/listener/MainListener.java @@ -1,28 +1,30 @@ package cn.hamster3.mc.plugin.tpa.listener; -import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; -import cn.hamster3.mc.plugin.ball.common.listener.BallListener; +import cn.hamster3.mc.plugin.ball.bukkit.event.MessageReceiveEvent; +import cn.hamster3.mc.plugin.ball.common.data.BallMessage; import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin; import cn.hamster3.mc.plugin.tpa.core.DataManager; import com.google.gson.JsonObject; -import org.jetbrains.annotations.NotNull; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import java.util.UUID; -public final class MainListener implements BallListener { +public final class MainListener implements Listener { public static final MainListener INSTANCE = new MainListener(); private MainListener() { } - @Override - public void onMessageReceived(@NotNull BallMessageInfo event) { + @EventHandler(ignoreCancelled = true) + public void onMessageReceive(MessageReceiveEvent event) { if (!HamsterTPAPlugin.BALL_CHANNEL.equals(event.getChannel())) { return; } - switch (event.getAction()) { + BallMessage ballMessage = event.getMessage(); + switch (ballMessage.getAction()) { case "setPlayerUseTime": { - JsonObject object = event.getContentAsJsonObject(); + JsonObject object = ballMessage.getContentAsJsonObject(); DataManager.setPlayerUseTime( UUID.fromString(object.get("uuid").getAsString()), object.get("time").getAsLong(), @@ -31,7 +33,7 @@ public final class MainListener implements BallListener { break; } case "sendTPA": { - JsonObject object = event.getContentAsJsonObject(); + JsonObject object = ballMessage.getContentAsJsonObject(); DataManager.sendTPA( UUID.fromString(object.get("sender").getAsString()), UUID.fromString(object.get("target").getAsString()), @@ -41,7 +43,7 @@ public final class MainListener implements BallListener { break; } case "clearTPAList": { - DataManager.clearTPAList(event.getContentAsUUID(), false); + DataManager.clearTPAList(ballMessage.getContentAsUUID(), false); break; } case "": { @@ -49,4 +51,4 @@ public final class MainListener implements BallListener { } } } -} +} \ No newline at end of file