feat: 支持新版仓鼠球
This commit is contained in:
@@ -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
|
@@ -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}"
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 + " 的接入点配置");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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}"
|
||||||
}
|
}
|
||||||
|
@@ -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")) {
|
||||||
|
@@ -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(),
|
||||||
BallAPI.getInstance().getLocalServerId(),
|
info.getToServer(),
|
||||||
null,
|
|
||||||
null,
|
null,
|
||||||
info.getAction(),
|
info.getAction(),
|
||||||
info.getContent()
|
info.getContent()
|
||||||
), block
|
|
||||||
);
|
);
|
||||||
|
BallAPI.getInstance().sendBallMessage(info.getTag(), message, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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()
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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(),
|
||||||
BallAPI.getInstance().getLocalServerId(),
|
info.getToServer(),
|
||||||
null,
|
|
||||||
null,
|
null,
|
||||||
info.getAction(),
|
info.getAction(),
|
||||||
info.getContent()
|
info.getContent()
|
||||||
), block
|
|
||||||
);
|
);
|
||||||
|
BallAPI.getInstance().sendBallMessage(info.getTag(), message, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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()
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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}"
|
||||||
}
|
}
|
||||||
|
@@ -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");
|
||||||
}
|
}
|
||||||
|
@@ -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() + " 已上线,发送大厅服注册消息。");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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}"
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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 "": {
|
||||||
|
Reference in New Issue
Block a user