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

@@ -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}"
}

View File

@@ -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")) {

View File

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

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

View File

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

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