feat: 支持新版仓鼠球

This commit is contained in:
2023-11-08 19:21:56 +08:00
parent 0510f23821
commit a82f1c734f
21 changed files with 187 additions and 170 deletions

View File

@@ -3,5 +3,5 @@ org.gradle.jvmargs=-Xmx2G
spigot_api_version=1.19.4-R0.1-SNAPSHOT spigot_api_version=1.19.4-R0.1-SNAPSHOT
bungeecord_api_version=1.19-R0.1-SNAPSHOT bungeecord_api_version=1.19-R0.1-SNAPSHOT
hamster_core_version=1.1.0-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 placeholder_api_version=2.11.2

View File

@@ -1,6 +1,6 @@
version = '1.0.0' version = '1.1.0'
setArchivesBaseName("HamsterAuto-ServerInfo") setArchivesBaseName("HamsterAuto-ServerInfo")
dependencies { dependencies {
compileOnly "cn.hamster3.mc.plugin:ball-common:${hamster_ball_version}" compileOnly "cn.hamster3.mc.plugin:ball-bungeecord:${hamster_ball_version}"
} }

View File

@@ -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.api.BallAPI;
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo; 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.listener.BallListener;
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;
public class ServerInfoPlugin extends Plugin implements BallListener { public class ServerInfoPlugin extends Plugin {
private static ServerInfoPlugin instance; private static ServerInfoPlugin instance;
public static ServerInfoPlugin getInstance() { public static ServerInfoPlugin getInstance() {
return instance; return instance;
} }
@Override @Override
public void onLoad() { public void onLoad() {
instance = this; instance = this;
@@ -33,6 +31,6 @@ public class ServerInfoPlugin extends Plugin implements BallListener {
ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo)); ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo));
getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置."); getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置.");
} }
BallAPI.getInstance().addListener(ServerInfoListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerListener(this, ServerInfoListener.INSTANCE);
} }
} }

View File

@@ -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.ServerInfoPlugin;
import cn.hamster3.mc.plugin.auto.server.info.util.ServerInfoUtils; 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.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.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.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo; 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; import java.util.Map;
public class ServerInfoListener implements BallListener { public class ServerInfoListener implements Listener {
public static final ServerInfoListener INSTANCE = new ServerInfoListener(); public static final ServerInfoListener INSTANCE = new ServerInfoListener();
private ServerInfoListener() { private ServerInfoListener() {
} }
@Override @EventHandler
public void onServerOnline(@NotNull ServerOnlineEvent event) { public void onServerOnline(ServerOnlineEvent event) {
BallServerInfo serverInfo = event.getServerInfo(); BallServerInfo serverInfo = event.getServerInfo();
if (serverInfo.getType() != BallServerType.GAME) { if (serverInfo.getType() != BallServerType.GAME) {
return; return;
} }
ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo)); ProxyServer.getInstance().getServers().put(serverInfo.getId(), ServerInfoUtils.getServerInfo(serverInfo));
ServerInfoPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置."); ServerInfoPlugin.getInstance().getLogger().info("已添加子服 " + serverInfo.getId() + " 的接入点配置");
} }
@Override @EventHandler
public void onServerOffline(@NotNull ServerOfflineEvent event) { public void onServerOffline(ServerOfflineEvent event) {
BallServerInfo info = event.getServerInfo();
String id = info.getId();
Map<String, ServerInfo> map = ProxyServer.getInstance().getServers(); Map<String, ServerInfo> map = ProxyServer.getInstance().getServers();
if (map.remove(event.getServerID()) != null) { if (map.remove(id) != null) {
ServerInfoPlugin.getInstance().getLogger().info("已移除子服 " + event.getServerID() + " 的接入点配置."); ServerInfoPlugin.getInstance().getLogger().info("已移除子服 " + id + " 的接入点配置");
} }
} }
} }

View File

@@ -1,9 +1,10 @@
version = '1.2.0' version = '1.3.0'
setArchivesBaseName("HamsterBall-Bridge") setArchivesBaseName("HamsterBall-Bridge")
dependencies { 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: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}" compileOnly "me.clip:placeholderapi:${placeholder_api_version}"
} }

View File

@@ -1,20 +1,12 @@
package cn.hamster3.service.bukkit; 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.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.hook.ServicePlaceholderHook;
import cn.hamster3.service.bukkit.listener.BridgeListener;
import cn.hamster3.service.bukkit.listener.ServiceMainListener; import cn.hamster3.service.bukkit.listener.ServiceMainListener;
import cn.hamster3.service.common.entity.ServiceMessageInfo;
import cn.hamster3.service.common.util.ServiceLogUtils; import cn.hamster3.service.common.util.ServiceLogUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
public class BallBridgePlugin extends JavaPlugin { public class BallBridgePlugin extends JavaPlugin {
private static BallBridgePlugin instance; private static BallBridgePlugin instance;
@@ -31,30 +23,8 @@ public class BallBridgePlugin extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
BallAPI.getInstance().addListener(new BallListener() { ServiceCommand.INSTANCE.register();
@Override Bukkit.getPluginManager().registerEvents(BridgeListener.INSTANCE, this);
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();
Bukkit.getPluginManager().registerEvents(ServiceMainListener.INSTANCE, this); Bukkit.getPluginManager().registerEvents(ServiceMainListener.INSTANCE, this);
Bukkit.getScheduler().runTask(this, () -> { Bukkit.getScheduler().runTask(this, () -> {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {

View File

@@ -1,7 +1,7 @@
package cn.hamster3.service.bukkit.api; package cn.hamster3.service.bukkit.api;
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.BallMessage;
import cn.hamster3.service.bukkit.BallBridgePlugin; import cn.hamster3.service.bukkit.BallBridgePlugin;
import cn.hamster3.service.bukkit.data.BukkitLocation; import cn.hamster3.service.bukkit.data.BukkitLocation;
import cn.hamster3.service.common.data.ServiceLocation; import cn.hamster3.service.common.data.ServiceLocation;
@@ -27,7 +27,7 @@ public abstract class ServiceMessageAPI {
* @param tag 标签 * @param tag 标签
*/ */
public static void subscribeTag(String 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 标签 * @param tag 标签
*/ */
public static void unsubscribeTag(String 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 附加参数 * @param content 附加参数
*/ */
public static void sendServiceMessage(String tag, String action, JsonElement content) { public static void sendServiceMessage(String tag, String action, JsonElement content) {
BallAPI.getInstance().sendBallMessage( BallAPI.getInstance().sendBallMessage(tag, new BallMessage(action, content), false);
new BallMessageInfo(
tag,
BallAPI.getInstance().getLocalServerId(),
null,
null,
action,
content
), false
);
} }
/** /**
@@ -100,16 +91,14 @@ public abstract class ServiceMessageAPI {
* @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回) * @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回)
*/ */
public static void sendServiceMessage(ServiceMessageInfo info, boolean block) { public static void sendServiceMessage(ServiceMessageInfo info, boolean block) {
BallAPI.getInstance().sendBallMessage( BallMessage message = new BallMessage(
new BallMessageInfo( info.getSenderInfo().getName(),
info.getSenderInfo().getName(), info.getToServer(),
BallAPI.getInstance().getLocalServerId(), null,
null, info.getAction(),
null, info.getContent()
info.getAction(),
info.getContent()
), block
); );
BallAPI.getInstance().sendBallMessage(info.getTag(), message, block);
} }
/** /**

View File

@@ -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()
)));
}
}

View File

@@ -1,18 +1,11 @@
package cn.hamster3.service.bungee; 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.command.ServiceCommand;
import cn.hamster3.service.bungee.event.MessageReceivedEvent; import cn.hamster3.service.bungee.listener.BridgeListener;
import cn.hamster3.service.bungee.event.MessageSentEvent;
import cn.hamster3.service.bungee.listener.ServiceMainListener; import cn.hamster3.service.bungee.listener.ServiceMainListener;
import cn.hamster3.service.common.entity.ServiceMessageInfo;
import cn.hamster3.service.common.util.ServiceLogUtils; import cn.hamster3.service.common.util.ServiceLogUtils;
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;
import org.jetbrains.annotations.NotNull;
public class BallBridgePlugin extends Plugin { public class BallBridgePlugin extends Plugin {
public static void main(String[] args) { public static void main(String[] args) {
@@ -25,29 +18,7 @@ public class BallBridgePlugin extends Plugin {
@Override @Override
public void onEnable() { public void onEnable() {
BallAPI.getInstance().addListener(new BallListener() { ProxyServer.getInstance().getPluginManager().registerListener(this, BridgeListener.INSTANCE);
@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, ServiceMainListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerListener(this, ServiceMainListener.INSTANCE);
ProxyServer.getInstance().getPluginManager().registerCommand(this, ServiceCommand.INSTANCE); ProxyServer.getInstance().getPluginManager().registerCommand(this, ServiceCommand.INSTANCE);
} }

View File

@@ -1,7 +1,7 @@
package cn.hamster3.service.bungee.api; package cn.hamster3.service.bungee.api;
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.BallMessage;
import cn.hamster3.service.common.data.ServiceLocation; import cn.hamster3.service.common.data.ServiceLocation;
import cn.hamster3.service.common.data.ServicePlayerInfo; import cn.hamster3.service.common.data.ServicePlayerInfo;
import cn.hamster3.service.common.entity.ServiceMessageInfo; import cn.hamster3.service.common.entity.ServiceMessageInfo;
@@ -77,16 +77,7 @@ public abstract class ServiceMessageAPI {
* @param content 附加参数 * @param content 附加参数
*/ */
public static void sendServiceMessage(String tag, String action, JsonElement content) { public static void sendServiceMessage(String tag, String action, JsonElement content) {
BallAPI.getInstance().sendBallMessage( BallAPI.getInstance().sendBallMessage(tag, new BallMessage(action, content), false);
new BallMessageInfo(
tag,
BallAPI.getInstance().getLocalServerId(),
null,
null,
action,
content
), false
);
} }
/** /**
@@ -96,16 +87,14 @@ public abstract class ServiceMessageAPI {
* @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回) * @param block 是否阻塞(即必须等待消息发送完成,该方法才会返回)
*/ */
public static void sendServiceMessage(ServiceMessageInfo info, boolean block) { public static void sendServiceMessage(ServiceMessageInfo info, boolean block) {
BallAPI.getInstance().sendBallMessage( BallMessage message = new BallMessage(
new BallMessageInfo( info.getSenderInfo().getName(),
info.getSenderInfo().getName(), info.getToServer(),
BallAPI.getInstance().getLocalServerId(), null,
null, info.getAction(),
null, info.getContent()
info.getAction(),
info.getContent()
), block
); );
BallAPI.getInstance().sendBallMessage(info.getTag(), message, block);
} }
/** /**

View File

@@ -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()
)));
}
}

View File

@@ -1,5 +1,6 @@
package cn.hamster3.service.common.entity; 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 cn.hamster3.mc.plugin.core.common.util.CoreUtils;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
@@ -197,6 +198,6 @@ public class ServiceMessageInfo {
@Override @Override
public String toString() { public String toString() {
return CoreUtils.GSON.toJson(this); return CoreAPI.getInstance().getGson().toJson(this);
} }
} }

View File

@@ -1,4 +1,4 @@
version '1.0.0-SNAPSHOT' version '1.1.0'
setArchivesBaseName("HamsterLobby") setArchivesBaseName("HamsterLobby")
dependencies { dependencies {
@@ -7,4 +7,5 @@ dependencies {
compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_core_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-bukkit:${hamster_ball_version}"
compileOnly "cn.hamster3.mc.plugin:ball-bungeecord:${hamster_ball_version}"
} }

View File

@@ -17,12 +17,12 @@ public class LobbyPlugin extends JavaPlugin {
@Override @Override
public void onLoad() { public void onLoad() {
instance = this; instance = this;
BallAPI.getInstance().addListener(ServiceListener.INSTANCE);
} }
@Override @Override
public void onEnable() { public void onEnable() {
Bukkit.getPluginManager().registerEvents(MainListener.INSTANCE, this); Bukkit.getPluginManager().registerEvents(MainListener.INSTANCE, this);
Bukkit.getPluginManager().registerEvents(ServiceListener.INSTANCE, this);
Bukkit.getPluginManager().registerEvents(ProtectListener.INSTANCE, this); Bukkit.getPluginManager().registerEvents(ProtectListener.INSTANCE, this);
BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby"); BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby");
} }

View File

@@ -1,21 +1,21 @@
package cn.hamster3.mc.plugin.lobby.bukkit.listener; 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.api.BallAPI;
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo; 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.server.ServerOnlineEvent;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
import cn.hamster3.mc.plugin.lobby.bukkit.LobbyPlugin; 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(); public static final ServiceListener INSTANCE = new ServiceListener();
private ServiceListener() { private ServiceListener() {
} }
@Override @EventHandler(ignoreCancelled = true)
public void onServerOnline(@NotNull ServerOnlineEvent event) { public void onServerOnline(ServerOnlineEvent event) {
BallServerInfo info = event.getServerInfo(); BallServerInfo info = event.getServerInfo();
if (info.getType() != BallServerType.PROXY) { if (info.getType() != BallServerType.PROXY) {
return; return;
@@ -23,4 +23,5 @@ public class ServiceListener implements BallListener {
BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby"); BallAPI.getInstance().sendBallMessage("HamsterLobby", "registerLobby");
LobbyPlugin.getInstance().getLogger().info("代理端 " + info.getName() + " 已上线,发送大厅服注册消息。"); LobbyPlugin.getInstance().getLogger().info("代理端 " + info.getName() + " 已上线,发送大厅服注册消息。");
} }
} }

View File

@@ -24,8 +24,9 @@ public class LobbyPlugin extends Plugin {
@Override @Override
public void onEnable() { public void onEnable() {
BallAPI.getInstance().addListener(ServiceListener.INSTANCE); BallAPI.getInstance().subscribe("HamsterLobby");
ProxyServer.getInstance().setReconnectHandler(LobbyReconnectHandler.INSTANCE); ProxyServer.getInstance().setReconnectHandler(LobbyReconnectHandler.INSTANCE);
ProxyServer.getInstance().getPluginManager().registerListener(this, ServiceListener.INSTANCE);
ProxyServer.getInstance().getPluginManager().registerListener(this, MainListener.INSTANCE); ProxyServer.getInstance().getPluginManager().registerListener(this, MainListener.INSTANCE);
} }
} }

View File

@@ -1,25 +1,28 @@
package cn.hamster3.mc.plugin.lobby.bungee.listener; package cn.hamster3.mc.plugin.lobby.bungee.listener;
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; import cn.hamster3.mc.plugin.ball.bungee.event.MessageReceiveEvent;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent; import cn.hamster3.mc.plugin.ball.bungee.event.server.ServerOfflineEvent;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.mc.plugin.ball.common.data.BallMessage;
import cn.hamster3.mc.plugin.lobby.bungee.LobbyPlugin; 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(); public static final ServiceListener INSTANCE = new ServiceListener();
private ServiceListener() { private ServiceListener() {
} }
@Override
public void onMessageReceived(@NotNull BallMessageInfo event) { @EventHandler
public void onMessageReceive(MessageReceiveEvent event) {
if (!"HamsterLobby".equals(event.getChannel())) { if (!"HamsterLobby".equals(event.getChannel())) {
return; return;
} }
switch (event.getAction()) { BallMessage ballMessage = event.getMessage();
switch (ballMessage.getAction()) {
case "registerLobby": { case "registerLobby": {
String senderID = event.getSenderID(); String senderID = ballMessage.getSenderID();
LobbyPlugin.LOBBY_SERVERS.add(senderID); LobbyPlugin.LOBBY_SERVERS.add(senderID);
LobbyPlugin.getInstance().getLogger().info("已添加大厅服务器: " + senderID); LobbyPlugin.getInstance().getLogger().info("已添加大厅服务器: " + senderID);
break; break;
@@ -30,9 +33,9 @@ public class ServiceListener implements BallListener {
} }
} }
@Override @EventHandler
public void onServerOffline(@NotNull ServerOfflineEvent event) { public void onServerOffline(ServerOfflineEvent event) {
String serverID = event.getServerID(); String serverID = event.getServerInfo().getId();
if (LobbyPlugin.LOBBY_SERVERS.remove(serverID)) { if (LobbyPlugin.LOBBY_SERVERS.remove(serverID)) {
LobbyPlugin.getInstance().getLogger().info("已移除大厅服务器: " + serverID); LobbyPlugin.getInstance().getLogger().info("已移除大厅服务器: " + serverID);
} }

View File

@@ -1,7 +1,7 @@
version = '1.0.0' version = '1.1.0'
setArchivesBaseName("HamsterTPA") setArchivesBaseName("HamsterTPA")
dependencies { dependencies {
compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_ball_version}" compileOnly "cn.hamster3.mc.plugin:core-bukkit:${hamster_core_version}"
compileOnly "cn.hamster3.mc.plugin:ball-common:${hamster_ball_version}" compileOnly "cn.hamster3.mc.plugin:ball-bukkit:${hamster_ball_version}"
} }

View File

@@ -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.config.ConfigManager;
import cn.hamster3.mc.plugin.tpa.core.DataManager; import cn.hamster3.mc.plugin.tpa.core.DataManager;
import cn.hamster3.mc.plugin.tpa.listener.MainListener; import cn.hamster3.mc.plugin.tpa.listener.MainListener;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public class HamsterTPAPlugin extends JavaPlugin { public class HamsterTPAPlugin extends JavaPlugin {
@@ -26,9 +27,10 @@ public class HamsterTPAPlugin extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
BallAPI.getInstance().addListener(MainListener.INSTANCE); TPACommand.INSTANCE.register();
TPACommand.INSTANCE.hook(); TPAcceptCommand.INSTANCE.register();
TPAcceptCommand.INSTANCE.hook(); TPDenyCommand.INSTANCE.register();
TPDenyCommand.INSTANCE.hook(); Bukkit.getPluginManager().registerEvents(MainListener.INSTANCE, this);
BallAPI.getInstance().subscribe(BALL_CHANNEL);
} }
} }

View File

@@ -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.ball.common.entity.BallPlayerInfo;
import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand;
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; 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.core.lib.net.kyori.adventure.text.TextReplacementConfig;
import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin; import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin;
import cn.hamster3.mc.plugin.tpa.config.ConfigManager; import cn.hamster3.mc.plugin.tpa.config.ConfigManager;
@@ -78,7 +78,7 @@ public final class TPACommand extends ParentCommand {
.replacement(player.getName()) .replacement(player.getName())
.build()), .build()),
false); false);
CoreUtils.SCHEDULED_EXECUTOR.schedule( CoreAPI.getInstance().getScheduledService().schedule(
new TimeoutThread(uuid, playerInfo.getUuid()), new TimeoutThread(uuid, playerInfo.getUuid()),
ConfigManager.getTimeout(), ConfigManager.getTimeout(),
TimeUnit.MILLISECONDS TimeUnit.MILLISECONDS

View File

@@ -1,28 +1,30 @@
package cn.hamster3.mc.plugin.tpa.listener; package cn.hamster3.mc.plugin.tpa.listener;
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; import cn.hamster3.mc.plugin.ball.bukkit.event.MessageReceiveEvent;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.mc.plugin.ball.common.data.BallMessage;
import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin; import cn.hamster3.mc.plugin.tpa.HamsterTPAPlugin;
import cn.hamster3.mc.plugin.tpa.core.DataManager; import cn.hamster3.mc.plugin.tpa.core.DataManager;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import org.jetbrains.annotations.NotNull; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
public final class MainListener implements BallListener { public final class MainListener implements Listener {
public static final MainListener INSTANCE = new MainListener(); public static final MainListener INSTANCE = new MainListener();
private MainListener() { private MainListener() {
} }
@Override @EventHandler(ignoreCancelled = true)
public void onMessageReceived(@NotNull BallMessageInfo event) { public void onMessageReceive(MessageReceiveEvent event) {
if (!HamsterTPAPlugin.BALL_CHANNEL.equals(event.getChannel())) { if (!HamsterTPAPlugin.BALL_CHANNEL.equals(event.getChannel())) {
return; return;
} }
switch (event.getAction()) { BallMessage ballMessage = event.getMessage();
switch (ballMessage.getAction()) {
case "setPlayerUseTime": { case "setPlayerUseTime": {
JsonObject object = event.getContentAsJsonObject(); JsonObject object = ballMessage.getContentAsJsonObject();
DataManager.setPlayerUseTime( DataManager.setPlayerUseTime(
UUID.fromString(object.get("uuid").getAsString()), UUID.fromString(object.get("uuid").getAsString()),
object.get("time").getAsLong(), object.get("time").getAsLong(),
@@ -31,7 +33,7 @@ public final class MainListener implements BallListener {
break; break;
} }
case "sendTPA": { case "sendTPA": {
JsonObject object = event.getContentAsJsonObject(); JsonObject object = ballMessage.getContentAsJsonObject();
DataManager.sendTPA( DataManager.sendTPA(
UUID.fromString(object.get("sender").getAsString()), UUID.fromString(object.get("sender").getAsString()),
UUID.fromString(object.get("target").getAsString()), UUID.fromString(object.get("target").getAsString()),
@@ -41,7 +43,7 @@ public final class MainListener implements BallListener {
break; break;
} }
case "clearTPAList": { case "clearTPAList": {
DataManager.clearTPAList(event.getContentAsUUID(), false); DataManager.clearTPAList(ballMessage.getContentAsUUID(), false);
break; break;
} }
case "": { case "": {